Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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");
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * 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");
     }
 }