diff --git a/lib/action.php b/lib/action.php index 650f706a4b..1c616daf89 100644 --- a/lib/action.php +++ b/lib/action.php @@ -640,8 +640,60 @@ class Action extends HTMLOutputter // lawsuit */ function showNoticeForm() { - $notice_form = new NoticeForm($this); - $notice_form->show(); + $tabs = array('status' => _('Status')); + + $this->elementStart('div', 'input_forms'); + + if (Event::handle('StartShowEntryForms', array(&$tabs))) { + + $this->elementStart('ul', array('class' => 'nav', + 'id' => 'input_form_nav')); + + foreach ($tabs as $tag => $title) { + + $attrs = array('id' => 'input_form_nav_'.$title); + + if ($tag == 'status') { + $attrs['class'] = 'current'; + } + + $this->elementStart('li', $attrs); + + $this->element('a', + array('href' => 'javascript:switchInputFormTab("'.$tag.'")'), + $title); + $this->elementEnd('li'); + } + + $this->elementEnd('ul'); + + foreach ($tabs as $tag => $title) { + + $attrs = array('class' => 'input_form', + 'id' => 'input_form_'.$tag); + + if ($tag == 'status') { + $attrs['class'] .= ' active'; + } else { + $attrs['class'] .= ' inactive'; + } + + $this->elementStart('div', $attrs); + + $form = null; + + if (Event::handle('StartMakeEntryForm', array($tag, $this, &$form))) { + if ($tag == 'status') { + $form = new NoticeForm($this); + } + Event::handle('EndMakeEntryForm', array($tag, $this, $form)); + } + + if (!empty($form)) { + $form->show(); + } + } + } } /** diff --git a/lib/microappplugin.php b/lib/microappplugin.php index 1cdbe965e6..0b02f5da52 100644 --- a/lib/microappplugin.php +++ b/lib/microappplugin.php @@ -54,7 +54,7 @@ abstract class MicroAppPlugin extends Plugin abstract function appTitle(); abstract function tag(); abstract function types(); - abstract function saveNoticeFromActivity($activity, $actor); + abstract function saveNoticeFromActivity($activity, $actor, $options); abstract function activityObjectFromNotice($notice); abstract function showNotice($notice, $out); abstract function entryForm($out); @@ -157,6 +157,13 @@ abstract class MicroAppPlugin extends Plugin throw new ClientException(_('Can\'t get author for activity.')); } + $object = $activity->objects[0]; + + $options = array('uri' => $object->id, + 'url' => $object->link, + 'is_local' => Notice::REMOTE_OMB, + 'source' => 'ostatus'); + $this->saveNoticeFromActivity($activity, $actor); return false; @@ -196,7 +203,7 @@ abstract class MicroAppPlugin extends Plugin if (!in_array($uri, $activity->context->attention) && (empty($original) || $original->profile_id != $target->id)) { - throw new ClientException(_("Bookmark not posted ". + throw new ClientException(_("Object not posted ". "to this user.")); } } else { @@ -206,7 +213,14 @@ abstract class MicroAppPlugin extends Plugin $actor = Ostatus_profile::ensureActivityObjectProfile($activity->actor); - $this->saveNoticeFromActivity($activity, $actor); + $object = $activity->objects[0]; + + $options = array('uri' => $object->id, + 'url' => $object->link, + 'is_local' => Notice::REMOTE_OMB, + 'source' => 'ostatus'); + + $this->saveNoticeFromActivity($activity, $actor, $options); return false; } @@ -258,8 +272,8 @@ abstract class MicroAppPlugin extends Plugin $obj = $activity->objects[0]; - $options = array('uri' => $bookmark->id, - 'url' => $bookmark->link, + $options = array('uri' => $object->id, + 'url' => $object->link, 'source' => 'restore'); $saved = $this->saveNoticeFromActivity($activity, @@ -275,4 +289,22 @@ abstract class MicroAppPlugin extends Plugin return true; } + + function onStartShowEntryForms(&$tabs) + { + $tabs[$this->tag()] = $this->appTitle(); + return true; + } + + function onStartMakeEntryForm($tag, $out, &$form) + { + $this->log(LOG_INFO, "onStartMakeEntryForm() called for tag '$tag'"); + + if ($tag == $this->tag()) { + $form = $this->entryForm($out); + return false; + } + + return true; + } } diff --git a/plugins/Bookmark/BookmarkPlugin.php b/plugins/Bookmark/BookmarkPlugin.php index c3ff17c4e9..1ef5f5c0e3 100644 --- a/plugins/Bookmark/BookmarkPlugin.php +++ b/plugins/Bookmark/BookmarkPlugin.php @@ -372,10 +372,8 @@ class BookmarkPlugin extends MicroAppPlugin * @return Notice resulting notice */ - function saveNoticeFromActivity($activity, $profile) + function saveNoticeFromActivity($activity, $profile, $options=array()) { - $options = array(); - $bookmark = $activity->objects[0]; $relLinkEls = ActivityUtils::getLinks($bookmark->element, 'related'); @@ -622,4 +620,13 @@ class BookmarkPlugin extends MicroAppPlugin return new BookmarkForm($out); } + function tag() + { + return 'bookmark'; + } + + function appTitle() + { + return _m('Bookmark'); + } }