From b52a6a2aee90bf4a595c8a3ae38c75b46b02eba4 Mon Sep 17 00:00:00 2001
From: Matthieu Napoli <matthieu@mnapoli.fr>
Date: Tue, 26 May 2015 09:31:57 +0200
Subject: [PATCH] ref #7587 New design for the site manager table and forms

---
 plugins/SitesManager/SitesManager.php         |   1 +
 plugins/SitesManager/lang/en.json             |   1 +
 .../stylesheets/SitesManager.less             | 224 +++++++--------
 .../templates/global-settings.html            | 262 ++++++------------
 .../templates/help/excluded-ip-help.html      |   3 +-
 .../help/excluded-query-parameters-help.html  |   3 +-
 .../help/excluded-user-agents-help.html       |   3 +-
 .../templates/help/timezone-help.html         |   9 +-
 .../templates/sites-list/add-site-link.html   |  35 ++-
 .../sites-list/alias-urls-field.html          |  23 --
 .../templates/sites-list/site-fields.html     | 238 ++++++----------
 .../sites-list/site-search-field.html         |  89 +++---
 .../templates/sites-list/sites-list.html      |   6 +-
 13 files changed, 349 insertions(+), 548 deletions(-)
 delete mode 100644 plugins/SitesManager/templates/sites-list/alias-urls-field.html

diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index a00fc0cbe8..8d7da85bfb 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -329,5 +329,6 @@ class SitesManager extends \Piwik\Plugin
         $translationKeys[] = "SitesManager_AddSite";
         $translationKeys[] = "Goals_Ecommerce";
         $translationKeys[] = "SitesManager_NotFound";
+        $translationKeys[] = "SitesManager_SetUp";
     }
 }
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 7ee253b445..83c8d7b5ad 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -61,6 +61,7 @@
         "SelectACity": "Select a city",
         "SelectDefaultCurrency": "You can select the currency to set by default for new websites.",
         "SelectDefaultTimezone": "You can select the time zone to select by default for new websites.",
+        "SetUp": "Set up",
         "ShowTrackingTag": "View Tracking code",
         "Sites": "Websites",
         "SiteSearchUse": "You can use Piwik to track and report what visitors are searching in your website's internal search engine.",
