]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge remote branch 'gitorious/1.0.x' into 1.0.x
authorEvan Prodromou <evan@status.net>
Tue, 5 Oct 2010 18:09:17 +0000 (14:09 -0400)
committerEvan Prodromou <evan@status.net>
Tue, 5 Oct 2010 18:09:17 +0000 (14:09 -0400)
actions/othersettings.php [deleted file]
actions/urlsettings.php [new file with mode: 0644]
actions/userdesignsettings.php
lib/accountsettingsaction.php
lib/designform.php
lib/designsettings.php
lib/router.php

diff --git a/actions/othersettings.php b/actions/othersettings.php
deleted file mode 100644 (file)
index 8d6e004..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Miscellaneous settings
- *
- * PHP version 5
- *
- * LICENCE: 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  Settings
- * @package   StatusNet
- * @author    Robin Millette <millette@status.net>
- * @author    Evan Prodromou <evan@status.net>
- * @copyright 2008-2009 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/
- */
-
-if (!defined('STATUSNET') && !defined('LACONICA')) {
-    exit(1);
-}
-
-require_once INSTALLDIR.'/lib/accountsettingsaction.php';
-
-/**
- * Miscellaneous settings actions
- *
- * Currently this just manages URL shortening.
- *
- * @category Settings
- * @package  StatusNet
- * @author   Robin Millette <millette@status.net>
- * @author   Zach Copley <zach@status.net>
- * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://status.net/
- */
-
-class OthersettingsAction extends AccountSettingsAction
-{
-    /**
-     * Title of the page
-     *
-     * @return string Title of the page
-     */
-
-    function title()
-    {
-        return _('Other settings');
-    }
-
-    /**
-     * Instructions for use
-     *
-     * @return instructions for use
-     */
-
-    function getInstructions()
-    {
-        return _('Manage various other options.');
-    }
-
-    function showScripts()
-    {
-        parent::showScripts();
-        $this->autofocus('urlshorteningservice');
-    }
-
-    /**
-     * Content area of the page
-     *
-     * Shows a form for uploading an avatar.
-     *
-     * @return void
-     */
-
-    function showContent()
-    {
-        $user = common_current_user();
-
-        $this->elementStart('form', array('method' => 'post',
-                                          'id' => 'form_settings_other',
-                                          'class' => 'form_settings',
-                                          'action' =>
-                                          common_local_url('othersettings')));
-        $this->elementStart('fieldset');
-        $this->hidden('token', common_session_token());
-        $this->elementStart('ul', 'form_data');
-
-        $shorteners = array(_('[none]') => array('freeService' => false));
-
-        Event::handle('GetUrlShorteners', array(&$shorteners));
-
-        $services = array();
-        foreach($shorteners as $name=>$value)
-        {
-            $services[$name]=$name;
-            if($value['freeService']){
-                $services[$name].=_(' (free service)');
-            }
-        }
-        if($services)
-        {
-            asort($services);
-
-            $this->elementStart('li');
-            $this->dropdown('urlshorteningservice', _('Shorten URLs with'),
-                            $services, _('Automatic shortening service to use.'),
-                            false, $user->urlshorteningservice);
-            $this->elementEnd('li');
-        }
-        $this->elementStart('li');
-        $this->input('maxurllength',
-                     _('URL longer than'),
-                     (!is_null($this->arg('maxurllength'))) ?
-                     $this->arg('maxurllength') : User_urlshortener_prefs::maxUrlLength($user),
-                     _('URLs longer than this will be shortened.'));
-        $this->elementEnd('li');
-        $this->elementStart('li');
-        $this->input('maxnoticelength',
-                     _('Text longer than'),
-                     (!is_null($this->arg('maxnoticelength'))) ?
-                     $this->arg('maxnoticelength') : User_urlshortener_prefs::maxNoticeLength($user),
-                     _('URLs in notices longer than this will be shortened.'));
-        $this->elementEnd('li');
-        $this->elementStart('li');
-        $this->checkbox('viewdesigns', _('View profile designs'),
-                         -                        $user->viewdesigns, _('Show or hide profile designs.'));
-        $this->elementEnd('li');
-        $this->elementEnd('ul');
-        $this->submit('save', _('Save'));
-        $this->elementEnd('fieldset');
-        $this->elementEnd('form');
-    }
-
-    /**
-     * Handle a post
-     *
-     * Saves the changes to url-shortening prefs and shows a success or failure
-     * message.
-     *
-     * @return void
-     */
-
-    function handlePost()
-    {
-        // CSRF protection
-        $token = $this->trimmed('token');
-        if (!$token || $token != common_session_token()) {
-            $this->showForm(_('There was a problem with your session token. '.
-                              'Try again, please.'));
-            return;
-        }
-
-        $urlshorteningservice = $this->trimmed('urlshorteningservice');
-
-        if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
-            $this->showForm(_('URL shortening service is too long (max 50 chars).'));
-            return;
-        }
-
-        $viewdesigns = $this->boolean('viewdesigns');
-
-        $maxurllength = $this->trimmed('maxurllength');
-
-        if (!Validate::number($maxurllength, array('min' => 0))) {
-            throw new ClientException(_('Invalid number for max url length.'));
-        }
-
-        $maxnoticelength = $this->trimmed('maxnoticelength');
-
-        if (!Validate::number($maxnoticelength, array('min' => 0))) {
-            throw new ClientException(_('Invalid number for max notice length.'));
-        }
-
-        $user = common_current_user();
-
-        assert(!is_null($user)); // should already be checked
-
-        $user->query('BEGIN');
-
-        $original = clone($user);
-
-        $user->urlshorteningservice = $urlshorteningservice;
-        $user->viewdesigns          = $viewdesigns;
-
-        $result = $user->update($original);
-
-        if ($result === false) {
-            common_log_db_error($user, 'UPDATE', __FILE__);
-            $this->serverError(_('Couldn\'t update user.'));
-            return;
-        }
-
-        $prefs = User_urlshortener_prefs::getPrefs($user);
-        $orig  = null;
-
-        if (empty($prefs)) {
-            $prefs = new User_urlshortener_prefs();
-
-            $prefs->user_id = $user->id;
-            $prefs->created = common_sql_now();
-        } else {
-            $orig = clone($prefs);
-        }
-
-        $prefs->urlshorteningservice = $urlshorteningservice;
-        $prefs->maxurllength         = $maxurllength;
-        $prefs->maxnoticelength      = $maxnoticelength;
-
-        if (!empty($orig)) {
-            $result = $prefs->update($orig);
-        } else {
-            $result = $prefs->insert();
-        }
-
-        if (!$result) {
-            throw new ServerException(_('Error saving user URL shortening preferences.'));
-        }
-
-        $user->query('COMMIT');
-
-        $this->showForm(_('Preferences saved.'), true);
-    }
-}
diff --git a/actions/urlsettings.php b/actions/urlsettings.php
new file mode 100644 (file)
index 0000000..ddf8daa
--- /dev/null
@@ -0,0 +1,229 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Miscellaneous settings
+ *
+ * PHP version 5
+ *
+ * LICENCE: 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  Settings
+ * @package   StatusNet
+ * @author    Robin Millette <millette@status.net>
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2009 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/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/accountsettingsaction.php';
+
+/**
+ * Miscellaneous settings actions
+ *
+ * Currently this just manages URL shortening.
+ *
+ * @category Settings
+ * @package  StatusNet
+ * @author   Robin Millette <millette@status.net>
+ * @author   Zach Copley <zach@status.net>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+
+class UrlsettingsAction extends AccountSettingsAction
+{
+    /**
+     * Title of the page
+     *
+     * @return string Title of the page
+     */
+
+    function title()
+    {
+        return _('URL settings');
+    }
+
+    /**
+     * Instructions for use
+     *
+     * @return instructions for use
+     */
+
+    function getInstructions()
+    {
+        return _('Manage various other options.');
+    }
+
+    function showScripts()
+    {
+        parent::showScripts();
+        $this->autofocus('urlshorteningservice');
+    }
+
+    /**
+     * Content area of the page
+     *
+     * Shows a form for uploading an avatar.
+     *
+     * @return void
+     */
+
+    function showContent()
+    {
+        $user = common_current_user();
+
+        $this->elementStart('form', array('method' => 'post',
+                                          'id' => 'form_settings_other',
+                                          'class' => 'form_settings',
+                                          'action' =>
+                                          common_local_url('urlsettings')));
+        $this->elementStart('fieldset');
+        $this->hidden('token', common_session_token());
+        $this->elementStart('ul', 'form_data');
+
+        $shorteners = array(_('[none]') => array('freeService' => false));
+
+        Event::handle('GetUrlShorteners', array(&$shorteners));
+
+        $services = array();
+        foreach($shorteners as $name=>$value)
+        {
+            $services[$name]=$name;
+            if($value['freeService']){
+                $services[$name].=_(' (free service)');
+            }
+        }
+        if($services)
+        {
+            asort($services);
+
+            $this->elementStart('li');
+            $this->dropdown('urlshorteningservice', _('Shorten URLs with'),
+                            $services, _('Automatic shortening service to use.'),
+                            false, $user->urlshorteningservice);
+            $this->elementEnd('li');
+        }
+        $this->elementStart('li');
+        $this->input('maxurllength',
+                     _('URL longer than'),
+                     (!is_null($this->arg('maxurllength'))) ?
+                     $this->arg('maxurllength') : User_urlshortener_prefs::maxUrlLength($user),
+                     _('URLs longer than this will be shortened, 0 means always shorten.'));
+        $this->elementEnd('li');
+        $this->elementStart('li');
+        $this->input('maxnoticelength',
+                     _('Text longer than'),
+                     (!is_null($this->arg('maxnoticelength'))) ?
+                     $this->arg('maxnoticelength') : User_urlshortener_prefs::maxNoticeLength($user),
+                     _('URLs in notices longer than this will be shortened, 0 means always shorten.'));
+        $this->elementEnd('li');
+        $this->elementEnd('ul');
+        $this->submit('save', _('Save'));
+        $this->elementEnd('fieldset');
+        $this->elementEnd('form');
+    }
+
+    /**
+     * Handle a post
+     *
+     * Saves the changes to url-shortening prefs and shows a success or failure
+     * message.
+     *
+     * @return void
+     */
+
+    function handlePost()
+    {
+        // CSRF protection
+        $token = $this->trimmed('token');
+        if (!$token || $token != common_session_token()) {
+            $this->showForm(_('There was a problem with your session token. '.
+                              'Try again, please.'));
+            return;
+        }
+
+        $urlshorteningservice = $this->trimmed('urlshorteningservice');
+
+        if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
+            $this->showForm(_('URL shortening service is too long (max 50 chars).'));
+            return;
+        }
+
+        $maxurllength = $this->trimmed('maxurllength');
+
+        if (!Validate::number($maxurllength, array('min' => 0))) {
+            throw new ClientException(_('Invalid number for max url length.'));
+        }
+
+        $maxnoticelength = $this->trimmed('maxnoticelength');
+
+        if (!Validate::number($maxnoticelength, array('min' => 0))) {
+            throw new ClientException(_('Invalid number for max notice length.'));
+        }
+
+        $user = common_current_user();
+
+        assert(!is_null($user)); // should already be checked
+
+        $user->query('BEGIN');
+
+        $original = clone($user);
+
+        $user->urlshorteningservice = $urlshorteningservice;
+
+        $result = $user->update($original);
+
+        if ($result === false) {
+            common_log_db_error($user, 'UPDATE', __FILE__);
+            $this->serverError(_('Couldn\'t update user.'));
+            return;
+        }
+
+        $prefs = User_urlshortener_prefs::getPrefs($user);
+        $orig  = null;
+
+        if (empty($prefs)) {
+            $prefs = new User_urlshortener_prefs();
+
+            $prefs->user_id = $user->id;
+            $prefs->created = common_sql_now();
+        } else {
+            $orig = clone($prefs);
+        }
+
+        $prefs->urlshorteningservice = $urlshorteningservice;
+        $prefs->maxurllength         = $maxurllength;
+        $prefs->maxnoticelength      = $maxnoticelength;
+
+        if (!empty($orig)) {
+            $result = $prefs->update($orig);
+        } else {
+            $result = $prefs->insert();
+        }
+
+        if (!$result) {
+            throw new ServerException(_('Error saving user URL shortening preferences.'));
+        }
+
+        $user->query('COMMIT');
+
+        $this->showForm(_('Preferences saved.'), true);
+    }
+}
index 1cf87800069f531440800d7661bd362279e6bdeb..e6caea3a1b742b92d58b9e23bd4036822765f307 100644 (file)
@@ -120,6 +120,20 @@ class UserDesignSettingsAction extends DesignSettingsAction
         $this->showDesignForm($design);
     }
 
