ILIAS  release_8 Revision v8.24
class.ilObjPortfolioTemplateGUI.php
Go to the documentation of this file.
1<?php
2
31{
33 protected ilHelpGUI $help;
34 protected ilTabsGUI $tabs;
35
36 public function __construct(
37 int $a_id = 0,
38 int $a_id_type = self::REPOSITORY_NODE_ID,
39 int $a_parent_node_id = 0
40 ) {
41 parent::__construct($a_id, $a_id_type, $a_parent_node_id);
42 global $DIC;
43
44 $this->nav_history = $DIC["ilNavigationHistory"];
45 $this->help = $DIC["ilHelp"];
46 $this->tabs = $DIC->tabs();
47 $this->toolbar = $DIC->toolbar();
48 $this->user = $DIC->user();
49 }
50
51 public function getType(): string
52 {
53 return "prtt";
54 }
55
56 public function executeCommand(): void
57 {
58 $ilNavigationHistory = $this->nav_history;
59
60 // add entry to navigation history
61 if (!$this->getCreationMode() &&
62 $this->getAccessHandler()->checkAccess("read", "", $this->node_id)) {
63 $link = $this->ctrl->getLinkTarget($this, "view");
64 $ilNavigationHistory->addItem($this->node_id, $link, "prtt");
65 }
66
67 $next_class = $this->ctrl->getNextClass($this);
68 $cmd = $this->ctrl->getCmd("view");
69 switch ($next_class) {
70 case 'ilportfoliotemplatepagegui':
71 $this->determinePageCall(); // has to be done before locator!
72 $this->prepareOutput();
73 $this->handlePageCall($cmd);
74 break;
75
76 case "ilnotegui":
77 $this->preview();
78 break;
79
80 case "ilinfoscreengui":
81 $this->prepareOutput();
82 $this->addHeaderAction();
83 $this->infoScreenForward();
84 break;
85
86 case "ilcommonactiondispatchergui":
88 $this->prepareOutput();
89 $this->ctrl->forwardCommand($gui);
90 break;
91
92 case "ilpermissiongui":
93 $this->prepareOutput();
94 $this->tabs_gui->activateTab("id_permissions");
95 $perm_gui = new ilPermissionGUI($this);
96 $this->ctrl->forwardCommand($perm_gui);
97 break;
98
99 case "ilobjectcopygui":
100 $this->prepareOutput();
101 $cp = new ilObjectCopyGUI($this);
102 $cp->setType("prtt");
103 $this->ctrl->forwardCommand($cp);
104 break;
105
106 case 'ilexportgui':
107 $this->prepareOutput();
108 $this->tabs_gui->activateTab("export");
109 $exp_gui = new ilExportGUI($this);
110 $exp_gui->addFormat("xml");
111 $this->ctrl->forwardCommand($exp_gui);
112 break;
113
114 case "ilobjectcontentstylesettingsgui":
115 $this->checkPermission("write");
116 $this->prepareOutput();
117 $this->addHeaderAction();
118 $this->tabs_gui->activateTab("settings");
119 $this->setSettingsSubTabs("style");
120 $settings_gui = $this->content_style_gui
121 ->objectSettingsGUIForRefId(
122 null,
123 $this->object->getRefId()
124 );
125 $this->ctrl->forwardCommand($settings_gui);
126 break;
127
128 case "ilobjectmetadatagui":
129 $this->checkPermission("write");
130 $this->prepareOutput();
131 $this->addHeaderAction();
132 $this->tabs_gui->activateTab("advmd");
133 $md_gui = new ilObjectMetaDataGUI($this->object, "pfpg");
134 $this->ctrl->forwardCommand($md_gui);
135 break;
136
137 default:
138 $this->addHeaderAction();
140 }
141 }
142
143 protected function setTabs(): void
144 {
145 $ilHelp = $this->help;
146
147 $ilHelp->setScreenIdComponent("prtt");
148
149 if ($this->checkPermissionBool("write")) {
150 $this->tabs_gui->addTab(
151 "pages",
152 $this->lng->txt("content"),
153 $this->ctrl->getLinkTarget($this, "view")
154 );
155 }
156
157 if ($this->checkPermissionBool("read")) {
158 $this->tabs_gui->addTab(
159 "id_info",
160 $this->lng->txt("info_short"),
161 $this->ctrl->getLinkTargetByClass(array("ilobjportfoliotemplategui", "ilinfoscreengui"), "showSummary")
162 );
163 }
164
165 if ($this->checkPermissionBool("write")) {
166 $this->tabs_gui->addTab(
167 "settings",
168 $this->lng->txt("settings"),
169 $this->ctrl->getLinkTarget($this, "edit")
170 );
171
172 $mdgui = new ilObjectMetaDataGUI($this->object, "pfpg");
173 $mdtab = $mdgui->getTab();
174 if ($mdtab) {
175 $this->tabs_gui->addTab(
176 "advmd",
177 $this->lng->txt("meta_data"),
178 $mdtab
179 );
180 }
181
182 $this->tabs_gui->addTab(
183 "export",
184 $this->lng->txt("export"),
185 $this->ctrl->getLinkTargetByClass("ilexportgui", "")
186 );
187 }
188
189 if ($this->checkPermissionBool("read")) {
190 $this->tabs_gui->addNonTabbedLink(
191 "preview",
192 $this->lng->txt("preview"),
193 $this->ctrl->getLinkTarget($this, "preview")
194 );
195 }
196
197 // will add permissions if needed
199 }
200
204 public function infoScreen(): void
205 {
206 $this->ctrl->setCmd("showSummary");
207 $this->ctrl->setCmdClass("ilinfoscreengui");
208 $this->infoScreenForward();
209 }
210
211 public function infoScreenForward(): void
212 {
213 $ilTabs = $this->tabs;
214 $ilToolbar = $this->toolbar;
215
216 $ilTabs->activateTab("id_info");
217
218 $this->checkPermission("visible");
219
220 if ($this->checkPermissionBool("read")) {
221 $this->lng->loadLanguageModule("cntr");
222
223 $button = ilLinkButton::getInstance();
224 $button->setPrimary(true);
225 $button->setCaption("prtf_create_portfolio_from_template");
226 $button->setUrl($this->ctrl->getLinkTarget($this, "createfromtemplate"));
227 $ilToolbar->addButtonInstance($button);
228 }
229
230 $info = new ilInfoScreenGUI($this);
231
232 $info->enablePrivateNotes();
233
234 if ($this->checkPermissionBool("read")) {
235 $info->enableNews();
236 }
237
238 // no news editing for files, just notifications
239 $info->enableNewsEditing(false);
240 if ($this->checkPermissionBool("write")) {
241 $news_set = new ilSetting("news");
242 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
243
244 if ($enable_internal_rss) {
245 $info->setBlockProperty("news", "settings", true);
246 $info->setBlockProperty("news", "public_notifications_option", true);
247 }
248 }
249
250 // standard meta data
251 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
252
253 $this->ctrl->forwardCommand($info);
254 }
255
256
257 //
258 // CREATE/EDIT
259 //
260
262 {
264
266 if (count($all)) {
267 $opts = array("" => $this->lng->txt("please_select"));
268 foreach ($all as $item) {
269 $opts[$item["id"]] = $item["title"];
270 }
271 $prtf = new ilSelectInputGUI($this->lng->txt("prtf_create_template_from_portfolio"), "prtf");
272 $prtf->setInfo($this->lng->txt("prtf_create_template_from_portfolio_info"));
273 $prtf->setOptions($opts);
274 $form->addItem($prtf);
275 }
276
277 return $form;
278 }
279
280 protected function afterSave(ilObject $new_object): void
281 {
282 if ($this->port_request->getPortfolioId() > 0) {
283 $source = new ilObjPortfolio($this->port_request->getPortfolioId(), false);
284
286 $obj = $new_object;
288 }
289
290 $this->tpl->setOnScreenMessage('success', $this->lng->txt("prtt_portfolio_created"), true);
291 $this->ctrl->setParameter($this, "prt_id", $new_object->getId());
292 $this->ctrl->redirect($this, "view");
293 }
294
295 protected function initEditCustomForm(ilPropertyFormGUI $a_form): void
296 {
297 $obj_service = $this->object_service;
298 // activation/availability
299
300 $this->lng->loadLanguageModule('rep');
301
302 $section = new ilFormSectionHeaderGUI();
303 $section->setTitle($this->lng->txt('rep_activation_availability'));
304 $a_form->addItem($section);
305
306 // additional info only with multiple references
307 $act_obj_info = $act_ref_info = "";
308 if (count(ilObject::_getAllReferences($this->object->getId())) > 1) {
309 $act_obj_info = ' ' . $this->lng->txt('rep_activation_online_object_info');
310 $act_ref_info = $this->lng->txt('rep_activation_access_ref_info');
311 }
312
313 $online = new ilCheckboxInputGUI($this->lng->txt('rep_activation_online'), 'online');
314 $online->setInfo($this->lng->txt('prtt_activation_online_info') . $act_obj_info);
315 $a_form->addItem($online);
316
317 $dur = new ilDateDurationInputGUI($this->lng->txt("rep_visibility_until"), "access_period");
318 $dur->setShowTime(true);
319 $dur->setEndText($this->lng->txt('rep_activation_limited_end'));
320 $a_form->addItem($dur);
321
322 $visible = new ilCheckboxInputGUI($this->lng->txt('rep_activation_limited_visibility'), 'access_visiblity');
323 $visible->setInfo($this->lng->txt('prtt_activation_limited_visibility_info'));
324 $dur->addSubItem($visible);
325
326 $section = new ilFormSectionHeaderGUI();
327 $section->setTitle($this->lng->txt('obj_presentation'));
328 $a_form->addItem($section);
329
330 // tile image
331 $obj_service->commonSettings()->legacyForm($a_form, $this->object)->addTileImage();
332
333
334 parent::initEditCustomForm($a_form);
335
337 $this->object->getId(),
338 $a_form,
339 array(
341 )
342 );
343
344 $tit = $a_form->getItemByPostVar("title");
345 $tit->setInfo($this->lng->txt('prtt_title_info'));
346 }
347
348 protected function getEditFormCustomValues(array &$a_values): void
349 {
350 $a_values["online"] = $this->object->isOnline();
351 $a_values["access_period"]["start"] = $this->object->getActivationStartDate()
352 ? new ilDateTime($this->object->getActivationStartDate(), IL_CAL_UNIX)
353 : null;
354 $a_values["access_period"]["end"] = $this->object->getActivationEndDate()
355 ? new ilDateTime($this->object->getActivationEndDate(), IL_CAL_UNIX)
356 : null;
357 $a_values["access_visiblity"] = $this->object->getActivationVisibility();
358
359 $a_values['cont_custom_md'] = ilContainer::_lookupContainerSetting(
360 $this->object->getId(),
362 false
363 );
364
365 parent::getEditFormCustomValues($a_values);
366 }
367
368 protected function updateCustom(ilPropertyFormGUI $form): void
369 {
370 $obj_service = $this->object_service;
371
372 $this->object->setOnline($form->getInput("online"));
373
374 // activation
375 $period = $form->getItemByPostVar("access_period");
376 if ($period->getStart() && $period->getEnd()) {
377 $this->object->setActivationLimited(true);
378 $this->object->setActivationVisibility($form->getInput("access_visiblity"));
379 $this->object->setActivationStartDate($period->getStart()->get(IL_CAL_UNIX));
380 $this->object->setActivationEndDate($period->getEnd()->get(IL_CAL_UNIX));
381 } else {
382 $this->object->setActivationLimited(false);
383 }
384
385 parent::updateCustom($form);
386
387 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
388
390 $this->object->getId(),
391 $form,
392 array(
394 )
395 );
396 }
397
398
399 //
400 // PAGES
401 //
402
406 protected function getPageInstance(
407 ?int $a_page_id = null,
408 ?int $a_portfolio_id = null
410 if (!$a_portfolio_id && $this->object) {
411 $a_portfolio_id = $this->object->getId();
412 }
413 $page = new ilPortfolioTemplatePage((int) $a_page_id);
414 $page->setPortfolioId($a_portfolio_id);
415 return $page;
416 }
417
421 protected function getPageGUIInstance(
422 int $a_page_id
424 $page_gui = new ilPortfolioTemplatePageGUI(
425 $this->object->getId(),
426 $a_page_id,
427 0,
428 $this->object->hasPublicComments()
429 );
430 $page_gui->setAdditional($this->getAdditional());
431 return $page_gui;
432 }
433
434 public function getPageGUIClassName(): string
435 {
436 return "ilportfoliotemplatepagegui";
437 }
438
439 protected function initCopyPageFormOptions(ilPropertyFormGUI $a_form): void
440 {
441 // always existing prtft
442 $hi = new ilHiddenInputGUI("target");
443 $hi->setValue("old");
444 $a_form->addItem($hi);
445
446 $options = array();
448 foreach ($all as $id => $title) {
449 $options[$id] = $title;
450 }
451 $prtf = new ilSelectInputGUI($this->lng->txt("obj_prtt"), "prtf");
452 $prtf->setRequired(true);
453 $prtf->setOptions($options);
454 $a_form->addItem($prtf);
455 }
456
457
458 //
459 // BLOG
460 //
461
465 protected function initBlogForm(): ilPropertyFormGUI
466 {
467 $form = new ilPropertyFormGUI();
468 $form->setFormAction($this->ctrl->getFormAction($this));
469
470 $obj = new ilTextInputGUI($this->lng->txt("title"), "blog");
471 $obj->setRequired(true);
472 $form->addItem($obj);
473
474 // save and cancel commands
475 $form->setTitle($this->lng->txt("prtf_add_blog") . ": " .
476 $this->object->getTitle());
477 $form->addCommandButton("saveBlog", $this->lng->txt("save"));
478 $form->addCommandButton("view", $this->lng->txt("cancel"));
479
480 return $form;
481 }
482
483 protected function saveBlog(): void
484 {
485 $form = $this->initBlogForm();
486 if ($form->checkInput() && $this->checkPermissionBool("write")) {
487 $page = $this->getPageInstance();
489 $page->setTitle($form->getInput("blog"));
490 $page->create(false);
491
492 $this->tpl->setOnScreenMessage('success', $this->lng->txt("prtf_blog_page_created"), true);
493 $this->ctrl->redirect($this, "view");
494 }
495
496 $this->tabs_gui->clearTargets();
497 $this->tabs_gui->setBackTarget(
498 $this->lng->txt("back"),
499 $this->ctrl->getLinkTarget($this, "view")
500 );
501
502 $form->setValuesByPost();
503 $this->tpl->setContent($form->getHTML());
504 }
505
506
507 //
508 // TRANSMOGRIFIER
509 //
510
511 public function preview(
512 bool $a_return = false,
513 $a_content = false,
514 bool $a_show_notes = true
515 ): string {
516 if (!$this->checkPermissionBool("write") &&
517 $this->checkPermissionBool("read")) {
518 $this->lng->loadLanguageModule("cntr");
519
520 $button = ilLinkButton::getInstance();
521 $button->setPrimary(true);
522 $button->setCaption("prtf_create_portfolio_from_template");
523 $button->setUrl($this->ctrl->getLinkTarget($this, "createfromtemplate"));
524 $this->tpl->setHeaderActionMenu($button->render());
525 }
526
527 return parent::preview($a_return, $a_content, $a_show_notes);
528 }
529
530 public function createFromTemplateOld(): void
531 {
532 $this->ctrl->setParameterByClass("ilobjportfoliogui", "prtt_pre", $this->object->getId());
533 $this->ctrl->redirectByClass(array("ilDashboardGUI", "ilportfoliorepositorygui", "ilobjportfoliogui"), "create");
534 }
535
536 public function createFromTemplate(): void
537 {
538 $this->ctrl->setParameterByClass("ilobjportfoliogui", "prtt_pre", $this->object->getId());
539 $this->ctrl->redirectByClass(array("ilDashboardGUI", "ilportfoliorepositorygui", "ilobjportfoliogui"), "createFromTemplateDirect");
540 }
541
542 public static function _goto(string $a_target): void
543 {
545 global $DIC;
546
547 $access = $DIC->access();
548 $ctrl = $DIC->ctrl();
549
550 $id = explode("_", $a_target);
551 $ref_id = $id[0];
552
553 $ctrl->setParameterByClass("ilRepositoryGUI", "ref_id", $ref_id);
554 if ($access->checkAccess("read", "", $ref_id)) {
555 $ctrl->redirectByClass("ilRepositoryGUI", "preview");
556 } else {
557 $ctrl->redirectByClass("ilRepositoryGUI", "infoScreen");
558 }
559 }
560}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
const IL_CAL_UNIX
This class represents a checkbox property in a property form.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static _lookupContainerSetting(int $a_id, string $a_keyword, string $a_default_value=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
@classDescription Date and time handling
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Help GUI class.
setScreenIdComponent(string $a_comp)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilInfoScreenGUI.
Navigation History of Repository Items.
Portfolio view gui base class.
static clonePagesAndSettings(ilObjPortfolioBase $a_source, ilObjPortfolioBase $a_target, ?array $a_recipe=null, bool $copy_all=false)
Build template from portfolio and vice versa.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getPageInstance(?int $a_page_id=null, ?int $a_portfolio_id=null)
Get portfolio template page instance.
getPageGUIInstance(int $a_page_id)
Get portfolio template page gui instance.
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
preview(bool $a_return=false, $a_content=false, bool $a_show_notes=true)
initEditCustomForm(ilPropertyFormGUI $a_form)
Add custom fields to update form.
infoScreen()
this one is called from the info button in the repository
getType()
Functions that must be overwritten.
initDidacticTemplate(ilPropertyFormGUI $form)
updateCustom(ilPropertyFormGUI $form)
Insert custom update form values into object.
setTabs()
create tabs (repository/workspace switch)
getEditFormCustomValues(array &$a_values)
Add values to custom edit fields.
initCopyPageFormOptions(ilPropertyFormGUI $a_form)
initBlogForm()
Init blog template page form.
static getAvailablePortfolioTemplates(string $a_permission="read")
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getPortfoliosOfUser(int $a_user_id)
Get portfolios of user.
executeCommand()
execute command
setTabs()
create tabs (repository/workspace switch)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $node_id=null)
ilObjectService $object_service
prepareOutput(bool $show_sub_objects=true)
checkPermission(string $perm, string $cmd="", string $type="", int $ref_id=null)
ilToolbarGUI $toolbar
GUI class for the workflow of copying objects.
afterSave(ilObject $new_object)
Post (successful) object creation hook.
addHeaderAction()
Add header action menu.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getAllReferences(int $id)
get all reference ids for object ID
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
setAdditional(array $a_additional)
Set Additonal Information.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a property form user interface.
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
getItemByPostVar(string $a_post_var)
This class represents a selection list property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text property in a property form.
if(!file_exists(getcwd() . '/ilias.ini.php'))
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: confirmReg.php:20
global $DIC
Definition: feed.php:28
$ilUser
Definition: imgupload.php:34
$ref_id
Definition: ltiauth.php:67
$source
Definition: metadata.php:93
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc