ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilWikiFunctionsBlockGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("Services/Block/classes/class.ilBlockGUI.php");
5 
15 {
16  public static $block_type = "wikiside";
17  public static $st_data;
18 
22  public function __construct()
23  {
24  global $DIC;
25 
26  $this->ctrl = $DIC->ctrl();
27  $this->lng = $DIC->language();
28  $this->user = $DIC->user();
29  $this->access = $DIC->access();
30  $lng = $DIC->language();
31 
32  parent::__construct();
33 
34  $lng->loadLanguageModule("wiki");
35  $this->setEnableNumInfo(false);
36 
37  $this->setTitle($lng->txt("wiki_functions"));
38  $this->allow_moving = false;
39 
40  $this->ref_id = (int) $_GET["ref_id"];
41  }
42 
46  public function getBlockType() : string
47  {
48  return self::$block_type;
49  }
50 
54  protected function isRepositoryObject() : bool
55  {
56  return false;
57  }
58 
62  public static function getScreenMode()
63  {
64  return IL_SCREEN_SIDE;
65  }
66 
70  public function executeCommand()
71  {
73 
74  $next_class = $ilCtrl->getNextClass();
75  $cmd = $ilCtrl->getCmd("getHTML");
76 
77  switch ($next_class) {
78  default:
79  return $this->$cmd();
80  }
81  }
82 
88  public function setPageObject($a_pageob)
89  {
90  $this->pageob = $a_pageob;
91  }
92 
98  public function getPageObject()
99  {
100  return $this->pageob;
101  }
102 
106  public function getHTML()
107  {
109  $lng = $this->lng;
111 
112  return parent::getHTML();
113  }
114 
118  public function fillDataSection()
119  {
121  $lng = $this->lng;
122  $ilAccess = $this->access;
123 
124  $tpl = new ilTemplate("tpl.wiki_side_block_content.html", true, true, "Modules/Wiki");
125 
126  $wp = $this->getPageObject();
127 
128  // info
129  $actions[] = array(
130  "txt" => $lng->txt("info_short"),
131  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "infoScreen")
132  );
133 
134  // recent changes
135  $actions[] = array(
136  "txt" => $lng->txt("wiki_recent_changes"),
137  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "recentChanges")
138  );
139 
140  foreach ($actions as $a) {
141  $tpl->setCurrentBlock("action");
142  $tpl->setVariable("HREF", $a["href"]);
143  $tpl->setVariable("TXT", $a["txt"]);
144  $tpl->parseCurrentBlock();
145 
146  $tpl->touchBlock("item");
147  }
148 
149 
150  $actions = array();
151 
152  // all pages
153  $actions[] = array(
154  "txt" => $lng->txt("wiki_all_pages"),
155  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "allPages")
156  );
157 
158  // new pages
159  $actions[] = array(
160  "txt" => $lng->txt("wiki_new_pages"),
161  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "newPages")
162  );
163 
164  // popular pages
165  $actions[] = array(
166  "txt" => $lng->txt("wiki_popular_pages"),
167  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "popularPages")
168  );
169 
170  // orphaned pages
171  $actions[] = array(
172  "txt" => $lng->txt("wiki_orphaned_pages"),
173  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "orphanedPages")
174  );
175 
176 
177  // page lists
178  include_once("./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
180  $list->setListTitle($lng->txt("wiki_page_lists"));
182  $list->setId("wiki_pglists");
183 
184  foreach ($actions as $a) {
185  $list->addItem(
186  $a["txt"],
187  "",
188  $a["href"]
189  );
190  }
191  $tpl->setCurrentBlock("plain");
192  $tpl->setVariable("PLAIN", $list->getHTML());
193  $tpl->parseCurrentBlock();
194  $tpl->touchBlock("item");
195 
196 
197  // page actions
200  $list->setListTitle($lng->txt("wiki_page_actions"));
201  $list->setId("wiki_pgactions");
202 
203  if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
204  // rating
205  if (ilObjWiki::_lookupRating($this->getPageObject()->getWikiId())) {
206  if (!$this->getPageObject()->getRating()) {
207  $list->addItem(
208  $lng->txt("wiki_activate_page_rating"),
209  "",
210  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "activateWikiPageRating")
211  );
212  } else {
213  $list->addItem(
214  $lng->txt("wiki_deactivate_page_rating"),
215  "",
216  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "deactivateWikiPageRating")
217  );
218  }
219  }
220  }
221 
222  if ($ilAccess->checkAccess("write", "", $this->ref_id) ||
223  $ilAccess->checkAccess("edit_page_meta", "", $this->ref_id)) {
224  // unhide advmd?
225  include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php';
226  if ((bool) sizeof(ilAdvancedMDRecord::_getSelectedRecordsByObject("wiki", $this->ref_id, "wpg")) &&
228  $list->addItem(
229  $lng->txt("wiki_unhide_meta_adv_records"),
230  "",
231  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "unhideAdvancedMetaData")
232  );
233  }
234  }
235 
236  if (($ilAccess->checkAccess("edit_content", "", $this->ref_id) && !$this->getPageObject()->getBlocked())
237  || $ilAccess->checkAccess("write", "", $this->ref_id)) {
238  // rename
239  $list->addItem(
240  $lng->txt("wiki_rename_page"),
241  "",
242  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "renameWikiPage")
243  );
244  }
245 
246  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
247  if (ilWikiPerm::check("activate_wiki_protection", $this->ref_id)) {
248  // block/unblock
249  if ($this->getPageObject()->getBlocked()) {
250  $list->addItem(
251  $lng->txt("wiki_unblock_page"),
252  "",
253  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "unblockWikiPage")
254  );
255  } else {
256  $list->addItem(
257  $lng->txt("wiki_block_page"),
258  "",
259  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "blockWikiPage")
260  );
261  }
262  }
263 
264  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
265  if (ilWikiPerm::check("delete_wiki_pages", $this->ref_id)) {
266  // delete page
267  $st_page = ilObjWiki::_lookupStartPage($this->getPageObject()->getParentId());
268  if ($st_page != $this->getPageObject()->getTitle()) {
269  $list->addItem(
270  $lng->txt("wiki_delete_page"),
271  "",
272  $ilCtrl->getLinkTargetByClass("ilwikipagegui", "deleteWikiPageConfirmationScreen")
273  );
274  }
275  }
276 
277  if ($ilAccess->checkAccess("write", "", $this->ref_id)) {
278  include_once "Modules/Wiki/classes/class.ilWikiPageTemplate.php";
279  $wpt = new ilWikiPageTemplate($this->getPageObject()->getParentId());
280  if (!$wpt->isPageTemplate($this->getPageObject()->getId())) {
281  $list->addItem(
282  $lng->txt("wiki_add_template"),
283  "",
284  $ilCtrl->getLinkTargetByClass("ilwikipagetemplategui", "addPageTemplateFromPageAction")
285  );
286  } else {
287  $list->addItem(
288  $lng->txt("wiki_remove_template_status"),
289  "",
290  $ilCtrl->getLinkTargetByClass("ilwikipagetemplategui", "removePageTemplateFromPageAction")
291  );
292  }
293  }
294 
295  if ($ilAccess->checkAccess("write", "", $this->ref_id) ||
296  $ilAccess->checkAccess("read", "", $this->ref_id)) {
297  $tpl->setCurrentBlock("plain");
298  $tpl->setVariable("PLAIN", $list->getHTML());
299  $tpl->parseCurrentBlock();
300  $tpl->touchBlock("item");
301  }
302 
303  // permissions
304  // if ($ilAccess->checkAccess('edit_permission', "", $this->ref_id))
305  // {
306  // $actions[] = array(
307  // "txt" => $lng->txt("perm_settings"),
308  // "href" => $ilCtrl->getLinkTargetByClass(array("ilobjwikigui", "ilpermissiongui"), "perm")
309  // );
310  // }
311 
312  $actions = array();
313 
314  // settings
315  if ($ilAccess->checkAccess('write', "", $this->ref_id)) {
316  $actions[] = array(
317  "txt" => $lng->txt("wiki_contributors"),
318  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "listContributors")
319  );
320  }
321 
322  // manage
323  if (ilWikiPerm::check("wiki_html_export", $this->ref_id)) {
324  $actions[] = array(
325  "txt" => $lng->txt("wiki_html_export"),
326  "id" => "il_wiki_user_export",
327  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "initUserHTMLExport")
328  );
329  }
330 
331  // manage
332  if ($ilAccess->checkAccess('write', "", $this->ref_id)) {
333  $actions[] = array(
334  "txt" => $lng->txt("settings"),
335  "href" => $ilCtrl->getLinkTargetByClass("ilobjwikigui", "editSettings")
336  );
337  } elseif ($ilAccess->checkAccess('statistics_read', "", $this->ref_id)) {
338  $actions[] = array(
339  "txt" => $lng->txt("statistics"),
340  "href" => $ilCtrl->getLinkTargetByClass(array("ilobjwikigui", "ilwikistatgui"), "initial")
341  );
342  }
343 
344  foreach ($actions as $a) {
345  $tpl->setCurrentBlock("action");
346  $tpl->setVariable("HREF", $a["href"]);
347  $tpl->setVariable("TXT", $a["txt"]);
348  if ($a["id"] != "") {
349  $tpl->setVariable("ACT_ID", "id='" . $a["id"] . "'");
350  }
351  $tpl->parseCurrentBlock();
352 
353  $tpl->touchBlock("item");
354  }
355 
356 
357  $this->setDataSection($tpl->get());
358  }
359 }
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
static check($a_perm, $a_ref_id, $a_cmd="")
Check permission.
global $DIC
Definition: saml.php:7
setDataSection($a_content)
Call this from overwritten fillDataSection(), if standard row based data is not used.
$_GET["client_id"]
static _lookupStartPage($a_wiki_id)
Lookup start page.
setEnableNumInfo($a_enablenuminfo)
Set Enable Item Number Info.
static lookupAdvancedMetadataHidden($a_page_id)
user()
Definition: user.php:4
static _getSelectedRecordsByObject($a_obj_type, $a_ref_id, $a_sub_type="")
Get selected records by object.
global $ilCtrl
Definition: ilias.php:18
BlockGUI class for wiki functions block.
static _lookupRating($a_wiki_id)
Lookup whether rating is activated.
setTitle($a_title)
Set Title.
special template class to simplify handling of ITX/PEAR
$ilUser
Definition: imgupload.php:18
static getScreenMode()
Get Screen Mode for current command.
User interface class for advanced drop-down selection lists.
This class represents a block method of a block.
const IL_SCREEN_SIDE
setPageObject($a_pageob)
Set Page Object.
getTitle()
Get Title.