diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php
index 13e84805967c0eed3b95c608614e15e98f99462b..53350912852b29e30f87235b0734b1349a7c79e5 100644
--- a/core/Menu/MenuAdmin.php
+++ b/core/Menu/MenuAdmin.php
@@ -117,7 +117,7 @@ class MenuAdmin extends MenuAbstract
      */
     public function addManageItem($menuName, $url, $order = 50, $tooltip = false)
     {
-        $this->addItem('CoreAdminHome_MenuManage', $menuName, $url, $order, $tooltip);
+        $this->addItem('CoreAdminHome_Administration', $menuName, $url, $order, $tooltip);
     }
 
     /**
@@ -143,29 +143,6 @@ class MenuAdmin extends MenuAbstract
         return parent::getMenu();
     }
 
-    /**
-     * Returns the current AdminMenu name
-     *
-     * @return boolean
-     */
-    public function getCurrentAdminMenuName()
-    {
-        $menu = MenuAdmin::getInstance()->getMenu();
-        $currentModule = Piwik::getModule();
-        $currentAction = Piwik::getAction();
-        foreach ($menu as $submenu) {
-            foreach ($submenu as $subMenuName => $parameters) {
-                if (strpos($subMenuName, '_') !== 0 &&
-                    $parameters['_url']['module'] == $currentModule
-                    && $parameters['_url']['action'] == $currentAction
-                ) {
-                    return $subMenuName;
-                }
-            }
-        }
-        return false;
-    }
-
     /**
      * @deprecated since version 2.4.0. See {@link Piwik\Plugin\Menu} for new implementation.
      */
