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