]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/useradminpanel.php
ShowprofiletagAction now extends ShowstreamAction
[quix0rs-gnu-social.git] / actions / useradminpanel.php
index de475a27bf34d1e61c2beeca3fd0b9f70ab1a080..7c21b91a5ec25ef61d67b5e7325577a682123a44 100644 (file)
@@ -12,6 +12,7 @@
  * (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.
@@ -24,7 +25,7 @@
  * @author    Evan Prodromou <evan@status.net>
  * @author    Zach Copley <zach@status.net>
  * @author    Sarven Capadisli <csarven@status.net>
- * @copyright 2008-2009 StatusNet, Inc.
+ * @copyright 2008-2010 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link      http://status.net/
  */
@@ -44,7 +45,6 @@ if (!defined('STATUSNET')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-
 class UseradminpanelAction extends AdminPanelAction
 {
     /**
@@ -52,10 +52,10 @@ class UseradminpanelAction extends AdminPanelAction
      *
      * @return string page title
      */
-
     function title()
     {
-        return _('User');
+        // TRANS: User admin panel title.
+        return _m('TITLE', 'User');
     }
 
     /**
@@ -63,10 +63,10 @@ class UseradminpanelAction extends AdminPanelAction
      *
      * @return string instructions
      */
-
     function getInstructions()
     {
-        return _('User settings for this StatusNet site.');
+        // TRANS: Instruction for user admin panel.
+        return _('User settings for this StatusNet site');
     }
 
     /**
@@ -74,7 +74,6 @@ class UseradminpanelAction extends AdminPanelAction
      *
      * @return void
      */
-
     function showForm()
     {
         $form = new UserAdminPanelForm($this);
@@ -87,16 +86,29 @@ class UseradminpanelAction extends AdminPanelAction
      *
      * @return void
      */
-
     function saveSettings()
     {
-        static $settings = array('theme');
-        static $booleans = array('closed', 'inviteonly', 'private');
+        static $settings = array(
+                'profile' => array('biolimit'),
+                'newuser' => array('welcome', 'default')
+        );
+
+        static $booleans = array(
+            'invite' => array('enabled')
+        );
 
         $values = array();
 
-        foreach ($settings as $setting) {
-            $values[$setting] = $this->trimmed($setting);
+        foreach ($settings as $section => $parts) {
+            foreach ($parts as $setting) {
+                $values[$section][$setting] = $this->trimmed("$section-$setting");
+            }
+        }
+
+        foreach ($booleans as $section => $parts) {
+            foreach ($parts as $setting) {
+                $values[$section][$setting] = ($this->boolean("$section-$setting")) ? 1 : 0;
+            }
         }
 
         // This throws an exception on validation errors
@@ -109,8 +121,16 @@ class UseradminpanelAction extends AdminPanelAction
 
         $config->query('BEGIN');
 
-        foreach ($settings as $setting) {
-            Config::save('site', $setting, $values[$setting]);
+        foreach ($settings as $section => $parts) {
+            foreach ($parts as $setting) {
+                Config::save($section, $setting, $values[$section][$setting]);
+            }
+        }
+
+        foreach ($booleans as $section => $parts) {
+            foreach ($parts as $setting) {
+                Config::save($section, $setting, $values[$section][$setting]);
+            }
         }
 
         $config->query('COMMIT');
@@ -120,17 +140,46 @@ class UseradminpanelAction extends AdminPanelAction
 
     function validate(&$values)
     {
+        // Validate biolimit
+
+        if (!Validate::number($values['profile']['biolimit'])) {
+            // TRANS: Form validation error in user admin panel when a non-numeric character limit was set.
+            $this->clientError(_('Invalid bio limit. Must be numeric.'));
+        }
+
+        // Validate welcome text
+
+        if (mb_strlen($values['newuser']['welcome']) > 255) {
+            // TRANS: Form validation error in user admin panel when welcome text is too long.
+            $this->clientError(_('Invalid welcome text. Maximum length is 255 characters.'));
+        }
+
+        // Validate default subscription
+
+        if (!empty($values['newuser']['default'])) {
+            $defuser = User::getKV('nickname', trim($values['newuser']['default']));
+            if (empty($defuser)) {
+                $this->clientError(
+                    sprintf(
+                        // TRANS: Client error displayed when trying to set a non-existing user as default subscription for new
+                        // TRANS: users in user admin panel. %1$s is the invalid nickname.
+                        _('Invalid default subscripton: "%1$s" is not a user.'),
+                        $values['newuser']['default']
+                    )
+                );
+            }
+        }
     }
 }
 
-class UserAdminPanelForm extends Form
+// @todo FIXME: Class documentation missing.
+class UserAdminPanelForm extends AdminForm
 {
     /**
      * ID of the form
      *
      * @return int ID of the form
      */
-
     function id()
     {
         return 'useradminpanel';
@@ -141,10 +190,9 @@ class UserAdminPanelForm extends Form
      *
      * @return string class of the form
      */
-
     function formClass()
     {
-        return 'form_user_admin_panel';
+        return 'form_settings';
     }
 
     /**
@@ -152,7 +200,6 @@ class UserAdminPanelForm extends Form
      *
      * @return string URL of the action
      */
-
     function action()
     {
         return common_local_url('useradminpanel');
@@ -163,56 +210,82 @@ class UserAdminPanelForm extends Form
      *
      * @return void
      */
-
     function formData()
     {
+        $this->out->elementStart('fieldset', array('id' => 'settings_user-profile'));
+        // TRANS: Fieldset legend in user administration panel.
+        $this->out->element('legend', null, _m('LEGEND','Profile'));
+        $this->out->elementStart('ul', 'form_data');
+
         $this->li();
+        // TRANS: Field label in user admin panel for setting the character limit for the bio field.
+        $this->input('biolimit', _('Bio Limit'),
+                     // TRANS: Tooltip in user admin panel for setting the character limit for the bio field.
+                     _('Maximum length of a profile bio in characters.'),
+                     'profile');
+        $this->unli();
+
+        $this->out->elementEnd('ul');
+        $this->out->elementEnd('fieldset');
 
-        $this->out->checkbox('closed', _('Closed'),
-                             (bool) $this->value('closed'),
-                             _('Is registration on this site prohibited?'));
+        $this->out->elementStart('fieldset', array('id' => 'settings_user-newusers'));
+        // TRANS: Form legend in user admin panel.
+        $this->out->element('legend', null, _('New users'));
+        $this->out->elementStart('ul', 'form_data');
 
+        $this->li();
+        // TRANS: Field label in user admin panel for setting new user welcome text.
+        $this->input('welcome', _('New user welcome'),
+                     // TRANS: Tooltip in user admin panel for setting new user welcome text.
+                     _('Welcome text for new users (maximum 255 characters).'),
+                     'newuser');
         $this->unli();
+
         $this->li();
+        // TRANS: Field label in user admin panel for setting default subscription for new users.
+        $this->input('default', _('Default subscription'),
+                     // TRANS: Tooltip in user admin panel for setting default subscription for new users.
+                     _('Automatically subscribe new users to this user.'),
+                     'newuser');
+        $this->unli();
 
-        $this->out->checkbox('inviteonly', _('Invite-only'),
-                             (bool) $this->value('inviteonly'),
-                             _('Is registration on this site only open to invited users?'));
+        $this->out->elementEnd('ul');
 
+        $this->out->elementEnd('fieldset');
+
+        $this->out->elementStart('fieldset', array('id' => 'settings_user-invitations'));
+        // TRANS: Form legend in user admin panel.
+        $this->out->element('legend', null, _('Invitations'));
+        $this->out->elementStart('ul', 'form_data');
+
+        $this->li();
+
+        // TRANS: Field label for checkbox in user admin panel for allowing users to invite friend using site e-mail.
+        $this->out->checkbox('invite-enabled', _('Invitations enabled'),
+                              (bool) $this->value('enabled', 'invite'),
+                              // TRANS: Tooltip for checkbox in user admin panel for allowing users to invite friend using site e-mail.
+                              _('Whether to allow users to invite new users.'));
         $this->unli();
+
+        $this->out->elementEnd('ul');
+        $this->out->elementEnd('fieldset');
     }
 
     /**
      * Utility to simplify some of the duplicated code around
-     * params and settings.
+     * params and settings.  Overrided from base class to be
+     * more specific about input ids.
      *
      * @param string $setting      Name of the setting
      * @param string $title        Title to use for the input
      * @param string $instructions Instructions for this field
+     * @param string $section      config section, default = 'site'
      *
      * @return void
      */
-
-    function input($setting, $title, $instructions)
+    function input($setting, $title, $instructions, $section='site')
     {
-        $this->out->input($setting, $title, $this->value($setting), $instructions);
-    }
-
-    /**
-     * Utility to simplify getting the posted-or-stored setting value
-     *
-     * @param string $setting Name of the setting
-     *
-     * @return string param value if posted, or current config value
-     */
-
-    function value($cat, $setting)
-    {
-        $value = $this->out->trimmed($setting);
-        if (empty($value)) {
-            $value = common_config($cat, $setting);
-        }
-        return $value;
+        $this->out->input("$section-$setting", $title, $this->value($setting, $section), $instructions);
     }
 
     /**
@@ -220,9 +293,14 @@ class UserAdminPanelForm extends Form
      *
      * @return void
      */
-
     function formActions()
     {
-        $this->out->submit('submit', _('Save'), 'submit', null, _('Save site settings'));
+        $this->out->submit('submit',
+                           // TRANS: Button text to save user settings in user admin panel.
+                           _m('BUTTON','Save'),
+                           'submit',
+                           null,
+                           // TRANS: Button title to save user settings in user admin panel.
+                           _('Save user settings.'));
     }
 }