\$AddLinkUrl]]\nTags: \$AddLinkTags\nPosted: \$AddLinkTime\n(:nolinebreaks:)\n\n>>quote<<\n(:nolinkwikiwords:)\n\$AddLinkSelection\n(:linkwikiwords:)\n>><<\n"; if (in_array($action,array('edit','browse','addlink'))) { include_once("$FarmD/cookbook/addlink-tags2.php"); } */ // VERSION INFO $RecipeInfo['AddLink2-tags']['Version'] = '2017-10-27'; // VARIABLES // Add links to the bottom instead of the top? SDV($EnableAddLinkToEnd,0); // What text should be added immediate before and after each new link? // The default is a newline before and after. SDV($AddLinkPrefixText,"\n"); SDV($AddLinkSuffixText,"\n"); // Format of the entry SDV($AddLinkFmt,"* [[\$AddLinkUrl | \$AddLinkTitle]]\\\\\n ''\$AddLinkSelection''\\\\\n '''Tags:''' \$AddLinkTags\\\\\n '''Posted:''' \$AddLinkTime\n"); // Default character set to use if none detected SDV($AddLinkDefaultCharset,'UTF-8'); // Add the (:addlink [PageName]:) markup and HandleAddLink actions. Markup('addlink', 'inline', '/\\(:addlink\\s*(.*?):\\)/', function ($m) { return Keep(CreateBookmarklet($m[1])); }); $HandleActions['addlink'] = 'HandleAddLink'; // Function to create the bookmarklet function CreateBookmarklet($linkpage) { global $WikiTitle, $pagename; if ($linkpage) $pagename = MakePageName($pagename, $linkpage); $bookmarklet = "send to ".$WikiTitle."/".$pagename.""; return FmtPageName("Bookmarklet: $bookmarklet - drag to bookmark bar", $pagename); } // Use the site's default edit page. if ($action == 'addlink') { $action = 'edit'; $OldEditHandler = $HandleActions[$action]; $HandleActions[$action] = 'HandleAddLink'; } // Function to handle ?action=addlink (prepends/appends the url to the page and // then passes control to the edit function). function HandleAddLink($pagename) { global $OldEditHandler, $EnableAddLinkToEnd, $AddLinkPrefixText, $AddLinkSuffixText, $AddLinkFmt, $TimeFmt; Lock(2); $page = RetrieveAuthPage($pagename, 'edit'); if (!$page) Abort("?cannot edit $pagename"); $text = $page['text']; // Use similar method to map values into $AddLinkFmt as $UrlLinkFmt // in pmwiki.php $AddLinkV = array(); $AddLinkV['$AddLinkUrl'] = (isset($_REQUEST['url']))?($_REQUEST['url']):''; $t = (isset($_REQUEST['title']))?($_REQUEST['title']):''; $AddLinkV['$AddLinkTitle'] = str_replace("|", "-", $t); // this is to prevent the pipe from doing something in the link $AddLinkV['$AddLinkSelection'] = (isset($_REQUEST['selection']))?_al_t_fix_encoding($_REQUEST['selection']):''; $AddLinkV['$AddLinkTags'] = (isset($_REQUEST['tags']))?($_REQUEST['tags']):''; $AddLinkV['$AddLinkTime'] = "{(ftime)}"; $newtext = str_replace(array_keys($AddLinkV),array_values($AddLinkV),$AddLinkFmt); if (IsEnabled($EnableAddLinkToEnd,0)) $text .= $AddLinkPrefixText . $newtext . $AddLinkSuffixText; else $text = $AddLinkPrefixText . $newtext . $AddLinkSuffixText . $text; $action = 'edit'; $_POST['text'] = $text; $OldEditHandler($pagename); } // cleans up the selected text to be used as the quote from the page. function _al_t_fix_encoding($s) { global $AddLinkDefaultCharset; if (empty($s)) return $s; $e = mb_detect_encoding($s); if (FALSE===$e) $e=$AddLinksDefaultCharset; // default encoding return mb_convert_encoding($s,'HTML-ENTITIES',$e); }