+    /**
+     * Shows the design settings form
+     *
+     * @param Design $design a working design to show
+     *
+     * @return nothing
+     */
+
+    function showDesignForm($design)
+    {
+        $form = new UserDesignForm($this, $design, $this->submitaction);
+        $form->show();
+    }
+
     /**
      * Save or update the user's design settings
      *
@@ -128,6 +142,8 @@ class UserDesignSettingsAction extends DesignSettingsAction
 
     function saveDesign()
     {
+        $this->saveDesignPreferences();
+
         foreach ($this->args as $key => $val) {
             if (preg_match('/(#ho|ho)Td.*g/i', $val)) {
                 $this->sethd();
@@ -164,7 +180,8 @@ class UserDesignSettingsAction extends DesignSettingsAction
             $tile = true;
         }
 
-        $user   = common_current_user();
+        $user = common_current_user();
+
         $design = $user->getDesign();
 
         if (!empty($design)) {
@@ -282,4 +299,64 @@ class UserDesignSettingsAction extends DesignSettingsAction
         $this->showForm(_('Enjoy your hotdog!'), true);
     }
 
+    function saveDesignPreferences()
+    {
+        $viewdesigns = $this->boolean('viewdesigns');
+
+        $user = common_current_user();
+
+        $original = clone($user);
+
+        $user->viewdesigns = $viewdesigns;
+
+        $result = $user->update($original);
+
+        if ($result === false) {
+            common_log_db_error($user, 'UPDATE', __FILE__);
+            throw new ServerException(_('Couldn\'t update user.'));
+        }
+    }
+}
+
+class UserDesignForm extends DesignForm
+{
+    function __construct($out, $design, $actionurl)
+    {
+        parent::__construct($out, $design, $actionurl);
+    }
+
+    /**
+     * Legend of the Form
+     *
+     * @return void
+     */
+    function formLegend()
+    {
+        $this->out->element('legend', null, _('Design settings'));
+    }
+
+    /**
+     * Data elements of the form
+     *
+     * @return void
+     */
+
+    function formData()
+    {
+        $user = common_current_user();
+
+        $this->out->elementStart('ul', 'form_data');
+        $this->out->elementStart('li');
+        $this->out->checkbox('viewdesigns', _('View profile designs'),
+                         -                        $user->viewdesigns, _('Show or hide profile designs.'));
+        $this->out->elementEnd('li');
+        $this->out->elementEnd('ul');
+
+        $this->out->elementEnd('fieldset');
+
+        $this->out->elementStart('fieldset');
+        $this->out->element('legend', null, _('Background file'));
+
+        parent::formData();
+    }
 }
