From 712a6d49d0cb9f8a6afffd7c2b163b429b0b2666 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Fri, 17 Jul 2015 16:19:02 +0200 Subject: [PATCH] Poll settings adapted to FormAction --- plugins/Poll/actions/pollsettings.php | 129 ++------------------------ plugins/Poll/forms/pollprefs.php | 87 +++++++++++++++++ 2 files changed, 97 insertions(+), 119 deletions(-) create mode 100644 plugins/Poll/forms/pollprefs.php diff --git a/plugins/Poll/actions/pollsettings.php b/plugins/Poll/actions/pollsettings.php index b390812cf4..b95465d8d6 100644 --- a/plugins/Poll/actions/pollsettings.php +++ b/plugins/Poll/actions/pollsettings.php @@ -27,9 +27,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('GNUSOCIAL')) { exit(1); } class PollSettingsAction extends SettingsAction { @@ -56,143 +54,36 @@ class PollSettingsAction extends SettingsAction return _m('Set your poll preferences'); } - /** - * Show the form for Poll - * - * @return void - */ - function showContent() + protected function getForm() { - $user = common_current_user(); - - $prefs = User_poll_prefs::getKV('user_id', $user->id); - + $prefs = User_poll_prefs::getKV('user_id', $this->scoped->getID()); $form = new PollPrefsForm($this, $prefs); - - $form->show(); + return $form; } - /** - * Handler method - * - * @param array $argarray is ignored since it's now passed in in prepare() - * - * @return void - */ - - function handlePost() + protected function doPost() { - $user = common_current_user(); - - $upp = User_poll_prefs::getKV('user_id', $user->id); + $upp = User_poll_prefs::getKV('user_id', $this->scoped->getID()); $orig = null; - if (!empty($upp)) { + if ($upp instanceof User_poll_prefs) { $orig = clone($upp); } else { $upp = new User_poll_prefs(); - $upp->user_id = $user->id; + $upp->user_id = $this->scoped->getID(); $upp->created = common_sql_now(); } $upp->hide_responses = $this->boolean('hide_responses'); $upp->modified = common_sql_now(); - if (!empty($orig)) { + if ($orig instanceof User_poll_prefs) { $upp->update($orig); } else { $upp->insert(); } // TRANS: Confirmation shown when user profile settings are saved. - $this->showForm(_('Settings saved.'), true); - - return; - } -} - -class PollPrefsForm extends Form -{ - var $prefs; - - function __construct($out, $prefs) - { - parent::__construct($out); - $this->prefs = $prefs; - } - - /** - * Visible or invisible data elements - * - * Display the form fields that make up the data of the form. - * Sub-classes should overload this to show their data. - * - * @return void - */ - - function formData() - { - $this->elementStart('fieldset'); - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->checkbox('hide_responses', - _('Do not deliver poll responses to my home timeline'), - (!empty($this->prefs) && $this->prefs->hide_responses)); - $this->elementEnd('li'); - $this->elementEnd('ul'); - $this->elementEnd('fieldset'); - } - - /** - * Buttons for form actions - * - * Submit and cancel buttons (or whatever) - * Sub-classes should overload this to show their own buttons. - * - * @return void - */ - - function formActions() - { - $this->submit('submit', _('Save')); - } - - /** - * ID of the form - * - * Should be unique on the page. Sub-classes should overload this - * to show their own IDs. - * - * @return int ID of the form - */ - - function id() - { - return 'form_poll_prefs'; - } - - /** - * Action of the form. - * - * URL to post to. Should be overloaded by subclasses to give - * somewhere to post to. - * - * @return string URL to post to - */ - - function action() - { - return common_local_url('pollsettings'); - } - - /** - * Class of the form. May include space-separated list of multiple classes. - * - * @return string the form's class - */ - - function formClass() - { - return 'form_settings'; + return _('Settings saved.'); } } diff --git a/plugins/Poll/forms/pollprefs.php b/plugins/Poll/forms/pollprefs.php new file mode 100644 index 0000000000..627b77d948 --- /dev/null +++ b/plugins/Poll/forms/pollprefs.php @@ -0,0 +1,87 @@ +prefs = $prefs; + } + + /** + * Visible or invisible data elements + * + * Display the form fields that make up the data of the form. + * Sub-classes should overload this to show their data. + * + * @return void + */ + + function formData() + { + $this->elementStart('fieldset'); + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->checkbox('hide_responses', + _('Do not deliver poll responses to my home timeline'), + ($this->prefs instanceof User_poll_prefs && $this->prefs->hide_responses)); + $this->elementEnd('li'); + $this->elementEnd('ul'); + $this->elementEnd('fieldset'); + } + + /** + * Buttons for form actions + * + * Submit and cancel buttons (or whatever) + * Sub-classes should overload this to show their own buttons. + * + * @return void + */ + + function formActions() + { + $this->submit('submit', _('Save')); + } + + /** + * ID of the form + * + * Should be unique on the page. Sub-classes should overload this + * to show their own IDs. + * + * @return int ID of the form + */ + + function id() + { + return 'form_poll_prefs'; + } + + /** + * Action of the form. + * + * URL to post to. Should be overloaded by subclasses to give + * somewhere to post to. + * + * @return string URL to post to + */ + + function action() + { + return common_local_url('pollsettings'); + } + + /** + * Class of the form. May include space-separated list of multiple classes. + * + * @return string the form's class + */ + + function formClass() + { + return 'form_settings'; + } +}