Author: olamy
Date: Tue Jul 10 10:39:29 2012
New Revision: 1359579

URL: http://svn.apache.org/viewvc?rev=1359579&view=rev
Log:
[MRM-1639] History navigation
Submitted by Eric Barboni.

Added:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/sammy.0.7.1.js
   (with props)
Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/startup.js
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/menu.html

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html?rev=1359579&r1=1359578&r2=1359579&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html
 Tue Jul 10 10:39:29 2012
@@ -32,6 +32,7 @@
 
 
   <script type="text/javascript" src="js/jquery-1.7.2.js"></script>
+  <script type="text/javascript" src="js/sammy.0.7.1.js"></script>
 
   <script type="text/javascript" src="js/require.2.0.2.js"></script>
 
@@ -102,6 +103,10 @@
                 require.config({
                     baseUrl: "js/",
                     urlArgs: ""+appendJsNoCacheUrl(),
+                    shim: {
+                            'sammy':['jquery'],
+                            'archiva.main':["jquery","sammy"]
+                          },
                     paths: {
                         "i18n":"jquery.i18n.properties-1.0.9",
                         "jquery": "jquery-1.7.2",
@@ -124,6 +129,7 @@
                         "jquery.fileupload.ui":"jquery.fileupload-ui-6.6.3",
                         "tmpl": "tmpl.min",
                         "prettify": "prettify",
+                        "sammy": "sammy.0.7.1",
                         "jqueryFileTree": "jqueryFileTree-1.0.1",
                         "redback": "redback/redback",
                         "redback.roles": "redback/roles",
@@ -145,7 +151,7 @@
 
 
 
-                require(['domReady!','jquery','i18n','startup'], function 
(domReady) {
+                require(['jquery','i18n','sammy','startup','domReady!'], 
function (domReady) {
                     loadi18n(function () {
                       $.ajax({
                           url: 
"restServices/archivaUiServices/runtimeInfoService/archivaRuntimeInfo/"+usedLang(),
@@ -155,7 +161,7 @@
                               window.archivaJavascriptLog=data.javascriptLog;
                               window.archivaRuntimeInfo=data;
 
-                              require(['domReady!','archiva.main'],function 
(domReady) {
+                              
require(['sammy','archiva.main','domReady!'],function (domReady) {
                                       $.log("startArchivaApplication");
                                       startArchivaApplication();
                                       $("#loadingDiv").hide();

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js?rev=1359579&r1=1359578&r2=1359579&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/main.js
 Tue Jul 10 10:39:29 2012
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-define("archiva.main",["jquery","jquery.ui","jquery.cookie","bootstrap","archiva.search",
+define("archiva.main",["jquery","sammy","jquery.ui","jquery.cookie","bootstrap","archiva.search",
          
"jquery.validate","jquery.json","knockout","redback.templates","archiva.templates",
           
"redback.roles","redback","archiva.general-admin","archiva.repositories",
           
"archiva.network-proxies","archiva.proxy-connectors","archiva.repository-groups","archiva.artifacts-management"],
@@ -256,58 +256,105 @@ function() {
     });
   }
 
-    //------------------------------------//
-    // Change UI with appearance settings //
-    //------------------------------------//
-    updateAppearanceToolBar=function() {
-        
$.ajax("restServices/archivaServices/archivaAdministrationService/getOrganisationInformation",
 {
-            type: "GET",
-            dataType: 'json',
-            success: function(data) {
-                if(data.url){
-                  var url = data.url.startsWith("http://";) || 
data.url.startsWith("https://";) ? data.url : "http://"+data.url;
-                  var link="<a href='"+url+"' class='brand'>";
-                  if (data.logoLocation) {
-                      link+="<img src='"+data.logoLocation+"' 
style='max-height: 30px'/>";
-                  } else if (data.name) {
-                      link+=data.name;
-                  } else {
-                      link+="Archiva";
-                  }
-                  link+="</a>";
-                  $("#organisation-logo").html(link);
+  //------------------------------------//
+  // Change UI with appearance settings //
+  //------------------------------------//
+  updateAppearanceToolBar=function() {
+      
$.ajax("restServices/archivaServices/archivaAdministrationService/getOrganisationInformation",
 {
+          type: "GET",
+          dataType: 'json',
+          success: function(data) {
+              if(data.url){
+                var url = data.url.startsWith("http://";) || 
data.url.startsWith("https://";) ? data.url : "http://"+data.url;
+                var link="<a href='"+url+"' class='brand'>";
+                if (data.logoLocation) {
+                    link+="<img src='"+data.logoLocation+"' style='max-height: 
30px'/>";
+                } else if (data.name) {
+                    link+=data.name;
+                } else {
+                    link+="Archiva";
                 }
-              if (!data.url && data.name){
-                $("#organisation-logo").html("<a href='/' 
class='brand'>"+data.name+"</a>");
+                link+="</a>";
+                $("#organisation-logo").html(link);
               }
-              if (!data.url && !data.name){
-                $("#organisation-logo").html("<a href='/' 
class='brand'>Archiva</a>");
-              }
-            },
-            error: function() {
-                $("#organisation-logo").html("<a href='/' 
class='brand'>Archiva</a>");
+            if (!data.url && data.name){
+              $("#organisation-logo").html("<a href='/' 
class='brand'>"+data.name+"</a>");
             }
-        });
-    }
+            if (!data.url && !data.name){
+              $("#organisation-logo").html("<a href='/' 
class='brand'>Archiva</a>");
+            }
+          },
+          error: function() {
+              $("#organisation-logo").html("<a href='/' 
class='brand'>Archiva</a>");
+          }
+      });
+  }
+
 
+  MainMenuViewModel=function() {
+      
+      var self = this;
+      this.artifactMenuItems = [
+              {  text : $.i18n.prop('menu.artifacts') , id: null},
+              {  text : $.i18n.prop('menu.artifacts.search') , id: 
"menu-find-search-a", href: "#Search" , func: function(){displaySearch(this)}},
+              {  text : $.i18n.prop('menu.artifacts.browse') , id: 
"menu-find-browse-a", href: "#Browse" , func: function(){displayBrowse(true)}},
+              {  text : $.i18n.prop('menu.artifacts.upload') , id: 
"menu-find-upload-a", href: "#Upload" , redback: "{permissions: 
['archiva-upload-repository']}", func: function(){displayUploadArtifact(true)}}
+      ];
+      this.administrationMenuItems = [
+              {  text : $.i18n.prop('menu.administration') , id: null},
+              {  text : $.i18n.prop('menu.repository.groups')        , id: 
"mmenu-repository-groups-list-a"     , href: "#RepositoryGroup"  , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayRepositoryGroups()}},
+              {  text : $.i18n.prop('menu.repositories')             , id: 
"menu-repositories-list-a"           , href: "#RepositoryList"   , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayRepositoriesGrid()}},
+              {  text : $.i18n.prop('menu.proxy-connectors')         , id: 
"menu-proxy-connectors-list-a"       , href: "#ProxyConnectors"  , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayProxyConnectors()}},
+              {  text : $.i18n.prop('menu.network-proxies')          , id: 
"menu-network-proxies-list-a"        , href: "#NetProxies"       , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayNetworkProxies()}},
+              {  text : $.i18n.prop('menu.legacy-artifact-support')  , id: 
"menu-legacy-support-list-a"         , href: "#Legacy"           , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayLegacyArtifactPathSupport()}},
+              {  text : $.i18n.prop('menu.repository-scanning')      , id: 
"menu-repository-scanning-list-a"    , href: "#ScanningList"     , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayRepositoryScanning()}},
+              {  text : $.i18n.prop('menu.network-configuration')    , id: 
"menu-network-configuration-list-a"  , href: "#Network"          , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayNetworkConfiguration()}},
+              {  text : $.i18n.prop('menu.system-status')            , id: 
"menu-system-status-list-a"          , href: "#Status"           , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displaySystemStatus()}},
+              {  text : $.i18n.prop('menu.appearance-configuration') , id: 
"menu-appearance-list-a"             , href: "#Appearance"       , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayAppearanceConfiguration()}},
+              {  text : $.i18n.prop('menu.ui-configuration')         , id: 
"menu-ui-configuration-list-a"       , href: "#UIConfig"         , redback: 
"{permissions: ['archiva-manage-configuration']}", func: 
function(){displayUiConfiguration()}}
+      ]
+      
+      this.usersMenuItems = [
+              {  text : $.i18n.prop('menu.users') , id: null},
+              {  text : $.i18n.prop('menu.users.manage')    , id: 
"menu-users-list-a", href: "#Users" , redback: "{permissions: 
['archiva-manage-users']}", func: function(){displayUsersGrid()}},
+              {  text : $.i18n.prop('menu.users.roles')     , id: 
"menu-roles-list-a", href: "#Roles" , redback: "{permissions: 
['archiva-manage-users']}", func: function(){displayRolesGrid()}}
+      ]
+      this.activeMenuId = ko.observable();
+          
+      Sammy(function () {
+                this.get('#:folder', function () {
+                    self.activeMenuId(this.params.folder);
+                    
ko.utils.arrayFirst(self.artifactMenuItems.concat(self.usersMenuItems, 
self.administrationMenuItems), function(p) {
+                        if ( p.href == "#"+self.activeMenuId()) {
+                           p.func();
+                      }
+                    });
+                    
+                  });
+                this.get('', function () { this.app.runRoute('get', '#Search') 
});
+          } ).run();
+
+  }
 
   startArchivaApplication=function(){
     $.log("startArchivaApplication");
     $('#topbar-menu-container').html($("#topbar_menu_tmpl" ).tmpl());
     $('#sidebar-content').html($("#main_menu_tmpl").tmpl());
 
+    ko.bindingHandlers.redbackP = {
+            init: function(element, valueAccessor) {
+                $(element).attr("redback-permissions",valueAccessor);
+                }
+    };
+    ko.applyBindings(new MainMenuViewModel());
+
     hideElementWithKarma();
     checkSecurityLinks();
     checkCreateAdminLink();
     
$('#footer-content').html($('#footer-tmpl').tmpl(window.archivaRuntimeInfo));
 
-    // create handlers on menu entries to add class active on click
-    var alinkNodes=$("#sidebar-content #main-menu").find("li a");
-    alinkNodes.on("click",function(){
-      alinkNodes.parent("li").removeClass("active");
-      $(this).parent("li").addClass("active");
-    })
-
+    
+    
     $( "#quick-search-autocomplete" ).autocomplete({
       minLength: 3,
       delay: 600,

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/startup.js
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/startup.js?rev=1359579&r1=1359578&r2=1359579&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/startup.js
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/startup.js
 Tue Jul 10 10:39:29 2012
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-define("startup",["jquery","utils"],
+define("startup",["jquery","sammy","utils"],
 function() {
 
   // define a container object with various datas


Reply via email to