From 80dc2788dd20ddbcd787e0de497113ed75e3e92e Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 19 Jan 2016 01:41:06 +0100 Subject: [PATCH] Started fiddling with CancelRSVP but more must be done Remember to make event_uri be the selector for CancelRSVPForm and preferrably even merge it into RSVPForm! --- plugins/Event/EventPlugin.php | 4 +- plugins/Event/actions/cancelrsvp.php | 141 +++------------------------ plugins/Event/forms/cancelrsvp.php | 2 +- 3 files changed, 19 insertions(+), 128 deletions(-) diff --git a/plugins/Event/EventPlugin.php b/plugins/Event/EventPlugin.php index 56081b1a8e..2e972b781c 100644 --- a/plugins/Event/EventPlugin.php +++ b/plugins/Event/EventPlugin.php @@ -436,9 +436,9 @@ class EventPlugin extends ActivityVerbHandlerPlugin $rsvp = $event->getRSVP($scoped); if (empty($rsvp)) { - $form = new RSVPForm($event, $out); + $form = new RSVPForm($out, array('event'=>$event)); } else { - $form = new CancelRSVPForm($rsvp, $out); + $form = new CancelRSVPForm($out, array('rsvp'=>$rsvp)); } $form->show(); diff --git a/plugins/Event/actions/cancelrsvp.php b/plugins/Event/actions/cancelrsvp.php index 0db422c8c6..67e5d896ac 100644 --- a/plugins/Event/actions/cancelrsvp.php +++ b/plugins/Event/actions/cancelrsvp.php @@ -40,159 +40,50 @@ if (!defined('GNUSOCIAL')) { exit(1); } * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ -class CancelrsvpAction extends Action +class CancelrsvpAction extends FormAction { - protected $user = null; - protected $rsvp = null; - protected $event = null; + protected $form = 'CancelRSVP'; - /** - * Returns the title of the action - * - * @return string Action title - */ function title() { // TRANS: Title for RSVP ("please respond") action. return _m('TITLE','Cancel RSVP'); } - /** - * For initializing members of the class. - * - * @param array $argarray misc. arguments - * - * @return boolean true - */ - function prepare($argarray) + // FIXME: Merge this action with RSVPAction and add a 'cancel' thing there... + protected function doPreparation() { - parent::prepare($argarray); - if ($this->boolean('ajax')) { - GNUsocial::setApi(true); // short error results! - } - $rsvpId = $this->trimmed('rsvp'); - if (empty($rsvpId)) { // TRANS: Client exception thrown when referring to a non-existing RSVP ("please respond") item. throw new ClientException(_m('No such RSVP.')); } $this->rsvp = RSVP::getKV('id', $rsvpId); - if (empty($this->rsvp)) { // TRANS: Client exception thrown when referring to a non-existing RSVP ("please respond") item. throw new ClientException(_m('No such RSVP.')); } - $this->event = Happening::getKV('uri', $this->rsvp->event_uri); + $this->formOpts['rsvp'] = $this->rsvp; + } + protected function doPost() + { + $this->event = Happening::getKV('uri', $this->rsvp->event_uri); if (empty($this->event)) { // TRANS: Client exception thrown when referring to a non-existing event. throw new ClientException(_m('No such event.')); } - $this->user = common_current_user(); - - if (empty($this->user)) { - // TRANS: Client exception thrown when trying tp RSVP ("please respond") while not logged in. - throw new ClientException(_m('You must be logged in to RSVP for an event.')); - } - - return true; - } - - /** - * Handler method - * - * @param array $argarray is ignored since it's now passed in in prepare() - * - * @return void - */ - function handle($argarray=null) - { - parent::handle($argarray); - - if ($this->isPost()) { - $this->cancelRSVP(); + $notice = $this->rsvp->getNotice(); + // NB: this will delete the rsvp, too + if (!empty($notice)) { + common_log(LOG_DEBUG, "Deleting notice..."); + $notice->deleteAs($this->scoped); } else { - $this->showPage(); - } - - return; - } - - /** - * Add a new event - * - * @return void - */ - function cancelRSVP() - { - try { - $notice = $this->rsvp->getNotice(); - // NB: this will delete the rsvp, too - if (!empty($notice)) { - common_log(LOG_DEBUG, "Deleting notice..."); - $notice->deleteAs($this->scoped); - } else { - common_log(LOG_DEBUG, "Deleting RSVP alone..."); - $this->rsvp->delete(); - } - } catch (ClientException $ce) { - $this->error = $ce->getMessage(); - $this->showPage(); - return; - } - - if ($this->boolean('ajax')) { - $this->startHTML('text/xml;charset=utf-8'); - $this->elementStart('head'); - // TRANS: Page title after sending a notice. - $this->element('title', null, _m('Event saved')); - $this->elementEnd('head'); - $this->elementStart('body'); - $form = new RSVPForm($this->event, $this); - $form->show(); - $this->elementEnd('body'); - $this->endHTML(); - } - } - - /** - * Show the event form - * - * @return void - */ - function showContent() - { - if (!empty($this->error)) { - $this->element('p', 'error', $this->error); - } - - $form = new CancelRSVPForm($this->rsvp, $this); - - $form->show(); - - return; - } - - /** - * Return true if read only. - * - * MAY override - * - * @param array $args other arguments - * - * @return boolean is read only action? - */ - function isReadOnly($args) - { - if ($_SERVER['REQUEST_METHOD'] == 'GET' || - $_SERVER['REQUEST_METHOD'] == 'HEAD') { - return true; - } else { - return false; + common_log(LOG_DEBUG, "Deleting RSVP alone..."); + $this->rsvp->delete(); } } } diff --git a/plugins/Event/forms/cancelrsvp.php b/plugins/Event/forms/cancelrsvp.php index 5c0399135d..4a07d46ba6 100644 --- a/plugins/Event/forms/cancelrsvp.php +++ b/plugins/Event/forms/cancelrsvp.php @@ -49,7 +49,7 @@ class CancelRSVPForm extends Form parent::__construct($out); if (!isset($formOpts['rsvp'])) { throw new ServerException('You must set the "rsvp" form option for RSVPForm.'); - } elseif (!$formOpts['rsvp'] instanceof Happening) { + } elseif (!$formOpts['rsvp'] instanceof RSVP) { throw new ServerException('The "rsvp" form option for RSVPForm must be an RSVP object.'); } $this->rsvp = $formOpts['rsvp'];