/** * Make a wiki link, the following formats are supported: * * [[Page Title]] * [[Page Title|Presentation Text]] * [[Page Title#Anchor]] * [[Page Title#Anchor|Presentation Text]] * [[#Anchor|Presentation Text]] (link to anchor on same wiki page) */ static function makeLink(&$nt, $a_wiki_id, $text = '', $query = '', $trail = '', $prefix = '', $a_offline = false) { global $ilCtrl; //wfProfileIn( __METHOD__ ); if (!is_object($nt)) { # Fail gracefully $retVal = "<!-- ERROR -->{$prefix}{$text}{$trail}"; } else { //var_dump($trail); //var_dump($nt); // remove anchor from text, define anchor $anc = ""; if ($nt->mFragment != "") { if (substr($text, strlen($text) - strlen("#" . $nt->mFragment)) == "#" . $nt->mFragment) { $text = substr($text, 0, strlen($text) - strlen("#" . $nt->mFragment)); $anc = "#" . $nt->mFragment; } else { $anc = "#" . $nt->mFragment; } } # Separate the link trail from the rest of the link // outcommented due to bug #14590 // list( $inside, $trail ) = ilWikiUtil::splitTrail( $trail ); $retVal = '***' . $text . "***" . $trail; $url_title = ilWikiUtil::makeUrlTitle($nt->mTextform); $db_title = ilWikiUtil::makeDbTitle($nt->mTextform); if ($db_title != "") { $pg_exists = ilWikiPage::_wikiPageExists($a_wiki_id, $db_title); } else { // links on same page (only anchor used) $pg_exists = true; } //var_dump($nt); //var_dump($inside); //var_dump($trail); $wiki_link_class = !$pg_exists ? ' class="ilc_link_IntLink ilWikiPageMissing" ' : ' class="ilc_link_IntLink" '; if (!$a_offline) { if ($url_title != "") { $ilCtrl->setParameterByClass("ilobjwikigui", "page", $url_title); $retVal = '<a ' . $wiki_link_class . ' href="' . $ilCtrl->getLinkTargetByClass("ilobjwikigui", "gotoPage") . $anc . '">' . $text . '</a>' . $trail; $ilCtrl->setParameterByClass("ilobjwikigui", "page", $_GET["page"]); } else { $retVal = '<a ' . $wiki_link_class . ' href="' . $anc . '">' . $text . '</a>' . $trail; } } else { if ($pg_exists) { if ($db_title != "") { $pg_id = ilWikiPage::getIdForPageTitle($a_wiki_id, $db_title); $retVal = '<a ' . $wiki_link_class . ' href="' . "wpg_" . $pg_id . ".html" . $anc . '">' . $text . '</a>' . $trail; } else { $retVal = '<a ' . $wiki_link_class . ' href="' . $anc . '">' . $text . '</a>' . $trail; } } else { $retVal = $text . $trail; } } //$ilCtrl->debug("ilWikiUtil::makeLink:-$inside-$trail-"); /* if ( $nt->isExternal() ) { $nr = array_push( $this->mInterwikiLinkHolders['texts'], $prefix.$text.$inside ); $this->mInterwikiLinkHolders['titles'][] = $nt; $retVal = '<!--IWLINK '. ($nr-1) ."-->{$trail}"; } else { $nr = array_push( $this->mLinkHolders['namespaces'], $nt->getNamespace() ); $this->mLinkHolders['dbkeys'][] = $nt->getDBkey(); $this->mLinkHolders['queries'][] = $query; $this->mLinkHolders['texts'][] = $prefix.$text.$inside; $this->mLinkHolders['titles'][] = $nt; $retVal = '<!--LINK '. ($nr-1) ."-->{$trail}"; } */ } //wfProfileOut( __METHOD__ ); //echo "<br>".$retVal; exit; return $retVal; }
/** * Auto complete for insert wiki link */ function insertWikiLinkAC() { $result = array(); $term = $_GET["term"]; // if page exists, make it first entry if (ilWikiPage::_wikiPageExists($this->getPageObject()->getParentId(), $term)) { $entry = new stdClass(); $entry->value = $term; $entry->label = $term; $result[] = $entry; } $res = ilWikiPage::getPagesForSearch($this->getPageObject()->getParentId(), $term); $cnt = 0; foreach ($res as $r) { if ($result[0]->value == $r) { continue; } if ($cnt++ > 19) { continue; } $entry = new stdClass(); $entry->value = $r; $entry->label = $r; $result[] = $entry; } include_once './Services/JSON/classes/class.ilJsonUtil.php'; echo ilJsonUtil::encode($result); exit; }
/** * Go to specific page * * @param string $a_page page title */ function gotoPageObject($a_page = "") { global $ilCtrl; if ($a_page == "") { $a_page = $_GET["page"]; } include_once "./Modules/Wiki/classes/class.ilWikiPage.php"; if (ilWikiPage::_wikiPageExists($this->object->getId(), ilWikiUtil::makeDbTitle($a_page))) { // to do: get rid of this redirect ilUtil::redirect(ilObjWikiGUI::getGotoLink($this->object->getRefId(), $a_page)); } else { if (!$this->object->getTemplateSelectionOnCreation()) { $this->object->createWikiPage($a_page); // redirect to newly created page $ilCtrl->setParameterByClass("ilwikipagegui", "page", ilWikiUtil::makeUrlTitle($a_page)); $ilCtrl->redirectByClass("ilwikipagegui", "edit"); } else { $ilCtrl->setParameter($this, "page", ilWikiUtil::makeUrlTitle($_GET["page"])); $ilCtrl->setParameter($this, "from_page", ilWikiUtil::makeUrlTitle($_GET["from_page"])); $ilCtrl->redirect($this, "showTemplateSelection"); } } }
/** * Go to specific page * * @param string $a_page page title */ function gotoPageObject($a_page = "") { global $ilCtrl; if ($a_page == "") { $a_page = $_GET["page"]; } include_once "./Modules/Wiki/classes/class.ilWikiPage.php"; if (ilWikiPage::_wikiPageExists($this->object->getId(), ilWikiUtil::makeDbTitle($a_page))) { // to do: get rid of this redirect ilUtil::redirect(ilObjWikiGUI::getGotoLink($this->object->getRefId(), $a_page)); } else { // create the page $page = new ilWikiPage(); $page->setWikiId($this->object->getId()); $page->setTitle(ilWikiUtil::makeDbTitle($_GET["page"])); if ($this->object->getRating() && $this->object->getRatingForNewPages()) { $page->setRating(true); } $page->create(); // redirect to newly created page $ilCtrl->setParameterByClass("ilwikipagegui", "page", ilWikiUtil::makeUrlTitle($a_page)); $ilCtrl->redirectByClass("ilwikipagegui", "edit"); } }