/* global require:false, Popover:false, acsLink:false */ define([ 'jquery' ], function($) { 'use strict'; var webs = window.webs = window.webs || {}; /** * Put extra navbar elements in a "More" dropdown, if necessary. */ webs.fixNavWrap = function(jQuery) { if(typeof(jQuery) === 'undefined') { jQuery = $; } $ = jQuery; if($('body').hasClass('webs-allow-nav-wrap')) { return false; } $('ul.webs-nav').each(function() { var nav = $(this), items = nav.children('li'); if(items.length <= 0 || (items.css('display') === 'block' && items.first().css('float') === 'none')) { return false; } var top = items.eq(0).position().top + Math.min(items.eq(0).height(), 10), maxWidth = nav.parent().width(), more, checkFunc, addMore = function() { var more = nav.children('.webs-nav-more'); if(more.length === 0) { var translatedMore = $('#translatedMore').html(); more = $('
  • ' + '' + translatedMore + '
  • '); nav.append(more); } return more.find('ul'); }, addToMore = function(item) { if(!item.hasClass('webs-home')) { // Never put "Home" in the more dropdown var lvl3item = item.find('ul ul'); // Themes can't support the extra level, so move lvl3 up into lvl2 if(lvl3item.length > 0) { lvl3item.children('li').prependTo(lvl3item.parents('ul')[0]); } item.prependTo(more); lvl3item.remove(); return true; } return false; }; if(nav.width() > maxWidth) { // Nav overflows more = addMore(); checkFunc = function() { return nav.width() > maxWidth; }; } else if(items.eq(items.length - 1).position().top > top) { // Nav wraps more = addMore(); var moreLi = more.parent(), // If the more is display: none, use it's sibling's position // It's very important that is(':visible') here returns false for visibility:hidden reference = moreLi.is(':visible') ? moreLi : moreLi.prev(); checkFunc = function() { if(reference.length > 0) { return reference.position().top > top; } else { return false; } }; } if(more && typeof(checkFunc) === 'function') { for(var i = items.length - 1; i > 0 && checkFunc(); i--) { addToMore(items.eq(i)); } } }); // May not 100% belong here, but... // Ancestor pages need child-active class $('ul.webs-nav .has-children .active').parents('.has-children').addClass('child-active'); }; /** * webs.siteLoginPopover from webs_common.js * Modified to require websover */ webs.siteLoginPopover = function(server, email, siteID) { return new Popover(server + '/s/login/siteLoginPopover?id=' + email + '&site=' + siteID, { width: 430, height: (typeof acsLink !== 'undefined' ? 300 : 175), heading: 'Manage Website' }).show(); }; $(function($) { // Open links in new window // in edit mode or where we want this function disabled, simply set the disableLink data key on the anchor $('body').delegate('.w-link-new-window, .fw_link_newWindow', 'click', function() { var $node = $(this); if(!$node.data('disableLink')) { var href = $(this).attr('href'); window.open(href, '_blank'); return false; } }); // toggle state of 'expired premium' header: toggleExpiredPremiumHeader(); // Sign-out tab for social sites createSignoutTab(); }); function toggleExpiredPremiumHeader() { var opened = $('.webs-expired-premium.header').hasClass('open'); $('body').on('click', '.webs-expired-premium.header .toggle', function(event) { event.preventDefault(); if(opened) { $(event.currentTarget).closest('.webs-expired-premium.header').addClass('closed').removeClass('open'); opened = false; return; } $(event.currentTarget).closest('.webs-expired-premium.header').addClass('open').removeClass('closed'); opened = true; }); } function createSignoutTab() { if(!webs.visitor) { return false; } $('
    ').attr('id', 'fw-member-presence') .append($('').addClass('fw-display-name').attr('href', webs.site.url + 'apps/profile') .html(webs.visitor.displayName)) .append($('').addClass('fw-signout').attr('href', webs.site.url + 'apps/auth/logout').html('Sign Out')) .appendTo('body'); } });