]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Old-school settings page
authorEvan Prodromou <evan@status.net>
Sat, 24 Sep 2011 14:14:45 +0000 (10:14 -0400)
committerEvan Prodromou <evan@status.net>
Sat, 24 Sep 2011 14:14:45 +0000 (10:14 -0400)
A page to set or remove old-school settings.

actions/oldschoolsettings.php [new file with mode: 0644]
lib/router.php
lib/settingsnav.php

diff --git a/actions/oldschoolsettings.php b/actions/oldschoolsettings.php
new file mode 100644 (file)
index 0000000..74c6c05
--- /dev/null
@@ -0,0 +1,228 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2011, StatusNet, Inc.
+ *
+ * Settings panel for old-school UI
+ * 
+ * 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  Oldschool
+ * @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);
+}
+
+/**
+ * Old-school settings
+ *
+ * @category  Oldschool
+ * @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 OldschoolsettingsAction extends SettingsAction
+{
+    /**
+     * Title of the page
+     *
+     * @return string Title of the page
+     */
+    function title()
+    {
+        // TRANS: Page title for profile settings.
+        return _('Old school UI settings');
+    }
+
+    /**
+     * Instructions for use
+     *
+     * @return instructions for use
+     */
+    function getInstructions()
+    {
+        // TRANS: Usage instructions for profile settings.
+        return _('If you like it "the old way", you can set that here.');
+    }
+
+    /**
+     * For initializing members of the class.
+     *
+     * @param array $argarray misc. arguments
+     *
+     * @return boolean true
+     */
+
+    function prepare($argarray)
+    {
+        if (!common_config('oldschool', 'enabled')) {
+            throw new ClientException("Old-school settings not enabled.");
+        }
+        parent::prepare($argarray);
+        return true;
+    }
+
+    /**
+     * Handler method
+     *
+     * @param array $argarray is ignored since it's now passed in in prepare()
+     *
+     * @return void
+     */
+
+    function handlePost()
+    {
+        $user = common_current_user();
+
+        $osp = Old_school_prefs::staticGet('user_id', $user->id);
+        $orig = null;
+
+        if (!empty($osp)) {
+            $orig = clone($osp);
+        } else {
+            $osp = new Old_school_prefs();
+            $osp->user_id = $user->id;
+            $osp->created = common_sql_now();
+        }
+
+        $osp->stream_mode_only  = $this->boolean('stream_mode_only');
+        $osp->conversation_tree = $this->boolean('conversation_tree');
+        $osp->stream_nicknames  = $this->boolean('stream_nicknames');
+        $osp->modified          = common_sql_now();
+
+        if (!empty($orig)) {
+            $osp->update($orig);
+        } else {
+            $osp->insert();
+        }
+
+        // TRANS: Confirmation shown when user profile settings are saved.
+        $this->showForm(_('Settings saved.'), true);
+
+        return;
+    }
+
+    function showContent()
+    {
+        $user = common_current_user();
+        $form = new OldSchoolForm($this, $user);
+        $form->show();
+    }
+}
+
+class OldSchoolForm extends Form
+{
+    var $user;
+
+    function __construct($out, $user)
+    {
+        parent::__construct($out);
+        $this->user = $user;
+    }
+
+    /**
+     * 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('stream_mode_only', _('Only stream mode (no conversations) in timelines'),
+                        $this->user->streamModeOnly());
+        $this->elementEnd('li');
+        $this->elementStart('li');
+        $this->checkbox('conversation_tree', _('Show conversation page as hierarchical trees'),
+                        $this->user->conversationTree());
+        $this->elementEnd('li');
+        $this->elementStart('li');
+        $this->checkbox('stream_nicknames', _('Show nicknames (not full names) in timelines'),
+                        $this->user->streamNicknames());
+        $this->elementEnd('li');
+        $this->elementEnd('fieldset');
+        $this->elementEnd('ul');
+    }
+
+    /**
+     * 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_oldschool';
+    }
+
+    /**
+     * 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('oldschoolsettings');
+    }
+
+    /**
+     * Class of the form. May include space-separated list of multiple classes.
+     *
+     * @return string the form's class
+     */
+
+    function formClass()
+    {
+        return 'form_settings';
+    }
+}
index 1fb516562192aa34bc5d91f5d8d3b921df887676..b0124375deb62726d3e8b00507c13a54963a17b8 100644 (file)
@@ -184,6 +184,10 @@ class Router
                 $m->connect('settings/'.$s, array('action' => $s.'settings'));
             }
 
+            if (common_config('oldschool', 'enabled')) {
+                $m->connect('settings/oldschool', array('action' => 'oldschoolsettings'));
+            }
+
             $m->connect('settings/oauthapps/show/:id',
                         array('action' => 'showapplication'),
                         array('id' => '[0-9]+')
index 67d5c35314a60e726e847288c3777f34a7f63293..8b664fbae650ad5a3e6cdbcb6e402bbeb9503ba7 100644 (file)
@@ -150,6 +150,15 @@ class SettingsNav extends Menu
                                     _('Authorized connected applications'),
                                     $actionName == 'oauthconnectionsettings');
 
+            if (common_config('oldschool', 'enabled')) {
+                $this->action->menuItem(common_local_url('oldschoolsettings'),
+                                        // TRANS: Menu item in settings navigation panel.
+                                        _m('MENU','Old school'),
+                                        // TRANS: Menu item title in settings navigation panel.
+                                        _('UI tweaks for old-school users'),
+                                        $actionName == 'oldschoolsettings');
+            }
+
             Event::handle('EndConnectSettingsNav', array(&$this->action));
         }