ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
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
20{
24 function __construct($a_id = 0, $a_old_nr = 0, $a_wiki_ref_id = 0)
25 {
26 global $tpl;
27
28 // needed for notifications
29 $this->setWikiRefId($a_wiki_ref_id);
30
31 parent::__construct("wpg", $a_id, $a_old_nr);
32 $this->getPageObject()->setWikiRefId($this->getWikiRefId());
33
34 // content style
35 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
36
37 $tpl->setCurrentBlock("SyntaxStyle");
38 $tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
40 $tpl->parseCurrentBlock();
41 }
42
50 {
51 global $ilHelp;
52
53 $ilHelp->setScreenIdComponent("copgwpg");
54 }
55
56 function setWikiRefId($a_ref_id)
57 {
58 $this->wiki_ref_id = $a_ref_id;
59 }
60
61 function getWikiRefId()
62 {
63 return $this->wiki_ref_id;
64 }
65
69 function &executeCommand()
70 {
71 global $ilCtrl, $ilTabs, $ilUser, $ilAccess;
72
73 $next_class = $this->ctrl->getNextClass($this);
74 $cmd = $this->ctrl->getCmd();
75
76 switch($next_class)
77 {
78 case "ilnotegui":
79 $this->getTabs();
80 $ilTabs->setTabActive("pg");
81 return $this->preview();
82 break;
83
84 case "ilratinggui":
85 // for rating side block
86 include_once("./Services/Rating/classes/class.ilRatingGUI.php");
87 $rating_gui = new ilRatingGUI();
88 $rating_gui->setObject($this->getPageObject()->getParentId(), "wiki",
89 $this->getPageObject()->getId(), "wpg");
90 $rating_gui->setUpdateCallback(array($this, "updateStatsRating"));
91 $this->ctrl->forwardCommand($rating_gui);
92 $ilCtrl->redirect($this, "preview");
93 break;
94
95 case "ilpageobjectgui":
96 die("Deprecated. Wikipage gui forwarding to ilpageobject");
97 return;
98
99 case "ilcommonactiondispatchergui":
100 include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
102 $gui->enableCommentsSettings(false);
103 $gui->setRatingCallback($this, "preview");
104 $this->ctrl->forwardCommand($gui);
105 break;
106
107 case "ilwikistatgui":
108 if($ilAccess->checkAccess("statistics_read", "", $this->wiki_ref_id))
109 {
110 $this->tabs_gui->clearTargets(); // see ilObjWikiGUI::getTabs()
111 $this->getTabs("statistics");
112
113 include_once "Modules/Wiki/classes/class.ilWikiStatGUI.php";
114 $gui = new ilWikiStatGUI($this->getPageObject()->getParentId(),
115 $this->getPageObject()->getId());
116 $this->ctrl->forwardCommand($gui);
117 }
118 break;
119
120 default:
121
122 if (strtolower($ilCtrl->getNextClass()) == "ilpageeditorgui")
123 {
124 self::initEditingJS($this->tpl);
125 }
126
127 if($_GET["ntf"])
128 {
129 include_once "./Services/Notification/classes/class.ilNotification.php";
130 switch($_GET["ntf"])
131 {
132 case 1:
133 ilNotification::setNotification(ilNotification::TYPE_WIKI, $ilUser->getId(), $this->getPageObject()->getParentId(), false);
134 break;
135
136 case 2:
137 // remove all page notifications here?
138 ilNotification::setNotification(ilNotification::TYPE_WIKI, $ilUser->getId(), $this->getPageObject()->getParentId(), true);
139 break;
140
141 case 3:
142 ilNotification::setNotification(ilNotification::TYPE_WIKI_PAGE, $ilUser->getId(), $this->getPageObject()->getId(), false);
143 break;
144
145 case 4:
146 ilNotification::setNotification(ilNotification::TYPE_WIKI_PAGE, $ilUser->getId(), $this->getPageObject()->getId(), true);
147 break;
148 }
149 $ilCtrl->redirect($this, "preview");
150 }
151
152 $this->setPresentationTitle($this->getWikiPage()->getTitle());
153 return parent::executeCommand();
154 }
155 }
156
162 function setWikiPage($a_wikipage)
163 {
164 $this->setPageObject($a_wikipage);
165 }
166
172 function getWikiPage()
173 {
174 return $this->getPageObject();
175 }
176
180 static function getGUIForTitle($a_wiki_id, $a_title, $a_old_nr = 0, $a_wiki_ref_id = 0)
181 {
182 global $ilDB;
183
184 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
185 $id = ilWikiPage::getPageIdForTitle($a_wiki_id, $a_title);
186 $page_gui = new ilWikiPageGUI($id, $a_old_nr, $a_wiki_ref_id);
187
188 return $page_gui;
189 }
190
191 function setSideBlock()
192 {
194 $this->wiki_ref_id, $this->getWikiPage());
195 }
196
197 function addHeaderAction($a_redraw = false)
198 {
199 global $ilUser, $ilAccess;
200
201 $wiki_id = $this->getPageObject()->getParentId();
202 $page_id = $this->getPageObject()->getId();
203
204 include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
206 $ilAccess, "wiki", $_GET["ref_id"], $wiki_id);
207 $dispatcher->setSubObject("wpg", $page_id);
208
209 include_once "Services/Object/classes/class.ilObjectListGUI.php";
210 ilObjectListGUI::prepareJSLinks($this->ctrl->getLinkTarget($this, "redrawHeaderAction", "", true),
211 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
212 $this->ctrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false));
213
214 $lg = $dispatcher->initHeaderAction();
215 $lg->enableNotes(true);
216 $lg->enableComments(ilObjWiki::_lookupPublicNotes($wiki_id), false);
217
218 // rating
220 {
221 $lg->enableRating(true, $this->lng->txt("wiki_rate_overall"),
222 false,
223 // so ilCtrl does not use the shortcut via ilWikiGUI
224 array("ilcommonactiondispatchergui", "ilratinggui"));
225 }
226
227 // notification
228 if ($ilUser->getId() != ANONYMOUS_USER_ID)
229 {
230 include_once "./Services/Notification/classes/class.ilNotification.php";
232 {
233 $this->ctrl->setParameter($this, "ntf", 1);
234 $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_deactivate_wiki");
235
236 $lg->addHeaderIcon("not_icon",
237 ilUtil::getImagePath("notification_on.svg"),
238 $this->lng->txt("wiki_notification_activated"));
239 }
240 else
241 {
242 $this->ctrl->setParameter($this, "ntf", 2);
243 $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_activate_wiki");
244
246 {
247 $this->ctrl->setParameter($this, "ntf", 3);
248 $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_deactivate_page");
249
250 $lg->addHeaderIcon("not_icon",
251 ilUtil::getImagePath("notification_on.svg"),
252 $this->lng->txt("wiki_page_notification_activated"));
253 }
254 else
255 {
256 $this->ctrl->setParameter($this, "ntf", 4);
257 $lg->addCustomCommand($this->ctrl->getLinkTarget($this), "wiki_notification_activate_page");
258
259 $lg->addHeaderIcon("not_icon",
260 ilUtil::getImagePath("notification_off.svg"),
261 $this->lng->txt("wiki_notification_deactivated"));
262 }
263 }
264 $this->ctrl->setParameter($this, "ntf", "");
265 }
266
267 if(!$a_redraw)
268 {
269 $this->tpl->setHeaderActionMenu($lg->getHeaderAction());
270 }
271 else
272 {
273 // we need to add onload code manually (rating, comments, etc.)
274 return $lg->getHeaderAction().
275 $this->tpl->getOnLoadCodeForAsynch();
276 }
277 }
278
280 {
281 echo $this->addHeaderAction(true);
282 exit;
283 }
284
288 function preview()
289 {
290 global $ilCtrl, $ilAccess, $lng, $tpl, $ilUser, $ilSetting, $ilToolbar;
291
292 // block/unblock
293 if ($this->getPageObject()->getBlocked())
294 {
295 ilUtil::sendInfo($lng->txt("wiki_page_status_blocked"));
296 }
297
298 $this->increaseViewCount();
299
300 $this->addHeaderAction();
301
302 // content
303 $this->setSideBlock();
304
305 $wtpl = new ilTemplate("tpl.wiki_page_view_main_column.html",
306 true, true, "Modules/Wiki");
307
308 $callback = array($this, "observeNoteAction");
309
310 // notes
311 if (!$ilSetting->get("disable_comments") &&
312 ilObjWiki::_lookupPublicNotes($this->getPageObject()->getParentId()))
313 {
314 $may_delete = ($ilSetting->get("comments_del_tutor", 1) &&
315 $ilAccess->checkAccess("write", "", $_GET["ref_id"]));
316 $wtpl->setVariable("NOTES", $this->getNotesHTML($this->getPageObject(),
317 true, ilObjWiki::_lookupPublicNotes($this->getPageObject()->getParentId()),
318 $may_delete, $callback));
319 }
320
321 // permanent link
322 $append = ($_GET["page"] != "")
323 ? "_".ilWikiUtil::makeUrlTitle($_GET["page"])
324 : "";
325
326 // see #13804
327 if ($_GET["page"] != "")
328 {
329 $tpl->setPermanentLink("wiki", "", "wpage_".$this->getPageObject()->getId()."_".$_GET["ref_id"]);
330 }
331 else
332 {
333 $tpl->setPermanentLink("wiki", $_GET["ref_id"]);
334 }
335
336
337
338 // page content
340 $this->setRenderPageContainer(true);
341 $wtpl->setVariable("PAGE", $this->showPage());
342
343 $tpl->setLoginTargetPar("wiki_".$_GET["ref_id"].$append);
344
345 // last edited info
346 include_once("./Services/User/classes/class.ilUserUtil.php");
347 $wtpl->setVariable("LAST_EDITED_INFO",
348 $lng->txt("wiki_last_edited").": ".
350 new ilDateTime($this->getPageObject()->getLastChange(),IL_CAL_DATETIME)).", ".
351 ilUserUtil::getNamePresentation($this->getPageObject()->getLastChangeUser(),
352 false, true, $ilCtrl->getLinkTarget($this, "preview")));
353
354 $tpl->setLoginTargetPar("wiki_".$_GET["ref_id"].$append);
355
356 //highlighting
357 if ($_GET["srcstring"] != "")
358 {
359 include_once './Services/Search/classes/class.ilUserSearchCache.php';
360 $cache = ilUserSearchCache::_getInstance($ilUser->getId());
361 $cache->switchSearchType(ilUserSearchCache::LAST_QUERY);
362 $search_string = $cache->getQuery();
363
364 // advanced search?
365 if(is_array($search_string))
366 {
367 $search_string = $search_string["lom_content"];
368 }
369
370 include_once("./Services/UIComponent/TextHighlighter/classes/class.ilTextHighlighterGUI.php");
371 include_once("./Services/Search/classes/class.ilQueryParser.php");
372 $p = new ilQueryParser($search_string);
373 $p->parse();
374
375 $words = $p->getQuotedWords();
376 if (is_array($words))
377 {
378 foreach ($words as $w)
379 {
380 ilTextHighlighterGUI::highlight("ilCOPageContent", $w, $tpl);
381 }
382 }
383 $this->fill_on_load_code = true;
384 }
385
386 return $wtpl->get();
387 }
388
389 function showPage()
390 {
391 global $tpl, $ilCtrl;
392
393 // content style
394/* include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
395 $tpl->setCurrentBlock("ContentStyle");
396 $tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
397 ilObjStyleSheet::getContentStylePath(0));
398 $tpl->parseCurrentBlock();
399*/
400 $this->setTemplateOutput(false);
401
402 if(!$this->getAbstractOnly())
403 {
404 $this->setPresentationTitle($this->getWikiPage()->getTitle());
405
406 // wiki stats clean up
407 // $this->increaseViewCount();
408 }
409
410 return parent::showPage();
411 }
412
413 protected function increaseViewCount()
414 {
415 global $ilUser;
416
417 $this->getWikiPage()->increaseViewCnt();
418
419 // enable object statistics
420 require_once('Services/Tracking/classes/class.ilChangeEvent.php');
422 $this->getWikiPage()->getWikiId(), $ilUser->getId());
423
424 include_once "./Modules/Wiki/classes/class.ilWikiStat.php";
426 }
427
431 function postOutputProcessing($a_output)
432 {
433 global $ilCtrl;
434
435//echo htmlentities($a_output);
436 include_once("./Modules/Wiki/classes/class.ilWikiUtil.php");
437
438 $ilCtrl->setParameterByClass("ilobjwikigui", "from_page", ilWikiUtil::makeUrlTitle($_GET["page"]));
439 $output = ilWikiUtil::replaceInternalLinks($a_output,
440 $this->getWikiPage()->getWikiId(),
441 ($this->getOutputMode() == "offline"));
442 $ilCtrl->setParameterByClass("ilobjwikigui", "from_page", $_GET["from_page"]);
443
444 return $output;
445 }
446
450 function whatLinksHere()
451 {
452 global $tpl;
453
454 include_once("./Modules/Wiki/classes/class.ilWikiPagesTableGUI.php");
455
456 $this->setSideBlock($_GET["wpg_id"]);
457 $table_gui = new ilWikiPagesTableGUI($this, "whatLinksHere",
458 $this->getWikiPage()->getWikiId(), IL_WIKI_WHAT_LINKS_HERE, $_GET["wpg_id"]);
459
460 $tpl->setContent($table_gui->getHTML());
461 }
462
463 function getTabs($a_activate = "")
464 {
465 global $ilTabs, $ilCtrl, $ilAccess;
466
467 parent::getTabs($a_activate);
468
469 if($ilAccess->checkAccess("statistics_read", "", $_GET["ref_id"]))
470 {
471 $ilTabs->addTarget("statistics",
472 $this->ctrl->getLinkTargetByClass(array("ilwikipagegui", "ilwikistatgui"),
473 "initial"), "", "ilwikistatgui");
474 }
475
476 $ilCtrl->setParameterByClass("ilobjwikigui", "wpg_id",
477 ilWikiPage::getPageIdForTitle($this->getPageObject()->getParentId(),
479 $ilCtrl->setParameterByClass("ilobjwikigui", "page", ilWikiUtil::makeUrlTitle($_GET["page"]));
480
481 $ilTabs->addTarget("wiki_what_links_here",
482 $this->ctrl->getLinkTargetByClass("ilwikipagegui",
483 "whatLinksHere"), "whatLinksHere");
484 //$ilTabs->addTarget("wiki_print_view",
485 // $this->ctrl->getLinkTargetByClass("ilobjwikigui",
486 // "printViewSelection"), "printViewSelection");
487 $ilTabs->addTarget("wiki_print_view",
488 $this->ctrl->getLinkTargetByClass("ilwikipagegui",
489 "printViewSelection"), "printViewSelection");
490
491 }
492
497 {
498 global $ilAccess, $tpl, $ilCtrl, $lng;
499
500 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
501 {
502 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
503 $confirmation_gui = new ilConfirmationGUI();
504 $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
505 $confirmation_gui->setHeaderText($lng->txt("wiki_page_deletion_confirmation"));
506 $confirmation_gui->setCancel($lng->txt("cancel"), "cancelWikiPageDeletion");
507 $confirmation_gui->setConfirm($lng->txt("delete"), "confirmWikiPageDeletion");
508
509 $dtpl = new ilTemplate("tpl.wiki_page_deletion_confirmation.html", true,
510 true, "Modules/Wiki");
511
512 $dtpl->setVariable("PAGE_TITLE", $this->getWikiPage()->getTitle());
513
514 // other pages that link to this page
515 $dtpl->setVariable("TXT_OTHER_PAGES", $lng->txt("wiki_other_pages_linking"));
516 $pages = ilWikiPage::getLinksToPage($this->getWikiPage()->getWikiId(),
517 $this->getWikiPage()->getId());
518 if (count($pages) > 0)
519 {
520 foreach($pages as $page)
521 {
522 $dtpl->setCurrentBlock("lpage");
523 $dtpl->setVariable("TXT_LINKING_PAGE", $page["title"]);
524 $dtpl->parseCurrentBlock();
525 }
526 }
527 else
528 {
529 $dtpl->setCurrentBlock("lpage");
530 $dtpl->setVariable("TXT_LINKING_PAGE", "-");
531 $dtpl->parseCurrentBlock();
532 }
533
534 // contributors
535 $dtpl->setVariable("TXT_CONTRIBUTORS", $lng->txt("wiki_contributors"));
536 $contributors = ilWikiPage::getPageContributors($this->getWikiPage()->getId());
537 foreach($contributors as $contributor)
538 {
539 $dtpl->setCurrentBlock("contributor");
540 $dtpl->setVariable("TXT_CONTRIBUTOR",
541 $contributor["lastname"].", ".$contributor["firstname"]);
542 $dtpl->parseCurrentBlock();
543 }
544
545 // notes/comments
546 include_once("./Services/Notes/classes/class.ilNote.php");
547 $cnt_note_users = ilNote::getUserCount($this->getPageObject()->getParentId(),
548 $this->getPageObject()->getId(), "wpg");
549 $dtpl->setVariable("TXT_NUMBER_USERS_NOTES_OR_COMMENTS",
550 $lng->txt("wiki_number_users_notes_or_comments"));
551 $dtpl->setVariable("TXT_NR_NOTES_COMMENTS", $cnt_note_users);
552
553 $confirmation_gui->addItem("", "", $dtpl->get());
554
555 $tpl->setContent($confirmation_gui->getHTML());
556 }
557 }
558
563 {
564 global $lng, $ilCtrl;
565
566 $ilCtrl->redirect($this, "preview");
567
568 }
569
574 {
575 global $ilAccess, $tpl, $ilCtrl, $lng;
576
577 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
578 {
579 $this->getPageObject()->delete();
580
581 ilUtil::sendSuccess($lng->txt("wiki_page_deleted"), true);
582 }
583
584 $ilCtrl->redirectByClass("ilobjwikigui", "allPages");
585 }
586
590
598 {
599 global $ilUser, $lng, $ilToolbar, $ilCtrl, $tpl;
600
601 /*$ilToolbar->setFormAction($ilCtrl->getFormActionByClass("ilobjwikigui", "printView"),
602 false, "print_view");
603 $ilToolbar->addFormButton($lng->txt("cont_show_print_view"), "printView");
604 $ilToolbar->setCloseFormTag(false);*/
605
607
608 $tpl->setContent($this->form->getHTML());
609 }
610
615 {
616 global $lng, $ilCtrl;
617
619
620 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
621 $this->form = new ilPropertyFormGUI();
622
623 // because of PDF export
624 $this->form->setPreventDoubleSubmission(false);
625
626//var_dump($pages);
627 // selection type
628 $radg = new ilRadioGroupInputGUI($lng->txt("cont_selection"), "sel_type");
629 $radg->setValue("page");
630 $op1 = new ilRadioOption($lng->txt("cont_current_page"), "page");
631 $radg->addOption($op1);
632 $op2 = new ilRadioOption($lng->txt("wiki_whole_wiki")
633 ." (".$lng->txt("wiki_pages").": ".count($pages).")", "wiki");
634 $radg->addOption($op2);
635 $op3= new ilRadioOption($lng->txt("wiki_selected_pages"), "selection");
636 $radg->addOption($op3);
637
638 include_once("./Services/Form/classes/class.ilNestedListInputGUI.php");
639 $nl = new ilNestedListInputGUI("", "obj_id");
640 $op3->addSubItem($nl);
641
642 foreach ($pages as $p)
643 {
644 $nl->addListNode($p["id"], $p["title"], 0, false, false,
645 ilUtil::getImagePath("icon_pg.svg"), $lng->txt("wiki_page"));
646 }
647
648 $this->form->addItem($radg);
649
650 $this->form->addCommandButton("printViewOrder", $lng->txt("wiki_show_print_view"));
651 $this->form->addCommandButton("pdfExportOrder", $lng->txt("wiki_show_pdf_export"));
652 //$this->form->setOpenTag(false);
653 //$this->form->setCloseTag(false);
654
655 $this->form->setTitle($lng->txt("cont_print_selection"));
656 $this->form->setFormAction($ilCtrl->getFormAction($this, "printViewOrder"));
657 }
658
659 public function printViewOrder()
660 {
661 $this->printViewOrderList();
662 }
663
664 public function pdfExportOrder()
665 {
666 $this->printViewOrderList(true);
667 }
668
669 protected function printViewOrderList($a_pdf_export = false)
670 {
671 global $ilTabs;
672
673 $pg_ids = $all_pages = array();
674
675 // coming from type selection
676 if(!is_array($_POST["wordr"]))
677 {
678 switch(trim($_POST["sel_type"]))
679 {
680 case "wiki":
681 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
682 $all_pages = ilWikiPage::getAllPages($this->getPageObject()->getWikiId());
683 foreach ($all_pages as $p)
684 {
685 $pg_ids[] = $p["id"];
686 }
687 break;
688
689 case "selection":
690 if (is_array($_POST["obj_id"]))
691 {
692 $pg_ids = $_POST["obj_id"];
693 }
694 else
695 {
696 $pg_ids[] = $_GET["wpg_id"];
697 }
698 if(sizeof($pg_ids) > 1)
699 {
700 break;
701 }
702 else
703 {
704 $_GET["wpg_id"] = array_pop($pg_ids);
705 }
706 // fallthrough
707
708 // no order needed for single page
709 default:
710 //case "page":
711 $this->ctrl->setParameterByClass("ilObjWikiGUI", "wpg_id", $_GET["wpg_id"]);
712 if($a_pdf_export)
713 {
714 $this->ctrl->redirectByClass("ilObjWikiGUI", "pdfExport");
715 }
716 else
717 {
718 $this->ctrl->redirectByClass("ilObjWikiGUI", "printView");
719 }
720 break;
721 }
722
723 if($a_pdf_export)
724 {
725 $this->ctrl->setParameter($this, "pexp", 1);
726 }
727 }
728 // refresh sorting
729 else
730 {
731 $a_pdf_export = (bool)$_GET["pexp"];
732
733 asort($_POST["wordr"]);
734 $pg_ids = array_keys($_POST["wordr"]);
735 }
736
737 $ilTabs->clearTargets();
738 $ilTabs->setBackTarget($this->lng->txt("back"),
739 $this->ctrl->getLinkTarget($this, "preview"));
740
741 if(!sizeof($all_pages))
742 {
743 include_once("./Modules/Wiki/classes/class.ilWikiPage.php");
744 $all_pages = ilWikiPage::getAllPages($this->getPageObject()->getWikiId());
745 }
746
747 include_once "Modules/Wiki/classes/class.ilWikiExportOrderTableGUI.php";
748 $tbl = new ilWikiExportOrderTableGUI($this, "printViewOrderList", $a_pdf_export, $all_pages, $pg_ids);
749 $this->tpl->setContent($tbl->getHTML());
750 }
751
752
756
760 function blockWikiPage()
761 {
762 global $ilAccess, $tpl, $ilCtrl, $lng;
763
764 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
765 {
766 $this->getPageObject()->setBlocked(true);
767 $this->getPageObject()->update();
768
769 ilUtil::sendSuccess($lng->txt("wiki_page_blocked"), true);
770 }
771
772 $ilCtrl->redirect($this, "preview");
773 }
774
779 {
780 global $ilAccess, $tpl, $ilCtrl, $lng;
781
782 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
783 {
784 $this->getPageObject()->setBlocked(false);
785 $this->getPageObject()->update();
786
787 ilUtil::sendSuccess($lng->txt("wiki_page_unblocked"), true);
788 }
789
790 $ilCtrl->redirect($this, "preview");
791 }
792
793
797
801 function renameWikiPage()
802 {
803 global $ilAccess, $tpl, $ilCtrl, $lng;
804
805 if (($ilAccess->checkAccess("edit_content", "", $_GET["ref_id"]) && !$this->getPageObject()->getBlocked())
806 || $ilAccess->checkAccess("write", "", $_GET["ref_id"]))
807 {
808 $this->initRenameForm();
809 $tpl->setContent($this->form->getHTML());
810 }
811 }
812
818 protected function initRenameForm()
819 {
820 global $lng, $ilCtrl;
821
822 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
823 $this->form = new ilPropertyFormGUI();
824
825 // new name
826 $ti = new ilTextInputGUI($lng->txt("wiki_new_page_name"), "new_page_name");
827 $ti->setMaxLength(200);
828 $ti->setSize(50);
829 $ti->setValue($this->getPageObject()->getTitle());
830 $ti->setRequired(true);
831 $this->form->addItem($ti);
832
833 $this->form->addCommandButton("renamePage", $lng->txt("wiki_rename"));
834 $this->form->addCommandButton("preview", $lng->txt("cancel"));
835
836 $this->form->setTitle($lng->txt("wiki_rename_page"));
837 $this->form->setFormAction($ilCtrl->getFormAction($this));
838 }
839
843 public function renamePage()
844 {
845 global $tpl, $lng, $ilCtrl, $ilAccess;
846
847 $this->initRenameForm();
848 if ($this->form->checkInput())
849 {
850 if (($ilAccess->checkAccess("edit_content", "", $_GET["ref_id"]) && !$this->getPageObject()->getBlocked())
851 || $ilAccess->checkAccess("write", "", $_GET["ref_id"]))
852 {
853 $new_name = $this->form->getInput("new_page_name");
854
855 $page_title = ilWikiUtil::makeDbTitle($new_name);
856 $pg_id = ilWikiPage::_getPageIdForWikiTitle($this->getPageObject()->getWikiId(), $page_title);
857
858 // we might get the same page id back here, if the page
859 // name only differs in diacritics
860 // see bug http://www.ilias.de/mantis/view.php?id=11226
861 if ($pg_id > 0 && $pg_id != $this->getPageObject()->getId())
862 {
863 ilUtil::sendFailure($lng->txt("wiki_page_already_exists"));
864 }
865 else
866 {
867 $new_name = $this->getPageObject()->rename($new_name);
868 $ilCtrl->setParameterByClass("ilobjwikigui", "page", ilWikiUtil::makeUrlTitle($new_name));
869 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
870 $ilCtrl->redirect($this, "preview");
871 }
872 }
873 }
874
875 $this->form->setValuesByPost();
876 $tpl->setContent($this->form->getHtml());
877 }
878
882
884 {
885 global $lng, $ilCtrl;
886
887 $this->getPageObject()->setRating(true);
888 $this->getPageObject()->update();
889
890 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
891 $ilCtrl->redirect($this, "preview");
892 }
893
895 {
896 global $lng, $ilCtrl;
897
898 $this->getPageObject()->setRating(false);
899 $this->getPageObject()->update();
900
901 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
902 $ilCtrl->redirect($this, "preview");
903 }
904
905
906 function observeNoteAction($a_wiki_id, $a_page_id, $a_type, $a_action, $a_note_id)
907 {
908 // #10040 - get note text
909 include_once "Services/Notes/classes/class.ilNote.php";
910 $note = new ilNote($a_note_id);
911 $note = $note->getText();
912
913 include_once "./Services/Notification/classes/class.ilNotification.php";
914 ilWikiUtil::sendNotification("comment", ilNotification::TYPE_WIKI_PAGE, $this->getWikiRefId(), $a_page_id, $note);
915 }
916
917 public function updateStatsRating($a_wiki_id, $a_wiki_type, $a_page_id, $a_page_type)
918 {
919 include_once "./Modules/Wiki/classes/class.ilWikiStat.php";
921 }
922
923
924 //
925 // advanced meta data
926 //
927
928 protected function initAdvancedMetaDataForm()
929 {
930 global $ilCtrl, $lng;
931
932 $page = $this->getWikiPage();
933
934 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
935 $form = new ilPropertyFormGUI();
936 $form->setFormAction($ilCtrl->getFormAction($this, "updateAdvancedMetaData"));
937
938 // :TODO:
939 $form->setTitle($lng->txt("wiki_advmd_block_title").": ".$page->getTitle());
940
941 include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDRecordGUI.php');
942 $this->record_gui = new ilAdvancedMDRecordGUI(ilAdvancedMDRecordGUI::MODE_EDITOR,'wiki',$page->getWikiId(),'wpg',$page->getId());
943 $this->record_gui->setPropertyForm($form);
944 $this->record_gui->setSelectedOnly(true); // #14912
945 $this->record_gui->parse();
946
947 $form->addCommandButton("updateAdvancedMetaData", $lng->txt("save"));
948 $form->addCommandButton("preview", $lng->txt("cancel"));
949
950 return $form;
951 }
952
954 {
955 global $ilTabs, $lng, $ilCtrl, $tpl;
956
957 $ilTabs->clearTargets();
958 $ilTabs->setBackTarget($lng->txt("back"),
959 $ilCtrl->getLinkTarget($this, "preview"));
960
961 if(!$a_form)
962 {
963 $a_form = $this->initAdvancedMetaDataForm();
964 }
965
966 $tpl->setContent($a_form->getHTML());
967 }
968
970 {
971 global $ilCtrl, $lng;
972
973 $form = $this->initAdvancedMetaDataForm();
974
975 // needed for proper advanced MD validation
976 $form->checkInput();
977 if(!$this->record_gui->importEditFormPostValues())
978 {
979 $this->editInfoObject($form);
980 return false;
981 }
982
983 if($this->record_gui->writeEditForm())
984 {
985 ilUtil::sendSuccess($lng->txt("settings_saved"), true);
986 }
987 $ilCtrl->redirect($this, "preview");
988 }
989
991 {
992 global $ilCtrl, $lng;
993
994 $this->getPageObject()->hideAdvancedMetadata(true);
995 $this->getPageObject()->update();
996
997 ilUtil::sendSuccess($lng->txt("settings_saved"), true);
998 $ilCtrl->redirect($this, "preview");
999 }
1000
1002 {
1003 global $ilCtrl, $lng;
1004
1005 $this->getPageObject()->hideAdvancedMetadata(false);
1006 $this->getPageObject()->update();
1007
1008 ilUtil::sendSuccess($lng->txt("settings_saved"), true);
1009 $ilCtrl->redirect($this, "preview");
1010 }
1011
1018 function edit()
1019 {
1020 global $tpl, $lng;
1021
1023
1024 return parent::edit();
1025 }
1026
1032 static function initEditingJS(ilTemplate $a_tpl)
1033 {
1034 global $lng;
1035
1036 $a_tpl->addJavascript("./Modules/Wiki/js/WikiEdit.js");
1037 $a_tpl->addOnLoadCode("il.Wiki.Edit.txt.page_exists = '".$lng->txt("wiki_page_exists")."';");
1038 $a_tpl->addOnLoadCode("il.Wiki.Edit.txt.new_page = '".$lng->txt("wiki_new_page")."';");
1039 }
1040
1041
1046 {
1047 global $lng, $ilCtrl;
1048
1049 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1050 $form = new ilPropertyFormGUI();
1051 $form->addCommandButton("addWikiLink", $lng->txt("wiki_add_link"));
1052 $form->addCommandButton("searchWikiLink", $lng->txt("search"));
1053
1054 // Target page
1055 $tp = new ilTextInputGUI($this->lng->txt("wiki_target_page"), "target_page");
1056 $tp->setSize(18);
1057 $tp->setRequired(true);
1058 $tp->setInfo("...");
1059 $tp->setDataSource($ilCtrl->getLinkTarget($this, "insertWikiLinkAC", "", true));
1060 $form->addItem($tp);
1061
1062 // Link text
1063 $lt = new ilTextInputGUI($this->lng->txt("wiki_link_text"), "link_text");
1064 $lt->setSize(18);
1065 $form->addItem($lt);
1066
1067 //$form->setTitle($lng->txt("wiki_link"));
1068
1069 echo $form->getHTML();
1070 exit;
1071 }
1072
1077 {
1078 $result = array();
1079
1080 $term = $_GET["term"];
1081
1082 // if page exists, make it first entry
1083 if (ilWikiPage::_wikiPageExists($this->getPageObject()->getParentId(), $term))
1084 {
1085 $entry = new stdClass();
1086 $entry->value = $term;
1087 $entry->label = $term;
1088 $result[] = $entry;
1089 }
1090
1091 $res = ilWikiPage::getPagesForSearch($this->getPageObject()->getParentId(), $term);
1092
1093 $cnt = 0;
1094 foreach ($res as $r)
1095 {
1096 if ($result[0]->value == $r)
1097 {
1098 continue;
1099 }
1100 if ($cnt++ > 19)
1101 {
1102 continue;
1103 }
1104 $entry = new stdClass();
1105 $entry->value = $r;
1106 $entry->label = $r;
1107 $result[] = $entry;
1108 }
1109
1110 include_once './Services/JSON/classes/class.ilJsonUtil.php';
1112 exit;
1113 }
1114
1119 {
1120 global $lng;
1121
1122 $lng->loadLanguageModule("wiki");
1123
1124 $tpl = new ilTemplate("tpl.wiki_ac_search_result.html", true, true, "Modules/Wiki");
1125 $term = trim($_GET["term"]);
1126
1127 $pages = ilObjWiki::_performSearch($this->getPageObject()->getParentId(), $term);
1128
1129 $found = array();
1130 foreach ($pages as $page)
1131 {
1132 $found[] = array("page_id" => $page["page_id"], "title" => ilWikiPage::lookupTitle($page["page_id"]));
1133 }
1134
1135 // sort if all pages are listed
1136 if ($term == "")
1137 {
1138 $found = ilUtil::sortArray($found, "title", "asc");
1139 }
1140
1141 foreach ($found as $f)
1142 {
1143 $tpl->setCurrentBlock("item");
1144 $tpl->setVariable("WIKI_TITLE", $f["title"]);
1145 $tpl->parseCurrentBlock();
1146 }
1147
1148 if (count($pages) == 0)
1149 {
1150 $tpl->setVariable("INFOTEXT", str_replace("$1", $term, $lng->txt("wiki_no_page_found")));
1151 }
1152 else if ($term == '')
1153 {
1154 $tpl->setVariable("INFOTEXT", $lng->txt("wiki_no_search_term"), $term);
1155 }
1156 else
1157 {
1158 $tpl->setVariable("INFOTEXT", str_replace("$1", $term, $lng->txt("wiki_pages_found")));
1159 }
1160
1161 $tpl->setVariable("TXT_BACK", $lng->txt("back"));
1162 echo $tpl->get();
1163 exit;
1164 }
1165}
1166
1167?>
$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)
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.
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
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