Example #1
0
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: ''});
          });
        }
      });
    }
  });
});
Example #3
0
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: ''});
    }
  });
});
Example #4
0
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));
      }
    }
  });
});