index 7991c9002c0fa287f8d2a0d25b34f69c9dd008f0..2c519e4abd3c48aaf4d3284d9385f1618c1f3953 100644 (file)
@@ -134,12 +134,12 @@ class AccountSettingsNav extends Widget
                 $this->showMenuItem('userdesignsettings',_('Design'),$title);
                 Event::handle('EndAccountSettingsDesignMenuItem', array($this, &$menu));
             }
-            if(Event::handle('StartAccountSettingsOtherMenuItem', array($this, &$menu))){
+            if(Event::handle('StartAccountSettingsUrlMenuItem', array($this, &$menu))){
                 // TRANS: Link title attribute in user account settings menu.
-                $title = _('Other options');
+                $title = _('URL shortener settings');
                 // TRANS: Link description in user account settings menu.
-                $this->showMenuItem('othersettings',_('Other'),$title);
-                Event::handle('EndAccountSettingsOtherMenuItem', array($this, &$menu));
+                $this->showMenuItem('urlsettings',_('URL'),$title);
+                Event::handle('EndAccountSettingsUrlMenuItem', array($this, &$menu));
             }
 
             Event::handle('EndAccountSettingsNav', array(&$this->action));
index b22d77f31258a3d9781de5ee2c56e2f7eceb7239..4163cfc1a661e41faebf5049f98a8cb239686cba 100644 (file)
@@ -121,6 +121,29 @@ class DesignForm extends Form
      */
 
     function formData()
+    {
+        $this->backgroundData();
+
+        $this->out->elementEnd('fieldset');
+
+        $this->out->elementStart('fieldset', array('id' => 'settings_design_color'));
+        $this->out->element('legend', null, _('Change colours'));
+        $this->colourData();
+        $this->out->elementEnd('fieldset');
+
+        $this->out->elementStart('fieldset');
+
+        $this->out->submit('defaults', _('Use defaults'), 'submit form_action-default',
+                           'defaults', _('Restore default designs'));
+
+        $this->out->element('input', array('id' => 'settings_design_reset',
+                                           'type' => 'reset',
+                                           'value' => 'Reset',
+                                           'class' => 'submit form_action-primary',
+                                           'title' => _('Reset back to default')));
+    }
+
+    function backgroundData()
     {
         $this->out->elementStart('ul', 'form_data');
         $this->out->elementStart('li');
@@ -137,13 +160,13 @@ class DesignForm extends Form
                                            'value' => ImageFile::maxFileSizeInt()));
         $this->out->elementEnd('li');
 
