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
4include_once("./Services/COPage/classes/class.ilPageObjectGUI.php");
5include_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
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";
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
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(),
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
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
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
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
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
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
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
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?>
$result
$_GET["client_id"]
const IL_CAL_DATETIME
const IL_PAGE_PRESENTATION
const IL_WIKI_WHAT_LINKS_HERE
_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.
getSyntaxStylePath()
get syntax style path
static renderSideBlock($a_wpg_id, $a_wiki_ref_id, $a_wp=null)
Side column.
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.
static _lookupObjId($a_id)
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 /.
& executeCommand()
execute command
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)
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.
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 getAllPages($a_wiki_id)
Get all pages 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 getPageContributors($a_page_id)
Get all contributors of wiki.
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,...
$_POST['username']
Definition: cron.php:12
$w
$lg
Definition: example_018.php:62
$r
Definition: example_031.php:79
$tbl
Definition: example_048.php:81
global $ilCtrl
Definition: ilias.php:18
exit
Definition: login.php:54
global $ilSetting
Definition: privfeed.php:40
$cmd
Definition: sahs_server.php:35
global $ilDB
global $ilUser
Definition: imgupload.php:15