ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilSystemStyleMainGUI.php
Go to the documentation of this file.
1 <?php
2 include_once("Services/Object/exceptions/class.ilObjectException.php");
3 
4 /* Copyright (c) 1998-2016 ILIAS open source, Extended GPL, see docs/LICENSE */
5 
21 {
25  protected $ctrl;
26 
30  protected $lng;
31 
32 
36  protected $DIC;
37 
41  protected $tabs;
42 
43 
47  protected $rbacsystem;
48 
52  protected $ref_id;
53 
57  protected $tpl;
58 
62  public function __construct()
63  {
67  global $DIC;
68 
69  $this->ctrl = $DIC->ctrl();
70  $this->lng = $DIC->language();
71  $this->tabs = $DIC->tabs();
72  $this->rbacsystem = $DIC->rbac()->system();
73  $this->tpl = $DIC["tpl"];
74 
75  $this->ref_id = (int) $_GET["ref_id"];
76  }
77 
78 
85  public function executeCommand()
86  {
90  global $ilHelp;
91 
92  $next_class = $this->ctrl->getNextClass($this);
93 
94  $ilHelp->setScreenIdComponent("sty");
95  $ilHelp->setScreenId("system_styles");
96 
97  if (!$_GET["skin_id"]) {
99  $_GET["skin_id"] = $config->getDefaultSkinId();
100  $_GET["style_id"] = $config->getDefaultStyleId();
101  }
102 
103  $this->ctrl->setParameterByClass('ilsystemstylesettingsgui', 'skin_id', $_GET["skin_id"]);
104  $this->ctrl->setParameterByClass('ilsystemstylesettingsgui', 'style_id', $_GET["style_id"]);
105  $this->ctrl->setParameterByClass('ilsystemstylelessgui', 'skin_id', $_GET["skin_id"]);
106  $this->ctrl->setParameterByClass('ilsystemstylelessgui', 'style_id', $_GET["style_id"]);
107  $this->ctrl->setParameterByClass('ilsystemstyleiconsgui', 'skin_id', $_GET["skin_id"]);
108  $this->ctrl->setParameterByClass('ilsystemstyleiconsgui', 'style_id', $_GET["style_id"]);
109  $this->ctrl->setParameterByClass('ilsystemstyledocumentationgui', 'skin_id', $_GET["skin_id"]);
110  $this->ctrl->setParameterByClass('ilsystemstyledocumentationgui', 'style_id', $_GET["style_id"]);
111 
112  try {
113  switch ($next_class) {
114 
115  case "ilsystemstylesettingsgui":
116  $ilHelp->setSubScreenId("settings");
117  $this->checkPermission("sty_management");
118  $this->setUnderworldTabs('settings');
119  $this->setUnderworldTitle();
120  include_once("Settings/class.ilSystemStyleSettingsGUI.php");
121  $system_styles_settings = new ilSystemStyleSettingsGUI();
122  $this->ctrl->forwardCommand($system_styles_settings);
123  break;
124  case "ilsystemstylelessgui":
125  $ilHelp->setSubScreenId("less");
126  $this->checkPermission("sty_management");
127  $this->setUnderworldTabs('less');
128  $this->setUnderworldTitle();
129  include_once("Less/class.ilSystemStyleLessGUI.php");
130  $system_styles_less = new ilSystemStyleLessGUI();
131  $this->ctrl->forwardCommand($system_styles_less);
132  break;
133  case "ilsystemstyleiconsgui":
134  $ilHelp->setSubScreenId("icons");
135  $this->checkPermission("sty_management");
136  $this->setUnderworldTabs('icons');
137  $this->setUnderworldTitle();
138  include_once("Icons/class.ilSystemStyleIconsGUI.php");
139  $system_styles_icons = new ilSystemStyleIconsGUI();
140  $this->ctrl->forwardCommand($system_styles_icons);
141  break;
142  case "ilsystemstyledocumentationgui":
143  $ilHelp->setSubScreenId("documentation");
144  $read_only = !$this->checkPermission("sty_management", false);
145  $this->setUnderworldTabs('documentation');
146  $this->setUnderworldTitle();
147  include_once("Documentation/class.ilSystemStyleDocumentationGUI.php");
148  $system_styles_documentation = new ilSystemStyleDocumentationGUI($read_only);
149  $this->ctrl->forwardCommand($system_styles_documentation);
150  break;
151  case "ilsystemstyleoverviewgui":
152  default:
153  $ilHelp->setSubScreenId("overview");
154  $this->checkPermission("visible,read");
155  include_once("Overview/class.ilSystemStyleOverviewGUI.php");
156  $system_styles_overview = new ilSystemStyleOverviewGUI(!$this->checkPermission("sty_write_system", false), $this->checkPermission("sty_management", false));
157  $this->ctrl->forwardCommand($system_styles_overview);
158  break;
159  }
160  } catch (ilObjectException $e) {
161  ilUtil::sendFailure($e->getMessage());
162  $this->checkPermission("visible,read");
163  include_once("Overview/class.ilSystemStyleOverviewGUI.php");
164  $this->ctrl->setCmd("");
165  $system_styles_overview = new ilSystemStyleOverviewGUI(!$this->checkPermission("sty_write_system", false), $this->checkPermission("sty_management", false));
166  $this->ctrl->forwardCommand($system_styles_overview);
167  }
168  }
169 
173  public static function _goto($ref_id, $params)
174  {
178  global $DIC;
179 
180  $node_id = $params[2];
181  $skin_id = $params[3];
182  $style_id = $params[4];
183 
184  $DIC->ctrl()->setParameterByClass('ilSystemStyleDocumentationGUI', 'skin_id', $skin_id);
185  $DIC->ctrl()->setParameterByClass(
186  'ilSystemStyleDocumentationGUI',
187  'style_id',
188  $style_id
189  );
190  $DIC->ctrl()->setParameterByClass('ilSystemStyleDocumentationGUI', 'node_id', $node_id);
191  $DIC->ctrl()->setParameterByClass('ilSystemStyleDocumentationGUI', 'ref_id', $ref_id);
192 
193  $_GET['baseClass']= 'ilAdministrationGUI';
194 
195  $cmd = "entries";
196  $cmd_classes = [
197  "ilAdministrationGUI",
198  "ilObjStyleSettingsGUI",
199  "ilSystemStyleMainGUI",
200  'ilSystemStyleDocumentationGUI'
201  ];
202 
203  $DIC->ctrl()->setTargetScript("ilias.php");
204  $DIC->ctrl()->redirectByClass($cmd_classes, $cmd);
205  }
206 
216  public function checkPermission($a_perm, $a_throw_exc = true)
217  {
218  global $ilIliasIniFile;
219 
220  $has_perm = true;
221 
223  if ($a_perm == "sty_management") {
224  $has_perm = $ilIliasIniFile->readVariable("tools", "enable_system_styles_management")== "1" ? true:false;
225  $a_perm = "sty_write_system";
226  if ($has_perm && !is_writable($config->getCustomizingSkinPath())) {
227  ilUtil::sendFailure($this->lng->txt("enable_system_styles_management_no_write_perm"));
228  $has_perm = false;
229  }
230  }
231 
232  if ($has_perm) {
233  $has_perm = $this->rbacsystem->checkAccess($a_perm, $this->ref_id);
234  }
235 
236  if (!$has_perm) {
237  if ($a_throw_exc) {
238  include_once "Services/Object/exceptions/class.ilObjectException.php";
239  throw new ilObjectException($this->lng->txt("sty_permission_denied"));
240  }
241  return false;
242  }
243  return $has_perm;
244  }
245 
251  protected function setUnderworldTabs($active = "")
252  {
256  global $ilHelp;
257  $this->tabs->clearTargets();
258 
262  $ilHelp->setScreenIdComponent("sty");
263  $ilHelp->setScreenId("system_styles");
264  $this->tabs->setBackTarget($this->lng->txt("back"), $this->ctrl->getLinkTarget($this));
266  if ($_GET["skin_id"] != $config->getDefaultSkinId()) {
267  $this->tabs->addTab('settings', $this->lng->txt('settings'), $this->ctrl->getLinkTargetByClass('ilsystemstylesettingsgui'));
268  $this->tabs->addTab('less', $this->lng->txt('less'), $this->ctrl->getLinkTargetByClass('ilsystemstylelessgui'));
269  $this->tabs->addTab('icons', $this->lng->txt('icons'), $this->ctrl->getLinkTargetByClass('ilsystemstyleiconsgui'));
270  }
271 
272  $this->tabs->addTab('documentation', $this->lng->txt('documentation'), $this->ctrl->getLinkTargetByClass('ilsystemstyledocumentationgui'));
273 
274  $this->tabs->activateTab($active);
275  }
276 
277 
283  protected function setUnderworldTitle()
284  {
285  $skin_id = $_GET["skin_id"];
286  $style_id = $_GET["style_id"];
287 
288  $skin = ilSystemStyleSkinContainer::generateFromId($skin_id)->getSkin();
289  $style = $skin->getStyle($style_id);
290 
291  $this->tpl->setTitle($style->getName());
292  if ($style->isSubstyle()) {
293  $this->tpl->setDescription(
294  $this->lng->txt("settings_of_substyle") . " '" . $style->getName() . "' " .
295  $this->lng->txt("of_parent") . " '" . $skin->getStyle($style->getSubstyleOf())->getName() . "' " .
296  $this->lng->txt("from_skin") . " " . $skin->getName()
297  );
298  } else {
299  $this->tpl->setDescription(
300  $this->lng->txt("settings_of_style") . " '" . $style->getName() . "' " .
301  $this->lng->txt("from_skin") . " '" . $skin->getName() . "'"
302  );
303  }
304  }
305 }
setUnderworldTitle()
Sets title correctly if one system style is opened.
$params
Definition: disable.php:11
$style
Definition: example_012.php:70
$_GET["client_id"]
Base exception class for object service.
checkPermission($a_perm, $a_throw_exc=true)
Checks permission for system styles.
static generateFromId($skin_id, ilSystemStyleMessageStack $message_stack=null, ilSystemStyleConfig $system_styles_conf=null)
Generate the container class by parsing the corresponding XML.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
Settings UI class for system styles.
ilSystemStyleConfig wraps all &#39;constants&#39; to ensure the testability of all classes using those &#39;const...
$ilIliasIniFile