* @version $Rev: 111 $ * @copyright (c) 2005-2007, Ilya Lebedev */ if(!defined('DOKU_INC')) die(); if(!function_exists('array_combine')) { /** * array_combine emulation * * @author Ivo van Sandick * @date 02-Sep-2005 12:04 * @see http://php.net/manual/ru/function.array-combine.php#56424 * @param array $keys array with keys * @param array $vals array with values * @return array resulting array with ($keys => $vals) pairs */ function array_combine( $keys, $vals ) { $keys = array_values( (array) $keys ); $vals = array_values( (array) $vals ); $n = max( count( $keys ), count( $vals ) ); $r = array(); for( $i=0; $i<$n; $i++ ) { $r[ $keys[ $i ] ] = $vals[ $i ]; } return $r; } } if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'action.php'); class action_plugin_bookmarkme extends DokuWiki_Action_Plugin { var $bookmarks = array( 'del.icio.us' => 'http://del.icio.us/post?title=%title%&url=%permalink%' ,'Digg' => 'http://digg.com/submit?phase=2&title=%title%&url=%permalink%' ,'Furl' => 'http://www.furl.net/storeIt.jsp?t=%title%&u=%permalink%' ,'Reddit' => 'http://reddit.com/submit?title=%title%&url=%permalink%' ,'Ask' => 'http://myjeeves.ask.com/mysearch/BookmarkIt?v=1.2&t=webpages&title=%title%&url=%permalink%' ,'BlinkList' => 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&Title=%title%&Description=&Url=%permalink%' ,'blogmarks' => 'http://blogmarks.net/my/new.php?mini=1&simple=1&title=%title%&url=%permalink%' ,'Google' => 'http://www.google.com/bookmarks/mark?op=add&title=%title%&bkmk=%permalink%' ,'Ma.gnolia' => 'http://ma.gnolia.com/beta/bookmarklet/add?title=%title%&description=%title%&url=%permalink%' ,'Netscape' => 'http://www.netscape.com/submit/?T=%title%&U=%permalink%' ,'ppnow' => 'http://www.ppnow.com/submit.php?url=%permalink%' ,'Rojo' => 'http://www.rojo.com/submit/?title=%title%&url=%permalink%' ,'Shadows' => 'http://www.shadows.com/features/tcr.htm?title=%title%&url=%permalink%' ,'Simpy' => 'http://www.simpy.com/simpy/LinkAdd.do?title=%title%&href=%permalink%' ,'Socializer' => 'http://ekstreme.com/socializer/?title=%title%&url=%permalink%' ,'Spurl' => 'http://www.spurl.net/spurl.php?title=%title%&url=%permalink%' ,'StumbleUpon' => 'http://www.stumbleupon.com/submit?title=%title%&url=%permalink%' ,'Tailrank' => 'http://tailrank.com/share/?link_href=%permalink%&title=%title%' ,'Technorati' => 'http://www.technorati.com/faves?add=%permalink%' ,'Live Bookmarks' => 'https://favorites.live.com/quickadd.aspx?marklet=1&mkt=en-us&title=%title%&url=%permalink%&top=1' ,'Wists' => 'http://wists.com/r.php?c=&title=%title%&r=%permalink%' ,'Yahoo! Myweb' => 'http://myweb2.search.yahoo.com/myresults/bookmarklet?title=%title%&popup=true&u=%permalink%' ,'BobrDobr' => 'http://bobrdobr.ru/addext.html?url=%permalink%&title=%title%' ,'Memori' => 'http://memori.ru/link/?sm=1&u_data[url]=%permalink%&u_data[name]=%title%' ,'Faves' => 'http://faves.com/Authoring.aspx?u=%title%&t=%title%' ,'Favorites' => "javascript: (function (url,title) {var e; try {if (document.all&&!window.opera) window.external.AddFavorite(url, title); else if (window.opera) {var el=document.createElement("a"); el.rel="sidebar";el.href=url;el.title=title;el.click();} else window.sidebar.addPanel(title, url,"");}catch(e){}})("%permalink%","%title%");" ,'Facebook' => 'http://www.facebook.com/sharer.php?u=%permalink%&t=%title%' ,'Newsvine' => 'http://www.newsvine.com/_tools/seed&save?u=%permalink%&h=%title%' ,'Yahoo! Bookmarks' => 'http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&u=%permalink%&t=%title%' ,'Twitter' => 'http://twitter.com/home?status=%title%:%permalink%' ,'myAOL' => 'http://favorites.my.aol.com/ffclient/AddBookmark?url=%permalink%&title=%title%&favelet=true' ,'Slashdot' => 'http://slashdot.org/bookmark.pl?url=%permalink%' ,'Fark' => 'http://cgi.fark.com/cgi/fark/submit.pl?new_url=%permalink%&new_comment=%title%' ,'RawSugar' => 'http://www.rawsugar.com/tagger/?turl=%permalink%&tttl=%title%&editorInitialized=1' ,'LinkaGoGo' => 'http://www.linkagogo.com/go/AddNoPopup?url=%permalink%&title=%title%' ,'Mister Wong' => 'http://www.mister-wong.de/index.php?action=addurl&bm_url=%permalink%&bm_description=%title%' ,'Wink' => 'http://www.wink.com/_/tag?url=%permalink%&doctitle=%title%' ,'BackFlip' => 'http://www.backflip.com/add_page_pop.ihtml?url=%permalink%&title=%title%' ,'Diigo' => 'http://www.diigo.com/post?url=%permalink%&title=%title%' ,'Segnalo' => 'http://segnalo.com/post.html.php?url=%permalink%&title=%title%' ,'Netvouz' => 'http://netvouz.com/action/submitBookmark?url=%permalink%&title=%title%&popup=no' ,'DropJack' => 'http://www.dropjack.com/submit.php?url=%permalink%' ,'Feed Me Links' => 'http://feedmelinks.com/categorize?from=toolbar&op=submit&url=%permalink%&name=%title%' ,'funP' => 'http://funp.com/push/submit/add.php?url=%permalink%&s=%title%' ,'HEMiDEMi' => 'http://www.hemidemi.com/user_bookmark/new?title=%title%&url=%permalink%' ); /** * Constants for controlling toolbar show */ var $BOOKMARKME_SHOW_OFF = 0; var $BOOKMARKME_SHOW_ON = 1; // equals to bottom, pre-0.7 compatible var $BOOKMARKME_SHOW_BOTTOM = 1; var $BOOKMARKME_SHOW_TOP = 2; var $BOOKMARKME_SHOW_BOTH = 3; /** * return some info */ function getInfo(){ preg_match("#^.*?BookmarkMe/([^\\/]+)#"," $HeadURL: https://svn.debugger.ru/repos/common/DokuWiki/BookmarkMe/tags/BookmarkMe.v0.8/action.php $ ", $v); $v = preg_replace("#.*?((trunk|\.v)[\d.]+)#","\\1",$v[1]); $b = preg_replace("/\\D/","", " $Rev: 111 $ "); return array( 'author' => "Ilya Lebedev" ,'email' => 'ilya@lebedev.net' ,'date' => preg_replace("#.*?(\d{4}-\d{2}-\d{2}).*#","\\1",'$Date: 2008-12-25 22:33:15 +0300 (Чтв, 25 Дек 2008) $') ,'name' => "BookmarkMe {$v}.$b Action component." ,'desc' => "Insert toolbar with links to social bookmarking services." ,'url' => 'http://wiki.splitbrain.org/plugin:bookmarkme' ); } /* * plugin should use this method to register its handlers with the dokuwiki's event controller */ function register(&$controller) { $controller->register_hook('TPL_ACT_RENDER','AFTER',$this,'bookmark',array("show" => $this->BOOKMARKME_SHOW_BOTTOM)); $controller->register_hook('TPL_ACT_RENDER','BEFORE',$this,'bookmark',array("show" => $this->BOOKMARKME_SHOW_TOP)); } /** * Prints bookmarking icons, if allowed * * @author Ilya Lebedev */ function bookmark(&$event, $param) { global $ID; global $conf; if ($event->data != 'show') return; // nothing to do for us $show = $this->getConf('show_bookmarks'); //Check if bookmarking is allowed $bm = p_get_metadata($ID,'bookmarkme'); if (null !== $bm) { $bm = 'BOOKMARKME_SHOW_'.strtoupper($bm); $bm = (int)$this->$bm; if (is_numeric($bm)) $show = $bm; } if ( !($show & $this->BOOKMARKME_SHOW_BOTTOM & $param['show']) && !($show & $this->BOOKMARKME_SHOW_TOP & $param['show'])) return; /* * assume that page does not exists */ $exists = false; $id = $ID; resolve_pageid('',$id,$exists); /* * find skip pages */ $sp = join("|",explode(",",preg_quote($this->getConf('skip_ids')))); if (!$exists || preg_match("/$sp/i",$ID)) return; if (@file_exists(dirname(__FILE__)."/bookmark.ini")) { $bkm = (preg_split("/(\s|[\r\n])+/",@file_get_contents(dirname(__FILE__)."/bookmark.ini"))); $bkk = $bkv = array(); while (list($bkk[],$bkv[]) = array_splice($bkm,0,2)){} $this->bookmarks = array_merge(array_filter(array_combine($bkk,$bkv)),$this->bookmarks); } $be = explode(",",$this->getConf('bookmarks')); $ip = dirname(__FILE__)."/img/"; $iu = DOKU_URL."lib/plugins/bookmarkme/img/"; $title = p_get_first_heading($ID); if (!$title) $title = $ID; $pml = wl($ID,'',true); $html = array(''; if (sizeof($html)>2) echo join("\n",$html); } }