case 'NewbookmarkAction':
case 'BookmarkpopupAction':
case 'NoticebyurlAction':
+ case 'BookmarkforurlAction':
case 'ImportdeliciousAction':
include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
return false;
$m->connect('main/bookmark/import',
array('action' => 'importdelicious'));
+ $m->connect('main/bookmark/forurl',
+ array('action' => 'bookmarkforurl'));
+
$m->connect('bookmark/:id',
array('action' => 'showbookmark'),
array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'));
function entryForm($out)
{
- return new BookmarkForm($out);
+ return new InitialBookmarkForm($out);
}
function tag()
private $_url = null;
private $_tags = null;
private $_description = null;
+ private $_thumbnail = null;
/**
* Construct a bookmark form
* @return void
*/
function __construct($out=null, $title=null, $url=null, $tags=null,
- $description=null)
+ $description=null, $thumbnail=null)
{
parent::__construct($out);
$this->_url = $url;
$this->_tags = $tags;
$this->_description = $description;
+ $this->_thumbnail = $thumbnail;
}
/**
$this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
$this->out->elementStart('ul', 'form_data');
+ $this->li();
+ $this->out->input('url',
+ // TRANS: Field label on form for adding a new bookmark.
+ _m('LABEL','URL'),
+ $this->_url);
+ $this->unli();
+
+ if (!empty($this->_thumbnail)) {
+ $this->out->element('img',
+ array('src' => $this->_thumbnail->url,
+ 'width' => $this->_thumbnail->width,
+ 'height' => $this->_thumbnail->height));
+ }
+
$this->li();
$this->out->input('title',
// TRANS: Field label on form for adding a new bookmark.
_m('LABEL','Title'),
- $this->_title,
- // TRANS: Field title on form for adding a new bookmark.
- _m('Title of the bookmark.'));
+ $this->_title);
$this->unli();
$this->li();
- $this->out->input('url',
- // TRANS: Field label on form for adding a new bookmark.
- _m('LABEL','URL'),
- $this->_url,
- // TRANS: Field title on form for adding a new bookmark.
- _m('URL to bookmark.'));
+ $this->out->textarea('description',
+ // TRANS: Field label on form for adding a new bookmark.
+ _m('LABEL','Notes'),
+ $this->_description);
$this->unli();
$this->li();
_m('Comma- or space-separated list of tags.'));
$this->unli();
- $this->li();
- $this->out->input('description',
- // TRANS: Field label on form for adding a new bookmark.
- _m('LABEL','Description'),
- $this->_description,
- // TRANS: Field title on form for adding a new bookmark.
- _m('Description of the URL.'));
- $this->unli();
-
$this->out->elementEnd('ul');
$toWidget = new ToSelector($this->out,
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * Returns a pre-filled bookmark form for a given URL
+ *
+ * PHP version 5
+ *
+ * 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 Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * Returns a prefilled bookmark form for a given URL
+ *
+ * @category Bookmark
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class BookmarkforurlAction extends Action
+{
+ protected $url;
+ protected $oembed;
+ protected $thumbnail;
+
+ /**
+ * For initializing members of the class.
+ *
+ * @param array $args misc. arguments
+ *
+ * @return boolean true
+ */
+ function prepare($args)
+ {
+ parent::prepare($args);
+
+ if (!$this->isPost()) {
+ throw new ClientException(_('POST only'), 405);
+ }
+
+ $this->checkSessionToken();
+
+ $this->url = $this->trimmed('url');
+
+ if (empty($this->url)) {
+ throw new ClientException(_('URL is required.'), 400);
+ }
+
+ if (!Validate::uri($this->url, array('allowed_schemes' => array('http', 'https')))) {
+ throw new ClientException(_('Invalid URL.'), 400);
+ }
+
+ $f = File::processNew($this->url);
+
+ if (!empty($f)) {
+ $this->oembed = File_oembed::staticGet('file_id', $f->id);
+ if (!empty($this->oembed)) {
+ $this->title = $this->oembed->title;
+ }
+ $this->thumbnail = File_thumbnail::staticGet('file_id', $f->id);
+ }
+
+ return true;
+ }
+
+ /**
+ * Handler method
+ *
+ * @param array $args is ignored since it's now passed in in prepare()
+ *
+ * @return void
+ */
+
+ function handle($args=null)
+ {
+ $this->startHTML('text/xml;charset=utf-8');
+ $this->elementStart('head');
+ $this->element('title', null, _('Bookmark form'));
+ $this->elementEnd('head');
+ $this->elementStart('body');
+ $bf = new BookmarkForm($this, $this->title, $this->url, null, null, $this->thumbnail);
+ $bf->show();
+ $this->elementEnd('body');
+ $this->elementEnd('html');
+ }
+
+ /**
+ * Return true if read only.
+ *
+ * MAY override
+ *
+ * @param array $args other arguments
+ *
+ * @return boolean is read only action?
+ */
+
+ function isReadOnly($args)
+ {
+ return false;
+ }
+}
--- /dev/null
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * First bookmark form, with just the URL
+ *
+ * PHP version 5
+ *
+ * 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 Form
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ // This check helps protect against security problems;
+ // your code file can't be executed directly from the web.
+ exit(1);
+}
+
+/**
+ * First bookmark form, with just the URL
+ *
+ * @category General
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2011 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
+ * @link http://status.net/
+ */
+
+class InitialBookmarkForm extends Form
+{
+ function __construct($out=null)
+ {
+ parent::__construct($out);
+ }
+
+ function id()
+ {
+ return 'form_initial_bookmark';
+ }
+
+ function formClass()
+ {
+ return 'form_settings ajax';
+ }
+
+ function action()
+ {
+ return common_local_url('bookmarkforurl');
+ }
+
+ function formData()
+ {
+ $this->out->elementStart('fieldset', array('id' => 'initial_bookmark_data'));
+ $this->out->elementStart('ul', 'form_data');
+
+ $this->li();
+ $this->out->input('url',
+ // TRANS: Field label on form for adding a new bookmark.
+ _m('LABEL','URL'),
+ null);
+ $this->unli();
+
+ $this->out->elementEnd('ul');
+ $this->out->elementEnd('fieldset');
+ }
+
+ function formActions()
+ {
+ // TRANS: Button text for action to save a new bookmark.
+ $this->out->submit('submit', _m('BUTTON', 'Add'));
+ }
+}