ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilWikiPageGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("./Services/COPage/classes/class.ilPageObjectGUI.php");
5 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
6 
21 {
25  function __construct($a_id = 0, $a_old_nr = 0, $a_wiki_ref_id = 0)
26  {
27  global $tpl;
28 
29  // needed for notifications
30  $this->setWikiRefId($a_wiki_ref_id);
31 
32  parent::__construct("wpg", $a_id, $a_old_nr);
33  $this->getPageObject()->setWikiRefId($this->getWikiRefId());
34 
35  // content style
36  include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
37 
38  $tpl->setCurrentBlock("SyntaxStyle");
39  $tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
41  $tpl->parseCurrentBlock();
42  }
43 
51  {
52  global $ilHelp;
53 
54  $ilHelp->setScreenIdComponent("copgwpg");
55  }
56 
57  function setWikiRefId($a_ref_id)
58  {
59  $this->wiki_ref_id = $a_ref_id;
60  }
61 
62  function getWikiRefId()
63  {
64  return $this->wiki_ref_id;
65  }
66 
70  function &executeCommand()
71  {
72  global $ilCtrl, $ilTabs, $ilUser, $ilAccess, $lng;
73 
74  $next_class = $this->ctrl->getNextClass($this);
75  $cmd = $this->ctrl->getCmd();
76 
77  switch($next_class)
78  {
79  case "ilnotegui":
80  $this->getTabs();
81  $ilTabs->setTabActive("pg");
82  return $this->preview();
83  break;
84 
85  case "ilratinggui":
86  // for rating side block
87  include_once("./Services/Rating/classes/class.ilRatingGUI.php");
88  $rating_gui = new ilRatingGUI();
89  $rating_gui->setObject($this->getPageObject()->getParentId(), "wiki",
90  $this->getPageObject()->getId(), "wpg");
91  $rating_gui->setUpdateCallback(array($this, "updateStatsRating"));
92  $this->ctrl->forwardCommand($rating_gui);
93  $ilCtrl->redirect($this, "preview");
94  break;
95 
96  case "ilpageobjectgui":
97  die("Deprecated. Wikipage gui forwarding to ilpageobject");
98  return;
99 
100  case "ilcommonactiondispatchergui":
101  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
103  $gui->enableCommentsSettings(false);
104  $gui->setRatingCallback($this, "preview");
105  $this->ctrl->forwardCommand($gui);
106  break;
107 
108  case "ilwikistatgui":
109  if($ilAccess->checkAccess("statistics_read", "", $this->wiki_ref_id))
110  {
111  $this->tabs_gui->clearTargets(); // see ilObjWikiGUI::getTabs()
112  $this->getTabs("statistics");
113 
114  include_once "Modules/Wiki/classes/class.ilWikiStatGUI.php";
115  $gui = new ilWikiStatGUI($this->getPageObject()->getParentId(),
116  $this->getPageObject()->getId());
117  $this->ctrl->forwardCommand($gui);
118  }
119  break;
120  case 'ilobjectmetadatagui':
121 
122  if(!$ilAccess->checkAccess("write", "", $this->wiki_ref_id))
123  {
124  ilUtil::sendFailure($lng->txt("permission_denied"), true);
125  $ilCtrl->redirect($this, "preview");
126  }
127  return parent::executeCommand();
128  break;
129 
130  default:
131 
132  if (strtolower($ilCtrl->getNextClass()) == "ilpageeditorgui")
133  {
134  self::initEditingJS($this->tpl);
135  }
136 
137  if($_GET["ntf"])
138  {
139  include_once "./Services/Notification/classes/class.ilNotification.php";
140  switch($_GET["ntf"])
141  {
142  case 1:
143  ilNotification::setNotification(ilNotification::TYPE_WIKI, $ilUser->getId(), $this->getPageObject()->getParentId(), false);
144  break;
145 
146  case 2:
147  // remove all page notifications here?
148  ilNotification::setNotification(ilNotification::TYPE_WIKI, $ilUser->getId(), $this->getPageObject()->getParentId(), true);
149  break;
150 
151  case 3:
152  ilNotification::setNotification(ilNotification::TYPE_WIKI_PAGE, $ilUser->getId(), $this->getPageObject()->getId(), false);
153  break;
154 
155  case 4:
156  ilNotification::setNotification(ilNotification::TYPE_WIKI_PAGE, $ilUser->getId(), $this->getPageObject()->getId(), true);
157  break;
158  }
159  $ilCtrl->redirect($this, "preview");
160  }
161 
162  $this->setPresentationTitle($this->getWikiPage()->getTitle());
163  return parent::executeCommand();
164  }
165  }
166 
172  function setWikiPage($a_wikipage)
173  {
174  $this->setPageObject($a_wikipage);
175  }
176 
182  function getWikiPage()
183  {
184  return $this->getPageObject();
185  }
186 
190  static function getGUIForTitle($a_wiki_id, $a_title, $a_old_nr = 0, $a_wiki_ref_id = 0)
191  {
192  global $ilDB;
193 
194  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
195  $id = ilWikiPage::getPageIdForTitle($a_wiki_id, $a_title);
196  $page_gui = new ilWikiPageGUI($id, $a_old_nr, $a_wiki_ref_id);
197 
198  return $page_gui;
199  }
200 
201  function setSideBlock()
202  {
204  $this->wiki_ref_id, $this->getWikiPage());
205  }
206 
207  function addHeaderAction($a_redraw = false)
208  {
209  global $ilUser, $ilAccess;
210 
211  $wiki_id = $this->getPageObject()->getParentId();
212  $page_id = $this->getPageObject()->getId();
213 
214  include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
216  $ilAccess, "wiki", $_GET["ref_id"], $wiki_id);
217  $dispatcher->setSubObject("wpg", $page_id);
218 
219  include_once "Services/Object/classes/class.ilObjectListGUI.php";
220  ilObjectListGUI::prepareJSLinks($this->ctrl->getLinkTarget($this, "redrawHeaderAction", "", true),
221  $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
222  $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false));
223 
224  $lg = $dispatcher->initHeaderAction();
225  $lg->enableNotes(true);
226  $lg->enableComments(ilObjWiki::_lookupPublicNotes($wiki_id), false);
227 
228  // rating
229  if (ilObjWiki::_lookupRatingOverall($wiki_id))
230  {
231  $lg->enableRating(true, $this->lng->txt("wiki_rate_overall"),
232  false,
233  // so ilCtrl does not use the shortcut via ilWikiGUI
234  array("ilcommonactiondispatchergui", "ilratinggui"));
235  }
236 
237  // notification
238  if ($ilUser->getId() != ANONYMOUS_USER_ID)
239  {
240  include_once "./Services/Notification/classes/class.ilNotification.php";
241  if(ilNotification::hasNotification(ilNotification::TYPE_WIKI, $ilUser->getId(), $wiki_id))
242  {
243  $this->ctrl->setParameter($this, "ntf", 1);
244  $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_deactivate_wiki");
245 
246  $lg->addHeaderIcon("not_icon",
247  ilUtil::getImagePath("notification_on.svg"),
248  $this->lng->txt("wiki_notification_activated"));
249  }
250  else
251  {
252  $this->ctrl->setParameter($this, "ntf", 2);
253  $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_activate_wiki");
254 
255  if(ilNotification::hasNotification(ilNotification::TYPE_WIKI_PAGE, $ilUser->getId(), $page_id))
256  {
257  $this->ctrl->setParameter($this, "ntf", 3);
258  $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_deactivate_page");
259 
260  $lg->addHeaderIcon("not_icon",
261  ilUtil::getImagePath("notification_on.svg"),
262  $this->lng->txt("wiki_page_notification_activated"));
263  }
264  else
265  {
266  $this->ctrl->setParameter($this, "ntf", 4);
267  $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_activate_page");
268 
269  $lg->addHeaderIcon("not_icon",
270  ilUtil::getImagePath("notification_off.svg"),
271  $this->lng->txt("wiki_notification_deactivated"));
272  }
273  }
274  $this->ctrl->setParameter($this, "ntf", "");
275  }
276 
277  if(!$a_redraw)
278  {
279  $this->tpl->setHeaderActionMenu($lg->getHeaderAction());
280  }
281  else
282  {
283  // we need to add onload code manually (rating, comments, etc.)
284  return $lg->getHeaderAction().
285  $this->tpl->getOnLoadCodeForAsynch();
286  }
287  }
288 
290  {
291  echo $this->addHeaderAction(true);
292  exit;
293  }
294 
298  function preview()
299  {
300  global $ilCtrl, $ilAccess, $lng, $tpl, $ilUser, $ilSetting, $ilToolbar;
301 
302  // block/unblock
303  if ($this->getPageObject()->getBlocked())
304  {
305  ilUtil::sendInfo($lng->txt("wiki_page_status_blocked"));
306  }
307 
308  $this->increaseViewCount();
309 
310  $this->addHeaderAction();
311 
312  // content
313  $this->setSideBlock();
314 
315  $wtpl = new ilTemplate("tpl.wiki_page_view_main_column.html",
316  true, true, "Modules/Wiki");
317 
318  $callback = array($this, "observeNoteAction");
319 
320  // notes
321  if (!$ilSetting->get("disable_comments") &&
322  ilObjWiki::_lookupPublicNotes($this->getPageObject()->getParentId()))
323  {
324  $may_delete = ($ilSetting->get("comments_del_tutor", 1) &&
325  $ilAccess->checkAccess("write", "", $_GET["ref_id"]));
326  $wtpl->setVariable("NOTES", $this->getNotesHTML($this->getPageObject(),
327  true, ilObjWiki::_lookupPublicNotes($this->getPageObject()->getParentId()),
328  $may_delete, $callback));
329  }
330 
331  // permanent link
332  $append = ($_GET["page"] != "")
333  ? "_".ilWikiUtil::makeUrlTitle($_GET["page"])
334  : "";
335 
336  // see #13804
337  if ($_GET["page"] != "")
338  {
339  $tpl->setPermanentLink("wiki", "", "wpage_".$this->getPageObject()->getId()."_".$_GET["ref_id"]);
340  }
341  else
342  {
343  $tpl->setPermanentLink("wiki", $_GET["ref_id"]);
344  }
345 
346 
347 
348  // page content
350  $this->setRenderPageContainer(true);
351  $wtpl->setVariable("PAGE", $this->showPage());
352 
353  $tpl->setLoginTargetPar("wiki_".$_GET["ref_id"].$append);
354 
355  // last edited info
356  include_once("./Services/User/classes/class.ilUserUtil.php");
357  $wtpl->setVariable("LAST_EDITED_INFO",
358  $lng->txt("wiki_last_edited").": ".
360  new ilDateTime($this->getPageObject()->getLastChange(),IL_CAL_DATETIME)).", ".
361  ilUserUtil::getNamePresentation($this->getPageObject()->getLastChangeUser(),
362  false, true, $ilCtrl->getLinkTarget($this, "preview")));
363 
364  $tpl->setLoginTargetPar("wiki_".$_GET["ref_id"].$append);
365 
366  //highlighting
367  if ($_GET["srcstring"] != "")
368  {
369  include_once './Services/Search/classes/class.ilUserSearchCache.php';
370  $cache = ilUserSearchCache::_getInstance($ilUser->getId());
371  $cache->switchSearchType(ilUserSearchCache::LAST_QUERY);
372  $search_string = $cache->getQuery();
373 
374  // advanced search?
375  if(is_array($search_string))
376  {
377  $search_string = $search_string["lom_content"];
378  }
379 
380  include_once("./Services/UIComponent/TextHighlighter/classes/class.ilTextHighlighterGUI.php");
381  include_once("./Services/Search/classes/class.ilQueryParser.php");
382  $p = new ilQueryParser($search_string);
383  $p->parse();
384 
385  $words = $p->getQuotedWords();
386  if (is_array($words))
387  {
388  foreach ($words as $w)
389  {
390  ilTextHighlighterGUI::highlight("ilCOPageContent", $w, $tpl);
391  }
392  }
393  $this->fill_on_load_code = true;
394  }
395 
396  return $wtpl->get();
397  }
398 
399  function showPage()
400  {
401  global $tpl, $ilCtrl;
402 
403  // content style
404 /* include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
405  $tpl->setCurrentBlock("ContentStyle");
406  $tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
407  ilObjStyleSheet::getContentStylePath(0));
408  $tpl->parseCurrentBlock();
409 */
410  $this->setTemplateOutput(false);
411 
412  if(!$this->getAbstractOnly())
413  {
414  $this->setPresentationTitle($this->getWikiPage()->getTitle());
415 
416  // wiki stats clean up
417  // $this->increaseViewCount();
418  }
419 
420  return parent::showPage();
421  }
422 
423  protected function increaseViewCount()
424  {
425  global $ilUser;
426 
427  $this->getWikiPage()->increaseViewCnt();
428 
429  // enable object statistics
430  require_once('Services/Tracking/classes/class.ilChangeEvent.php');
432  $this->getWikiPage()->getWikiId(), $ilUser->getId());
433 
434  include_once "./Modules/Wiki/classes/class.ilWikiStat.php";
436  }
437 
441  function postOutputProcessing($a_output)
442  {
443  global $ilCtrl;
444 
445 //echo htmlentities($a_output);
446  include_once("./Modules/Wiki/classes/class.ilWikiUtil.php");
447 
448  $ilCtrl->setParameterByClass("ilobjwikigui", "from_page", ilWikiUtil::makeUrlTitle($_GET["page"]));
449  $output = ilWikiUtil::replaceInternalLinks($a_output,
450  $this->getWikiPage()->getWikiId(),
451  ($this->getOutputMode() == "offline"));
452  $ilCtrl->setParameterByClass("ilobjwikigui", "from_page", $_GET["from_page"]);
453 
454  return $output;
455  }
456 
460  function whatLinksHere()
461  {
462  global $tpl;
463 
464  include_once("./Modules/Wiki/classes/class.ilWikiPagesTableGUI.php");
465 
466  $this->setSideBlock($_GET["wpg_id"]);
467  $table_gui = new ilWikiPagesTableGUI($this, "whatLinksHere",
468  $this->getWikiPage()->getWikiId(), IL_WIKI_WHAT_LINKS_HERE, $_GET["wpg_id"]);
469 
470  $tpl->setContent($table_gui->getHTML());
471  }
472 
473  function getTabs($a_activate = "")
474  {
475  global $ilTabs, $ilCtrl, $ilAccess;
476 
477  parent::getTabs($a_activate);
478 
479  if($ilAccess->checkAccess("statistics_read", "", $_GET["ref_id"]))
480  {
481  $ilTabs->addTarget("statistics",
482  $this->ctrl->getLinkTargetByClass(array("ilwikipagegui", "ilwikistatgui"),
483  "initial"), "", "ilwikistatgui");
484  }
485 
486  $ilCtrl->setParameterByClass("ilobjwikigui", "wpg_id",
487  ilWikiPage::getPageIdForTitle($this->getPageObject()->getParentId(),
488  ilWikiUtil::makeDbTitle($_GET["page"])));
489  $ilCtrl->setParameterByClass("ilobjwikigui", "page", ilWikiUtil::makeUrlTitle($_GET["page"]));
490 
491  $ilTabs->addTarget("wiki_what_links_here",
492  $this->ctrl->getLinkTargetByClass("ilwikipagegui",
493  "whatLinksHere"), "whatLinksHere");
494  //$ilTabs->addTarget("wiki_print_view",
495  // $this->ctrl->getLinkTargetByClass("ilobjwikigui",
496  // "printViewSelection"), "printViewSelection");
497  $ilTabs->addTarget("wiki_print_view",
498  $this->ctrl->getLinkTargetByClass("ilwikipagegui",
499  "printViewSelection"), "printViewSelection");
500 
501  }
502 
507  {
508  global $ilAccess, $tpl, $ilCtrl, $lng;
509 
510  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
511  if (ilWikiPerm::check("delete_wiki_pages", $_GET["ref_id"]))
512  {
513  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
514  $confirmation_gui = new ilConfirmationGUI();
515  $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
516  $confirmation_gui->setHeaderText($lng->txt("wiki_page_deletion_confirmation"));
517  $confirmation_gui->setCancel($lng->txt("cancel"), "cancelWikiPageDeletion");
518  $confirmation_gui->setConfirm($lng->txt("delete"), "confirmWikiPageDeletion");
519 
520  $dtpl = new ilTemplate("tpl.wiki_page_deletion_confirmation.html", true,
521  true, "Modules/Wiki");
522 
523  $dtpl->setVariable("PAGE_TITLE", $this->getWikiPage()->getTitle());
524 
525  // other pages that link to this page
526  $dtpl->setVariable("TXT_OTHER_PAGES", $lng->txt("wiki_other_pages_linking"));
527  $pages = ilWikiPage::getLinksToPage($this->getWikiPage()->getWikiId(),
528  $this->getWikiPage()->getId());
529  if (count($pages) > 0)
530  {
531  foreach($pages as $page)
532  {
533  $dtpl->setCurrentBlock("lpage");
534  $dtpl->setVariable("TXT_LINKING_PAGE", $page["title"]);
535  $dtpl->parseCurrentBlock();
536  }
537  }
538  else
539  {
540  $dtpl->setCurrentBlock("lpage");
541  $dtpl->setVariable("TXT_LINKING_PAGE", "-");
542  $dtpl->parseCurrentBlock();
543  }
544 
545  // contributors
546  $dtpl->setVariable("TXT_CONTRIBUTORS", $lng->txt("wiki_contributors"));
547  $contributors = ilWikiPage::getPageContributors($this->getWikiPage()->getId());
548  foreach($contributors as $contributor)
549  {
550  $dtpl->setCurrentBlock("contributor");
551  $dtpl->setVariable("TXT_CONTRIBUTOR",
552  $contributor["lastname"].", ".$contributor["firstname"]);
553  $dtpl->parseCurrentBlock();
554  }
555 
556  // notes/comments
557  include_once("./Services/Notes/classes/class.ilNote.php");
558  $cnt_note_users = ilNote::getUserCount($this->getPageObject()->getParentId(),
559  $this->getPageObject()->getId(), "wpg");
560  $dtpl->setVariable("TXT_NUMBER_USERS_NOTES_OR_COMMENTS",
561  $lng->txt("wiki_number_users_notes_or_comments"));
562  $dtpl->setVariable("TXT_NR_NOTES_COMMENTS", $cnt_note_users);
563 
564  $confirmation_gui->addItem("", "", $dtpl->get());
565 
566  $tpl->setContent($confirmation_gui->getHTML());
567  }
568  }
569 
574  {
575  global $lng, $ilCtrl;
576 
577  $ilCtrl->redirect($this, "preview");
578 
579  }
580 
585  {
586  global $ilAccess, $tpl, $ilCtrl, $lng;
587 
588  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
589  if (ilWikiPerm::check("delete_wiki_pages", $_GET["ref_id"]))
590  {
591  $this->getPageObject()->delete();
592 
593  ilUtil::sendSuccess($lng->txt("wiki_page_deleted"), true);
594  }
595 
596  $ilCtrl->redirectByClass("ilobjwikigui", "allPages");
597  }
598 
602 
610  {
611  global $ilUser, $lng, $ilToolbar, $ilCtrl, $tpl;
612 
613  /*$ilToolbar->setFormAction($ilCtrl->getFormActionByClass("ilobjwikigui", "printView"),
614  false, "print_view");
615  $ilToolbar->addFormButton($lng->txt("cont_show_print_view"), "printView");
616  $ilToolbar->setCloseFormTag(false);*/
617 
619 
620  $tpl->setContent($this->form->getHTML());
621  }
622 
626  public function initPrintViewSelectionForm()
627  {
628  global $lng, $ilCtrl;
629 
631 
632  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
633  $this->form = new ilPropertyFormGUI();
634 
635  // because of PDF export
636  $this->form->setPreventDoubleSubmission(false);
637 
638 //var_dump($pages);
639  // selection type
640  $radg = new ilRadioGroupInputGUI($lng->txt("cont_selection"), "sel_type");
641  $radg->setValue("page");
642  $op1 = new ilRadioOption($lng->txt("cont_current_page"), "page");
643  $radg->addOption($op1);
644  $op2 = new ilRadioOption($lng->txt("wiki_whole_wiki")
645  ." (".$lng->txt("wiki_pages").": ".count($pages).")", "wiki");
646  $radg->addOption($op2);
647  $op3= new ilRadioOption($lng->txt("wiki_selected_pages"), "selection");
648  $radg->addOption($op3);
649 
650  include_once("./Services/Form/classes/class.ilNestedListInputGUI.php");
651  $nl = new ilNestedListInputGUI("", "obj_id");
652  $op3->addSubItem($nl);
653 
654  foreach ($pages as $p)
655  {
656  $nl->addListNode($p["id"], $p["title"], 0, false, false,
657  ilUtil::getImagePath("icon_pg.svg"), $lng->txt("wiki_page"));
658  }
659 
660  $this->form->addItem($radg);
661 
662  $this->form->addCommandButton("printViewOrder", $lng->txt("wiki_show_print_view"));
663  $this->form->addCommandButton("pdfExportOrder", $lng->txt("wiki_show_pdf_export"));
664  //$this->form->setOpenTag(false);
665  //$this->form->setCloseTag(false);
666 
667  $this->form->setTitle($lng->txt("cont_print_selection"));
668  $this->form->setFormAction($ilCtrl->getFormAction($this, "printViewOrder"));
669  }
670 
671  public function printViewOrder()
672  {
673  $this->printViewOrderList();
674  }
675 
676  public function pdfExportOrder()
677  {
678  $this->printViewOrderList(true);
679  }
680 
681  protected function printViewOrderList($a_pdf_export = false)
682  {
683  global $ilTabs;
684 
685  $pg_ids = $all_pages = array();
686 
687  // coming from type selection
688  if(!is_array($_POST["wordr"]))
689  {
690  switch(trim($_POST["sel_type"]))
691  {
692  case "wiki":
693  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
694  $all_pages = ilWikiPage::getAllPages($this->getPageObject()->getWikiId());
695  foreach ($all_pages as $p)
696  {
697  $pg_ids[] = $p["id"];
698  }
699  break;
700 
701  case "selection":
702  if (is_array($_POST["obj_id"]))
703  {
704  $pg_ids = $_POST["obj_id"];
705  }
706  else
707  {
708  $pg_ids[] = $_GET["wpg_id"];
709  }
710  if(sizeof($pg_ids) > 1)
711  {
712  break;
713  }
714  else
715  {
716  $_GET["wpg_id"] = array_pop($pg_ids);
717  }
718  // fallthrough
719 
720  // no order needed for single page
721  default:
722  //case "page":
723  $this->ctrl->setParameterByClass("ilObjWikiGUI", "wpg_id", $_GET["wpg_id"]);
724  if($a_pdf_export)
725  {
726  $this->ctrl->redirectByClass("ilObjWikiGUI", "pdfExport");
727  }
728  else
729  {
730  $this->ctrl->redirectByClass("ilObjWikiGUI", "printView");
731  }
732  break;
733  }
734 
735  if($a_pdf_export)
736  {
737  $this->ctrl->setParameter($this, "pexp", 1);
738  }
739  }
740  // refresh sorting
741  else
742  {
743  $a_pdf_export = (bool)$_GET["pexp"];
744 
745  asort($_POST["wordr"]);
746  $pg_ids = array_keys($_POST["wordr"]);
747  }
748 
749  $ilTabs->clearTargets();
750  $ilTabs->setBackTarget($this->lng->txt("back"),
751  $this->ctrl->getLinkTarget($this, "preview"));
752 
753  if(!sizeof($all_pages))
754  {
755  include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
756  $all_pages = ilWikiPage::getAllPages($this->getPageObject()->getWikiId());
757  }
758 
759  include_once "Modules/Wiki/classes/class.ilWikiExportOrderTableGUI.php";
760  $tbl = new ilWikiExportOrderTableGUI($this, "printViewOrderList", $a_pdf_export, $all_pages, $pg_ids);
761  $this->tpl->setContent($tbl->getHTML());
762  }
763 
764 
768 
772  function blockWikiPage()
773  {
774  global $ilAccess, $tpl, $ilCtrl, $lng;
775 
776  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
777  if (ilWikiPerm::check("activate_wiki_protection", $_GET["ref_id"]))
778  {
779  $this->getPageObject()->setBlocked(true);
780  $this->getPageObject()->update();
781 
782  ilUtil::sendSuccess($lng->txt("wiki_page_blocked"), true);
783  }
784 
785  $ilCtrl->redirect($this, "preview");
786  }
787 
791  function unblockWikiPage()
792  {
793  global $ilAccess, $tpl, $ilCtrl, $lng;
794 
795  include_once("./Modules/Wiki/classes/class.ilWikiPerm.php");
796  if (ilWikiPerm::check("activate_wiki_protection", $_GET["ref_id"]))
797  {
798  $this->getPageObject()->setBlocked(false);
799  $this->getPageObject()->update();
800 
801  ilUtil::sendSuccess($lng->txt("wiki_page_unblocked"), true);
802  }
803 
804  $ilCtrl->redirect($this, "preview");
805  }
806 
807 
811 
815  function renameWikiPage()
816  {
817  global $ilAccess, $tpl, $ilCtrl, $lng;
818 
819  if (($ilAccess->checkAccess("edit_content", "", $_GET["ref_id"]) && !$this->getPageObject()->getBlocked())
820  || $ilAccess->checkAccess("write", "", $_GET["ref_id"]))
821  {
822  $this->initRenameForm();
823  $tpl->setContent($this->form->getHTML());
824  }
825  }
826 
832  protected function initRenameForm()
833  {
834  global $lng, $ilCtrl;
835 
836  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
837  $this->form = new ilPropertyFormGUI();
838 
839  // new name
840  $ti = new ilTextInputGUI($lng->txt("wiki_new_page_name"), "new_page_name");
841  $ti->setMaxLength(200);
842  $ti->setSize(50);
843  $ti->setValue($this->getPageObject()->getTitle());
844  $ti->setRequired(true);
845  $this->form->addItem($ti);
846 
847  $this->form->addCommandButton("renamePage", $lng->txt("wiki_rename"));
848  $this->form->addCommandButton("preview", $lng->txt("cancel"));
849 
850  $this->form->setTitle($lng->txt("wiki_rename_page"));
851  $this->form->setFormAction($ilCtrl->getFormAction($this));
852  }
853 
857  public function renamePage()
858  {
859  global $tpl, $lng, $ilCtrl, $ilAccess;
860 
861  $this->initRenameForm();
862  if ($this->form->checkInput())
863  {
864  if (($ilAccess->checkAccess("edit_content", "", $_GET["ref_id"]) && !$this->getPageObject()->getBlocked())
865  || $ilAccess->checkAccess("write", "", $_GET["ref_id"]))
866  {
867  $new_name = $this->form->getInput("new_page_name");
868 
869  $page_title = ilWikiUtil::makeDbTitle($new_name);
870  $pg_id = ilWikiPage::_getPageIdForWikiTitle($this->getPageObject()->getWikiId(), $page_title);
871 
872  // we might get the same page id back here, if the page
873  // name only differs in diacritics
874  // see bug http://www.ilias.de/mantis/view.php?id=11226
875  if ($pg_id > 0 && $pg_id != $this->getPageObject()->getId())
876  {
877  ilUtil::sendFailure($lng->txt("wiki_page_already_exists"));
878  }
879  else
880  {
881  $new_name = $this->getPageObject()->rename($new_name);
882  $ilCtrl->setParameterByClass("ilobjwikigui", "page", ilWikiUtil::makeUrlTitle($new_name));
883  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
884  $ilCtrl->redirect($this, "preview");
885  }
886  }
887  }
888 
889  $this->form->setValuesByPost();
890  $tpl->setContent($this->form->getHtml());
891  }
892 
896 
898  {
899  global $lng, $ilCtrl;
900 
901  $this->getPageObject()->setRating(true);
902  $this->getPageObject()->update();
903 
904  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
905  $ilCtrl->redirect($this, "preview");
906  }
907 
909  {
910  global $lng, $ilCtrl;
911 
912  $this->getPageObject()->setRating(false);
913  $this->getPageObject()->update();
914 
915  ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
916  $ilCtrl->redirect($this, "preview");
917  }
918 
919 
920  function observeNoteAction($a_wiki_id, $a_page_id, $a_type, $a_action, $a_note_id)
921  {
922  // #10040 - get note text
923  include_once "Services/Notes/classes/class.ilNote.php";
924  $note = new ilNote($a_note_id);
925  $note = $note->getText();
926 
927  include_once "./Services/Notification/classes/class.ilNotification.php";
928  ilWikiUtil::sendNotification("comment", ilNotification::TYPE_WIKI_PAGE, $this->getWikiRefId(), $a_page_id, $note);
929  }
930 
931  public function updateStatsRating($a_wiki_id, $a_wiki_type, $a_page_id, $a_page_type)
932  {
933  include_once "./Modules/Wiki/classes/class.ilWikiStat.php";
935  }
936 
937 
938  //
939  // advanced meta data
940  //
941 
942  protected function initAdvancedMetaDataForm()
943  {
944  global $ilCtrl, $lng;
945 
946  $page = $this->getWikiPage();
947 
948  include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
949  $form = new ilPropertyFormGUI();
950  $form->setFormAction($ilCtrl->getFormAction($this, "updateAdvancedMetaData"));
951 
952  // :TODO:
953  $form->setTitle($lng->txt("wiki_advmd_block_title").": ".$page->getTitle());
954 
955  include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordGUI.php');
956  $this->record_gui = new ilAdvancedMDRecordGUI(ilAdvancedMDRecordGUI::MODE_EDITOR,'wiki',$page->getWikiId(),'wpg',$page->getId());
957  $this->record_gui->setPropertyForm($form);
958  $this->record_gui->parse();
959 
960  $form->addCommandButton("updateAdvancedMetaData", $lng->txt("save"));
961  $form->addCommandButton("preview", $lng->txt("cancel"));
962 
963  return $form;
964  }
965 
966  function editAdvancedMetaData(ilPropertyFormGUI $a_form = null)
967  {
968  global $ilTabs, $lng, $ilCtrl, $tpl;
969 
970  $ilTabs->clearTargets();
971  $ilTabs->setBackTarget($lng->txt("back"),
972  $ilCtrl->getLinkTarget($this, "preview"));
973 
974  if(!$a_form)
975  {
976  $a_form = $this->initAdvancedMetaDataForm();
977  }
978 
979  $tpl->setContent($a_form->getHTML());
980  }
981 
983  {
984  global $ilCtrl, $lng;
985 
986  $form = $this->initAdvancedMetaDataForm();
987 
988  // needed for proper advanced MD validation
989  $form->checkInput();
990  if(!$this->record_gui->importEditFormPostValues())
991  {
992  $this->editAdvancedMetaData($form); // #16470
993  return false;
994  }
995 
996  if($this->record_gui->writeEditForm())
997  {
998  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
999  }
1000  $ilCtrl->redirect($this, "preview");
1001  }
1002 
1004  {
1005  global $ilCtrl, $lng;
1006 
1007  $this->getPageObject()->hideAdvancedMetadata(true);
1008  $this->getPageObject()->update();
1009 
1010  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
1011  $ilCtrl->redirect($this, "preview");
1012  }
1013 
1015  {
1016  global $ilCtrl, $lng;
1017 
1018  $this->getPageObject()->hideAdvancedMetadata(false);
1019  $this->getPageObject()->update();
1020 
1021  ilUtil::sendSuccess($lng->txt("settings_saved"), true);
1022  $ilCtrl->redirect($this, "preview");
1023  }
1024 
1031  function edit()
1032  {
1033  global $tpl, $lng;
1034 
1035  self::initEditingJS($tpl);
1036 
1037  return parent::edit();
1038  }
1039 
1045  static function initEditingJS(ilTemplate $a_tpl)
1046  {
1047  global $lng;
1048 
1049  $a_tpl->addJavascript("./Modules/Wiki/js/WikiEdit.js");
1050  $a_tpl->addOnLoadCode("il.Wiki.Edit.txt.page_exists = '".$lng->txt("wiki_page_exists")."';");
1051  $a_tpl->addOnLoadCode("il.Wiki.Edit.txt.new_page = '".$lng->txt("wiki_new_page")."';");
1052  }
1053 
1054 
1058  function insertWikiLink()
1059  {
1060  global $lng, $ilCtrl;
1061 
1062  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1063  $form = new ilPropertyFormGUI();
1064  $form->addCommandButton("addWikiLink", $lng->txt("wiki_add_link"));
1065  $form->addCommandButton("searchWikiLink", $lng->txt("search"));
1066 
1067  // Target page
1068  $tp = new ilTextInputGUI($this->lng->txt("wiki_target_page"), "target_page");
1069  $tp->setSize(18);
1070  $tp->setRequired(true);
1071  $tp->setInfo("...");
1072  $tp->setDataSource($ilCtrl->getLinkTarget($this, "insertWikiLinkAC", "", true));
1073  $form->addItem($tp);
1074 
1075  // Link text
1076  $lt = new ilTextInputGUI($this->lng->txt("wiki_link_text"), "link_text");
1077  $lt->setSize(18);
1078  $form->addItem($lt);
1079 
1080  //$form->setTitle($lng->txt("wiki_link"));
1081 
1082  echo $form->getHTML();
1083  exit;
1084  }
1085 
1089  function insertWikiLinkAC()
1090  {
1091  $result = array();
1092 
1093  $term = $_GET["term"];
1094 
1095  // if page exists, make it first entry
1096  if (ilWikiPage::_wikiPageExists($this->getPageObject()->getParentId(), $term))
1097  {
1098  $entry = new stdClass();
1099  $entry->value = $term;
1100  $entry->label = $term;
1101  $result[] = $entry;
1102  }
1103 
1104  $res = ilWikiPage::getPagesForSearch($this->getPageObject()->getParentId(), $term);
1105 
1106  $cnt = 0;
1107  foreach ($res as $r)
1108  {
1109  if ($result[0]->value == $r)
1110  {
1111  continue;
1112  }
1113  if ($cnt++ > 19)
1114  {
1115  continue;
1116  }
1117  $entry = new stdClass();
1118  $entry->value = $r;
1119  $entry->label = $r;
1120  $result[] = $entry;
1121  }
1122 
1123  include_once './Services/JSON/classes/class.ilJsonUtil.php';
1125  exit;
1126  }
1127 
1131  function searchWikiLinkAC()
1132  {
1133  global $lng;
1134 
1135  $lng->loadLanguageModule("wiki");
1136 
1137  $tpl = new ilTemplate("tpl.wiki_ac_search_result.html", true, true, "Modules/Wiki");
1138  $term = trim($_GET["term"]);
1139 
1140  $pages = ilObjWiki::_performSearch($this->getPageObject()->getParentId(), $term);
1141 
1142  $found = array();
1143  foreach ($pages as $page)
1144  {
1145  $found[] = array("page_id" => $page["page_id"], "title" => ilWikiPage::lookupTitle($page["page_id"]));
1146  }
1147 
1148  // sort if all pages are listed
1149  if ($term == "")
1150  {
1151  $found = ilUtil::sortArray($found, "title", "asc");
1152  }
1153 
1154  foreach ($found as $f)
1155  {
1156  $tpl->setCurrentBlock("item");
1157  $tpl->setVariable("WIKI_TITLE", $f["title"]);
1158  $tpl->parseCurrentBlock();
1159  }
1160 
1161  if (count($pages) == 0)
1162  {
1163  $tpl->setVariable("INFOTEXT", str_replace("$1", $term, $lng->txt("wiki_no_page_found")));
1164  }
1165  else if ($term == '')
1166  {
1167  $tpl->setVariable("INFOTEXT", $lng->txt("wiki_no_search_term"), $term);
1168  }
1169  else
1170  {
1171  $tpl->setVariable("INFOTEXT", str_replace("$1", $term, $lng->txt("wiki_pages_found")));
1172  }
1173 
1174  $tpl->setVariable("TXT_BACK", $lng->txt("back"));
1175  echo $tpl->get();
1176  exit;
1177  }
1178 }
1179 
1180 ?>
static renderSideBlock($a_wpg_id, $a_wiki_ref_id, $a_wp=null)
Side column.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
& executeCommand()
execute command
This class represents an option in a radio group.
static lookupTitle($a_page_id)
Checks whether a page with given title exists.
$lg
Definition: example_018.php:62
static hasNotification($type, $user_id, $id)
Check notification status for object and user.
exit
Definition: login.php:54
static _lookupRatingOverall($a_wiki_id)
Lookup whether rating is activated for whole object.
$_POST['username']
Definition: cron.php:12
getPageObject()
Get Page Object.
addHeaderAction($a_redraw=false)
static check($a_perm, $a_ref_id, $a_cmd="")
Check permission.
const IL_CAL_DATETIME
$result
setTemplateOutput($a_output=true)
This class represents a property form user interface.
setScreenIdComponent()
Set screen id component.
setPropertyForm($form)
set property form object
$_GET["client_id"]
$tbl
Definition: example_048.php:81
Wiki statistics GUI class.
Class ilPageObjectGUI.
$cmd
Definition: sahs_server.php:35
static getGUIForTitle($a_wiki_id, $a_title, $a_old_nr=0, $a_wiki_ref_id=0)
Get wiki page gui for id and title.
TableGUI class for wiki pages table.
renamePage()
Rename page.
unblockWikiPage()
Unblock.
const EVENT_PAGE_READ
initRenameForm()
Init renaming form.
observeNoteAction($a_wiki_id, $a_page_id, $a_type, $a_action, $a_note_id)
setPageObject($a_pg_obj)
Set Page Object.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
$w
updateStatsRating($a_wiki_id, $a_wiki_type, $a_page_id, $a_page_type)
static getPageIdForTitle($a_wiki_id, $a_title)
Get wiki page object for id and title.
getSyntaxStylePath()
get syntax style path
postOutputProcessing($a_output)
Finalizing output processing.
Note class.
global $ilCtrl
Definition: ilias.php:18
static getPagesForSearch($a_wiki_id, $a_term)
Get pages for search.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _getInstance($a_usr_id)
Get singleton instance.
static _performSearch($a_wiki_id, $a_searchterm)
Search in Wiki.
static getNamePresentation($a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false)
Default behaviour is:
static sendNotification($a_action, $a_type, $a_wiki_ref_id, $a_page_id, $a_comment=null)
$r
Definition: example_031.php:79
printViewOrderList($a_pdf_export=false)
This class represents a property in a property form.
static _getPageIdForWikiTitle($a_wiki_id, $a_title)
Checks whether a page with given title exists.
static encode($mixed, $suppress_native=false)
static getUserCount($a_rep_obj_id, $a_obj_id, $a_type)
How many users have attached a note/comment to a given object?
Class ilRatingGUI.
static makeUrlTitle($a_par)
Set page parameter for Url Embedding.
renameWikiPage()
Rename wiki page form.
printViewSelection()
Print view selection.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static initEditingJS(ilTemplate $a_tpl)
Init wiki editing js.
static _lookupObjId($a_id)
special template class to simplify handling of ITX/PEAR
deleteWikiPageConfirmationScreen()
Delete wiki page confirmation screen.
static setNotification($type, $user_id, $id, $status=true)
Set notification status for object and user.
setSize($a_size)
Set Size.
This class represents a text property in a property form.
static formatDate(ilDateTime $date)
Format a date public.
Class ilWikiPage GUI class.
Date and time handling
setPresentationTitle($a_title="")
const EVENT_PAGE_RATING
whatLinksHere()
All links to a specific page.
setMaxLength($a_maxlength)
Set Max Length.
setRenderPageContainer($a_val)
Set render page container.
addOnLoadCode($a_code, $a_batch=2)
Add on load code.
getAbstractOnly()
Get abstract only.
static getPageContributors($a_page_id)
Get all contributors of wiki.
static handleEvent($a_event, ilWikiPage $a_page_obj, $a_user_id=null, array $a_additional_data=null)
Handle wiki page event.
__construct($a_id=0, $a_old_nr=0, $a_wiki_ref_id=0)
Constructor.
static makeDbTitle($a_par)
Handle page GET parameter.
insertWikiLink()
Returns form to insert a wiki link per ajax.
preview()
View wiki page.
activateWikiPageRating()
Rating /.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
getWikiPage()
Get Wiki Page Object.
_recordReadEvent($a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
static _wikiPageExists($a_wiki_id, $a_title)
Check whether page exists for wiki or not.
const IL_WIKI_WHAT_LINKS_HERE
const IL_PAGE_PRESENTATION
initPrintViewSelectionForm()
Init print view selection form.
insertWikiLinkAC()
Auto complete for insert wiki link.
setWikiPage($a_wikipage)
Set Wiki Page Object.
global $ilUser
Definition: imgupload.php:15
This class represents a (nested) list of checkboxes (could be extended for radio items, too)
global $ilSetting
Definition: privfeed.php:40
editAdvancedMetaData(ilPropertyFormGUI $a_form=null)
static highlight($a_dom_node_id, $a_text, $a_tpl=null)
Searches for all occurences of a text (case-insensitive) and highlights it.
global $ilDB
setWikiRefId($a_ref_id)
cancelWikiPageDeletion()
Cancel wiki page deletion.
static getLinksToPage($a_wiki_id, $a_page_id)
Get links to a page.
static replaceInternalLinks($s, $a_wiki_id, $a_offline=false)
This one is based on Mediawiki Parser->replaceInternalLinks since we display images in another way...
getNotesHTML($a_content_object=null, $a_enable_private_notes=true, $a_enable_public_notes=false, $a_enable_notes_deletion=false, $a_callback=null)
Get html for public and/or private notes.
confirmWikiPageDeletion()
Delete the wiki page.
TableGUI class for ordering pages to be printed/exported.
static getAllPages($a_wiki_id)
Get all pages of wiki.
Class ilCommonActionDispatcherGUI.
getTabs($a_activate="")
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static _lookupPublicNotes($a_wiki_id)
Lookup whether public notes are activated.
searchWikiLinkAC()
Search wiki link list.
setOutputMode($a_mode=IL_PAGE_PRESENTATION)
Set Output Mode.
Confirmation screen class.