diff --git a/plugins/SitesManager/stylesheets/SitesManager.less b/plugins/SitesManager/stylesheets/SitesManager.less
index 10a989c7c7..3a268ca03f 100644
--- a/plugins/SitesManager/stylesheets/SitesManager.less
+++ b/plugins/SitesManager/stylesheets/SitesManager.less
@@ -1,112 +1,115 @@
-.trackingHelp ul {
-    padding-left: 40px;
-    list-style-type: square;
-}
-
-.trackingHelp ul li {
-    margin-bottom: 10px;
-}
-
-.trackingHelp h2 {
-    margin-top: 20px;
-}
-
-.trackingHelp p {
-    text-align: justify;
+.trackingHelp {
+    ul {
+        padding-left: 40px;
+        list-style-type: square;
+        li {
+            margin-bottom: 10px;
+        }
+    }
+    h2 {
+        margin-top: 20px;
+    }
+    p {
+        text-align: justify;
+    }
 }
 
 .SitesManager {
-    
-  .entityContainer {
-    width: 100%;
-  }
 
-  @media (max-width: 1700px) {
-    .entityContainer {
-      width: 800px;
+    .sitesManagerList {
+        .isLoading {
+            opacity: 0.5;
+        }
+
+        table {
+            width: 100%;
+            border-top: solid 1px @theme-color-border;
+            border-bottom: solid 1px @theme-color-border;
+
+            th, td {
+                padding: 12px 4px;
+            }
+            th {
+                font-size: 10px;
+                font-weight: normal;
+                text-transform: uppercase;
+                text-align: left;
+            }
+            tbody > tr {
+                border-top: solid 1px @theme-color-border;
+                border-left: solid 1px @theme-color-border;
+                border-right: solid 1px @theme-color-border;
+            }
+            th:first-child, td:first-child {
+                padding-left: 10px;
+            }
+            th:last-child, td:last-child {
+                padding-right: 10px;
+            }
+            td.editingSite {
+                background-color: @theme-color-background-tinyContrast;
+                padding: 20px;
+                .editingSiteFooter {
+                    background-color: @theme-color-background-base;
+                    padding: 20px;
+                    margin: 0 -20px -20px;
+                    border-top: solid 1px #E5E5E5;
+                }
+            }
+        }
     }
-  }
-
-  .wideColumn {
-    min-width: 250px;
-  }
-  .bottomButtonBar {
-    margin-top: 9px
-  }
-
-  .visible {
-    visibility: visible;
-  }
-  .hide_only {
-    visibility: hidden;
-  }
-
-  .search_ico {
-
-    cursor: pointer;
-    display: block;
-    left: 205px;
-    margin: -32px 0 17px -21px;
-    position: relative;
-  }
-
-  .sitesButtonBar {
-    width:100%;
-    text-align: center;
-  }
-
-  .addSite {
-    float: left;
-    display: inline-block;
 
-    .addRowSite {
-      font-size: 14px;
-      margin-top: 8px;
+    .visible {
+        visibility: visible;
     }
-  }
-
-  .paging {
-    text-align: center;
-    display: inline-block;
-    min-width: 400px;
-    margin-top: 10px;
-
-    .counter {
-      margin-left: 10px;
-      margin-right: 10px;
+    .hide_only {
+        visibility: hidden;
     }
 
-  }
-
-  .search {
-    display: inline-block;
-    text-align: right;
-    float: right;
+    .search_ico {
+        cursor: pointer;
+        display: block;
+        left: 205px;
+        margin: -32px 0 17px -21px;
+        position: relative;
+    }
 
-    input {
-      padding-right: 29px;
-      width: 205px;
-      margin-bottom: 7px;
+    .sitesButtonBar {
+        width: 100%;
+        text-align: center;
+    }
+    .bottomButtonBar {
+        margin-top: 7px;
+    }
+    .addSite {
+        float: left;
+        margin-top: 8px;
+        margin-bottom: 8px;
     }
-  }
-}
 
-.sitesManagerList {
-  clear:both;
+    .paging {
+        text-align: center;
+        display: inline-block;
+        min-width: 400px;
+        margin-top: 8px;
 
-  .isLoading {
-    opacity: 0.5;
-  }
-}
+        .counter {
+            margin-left: 10px;
+            margin-right: 10px;
+        }
+    }
 
-.addRowSite {
-  text-decoration: none;
-}
+    .search {
+        display: inline-block;
+        text-align: right;
+        float: right;
 
-.addRowSite:before {
-  display: inline-block;
-  content: url(plugins/Morpheus/images/add.png);
-  vertical-align: middle;
+        input {
+            padding-right: 29px;
+            width: 205px;
+            margin-bottom: 7px;
+        }
+    }
 }
 
 td.editable-site-field:hover {
@@ -114,26 +117,25 @@ td.editable-site-field:hover {
 }
 
 .link_but:hover {
-  cursor: pointer;
+    cursor: pointer;
 }
-
 .link_but:hover > span {
-  text-decoration: underline;
+    text-decoration: underline;
 }
 
 .site-without-data {
-  padding: 15px;
-  h2 {
-    border-bottom: 1px solid #ccc;
-    margin: 25px 0;
-    padding: 0 0 5px 0;
-    font-size: 24px;
-  }
-  h3 {
-    margin: 15px 0;
-    font-size: 18px;
-    line-height: 24px;
-    font-weight: normal;
-    color: black;
-  }
+    padding: 15px;
+    h2 {
+        border-bottom: 1px solid #ccc;
+        margin: 25px 0;
+        padding: 0 0 5px 0;
+        font-size: 24px;
+    }
+    h3 {
+        margin: 15px 0;
+        font-size: 18px;
+        line-height: 24px;
+        font-weight: normal;
+        color: black;
+    }
 }
diff --git a/plugins/SitesManager/templates/global-settings.html b/plugins/SitesManager/templates/global-settings.html
index e6ae10d949..4447d1fd20 100644
--- a/plugins/SitesManager/templates/global-settings.html
+++ b/plugins/SitesManager/templates/global-settings.html
@@ -1,189 +1,85 @@
 <div ng-show="hasSuperUserAccess">
 
-    <br/>
-
     <h2 id="globalSettings">{{ 'SitesManager_GlobalWebsitesSettings' | translate }}</h2>
 
-    <br/>
-
-    <table style="width:600px;" class="adminTable">
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_GlobalListExcludedIps'|translate }}</strong>
-
-                <p>{{ 'SitesManager_ListOfIpsToBeExcludedOnAllWebsites'|translate }} </p>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div sites-manager-multiline-field field="globalSettings.excludedIpsGlobal" cols="30" rows="3" id="excludedIpsGlobal"></div>
-            </td>
-            <td>
-                <label for="excludedIpsGlobal" ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'">
-                </label>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_GlobalListExcludedQueryParameters'|translate }}</strong>
-
-                <p>{{ 'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate }} </p>
-            </td>
-        </tr>
-
-        <tr>
-            <td>
-                <div sites-manager-multiline-field field="globalSettings.excludedQueryParametersGlobal" cols="30" rows="3" id="excludedQueryParametersGlobal"></div>
-            </td>
-            <td>
-                <label for="excludedQueryParametersGlobal" ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'">
-                </label>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_GlobalListExcludedUserAgents'|translate }}</strong>
-
-                <p>{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }}</p>
-            </td>
-        </tr>
-
-        <tr>
-            <td>
-                <div sites-manager-multiline-field field="globalSettings.excludedUserAgentsGlobal" cols="30" rows="3" id="excludedUserAgentsGlobal"></div>
-            </td>
-
-            <td>
-                <label for="excludedUserAgentsGlobal"  ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'">
-                </label>
-            </td>
-        </tr>
-
-        <tr>
-            <td>
-                <input type="checkbox" id="siteSpecificUserAgentExcludeEnabled" ng-model="globalSettings.siteSpecificUserAgentExcludeEnabled">
-
-                <label for="siteSpecificUserAgentExcludeEnabled">
-                    {{ 'SitesManager_EnableSiteSpecificUserAgentExclude'|translate }}
-                </label>
-            </td>
-            <td>
-                <div class="ui-inline-help" ng-bind-html="'SitesManager_EnableSiteSpecificUserAgentExclude_Help'|translate:'<a href=\'#excludedUserAgentsGlobal\'>':'</a>'"></div>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_KeepURLFragments'|translate }}</strong>
-
-                <p ng-bind-html="'SitesManager_KeepURLFragmentsHelp'|translate:'<em>#</em>':'<em>example.org/index.html#first_section</em>':'<em>example.org/index.html</em>'"></p>
-
-                <input type="checkbox" id="keepURLFragmentsGlobal" ng-model="globalSettings.keepURLFragmentsGlobal">
-
-                <label for="keepURLFragmentsGlobal">{{ 'SitesManager_KeepURLFragmentsLong'|translate }}</label>
-
-                <p>{{ 'SitesManager_KeepURLFragmentsHelp2'|translate }}</p>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-
-                <strong>{{ 'SitesManager_TrackingSiteSearch'|translate }}</strong>
-
-                <p>{{ 'SitesManager_SiteSearchUse' | translate }}</p>
-
-                <span class="form-description" style="font-size:8pt;">
-                    {{ 'SitesManager_SearchParametersNote'|translate }} {{ 'SitesManager_SearchParametersNote2'|translate }}
-                </span>
-
-                <br/>
-                <br/>
-            </td>
-        </tr>
-
-        <tr>
-            <td>
-                <label>{{ 'SitesManager_SearchKeywordLabel' | translate }} &nbsp;
-                    <input ng-list size="15" ng-model="globalSettings.searchKeywordParametersGlobal">
-                </label>
-            </td>
-            <td>
-                <div class="ui-inline-help" style='width: 200px;'>
-                    {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
-                </div>
-
-                <br/>
-                <br/>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <span ng-hide="customVariablesActivated" class='form-description'>Note: you could also track your Internal Search Engine Categories, but the plugin Custom Variables is required. Please enable the plugin CustomVariables (or ask your Piwik admin).</span>
-                <span ng-show="customVariablesActivated"> {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryDesc'|translate }} <br/> </span>
-
-                <br/>
-            </td>
-        </tr>
-
-        <tr ng-show="customVariablesActivated">
-            <td>
-                <label>{{ 'SitesManager_SearchCategoryLabel' | translate }}  &nbsp;
-                    <input ng-list size="15" ng-model="globalSettings.searchCategoryParametersGlobal">
-                </label>
-            </td>
-            <td>
-                <div class="ui-inline-help" style='width: 200px;'>
-                    {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryParametersDesc'|translate }}
-                </div>
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_DefaultTimezoneForNewWebsites'|translate }}</strong>
-
-                <p>{{ 'SitesManager_SelectDefaultTimezone'|translate }} </p>
-            </td>
-        </tr>
-
-        <tr>
-            <td>
-                <select
-                        ng-model="globalSettings.defaultTimezone"
-                        ng-options="t.code as t.label group by t.group for t in timezones">
-                </select>
-            </td>
-            <td ng-include="'plugins/SitesManager/templates/help/timezone-help.html'">
-            </td>
-        </tr>
-
-        <tr>
-            <td colspan="2">
-                <strong>{{ 'SitesManager_DefaultCurrencyForNewWebsites'|translate }}</strong>
-
-                <p>{{ 'SitesManager_SelectDefaultCurrency'|translate }}</p>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <select
-                    ng-model="globalSettings.defaultCurrency"
-                    ng-options="k as v for (k, v) in currencies">
-                </select>
-            </td>
-            <td>
-                <div class="ui-inline-help">{{ 'SitesManager_CurrencySymbolWillBeUsedForGoals' | translate }}</div>
-            </td>
-        </tr>
-    </table>
-
-    <span>
-        <input type="submit" class="submit" ng-click="saveGlobalSettings()" value="{{ 'General_Save'|translate }}"/>
-    </span>
+    <h3>{{ 'SitesManager_GlobalListExcludedIps'|translate }}</h3>
+    <p>{{ 'SitesManager_ListOfIpsToBeExcludedOnAllWebsites'|translate }}</p>
+    <div class="form-group">
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'"></div>
+        <div sites-manager-multiline-field field="globalSettings.excludedIpsGlobal" cols="30" rows="3" id="excludedIpsGlobal"></div>
+    </div>
+
+    <h3>{{ 'SitesManager_GlobalListExcludedQueryParameters'|translate }}</h3>
+    <p>{{ 'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate }}</p>
+    <div class="form-group">
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'"></div>
+        <div sites-manager-multiline-field field="globalSettings.excludedQueryParametersGlobal" cols="30" rows="3" id="excludedQueryParametersGlobal"></div>
+    </div>
+
+    <h3>{{ 'SitesManager_GlobalListExcludedUserAgents'|translate }}</h3>
+    <p>{{ 'SitesManager_GlobalListExcludedUserAgents_Desc'|translate }}</p>
+    <div class="form-group">
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'"></div>
+        <div sites-manager-multiline-field field="globalSettings.excludedUserAgentsGlobal" cols="30" rows="3" id="excludedUserAgentsGlobal"></div>
+    </div>
+    <div class="form-group">
+        <div class="form-help" ng-bind-html="'SitesManager_EnableSiteSpecificUserAgentExclude_Help'|translate:'<a href=\'#excludedUserAgentsGlobal\'>':'</a>'"></div>
+        <label class="checkbox">
+            <input type="checkbox" id="siteSpecificUserAgentExcludeEnabled" ng-model="globalSettings.siteSpecificUserAgentExcludeEnabled">
+            {{ 'SitesManager_EnableSiteSpecificUserAgentExclude'|translate }}
+        </label>
+    </div>
+
+    <h3>{{ 'SitesManager_KeepURLFragments'|translate }}</h3>
+    <p ng-bind-html="'SitesManager_KeepURLFragmentsHelp'|translate:'<em>#</em>':'<em>example.org/index.html#first_section</em>':'<em>example.org/index.html</em>'"></p>
+    <div class="form-group">
+        <p class="form-help">{{ 'SitesManager_KeepURLFragmentsHelp2'|translate }}</p>
+        <label class="checkbox">
+            <input type="checkbox" id="keepURLFragmentsGlobal" ng-model="globalSettings.keepURLFragmentsGlobal">
+            {{ 'SitesManager_KeepURLFragmentsLong'|translate }}
+        </label>
+    </div>
+
+    <h3>{{ 'SitesManager_TrackingSiteSearch'|translate }}</h3>
+    <p>{{ 'SitesManager_SiteSearchUse' | translate }}</p>
+    <div class="alert alert-info">
+        {{ 'SitesManager_SearchParametersNote'|translate }} {{ 'SitesManager_SearchParametersNote2'|translate }}
+    </div>
+    <div class="form-group">
+        <label>{{ 'SitesManager_SearchKeywordLabel' | translate }}</label>
+        <div class="form-help">
+            {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
+        </div>
+        <input ng-list size="15" ng-model="globalSettings.searchKeywordParametersGlobal">
+    </div>
+    <div ng-hide="customVariablesActivated" class="alert alert-info">
+        Note: you could also track your Internal Search Engine Categories, but the plugin Custom Variables is required. Please enable the plugin CustomVariables (or ask your Piwik admin).
+    </div>
+    <p ng-show="customVariablesActivated">
+        {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryDesc'|translate }}
+    </p>
+    <div class="form-group" ng-show="customVariablesActivated">
+        <label>{{ 'SitesManager_SearchCategoryLabel' | translate }}</label>
+        <div class="form-help">
+            {{ 'Goals_Optional'|translate }} {{ 'SitesManager_SearchCategoryParametersDesc'|translate }}
+        </div>
+        <input ng-list size="15" ng-model="globalSettings.searchCategoryParametersGlobal">
+    </div>
+
+    <h3>{{ 'SitesManager_DefaultTimezoneForNewWebsites'|translate }}</h3>
+    <p>{{ 'SitesManager_SelectDefaultTimezone'|translate }}</p>
+    <div class="form-group">
+        <div ng-include="'plugins/SitesManager/templates/help/timezone-help.html'"></div>
+        <select ng-model="globalSettings.defaultTimezone" ng-options="t.code as t.label group by t.group for t in timezones"></select>
+    </div>
+
+    <h3>{{ 'SitesManager_DefaultCurrencyForNewWebsites'|translate }}</h3>
+    <p>{{ 'SitesManager_SelectDefaultCurrency'|translate }}</p>
+    <div class="form-group">
+        <div class="form-help">{{ 'SitesManager_CurrencySymbolWillBeUsedForGoals' | translate }}</div>
+        <select ng-model="globalSettings.defaultCurrency" ng-options="k as v for (k, v) in currencies"></select>
+    </div>
+
+    <input type="submit" class="submit" ng-click="saveGlobalSettings()" value="{{ 'General_Save'|translate }}"/>
 
 </div>
diff --git a/plugins/SitesManager/templates/help/excluded-ip-help.html b/plugins/SitesManager/templates/help/excluded-ip-help.html
index d652d1d4d1..b12f9439d8 100644
--- a/plugins/SitesManager/templates/help/excluded-ip-help.html
+++ b/plugins/SitesManager/templates/help/excluded-ip-help.html
@@ -1,5 +1,4 @@
-<div class="ui-inline-help">
-
+<div class="form-help">
     {{ 'SitesManager_HelpExcludedIps' | translate : '1.2.3.*' : '1.2.*.*' }}
 
     <br/><br/>
diff --git a/plugins/SitesManager/templates/help/excluded-query-parameters-help.html b/plugins/SitesManager/templates/help/excluded-query-parameters-help.html
index 33b09e91c9..9ec52250bd 100644
--- a/plugins/SitesManager/templates/help/excluded-query-parameters-help.html
+++ b/plugins/SitesManager/templates/help/excluded-query-parameters-help.html
@@ -1,5 +1,4 @@
-<div class="ui-inline-help">
-
+<div class="form-help">
     {{ 'SitesManager_ListOfQueryParametersToExclude'|translate }}
 
     <br/><br/>
diff --git a/plugins/SitesManager/templates/help/excluded-user-agents-help.html b/plugins/SitesManager/templates/help/excluded-user-agents-help.html
index d85fd6a79c..080443f2cb 100644
--- a/plugins/SitesManager/templates/help/excluded-user-agents-help.html
+++ b/plugins/SitesManager/templates/help/excluded-user-agents-help.html
@@ -1,5 +1,4 @@
-<div class="ui-inline-help">
-
+<div class="form-help">
     {{ 'SitesManager_GlobalExcludedUserAgentHelp1'|translate }}
 
     <br/><br/>
diff --git a/plugins/SitesManager/templates/help/timezone-help.html b/plugins/SitesManager/templates/help/timezone-help.html
index 1787541516..a0fd96d099 100644
--- a/plugins/SitesManager/templates/help/timezone-help.html
+++ b/plugins/SitesManager/templates/help/timezone-help.html
@@ -1,21 +1,18 @@
-<div class="ui-inline-help">
-
+<div class="form-help">
     <span ng-switch="timezoneSupportEnabled">
-
         <span ng-switch-default>
             {{ 'SitesManager_AdvancedTimezoneSupportNotFound'|translate }}
         </span>
-
         <span ng-switch-when="true">
             {{ 'SitesManager_ChooseCityInSameTimezoneAsYou'|translate }}
         </span>
     </span>
 
-    <br/><br/>
+    <br/>
 
     {{ 'SitesManager_UTCTimeIs'| translate : (utcTime | date : 'yyyy-MM-dd HH:mm:ss') }}
 
-    <br/><br/>
+    <br/>
 
     {{ 'SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward'|translate }}
 </div>
diff --git a/plugins/SitesManager/templates/sites-list/add-site-link.html b/plugins/SitesManager/templates/sites-list/add-site-link.html
index d7eb6a53de..284e5bf7bf 100644
--- a/plugins/SitesManager/templates/sites-list/add-site-link.html
+++ b/plugins/SitesManager/templates/sites-list/add-site-link.html
@@ -1,13 +1,18 @@
-<div ng-show="!siteIsBeingEdited" class="sitesButtonBar">
-    <div class="addSite">
-        <a ng-show="hasSuperUserAccess" class="addRowSite" ng-click="addSite()" tabindex="1">
-            {{ 'SitesManager_AddSite'|translate }}
-        </a>
+<div ng-show="!siteIsBeingEdited" class="sitesButtonBar clearfix">
+
+    <a ng-show="hasSuperUserAccess" class="btn addSite" ng-click="addSite()" tabindex="1">
+        {{ 'SitesManager_AddSite'|translate }}
+    </a>
+
+    <div class="search" ng-show="adminSites.hasPrev || adminSites.hasNext || adminSites.searchTerm">
+        <input ng-model="adminSites.search" piwik-onenter="adminSites.searchSite(adminSites.search)"
+               placeholder="{{ 'Actions_SubmenuSitesearch' | translate }}" type="text">
+        <img ng-click="adminSites.searchSite(adminSites.search)" title="{{ 'General_ClickToSearch' | translate }}"
+             class="search_ico" src="plugins/Morpheus/images/search_ico.png"/>
     </div>
-    <div class="paging">
-        <a class="btn prev"
-           ng-class="{'visible': adminSites.hasPrev, 'hide_only': !adminSites.hasPrev}"
-           ng-click="adminSites.previousPage()">
+
+    <div class="paging" ng-show="adminSites.hasPrev || adminSites.hasNext">
+        <a class="btn prev" ng-disabled="!adminSites.hasPrev" ng-click="adminSites.previousPage()">
             <span style="cursor:pointer;">&#171; {{ 'General_Previous'|translate }}</span>
         </a>
         <span class="counter" ng-show="adminSites.hasPrev || adminSites.hasNext">
@@ -18,17 +23,9 @@
                 {{ 'General_Pagination'|translate:adminSites.offsetStart:adminSites.offsetEnd:totalNumberOfSites }}
             </span>
         </span>
-        <a class="btn next"
-           ng-class="{'visible': adminSites.hasNext, 'hide_only': !adminSites.hasNext}"
-           ng-click="adminSites.nextPage()">
+        <a class="btn next" ng-disabled="!adminSites.hasNext" ng-click="adminSites.nextPage()">
             <span style="cursor:pointer;" class="pointer">{{ 'General_Next'|translate }} &#187;</span>
         </a>
     </div>
-    <div class="search" ng-show="adminSites.hasPrev || adminSites.hasNext || adminSites.searchTerm">
-        <input ng-model="adminSites.search" piwik-onenter="adminSites.searchSite(adminSites.search)"
-               placeholder="{{ 'Actions_SubmenuSitesearch' | translate }}" type="text">
-        <img ng-click="adminSites.searchSite(adminSites.search)" title="{{ 'General_ClickToSearch' | translate }}"
-             class="search_ico"
-             src="plugins/Morpheus/images/search_ico.png"/>
-    </div>
+
 </div>
diff --git a/plugins/SitesManager/templates/sites-list/alias-urls-field.html b/plugins/SitesManager/templates/sites-list/alias-urls-field.html
deleted file mode 100644
index 456f64c446..0000000000
--- a/plugins/SitesManager/templates/sites-list/alias-urls-field.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<span ng-switch-default>
-    <div ng-repeat="url in site.alias_urls">
-        {{ url | prettyUrl }}
-    </div>
-</span>
-
-<span ng-switch-when="true">
-
-    <div sites-manager-multiline-field field="site.alias_urls" cols="25" rows="3"></div>
-
-    <div class="ui-inline-help">
-        {{ 'SitesManager_AliasUrlHelp' | translate }}
-    </div>
-
-    <h4 style="display:inline-block;">
-        {{ 'SitesManager_KeepURLFragmentsLong'|translate }}
-    </h4>
-
-    <select ng-options="key as value for (key, value) in keepURLFragmentsOptions"
-            ng-model="site.keep_url_fragment"
-            >
-    </select>
-</span>
diff --git a/plugins/SitesManager/templates/sites-list/site-fields.html b/plugins/SitesManager/templates/sites-list/site-fields.html
index a62326f896..fb3adb2e60 100644
--- a/plugins/SitesManager/templates/sites-list/site-fields.html
+++ b/plugins/SitesManager/templates/sites-list/site-fields.html
@@ -1,180 +1,122 @@
-<td sites-manager-edit-trigger>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
     {{ site.idsite }}
 </td>
-
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
-
-    <span ng-switch-default>
-        {{ site.name }}
-    </span>
-
-    <span ng-switch-when="true">
-
-        <input type="text" ng-model="site.name"/>
-
-        <br/>
-        <br/>
-
-        <input type="submit" class="submit" value="{{ 'General_Save' | translate }}" ng-click="saveSite()"/>
-
-        <br/>
-        <br/>
-
-        <span class="link_but" ng-click="cancelEditSite($event)">
-            <span>{{ 'General_OrCancel' | translate:'':'' }}</span>
-        </span>
-    </span>
-
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    {{ site.name }}
 </td>
-
-<td
-    sites-manager-edit-trigger
-    ng-include="'plugins/SitesManager/templates/sites-list/alias-urls-field.html'"
-    ng-switch="site.editMode">
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    <span ng-repeat="url in site.alias_urls">{{ url | prettyUrl }}</span>
 </td>
-
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
-
-    <span ng-switch-default>
-        <div ng-repeat="ip in site.excluded_ips">
-            {{ ip }}
-        </div>
-    </span>
-
-    <span ng-switch-when="true">
-
-        <div sites-manager-multiline-field field="site.excluded_ips" cols="20" rows="4"></div>
-
-        <div ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'"></div>
-    </span>
-
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    <span ng-repeat="ip in site.excluded_ips">{{ ip }}</span>
 </td>
-
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
-
-    <span ng-switch-default>
-        <div ng-repeat="parameter in site.excluded_parameters">
-            {{ parameter }}
-        </div>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    <span ng-repeat="parameter in site.excluded_parameters">{{ parameter }}</span>
+</td>
+<td ng-if="!site.editMode" ng-show="globalSettings.siteSpecificUserAgentExcludeEnabled" sites-manager-edit-trigger>
+    <span ng-repeat="userAgent in site.excluded_user_agents">{{ userAgent }}</span>
+</td>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    <span ng-switch="site.sitesearch">
+        <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
+        <span ng-switch-default>-</span>
     </span>
-
-    <span ng-switch-when="true">
-
-        <div sites-manager-multiline-field field="site.excluded_parameters" cols="20" rows="4"></div>
-
-        <div ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'"></div>
+</td>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    {{ site.timezone }}
+</td>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    {{ site.currency }}
+</td>
+<td ng-if="!site.editMode" sites-manager-edit-trigger>
+    <span ng-switch="site.ecommerce">
+        <span ng-switch-default>-</span>
+        <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
     </span>
-
 </td>
-
-<td ng-show="globalSettings.siteSpecificUserAgentExcludeEnabled" ng-switch="site.editMode" sites-manager-edit-trigger>
-
-    <span ng-switch-default>
-        <div ng-repeat="userAgent in site.excluded_user_agents">
-            {{ userAgent }}
-        </div>
+<td ng-if="!site.editMode">
+    <span class="link_but" ng-click="editSite()">
+        <img src='plugins/Morpheus/images/ico_edit.png' title="{{ 'General_Edit'|translate }}"/>
     </span>
-
-    <span ng-switch-when="true">
-
-        <div sites-manager-multiline-field field="site.excluded_user_agents" cols="20" rows="4"></div>
-
-        <div ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'"></div>
+    <span ng-show="site.idsite" class="link_but" ng-click="openDeleteDialog()">
+        <img src='plugins/Morpheus/images/ico_delete.png' title="{{ 'General_Delete'|translate }}"/>
     </span>
-
 </td>
-
-<td
-    sites-manager-edit-trigger
-    ng-include="'plugins/SitesManager/templates/sites-list/site-search-field.html'"
-    ng-switch="site.editMode">
+<td ng-if="!site.editMode">
+    <a ng-show="site.idsite" href="?module=CoreAdminHome&action=trackingCodeGenerator&idSite={{ site.idsite }}&period={{ period }}&date={{ date }}&updated=false">
+        {{ 'SitesManager_SetUp'|translate }}
+    </a>
 </td>
 
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
 
-    <span ng-switch-default>
-        {{ site.timezone }}
-    </span>
+<td ng-if="site.editMode" class="editingSite" colspan="100">
 
-    <span ng-switch-when="true">
-        <select
-                ng-model="site.timezone"
-                ng-options="t.code as t.label group by t.group for t in timezones">
-        </select>
+    <div class="form-group">
+        <label>{{ 'General_Name'|translate }}</label>
+        <input type="text" ng-model="site.name"/>
+    </div>
 
-        <div ng-include="'plugins/SitesManager/templates/help/timezone-help.html'"></div>
+    <div class="form-group">
+        <label>{{ 'SitesManager_Urls'|translate }}</label>
+        <div class="form-help">
+            {{ 'SitesManager_AliasUrlHelp' | translate }}
+        </div>
+        <div sites-manager-multiline-field field="site.alias_urls" cols="25" rows="3"></div>
+    </div>
 
-    </span>
-</td>
+    <div class="form-group">
+        <label>{{ 'SitesManager_KeepURLFragmentsLong'|translate }}</label>
+        <select ng-options="key as value for (key, value) in keepURLFragmentsOptions"
+                ng-model="site.keep_url_fragment"></select>
+    </div>
 
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
+    <div class="form-group">
+        <label>{{ 'SitesManager_ExcludedIps'|translate }}</label>
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-ip-help.html'"></div>
+        <div sites-manager-multiline-field field="site.excluded_ips" cols="20" rows="4"></div>
+    </div>
 
-    <span ng-switch-default>
-        {{ site.currency }}
-    </span>
+    <div class="form-group">
+        <label>{{ 'SitesManager_ExcludedParameters'|translate }}</label>
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-query-parameters-help.html'"></div>
+        <div sites-manager-multiline-field field="site.excluded_parameters" cols="20" rows="4"></div>
+    </div>
 
-    <span ng-switch-when="true">
+    <div class="form-group" ng-if="globalSettings.siteSpecificUserAgentExcludeEnabled">
+        <label>{{ 'SitesManager_ExcludedUserAgents'|translate }}</label>
+        <div ng-include="'plugins/SitesManager/templates/help/excluded-user-agents-help.html'"></div>
+        <div sites-manager-multiline-field field="site.excluded_user_agents" cols="20" rows="4"></div>
+    </div>
 
-        <select
-                ng-model="site.currency"
-                ng-options="k as v for (k, v) in currencies">
-        </select>
+    <div ng-include="'plugins/SitesManager/templates/sites-list/site-search-field.html'"></div>
+
+    <div class="form-group">
+        <label>{{ 'SitesManager_Timezone'|translate }}</label>
+        <div ng-include="'plugins/SitesManager/templates/help/timezone-help.html'"></div>
+        <select ng-model="site.timezone" ng-options="t.code as t.label group by t.group for t in timezones"></select>
+    </div>
 
-        <div class="ui-inline-help">
+    <div class="form-group">
+        <label>{{ 'SitesManager_Currency'|translate }}</label>
+        <div class="form-help">
             {{ 'SitesManager_CurrencySymbolWillBeUsedForGoals' | translate }}
         </div>
+        <select ng-model="site.currency" ng-options="k as v for (k, v) in currencies"></select>
+    </div>
 
-    </span>
-</td>
-
-<td ng-switch="site.editMode" sites-manager-edit-trigger>
-
-    <span ng-switch-default ng-switch="site.ecommerce">
-
-        <span ng-switch-default>-</span>
-        <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
-    </span>
-
-    <span ng-switch-when="true">
-
-        <select ng-options="option.key as option.value for option in eCommerceptions" ng-model="site.ecommerce">
-        </select>
-
-        <div class="ui-inline-help">
+    <div class="form-group">
+        <label>{{ 'Goals_Ecommerce'|translate }}</label>
+        <div class="form-help">
             {{ 'SitesManager_EcommerceHelp' | translate }}
             <br/>
             <span ng-bind-html="'SitesManager_PiwikOffersEcommerceAnalytics'|translate:'<a href=\'http://piwik.org/docs/ecommerce-analytics/\' target=\'_blank\'>':'</a>'"></span>
         </div>
-    </span>
-</td>
-
-<td>
-    <span ng-if="!site.editMode" class="link_but" ng-click="editSite()">
-        <img src='plugins/Morpheus/images/ico_edit.png'
-             title="{{ 'General_Edit'|translate }}"
-             border="0"
-                />
-        <span>{{ 'General_Edit'|translate }}</span>
-    </span>
-
-    <span ng-if="site.editMode">
-
-        <input type="submit" class="submit" value="{{ 'General_Save' | translate }}" ng-click="saveSite()"/>
-    </span>
+        <select ng-options="option.key as option.value for option in eCommerceptions" ng-model="site.ecommerce"></select>
+    </div>
 
-    <br/>
+    <div class="editingSiteFooter">
+        <input type="submit" class="btn" value="{{ 'General_Save' | translate }}" ng-click="saveSite()"/>
+        <button class="btn btn-link" ng-click="cancelEditSite($event)">{{ 'General_Cancel' | translate:'':'' }}</button>
+    </div>
 
-    <span ng-show="site.idsite && !site.editMode" class="link_but" ng-click="openDeleteDialog()">
-        <img
-                src='plugins/Morpheus/images/ico_delete.png'
-                title="{{ 'General_Delete'|translate }}"
-                border="0"/>
-        <span>{{ 'General_Delete'|translate }}</span>
-    </span>
-</td>
-
-<td>
-    <a ng-show="site.idsite" href="?module=CoreAdminHome&action=trackingCodeGenerator&idSite={{ site.idsite }}&period={{ period }}&date={{ date }}&updated=false">
-        {{ 'SitesManager_ShowTrackingTag'|translate }}
-    </a>
 </td>
diff --git a/plugins/SitesManager/templates/sites-list/site-search-field.html b/plugins/SitesManager/templates/sites-list/site-search-field.html
index c6754804e2..9aafda6dc7 100644
--- a/plugins/SitesManager/templates/sites-list/site-search-field.html
+++ b/plugins/SitesManager/templates/sites-list/site-search-field.html
@@ -1,73 +1,64 @@
-<span ng-switch-default ng-switch="site.sitesearch">
-    <span ng-switch-when="1">{{ 'General_Yes'|translate }}</span>
-    <span ng-switch-default>-</span>
-</span>
-
-<span ng-switch-when="true">
-
-    <select ng-options="option.key as option.value for option in siteSearchOptions" ng-model="site.sitesearch">
-    </select>
+<div class="form-group">
+    <label>{{ 'Actions_SubmenuSitesearch'|translate }}</label>
+    <div class="form-help">
+        {{ 'SitesManager_SiteSearchUse'|translate }}
+    </div>
+    <select ng-options="option.key as option.value for option in siteSearchOptions" ng-model="site.sitesearch"></select>
+</div>
 
-    <div ng-show="site.sitesearch" style="font-size: 11px;">
+<div ng-if="site.sitesearch">
 
-        <div ng-show="globalSettings.searchKeywordParametersGlobal.length">
+    <div ng-show="globalSettings.searchKeywordParametersGlobal.length" class="form-group">
 
+        <label class="checkbox">
             <input type="checkbox" ng-model="site.useDefaultSiteSearchParams">
 
-            <span
-                    ng-show="hasSuperUserAccess"
-                    ng-bind-html="'SitesManager_SearchUseDefault'|translate:'<a href=\'#globalSettings\'>':'</a>'">
+            <span ng-show="hasSuperUserAccess"
+                  ng-bind-html="'SitesManager_SearchUseDefault'|translate:'<a href=\'#globalSettings\'>':'</a>'">
             </span>
             <span ng-hide="hasSuperUserAccess">
                 {{ 'SitesManager_SearchUseDefault' | translate:'':'' }}
             </span>
+        </label>
 
-            <span ng-show="site.useDefaultSiteSearchParams" class="form-description">
+        <span ng-show="site.useDefaultSiteSearchParams" class="form-description">
 
-                {{ 'SitesManager_SearchKeywordLabel' | translate }}
-                ({{ 'General_Default' | translate }}) :
+            {{ 'SitesManager_SearchKeywordLabel' | translate }}
+            ({{ 'General_Default' | translate }}) :
 
-                <span ng-repeat="param in globalSettings.searchKeywordParametersGlobal">
-                    {{ param }}<span ng-show="!$last">, </span>
-                </span>
+            <span ng-repeat="param in globalSettings.searchKeywordParametersGlobal">
+                {{ param }}<span ng-show="!$last">, </span>
+            </span>
 
-                <span ng-show="globalSettings.searchCategoryParametersGlobal.length">
-                    & {{ 'SitesManager_SearchCategoryLabel' | translate }} :
-                    <span ng-repeat="param in globalSettings.searchCategoryParametersGlobal">
-                        {{ param }}<span ng-show="!$last">, </span>
-                    </span>
+            <span ng-show="globalSettings.searchCategoryParametersGlobal.length">
+                & {{ 'SitesManager_SearchCategoryLabel' | translate }} :
+                <span ng-repeat="param in globalSettings.searchCategoryParametersGlobal">
+                    {{ param }}<span ng-show="!$last">, </span>
                 </span>
-
             </span>
 
-        </div>
-
-        <div ng-hide="site.useDefaultSiteSearchParams">
-
-            <br/>
+        </span>
 
-            <label>
-                {{ 'SitesManager_SearchKeywordLabel' | translate }}
-                <input ng-list ng-model="site.sitesearch_keyword_parameters">
-                <div class="ui-inline-help">
-                    {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
-                </div>
-            </label>
+    </div>
 
-            <label ng-show="customVariablesActivated">
-                {{ 'SitesManager_SearchCategoryLabel' | translate }}
-                <input ng-list ng-model="site.sitesearch_category_parameters">
-                <div class="ui-inline-help">
-                    {{ 'Goals_Optional' | translate }} {{ 'SitesManager_SearchCategoryParametersDesc' | translate }}
-                </div>
-            </label>
+    <div ng-hide="site.useDefaultSiteSearchParams">
 
+        <div class="form-group">
+            <label>{{ 'SitesManager_SearchKeywordLabel' | translate }}</label>
+            <div class="form-help">
+                {{ 'SitesManager_SearchKeywordParametersDesc' | translate }}
+            </div>
+            <input ng-list ng-model="site.sitesearch_keyword_parameters">
         </div>
 
-    </div>
+        <div ng-show="customVariablesActivated" class="form-group">
+            <label>{{ 'SitesManager_SearchCategoryLabel' | translate }}</label>
+            <div class="form-help">
+                {{ 'Goals_Optional' | translate }} {{ 'SitesManager_SearchCategoryParametersDesc' | translate }}
+            </div>
+            <input ng-list ng-model="site.sitesearch_category_parameters">
+        </div>
 
-    <div class="ui-inline-help" ng-show="site.sitesearch == 0 || site.useDefaultSiteSearchParams">
-        {{ 'SitesManager_SiteSearchUse' | translate }}
     </div>
 
-</span>
+</div>
diff --git a/plugins/SitesManager/templates/sites-list/sites-list.html b/plugins/SitesManager/templates/sites-list/sites-list.html
index 833cd53bbd..e408f2a495 100644
--- a/plugins/SitesManager/templates/sites-list/sites-list.html
+++ b/plugins/SitesManager/templates/sites-list/sites-list.html
@@ -1,12 +1,12 @@
-<div class="entityContainer sitesManagerList">
+<div class="sitesManagerList">
 
     <div ng-repeat="site in adminSites.sites" ng-include="'plugins/SitesManager/templates/dialogs/dialogs.html?cb=' + cacheBuster"></div>
 
-    <table class="entityTable dataTable" ng-class="{'isLoading': adminSites.isLoading==true}">
+    <table ng-class="{'isLoading': adminSites.isLoading==true}">
         <thead>
         <tr>
             <th>{{ 'General_Id'|translate }}</th>
-            <th class="wideColumn">{{ 'General_Name'|translate }}</th>
+            <th>{{ 'General_Name'|translate }}</th>
             <th>{{ 'SitesManager_Urls'|translate }}</th>
             <th>{{ 'SitesManager_ExcludedIps'|translate }}</th>
             <th>{{ 'SitesManager_ExcludedParameters'|translate }}</th>
-- 
GitLab