-        if (!empty($design->backgroundimage)) {
+        if (!empty($this->design->backgroundimage)) {
 
             $this->out->elementStart('li', array('id' =>
                                                  'design_background-image_onoff'));
 
             $this->out->element('img', array('src' =>
-                                             Design::url($design->backgroundimage)));
+                                             Design::url($this->design->backgroundimage)));
 
             $attrs = array('name' => 'design_background-image_onoff',
                            'type' => 'radio',
@@ -151,7 +174,7 @@ class DesignForm extends Form
                            'class' => 'radio',
                            'value' => 'on');
 
-            if ($design->disposition & BACKGROUND_ON) {
+            if ($this->design->disposition & BACKGROUND_ON) {
                 $attrs['checked'] = 'checked';
             }
 
@@ -167,7 +190,7 @@ class DesignForm extends Form
                            'class' => 'radio',
                            'value' => 'off');
 
-            if ($design->disposition & BACKGROUND_OFF) {
+            if ($this->design->disposition & BACKGROUND_OFF) {
                 $attrs['checked'] = 'checked';
             }
 
@@ -182,20 +205,20 @@ class DesignForm extends Form
             $this->out->elementStart('li');
             $this->out->checkbox('design_background-image_repeat',
                                  _('Tile background image'),
-                                 ($design->disposition & BACKGROUND_TILE) ? true : false);
+                                 ($this->design->disposition & BACKGROUND_TILE) ? true : false);
             $this->out->elementEnd('li');
         }
 
         $this->out->elementEnd('ul');