diff --git a/core/Menu/MenuUser.php b/core/Menu/MenuUser.php
index 758ac3d578c5877050b8d421ad600ff0052621ad..ac3bc295abf6182e89a7770e04271b8aa46f2d31 100755
--- a/core/Menu/MenuUser.php
+++ b/core/Menu/MenuUser.php
@@ -31,6 +31,20 @@ namespace Piwik\Menu;
 class MenuUser extends MenuAbstract
 {
 
+    /**
+     * See {@link add()}. Adds a new menu item to the manage section of the user menu.
+     * @param string $menuName
+     * @param array $url
+     * @param int $order
+     * @param bool|string $tooltip
+     * @api
+     * @since 2.5.0
+     */
+    public function addPersonalItem($menuName, $url, $order = 50, $tooltip = false)
+    {
+        $this->addItem('UsersManager_MenuPersonal', $menuName, $url, $order, $tooltip);
+    }
+
     /**
      * See {@link add()}. Adds a new menu item to the manage section of the user menu.
      * @param string $menuName
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index 23184caa8f16d757330e9fbc60421f7d50bcd864..b0c86a6b1a098c83db1b82899d22ce042d2508ca 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -148,7 +148,6 @@ abstract class ControllerAdmin extends Controller
      * - **statisticsNotRecorded** - Set to true if the `[Tracker] record_statistics` INI
      *                               config is `0`. If not `0`, this variable will not be defined.
      * - **topMenu** - The result of `MenuTop::getInstance()->getMenu()`.
-     * - **currentAdminMenuName** - The currently selected admin menu name.
      * - **enableFrames** - The value of the `[General] enable_framed_pages` INI config option. If
      *                    true, {@link Piwik\View::setXFrameOptions()} is called on the view.
      * - **isSuperUser** - Whether the current user is a superuser or not.
@@ -170,7 +169,6 @@ abstract class ControllerAdmin extends Controller
 
         $view->topMenu  = MenuTop::getInstance()->getMenu();
         $view->userMenu = MenuUser::getInstance()->getMenu();
-        $view->currentAdminMenuName = MenuAdmin::getInstance()->getCurrentAdminMenuName();
 
         $view->isDataPurgeSettingsEnabled = self::isDataPurgeSettingsEnabled();
         $enableFrames = PiwikConfig::getInstance()->General['enable_framed_settings'];
diff --git a/core/Settings/Manager.php b/core/Settings/Manager.php
index bbe696792bcca96845fab0db241c2785c004ee75..f3862989e10f2f62fdcdb22575de6338d5d2a5ea 100644
--- a/core/Settings/Manager.php
+++ b/core/Settings/Manager.php
@@ -102,22 +102,57 @@ class Manager
         return $settingsForUser;
     }
 
-    public static function hasPluginSettingsForCurrentUser($pluginName)
+    public static function hasSystemPluginSettingsForCurrentUser($pluginName)
     {
-        $pluginNames = array_keys(static::getPluginSettingsForCurrentUser());
+        $pluginNames = static::getPluginNamesHavingSystemSettings();
 
         return in_array($pluginName, $pluginNames);
     }
 
     /**
-     * Detects whether there are settings for activated plugins available that the current user can change.
+     * Detects whether there are user settings for activated plugins available that the current user can change.
      *
      * @return bool
      */
-    public static function hasPluginsSettingsForCurrentUser()
+    public static function hasUserPluginsSettingsForCurrentUser()
     {
         $settings = static::getPluginSettingsForCurrentUser();
 
+        foreach ($settings as $setting) {
+            foreach ($setting->getSettingsForCurrentUser() as $set) {
+                if ($set instanceof UserSetting) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    public static function getPluginNamesHavingSystemSettings()
+    {
+        $settings = static::getPluginSettingsForCurrentUser();
+        $plugins  = array();
+
+        foreach ($settings as $pluginName => $setting) {
+            foreach ($setting->getSettingsForCurrentUser() as $set) {
+                if ($set instanceof SystemSetting) {
+                    $plugins[] = $pluginName;
+                }
+            }
+        }
+
+        return array_unique($plugins);
+    }
+    /**
+     * Detects whether there are system settings for activated plugins available that the current user can change.
+     *
+     * @return bool
+     */
+    public static function hasSystemPluginsSettingsForCurrentUser()
+    {
+        $settings = static::getPluginNamesHavingSystemSettings();
+
         return !empty($settings);
     }
 
diff --git a/plugins/API/templates/listAllAPI.twig b/plugins/API/templates/listAllAPI.twig
index e4cf96174ca67f777c8718ed4d22b749ca25db48..4bf0c04600571ca42f194e2c0f9a0cd64f3abdf8 100644
--- a/plugins/API/templates/listAllAPI.twig
+++ b/plugins/API/templates/listAllAPI.twig
@@ -1,28 +1,27 @@
-{% extends 'dashboard.twig' %}
-{% set showMenu=false %}
+{% extends 'user.twig' %}
 
 {% block content %}
 
-{% include "@CoreHome/_siteSelectHeader.twig" %}
+<div>
 
-<div class="page_api pageWrap">
+    <h2>{{ 'API_QuickDocumentationTitle'|translate }}</h2>
+
+    {% include "@CoreHome/_siteSelectHeader.twig" %}
 
     <div class="top_controls">
         {% include "@CoreHome/_periodSelect.twig" %}
     </div>
 
-    <h2>{{ 'API_QuickDocumentationTitle'|translate }}</h2>
-
     <p>{{ 'API_PluginDescription'|translate }}</p>
 
     <p>
-        <strong>{{ 'API_MoreInformation'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=http://piwik.org/docs/analytics-api'>","</a>","<a target='_blank' href='?module=Proxy&action=redirect&url=http://piwik.org/docs/analytics-api/reference'>","</a>")|raw }}</strong>
+        {{ 'API_MoreInformation'|translate("<a target='_blank' href='?module=Proxy&action=redirect&url=http://piwik.org/docs/analytics-api'>","</a>","<a target='_blank' href='?module=Proxy&action=redirect&url=http://piwik.org/docs/analytics-api/reference'>","</a>")|raw }}
     </p>
 
     <h2>{{ 'API_UserAuthentication'|translate }}</h2>
 
     <p>
-        {{ 'API_UsingTokenAuth'|translate('<b>','</b>',"")|raw }}<br/>
+        {{ 'API_UsingTokenAuth'|translate('','',"")|raw }}<br/>
         <span id='token_auth'>&amp;token_auth=<strong>{{ token_auth }}</strong></span><br/>
         {{ 'API_KeepTokenSecret'|translate('<b>','</b>')|raw }}
         {{ list_api_methods_with_links|raw }}
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index c03577e5e5fed054296b3034429ab17b8e4ae496..96a788b0647c68348a526928884f6010afc8857b 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -25,6 +25,8 @@ use Piwik\Plugins\LanguagesManager\LanguagesManager;
 use Piwik\Plugins\PrivacyManager\DoNotTrackHeaderChecker;
 use Piwik\Plugins\SitesManager\API as APISitesManager;
 use Piwik\Settings\Manager as SettingsManager;
+use Piwik\Settings\SystemSetting;
+use Piwik\Settings\UserSetting;
 use Piwik\Site;
 use Piwik\Tracker\IgnoreCookie;
 use Piwik\Url;
@@ -45,7 +47,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
 
     public function generalSettings()
     {
-        Piwik::checkUserHasSomeAdminAccess();
+        Piwik::checkUserHasSuperUserAccess();
         $view = new View('@CoreAdminHome/generalSettings');
 
         if (Piwik::hasUserSuperUserAccess()) {
@@ -69,7 +71,53 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
         return $view->render();
     }
 
-    public function pluginSettings()
+    public function adminPluginSettings()
+    {
+        Piwik::checkUserHasSuperUserAccess();
+
+        $settings = $this->getPluginSettings();
+
+        $vars = array(
+            'nonce'                      => Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE),
+            'pluginsSettings'            => $this->getSettingsByType($settings, 'admin'),
+            'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings),
+            'mode' => 'admin'
+        );
+
+        return $this->renderTemplate('pluginSettings', $vars);
+    }
+
+    /**
+     * @param \Piwik\Plugin\Settings[] $pluginsSettings
+     * @return array   array([pluginName] => [])
+     */
+    private function getSettingsByType($pluginsSettings, $mode)
+    {
+        $byType = array();
+
+        foreach ($pluginsSettings as $pluginName => $pluginSettings) {
+            $settings = array();
+
+            foreach ($pluginSettings->getSettingsForCurrentUser() as $setting) {
+                if ('admin' === $mode && $setting instanceof SystemSetting) {
+                    $settings[] = $setting;
+                } elseif ('user' === $mode && $setting instanceof UserSetting) {
+                    $settings[] = $setting;
+                }
+            }
+
+            if (!empty($settings)) {
+                $byType[$pluginName] = array(
+                    'introduction' => $pluginSettings->getIntroduction(),
+                    'settings' => $settings
+                );
+            }
+        }
+
+        return $byType;
+    }
+
+    public function userPluginSettings()
     {
         Piwik::checkUserIsNotAnonymous();
 
@@ -77,8 +125,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
 
         $vars = array(
             'nonce'                      => Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE),
-            'pluginSettings'             => $settings,
-            'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings)
+            'pluginsSettings'            => $this->getSettingsByType($settings, 'user'),
+            'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings),
+            'mode' => 'user'
         );
 
         return $this->renderTemplate('pluginSettings', $vars);
diff --git a/plugins/CoreAdminHome/Menu.php b/plugins/CoreAdminHome/Menu.php
index 17be9db0e0713e9a14089a7ee11b3483fa121f1f..57dd069a9f1d5e79cb5471dccbbe07a3a3678d4a 100644
--- a/plugins/CoreAdminHome/Menu.php
+++ b/plugins/CoreAdminHome/Menu.php
@@ -28,17 +28,16 @@ class Menu extends \Piwik\Plugin\Menu
             $menu->addDiagnosticItem(null, "", $order = 10);
             $menu->addDevelopmentItem(null, "", $order = 15);
 
-            $menu->addSettingsItem('General_General',
-                                   $this->urlForAction('generalSettings'),
-                                   $order = 6);
-            $menu->addManageItem('CoreAdminHome_TrackingCode',
-                                 $this->urlForAction('trackingCodeGenerator'),
-                                 $order = 10);
+            if (Piwik::hasUserSuperUserAccess()) {
+                $menu->addSettingsItem('General_General',
+                    $this->urlForAction('generalSettings'),
+                    $order = 6);
+            }
         }
 
-        if (SettingsManager::hasPluginsSettingsForCurrentUser()) {
+        if (Piwik::hasUserSuperUserAccess() && SettingsManager::hasSystemPluginsSettingsForCurrentUser()) {
             $menu->addSettingsItem('General_Plugins',
-                                   $this->urlForAction('pluginSettings'),
+                                   $this->urlForAction('adminPluginSettings'),
                                    $order = 7);
         }
     }
@@ -46,7 +45,26 @@ class Menu extends \Piwik\Plugin\Menu
     public function configureTopMenu(MenuTop $menu)
     {
         if (Piwik::isUserHasSomeAdminAccess()) {
-            $menu->addItem('CoreAdminHome_Administration', null, $this->urlForAction('generalSettings'), 10);
+            $url = $this->urlForModuleAction('SitesManager', 'index');
+
+            if (Piwik::hasUserSuperUserAccess()) {
+                $url = $this->urlForAction('generalSettings');
+            }
+
+            $menu->addItem('CoreAdminHome_Administration', null, $url, 10);
+        }
+    }
+
+    public function configureUserMenu(MenuUser $menu)
+    {
+        $menu->addManageItem('CoreAdminHome_TrackingCode',
+            $this->urlForAction('trackingCodeGenerator'),
+            $order = 10);
+
+        if (SettingsManager::hasUserPluginsSettingsForCurrentUser()) {
+            $menu->addPersonalItem('CoreAdminHome_PluginSettings',
+                $this->urlForAction('userPluginSettings'),
+                $order = 15);
         }
     }
 
diff --git a/plugins/CoreAdminHome/lang/en.json b/plugins/CoreAdminHome/lang/en.json
index a1c0307b48c776c46fa5ae5871164815c573c357..b6904ae5e6ca2b1c90aa3ab8dc6a4fe2ba137094 100644
--- a/plugins/CoreAdminHome/lang/en.json
+++ b/plugins/CoreAdminHome/lang/en.json
@@ -63,6 +63,7 @@
         "OptOutExplanationBis": "This code will display an Iframe containing a link for your visitors to opt-out of Piwik by setting an opt-out cookie in their browsers. %s Click here%s to view the content that will be displayed by the iFrame.",
         "OptOutForYourVisitors": "Piwik opt-out for your visitors",
         "PiwikIsInstalledAt": "Piwik is installed at",
+        "PersonalPluginSettings": "Personal Plugin Settings",
         "PluginDescription": "Administration area of Piwik.",
         "PluginSettingChangeNotAllowed": "You are not allowed to change the value of the setting \"%s\" in plugin \"%s\"",
         "PluginSettingReadNotAllowed": "You are not allowed to read the value of the setting \"%s\" in plugin \"%s\"",
@@ -73,6 +74,7 @@
         "SendPluginUpdateCommunication": "Send me an email notification when there is a new plugin update",
         "SendPluginUpdateCommunicationHelp": "An email will be sent to Super Users when there is a new version available for a plugin.",
         "StableReleases": "If Piwik is a critical part of your business, we recommend you use the latest stable release. If you use the latest beta and you find a bug or have a suggestion, please %ssee here%s.",
+        "SystemPluginSettings": "System Plugin Settings",
         "TrackAGoal": "Track a goal",
         "TrackingCode": "Tracking Code",
         "TrustedHostConfirm": "Are you sure you want to change the trusted Piwik hostname?",
diff --git a/plugins/CoreAdminHome/stylesheets/generalSettings.less b/plugins/CoreAdminHome/stylesheets/generalSettings.less
index 4e7dbec7cb921db7482cf5f85479c0e00040e20d..076d7600094fd80317f2db398449347138349f23 100644
--- a/plugins/CoreAdminHome/stylesheets/generalSettings.less
+++ b/plugins/CoreAdminHome/stylesheets/generalSettings.less
@@ -7,6 +7,11 @@
     text-decoration: underline;
 }
 
+.admin h2 + .top_bar_sites_selector {
+  margin-top: -62px;
+  margin-right: 0px !important;
+}
+
 #content.admin {
     margin: 0 0 0 260px;
     padding: 0 0 40px;
@@ -16,6 +21,7 @@
 
 .admin #header_message {
     margin-top: 10px;
+    margin-right: 10px;
 }
 
 table.admin {
@@ -138,6 +144,10 @@ table.admin  tbody td:hover, table.admin  tbody th:hover {
     margin-left: 50px;
 }
 
+.adminTable .columnHelp .ui-inline-help {
+    margin-left: 0px;
+}
+
 /* other styles */
 .form-description {
     color: @theme-color-text-lighter;
diff --git a/plugins/CoreAdminHome/stylesheets/menu.less b/plugins/CoreAdminHome/stylesheets/menu.less
index 79c98e228b9828025fe12a6225fe5c6c6d4e331c..cb6f3a6eaf18ce8aaeee07a00ac6cc0954adf8af 100644
--- a/plugins/CoreAdminHome/stylesheets/menu.less
+++ b/plugins/CoreAdminHome/stylesheets/menu.less
@@ -21,6 +21,7 @@
     margin-top: 0.1em;
     border: 1px solid #ddd;
     border-radius: 5px;
+    border-left: 0px;
 }
 
 .Menu--admin > .Menu-tabList li {
diff --git a/plugins/CoreAdminHome/templates/_menu.twig b/plugins/CoreAdminHome/templates/_menu.twig
index 5ec9b95cbd621b66496374b9de2c9f45cdc258b2..080f36e93c1ee47da52ccaba31992889b78adecf 100644
--- a/plugins/CoreAdminHome/templates/_menu.twig
+++ b/plugins/CoreAdminHome/templates/_menu.twig
@@ -1,23 +1,3 @@
-{% if adminMenu|length > 1 %}
-    <div class="Menu Menu--admin">
-        <ul class="Menu-tabList">
-        {% for name,submenu in adminMenu %}
-            {% if submenu._hasSubmenu %}
-            <li>
-                <span>{{ name|translate }}</span>
-                <ul>
-                {% for sname,url in submenu %}
-                    {% if sname|slice(0,1) != '_' %}
-                    <li>
-                        <a href='index.php{{ url._url|urlRewriteWithParameters }}'
-                           {% if currentAdminMenuName is defined and sname==currentAdminMenuName %}class='active'{% endif %}>{{ sname|translate }}</a>
-                    </li>
-                    {% endif %}
-                {% endfor %}
-                </ul>
-            </li>
-            {% endif %}
-        {% endfor %}
-        </ul>
-    </div>
-{% endif %}
+{% import '@CoreHome/macros.twig' as corehome %}
+
+{{ corehome.sidebarMenu(adminMenu, currentModule, currentAction) }}
\ No newline at end of file
diff --git a/plugins/CoreAdminHome/templates/generalSettings.twig b/plugins/CoreAdminHome/templates/generalSettings.twig
index 5ee3f9138903a937e227c11e9f900a759bde1eeb..1a1497ada5e34d9987eb0e549e4e03d8cb96cac1 100644
--- a/plugins/CoreAdminHome/templates/generalSettings.twig
+++ b/plugins/CoreAdminHome/templates/generalSettings.twig
@@ -335,16 +335,5 @@
     </p>
     {% endif %}
 {% endif %}
-<h2>{{ 'CoreAdminHome_OptOutForYourVisitors'|translate }}</h2>
-
-<p>{{ 'CoreAdminHome_OptOutExplanation'|translate }}
-    {% set optOutUrl %}{{ piwikUrl }}index.php?module=CoreAdminHome&action=optOut&language={{ language }}{% endset %}
-    {% set iframeOptOut %}
-        <iframe style="border: 0; height: 200px; width: 600px;" src="{{ optOutUrl }}"></iframe>
-    {% endset %}
-    <code>{{ iframeOptOut|escape }}</code>
-    <br/>
-    {{ 'CoreAdminHome_OptOutExplanationBis'|translate("<a href='" ~ optOutUrl ~ "' rel='noreferrer' target='_blank'>","</a>")|raw }}
-</p>
 
 {% endblock %}
diff --git a/plugins/CoreAdminHome/templates/pluginSettings.twig b/plugins/CoreAdminHome/templates/pluginSettings.twig
index fa1e032ea8f12fad7af445993423ee30fd9e565e..bf9443537e0b8fc570679ea8e824fccd2bd2b3a7 100644
--- a/plugins/CoreAdminHome/templates/pluginSettings.twig
+++ b/plugins/CoreAdminHome/templates/pluginSettings.twig
@@ -1,4 +1,4 @@
-{% extends 'admin.twig' %}
+{% extends mode == 'user' ? "user.twig" : "admin.twig" %}
 
 {% block content %}
 
@@ -6,38 +6,36 @@
     {% import 'macros.twig' as piwik %}
     {% import 'ajaxMacros.twig' as ajax %}
 
+    {% if mode == 'user' %}
+        <h2 piwik-enriched-headline>{{ 'CoreAdminHome_PersonalPluginSettings'|translate }}</h2>
+    {% else %}
+        <h2 piwik-enriched-headline>{{ 'CoreAdminHome_SystemPluginSettings'|translate }}</h2>
+    {% endif %}
+
     <p>
         {{ 'CoreAdminHome_PluginSettingsIntro'|translate }}
-        {% for pluginName, settings in pluginSettings %}
+        {% for pluginName, settings in pluginsSettings %}
             <a href="#{{ pluginName|e('html_attr') }}">{{ pluginName }}</a>{% if not loop.last %}, {% endif %}
         {% endfor %}
     </p>
 
     <input type="hidden" name="setpluginsettingsnonce" value="{{ nonce }}">
 
-    {% for pluginName, settings in pluginSettings %}
+    {% for pluginName, pluginSettings in pluginsSettings %}
 
         <h2 id="{{ pluginName|e('html_attr') }}">{{ pluginName }}</h2>
 
-        {% if settings.getIntroduction %}
+        {% if pluginSettings.introduction %}
             <p class="pluginIntroduction">
-                {{ settings.getIntroduction }}
+                {{ pluginSettings.introduction }}
             </p>
         {% endif %}
 
         <table class="adminTable" id="pluginSettings" data-pluginname="{{ pluginName|e('html_attr') }}">
 
-        {% for name, setting in settings.getSettingsForCurrentUser %}
+        {% for name, setting in pluginSettings.settings %}
             {% set settingValue = setting.getValue %}
 
-            {% if pluginName in firstSuperUserSettingNames|keys and name == firstSuperUserSettingNames[pluginName] %}
-                <tr>
-                    <td colspan="3">
-                        <h3 class="superUserSettings">{{ 'MobileMessaging_Settings_SuperAdmin'|translate }}</h3>
-                    </td>
-                </tr>
-            {% endif %}
-
             {% if setting.introduction %}
                 <tr>
                     <td colspan="3">
diff --git a/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig b/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
index bd54182b769f085cbc0011030b07711de5fecbb4..51d48ebe3fed055236ad28a519f203226f789596 100644
--- a/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
+++ b/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
@@ -1,4 +1,4 @@
-{% extends 'admin.twig' %}
+{% extends 'user.twig' %}
 
 {% block head %}
     {{ parent() }}
@@ -13,7 +13,7 @@
     feature-name="{{ 'CoreAdminHome_TrackingCode'|translate }}"
     help-url="http://piwik.org/docs/tracking-api/">{{ 'CoreAdminHome_JavaScriptTracking'|translate }}</h2>
 
-<div id="js-code-options" class="adminTable">
+<div id="js-code-options">
 
     <p>
         {{ 'CoreAdminHome_JSTrackingIntro1'|translate }}
@@ -201,7 +201,7 @@
 
 <h2 id="image-tracking-link">{{ 'CoreAdminHome_ImageTracking'|translate }}</h2>
 
-<div id="image-tracking-code-options" class="adminTable">
+<div id="image-tracking-code-options">
 
     <p>
         {{ 'CoreAdminHome_ImageTrackingIntro1'|translate }} {{ 'CoreAdminHome_ImageTrackingIntro2'|translate("<em>&lt;noscript&gt;&lt;/noscript&gt;</em>")|raw }}
diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php
index 23e1fe093b70b77057c3c7953c24ecb5f5cb8598..283f4bbf2bf0ebf5f5c82c04e9d2cfc3fe51beb9 100644
--- a/plugins/CoreHome/CoreHome.php
+++ b/plugins/CoreHome/CoreHome.php
@@ -99,6 +99,7 @@ class CoreHome extends \Piwik\Plugin
         $jsFiles[] = "plugins/Morpheus/javascripts/ajaxHelper.js";
         $jsFiles[] = "plugins/Morpheus/javascripts/jquery.icheck.min.js";
         $jsFiles[] = "plugins/Morpheus/javascripts/morpheus.js";
+        $jsFiles[] = "plugins/Morpheus/javascripts/layout.js";
         $jsFiles[] = "plugins/CoreHome/javascripts/require.js";
         $jsFiles[] = "plugins/CoreHome/javascripts/uiControl.js";
         $jsFiles[] = "plugins/CoreHome/javascripts/dataTable.js";
diff --git a/plugins/CoreHome/Menu.php b/plugins/CoreHome/Menu.php
index 08426cf7964242cfed0c6db5791ee4948eb3ac42..6881b689dabab71d93cd5c07a2d62c4d1f5ecd96 100644
--- a/plugins/CoreHome/Menu.php
+++ b/plugins/CoreHome/Menu.php
@@ -12,25 +12,36 @@ use Piwik\Db;
 use Piwik\Menu\MenuTop;
 use Piwik\Menu\MenuUser;
 use Piwik\Piwik;
+use Piwik\Plugins\UsersManager\API as APIUsersManager;
 
 class Menu extends \Piwik\Plugin\Menu
 {
-    public function configureUserMenu(MenuUser $menu)
+    public function configureTopMenu(MenuTop $menu)
     {
-        if (!Piwik::isUserIsAnonymous()) {
-            $module = $this->getLoginModule();
-            $menu->addItem('General_Logout', null, array('module' => $module, 'action' => 'logout', 'idSite' => null), 999);
+        $login = Piwik::getCurrentUserLogin();
+        $user  = APIUsersManager::getInstance()->getUser($login);
+
+        if (!empty($user['alias'])) {
+            $login = $user['alias'];
         }
-    }
 
-    public function configureTopMenu(MenuTop $menu)
-    {
+        $menu->addItem($login, null, array('module' => 'UsersManager', 'action' => 'userSettings'), 998);
+
+        $module = $this->getLoginModule();
         if (Piwik::isUserIsAnonymous()) {
-            $module = $this->getLoginModule();
             $menu->addItem('Login_LogIn', null, array('module' => $module), 999);
+        } else {
+            $menu->addItem('General_Logout', null, array('module' => $module, 'action' => 'logout', 'idSite' => null), 999);
         }
     }
 
+    public function configureUserMenu(MenuUser $menu)
+    {
+        $menu->addPersonalItem(null, array(), 1, false);
+        $menu->addManageItem(null, array(), 2, false);
+        $menu->addPlatformItem(null, array(), 3, false);
+    }
+
     private function getLoginModule()
     {
         return Piwik::getLoginPluginName();
diff --git a/plugins/CoreHome/angularjs/notification/notification.directive.less b/plugins/CoreHome/angularjs/notification/notification.directive.less
index bc3c5e3f5fd6922bde7bec2b6c56240022c6e9d4..87630d0c333572f72a7d1430e4c81ea2534b4bca 100644
--- a/plugins/CoreHome/angularjs/notification/notification.directive.less
+++ b/plugins/CoreHome/angularjs/notification/notification.directive.less
@@ -1,3 +1,9 @@
+.admin .system.notification {
+  a {
+    color: #9b7a44;
+  }
+}
+
 .system.notification {
   color: #9b7a44;
   float: none;
diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less
index 5787d058a709a43bae2525ab478f9d24944a2acf..7c7ea202945e730a92388a5636cc653e1c1d83ca 100644
--- a/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less
+++ b/plugins/CoreHome/angularjs/siteselector/siteselector.directive.less
@@ -7,6 +7,10 @@
   height: 30px; /* Hack to not push the dashboard widget below */
 }
 
+table.dataTable tr td .sites_autocomplete a {
+  width: auto;
+}
+
 .sites_selector_in_dashboard {
   margin-top:10px;
 }
diff --git a/plugins/CoreHome/templates/_topBarTopMenu.twig b/plugins/CoreHome/templates/_topBarTopMenu.twig
index 00e75d9813c3e44764f8c23db1c880f1c8ba4712..459ccb611e268f2c116adb1f6f8bf0faa42ca774 100644
--- a/plugins/CoreHome/templates/_topBarTopMenu.twig
+++ b/plugins/CoreHome/templates/_topBarTopMenu.twig
@@ -1,15 +1,6 @@
 <div id="topRightBar">
 
-    {% set helloAlias %}
-    {% if userAlias is not empty %}
-        {{ userAlias|raw }}
-    {% else %}
-        {{ userLogin|raw }}
-    {% endif %}
-    {% endset %}
-
     {% macro topMenuItem(label, menu, currentModule, currentAction) %}
-
         {% if menu._html is defined %}
             {{ menu._html|raw }}
         {% elseif (menu._url.module == currentModule and (menu._url.action is empty or menu._url.action == currentAction)) %}
@@ -31,41 +22,16 @@
 
     {% endmacro %}
 
-    {% for label,menu in topMenu if menu._order >= 0 and menu._order <= 500 %}
-        {{ _self.topMenuItem(label, menu, currentModule, currentAction) }}
-        |
-    {% endfor %}
-
-    <span class="topBarElem">
-        <div id="userMenu"
-             tooltip="{{ 'General_HelloUser'|translate(helloAlias|trim)|rawSafeDecoded }}"
-             menu-title="{{ helloAlias|trim }}"
-             piwik-menudropdown>
-
-            {% for lev1UserLabel,lev1UserMenu in userMenu if lev1UserLabel|slice(0,1) != '_' %}
-                {% if not loop.first %}
-                    <hr class="item separator"/>
-                {% endif %}
-
-                {% if lev1UserMenu._hasSubmenu is defined and lev1UserMenu._hasSubmenu %}
-                    {% if lev1UserLabel %}
-                        <a class="item disabled category">{{ lev1UserLabel|translate }}</a>
-                    {% endif %}
-
-                    {% for lev2Label,lev2Menu in lev1UserMenu if lev2Label|slice(0,1) != '_' %}
-                        {{ _self.userMenuItem(lev2Label, lev2Menu, currentModule, currentAction) }}
-                    {% endfor %}
-                {% else %}
-                    {{ _self.userMenuItem(lev1UserLabel, lev1UserMenu, currentModule, currentAction) }}
-                {% endif %}
-
-            {% endfor %}
-        </div>
-    </span>
+    {% if topMenuModule is not defined %}
+        {% set topMenuModule = currentModule %}
+        {% set topMenuAction = currentAction %}
+    {% endif %}
 
-    {% for label,menu in topMenu if menu._order >= 501 %}
-        |
-        {{ _self.topMenuItem(label, menu, currentModule, currentAction) }}
+    {% for label,menu in topMenu %}
+        {% if not loop.first %}
+                |
+        {% endif %}
+        {{ _self.topMenuItem(label, menu, topMenuModule, topMenuAction) }}
     {% endfor %}
 
 </div>
diff --git a/plugins/CoreHome/templates/_userMenu.twig b/plugins/CoreHome/templates/_userMenu.twig
new file mode 100644
index 0000000000000000000000000000000000000000..67076af75599094b5cda985a3397371cf0a54db4
--- /dev/null
+++ b/plugins/CoreHome/templates/_userMenu.twig
@@ -0,0 +1,3 @@
+{% import '@CoreHome/macros.twig' as corehome %}
+
+{{ corehome.sidebarMenu(userMenu, currentModule, currentAction) }}
\ No newline at end of file
diff --git a/plugins/CoreHome/templates/macros.twig b/plugins/CoreHome/templates/macros.twig
new file mode 100644
index 0000000000000000000000000000000000000000..a1d3d8a27b5b7114be85f48ca11c00b29442a14b
--- /dev/null
+++ b/plugins/CoreHome/templates/macros.twig
@@ -0,0 +1,25 @@
+{% macro sidebarMenu(sidebarMenu, currentModule, currentAction) %}
+    {% if sidebarMenu|length > 1 %}
+        <div class="Menu Menu--admin">
+            <ul class="Menu-tabList">
+                {% for name,submenu in sidebarMenu %}
+                    {% if submenu._hasSubmenu %}
+                        <li>
+                            <span>{{ name|translate }}</span>
+                            <ul>
+                                {% for sname,url in submenu %}
+                                    {% if sname|slice(0,1) != '_' %}
+                                        <li>
+                                            <a href='index.php{{ url._url|urlRewriteWithParameters }}'
+                                               {% if url._url.module == currentModule and (url._url.action is empty or url._url.action == currentAction) %}class='active'{% endif %}>{{ sname|translate }}</a>
+                                        </li>
+                                    {% endif %}
+                                {% endfor %}
+                            </ul>
+                        </li>
+                    {% endif %}
+                {% endfor %}
+            </ul>
+        </div>
+    {% endif %}
+{% endmacro %}
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index 71d95730b9f0f2e3c209c7d4401429234c5107ba..e157fbf83f429fadeb5b33ed1198ff255807c694 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -205,6 +205,13 @@ class Controller extends Plugin\ControllerAdmin
         return $view->render();
     }
 
+    public function userBrowsePlugins()
+    {
+        $view = $this->createBrowsePluginsOrThemesView('browsePlugins', $themesOnly = false);
+        $view->mode = 'user';
+        return $view->render();
+    }
+
     private function createPluginsOrThemesView($template, $themesOnly)
     {
         Piwik::checkUserHasSuperUserAccess();
@@ -232,7 +239,10 @@ class Controller extends Plugin\ControllerAdmin
             try {
                 $marketplace = new Marketplace();
                 $view->marketplacePluginNames = $marketplace->getAvailablePluginNames($themesOnly);
-                $view->pluginsHavingUpdate    = $marketplace->getPluginsHavingUpdate($themesOnly);
+
+                $pluginsHavingUpdate = $marketplace->getPluginsHavingUpdate(true);
+                $themesHavingUpdate  = $marketplace->getPluginsHavingUpdate(false);
+                $view->pluginsHavingUpdate    = $pluginsHavingUpdate + $themesHavingUpdate;
             } catch(Exception $e) {
                 // curl exec connection error (ie. server not connected to internet)
             }
@@ -395,7 +405,7 @@ class Controller extends Plugin\ControllerAdmin
             }
 
             $message = Piwik::translate('CorePluginsAdmin_SuccessfullyActicated', array($pluginName));
-            if (SettingsManager::hasPluginSettingsForCurrentUser($pluginName)) {
+            if (SettingsManager::hasSystemPluginSettingsForCurrentUser($pluginName)) {
                 $target   = sprintf('<a href="index.php%s#%s">',
                     Url::getCurrentQueryStringWithParametersModified(array('module' => 'CoreAdminHome', 'action' => 'pluginSettings')),
                     $pluginName);
@@ -472,7 +482,7 @@ class Controller extends Plugin\ControllerAdmin
 
     private function getPluginNamesHavingSettingsForCurrentUser()
     {
-        return array_keys(SettingsManager::getPluginSettingsForCurrentUser());
+        return SettingsManager::getPluginNamesHavingSystemSettings();
     }
 
     private function tryToRepairPiwik()
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index 3133bed3e56a0bcc1edf02fffd38586c2411369a..97ec818a59b6703eaa3eb1f4588615b14569ced3 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -25,7 +25,6 @@ class Menu extends \Piwik\Plugin\Menu
         $isMarketplaceEnabled = CorePluginsAdmin::isMarketplaceEnabled();
 
         $pluginsUpdateMessage = '';
-        $themesUpdateMessage  = '';
 
         if ($hasSuperUserAcess && $isMarketplaceEnabled) {
             $marketplace = new Marketplace();
@@ -33,10 +32,7 @@ class Menu extends \Piwik\Plugin\Menu
             $themesHavingUpdate  = $marketplace->getPluginsHavingUpdate($themesOnly = true);
 
             if (!empty($pluginsHavingUpdate)) {
-                $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate));
-            }
-            if (!empty($themesHavingUpdate)) {
-                $themesUpdateMessage = sprintf(' (%d)', count($themesHavingUpdate));
+                $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate) + count($themesHavingUpdate));
             }
         }
 
@@ -48,16 +44,13 @@ class Menu extends \Piwik\Plugin\Menu
             $menu->addManageItem(Piwik::translate('General_Plugins') . $pluginsUpdateMessage,
                                    $this->urlForAction('plugins', array('activated' => '')),
                                    $order = 4);
-            $menu->addManageItem(Piwik::translate('CorePluginsAdmin_Themes') . $themesUpdateMessage,
-                                   $this->urlForAction('themes', array('activated' => '')),
-                                   $order = 5);
         }
 
-        if (Piwik::hasUserSuperUserAccess() && CorePluginsAdmin::isMarketplaceEnabled()) {
-            $menu->addPlatformItem('CorePluginsAdmin_Marketplace',
-                                   $this->urlForAction('browsePlugins', array('activated' => '')),
-                                   $order = 5);
 
+        if (Piwik::hasUserSuperUserAccess() && CorePluginsAdmin::isMarketplaceEnabled()) {
+            $menu->addManageItem('CorePluginsAdmin_Marketplace',
+                $this->urlForAction('browsePlugins', array('activated' => '')),
+                $order = 12);
         }
     }
 
@@ -73,7 +66,7 @@ class Menu extends \Piwik\Plugin\Menu
     {
         if ($this->isAllowedToSeeMarketPlace()) {
             $menu->addPlatformItem('CorePluginsAdmin_Marketplace',
-                                   $this->urlForAction('browsePlugins', array('activated' => '')),
+                                   $this->urlForAction('userBrowsePlugins', array('activated' => '')),
                                    $order = 5);
         }
     }
diff --git a/plugins/CorePluginsAdmin/lang/en.json b/plugins/CorePluginsAdmin/lang/en.json
index 6ce90f0e0fa944c045cfbe261793d767bc5a2f3c..58911b3b6923b6fcf85acd38280eb77338bd26af 100644
--- a/plugins/CorePluginsAdmin/lang/en.json
+++ b/plugins/CorePluginsAdmin/lang/en.json
@@ -24,6 +24,7 @@
         "DoMoreContactPiwikAdmins": "To install a new plugin or a new theme, please get in touch with your Piwik admins.",
         "EmailToEnquireUpdatedVersion": "Please email %1$s and enquire an updated version of %2$s.",
         "FeaturedPlugin": "Featured plugin",
+        "ChangeLookByManageThemes": "You can change the appearance of Piwik by %sManaging Themes%s.",
         "GetEarlyAccessForPaidPlugins": "Note: all plugins are available for free at present; in the future we will enable Paid Plugins in the Marketplace (%scontact us%s for early access).",
         "History": "History",
         "Inactive": "Inactive",
diff --git a/plugins/CorePluginsAdmin/stylesheets/marketplace.less b/plugins/CorePluginsAdmin/stylesheets/marketplace.less
index 119634da9d186ca5356de6fa1f047111de79d770..ade343711498801ceab9f626152239a0cf17aebe 100644
--- a/plugins/CorePluginsAdmin/stylesheets/marketplace.less
+++ b/plugins/CorePluginsAdmin/stylesheets/marketplace.less
@@ -84,7 +84,7 @@
     float: left;
     border: 1px solid #dadada;
     padding: 15px;
-    background-color: #F6F5F3;
+    background-color: #f2f2f2;
     margin-right: 14px;
     margin-bottom: 15px;
     position: relative;
@@ -138,6 +138,9 @@
     .header {
       margin-top: 0px;
       margin-bottom: 15px;
+      h3 {
+        font-size: 16px;
+      }
     }
 
     .description {
@@ -145,17 +148,21 @@
     }
     .install {
       float: right;
+      margin-top: 3px;
     }
     .update {
       .install
     }
     h3 .more {
-      color: @theme-color-text;
-    }
-    .more {
       font-weight: bold;
       text-decoration: none;
-      color: @theme-color-link;
+      &:hover {
+        text-decoration: underline;
+      }
+    }
+    .more {
+      text-decoration: underline;
+      color: @theme-color-text;
     }
     .content {
       margin-bottom: 46px;
@@ -229,16 +236,12 @@
 
 .pluginslistActionBar {
   min-width: 650px;
-  max-width: 980px;
 
   form {
     display: inline;
   }
 
   .sort {
-    a {
-      color: @theme-color-link;
-    }
     .active {
       font-weight: bold;
     }
diff --git a/plugins/CorePluginsAdmin/templates/browsePlugins.twig b/plugins/CorePluginsAdmin/templates/browsePlugins.twig
index 9259081a0cf4700238c358d7b07c3c6873d7fb56..068d9e80abee4e58dabe24e580f01542c1897a35 100644
--- a/plugins/CorePluginsAdmin/templates/browsePlugins.twig
+++ b/plugins/CorePluginsAdmin/templates/browsePlugins.twig
@@ -1,4 +1,4 @@
-{% extends 'admin.twig' %}
+{% extends mode is defined and mode == 'user' ? "user.twig" : "admin.twig" %}
 {% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
 
 {% block content %}
diff --git a/plugins/CorePluginsAdmin/templates/macros.twig b/plugins/CorePluginsAdmin/templates/macros.twig
index 3f6ad112c03d7c85988f5b5385eaca1aa1112b24..6eda0a2d315a486c087bba96e40155627f1d3d9e 100644
--- a/plugins/CorePluginsAdmin/templates/macros.twig
+++ b/plugins/CorePluginsAdmin/templates/macros.twig
@@ -166,7 +166,7 @@
 
                         {% if name in pluginNamesHavingSettings %}
                             <br /><br />
-                            <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'pluginSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
+                            <a href="{{ linkTo({'module':'CoreAdminHome', 'action': 'adminPluginSettings'}) }}#{{ name|e('html_attr') }}" class="settingsLink">{{ 'General_Settings'|translate }}</a>
                         {% endif %}
                     </td>
                     <td class="desc">
diff --git a/plugins/CorePluginsAdmin/templates/pluginOverview.twig b/plugins/CorePluginsAdmin/templates/pluginOverview.twig
index b6a81cd9019905ba7000a4d832f24416f87193e2..f49d8878ed3281d6dde6322ba40aa939b0bfb1e0 100644
--- a/plugins/CorePluginsAdmin/templates/pluginOverview.twig
+++ b/plugins/CorePluginsAdmin/templates/pluginOverview.twig
@@ -19,7 +19,7 @@
 </h3>
 <p class="description">{{ plugin.description }}
     <br />
-    <a href="javascript:void(0);" title="{{ 'General_MoreDetails'|translate }}" class="more">&gt;&gt; {{ 'General_MoreLowerCase'|translate }}</a>
+    <a href="javascript:void(0);" title="{{ 'General_MoreDetails'|translate }}" class="more">&rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
 </p>
 
 {% if plugin.canBeUpdated %}
diff --git a/plugins/CorePluginsAdmin/templates/plugins.twig b/plugins/CorePluginsAdmin/templates/plugins.twig
index 4c4b6b1192345084c30be58898fe5745d2d5290b..7249e45488d1d21cc47c766fd0f8e7456d3f6ac3 100644
--- a/plugins/CorePluginsAdmin/templates/plugins.twig
+++ b/plugins/CorePluginsAdmin/templates/plugins.twig
@@ -3,7 +3,7 @@
 {% import '@CorePluginsAdmin/macros.twig' as plugins %}
 
 {% block content %}
-<div style="max-width:980px;">
+<div>
 
     {% if pluginsHavingUpdate|length %}
         <h2>{{ pluginsHavingUpdate|length }} Update(s) available</h2>
@@ -22,6 +22,11 @@
         <br/>{{ 'CorePluginsAdmin_DoMoreContactPiwikAdmins'|translate }}
     {% endif %}
 
+
+    {% if isMarketplaceEnabled %}
+        <br />
+        {{ 'CorePluginsAdmin_ChangeLookByManageThemes'|translate('<a href="' ~ linkTo({'action': 'themes'}) ~'">', '</a>')|raw }}
+    {% endif %}
     </p>
 
     {{ plugins.pluginsFilter(false, isMarketplaceEnabled) }}
diff --git a/plugins/CorePluginsAdmin/templates/themes.twig b/plugins/CorePluginsAdmin/templates/themes.twig
index 5ac8ff6d9a063d5566ca4e761bd611b1c9763d8d..b5e52666d9c4d16f404be49720dfb0bcaea57e94 100644
--- a/plugins/CorePluginsAdmin/templates/themes.twig
+++ b/plugins/CorePluginsAdmin/templates/themes.twig
@@ -5,14 +5,6 @@
 {% block content %}
 <div style="max-width:980px;">
 
-    {% if pluginsHavingUpdate|length %}
-        <h2>{{ 'CorePluginsAdmin_NumUpdatesAvailable'|translate(pluginsHavingUpdate|length) }}</h2>
-
-        <p>{{ 'CorePluginsAdmin_InfoThemeUpdateIsRecommended'|translate }}</p>
-
-        {{ plugins.tablePluginUpdates(pluginsHavingUpdate, updateNonce, true) }}
-    {% endif %}
-
     <h2 piwik-enriched-headline>{{ 'CorePluginsAdmin_ThemesManagement'|translate }}</h2>
 
     <p>{{ 'CorePluginsAdmin_ThemesDescription'|translate }}
diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts
index 9716f8b12f0abd0f9ca99cb343bea19f7e077949..cc0e3c2b00ac7ff3083cd446e1e6a927b3649e56 160000
--- a/plugins/CustomAlerts
+++ b/plugins/CustomAlerts
@@ -1 +1 @@
-Subproject commit 9716f8b12f0abd0f9ca99cb343bea19f7e077949
+Subproject commit cc0e3c2b00ac7ff3083cd446e1e6a927b3649e56
diff --git a/plugins/Feedback/Menu.php b/plugins/Feedback/Menu.php
index acfd55dab1c5f0184ee680ef7419b9d9cddcdd12..19d3f62db5088291796a31bedf378393ba3efe1f 100644
--- a/plugins/Feedback/Menu.php
+++ b/plugins/Feedback/Menu.php
@@ -15,9 +15,8 @@ class Menu extends \Piwik\Plugin\Menu
 {
     public function configureUserMenu(MenuUser $menu)
     {
-        $menu->addItem(
+        $menu->addPlatformItem(
             'General_Help',
-            null,
             $this->urlForAction('index', array('segment' => false)),
             $order = 99,
             $tooltip = Piwik::translate('Feedback_TopLinkTooltip')
diff --git a/plugins/Feedback/stylesheets/feedback.less b/plugins/Feedback/stylesheets/feedback.less
index 8ac50e8c0b79b25d85fd834ccbd30ca93b494287..3a12cb0365638e3a91b25d25c0dc1d1b5ac546da 100644
--- a/plugins/Feedback/stylesheets/feedback.less
+++ b/plugins/Feedback/stylesheets/feedback.less
@@ -1,11 +1,4 @@
 #feedback-faq {
-  color: #5e5e5c;
-  width: 675px;
-  font-size: 14px;
-
-   strong {
-    color: #5e5e5c;
-  }
 
   ul {
     list-style: none;
@@ -19,11 +12,6 @@
     line-height: 1.7em;
   }
 
-  a {
-    color: #5176a0;
-    text-decoration: none;
-  }
-
   .piwik-donate-call {
     border: 0px;
     padding-left: 0px;
diff --git a/plugins/Feedback/templates/index.twig b/plugins/Feedback/templates/index.twig
index 97a90ee2a3560125e2de831c11c77ca4626caa5c..7cba7e5b26125fe625552c48f8e13d0017767e09 100644
--- a/plugins/Feedback/templates/index.twig
+++ b/plugins/Feedback/templates/index.twig
@@ -1,11 +1,11 @@
-{% extends 'dashboard.twig' %}
+{% extends 'user.twig' %}
 
 {% set test_piwikUrl='http://demo.piwik.org/' %}
 {% set isPiwikDemo %}{{ piwikUrl == 'http://demo.piwik.org/' or piwikUrl == 'https://demo.piwik.org/'}}{% endset %}
 
 {% block content %}
 
-    <div id="feedback-faq" class="admin centerLargeDiv">
+    <div id="feedback-faq" class="admin">
         <h2 piwik-enriched-headline
             feature-name="{{ 'General_Help'|translate }}"
             >{{ 'General_AboutPiwikX'|translate(piwikVersion) }}</h2>
diff --git a/plugins/Goals/javascripts/goalsForm.js b/plugins/Goals/javascripts/goalsForm.js
index e7de62d168bfe13cee255fefca84740d529292ff..01f4540b582bf3450adcbbd3ec866175a936efe6 100644
--- a/plugins/Goals/javascripts/goalsForm.js
+++ b/plugins/Goals/javascripts/goalsForm.js
@@ -37,11 +37,11 @@ function showCancel() {
 }
 
 function showCreateGoal() {
-    $("a[name=linkAddNewGoal]").show();
+    $("div[name=linkAddNewGoal]").show();
 }
 
 function hideCreateGoal() {
-    $("a[name=linkAddNewGoal]").hide();
+    $("div[name=linkAddNewGoal]").hide();
 }
 
 function onMatchAttributeChange(matchAttribute)
@@ -128,7 +128,7 @@ function bindGoalForm() {
         return false;
     });
 
-    $('a[name=linkAddNewGoal]').click(function () {
+    $('div[name=linkAddNewGoal]').click(function () {
         initAndShowAddGoalForm();
         piwikHelper.lazyScrollTo('#goal_name');
     });
diff --git a/plugins/Goals/stylesheets/goals.css b/plugins/Goals/stylesheets/goals.css
index 52602215bb04ae3c6fe63133e907c003aae4ff28..16f594781a1b7b88c2ed6457774fcaa0a03d72b8 100644
--- a/plugins/Goals/stylesheets/goals.css
+++ b/plugins/Goals/stylesheets/goals.css
@@ -9,6 +9,14 @@
     width: 614px;
 }
 
+.managegoals .addrow:hover {
+    text-decoration: underline;
+}
+
+.managegoals .addrow {
+    margin-top: 0px;
+}
+
 /* dimension selector */
 #titleGoalsByDimension {
     padding-top: 30px;
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
index 573d86dc29832df0bf0febfd7fe9784e1baca80c..5e0366fdb8774468cbe63d28708e90540a0b6c60 100644
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ b/plugins/Goals/templates/_formAddGoal.twig
@@ -1,11 +1,4 @@
 <div class='entityAddContainer' style="display:none;">
-    {% if onlyShowAddNewGoal is not defined %}
-        <div class='entityCancel'>
-            {{ 'Goals_CancelAndReturnToGoals'|translate("<a class='entityCancelLink'>","</a>")|raw }}
-        </div>
-        <div class='clear'></div>
-    {% endif %}
-
     <form>
         <table class="dataTable entityTable">
             <thead>
diff --git a/plugins/Goals/templates/_listGoalEdit.twig b/plugins/Goals/templates/_listGoalEdit.twig
index 325bfd4d3e0a82263ef606463f96dd87aef370b2..62417aa6d80abb7b67eecfeb00308a4af2e92bb2 100644
--- a/plugins/Goals/templates/_listGoalEdit.twig
+++ b/plugins/Goals/templates/_listGoalEdit.twig
@@ -1,4 +1,4 @@
-<div id='entityEditContainer' style="display:none;">
+<div id='entityEditContainer' class="managegoals" style="display:none;">
     <table class="dataTable entityTable">
         <thead>
         <tr>
@@ -31,13 +31,13 @@
                     </td>
                     <td>{% if goal.revenue==0 %}-{% else %}{{ goal.revenue|money(idSite)|raw }}{% endif %}</td>
                     <td>
-                        <a href='#' name="linkEditGoal" id="{{ goal.idgoal }}" class="link_but">
+                        <a href='#' name="linkEditGoal" id="{{ goal.idgoal }}" class="link_but withIcon">
                             <img src='plugins/Morpheus/images/ico_edit.png' border="0"/>
                             {{ 'General_Edit'|translate }}
                         </a>
                     </td>
                     <td>
-                        <a href='#' name="linkDeleteGoal" id="{{ goal.idgoal }}" class="link_but">
+                        <a href='#' name="linkDeleteGoal" id="{{ goal.idgoal }}" class="link_but withIcon">
                             <img src='plugins/Morpheus/images/ico_delete.png' border="0"/>
                             {{ 'General_Delete'|translate }}
                         </a>
@@ -49,7 +49,7 @@
 
     {% if onlyShowAddNewGoal is not defined %}
         <br/>
-        <a onclick='' name='linkAddNewGoal'>&rsaquo; {{ 'Goals_CreateNewGOal'|translate }}</a>
+        <div name="linkAddNewGoal" class="addrow"><img src='plugins/Morpheus/images/add.png'/> {{ 'Goals_CreateNewGOal'|translate }}</div>
         <br/>
         <br/>
 
diff --git a/plugins/Goals/templates/manageGoals.twig b/plugins/Goals/templates/manageGoals.twig
index 65dc6a615d28ca1eb0dff47f1327bd9ae075a3fe..f71cd38300895f7b9e049a2f9c5ac9a819f23d9c 100644
--- a/plugins/Goals/templates/manageGoals.twig
+++ b/plugins/Goals/templates/manageGoals.twig
@@ -1,30 +1,26 @@
-{% extends 'dashboard.twig' %}
+{% extends 'user.twig' %}
 
 {% block content %}
 
-    {% include "@CoreHome/_siteSelectHeader.twig" %}
-
-    <div class="centerLargeDiv">
-
-        <h2 piwik-enriched-headline>
-            <div class="inlineHelp">{{ 'Goals_LearnMoreAboutGoalTrackingDocumentation'|translate("<a href='?module=Proxy&action=redirect&url=http://piwik.org/docs/tracking-goals-web-analytics/' target='_blank'>","</a>")|raw }}
+    <h2 piwik-enriched-headline>
+        <div class="inlineHelp">{{ 'Goals_LearnMoreAboutGoalTrackingDocumentation'|translate("<a href='?module=Proxy&action=redirect&url=http://piwik.org/docs/tracking-goals-web-analytics/' target='_blank'>","</a>")|raw }}
+
+            {% if not ecommerceEnabled %}
+                <br /><br/>
+                {% set websiteManageText %}
+                <a href='{{ linkTo({'module':'SitesManager','action':'index' }) }}'>{{ 'SitesManager_WebsitesManagement'|translate }}</a>
+                {% endset %}
+                {% set ecommerceReportText %}
+                <a href="http://piwik.org/docs/ecommerce-analytics/" rel="noreferrer" target="_blank">{{ 'Goals_EcommerceReports'|translate }}</a>
+                {% endset %}
+                {{ 'Goals_Optional'|translate }} {{ 'Goals_Ecommerce'|translate }}: {{ 'Goals_YouCanEnableEcommerceReports'|translate(ecommerceReportText,websiteManageText)|raw }}
+            {% endif %}</div>
+        {{ 'Goals_ManageGoals'|translate }}
+    </h2>
 
-                {% if not ecommerceEnabled %}
-                    <br /><br/>
-                    {% set websiteManageText %}
-                    <a href='{{ linkTo({'module':'SitesManager','action':'index' }) }}'>{{ 'SitesManager_WebsitesManagement'|translate }}</a>
-                    {% endset %}
-                    {% set ecommerceReportText %}
-                    <a href="http://piwik.org/docs/ecommerce-analytics/" rel="noreferrer" target="_blank">{{ 'Goals_EcommerceReports'|translate }}</a>
-                    {% endset %}
-                    {{ 'Goals_Optional'|translate }} {{ 'Goals_Ecommerce'|translate }}: {{ 'Goals_YouCanEnableEcommerceReports'|translate(ecommerceReportText,websiteManageText)|raw }}
-                {% endif %}</div>
-            {{ 'Goals_ManageGoals'|translate }}
-        </h2>
-
-        {% include "@Goals/_addEditGoal.twig" %}
+    {% include "@CoreHome/_siteSelectHeader.twig" %}
 
-    </div>
+    {% include "@Goals/_addEditGoal.twig" %}
 
     <style type="text/css">
         .entityAddContainer {
diff --git a/plugins/Installation/stylesheets/systemCheckPage.less b/plugins/Installation/stylesheets/systemCheckPage.less
index 579bd888ae9937ae49353b07560633368a035b5b..3c5f6ddfa04ed9b80619ff8f2daa15e3f70e3ceb 100755
--- a/plugins/Installation/stylesheets/systemCheckPage.less
+++ b/plugins/Installation/stylesheets/systemCheckPage.less
@@ -1,6 +1,5 @@
 #systemCheckOptional,
 #systemCheckRequired {
-    border: 1px solid #dadada;
     width: 100%;
     max-width: 900px;
 }
@@ -13,18 +12,13 @@
 #systemCheckRequired td {
     padding: 1em .5em 1em 2em;
     vertical-align: middle;
-    font-size: 1.2em;
     margin: 0;
+    min-width: 200px;
 }
 
-#systemCheckOptional tr:nth-child(even),
-#systemCheckRequired tr:nth-child(even) {
-    background-color: #EFEEEC;
-}
-
-#systemCheckOptional tr:nth-child(odd),
-#systemCheckRequired tr:nth-child(odd) {
-    background-color: #F6F5F3;
+#systemCheckOptional tr,
+#systemCheckRequired tr {
+    background-color: #f2f2f2;
 }
 
 .error {
diff --git a/plugins/Installation/templates/systemCheckPage.twig b/plugins/Installation/templates/systemCheckPage.twig
index 1d214ba39565a46619d7146541e75b9fbe3cce17..b66c493eea23f7dc9519d2c44cf608b1f2f43534 100755
--- a/plugins/Installation/templates/systemCheckPage.twig
+++ b/plugins/Installation/templates/systemCheckPage.twig
@@ -3,7 +3,7 @@
 {% block content %}
 {% if isSuperUser %}
     <h2 piwik-enriched-headline>{{ 'Installation_SystemCheck'|translate }}</h2>
-    <p style="margin-left:1em;">
+    <p style="margin-left:0.2em;">
         {% if infos.has_errors %}
             <img src="plugins/Morpheus/images/error.png"/>
             {{ 'Installation_SystemCheckSummaryThereWereErrors'|translate('<strong>','</strong>','<strong><em>','</em></strong>')|raw }} {{ 'Installation_SeeBelowForMoreInfo'|translate }}
diff --git a/plugins/MobileMessaging/Controller.php b/plugins/MobileMessaging/Controller.php
index e19b7684b1c3e51ec2b9f936461ad6d45b635a9c..92661ed87d00c74954f0a8a975a221ba7a195eb3 100644
--- a/plugins/MobileMessaging/Controller.php
+++ b/plugins/MobileMessaging/Controller.php
@@ -32,10 +32,33 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
      */
     public function index()
     {
-        Piwik::checkUserIsNotAnonymous();
+        Piwik::checkUserHasSuperUserAccess();
 
         $view = new View('@MobileMessaging/index');
+        $this->setManageVariables($view);
+
+        return $view->render();
+    }
 
+    /*
+     * Mobile Messaging Settings tab :
+     *  - set delegated management
+     *  - provide & validate SMS API credential
+     *  - add & activate phone numbers
+     *  - check remaining credits
+     */
+    public function userSettings()
+    {
+        Piwik::checkUserIsNotAnonymous();
+
+        $view = new View('@MobileMessaging/userSettings');
+        $this->setManageVariables($view);
+
+        return $view->render();
+    }
+
+    private function setManageVariables(View $view)
+    {
         $view->isSuperUser = Piwik::hasUserSuperUserAccess();
 
         $mobileMessagingAPI = API::getInstance();
@@ -43,6 +66,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
         $view->credentialSupplied = $mobileMessagingAPI->areSMSAPICredentialProvided();
         $view->accountManagedByCurrentUser = $view->isSuperUser || $view->delegatedManagement;
         $view->strHelpAddPhone = Piwik::translate('MobileMessaging_Settings_PhoneNumbers_HelpAdd', array(Piwik::translate('General_Settings'), Piwik::translate('MobileMessaging_SettingsMenu')));
+        $view->creditLeft = 0;
+        $view->provider = '';
         if ($view->credentialSupplied && $view->accountManagedByCurrentUser) {
             $view->provider = $mobileMessagingAPI->getSMSProvider();
             $view->creditLeft = $mobileMessagingAPI->getCreditLeft();
@@ -72,7 +97,5 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
         $view->phoneNumbers = $mobileMessagingAPI->getPhoneNumbers();
 
         $this->setBasicVariablesView($view);
-
-        return $view->render();
     }
 }
diff --git a/plugins/MobileMessaging/Menu.php b/plugins/MobileMessaging/Menu.php
index e810e997449663a654d421138f678296d302d445..4612c79d214d76fe5ce804130ad0e91c8e79d7a5 100644
--- a/plugins/MobileMessaging/Menu.php
+++ b/plugins/MobileMessaging/Menu.php
@@ -9,11 +9,20 @@
 namespace Piwik\Plugins\MobileMessaging;
 
 use Piwik\Menu\MenuAdmin;
+use Piwik\Menu\MenuUser;
+use Piwik\Piwik;
 
 class Menu extends \Piwik\Plugin\Menu
 {
     public function configureAdminMenu(MenuAdmin $menu)
     {
-        $menu->addSettingsItem('MobileMessaging_SettingsMenu', $this->urlForAction('index'), $order = 12);
+        if (Piwik::hasUserSuperUserAccess()) {
+            $menu->addSettingsItem('MobileMessaging_SettingsMenu', $this->urlForAction('index'), $order = 12);
+        }
+    }
+
+    public function configureUserMenu(MenuUser $menu)
+    {
+        $menu->addPersonalItem('MobileMessaging_SettingsMenu', $this->urlForAction('userSettings'), $order = 12);
     }
 }
diff --git a/plugins/MobileMessaging/lang/en.json b/plugins/MobileMessaging/lang/en.json
index 4c462372862cd58f9d40e1560e6fd7480d9ecb68..63df29ceefd9f7a037da9e5592dd5bde2658038d 100644
--- a/plugins/MobileMessaging/lang/en.json
+++ b/plugins/MobileMessaging/lang/en.json
@@ -14,7 +14,7 @@
         "Settings_CredentialProvided": "Your %s SMS API account is correctly configured!",
         "Settings_DeleteAccountConfirm": "Are you sure you want to delete this SMS account?",
         "Settings_InvalidActivationCode": "Code entered was not valid, please try again.",
-        "Settings_LetUsersManageAPICredential": "Allow users to manage their own SMS API credentials",
+        "Settings_LetUsersManageAPICredential": "Allow users to manage their own SMS provider",
         "Settings_LetUsersManageAPICredential_No_Help": "All users are able to receive SMS Reports and will use your account's credits.",
         "Settings_LetUsersManageAPICredential_Yes_Help": "Each user will be able to setup their own SMS API Account and will not use your credit.",
         "Settings_ManagePhoneNumbers": "Manage Phone Numbers",
diff --git a/plugins/MobileMessaging/templates/index.twig b/plugins/MobileMessaging/templates/index.twig
index 17b5bbb435500fbffa78c8e8bd0f3ad98d0e58d7..c75c00f5832c60a9b0b2385aa88dec19b7e6e473 100644
--- a/plugins/MobileMessaging/templates/index.twig
+++ b/plugins/MobileMessaging/templates/index.twig
@@ -1,160 +1,11 @@
 {% extends 'admin.twig' %}
 
-{% block content %}
-    {% if accountManagedByCurrentUser %}
-        <h2 piwik-enriched-headline
-            feature-name="{{ 'MobileMessaging_SettingsMenu'|translate }}"
-                >{{ 'MobileMessaging_Settings_SMSAPIAccount'|translate }}</h2>
-        {% if credentialSupplied %}
-            {{ 'MobileMessaging_Settings_CredentialProvided'|translate(provider) }}
-            {{ creditLeft }}
-            <br/>
-            {{ 'MobileMessaging_Settings_UpdateOrDeleteAccount'|translate("<a id='displayAccountForm'>","</a>","<a id='deleteAccount'>","</a>")|raw }}
-        {% else %}
-            {{ 'MobileMessaging_Settings_PleaseSignUp'|translate }}
-        {% endif %}
-        <div id='accountForm' {% if credentialSupplied %}style='display: none;'{% endif %}>
-            <br/>
-            {{ 'MobileMessaging_Settings_SMSProvider'|translate }}
-            <select id='smsProviders'>
-                {% for smsProvider, description in smsProviders %}
-                    <option value='{{ smsProvider }}'>
-                        {{ smsProvider }}
-                    </option>
-                {% endfor %}
-            </select>
-
-            {{ 'MobileMessaging_Settings_APIKey'|translate }}
-            <input size='25' id='apiKey'/>
-
-            <input type='submit' value='{{ 'General_Save'|translate }}' id='apiAccountSubmit' class='submit'/>
-
-            {% for smsProvider, description in smsProviders %}
-                <div class='providerDescription' id='{{ smsProvider }}'>
-                    {{ description|raw }}
-                </div>
-            {% endfor %}
-
-        </div>
-    {% endif %}
+{% import '@MobileMessaging/macros.twig' as macro %}
 
-    {% import 'ajaxMacros.twig' as ajax %}
-
-    <div style="margin-top:10px">
-        {{ ajax.errorDiv('ajaxErrorMobileMessagingSettings') }}
-    </div>
-
-    <h2>{{ 'MobileMessaging_PhoneNumbers'|translate }}</h2>
-    {% if not credentialSupplied %}
-        {% if accountManagedByCurrentUser %}
-            {{ 'MobileMessaging_Settings_CredentialNotProvided'|translate }}
-        {% else %}
-            {{ 'MobileMessaging_Settings_CredentialNotProvidedByAdmin'|translate }}
-        {% endif %}
-    {% else %}
-        {{ 'MobileMessaging_Settings_PhoneNumbers_Help'|translate }}
-        <br/>
-        <br/>
-        <table style="width:900px;" class="adminTable">
-            <tbody>
-            <tr>
-                <td style="width:480px;">
-                    <strong>{{ 'MobileMessaging_Settings_PhoneNumbers_Add'|translate }}</strong>
-                    <br/><br/>
-
-                <span id="suspiciousPhoneNumber" style="display:none;">
-                    {{ 'MobileMessaging_Settings_SuspiciousPhoneNumber'|translate('54184032') }}
-                    <br/><br/>
-                </span>
-
-                + <input id="countryCallingCode" size="4" maxlength="4"/>&nbsp;
-                <input id="newPhoneNumber"/>
-                <input type="submit" value='{{ 'General_Add'|translate }}'
-                       id="addPhoneNumberSubmit"/>
-                <br/>
-
-		<span style=' font-size: 11px;'><span
-                    class="form-description">{{ 'MobileMessaging_Settings_CountryCode'|translate }}</span>
-			<span class="form-description"
-                  style="margin-left:50px;">{{ 'MobileMessaging_Settings_PhoneNumber'|translate }}</span></span>
-                    <br/><br/>
-
-                    {{ 'MobileMessaging_Settings_PhoneNumbers_CountryCode_Help'|translate }}
-
-                    <select id="countries">
-                        {# this is a trick to avoid selecting the first country when no default could be found #}
-                        <option value="">&nbsp;</option>
-                        {% for countryCode, country in countries %}
-                            <option value='{{ country.countryCallingCode }}'
-                                    {% if defaultCountry==countryCode %} selected="selected" {% endif %}
-                                    >
-                                {{ country.countryName }}
-                            </option>
-                        {% endfor %}
-                    </select>
-
-                </td>
-                <td style="width:220px;">
-                    {% import 'macros.twig' as piwik %}
-                    {{ piwik.inlineHelp(strHelpAddPhone) }}
-                </td>
-            </tr>
-            <tr>
-                <td colspan="2">
-
-                    {% if phoneNumbers|length > 0 %}
-                        <br/>
-                        <br/>
-                        <strong>{{ 'MobileMessaging_Settings_ManagePhoneNumbers'|translate }}</strong>
-                        <br/>
-                        <br/>
-                    {% endif %}
-
-                    {{ ajax.errorDiv('invalidVerificationCodeAjaxError') }}
-
-                    <div id='phoneNumberActivated' style="display:none;">
-                        {{ 'MobileMessaging_Settings_PhoneActivated'|translate }}
-                    </div>
-
-                    <div id='invalidActivationCode' style="display:none;">
-                        {{ 'MobileMessaging_Settings_InvalidActivationCode'|translate }}
-                    </div>
-
-                    <ul>
-                        {% for phoneNumber, validated in phoneNumbers %}
-                            <li>
-                                <span class='phoneNumber'>{{ phoneNumber }}</span>
-                                {% if not validated %}
-                                    <input class='verificationCode'/>
-                                    <input
-                                            type='submit'
-                                            value='{{ 'MobileMessaging_Settings_ValidatePhoneNumber'|translate }}'
-                                            class='validatePhoneNumberSubmit'
-                                            />
-                                {% endif %}
-                                <input
-                                        type='submit'
-                                        value='{{ 'General_Remove'|translate }}'
-                                        class='removePhoneNumberSubmit'
-                                        />
-                                {% if not validated %}
-                                    <br/>
-                                    <span class='form-description'>{{ 'MobileMessaging_Settings_VerificationCodeJustSent'|translate }}</span>
-                                {% endif %}
-                                <br/>
-                                <br/>
-                            </li>
-                        {% endfor %}
-                    </ul>
-
-                </td>
-            </tr>
-            </tbody>
-        </table>
-    {% endif %}
+{% block content %}
 
     {% if isSuperUser %}
-        <h2>{{ 'MobileMessaging_Settings_SuperAdmin'|translate }}</h2>
+        <h2>{{ 'General_Settings'|translate }}</h2>
         <table class='adminTable' style='width:650px;'>
             <tr>
                 <td style="width:400px;">{{ 'MobileMessaging_Settings_LetUsersManageAPICredential'|translate }}</td>
@@ -183,6 +34,29 @@
         </table>
     {% endif %}
 
+    {% if accountManagedByCurrentUser and delegatedManagement %}
+
+        <h2 piwik-enriched-headline
+                >{{ 'MobileMessaging_Settings_SMSProvider'|translate }}</h2>
+        To manage your SMS provider go to your <a href="{{ linkTo({'action':'userSettings'}) }}">personal mobile messaging settings</a>.
+
+    {% elseif accountManagedByCurrentUser %}
+
+        <h2 piwik-enriched-headline
+                >{{ 'MobileMessaging_Settings_SMSProvider'|translate }}</h2>
+
+        {{ macro.manageSmsApi(credentialSupplied, creditLeft, smsProviders, provider) }}
+    {% endif %}
+
+    {% import 'ajaxMacros.twig' as ajax %}
+
+    <div style="margin-top:10px">
+        {{ ajax.errorDiv('ajaxErrorMobileMessagingSettings') }}
+    </div>
+
+    <h2>{{ 'MobileMessaging_PhoneNumbers'|translate }}</h2>
+    To manage your phone numbers go to your <a href="{{ linkTo({'action':'userSettings'}) }}">personal mobile messaging settings</a>.
+
     {{ ajax.loadingDiv('ajaxLoadingMobileMessagingSettings') }}
 
     <div class='ui-confirm' id='confirmDeleteAccount'>
diff --git a/plugins/MobileMessaging/templates/macros.twig b/plugins/MobileMessaging/templates/macros.twig
new file mode 100644
index 0000000000000000000000000000000000000000..e0c1d499c62adc704fb28124eb327a4eab9ae994
--- /dev/null
+++ b/plugins/MobileMessaging/templates/macros.twig
@@ -0,0 +1,33 @@
+{% macro manageSmsApi(credentialSupplied, creditLeft, smsProviders, provider) %}
+    {% if credentialSupplied %}
+        {{ 'MobileMessaging_Settings_CredentialProvided'|translate(provider) }}
+        {{ creditLeft }}
+        <br/>
+        {{ 'MobileMessaging_Settings_UpdateOrDeleteAccount'|translate("<a id='displayAccountForm'>","</a>","<a id='deleteAccount'>","</a>")|raw }}
+    {% else %}
+        {{ 'MobileMessaging_Settings_PleaseSignUp'|translate }}
+    {% endif %}
+    <div id='accountForm' {% if credentialSupplied %}style='display: none;'{% endif %}>
+        <br/>
+        {{ 'MobileMessaging_Settings_SMSProvider'|translate }}
+        <select id='smsProviders'>
+            {% for smsProvider, description in smsProviders %}
+                <option value='{{ smsProvider }}'>
+                    {{ smsProvider }}
+                </option>
+            {% endfor %}
+        </select>
+
+        {{ 'MobileMessaging_Settings_APIKey'|translate }}
+        <input size='25' id='apiKey'/>
+
+        <input type='submit' value='{{ 'General_Save'|translate }}' id='apiAccountSubmit' class='submit'/>
+
+        {% for smsProvider, description in smsProviders %}
+            <div class='providerDescription' id='{{ smsProvider }}'>
+                {{ description|raw }}
+            </div>
+        {% endfor %}
+
+    </div>
+{% endmacro %}
\ No newline at end of file
diff --git a/plugins/MobileMessaging/templates/userSettings.twig b/plugins/MobileMessaging/templates/userSettings.twig
new file mode 100644
index 0000000000000000000000000000000000000000..987683e7391d81b3dee6acd357f9c3ae5421f880
--- /dev/null
+++ b/plugins/MobileMessaging/templates/userSettings.twig
@@ -0,0 +1,139 @@
+{% extends 'user.twig' %}
+
+{% block content %}
+
+    {% import 'ajaxMacros.twig' as ajax %}
+
+    <div style="margin-top:10px">
+        {{ ajax.errorDiv('ajaxErrorMobileMessagingSettings') }}
+    </div>
+
+    {% import '@MobileMessaging/macros.twig' as macro %}
+
+    {% if accountManagedByCurrentUser and delegatedManagement %}
+        <h2 piwik-enriched-headline
+                >{{ 'MobileMessaging_Settings_SMSProvider'|translate }}</h2>
+
+        {{ macro.manageSmsApi(credentialSupplied, creditLeft, smsProviders, provider) }}
+    {% endif %}
+
+    <h2>{{ 'MobileMessaging_PhoneNumbers'|translate }}</h2>
+    {% if not credentialSupplied %}
+        {% if accountManagedByCurrentUser and delegatedManagement %}
+            {{ 'MobileMessaging_Settings_CredentialNotProvided'|translate }}
+        {% elseif accountManagedByCurrentUser %}
+            Before you can create and manage phone numbers, please setup an SMS provider in <a href="{{ linkTo({'action': 'index'}) }}">admin mobile messaging settings</a>.
+        {% else %}
+            {{ 'MobileMessaging_Settings_CredentialNotProvidedByAdmin'|translate }}
+        {% endif %}
+    {% else %}
+        {{ 'MobileMessaging_Settings_PhoneNumbers_Help'|translate }}
+        <br/>
+        <br/>
+        <table style="width:900px;" class="adminTable">
+            <tbody>
+            <tr>
+                <td style="width:480px;">
+                    <strong>{{ 'MobileMessaging_Settings_PhoneNumbers_Add'|translate }}</strong>
+                    <br/><br/>
+
+                <span id="suspiciousPhoneNumber" style="display:none;">
+                    {{ 'MobileMessaging_Settings_SuspiciousPhoneNumber'|translate('54184032') }}
+                    <br/><br/>
+                </span>
+
+                    + <input id="countryCallingCode" size="4" maxlength="4"/>&nbsp;
+                    <input id="newPhoneNumber"/>
+                    <input type="submit" value='{{ 'General_Add'|translate }}'
+                           id="addPhoneNumberSubmit"/>
+                    <br/>
+
+		<span style=' font-size: 11px;'><span
+                    class="form-description">{{ 'MobileMessaging_Settings_CountryCode'|translate }}</span>
+			<span class="form-description"
+                  style="margin-left:50px;">{{ 'MobileMessaging_Settings_PhoneNumber'|translate }}</span></span>
+                    <br/><br/>
+
+                    {{ 'MobileMessaging_Settings_PhoneNumbers_CountryCode_Help'|translate }}
+
+                    <select id="countries">
+                        {# this is a trick to avoid selecting the first country when no default could be found #}
+                        <option value="">&nbsp;</option>
+                        {% for countryCode, country in countries %}
+                            <option value='{{ country.countryCallingCode }}'
+                                    {% if defaultCountry==countryCode %} selected="selected" {% endif %}
+                                    >
+                                {{ country.countryName }}
+                            </option>
+                        {% endfor %}
+                    </select>
+
+                </td>
+                <td style="width:220px;">
+                    {% import 'macros.twig' as piwik %}
+                    {{ piwik.inlineHelp(strHelpAddPhone) }}
+                </td>
+            </tr>
+            <tr>
+                <td colspan="2">
+
+                    {% if phoneNumbers|length > 0 %}
+                        <br/>
+                        <br/>
+                        <strong>{{ 'MobileMessaging_Settings_ManagePhoneNumbers'|translate }}</strong>
+                        <br/>
+                        <br/>
+                    {% endif %}
+
+                    {{ ajax.errorDiv('invalidVerificationCodeAjaxError') }}
+
+                    <div id='phoneNumberActivated' style="display:none;">
+                        {{ 'MobileMessaging_Settings_PhoneActivated'|translate }}
+                    </div>
+
+                    <div id='invalidActivationCode' style="display:none;">
+                        {{ 'MobileMessaging_Settings_InvalidActivationCode'|translate }}
+                    </div>
+
+                    <ul>
+                        {% for phoneNumber, validated in phoneNumbers %}
+                            <li>
+                                <span class='phoneNumber'>{{ phoneNumber }}</span>
+                                {% if not validated %}
+                                    <input class='verificationCode'/>
+                                    <input
+                                            type='submit'
+                                            value='{{ 'MobileMessaging_Settings_ValidatePhoneNumber'|translate }}'
+                                            class='validatePhoneNumberSubmit'
+                                            />
+                                {% endif %}
+                                <input
+                                        type='submit'
+                                        value='{{ 'General_Remove'|translate }}'
+                                        class='removePhoneNumberSubmit'
+                                        />
+                                {% if not validated %}
+                                    <br/>
+                                    <span class='form-description'>{{ 'MobileMessaging_Settings_VerificationCodeJustSent'|translate }}</span>
+                                {% endif %}
+                                <br/>
+                                <br/>
+                            </li>
+                        {% endfor %}
+                    </ul>
+
+                </td>
+            </tr>
+            </tbody>
+        </table>
+    {% endif %}
+
+    {{ ajax.loadingDiv('ajaxLoadingMobileMessagingSettings') }}
+
+    <div class='ui-confirm' id='confirmDeleteAccount'>
+        <h2>{{ 'MobileMessaging_Settings_DeleteAccountConfirm'|translate }}</h2>
+        <input role='yes' type='button' value='{{ 'General_Yes'|translate }}'/>
+        <input role='no' type='button' value='{{ 'General_No'|translate }}'/>
+    </div>
+
+{% endblock %}
diff --git a/plugins/Morpheus/javascripts/layout.js b/plugins/Morpheus/javascripts/layout.js
new file mode 100644
index 0000000000000000000000000000000000000000..c155945ea933255875bccee760be3d1fde06551a
--- /dev/null
+++ b/plugins/Morpheus/javascripts/layout.js
@@ -0,0 +1,32 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+$(function () {
+    var contentUser = $('#content.user');
+
+    function adjustSize(content)
+    {
+        var width = $('body').width() - content.offset().left - 10;
+        content.css('width', width + 'px');
+    }
+
+    if (contentUser.length) {
+        adjustSize(contentUser);
+        $(window).resize(function () {
+            adjustSize(contentUser);
+        });
+    }
+
+    var contentAdmin = $('#content.admin');
+
+    if (contentAdmin.length) {
+        adjustSize(contentAdmin);
+        $(window).resize(function () {
+            adjustSize(contentAdmin);
+        });
+    }
+});
\ No newline at end of file
diff --git a/plugins/Morpheus/stylesheets/general/_admin.less b/plugins/Morpheus/stylesheets/general/_admin.less
index 0a3b21cd8805bf2791d462128a83cf89a35cba26..3d6aa21f61e528c8077c1777263d9773f97f5d09 100644
--- a/plugins/Morpheus/stylesheets/general/_admin.less
+++ b/plugins/Morpheus/stylesheets/general/_admin.less
@@ -5,6 +5,9 @@
         background-image: none;
         padding-left: 0;
         border-top: 0;
+        > li:first-child span {
+          border-bottom: 3px solid @theme-color-brand;
+        }
         > li {
             padding-bottom: 0px;
             > span {
@@ -15,10 +18,12 @@
                 padding: 12px 15px;
             }
             ul {
+                background-color: @theme-color-menu-contrast-background;
+
                 li {
                     a {
                         color: @theme-color-text-lighter !important;
-                        padding: 0.6em 1.1em;
+                        padding: 0.8em 1.1em;
                         &:hover {
                             color: @theme-color-text;
                             text-decoration: none;
@@ -90,21 +95,40 @@
     color: @theme-color-link;
 }
 
+.admin .adminTable a {
+  color: @theme-color-text;
+  text-decoration: underline;
+}
+
+.admin .adminTable .ui-inline-help a {
+  color: @theme-color-link;
+  text-decoration: none;
+}
+
 .addRowSite,
 .addrow {
     cursor: pointer;
 }
 
+.addrow:hover {
+  text-decoration: underline;
+}
+
 .addrow {
-    margin-top: 10px;
+    margin-top: 16px;
 }
 
 .addRowSite {
     display: inline-block;
     margin: 5px 0;
+    text-decoration: none !important;
     &:before {
         content: url(plugins/Morpheus/images/add.png) !important;
     }
+
+    &:hover {
+      text-decoration: underline !important;
+    }
 }
 
 code {
diff --git a/plugins/Morpheus/stylesheets/general/_form.less b/plugins/Morpheus/stylesheets/general/_form.less
index 81238a747fa71512505cfddc21635909b1108918..f4b2acbdaedb7983affbe504169caac67b3c615b 100644
--- a/plugins/Morpheus/stylesheets/general/_form.less
+++ b/plugins/Morpheus/stylesheets/general/_form.less
@@ -9,12 +9,14 @@
 
 /* on admin screen, Save button aligned on the left */
 .admin .submit {
-  margin-left: 50px;
+  margin-left: 0px;
+  margin-top: 20px;
   float: none;
 }
 
 .admin .entityContainer .submit {
   margin: 0;
+  margin-top: 20px;
 }
 
 .entityContainer .link_but {
@@ -88,8 +90,6 @@ table.entityTable tr td a {
 
 /* cancel button below Forms */
 .entityCancel {
-  float: right;
-  clear: both;
   padding: 10px 0;
   font-size: 12px;
 }
diff --git a/plugins/Morpheus/stylesheets/general/_forms.less b/plugins/Morpheus/stylesheets/general/_forms.less
index 7baf2a6c30ac6f6a2475b67492b29a24c4249139..3a23231bcc1e4f7fb4fb49c5b75f1bc121425755 100644
--- a/plugins/Morpheus/stylesheets/general/_forms.less
+++ b/plugins/Morpheus/stylesheets/general/_forms.less
@@ -64,7 +64,10 @@ button[type="button"],
         min-height: 30px;
         .box-sizing(border-box);
         a {
-            color: @theme-color-text;
+          color: @theme-color-text;
+          &:hover {
+            text-decoration: none;
+          }
         }
         .custom_select_block {
             .custom_select_container{
diff --git a/plugins/Morpheus/stylesheets/theme.less b/plugins/Morpheus/stylesheets/theme.less
index fa2259e4130aadcbe676e74cf725b88a525074d1..7d1ac7d2a08fabe256ab58863c9a01aad956e473 100644
--- a/plugins/Morpheus/stylesheets/theme.less
+++ b/plugins/Morpheus/stylesheets/theme.less
@@ -418,6 +418,10 @@ table.dataTable {
                 text-decoration: none !important;
                 color: @theme-color-link;
                 width: inherit;
+
+              &.withIcon {
+                  color: @theme-color-text;
+              }
             }
 
             div.label,
diff --git a/plugins/Morpheus/stylesheets/ui/_popups.less b/plugins/Morpheus/stylesheets/ui/_popups.less
index dc2b2140de5b271f118399b2786f7a0795d9a786..78515cfab479cf74803d635f349f5e5051514e91 100644
--- a/plugins/Morpheus/stylesheets/ui/_popups.less
+++ b/plugins/Morpheus/stylesheets/ui/_popups.less
@@ -9,8 +9,7 @@
     font-weight: bold;
 }
 
-#feedback-sent,
-#feedback-faq {
+#feedback-sent {
     a {
         color: @theme-color-link;
     }
diff --git a/plugins/Morpheus/stylesheets/uibase/_headerMessage.less b/plugins/Morpheus/stylesheets/uibase/_headerMessage.less
index e2f9a1399742b62828e2135b38ee3c7263b8a4f8..41cdc726b99a93fecbec2dbabce44e3b342d058f 100644
--- a/plugins/Morpheus/stylesheets/uibase/_headerMessage.less
+++ b/plugins/Morpheus/stylesheets/uibase/_headerMessage.less
@@ -3,7 +3,7 @@
   z-index: 0;
   cursor: default;
   position: absolute;
-  right: 1px;
+  right: 0px;
   overflow: hidden;
   display: block;
   height: 20px;
diff --git a/plugins/Morpheus/templates/admin.twig b/plugins/Morpheus/templates/admin.twig
index cf9307721877e9113f542cc7631bcc5f1d94a7ea..e2ebcb166e713e4a3c2f3fab236c8f3134d48bc8 100644
--- a/plugins/Morpheus/templates/admin.twig
+++ b/plugins/Morpheus/templates/admin.twig
@@ -23,7 +23,15 @@
     <![endif]-->
     <!--[if (gte IE 9)|!(IE)]><!-->
     <body ng-app="app" class="{{ postEvent('Template.bodyClass', 'admin') }}"><!--<![endif]-->
-    {% set isAdminLayout = true %}
+
+    {% if isSuperUser %}
+        {% set topMenuModule = 'CoreAdminHome' %}
+        {% set topMenuAction = 'generalSettings' %}
+    {% else %}
+        {% set topMenuModule = 'SitesManager' %}
+        {% set topMenuAction = 'index' %}
+    {% endif %}
+
     {% include "_iframeBuster.twig" %}
     {% include "@CoreHome/_javaScriptDisabled.twig" %}
 
diff --git a/plugins/Morpheus/templates/user.twig b/plugins/Morpheus/templates/user.twig
new file mode 100644
index 0000000000000000000000000000000000000000..35524397aa03768e7ac9d4d2d2216ba8b052c46c
--- /dev/null
+++ b/plugins/Morpheus/templates/user.twig
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html id="ng-app" ng-app="piwikApp">
+    <head>
+{% block head %}
+            <meta charset="utf-8">
+			<meta http-equiv="x-ua-compatible" content="IE=EDGE,chrome=1" >
+            <title>{% if not isCustomLogo %}Piwik &rsaquo; {% endif %}{{ 'CoreAdminHome_Administration'|translate }}</title>
+            <meta name="generator" content="Piwik - free/libre analytics platform"/>
+            <link rel="shortcut icon" href="{{ customFavicon|default('plugins/CoreHome/images/favicon.ico') }}"/>
+
+{% include "@CoreHome/_favicon.twig" %}
+{% include "_jsGlobalVariables.twig" %}
+{% include "_piwikTag.twig" %}
+{% include "_jsCssIncludes.twig" %}
+
+            <!--[if IE]>
+            <link rel="stylesheet" type="text/css" href="plugins/Morpheus/stylesheets/ieonly.css"/>
+            <![endif]-->
+        {% endblock %}
+    </head>
+    <!--[if lt IE 9 ]>
+    <body ng-app="app" class="old-ie {{ postEvent('Template.bodyClass', 'admin') }}">
+    <![endif]-->
+    <!--[if (gte IE 9)|!(IE)]><!-->
+    <body ng-app="app" class="{{ postEvent('Template.bodyClass', 'admin') }}"><!--<![endif]-->
+
+    {% set topMenuModule = 'UsersManager' %}
+    {% set topMenuAction = 'userSettings' %}
+
+    {% include "_iframeBuster.twig" %}
+    {% include "@CoreHome/_javaScriptDisabled.twig" %}
+
+        <div id="root">
+            {% include "@CoreHome/_topScreen.twig" %}
+
+            {% import 'ajaxMacros.twig' as ajax %}
+            {{ ajax.requestErrorDiv(emailSuperUser|default('')) }}
+            {{ postEvent("Template.beforeContent", "user", currentModule) }}
+
+            <div id="container">
+
+                {% if showMenu is not defined or showMenu %}
+                    {% include "@CoreHome/_userMenu.twig" %}
+                {% endif %}
+
+                <div id="content" class="admin user">
+
+                    {% include "@CoreHome/_notifications.twig" %}
+
+                    <div class="ui-confirm" id="alert">
+                        <h2></h2>
+                        <input role="no" type="button" value="{{ 'General_Ok'|translate }}"/>
+                    </div>
+
+                    {% block content %}
+                    {% endblock %}
+
+                </div>
+            </div>
+        </div>
+    </body>
+</html>
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js b/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
index 2f28a6e8878c3d4838833d5dcad704d90bf1a83c..d4dd4eba3f817139b787d90497c4e359c024ff71 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard.controller.js
@@ -18,6 +18,7 @@
         $scope.evolutionSelector = 'visits_evolution';
         $scope.hasSuperUserAccess = piwik.hasSuperUserAccess;
         $scope.date = piwik.broadcast.getValueFromUrl('date');
+        $scope.idSite = piwik.broadcast.getValueFromUrl('idSite');
         $scope.url  = piwik.piwik_url;
         $scope.period = piwik.period;
 
diff --git a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html b/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
index 803549913954975b88bec5e542b9bb785e915a2e..7066fd5d1fcb34bdfa1f52aaa8cfa67f838c7d36 100644
--- a/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
+++ b/plugins/MultiSites/angularjs/dashboard/dashboard.directive.html
@@ -79,7 +79,7 @@
 
         <tr ng-if="hasSuperUserAccess">
             <td colspan="8" class="add_new_site">
-                <a href="{{ url }}?module=SitesManager&action=index&showaddsite=1&period={{ period }}&date={{ date }}">
+                <a href="{{ url }}?module=SitesManager&action=index&showaddsite=1&period={{ period }}&date={{ date }}&idSite={{ idSite }}">
                     <img src='plugins/Morpheus/images/add.png' alt=""/> {{ 'SitesManager_AddSite'|translate }}
                 </a>
             </td>
diff --git a/plugins/PrivacyManager/templates/privacySettings.twig b/plugins/PrivacyManager/templates/privacySettings.twig
index dc989fbf043d8b891f1e7ccd3f43240b17529917..5fa61c683bb8b526aea3b1ef327ea6689a1a6c44 100644
--- a/plugins/PrivacyManager/templates/privacySettings.twig
+++ b/plugins/PrivacyManager/templates/privacySettings.twig
@@ -6,7 +6,7 @@
     <h2 piwik-enriched-headline
         help-url="http://piwik.org/docs/privacy/">{{ 'PrivacyManager_TeaserHeadline'|translate }}</h2>
     <p>{{ 'PrivacyManager_Teaser'|translate('<a href="#anonymizeIPAnchor">',"</a>",'<a href="#deleteLogsAnchor">',"</a>",'<a href="#optOutAnchor">',"</a>")|raw }}
-        {{'PrivacyManager_SeeAlsoOurOfficialGuidePrivacy'|translate('<strong><a href="http://piwik.org/privacy/" rel="noreferrer"  target="_blank">','</a></strong>')|raw }}</p>
+        {{'PrivacyManager_SeeAlsoOurOfficialGuidePrivacy'|translate('<a href="http://piwik.org/privacy/" rel="noreferrer"  target="_blank">','</a>')|raw }}</p>
     <h2 id="anonymizeIPAnchor">{{ 'PrivacyManager_UseAnonymizeIp'|translate }}</h2>
     <form method="post" action="{{ {'action':'saveSettings', 'form':'formMaskLength', 'token_auth':token_auth} | urlRewriteWithParameters }}" id="formMaskLength">
         <div id='anonymizeIpSettings'>
diff --git a/plugins/Provider/Menu.php b/plugins/Provider/Menu.php
deleted file mode 100644
index 2d34f5b2296e01ad22968439bd6480bdaa71038c..0000000000000000000000000000000000000000
--- a/plugins/Provider/Menu.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\Provider;
-
-use Piwik\Menu\MenuReporting;
-
-class Menu extends \Piwik\Plugin\Menu
-{
-    public function configureReportingMenu(MenuReporting $menu)
-    {
-        $menu->rename('General_Visitors', 'UserCountry_SubmenuLocations',
-                      'General_Visitors', 'Provider_SubmenuLocationsProvider');
-    }
-}
diff --git a/plugins/Provider/lang/en.json b/plugins/Provider/lang/en.json
index f634e2eda74c9398c189d310cd57ce634cbc08f2..4252d9bc15d99474777573682b826666ef632e0a 100644
--- a/plugins/Provider/lang/en.json
+++ b/plugins/Provider/lang/en.json
@@ -3,7 +3,6 @@
         "ColumnProvider": "Provider",
         "PluginDescription": "Reports the Provider of the visitors.",
         "ProviderReportDocumentation": "This report shows which Internet Service Providers your visitors used to access the website. You can click on a provider name for more details. %s If Piwik can't determine a visitor's provider, it is listed as IP.",
-        "SubmenuLocationsProvider": "Locations & Provider",
         "WidgetProviders": "Providers",
         "ProviderReportFooter": "Unknown provider means the IP address could not be looked up."
     }
diff --git a/plugins/ScheduledReports/Menu.php b/plugins/ScheduledReports/Menu.php
index 6c0111ff235101b6a0d460b61a6ad6ca40cd3474..ea02b98b60520121c1e42d28aafd548ae3bbdf25 100644
--- a/plugins/ScheduledReports/Menu.php
+++ b/plugins/ScheduledReports/Menu.php
@@ -24,11 +24,10 @@ class Menu extends \Piwik\Plugin\Menu
             \Piwik\Plugin\Manager::getInstance()->isPluginActivated('MobileMessaging')
                 ? 'MobileMessaging_TopLinkTooltip' : 'ScheduledReports_TopLinkTooltip');
 
-        $menu->addManageItem(null, $this->urlForDefaultAction(array('segment' => false)), 10);
-        $menu->addManageItem(
+        $menu->addPersonalItem(
             $this->getTopMenuTranslationKey(),
             $this->urlForAction('index', array('segment' => false)),
-            13,
+            7,
             $tooltip
         );
     }
diff --git a/plugins/ScheduledReports/javascripts/pdf.js b/plugins/ScheduledReports/javascripts/pdf.js
index da23deb4fdd231436b03b5880b43535830ac0a44..c34de6f9ca196240bb67dbc8bd4999bc007bf40c 100644
--- a/plugins/ScheduledReports/javascripts/pdf.js
+++ b/plugins/ScheduledReports/javascripts/pdf.js
@@ -66,7 +66,7 @@ function formSetEditReport(idReport) {
 
 function getReportAjaxRequest(idReport, defaultApiMethod) {
     var parameters = {};
-    piwikHelper.lazyScrollTo(".centerLargeDiv>h2", 400);
+    piwikHelper.lazyScrollTo(".emailReports>h2", 400);
     parameters.module = 'API';
     parameters.method = defaultApiMethod;
     if (idReport == 0) {
diff --git a/plugins/ScheduledReports/lang/en.json b/plugins/ScheduledReports/lang/en.json
index 7b5b14d495a4b3d45c573711f511f35b24a61db2..fdb394699c2b33cedb3bfc807ee30963df5c558a 100644
--- a/plugins/ScheduledReports/lang/en.json
+++ b/plugins/ScheduledReports/lang/en.json
@@ -17,7 +17,7 @@
         "EmailSchedule": "Email Schedule",
         "EvolutionGraph": "Show Historical Graphs for the top %s values",
         "FrontPage": "Front Page",
-        "ManageEmailReports": "Manage Email Reports",
+        "PersonalEmailReports": "Personal Email Reports",
         "MonthlyScheduleHelp": "Monthly schedule: report will be sent the first day of each month.",
         "MustBeLoggedIn": "You must be logged in to create and schedule custom reports.",
         "NoRecipients": "This report has no recipients",
diff --git a/plugins/ScheduledReports/templates/_addReport.twig b/plugins/ScheduledReports/templates/_addReport.twig
index 3fbc21b98b33b6739f46da6bb4f371115c2a9c27..24ddf473a33e4482bfede7b8a066e36d5c408276 100644
--- a/plugins/ScheduledReports/templates/_addReport.twig
+++ b/plugins/ScheduledReports/templates/_addReport.twig
@@ -1,7 +1,4 @@
 <div class="entityAddContainer" style="display:none;">
-    <div class='entityCancel'>
-        {{ 'ScheduledReports_CancelAndReturnToReports'|translate("<a class='entityCancelLink'>","</a>")|raw }}
-    </div>
     <div class='clear'></div>
     <form id='addEditReport'>
         <table class="dataTable entityTable">
diff --git a/plugins/ScheduledReports/templates/_listReports.twig b/plugins/ScheduledReports/templates/_listReports.twig
index b9359f21a0b06b34c723da7f2569513ced138f6f..72b6698fcbbcf4110b1b0dbde0e14eebac868add 100644
--- a/plugins/ScheduledReports/templates/_listReports.twig
+++ b/plugins/ScheduledReports/templates/_listReports.twig
@@ -12,7 +12,7 @@
         </tr>
         </thead>
 
-        {% if userLogin == 'anonymous' %}
+    {% if userLogin == 'anonymous' %}
         <tr>
             <td colspan='7'>
                 <br/>
@@ -21,18 +21,14 @@
                 <br/><br/>
             </td>
         </tr>
-    </table>
     {% elseif reports is empty %}
-    <tr>
-        <td colspan='7'>
-            <br/>
-            {{ 'ScheduledReports_ThereIsNoReportToManage'|translate(siteName)|raw }}.
-            <br/><br/>
-            <a onclick='' id='linkAddReport'>&rsaquo; {{ 'ScheduledReports_CreateAndScheduleReport'|translate }}</a>
-            <br/><br/>
-        </td>
-    </tr>
-    </table>
+        <tr>
+            <td colspan='7'>
+                <br/>
+                {{ 'ScheduledReports_ThereIsNoReportToManage'|translate(siteName)|raw }}.
+                <br/><br/>
+            </td>
+        </tr>
     {% else %}
     {% for report in reports %}
         <tr>
@@ -62,7 +58,7 @@
                         <br/>
                     {% endfor %}
                     {# send now link #}
-                    <a href="#" idreport="{{ report.idreport }}" name="linkSendNow" class="link_but" style="margin-top:3px;">
+                    <a href="#" idreport="{{ report.idreport }}" name="linkSendNow" class="link_but withIcon" style="margin-top:3px;">
                         <img border=0 src='{{ reportTypes[report.type] }}'/>
                         {{ 'ScheduledReports_SendReportNow'|translate }}
                     </a>
@@ -75,33 +71,35 @@
                             'outputType':downloadOutputType, 'language':language,
                             'format': (report.format in ['html', 'csv']) ? report.format : false
                        }) }}"
-                   rel="noreferrer"  target="_blank" name="linkDownloadReport" id="{{ report.idreport }}" class="link_but">
+                   rel="noreferrer"  target="_blank" name="linkDownloadReport" id="{{ report.idreport }}" class="link_but withIcon">
                     <img src='{{ reportFormatsByReportType[report.type][report.format] }}' border="0"/>
                     {{ 'General_Download'|translate }}
                 </a>
             </td>
             <td>
                 {# edit link #}
-                <a href='#' name="linkEditReport" id="{{ report.idreport }}" class="link_but">
+                <a href='#' name="linkEditReport" id="{{ report.idreport }}" class="link_but withIcon">
                     <img src='plugins/Morpheus/images/ico_edit.png' border="0"/>
                     {{ 'General_Edit'|translate }}
                 </a>
             </td>
             <td>
                 {# delete link #}
-                <a href='#' name="linkDeleteReport" id="{{ report.idreport }}" class="link_but">
+                <a href='#' name="linkDeleteReport" id="{{ report.idreport }}" class="link_but withIcon">
                     <img src='plugins/Morpheus/images/ico_delete.png' border="0"/>
                     {{ 'General_Delete'|translate }}
                 </a>
             </td>
         </tr>
     {% endfor %}
+    {% endif %}
+
     </table>
     {% if userLogin != 'anonymous' %}
         <br/>
-        <a onclick='' id='linkAddReport'>&rsaquo; {{ 'ScheduledReports_CreateAndScheduleReport'|translate }}</a>
+        <div id='linkAddReport' class="addrow"><img src='plugins/Morpheus/images/add.png'/> {{ 'ScheduledReports_CreateAndScheduleReport'|translate }}</div>
         <br/>
         <br/>
     {% endif %}
-    {% endif %}
+
 </div>
diff --git a/plugins/ScheduledReports/templates/index.twig b/plugins/ScheduledReports/templates/index.twig
index b8ccecf53a9c69299f5cf4136a0d1f73b3b36330..89065c5d90179cd43172d9d58cc83e4632755e21 100644
--- a/plugins/ScheduledReports/templates/index.twig
+++ b/plugins/ScheduledReports/templates/index.twig
@@ -1,16 +1,17 @@
-{% extends 'dashboard.twig' %}
+{% extends 'user.twig' %}
 
 {% block content %}
 
-{% include "@CoreHome/_siteSelectHeader.twig" %}
+<div class="emailReports">
+    <h2 piwik-enriched-headline
+        help-url="http://piwik.org/docs/email-reports/">{{ 'ScheduledReports_PersonalEmailReports'|translate }}</h2>
 
-<div class="top_controls">
-    {% include "@CoreHome/_periodSelect.twig" %}
-</div>
+    {% include "@CoreHome/_siteSelectHeader.twig" %}
+
+    <div class="top_controls">
+        {% include "@CoreHome/_periodSelect.twig" %}
+    </div>
 
-<div class="centerLargeDiv">
-    <h2 piwik-enriched-headline
-        help-url="http://piwik.org/docs/email-reports/">{{ 'ScheduledReports_ManageEmailReports'|translate }}</h2>
     <span id="reportSentSuccess"></span>
     <span id="reportUpdatedSuccess"></span>
 
@@ -53,10 +54,17 @@
         position:relative;
     }
 
-    .entityAddContainer > .entityCancel:first-child {
-        position: absolute;
-        right:0;
-        bottom:100%;
+    #linkAddReport {
+        margin-top: 0px;
     }
+
+    #linkAddReport:hover {
+        text-decoration: underline;
+    }
+
+    .emailReports .top_controls {
+        padding-bottom: 18px;
+    }
+
 </style>
 {% endblock %}
diff --git a/plugins/SitesManager/templates/global-settings.html b/plugins/SitesManager/templates/global-settings.html
index 049d7b5386a40b25c2b9846db2d3952b6a06db68..e6ae10d949d41863cb458d64064759c26be7ecf8 100644
--- a/plugins/SitesManager/templates/global-settings.html
+++ b/plugins/SitesManager/templates/global-settings.html
@@ -182,7 +182,7 @@
         </tr>
     </table>
 
-    <span style="margin-left:20px;">
+    <span>
         <input type="submit" class="submit" ng-click="saveGlobalSettings()" value="{{ 'General_Save'|translate }}"/>
     </span>
 
diff --git a/plugins/SitesManager/templates/sites-list/sites-list.html b/plugins/SitesManager/templates/sites-list/sites-list.html
index 8252585d223586d297929d636865b2e1721acf63..bd8ddd1c6ef1464f0a998e74adb17e27934e93be 100644
--- a/plugins/SitesManager/templates/sites-list/sites-list.html
+++ b/plugins/SitesManager/templates/sites-list/sites-list.html
@@ -19,8 +19,8 @@
             <th>{{ 'SitesManager_Timezone'|translate }}</th>
             <th>{{ 'SitesManager_Currency'|translate }}</th>
             <th>{{ 'Goals_Ecommerce'|translate }}</th>
-            <th></th>
-            <th></th>
+            <th>{{ 'General_Edit'|translate }}</th>
+            <th>{{ 'General_Delete'|translate }}</th>
             <th>{{ 'General_JsTrackingTag'|translate }}</th>
         </tr>
         </thead>
diff --git a/plugins/UsersManager/Menu.php b/plugins/UsersManager/Menu.php
index 67d9811aad6b56e25626f9bb19e48b811b02fca1..9f3175a3ef8ccb2caf9d4f5b21e6fdcffbec04bd 100644
--- a/plugins/UsersManager/Menu.php
+++ b/plugins/UsersManager/Menu.php
@@ -18,7 +18,6 @@ class Menu extends \Piwik\Plugin\Menu
     {
         if (Piwik::isUserHasSomeAdminAccess()) {
             $menu->addManageItem('UsersManager_MenuUsers', $this->urlForAction('index'), $order = 2);
-            $menu->addSettingsItem('UsersManager_MenuPersonal', $this->urlForAction('userSettings'), $order = 1);
         }
 
         if (Piwik::hasUserSuperUserAccess() && API::getInstance()->getSitesAccessFromUser('anonymous')) {
@@ -29,7 +28,7 @@ class Menu extends \Piwik\Plugin\Menu
     public function configureUserMenu(MenuUser $menu)
     {
         if (!Piwik::isUserIsAnonymous()) {
-            $menu->addItem('', 'General_Settings', $this->urlForAction('userSettings'), 0);
+            $menu->addItem('UsersManager_MenuPersonal', 'General_Settings', $this->urlForAction('userSettings'), 0);
         }
     }
 }
diff --git a/plugins/UsersManager/javascripts/usersManager.js b/plugins/UsersManager/javascripts/usersManager.js
index 51be3f80639582791587f1414b06c6cdcbe14814..0b7f4e431eaba7e583c7b7ba0bd03a9cf2ac61d7 100644
--- a/plugins/UsersManager/javascripts/usersManager.js
+++ b/plugins/UsersManager/javascripts/usersManager.js
@@ -263,7 +263,7 @@ $(document).ready(function () {
         }
     );
 
-    $('.addrow').click(function () {
+    $('.admin .user .addrow').click(function () {
         piwikHelper.hideAjaxError();
         $(this).toggle();
 
diff --git a/plugins/UsersManager/templates/index.twig b/plugins/UsersManager/templates/index.twig
index f102bce7e1d4231e9900a5e12e55ad6b6eaa3e4d..2a29c9f85165afb219eb61e890566a552896a7c7 100644
--- a/plugins/UsersManager/templates/index.twig
+++ b/plugins/UsersManager/templates/index.twig
@@ -110,7 +110,7 @@
     {% import 'ajaxMacros.twig' as ajax %}
     {{ ajax.errorDiv('ajaxErrorUsersManagement') }}
     {{ ajax.loadingDiv('ajaxLoadingUsersManagement') }}
-    <div class="entityContainer" style="margin-bottom:50px;">
+    <div class="user entityContainer" style="margin-bottom:50px;">
         <table class="entityTable dataTable" id="users">
             <thead>
             <tr>
diff --git a/plugins/UsersManager/templates/userSettings.twig b/plugins/UsersManager/templates/userSettings.twig
index cc609030803aecd68b8d1a53f667bd28f1dd06c2..769a682a432ef7a5dcdb94e9a8f61d20cc8ce4ae 100644
--- a/plugins/UsersManager/templates/userSettings.twig
+++ b/plugins/UsersManager/templates/userSettings.twig
@@ -1,9 +1,8 @@
-{% extends 'admin.twig' %}
+{% extends 'user.twig' %}
 
 {% block content %}
 <h2 piwik-enriched-headline>{{ 'UsersManager_PersonalSettings'|translate }}</h2>
 
-<br/>
 <div class="ui-confirm" id="confirmPasswordChange">
     <h2>{{ 'UsersManager_ChangePasswordConfirm'|translate }}</h2>
     <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
diff --git a/plugins/VisitFrequency/Controller.php b/plugins/VisitFrequency/Controller.php
index ee1d3620a9325c5d620f8e96b1d4b95ccf458ae5..43453f06bf902e19e979b2d0ee10ce9d3d49ffd9 100644
--- a/plugins/VisitFrequency/Controller.php
+++ b/plugins/VisitFrequency/Controller.php
@@ -21,8 +21,11 @@ class Controller extends \Piwik\Plugin\Controller
     function index()
     {
         $view = new View('@VisitFrequency/index');
+        $this->setGeneralVariablesView($view);
+
         $view->graphEvolutionVisitFrequency = $this->getEvolutionGraph(array(), array('nb_visits_returning'));
         $this->setSparklinesAndNumbers($view);
+
         return $view->render();
     }
 
diff --git a/plugins/VisitFrequency/templates/_sparklines.twig b/plugins/VisitFrequency/templates/_sparklines.twig
index f497c970e5b9199571d3d1b381f437f35060c8fa..97697272e84385f46553fc4a6b27fbd768583a0b 100644
--- a/plugins/VisitFrequency/templates/_sparklines.twig
+++ b/plugins/VisitFrequency/templates/_sparklines.twig
@@ -1,26 +1,26 @@
 <div id="leftcolumn">
-<div class="sparkline">
-    {{ sparkline(urlSparklineNbVisitsReturning) }}
-    {{ 'VisitFrequency_ReturnVisits'|translate("<strong>"~nbVisitsReturning~"</strong>")|raw }}
-</div>
-<div class="sparkline">
-    {{ sparkline(urlSparklineNbActionsReturning) }}
-    {{ 'VisitFrequency_ReturnActions'|translate("<strong>"~nbActionsReturning~"</strong>")|raw }}
-</div>
-<div class="sparkline">
-    {{ sparkline(urlSparklineActionsPerVisitReturning) }}
-    {{ 'VisitFrequency_ReturnAvgActions'|translate("<strong>"~nbActionsPerVisitReturning~"</strong>")|raw }}
-</div>
-    </div><div id="rightcolumn">
-<div class="sparkline">
-    {{ sparkline(urlSparklineAvgVisitDurationReturning) }}
-    {% set avgVisitDurationReturning=avgVisitDurationReturning|sumtime %}
-    {{ 'VisitFrequency_ReturnAverageVisitDuration'|translate("<strong>"~avgVisitDurationReturning~"</strong>")|raw }}
-</div>
-<div class="sparkline">
-    {{ sparkline(urlSparklineBounceRateReturning) }}
-    {{ 'VisitFrequency_ReturnBounceRate'|translate("<strong>"~bounceRateReturning~"</strong>")|raw }}
-</div>
-{% include "_sparklineFooter.twig" %}
+    <div class="sparkline">
+        {{ sparkline(urlSparklineNbVisitsReturning) }}
+        {{ 'VisitFrequency_ReturnVisits'|translate("<strong>"~nbVisitsReturning~"</strong>")|raw }}
+    </div>
+    <div class="sparkline">
+        {{ sparkline(urlSparklineNbActionsReturning) }}
+        {{ 'VisitFrequency_ReturnActions'|translate("<strong>"~nbActionsReturning~"</strong>")|raw }}
+    </div>
+    <div class="sparkline">
+        {{ sparkline(urlSparklineActionsPerVisitReturning) }}
+        {{ 'VisitFrequency_ReturnAvgActions'|translate("<strong>"~nbActionsPerVisitReturning~"</strong>")|raw }}
+    </div>
+</div><div id="rightcolumn">
+    <div class="sparkline">
+        {{ sparkline(urlSparklineAvgVisitDurationReturning) }}
+        {% set avgVisitDurationReturning=avgVisitDurationReturning|sumtime %}
+        {{ 'VisitFrequency_ReturnAverageVisitDuration'|translate("<strong>"~avgVisitDurationReturning~"</strong>")|raw }}
+    </div>
+    <div class="sparkline">
+        {{ sparkline(urlSparklineBounceRateReturning) }}
+        {{ 'VisitFrequency_ReturnBounceRate'|translate("<strong>"~bounceRateReturning~"</strong>")|raw }}
+    </div>
+    {% include "_sparklineFooter.twig" %}
 </div>
 <div style="clear:both"></div>
\ No newline at end of file
diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator
index 9834e8fffbd1293818a813f003c5f3a08181cdfa..a292a7fe8b815ffe43ea9fd47940938c6bc2fa6b 160000
--- a/plugins/VisitorGenerator
+++ b/plugins/VisitorGenerator
@@ -1 +1 @@
-Subproject commit 9834e8fffbd1293818a813f003c5f3a08181cdfa
+Subproject commit a292a7fe8b815ffe43ea9fd47940938c6bc2fa6b
diff --git a/plugins/VisitorInterest/Controller.php b/plugins/VisitorInterest/Controller.php
index 54de6972827bdd78d7e36ba7a020a38ee50d3a1a..939318534ebabd6fe390be1615a55c595a46bfdf 100644
--- a/plugins/VisitorInterest/Controller.php
+++ b/plugins/VisitorInterest/Controller.php
@@ -18,11 +18,26 @@ class Controller extends \Piwik\Plugin\Controller
 {
     public function index()
     {
+        $byDimension = new View\ReportsByDimension('VisitorInterest');
+
+        $reportsToAdd = array(
+            new GetNumberOfVisitsPerVisitDuration(),
+            new GetNumberOfVisitsPerPage(),
+            new GetNumberOfVisitsByVisitCount(),
+            new GetNumberOfVisitsByDaysSinceLast()
+        );
+
+        foreach ($reportsToAdd as $report) {
+            /** @var \Piwik\Plugin\Report $report */
+            $byDimension->addReport(
+                $report->getCategory(),
+                $report->getWidgetTitle(),
+                $report->getModule() . '.' . $report->getAction(),
+                array());
+        }
+
         $view = new View('@VisitorInterest/index');
-        $view->dataTableNumberOfVisitsPerVisitDuration = $this->renderReport(new GetNumberOfVisitsPerVisitDuration());
-        $view->dataTableNumberOfVisitsPerPage = $this->renderReport(new GetNumberOfVisitsPerPage());
-        $view->dataTableNumberOfVisitsByVisitNum = $this->renderReport(new GetNumberOfVisitsByVisitCount());
-        $view->dataTableNumberOfVisitsByDaysSinceLast = $this->renderReport(new GetNumberOfVisitsByDaysSinceLast());
+        $view->reports = $byDimension->render();
         return $view->render();
     }
 }
diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php
index c5fdac37117816d0cd2551317b8c5cd8ee94f78f..11d5f717c490ef30feb52296db5f283da9cc629f 100644
--- a/plugins/VisitorInterest/VisitorInterest.php
+++ b/plugins/VisitorInterest/VisitorInterest.php
@@ -33,7 +33,7 @@ class VisitorInterest extends \Piwik\Plugin
         Piwik::addAction('Template.footerVisitsFrequency', array('Piwik\Plugins\VisitorInterest\VisitorInterest', 'footerVisitsFrequency'));
     }
 
-    public static function footerVisitsFrequency(&$out)
+   public static function footerVisitsFrequency(&$out)
     {
         $out .= FrontController::getInstance()->fetchDispatch('VisitorInterest', 'index');
     }
diff --git a/plugins/VisitorInterest/templates/index.twig b/plugins/VisitorInterest/templates/index.twig
index 2ffae16c8f3192abf6942ee36efb348cb673e190..59d474fc471038927b1cf63a83839be2e1da19c7 100644
--- a/plugins/VisitorInterest/templates/index.twig
+++ b/plugins/VisitorInterest/templates/index.twig
@@ -1,4 +1,3 @@
-<br />
 <div id="leftcolumn">
     <h2 piwik-enriched-headline>{{ 'VisitorInterest_VisitsPerDuration'|translate }}</h2>
     {{ dataTableNumberOfVisitsPerVisitDuration|raw }}
diff --git a/plugins/Widgetize/stylesheets/widgetize.less b/plugins/Widgetize/stylesheets/widgetize.less
index 47b49ba39ac6ab8ba46481632cee2b2822ab8521..dafad78d9036389de133eeb48d0d2de63dc6d426 100644
--- a/plugins/Widgetize/stylesheets/widgetize.less
+++ b/plugins/Widgetize/stylesheets/widgetize.less
@@ -1,7 +1,10 @@
 .widgetize {
     width: 100%;
-    padding: 15px 15px 0 15px;
     font-size: 13px;
+
+  .top_controls {
+    padding-bottom: 16px;
+  }
 }
 
 .widgetize p {
diff --git a/plugins/Widgetize/templates/index.twig b/plugins/Widgetize/templates/index.twig
index 4763473a62518c09094f5be54d49b2938044c3b6..f5cbbcb10f26a9c40db58441badfbd33f9d09501 100644
--- a/plugins/Widgetize/templates/index.twig
+++ b/plugins/Widgetize/templates/index.twig
@@ -1,12 +1,8 @@
-{% extends 'dashboard.twig' %}
+{% extends 'user.twig' %}
 
 {% block content %}
 
-<div class="pageWrap">
-    <div class="top_controls">
-        {% include "@CoreHome/_siteSelectHeader.twig" %}
-        {% include "@CoreHome/_periodSelect.twig" %}
-    </div>
+<div>
 
     <script type="text/javascript">
     $(function () {
@@ -30,31 +26,40 @@
     });
 </script>
 
+<h2 piwik-enriched-headline>{{ 'General_Widgets'|translate }}</h2>
+
+{% include "@CoreHome/_siteSelectHeader.twig" %}
+
 <div class="widgetize">
     <p>With Piwik, you can export your Web Analytics reports on your blog, website, or intranet dashboard... in one click.
 
+    <h2>Authentication</h2>
     <p>
-        <strong>&rsaquo; Widget authentication:</strong> If you want your widgets to be viewable by everybody, you first have to set the 'view' permissions
+        If you want your widgets to be viewable by everybody, you first have to set the 'view' permissions
         to the anonymous user in the <a href='index.php?module=UsersManager' rel='noreferrer' target='_blank'>Users Management section</a>.
         <br/>Alternatively, if you are publishing widgets on a password protected or private page,
         you don't necessarily have to allow 'anonymous' to view your reports. In this case, you can add the secret token_auth parameter (found in the
         <a href='{{ linkTo({'module':'API','action':'listAllAPI'}) }}' rel='noreferrer' target='_blank'>API page</a>) in the widget URL.
     </p>
 
-    <p><strong>&rsaquo; Widgetize the full dashboard:</strong> You can also display the full Piwik dashboard in your application or website in an IFRAME
+    <h2>Widgetize dashboards</h2>
+    <p>You can also display the full Piwik dashboard in your application or website in an IFRAME
         (<a href='' rel='noreferrer' target='_blank' id='linkDashboardUrl'>see example</a>).
         The date parameter can be set to a specific calendar date, "today", or "yesterday". The period parameter can be set to "day", "week", "month", or
         "year".
         The language parameter can be set to the language code of a translation, such as language=fr.
         For example, for idSite=1 and date=yesterday, you can write: <span id='exportFullDashboard'></span>
-    </p>
-
-    <p>
-        <strong>&rsaquo; Widgetize the all websites dashboard in an IFRAME</strong> (<a href='' rel='noreferrer' target='_blank' id='linkAllWebsitesDashboardUrl'>see example</a>)
+        <br />
+        You can also widgetize the all websites dashboard in an IFRAME (<a href='' rel='noreferrer' target='_blank' id='linkAllWebsitesDashboardUrl'>see example</a>)
         <span id='exportAllWebsitesDashboard'></span>
     </p>
 
-    <p><strong>&rsaquo; Select a report, and copy paste in your page the embed code below the widget:</strong>
+    <h2>Widgetize reports</h2>
+    <p>Select a report, and copy paste in your page the embed code below the widget:
+
+    <div class="top_controls">
+        {% include "@CoreHome/_periodSelect.twig" %}
+    </div>
 
     <div id="widgetPreview"></div>