From: Olivier Lamy Date: Fri, 16 Dec 2011 20:29:57 +0000 (+0000) Subject: use a tabs model for the users view X-Git-Tag: archiva-1.4-M3~1715 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f614d396cbe728b500486c76ffab3bd51b97bef3;p=archiva.git use a tabs model for the users view git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1215262 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html index b8ddd0d1d..dc3054724 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/index.html @@ -54,6 +54,7 @@ .script("jquery.json-2.3.min.js").wait() .script("redback/operation.js").wait() .script("redback/redback-tmpl.js").wait() + .script("bootstrap-tabs.js") .script("bootstrap-modal.js").wait() .script("bootstrap-alerts.js").wait() .script("bootstrap-dropdown.js").wait() diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js new file mode 100644 index 000000000..a3c7ee144 --- /dev/null +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/bootstrap-tabs.js @@ -0,0 +1,80 @@ +/* ======================================================== + * bootstrap-tabs.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function( $ ){ + + "use strict" + + function activate ( element, container ) { + container + .find('> .active') + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if ( element.parent('.dropdown-menu') ) { + element.closest('li.dropdown').addClass('active') + } + } + + function tab( e ) { + var $this = $(this) + , $ul = $this.closest('ul:not(.dropdown-menu)') + , href = $this.attr('href') + , previous + , $href + + if ( /^#\w+/.test(href) ) { + e.preventDefault() + + if ( $this.parent('li').hasClass('active') ) { + return + } + + previous = $ul.find('.active a').last()[0] + $href = $(href) + + activate($this.parent('li'), $ul) + activate($href, $href.parent()) + + $this.trigger({ + type: 'change' + , relatedTarget: previous + }) + } + } + + + /* TABS/PILLS PLUGIN DEFINITION + * ============================ */ + + $.fn.tabs = $.fn.pills = function ( selector ) { + return this.each(function () { + $(this).delegate(selector || '.tabs li > a, .pills > li > a', 'click', tab) + }) + } + + $(document).ready(function () { + $('body').tabs('ul[data-tabs] li > a, ul[data-pills] > li > a') + }) + +}( window.jQuery || window.ender ); diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-grids.html b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-grids.html index ca6d41cf2..d1d788b9b 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-grids.html +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/templates/user-grids.html @@ -89,17 +89,22 @@ diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js index 7a8781fdf..cb20105bc 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/users.js @@ -25,6 +25,7 @@ $(function() { this.loadUsers = function() { $.ajax("restServices/redbackServices/userService/getUsers", { type: "GET", + async: false, dataType: 'json', success: function(data) { var mappedUsers = $.map(data.user, function(item) { @@ -152,8 +153,19 @@ $(function() { window.redbackModel.usersViewModel = new usersViewModel(); window.redbackModel.usersViewModel.loadUsers(); ko.applyBindings(window.redbackModel.usersViewModel,jQuery("#main-content").get(0)); + $("#users-view-tabs").tabs(); + $("#users-view-tabs").bind('change', function (e) { + //$.log( $(e.target).attr("href") ); // activated tab + //e.relatedTarget // previous tab + if ($(e.target).attr("href")=="#createUserForm") { + window.redbackModel.usersViewModel.addUser(); + } + }) + $("#users-view-tabs-content #users-view").addClass("active"); } + + userViewModel=function(user) { this.user=user; }