Bookmarklet for new bookmarks

Override the bookmarklet help page to add a new popup.
This commit is contained in:
Evan Prodromou 2010-12-21 14:43:03 -05:00
parent 6670dd8450
commit 0665beec58
4 changed files with 129 additions and 8 deletions

View File

@ -127,7 +127,8 @@ class BookmarkPlugin extends Plugin
switch ($cls)
{
case 'NewbookmarkAction':
include_once $dir.'/newbookmark.php';
case 'BookmarkpopupAction':
include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
return false;
case 'Notice_bookmark':
include_once $dir.'/'.$cls.'.php';
@ -156,6 +157,8 @@ class BookmarkPlugin extends Plugin
array('action' => 'newbookmark'),
array('id' => '[0-9]+'));
$m->connect('main/bookmark/popup', array('action' => 'bookmarkpopup'));
return true;
}
@ -312,5 +315,27 @@ class BookmarkPlugin extends Plugin
_m('Simple extension for supporting bookmarks.'));
return true;
}
/**
* Load our document if requested
*
* @param string &$title Title to fetch
* @param string &$output HTML to output
*
* @return boolean hook value
*/
function onStartLoadDoc(&$title, &$output)
{
if ($title == 'bookmarklet') {
$filename = INSTALLDIR.'/plugins/Bookmark/bookmarklet';
$c = file_get_contents($filename);
$output = common_markup_to_html($c);
return false; // success!
}
return true;
}
}

View File

@ -0,0 +1,9 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
A bookmarklet is a small piece of javascript code used as a bookmark. This one will let you post to %%site.name%% simply by selecting some text on a page and pressing the bookmarklet.
Drag-and-drop the following link to your bookmarks bar or right-click it and add it to your browser favorites to keep it handy.
<a href="javascript:(function(){var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://%%site.server%%/%%site.path%%/index.php?action=bookmarkpopup',l=d.location,e=encodeURIComponent,g=f+'&title='+((e(s))?e(s):e(document.title))+'&url='+e(l.href);function%20a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=650,height=470')){l.href=g;}}a();})()">Bookmark on %%site.name%%</a>

View File

@ -0,0 +1,87 @@
<?php
/**
* StatusNet, the distributed open-source microblogging tool
*
* Post a new bookmark in a popup window
*
* PHP version 5
*
* LICENCE: This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Bookmark
* @package StatusNet
* @author Sarven Capadisli <csarven@status.net>
* @author Evan Prodromou <evan@status.net>
* @copyright 2008-2010 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
exit(1);
}
/**
* Action for posting a new bookmark
*
* @category Bookmark
* @package StatusNet
* @author Sarven Capadisli <csarven@status.net>
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
class BookmarkpopupAction extends NewbookmarkAction
{
function prepare($args)
{
$result = parent::prepare($args);
common_debug('Values: ' . $this->_title . ' ' . $this->_url);
return $result;
}
function showTitle()
{
// TRANS: Title for mini-posting window loaded from bookmarklet.
// TRANS: %s is the StatusNet site name.
$this->element('title',
null, sprintf(_('Bookmark on %s'),
common_config('site', 'name')));
}
function showHeader()
{
$this->elementStart('div', array('id' => 'header'));
$this->elementStart('address');
$this->element('a', array('class' => 'url',
'href' => common_local_url('public')),
'');
$this->elementEnd('address');
if (common_logged_in()) {
$form = new BookmarkForm($this,
$this->_title,
$this->_url);
$form->show();
}
$this->elementEnd('div');
}
function showCore()
{
}
function showFooter()
{
}
}

View File

@ -47,13 +47,13 @@ if (!defined('STATUSNET')) {
class NewbookmarkAction extends Action
{
private $_user = null;
private $_error = null;
private $_complete = null;
private $_title = null;
private $_url = null;
private $_tags = null;
private $_description = null;
protected $_user = null;
protected $_error = null;
protected $_complete = null;
protected $_title = null;
protected $_url = null;
protected $_tags = null;
protected $_description = null;
/**
* Returns the title of the action