~canonical-sysadmins/wordpress/4.7.2

« back to all changes in this revision

Viewing changes to wp-admin/js/gallery.js

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* global unescape, getUserSetting, setUserSetting */
 
2
 
 
3
jQuery(document).ready(function($) {
 
4
        var gallerySortable, gallerySortableInit, sortIt, clearAll, w, desc = false;
 
5
 
 
6
        gallerySortableInit = function() {
 
7
                gallerySortable = $('#media-items').sortable( {
 
8
                        items: 'div.media-item',
 
9
                        placeholder: 'sorthelper',
 
10
                        axis: 'y',
 
11
                        distance: 2,
 
12
                        handle: 'div.filename',
 
13
                        stop: function() {
 
14
                                // When an update has occurred, adjust the order for each item
 
15
                                var all = $('#media-items').sortable('toArray'), len = all.length;
 
16
                                $.each(all, function(i, id) {
 
17
                                        var order = desc ? (len - i) : (1 + i);
 
18
                                        $('#' + id + ' .menu_order input').val(order);
 
19
                                });
 
20
                        }
 
21
                } );
 
22
        };
 
23
 
 
24
        sortIt = function() {
 
25
                var all = $('.menu_order_input'), len = all.length;
 
26
                all.each(function(i){
 
27
                        var order = desc ? (len - i) : (1 + i);
 
28
                        $(this).val(order);
 
29
                });
 
30
        };
 
31
 
 
32
        clearAll = function(c) {
 
33
                c = c || 0;
 
34
                $('.menu_order_input').each( function() {
 
35
                        if ( this.value === '0' || c ) {
 
36
                                this.value = '';
 
37
                        }
 
38
                });
 
39
        };
 
40
 
 
41
        $('#asc').click( function() {
 
42
                desc = false;
 
43
                sortIt();
 
44
                return false;
 
45
        });
 
46
        $('#desc').click( function() {
 
47
                desc = true;
 
48
                sortIt();
 
49
                return false;
 
50
        });
 
51
        $('#clear').click( function() {
 
52
                clearAll(1);
 
53
                return false;
 
54
        });
 
55
        $('#showall').click( function() {
 
56
                $('#sort-buttons span a').toggle();
 
57
                $('a.describe-toggle-on').hide();
 
58
                $('a.describe-toggle-off, table.slidetoggle').show();
 
59
                $('img.pinkynail').toggle(false);
 
60
                return false;
 
61
        });
 
62
        $('#hideall').click( function() {
 
63
                $('#sort-buttons span a').toggle();
 
64
                $('a.describe-toggle-on').show();
 
65
                $('a.describe-toggle-off, table.slidetoggle').hide();
 
66
                $('img.pinkynail').toggle(true);
 
67
                return false;
 
68
        });
 
69
 
 
70
        // initialize sortable
 
71
        gallerySortableInit();
 
72
        clearAll();
 
73
 
 
74
        if ( $('#media-items>*').length > 1 ) {
 
75
                w = wpgallery.getWin();
 
76
 
 
77
                $('#save-all, #gallery-settings').show();
 
78
                if ( typeof w.tinyMCE !== 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
 
79
                        wpgallery.mcemode = true;
 
80
                        wpgallery.init();
 
81
                } else {
 
82
                        $('#insert-gallery').show();
 
83
                }
 
84
        }
 
85
});
 
86
 
 
87
jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
 
88
 
 
89
/* gallery settings */
 
90
var tinymce = null, tinyMCE, wpgallery;
 
