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