-        $this->out->elementEnd('fieldset');
+    }
 
-        $this->out->elementStart('fieldset', array('id' => 'settings_design_color'));
-        $this->out->element('legend', null, _('Change colours'));
+    function colourData()
+    {
         $this->out->elementStart('ul', 'form_data');
 
         try {
 
-            $bgcolor = new WebColor($design->backgroundcolor);
+            $bgcolor = new WebColor($this->design->backgroundcolor);
 
             $this->out->elementStart('li');
             $this->out->element('label', array('for' => 'swatch-1'), _('Background'));
@@ -208,7 +231,7 @@ class DesignForm extends Form
                                                'value' => ''));
             $this->out->elementEnd('li');
 
-            $ccolor = new WebColor($design->contentcolor);
+            $ccolor = new WebColor($this->design->contentcolor);
 
             $this->out->elementStart('li');
             $this->out->element('label', array('for' => 'swatch-2'), _('Content'));
@@ -221,7 +244,7 @@ class DesignForm extends Form
                                                'value' => ''));
             $this->out->elementEnd('li');
 
-            $sbcolor = new WebColor($design->sidebarcolor);
+            $sbcolor = new WebColor($this->design->sidebarcolor);
 
             $this->out->elementStart('li');
             $this->out->element('label', array('for' => 'swatch-3'), _('Sidebar'));