91
 
 
92
wpgallery = {
 
93
        mcemode : false,
 
94
        editor : {},
 
95
        dom : {},
 
96
        is_update : false,
 
97
        el : {},
 
98
 
 
99
        I : function(e) {
 
100
                return document.getElementById(e);
 
101
        },
 
102
 
 
103
        init: function() {
 
104
                var t = this, li, q, i, it, w = t.getWin();
 
105
 
 
106
                if ( ! t.mcemode ) {
 
107
                        return;
 
108
                }
 
109
 
 
110
                li = ('' + document.location.search).replace(/^\?/, '').split('&');
 
111
                q = {};
 
112
                for (i=0; i<li.length; i++) {
 
113
                        it = li[i].split('=');
 
114
                        q[unescape(it[0])] = unescape(it[1]);
 
115
                }
 
116
 
 
117
                if ( q.mce_rdomain ) {
 
118
                        document.domain = q.mce_rdomain;
 
119
                }
 
120
 
 
121
                // Find window & API
 
122
                tinymce = w.tinymce;
 
123
                tinyMCE = w.tinyMCE;
 
124
                t.editor = tinymce.EditorManager.activeEditor;
 
125
 
 
126
                t.setup();
 
127
        },
 
128
 
 
129
        getWin : function() {
 
130
                return window.dialogArguments || opener || parent || top;
 
131
        },
 
132
 
 
133
        setup : function() {
 
134
                var t = this, a, ed = t.editor, g, columns, link, order, orderby;
 
135
                if ( ! t.mcemode ) {
 
136
                        return;
 
137
                }
 
138
 
 
139
                t.el = ed.selection.getNode();
 
140
 
 
141
                if ( t.el.nodeName !== 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
 
142
                        if ( ( g = ed.dom.select('img.wpGallery') ) && g[0] ) {
 
143
                                t.el = g[0];
 
144
                        } else {
 
145
                                if ( getUserSetting('galfile') === '1' ) {
 
146
                                        t.I('linkto-file').checked = 'checked';
 
147
                                }
 
148
                                if ( getUserSetting('galdesc') === '1' ) {
 
149
                                        t.I('order-desc').checked = 'checked';
 
150
                                }
 
151
                                if ( getUserSetting('galcols') ) {
 
152
                                        t.I('columns').value = getUserSetting('galcols');
 
153
                                }
 
154
                                if ( getUserSetting('galord') ) {
 
155
                                        t.I('orderby').value = getUserSetting('galord');
 
156
                                }
 
157
                                jQuery('#insert-gallery').show();
 
158
                                return;
 
159
                        }
 
160
                }
 
161
 
 
162
                a = ed.dom.getAttrib(t.el, 'title');
 
163
                a = ed.dom.decode(a);
 
164
 
 
165
                if ( a ) {
 
166
                        jQuery('#update-gallery').show();
 
167
                        t.is_update = true;
 
168
 
 
169
                        columns = a.match(/columns=['"]([0-9]+)['"]/);
 
170
                        link = a.match(/link=['"]([^'"]+)['"]/i);
 
171
                        order = a.match(/order=['"]([^'"]+)['"]/i);
 
172
                        orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
 
173
 
 
174
                        if ( link && link[1] ) {
 
175
                                t.I('linkto-file').checked = 'checked';
 
176
                        }
 
177
                        if ( order && order[1] ) {
 
178
                                t.I('order-desc').checked = 'checked';
 
179
                        }
 
180
                        if ( columns && columns[1] ) {
 
181
                                t.I('columns').value = '' + columns[1];
 
182
                        }
 
183
                        if ( orderby && orderby[1] ) {
 
184
                                t.I('orderby').value = orderby[1];
 
185
                        }
 
186
                } else {
 
187
                        jQuery('#insert-gallery').show();
 
188
                }
 
189
        },
 
190
 
 
191
        update : function() {
 
192
                var t = this, ed = t.editor, all = '', s;
 
193
 
 
194
                if ( ! t.mcemode || ! t.is_update ) {
 
195
                        s = '[gallery' + t.getSettings() + ']';
 
196
                        t.getWin().send_to_editor(s);
 
197
                        return;
 
198
                }
 
199
 
 
200
                if ( t.el.nodeName !== 'IMG' ) {
 
201
                        return;
 
202
                }
 
203
 
 
204
                all = ed.dom.decode( ed.dom.getAttrib( t.el, 'title' ) );
 
205
                all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
 
206
                all += t.getSettings();
 
207
 
 
208
                ed.dom.setAttrib(t.el, 'title', all);
 
209
                t.getWin().tb_remove();
 
210
        },
 
211
 
 
212
        getSettings : function() {
 
213
                var I = this.I, s = '';
 
214
 
 
215
                if ( I('linkto-file').checked ) {
 
216
                        s += ' link="file"';
 
217
                        setUserSetting('galfile', '1');
 
218
                }
 
219
 
 
220
                if ( I('order-desc').checked ) {
 
221
                        s += ' order="DESC"';
 
222
                        setUserSetting('galdesc', '1');
 
223
                }
 
224
 
 
225
                if ( I('columns').value !== 3 ) {
 
226
                        s += ' columns="' + I('columns').value + '"';
 
227
                        setUserSetting('galcols', I('columns').value);
 
228
                }
 
229
 
 
230
                if ( I('orderby').value !== 'menu_order' ) {
 
231
                        s += ' orderby="' + I('orderby').value + '"';
 
232
                        setUserSetting('galord', I('orderby').value);
 
233
                }
 
234
 
 
235
                return s;
 
236
        }
 
237
};