menus.js
119 lines
| 4.0 KiB
| application/javascript
|
JavascriptLexer
r4306 | // # Copyright (C) 2010-2020 RhodeCode GmbH | |||
r1 | // # | |||
// # This program is free software: you can redistribute it and/or modify | ||||
// # it under the terms of the GNU Affero General Public License, version 3 | ||||
// # (only), as published by the Free Software Foundation. | ||||
// # | ||||
// # This program is distributed in the hope that it will be useful, | ||||
// # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
// # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
// # GNU General Public License for more details. | ||||
// # | ||||
// # You should have received a copy of the GNU Affero General Public License | ||||
// # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
// # | ||||
// # This program is dual-licensed. If you wish to learn more about the | ||||
// # RhodeCode Enterprise Edition, including its added features, Support services, | ||||
// # and proprietary license terms, please see https://rhodecode.com/licenses/ | ||||
/** | ||||
* QUICK REPO MENU, used on repositories to show shortcuts to files, history | ||||
* etc. | ||||
*/ | ||||
var quick_repo_menu = function() { | ||||
var hide_quick_repo_menus = function() { | ||||
$('.menu_items_container').hide(); | ||||
$('.active_quick_repo').removeClass('active_quick_repo'); | ||||
}; | ||||
$('.quick_repo_menu').hover(function() { | ||||
hide_quick_repo_menus(); | ||||
if (!$(this).hasClass('active_quick_repo')) { | ||||
$('.menu_items_container', this).removeClass("hidden").show(); | ||||
$(this).addClass('active_quick_repo'); | ||||
} | ||||
}, function() { | ||||
hide_quick_repo_menus(); | ||||
}); | ||||
r4485 | }; | |||
window.toggleElement = function (elem, target) { | ||||
var $elem = $(elem); | ||||
var $target = $(target); | ||||
r4543 | if (target !== undefined) { | |||
var show = $target.is(':visible') || $target.length === 0; | ||||
} else { | ||||
var show = $elem.hasClass('toggle-off') | ||||
} | ||||
if (show) { | ||||
r4485 | $target.hide(); | |||
$elem.html($elem.data('toggleOn')) | ||||
r4543 | $elem.addClass('toggle-on') | |||
$elem.removeClass('toggle-off') | ||||
r4485 | } else { | |||
$target.show(); | ||||
$elem.html($elem.data('toggleOff')) | ||||
r4543 | $elem.addClass('toggle-off') | |||
$elem.removeClass('toggle-on') | ||||
r4485 | } | |||
return false | ||||
} | ||||
var marginExpVal = '300' // needs a sync with `.right-sidebar.right-sidebar-expanded` value | ||||
var marginColVal = '40' // needs a sync with `.right-sidebar.right-sidebar-collapsed` value | ||||
var marginExpanded = {'margin': '0 {0}px 0 0'.format(marginExpVal)}; | ||||
var marginCollapsed = {'margin': '0 {0}px 0 0'.format(marginColVal)}; | ||||
var updateStickyHeader = function () { | ||||
if (window.updateSticky !== undefined) { | ||||
// potentially our comments change the active window size, so we | ||||
// notify sticky elements | ||||
updateSticky() | ||||
} | ||||
} | ||||
var expandSidebar = function () { | ||||
var $sideBar = $('.right-sidebar'); | ||||
$('.outerwrapper').css(marginExpanded); | ||||
$('.sidebar-toggle a').html('<i class="icon-right" style="margin-right: -10px"></i><i class="icon-right"></i>'); | ||||
$('.right-sidebar-collapsed-state').hide(); | ||||
$('.right-sidebar-expanded-state').show(); | ||||
$('.branding').addClass('display-none'); | ||||
$sideBar.addClass('right-sidebar-expanded') | ||||
$sideBar.removeClass('right-sidebar-collapsed') | ||||
} | ||||
var collapseSidebar = function () { | ||||
var $sideBar = $('.right-sidebar'); | ||||
$('.outerwrapper').css(marginCollapsed); | ||||
$('.sidebar-toggle a').html('<i class="icon-left" style="margin-right: -10px"></i><i class="icon-left"></i>'); | ||||
$('.right-sidebar-collapsed-state').show(); | ||||
$('.right-sidebar-expanded-state').hide(); | ||||
$('.branding').removeClass('display-none'); | ||||
$sideBar.removeClass('right-sidebar-expanded') | ||||
$sideBar.addClass('right-sidebar-collapsed') | ||||
} | ||||
window.toggleSidebar = function () { | ||||
var $sideBar = $('.right-sidebar'); | ||||
if ($sideBar.hasClass('right-sidebar-expanded')) { | ||||
// expanded -> collapsed transition | ||||
collapseSidebar(); | ||||
var sidebarState = 'collapsed'; | ||||
} else { | ||||
// collapsed -> expanded | ||||
expandSidebar(); | ||||
var sidebarState = 'expanded'; | ||||
} | ||||
// update our other sticky header in same context | ||||
updateStickyHeader(); | ||||
storeUserSessionAttr('rc_user_session_attr.sidebarState', sidebarState); | ||||
} | ||||