ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjStyleSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once "./Services/Object/classes/class.ilObjectGUI.php";
5 include_once("./Services/Style/classes/class.ilPageLayout.php");
6 
18 {
19  //page_layout editing
20  var $peditor_active = false;
21  var $pg_id = null;
22 
26  function ilObjStyleSettingsGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
27  {
28  global $lng,$ilCtrl;
29 
30  $this->type = "stys";
31 
32  $cmd = $ilCtrl->getCmd();
33 
34  if ($cmd == "editPg") {
35  $this->peditor_active = true;
36  }
37 
38  $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
39 
40  $lng->loadLanguageModule("style");
41  }
42 
46  function &executeCommand()
47  {
48  $next_class = $this->ctrl->getNextClass($this);
49  $cmd = $this->ctrl->getCmd();
50 
51  if ($next_class == "ilpagelayoutgui" || $cmd =="createPg") {
52  $this->peditor_active =true;
53  }
54 
55  $this->prepareOutput();
56 
57  switch($next_class)
58  {
59  case 'ilpermissiongui':
60  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
61  $perm_gui =& new ilPermissionGUI($this);
62  $ret =& $this->ctrl->forwardCommand($perm_gui);
63  break;
64 
65  case 'ilpagelayoutgui':
66  include_once("./Services/Style/classes/class.ilPageLayoutGUI.php");
67  $this->tpl->getStandardTemplate();
68  $this->ctrl->setReturn($this, "edit");
69  if ($this->pg_id!=null) {
70  $layout_gui =& new ilPageLayoutGUI($this->type,$this->pg_id);
71  } else {
72  $layout_gui =& new ilPageLayoutGUI($this->type,$_GET["obj_id"]);
73  }
74  $layout_gui->setTabs();
75  $layout_gui->setEditPreview(true);
76  $this->ctrl->saveParameter($this, "obj_id");
77  $ret =& $this->ctrl->forwardCommand($layout_gui);
78  $this->tpl->setContent($ret);
79  break;
80 
81  default:
82  if ($cmd == "" || $cmd == "view")
83  {
84  $cmd = "editSystemStyles";
85  }
86  $cmd .= "Object";
87  $this->$cmd();
88 
89  break;
90  }
91  return true;
92  }
93 
97  function saveObject()
98  {
99  global $rbacadmin;
100 
101  // create and insert forum in objecttree
102  $newObj = parent::saveObject();
103 
104  // put here object specific stuff
105 
106  // always send a message
107  ilUtil::sendInfo($this->lng->txt("object_added"),true);
108 
109  ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"","",false,false)));
110  }
111 
116  {
117  global $rbacsystem, $ilias, $tpl, $ilToolbar, $ilCtrl, $lng;
118 
119  if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
120  {
121  $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
122  }
123 
124  // this may not be cool, if styles are organised as (independent) Service
125  include_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
126  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
127 
128  $from_styles = $to_styles = $data = array();
129  $styles = $this->object->getStyles();
130 
131  foreach($styles as $style)
132  {
133  $style["active"] = ilObjStyleSheet::_lookupActive($style["id"]);
134  $style["lm_nr"] = ilObjContentObject::_getNrOfAssignedLMs($style["id"]);
135  $data[$style["title"].":".$style["id"]]
136  = $style;
137  if ($style["lm_nr"] > 0)
138  {
139  $from_styles[$style["id"]] = $style["title"];
140  }
141  if ($style["active"] > 0)
142  {
143  $to_styles[$style["id"]] = $style["title"];
144  }
145  }
146 
147  // number of individual styles
148  if ($fixed_style <= 0)
149  {
150  $data[-1] =
151  array("title" => $this->lng->txt("sty_individual_styles"),
152  "id" => 0, "lm_nr" => ilObjContentObject::_getNrLMsIndividualStyles());
153  $from_styles[-1] = $this->lng->txt("sty_individual_styles");
154  }
155 
156  // number of default style (fallback default style)
157  if ($default_style <= 0 && $fixed_style <= 0)
158  {
159  $data[0] =
160  array("title" => $this->lng->txt("sty_default_style"),
161  "id" => 0, "lm_nr" => ilObjContentObject::_getNrLMsNoStyle());
162  $from_styles[0] = $this->lng->txt("sty_default_style");
163  $to_styles[0] = $this->lng->txt("sty_default_style");
164  }
165 
166  if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
167  {
168  $ilToolbar->addButton($lng->txt("sty_add_content_style"),
169  $ilCtrl->getLinkTarget($this, "createStyle"));
170  $ilToolbar->addSeparator();
171  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
172 
173  // from styles selector
174  $si = new ilSelectInputGUI($lng->txt("sty_move_lm_styles").": ".$lng->txt("sty_from"), "from_style");
175  $si->setOptions($from_styles);
176  $ilToolbar->addInputItem($si, true);
177 
178  // from styles selector
179  $si = new ilSelectInputGUI($lng->txt("sty_to"), "to_style");
180  $si->setOptions($to_styles);
181  $ilToolbar->addInputItem($si, true);
182  $ilToolbar->addFormButton($lng->txt("sty_move_style"), "moveLMStyles");
183 
184  $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
185  }
186 
187  include_once("./Services/Style/classes/class.ilContentStylesTableGUI.php");
188  $table = new ilContentStylesTableGUI($this, "editContentStyles", $data, $this->object);
189  $tpl->setContent($table->getHTML());
190 
191  }
192 
197  {
198  if ($_POST["from_style"] == -1)
199  {
201  return;
202  }
203 
204  include_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
205  ilObjContentObject::_moveLMStyles($_POST["from_style"], $_POST["to_style"]);
206  $this->ctrl->redirect($this, "editContentStyles");
207  }
208 
209 
214  {
215  include_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
216  ilObjContentObject::_moveLMStyles(-1, $_GET["to_style"]);
217  $this->ctrl->redirect($this, "editContentStyles");
218  }
219 
224  {
225  global $ilCtrl, $tpl, $lng;
226 
227  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
228 
229  $ilCtrl->setParameter($this, "to_style", $_POST["to_style"]);
230 
231  $cgui = new ilConfirmationGUI();
232  $cgui->setFormAction($ilCtrl->getFormAction($this));
233  $cgui->setHeaderText($lng->txt("sty_confirm_del_ind_styles").": ".
234  sprintf($this->lng->txt("sty_confirm_del_ind_styles_desc"),
235  ilObject::_lookupTitle($_POST["to_style"])));
236  $cgui->setCancel($lng->txt("cancel"), "editContentStyles");
237  $cgui->setConfirm($lng->txt("ok"), "moveIndividualStyles");
238  $tpl->setContent($cgui->getHTML());
239  }
240 
245  {
246  global $rbacsystem, $ilias, $styleDefinition, $ilToolbar, $ilCtrl, $lng, $tpl;
247 
248  if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
249  {
250  $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
251  }
252 
253  // toolbar
254 
255  // default skin/style
256  if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
257  {
258  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
259 
260  $options = array();
261  foreach (ilStyleDefinition::getAllSkinStyles() as $st)
262  {
263  $options[$st["id"]] = $st["title"];
264  }
265 
266  // from styles selector
267  $si = new ilSelectInputGUI($lng->txt("sty_move_user_styles").": ".$lng->txt("sty_from"), "from_style");
268  $si->setOptions($options + array("other" => $lng->txt("other")));
269  $ilToolbar->addInputItem($si, true);
270 
271  // from styles selector
272  $si = new ilSelectInputGUI($lng->txt("sty_to"), "to_style");
273  $si->setOptions($options);
274  $ilToolbar->addInputItem($si, true);
275  $ilToolbar->addFormButton($lng->txt("sty_move_style"), "moveUserStyles");
276 
277  $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
278  }
279 
280  include_once("./Services/Style/classes/class.ilSystemStylesTableGUI.php");
281  $tab = new ilSystemStylesTableGUI($this, "editSystemStyles");
282  $tpl->setContent($tab->getHTML());
283 
284  }
285 
286 
291  {
292  global $styleDefinition, $ilCtrl;
293 
294  // check if one style is activated
295  if (count($_POST["st_act"]) < 1)
296  {
297  $this->ilias->raiseError($this->lng->txt("at_least_one_style"), $this->ilias->error_obj->MESSAGE);
298  }
299 
300  //set default skin and style
301  if ($_POST["default_skin_style"] != "")
302  {
303  $sknst = explode(":", $_POST["default_skin_style"]);
304 
305  if ($this->ilias->ini->readVariable("layout","style") != $sknst[1] ||
306  $this->ilias->ini->readVariable("layout","skin") != $sknst[0])
307  {
308  $this->ilias->ini->setVariable("layout","skin", $sknst[0]);
309  $this->ilias->ini->setVariable("layout","style",$sknst[1]);
310  }
311  $this->ilias->ini->write();
312  }
313 
314  // check if a style should be deactivated, that still has
315  // a user assigned to
316  $all_styles = ilStyleDefinition::getAllSkinStyles();
317  foreach ($all_styles as $st)
318  {
319  if (!isset($_POST["st_act"][$st["id"]]))
320  {
321  if (ilObjUser::_getNumberOfUsersForStyle($st["template_id"], $st["style_id"]) > 1)
322  {
323  $this->ilias->raiseError($this->lng->txt("cant_deactivate_if_users_assigned"), $this->ilias->error_obj->MESSAGE);
324  }
325  else
326  {
327  ilObjStyleSettings::_deactivateStyle($st["template_id"], $st["style_id"]);
328  }
329  }
330  else
331  {
332  ilObjStyleSettings::_activateStyle($st["template_id"], $st["style_id"]);
333  }
334  }
335 
336  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
337  $ilCtrl->redirect($this , "editSystemStyles");
338  }
339 
347  {
348  global $ilCtrl, $lng;
349 
350  $to = explode(":", $_POST["to_style"]);
351 
352  if ($_POST["from_style"] != "other")
353  {
354  $from = explode(":", $_POST["from_style"]);
355  ilObjUser::_moveUsersToStyle($from[0],$from[1],$to[0],$to[1]);
356  }
357  else
358  {
359  // get all user assigned styles
360  $all_user_styles = ilObjUser::_getAllUserAssignedStyles();
361 
362  // move users that are not assigned to
363  // currently existing style
364  foreach($all_user_styles as $style)
365  {
366  if (!in_array($style, $all_styles))
367  {
368  $style_arr = explode(":", $style);
369  ilObjUser::_moveUsersToStyle($style_arr[0],$style_arr[1],$to[0],$to[1]);
370  }
371  }
372  }
373 
374  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
375  $ilCtrl->redirect($this , "editSystemStyles");
376  }
377 
378 
379 
385  function deleteStyleObject($a_error = false)
386  {
387  if (!isset($_POST["id"]))
388  {
389  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
390  }
391 
392  // display confirmation message
393  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
394  $cgui = new ilConfirmationGUI();
395  $cgui->setFormAction($this->ctrl->getFormAction($this));
396  $cgui->setHeaderText($this->lng->txt("info_delete_sure"));
397  $cgui->setCancel($this->lng->txt("cancel"), "cancelDelete");
398  $cgui->setConfirm($this->lng->txt("confirm"), "confirmedDelete");
399 
400  foreach ($_POST["id"] as $id)
401  {
402  $caption = ilUtil::getImageTagByType("sty", $this->tpl->tplPath).
403  " ".ilObject::_lookupTitle($id);
404 
405  $cgui->addItem("id[]", $id, $caption);
406  }
407 
408  $this->tpl->setContent($cgui->getHTML());
409  }
410 
411 
416  {
417  global $ilias;
418 
419  foreach($_POST["id"] as $id)
420  {
421  $this->object->removeStyle($id);
422  $style_obj =& $ilias->obj_factory->getInstanceByObjId($id);
423  $style_obj->delete();
424  }
425  $this->object->update();
426 
427  ilUtil::redirect($this->getReturnLocation("delete",
428  $this->ctrl->getLinkTarget($this,"editContentStyles","",false,false)));
429  }
430 
431 
436  {
437  global $ilSetting, $lng;
438 
439  if ($_GET["id"] > 0)
440  {
441  $ilSetting->delete("fixed_content_style_id");
442  $def_style = $ilSetting->get("default_content_style_id");
443 
444  if ($def_style != $_GET["id"])
445  {
446  $ilSetting->set("default_content_style_id", (int) $_GET["id"]);
447  }
448  else
449  {
450  $ilSetting->delete("default_content_style_id");
451  }
452  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
453  }
454  ilUtil::redirect($this->ctrl->getLinkTarget($this, "editContentStyles", "", false, false));
455  }
456 
461  {
462  global $ilSetting, $lng;
463 
464  if ($_GET["id"] > 0)
465  {
466  $ilSetting->delete("default_content_style_id");
467  $fixed_style = $ilSetting->get("fixed_content_style_id");
468  if ($fixed_style == (int) $_GET["id"])
469  {
470  $ilSetting->delete("fixed_content_style_id");
471  }
472  else
473  {
474  $ilSetting->set("fixed_content_style_id", (int) $_GET["id"]);
475  }
476  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
477  }
478  ilUtil::redirect($this->ctrl->getLinkTarget($this, "editContentStyles", "", false, false));
479  }
480 
481 
486  {
487  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
488  $styles = $this->object->getStyles();
489  foreach($styles as $style)
490  {
491  if ($_POST["std_".$style["id"]] == 1)
492  {
493  ilObjStyleSheet::_writeActive((int) $style["id"], 1);
494  }
495  else
496  {
497  ilObjStyleSheet::_writeActive((int) $style["id"], 0);
498  }
499  }
500  ilUtil::redirect($this->ctrl->getLinkTarget($this, "editContentStyles", "", false, false));
501  }
502 
509  function showActions($with_subobjects = false)
510  {
511 
512  // delete
513  $this->tpl->setCurrentBlock("tbl_action_btn");
514  $this->tpl->setVariable("BTN_NAME", "deleteStyle");
515  $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("delete"));
516  $this->tpl->parseCurrentBlock();
517 
518  // set global default
519  $this->tpl->setCurrentBlock("tbl_action_btn");
520  $this->tpl->setVariable("BTN_NAME", "toggleGlobalDefault");
521  $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("toggleGlobalDefault"));
522  $this->tpl->parseCurrentBlock();
523 
524  // set global default
525  $this->tpl->setCurrentBlock("tbl_action_btn");
526  $this->tpl->setVariable("BTN_NAME", "toggleGlobalFixed");
527  $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("toggleGlobalFixed"));
528  $this->tpl->parseCurrentBlock();
529 
530  // set global default
531  $this->tpl->setCurrentBlock("tbl_action_btn");
532  $this->tpl->setVariable("BTN_NAME", "setScope");
533  $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("sty_set_scope"));
534  $this->tpl->parseCurrentBlock();
535 
536  // save active styles
537  $this->tpl->setCurrentBlock("tbl_action_btn");
538  $this->tpl->setVariable("BTN_NAME", "saveActiveStyles");
539  $this->tpl->setVariable("BTN_VALUE", $this->lng->txt("sty_save_active_styles"));
540  $this->tpl->parseCurrentBlock();
541 
542  if ($with_subobjects === true)
543  {
544  $this->showPossibleSubObjects();
545  }
546 
547  $this->tpl->setCurrentBlock("tbl_action_row");
548  $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.svg"));
549  $this->tpl->parseCurrentBlock();
550  }
551 
558  {
559  ilUtil::sendInfo($this->lng->txt("msg_cancel"),true);
560  $this->ctrl->redirect($this, "editContentStyles");
561 
562  }
563 
570  function setScopeObject()
571  {
572  global $tpl, $ilCtrl;
573 
574  $ilCtrl->saveParameter($this, "id");
575  include_once("./Services/Repository/classes/class.ilRepositorySelectorExplorerGUI.php");
576  $exp = new ilRepositorySelectorExplorerGUI($this, "setScope",
577  $this, "saveScope", "cat");
578  $exp->setTypeWhiteList(array("root", "cat"));
579  if (!$exp->handleCommand())
580  {
581  $tpl->setContent($exp->getHTML());
582  }
583  }
584 
588  function saveScopeObject()
589  {
590  global $tree;
591 
592  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
593  if ($_GET["cat"] == $tree->readRootId())
594  {
595  $_GET["cat"] = "";
596  }
598 
599  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
600 
601  ilUtil::redirect($this->ctrl->getLinkTarget($this, "editContentStyles", "", false, false));
602  }
603 
604 
609  {
610  global $tpl, $lng, $ilCtrl, $ilTabs, $ilToolbar, $rbacsystem;
611 
612  $ilTabs->setTabActive('page_layouts');
613 
614  // show toolbar, if write permission is given
615  if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
616  {
617  $ilToolbar->addButton($lng->txt("sty_add_pgl"),
618  $ilCtrl->getLinkTarget($this, "addPageLayout"));
619  $ilToolbar->addButton($lng->txt("sty_import_page_layout"),
620  $ilCtrl->getLinkTarget($this, "importPageLayoutForm"));
621  }
622 
623  $oa_tpl = new ilTemplate("tpl.stys_pglayout.html", true, true, "Services/Style");
624 
625  include_once("./Services/Style/classes/class.ilPageLayoutTableGUI.php");
626  $pglayout_table = new ilPageLayoutTableGUI($this, "viewPageLayouts");
627  $oa_tpl->setVariable("PGLAYOUT_TABLE", $pglayout_table->getHTML());
628  $tpl->setContent($oa_tpl->get());
629 
630  }
631 
632 
633  function activateObject($a_activate=true){
634  if (!isset($_POST["pglayout"]))
635  {
636  ilUtil::sendInfo($this->lng->txt("no_checkbox"),true);
637  } else {
638  ilUtil::sendSuccess($this->lng->txt("sty_opt_saved"),true);
639  foreach ($_POST["pglayout"] as $item)
640  {
641  $pg_layout = new ilPageLayout($item);
642  $pg_layout->activate($a_activate);
643  }
644  }
645  $this->ctrl->redirect($this, "viewPageLayouts");
646  }
647 
648  function deactivateObject(){
649  $this->activateObject(false);
650  }
651 
652 
653 
657  function deletePglObject()
658  {
659  global $ilTabs;
660 
661  if(!isset($_POST["pglayout"]))
662  {
663  $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE);
664  }
665 
666  $ilTabs->setTabActive('page_layouts');
667  unset($this->data);
668 
669  // display confirmation message
670  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
671  $cgui = new ilConfirmationGUI();
672  $cgui->setFormAction($this->ctrl->getFormAction($this));
673  $cgui->setHeaderText($this->lng->txt("info_delete_sure"));
674  $cgui->setCancel($this->lng->txt("cancel"), "cancelDeletePg");
675  $cgui->setConfirm($this->lng->txt("confirm"), "confirmedDeletePg");
676 
677  foreach($_POST["pglayout"] as $id)
678  {
679  $pg_obj = new ilPageLayout($id);
680  $pg_obj->readObject();
681 
682  $caption = ilUtil::getImageTagByType("stys", $this->tpl->tplPath).
683  " ".$pg_obj->getTitle();
684 
685  $cgui->addItem("pglayout[]", $id, $caption);
686  }
687 
688  $this->tpl->setContent($cgui->getHTML());
689  }
690 
695  {
696  ilUtil::sendInfo($this->lng->txt("msg_cancel"),true);
697  $this->ctrl->redirect($this, "viewPageLayouts");
698  }
699 
704  {
705  foreach ($_POST["pglayout"] as $id)
706  {
707  $pg_obj = new ilPageLayout($id);
708  $pg_obj->delete();
709  }
710 
711  $this->ctrl->redirect($this, "viewPageLayouts");
712  }
713 
714  function addPageLayoutObject($a_form = null)
715  {
716  global $ilTabs;
717 
718  $ilTabs->setTabActive('page_layouts');
719 
720  if(!$a_form)
721  {
722  $a_form = $this->initAddPageLayoutForm();
723  }
724 
725  $this->tpl->setContent($a_form->getHTML());
726  }
727 
729  {
730  global $lng, $ilCtrl;
731 
732  $lng->loadLanguageModule("content");
733 
734  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
735  $form_gui = new ilPropertyFormGUI();
736  $form_gui->setFormAction($ilCtrl->getFormAction($this));
737  $form_gui->setTitle($lng->txt("sty_create_pgl"));
738 
739  $title_input = new ilTextInputGUI($lng->txt("title"),"pgl_title");
740  $title_input->setSize(50);
741  $title_input->setMaxLength(128);
742  $title_input->setValue($this->layout_object->title);
743  $title_input->setTitle($lng->txt("title"));
744  $title_input->setRequired(true);
745 
746  $desc_input = new ilTextAreaInputGUI($lng->txt("description"),"pgl_desc");
747  $desc_input->setValue($this->layout_object->description);
748  $desc_input->setRows(3);
749  $desc_input->setCols(37);
750 
751  // special page?
752  $options = array(
753  "0" => $lng->txt("cont_layout_template"),
754  "1" => $lng->txt("cont_special_page"),
755  );
756  $si = new ilSelectInputGUI($this->lng->txt("type"), "special_page");
757  $si->setOptions($options);
758 
759  // modules
760  $mods = new ilCheckboxGroupInputGUI($this->lng->txt("modules"), "module");
761  // $mods->setRequired(true);
762  foreach(ilPageLayout::getAvailableModules() as $mod_id => $mod_caption)
763  {
764  $mod = new ilCheckboxOption($mod_caption, $mod_id);
765  $mods->addOption($mod);
766  }
767 
768  $ttype_input = new ilSelectInputGUI($lng->txt("sty_based_on"), "pgl_template");
769 
770  $arr_templates = ilPageLayout::getLayouts();
771  $arr_templates1 = ilPageLayout::getLayouts(false, true);
772  foreach ($arr_templates1 as $v)
773  {
774  $arr_templates[] = $v;
775  }
776 
777  $options = array();
778  $options['-1'] = $lng->txt("none");
779 
780  foreach ($arr_templates as $templ) {
781  $templ->readObject();
782  $key = $templ->getId();
783  $value = $templ->getTitle();
784  $options[$key] = $value;
785  }
786 
787  $ttype_input->setOptions($options);
788  $ttype_input->setValue(-1);
789  $ttype_input->setRequired(true);
790 
791  $desc_input->setTitle($lng->txt("description"));
792  $desc_input->setRequired(false);
793 
794  $form_gui->addItem($title_input);
795  $form_gui->addItem($desc_input);
796  $form_gui->addItem($si);
797  $form_gui->addItem($mods);
798  $form_gui->addItem($ttype_input);
799 
800 
801  $form_gui->addCommandButton("createPg", $lng->txt("save"));
802  $form_gui->addCommandButton("cancelCreate", $lng->txt("cancel"));
803 
804  return $form_gui;
805  }
806 
807 
808  function createPgObject()
809  {
810  global $ilCtrl;
811 
812  $form_gui = $this->initAddPageLayoutForm();
813  if(!$form_gui->checkInput())
814  {
815  $form_gui->setValuesByPost();
816  return $this->addPageLayoutObject($form_gui);
817  }
818 
819  //create Page-Layout-Object first
820  $pg_object = new ilPageLayout();
821  $pg_object->setTitle($form_gui->getInput('pgl_title'));
822  $pg_object->setDescription($form_gui->getInput('pgl_desc'));
823  $pg_object->setSpecialPage($form_gui->getInput('special_page'));
824  $pg_object->setModules($form_gui->getInput('module'));
825  $pg_object->update();
826 
827  include_once("./Services/Style/classes/class.ilPageLayoutPage.php");
828 
829  //create Page
830  if(!is_object($pg_content))
831  {
832  $this->pg_content = new ilPageLayoutPage();
833  }
834 
835  $this->pg_content->setId($pg_object->getId());
836 
837  $tmpl = $form_gui->getInput('pgl_template');
838  if ($tmpl != "-1")
839  {
840  $layout_obj = new ilPageLayout($tmpl);
841  $this->pg_content->setXMLContent($layout_obj->getXMLContent());
842  $this->pg_content->create(false);
843  }
844  else
845  {
846  $this->pg_content->create(false);
847  }
848 
849  $ilCtrl->setParameterByClass("ilpagelayoutgui", "obj_id", $pg_object->getId());
850  $ilCtrl->redirectByClass("ilpagelayoutgui", "edit");
851  }
852 
853  function cancelCreateObject() {
854  $this->viewPageLayoutsObject();
855  }
856 
857  function editPgObject()
858  {
859  global $ilCtrl, $rbacsystem;
860 
861  if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
862  {
863  $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
864  }
865 
866  $ilCtrl->setCmdClass("ilpagelayoutgui");
867  $ilCtrl->setCmd("edit");
868  $this->executeCommand();
869  }
870 
871 
872  function setTabs()
873  {
874  echo "settings_setTabs";
875  }
876 
877  function getAdminTabs(&$tabs_gui)
878  {
879  $this->getTabs($tabs_gui);
880  }
881 
887  function getTabs(&$tabs_gui)
888  {
889  global $rbacsystem, $lng, $ilTabs;
890 
891  if ($this->peditor_active) {
892  $tabs_gui->setBackTarget($this->lng->txt("page_layouts"),
893  $this->ctrl->getLinkTarget($this, "viewPageLayouts"));
894  }
895 
896  if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()) && !$this->peditor_active)
897  {
898  $tabs_gui->addTarget("system_styles",
899  $this->ctrl->getLinkTarget($this, "editSystemStyles"), array("editSystemStyles", "", "view"), "", "");
900 
901  $tabs_gui->addTarget("content_styles",
902  $this->ctrl->getLinkTarget($this, "editContentStyles"), "editContentStyles", "", "");
903 
904  $tabs_gui->addTarget("page_layouts",
905  $this->ctrl->getLinkTarget($this, "viewPageLayouts"), "viewPageLayouts", "", "");
906 
907  }
908 
909 
910  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()) && !$this->peditor_active)
911  {
912  $tabs_gui->addTarget("perm_settings",
913  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
914  }
915  }
916 
920  function createStyleObject()
921  {
922  global $ilCtrl;
923 
924  $ilCtrl->setParameter($this, "new_type", "sty");
925  $ilCtrl->redirect($this, "create");
926  }
927 
932  {
933  global $lng, $ilCtrl;
934 
935  include_once("./Services/Style/classes/class.ilPageLayout.php");
936 
937  if (is_array($_POST["type"]))
938  {
939  foreach($_POST["type"] as $id => $t)
940  {
941  if ($id > 0)
942  {
943  $l = new ilPageLayout($id);
944  $l->readObject();
945  $l->setSpecialPage($t);
946  if(is_array($_POST["module"][$id]))
947  {
948  $l->setModules(array_keys($_POST["module"][$id]));
949  }
950  else
951  {
952  $l->setModules();
953  }
954  $l->update();
955  }
956  }
957 
958  ilUtil::sendSuccess($lng->txt("msg_obj_modified"));
959  }
960 
961  $ilCtrl->redirect($this, "viewPageLayouts");
962  }
963 
964 
969  {
970  include_once("./Services/Export/classes/class.ilExport.php");
971  $exp = new ilExport();
972 
973  $tmpdir = ilUtil::ilTempnam();
974  ilUtil::makeDir($tmpdir);
975 
976  $succ = $exp->exportEntity("pgtp", (int) $_GET["layout_id"], "4.2.0",
977  "Services/COPage", "Title", $tmpdir);
978 
979  if ($succ["success"])
980  {
981  ilUtil::deliverFile($succ["directory"]."/".$succ["file"], $succ["file"],
982  "", false, false, false);
983  }
984  if (is_file($succ["directory"]."/".$succ["file"]))
985  {
986  unlink($succ["directory"]."/".$succ["file"]);
987  }
988  if (is_dir($succ["directory"]))
989  {
990  unlink($succ["directory"]);
991  }
992  }
993 
998  {
999  global $tpl, $ilTabs;
1000 
1001  $ilTabs->setTabActive('page_layouts');
1002  $form = $this->initPageLayoutImportForm();
1003  $tpl->setContent($form->getHTML());
1004  }
1005 
1009  public function initPageLayoutImportForm()
1010  {
1011  global $lng, $ilCtrl;
1012 
1013  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1014  $form = new ilPropertyFormGUI();
1015 
1016  // template file
1017  $fi = new ilFileInputGUI($lng->txt("file"), "file");
1018  $fi->setSuffixes(array("zip"));
1019  $fi->setRequired(true);
1020  $form->addItem($fi);
1021 
1022  $form->addCommandButton("importPageLayout", $lng->txt("import"));
1023  $form->addCommandButton("viewPageLayouts", $lng->txt("cancel"));
1024 
1025  $form->setTitle($lng->txt("sty_import_page_layout"));
1026  $form->setFormAction($ilCtrl->getFormAction($this));
1027 
1028  return $form;
1029  }
1030 
1034  public function importPageLayoutObject()
1035  {
1036  global $tpl, $lng, $ilCtrl, $ilTabs;
1037 
1038  $form = $this->initPageLayoutImportForm();
1039  if ($form->checkInput())
1040  {
1041  include_once("./Services/Style/classes/class.ilPageLayout.php");
1042  $pg = ilPageLayout::import($_FILES["file"]["name"], $_FILES["file"]["tmp_name"]);
1043  if ($pg > 0)
1044  {
1045  ilUtil::sendSuccess($lng->txt("sty_imported_layout"), true);
1046  }
1047  $ilCtrl->redirect($this, "viewPageLayouts");
1048  }
1049  else
1050  {
1051  $ilTabs->setTabActive('page_layouts');
1052  $form->setValuesByPost();
1053  $tpl->setContent($form->getHtml());
1054  }
1055  }
1056 
1064  {
1065  global $ilToolbar, $ilCtrl, $tpl, $lng, $rbacsystem;
1066 
1067  $ilCtrl->setParameter($this, "style_id", urlencode($_GET["style_id"]));
1068 
1069  if (!$rbacsystem->checkAccess("write", $this->object->getRefId()))
1070  {
1071  return;
1072  }
1073 
1074  $all_styles = ilStyleDefinition::getAllSkinStyles();
1075  $sel_style = $all_styles[$_GET["style_id"]];
1076 
1077  $options = array();
1078  if (is_array($sel_style["substyle"]))
1079  {
1080  foreach ($sel_style["substyle"] as $subst)
1081  {
1082  $options[$subst["id"]] = $subst["name"];
1083  }
1084  }
1085 
1086  // substyle
1087  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
1088  $si = new ilSelectInputGUI($this->lng->txt("sty_substyle"), "substyle");
1089  $si->setOptions($options);
1090  $ilToolbar->addInputItem($si, true);
1091 
1092  $ilToolbar->addFormButton($lng->txt("sty_add_assignment"), "addStyleCatAssignment");
1093  $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
1094 
1095  include_once("./Services/Style/classes/class.ilSysStyleCatAssignmentTableGUI.php");
1096  $tab = new ilSysStyleCatAssignmentTableGUI($this, "assignStylesToCats");
1097 
1098  $tpl->setContent($tab->getHTML());
1099  }
1100 
1101 
1109  {
1110  global $ilCtrl, $ilTabs, $lng, $tree, $tpl, $rbacsystem;
1111 
1112  if (!$rbacsystem->checkAccess("write", $this->object->getRefId()))
1113  {
1114  return;
1115  }
1116 
1117  $ilCtrl->setParameter($this, "style_id", urlencode($_GET["style_id"]));
1118  $ilCtrl->setParameter($this, "substyle", urlencode($_REQUEST["substyle"]));
1119 
1120  include_once 'Services/Search/classes/class.ilSearchRootSelector.php';
1121  $exp = new ilSearchRootSelector(
1122  $ilCtrl->getLinkTarget($this,'addStyleCatAssignment'));
1123  $exp->setExpand($_GET["search_root_expand"] ? $_GET["search_root_expand"] : $tree->readRootId());
1124  $exp->setExpandTarget($ilCtrl->getLinkTarget($this,'addStyleCatAssignment'));
1125  $exp->setTargetClass(get_class($this));
1126  $exp->setCmd('saveStyleCatAssignment');
1127  $exp->setClickableTypes(array("cat"));
1128 
1129  // build html-output
1130  $exp->setOutput(0);
1131  $tpl->setContent($exp->getOutput());
1132  }
1133 
1134 
1142  {
1143  global $lng, $ilCtrl, $rbacsystem;
1144 
1145  if (!$rbacsystem->checkAccess("write", $this->object->getRefId()))
1146  {
1147  return;
1148  }
1149 
1150  $ilCtrl->setParameter($this, "style_id", urlencode($_GET["style_id"]));
1151 
1152  $style_arr = explode(":", $_GET["style_id"]);
1153  ilStyleDefinition::writeSystemStyleCategoryAssignment($style_arr[0], $style_arr[1],
1154  $_GET["substyle"], $_GET["root_id"]);
1155  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1156 
1157  $ilCtrl->redirect($this, "assignStylesToCats");
1158  }
1159 
1164  {
1165  global $ilCtrl, $lng, $rbacsystem;
1166 
1167  if (!$rbacsystem->checkAccess("write", $this->object->getRefId()))
1168  {
1169  return;
1170  }
1171 
1172  $ilCtrl->setParameter($this, "style_id", urlencode($_GET["style_id"]));
1173  $style_arr = explode(":", $_GET["style_id"]);
1174  if (is_array($_POST["id"]))
1175  {
1176  foreach ($_POST["id"] as $id)
1177  {
1178  $id_arr = explode(":", $id);
1179  ilStyleDefinition::deleteSystemStyleCategoryAssignment($style_arr[0], $style_arr[1],
1180  $id_arr[0], $id_arr[1]);
1181  }
1182  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1183  }
1184 
1185  $ilCtrl->redirect($this, "assignStylesToCats");
1186  }
1187 
1188 }
1189 ?>