@@ -234,7 +257,7 @@ class DesignForm extends Form
                                                'value' => ''));
             $this->out->elementEnd('li');
 
-            $tcolor = new WebColor($design->textcolor);
+            $tcolor = new WebColor($this->design->textcolor);
 
             $this->out->elementStart('li');
             $this->out->element('label', array('for' => 'swatch-4'), _('Text'));
@@ -247,7 +270,7 @@ class DesignForm extends Form
                                                'value' => ''));
             $this->out->elementEnd('li');
 
-            $lcolor = new WebColor($design->linkcolor);
+            $lcolor = new WebColor($this->design->linkcolor);
 
             $this->out->elementStart('li');
             $this->out->element('label', array('for' => 'swatch-5'), _('Links'));
@@ -261,22 +284,10 @@ class DesignForm extends Form
             $this->out->elementEnd('li');
 
         } catch (WebColorException $e) {
-            common_log(LOG_ERR, 'Bad color values in design ID: ' .$design->id);
+            common_log(LOG_ERR, 'Bad color values in design ID: ' .$this->design->id);
         }
 
         $this->out->elementEnd('ul');
-        $this->out->elementEnd('fieldset');
-
-        $this->out->elementStart('fieldset');
-
-        $this->out->submit('defaults', _('Use defaults'), 'submit form_action-default',
-                           'defaults', _('Restore default designs'));
-
-        $this->out->element('input', array('id' => 'settings_design_reset',
-                                           'type' => 'reset',
-                                           'value' => 'Reset',
-                                           'class' => 'submit form_action-primary',
-                                           'title' => _('Reset back to default')));
     }
 
     /**
index 98ef8256cd9859d1af679901b69691ff34889fee..58578f18861a03d272b3eed85166839a4c43ac14 100644 (file)
@@ -174,28 +174,26 @@ class DesignSettingsAction extends AccountSettingsAction
 
     function saveBackgroundImage($design)
     {
-
         // Now that we have a Design ID we can add a file to the design.
         // XXX: This is an additional DB hit, but figured having the image
         // associated with the Design rather than the User was worth
         // it. -- Zach
 
-        if ($_FILES['design_background-image_file']['error'] ==
-            UPLOAD_ERR_OK) {
+        if (array_key_exists('design_background-image_file', $_FILES) &&
+          $_FILES['design_background-image_file']['error'] == UPLOAD_ERR_OK) {
 
             $filepath = null;
 
             try {
-                $imagefile =
-                    ImageFile::fromUpload('design_background-image_file');
+                $imagefile = ImageFile::fromUpload('design_background-image_file');
             } catch (Exception $e) {
                 $this->showForm($e->getMessage());
                 return;
             }
 
             $filename = Design::filename($design->id,
-                image_type_to_extension($imagefile->type),
-                    common_timestamp());
+                                         image_type_to_extension($imagefile->type),
+                                         common_timestamp());
 
             $filepath = Design::path($filename);
 
index 3bbb4a044e5009c22a2ab8d00b8a92703788f4d9..86f4fa02ac50b2886fc5385301306a9e260ef431 100644 (file)
@@ -172,7 +172,7 @@ class Router
             // settings
 
             foreach (array('profile', 'avatar', 'password', 'im', 'oauthconnections',
-                           'oauthapps', 'email', 'sms', 'userdesign', 'other') as $s) {
+                           'oauthapps', 'email', 'sms', 'userdesign', 'url') as $s) {
                 $m->connect('settings/'.$s, array('action' => $s.'settings'));
             }