. * * @category Plugin * @package StatusNet * @author Evan Prodromou * @copyright 2008 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('STATUSNET')) { exit(1); } /** * Plugin to use WikiHashtags * * @category Plugin * @package StatusNet * @author Evan Prodromou * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ * * @see Event */ class WikiHashtagsPlugin extends Plugin { const VERSION = '0.1'; function __construct($code=null) { parent::__construct(); } function onStartShowSections(Action $action) { $name = $action->trimmed('action'); if ($name == 'tag') { $taginput = $action->trimmed('tag'); $tag = common_canonical_tag($taginput); if (!empty($tag)) { $url = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=render', urlencode($tag)); $editurl = sprintf('http://hashtags.wikia.com/index.php?title=%s&action=edit', urlencode($tag)); $request = HTTPClient::start(); $response = $request->get($url); $html = $response->getBody(); $action->elementStart('div', array('id' => 'wikihashtags', 'class' => 'section')); if ($response->isOk() && !empty($html)) { $action->element('style', null, "span.editsection { display: none }\n". "table.toc { display: none }"); $action->raw($html); $action->elementStart('p'); $action->element('a', array('href' => $editurl, // TRANS: Link title for editing an article on WikiHashTags. // TRANS: %s is the hash tag page to be edited. 'title' => sprintf(_m('Edit the article for #%s on WikiHashtags'), $tag)), // TRANS: Link description for editing an article on WikiHashTags. _m('Edit')); $action->element('a', array('href' => 'http://www.gnu.org/copyleft/fdl.html', // TRANS: Link title for viewing the GFDL. 'title' => _m('Shared under the terms of the GNU Free Documentation License'), 'rel' => 'license'), // TRANS: Link description for viewing the GFDL. _m('GNU FDL')); $action->elementEnd('p'); } else { $action->element('a', array('href' => $editurl), // TRANS: Link description for editing an article on WikiHashTags. // TRANS: %s is the hash tag page to be created. sprintf(_m('Start the article for #%s on WikiHashtags'), $tag)); } $action->elementEnd('div'); } } return true; } function onPluginVersion(array &$versions) { $versions[] = array('name' => 'WikiHashtags', 'version' => self::VERSION, 'author' => 'Evan Prodromou', 'homepage' => 'http://status.net/wiki/Plugin:WikiHashtags', 'rawdescription' => // TRANS: Plugin description. _m('Gets hashtag descriptions from WikiHashtags.')); return true; } }