annotate core/modules/ckeditor/js/views/VisualView.js @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
rev   line source
Chris@0 1 /**
Chris@0 2 * DO NOT EDIT THIS FILE.
Chris@0 3 * See the following change record for more information,
Chris@0 4 * https://www.drupal.org/node/2815083
Chris@0 5 * @preserve
Chris@0 6 **/
Chris@0 7
Chris@0 8 (function (Drupal, Backbone, $) {
Chris@0 9 Drupal.ckeditor.VisualView = Backbone.View.extend({
Chris@0 10
Chris@0 11 events: {
Chris@0 12 'click .ckeditor-toolbar-group-name': 'onGroupNameClick',
Chris@0 13 'click .ckeditor-groupnames-toggle': 'onGroupNamesToggleClick',
Chris@0 14 'click .ckeditor-add-new-group button': 'onAddGroupButtonClick'
Chris@0 15 },
Chris@0 16
Chris@0 17 initialize: function initialize() {
Chris@0 18 this.listenTo(this.model, 'change:isDirty change:groupNamesVisible', this.render);
Chris@0 19
Chris@0 20 $(Drupal.theme('ckeditorButtonGroupNamesToggle')).prependTo(this.$el.find('#ckeditor-active-toolbar').parent());
Chris@0 21
Chris@0 22 this.render();
Chris@0 23 },
Chris@0 24 render: function render(model, value, changedAttributes) {
Chris@0 25 this.insertPlaceholders();
Chris@0 26 this.applySorting();
Chris@0 27
Chris@0 28 var groupNamesVisible = this.model.get('groupNamesVisible');
Chris@0 29
Chris@0 30 if (changedAttributes && changedAttributes.changes && changedAttributes.changes.isDirty) {
Chris@0 31 this.model.set({ groupNamesVisible: true }, { silent: true });
Chris@0 32 groupNamesVisible = true;
Chris@0 33 }
Chris@0 34 this.$el.find('[data-toolbar="active"]').toggleClass('ckeditor-group-names-are-visible', groupNamesVisible);
Chris@0 35 this.$el.find('.ckeditor-groupnames-toggle').text(groupNamesVisible ? Drupal.t('Hide group names') : Drupal.t('Show group names')).attr('aria-pressed', groupNamesVisible);
Chris@0 36
Chris@0 37 return this;
Chris@0 38 },
Chris@0 39 onGroupNameClick: function onGroupNameClick(event) {
Chris@0 40 var $group = $(event.currentTarget).closest('.ckeditor-toolbar-group');
Chris@0 41 Drupal.ckeditor.openGroupNameDialog(this, $group);
Chris@0 42
Chris@0 43 event.stopPropagation();
Chris@0 44 event.preventDefault();
Chris@0 45 },
Chris@0 46 onGroupNamesToggleClick: function onGroupNamesToggleClick(event) {
Chris@0 47 this.model.set('groupNamesVisible', !this.model.get('groupNamesVisible'));
Chris@0 48 event.preventDefault();
Chris@0 49 },
Chris@0 50 onAddGroupButtonClick: function onAddGroupButtonClick(event) {
Chris@0 51 function insertNewGroup(success, $group) {
Chris@0 52 if (success) {
Chris@0 53 $group.appendTo($(event.currentTarget).closest('.ckeditor-row').children('.ckeditor-toolbar-groups'));
Chris@0 54
Chris@0 55 $group.trigger('focus');
Chris@0 56 }
Chris@0 57 }
Chris@0 58
Chris@0 59 Drupal.ckeditor.openGroupNameDialog(this, $(Drupal.theme('ckeditorToolbarGroup')), insertNewGroup);
Chris@0 60
Chris@0 61 event.preventDefault();
Chris@0 62 },
Chris@0 63 endGroupDrag: function endGroupDrag(event, ui) {
Chris@0 64 var view = this;
Chris@0 65 Drupal.ckeditor.registerGroupMove(this, ui.item, function (success) {
Chris@0 66 if (!success) {
Chris@0 67 view.$el.find('.ckeditor-toolbar-configuration').find('.ui-sortable').sortable('cancel');
Chris@0 68 }
Chris@0 69 });
Chris@0 70 },
Chris@0 71 startButtonDrag: function startButtonDrag(event, ui) {
Chris@0 72 this.$el.find('a:focus').trigger('blur');
Chris@0 73
Chris@0 74 this.model.set('groupNamesVisible', true);
Chris@0 75 },
Chris@0 76 endButtonDrag: function endButtonDrag(event, ui) {
Chris@0 77 var view = this;
Chris@0 78 Drupal.ckeditor.registerButtonMove(this, ui.item, function (success) {
Chris@0 79 if (!success) {
Chris@0 80 view.$el.find('.ui-sortable').sortable('cancel');
Chris@0 81 }
Chris@0 82
Chris@0 83 ui.item.find('a').trigger('focus');
Chris@0 84 });
Chris@0 85 },
Chris@0 86 applySorting: function applySorting() {
Chris@0 87 this.$el.find('.ckeditor-buttons').not('.ui-sortable').sortable({
Chris@0 88 connectWith: '.ckeditor-buttons',
Chris@0 89 placeholder: 'ckeditor-button-placeholder',
Chris@0 90 forcePlaceholderSize: true,
Chris@0 91 tolerance: 'pointer',
Chris@0 92 cursor: 'move',
Chris@0 93 start: this.startButtonDrag.bind(this),
Chris@0 94
Chris@0 95 stop: this.endButtonDrag.bind(this)
Chris@0 96 }).disableSelection();
Chris@0 97
Chris@0 98 this.$el.find('.ckeditor-toolbar-groups').not('.ui-sortable').sortable({
Chris@0 99 connectWith: '.ckeditor-toolbar-groups',
Chris@0 100 cancel: '.ckeditor-add-new-group',
Chris@0 101 placeholder: 'ckeditor-toolbar-group-placeholder',
Chris@0 102 forcePlaceholderSize: true,
Chris@0 103 cursor: 'move',
Chris@0 104 stop: this.endGroupDrag.bind(this)
Chris@0 105 });
Chris@0 106
Chris@0 107 this.$el.find('.ckeditor-multiple-buttons li').draggable({
Chris@0 108 connectToSortable: '.ckeditor-toolbar-active .ckeditor-buttons',
Chris@0 109 helper: 'clone'
Chris@0 110 });
Chris@0 111 },
Chris@0 112 insertPlaceholders: function insertPlaceholders() {
Chris@0 113 this.insertPlaceholderRow();
Chris@0 114 this.insertNewGroupButtons();
Chris@0 115 },
Chris@0 116 insertPlaceholderRow: function insertPlaceholderRow() {
Chris@0 117 var $rows = this.$el.find('.ckeditor-row');
Chris@0 118
Chris@0 119 if (!$rows.eq(-1).hasClass('placeholder')) {
Chris@0 120 this.$el.find('.ckeditor-toolbar-active').children('.ckeditor-active-toolbar-configuration').append(Drupal.theme('ckeditorRow'));
Chris@0 121 }
Chris@0 122
Chris@0 123 $rows = this.$el.find('.ckeditor-row');
Chris@0 124
Chris@0 125 var len = $rows.length;
Chris@0 126 $rows.filter(function (index, row) {
Chris@0 127 if (index + 1 === len) {
Chris@0 128 return false;
Chris@0 129 }
Chris@0 130 return $(row).find('.ckeditor-toolbar-group').not('.placeholder').length === 0;
Chris@0 131 }).remove();
Chris@0 132 },
Chris@0 133 insertNewGroupButtons: function insertNewGroupButtons() {
Chris@0 134 this.$el.find('.ckeditor-row').each(function () {
Chris@0 135 var $row = $(this);
Chris@0 136 var $groups = $row.find('.ckeditor-toolbar-group');
Chris@0 137 var $button = $row.find('.ckeditor-add-new-group');
Chris@0 138 if ($button.length === 0) {
Chris@0 139 $row.children('.ckeditor-toolbar-groups').append(Drupal.theme('ckeditorNewButtonGroup'));
Chris@0 140 } else if (!$groups.eq(-1).hasClass('ckeditor-add-new-group')) {
Chris@0 141 $button.appendTo($row.children('.ckeditor-toolbar-groups'));
Chris@0 142 }
Chris@0 143 });
Chris@0 144 }
Chris@0 145 });
Chris@0 146 })(Drupal, Backbone, jQuery);