define(function(require) { var _ = require('underscore'); var BaseView = require('common/BaseView'); return BaseView.extend({ /** * The element of this view. * * @type {string} CSS selector */ el: '.lang-switch', /** * global event listeners */ globalEvents: { 'wasabi-core--languages-sort': 'updateLanguageLinkPositions' }, updateLanguageLinkPositions: function(event, data) { var frontendLanguages = data.frontendLanguages; var $sortedLi = []; var $li = this.$('li'); _.each(frontendLanguages, function(el) { $sortedLi.push($li.filter('[data-language-id="' + el.id + '"]')); }); this.$el.html($sortedLi); } }); });
define(function(require) { var $ = require('jquery'); var BaseView = require('common/BaseView'); require('jquery.color'); return BaseView.extend({ el: '.wasabi-core--grouppermissions-index', /** * Registered events of this view. * * @type {Object} */ events: { 'click .single-submit': 'onSingleSubmit' }, onSingleSubmit: function(event) { event.preventDefault(); var $target = $(event.target); var $spinner = $('<div class="spinner"/>'); $target.hide().blur().parent().append($spinner); $.ajax({ type: 'post', url: this.$('.permissions-update-form').attr('action'), data: $target.parent().parent().find('input').serialize(), dataType: 'json', cache: false, success: function() { var tr = $target.parent().parent(); var bgColor = $target.parent().css('backgroundColor'); $spinner.remove(); $target.show(); tr.find('td:not(.controller)').stop().css({ backgroundColor: '#fff7d9' }).animate({ backgroundColor: bgColor }, 1000, function() { $(this).css({backgroundColor: ''}); }); } }); } }); });
define(function(require) { var _ = require('underscore'); var $ = require('jquery'); var BaseView = require('common/BaseView'); var Cookies = require('wasabi.cms.package/libs/js.cookie'); require('jquery.nSortable'); return BaseView.extend({ el: '#pages', /** * Registered events of this view. * * @type {Object} */ events: { 'nSortable-change': 'onSort', 'click .expander': 'toggleSubTree' }, pagesReorderUrl: false, initialize: function(options) { this.pagesReorderUrl = this.$el.attr('data-reorder-url'); this.$el.nSortable({ handle: 'a.move', tabWidth: 20, placeholder: 'sortable-placeholder', dataAttribute: 'data-cms-page-id', maxDepth: Infinity, serializeKey: '', serializeWrapKeys: false, serializeParentIdNullable: true, leftKey: 'lft', rightKey: 'rght', animateTarget: false }); }, onSort: function(event, nSortable) { this.blockThis({ backgroundColor: '#fff', deltaHeight: -1 }); $.ajax({ type: 'post', dataType: 'json', url: this.pagesReorderUrl, data: nSortable.serialize(), cache: false, success: _.bind(this.unblockThis, this) }); }, toggleSubTree: function(event) { event.preventDefault(); var $currentTarget = $(event.currentTarget); var $li = $currentTarget.closest('li.page'); var $ul = $li.find('ul').first(); if (!$li.hasClass('closed')) { $ul.slideUp(300, _.bind(function() { $li.addClass('closed'); $currentTarget.removeClass('wicon-collapse').addClass('wicon-expand'); this.setClosedPagesCookie(); }, this)); } else { $ul.slideDown(300, _.bind(function() { $li.removeClass('closed'); $currentTarget.removeClass('wicon-expand').addClass('wicon-collapse'); this.setClosedPagesCookie(); }, this)); } }, setClosedPagesCookie: function() { var closedPages = []; this.$('.page.closed').each(function() { closedPages.push(parseInt($(this).attr('data-cms-page-id'))); }); Cookies.set('closed_pages', closedPages, {expires: 365, path: ''}); } }); });
define(function(require) { var _ = require('underscore'); var $ = require('jquery'); var BaseView = require('common/BaseView'); /** * Holds a reference to the body. * * @type {jQuery} */ var $body = $('body'); /** * Default options. * * @type {{navClosedClass: string}} */ var defaults = { forceOpenClass: 'sidebar-is-open' }; return BaseView.extend({ /** * The element of this view. * * @type {string} CSS selector */ el: '.sidebar--navigation-toggle', /** * Registered events of this view. * * @type {Object} */ events: { 'click': 'toggleNav' }, /** * Options * * @param {Object} */ options: {}, /** * Initialization of the view. * * @param {Object=} options */ initialize: function(options) { this.options = $.extend({}, defaults, options); this.$sidebar = $('.sidebar'); }, /** * toggleNav event handler * Toggles navClosedClass on the body to show/hide the navigation. */ toggleNav: function(event) { if (!$body.hasClass(this.options.forceOpenClass)) { $body.addClass(this.options.forceOpenClass); this.$sidebar.fadeIn(); setTimeout(_.bind(function() { this.$sidebar.find('.gm-scrollbar-container').data('scrollbar').update(); }, this), 0); } else { $body.removeClass(this.options.forceOpenClass); this.$sidebar.fadeOut(_.bind(function() { this.$sidebar.attr('style', ''); }, this)); } } }); });