mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
2869e3a186
Use `pagehide` event instead of `unload` in the following cases: * For classic editor to release the post lock. * In Text widget to rebuild editor after dragging widget to new location in classic widgets interface. * To clear out the `window.name` when navigating away from a post preview. * To suspend heartbeat, while also using `pageshow` event to resume as if it had been a focused tab in case page restored from bfcache. Also: * Remove obsolete mobile cleanup code in `js/_enqueues/lib/gallery.js` (introduced in [9894]). Do same for `src/js/_enqueues/wp/media/models.js` (introduced in [22872]). See #22552. * Remove obsolete Firefox-specific workaround in `js/_enqueues/wp/mce-view.js` from [39282]. See #38511. Fixes #55491. Props spenserhale, westonruter, adamsilverstein, azaozz, shawfactor, peterwilsoncc, swissspidy. Built from https://develop.svn.wordpress.org/trunk@56809 git-svn-id: http://core.svn.wordpress.org/trunk@56321 1a063a9b-81f0-0310-95a4-ce76da25c4cd
240 lines
5.4 KiB
JavaScript
240 lines
5.4 KiB
JavaScript
/**
|
|
* @output wp-admin/js/gallery.js
|
|
*/
|
|
|
|
/* global unescape, getUserSetting, setUserSetting, wpgallery, tinymce */
|
|
|
|
jQuery( function($) {
|
|
var gallerySortable, gallerySortableInit, sortIt, clearAll, w, desc = false;
|
|
|
|
gallerySortableInit = function() {
|
|
gallerySortable = $('#media-items').sortable( {
|
|
items: 'div.media-item',
|
|
placeholder: 'sorthelper',
|
|
axis: 'y',
|
|
distance: 2,
|
|
handle: 'div.filename',
|
|
stop: function() {
|
|
// When an update has occurred, adjust the order for each item.
|
|
var all = $('#media-items').sortable('toArray'), len = all.length;
|
|
$.each(all, function(i, id) {
|
|
var order = desc ? (len - i) : (1 + i);
|
|
$('#' + id + ' .menu_order input').val(order);
|
|
});
|
|
}
|
|
} );
|
|
};
|
|
|
|
sortIt = function() {
|
|
var all = $('.menu_order_input'), len = all.length;
|
|
all.each(function(i){
|
|
var order = desc ? (len - i) : (1 + i);
|
|
$(this).val(order);
|
|
});
|
|
};
|
|
|
|
clearAll = function(c) {
|
|
c = c || 0;
|
|
$('.menu_order_input').each( function() {
|
|
if ( this.value === '0' || c ) {
|
|
this.value = '';
|
|
}
|
|
});
|
|
};
|
|
|
|
$('#asc').on( 'click', function( e ) {
|
|
e.preventDefault();
|
|
desc = false;
|
|
sortIt();
|
|
});
|
|
$('#desc').on( 'click', function( e ) {
|
|
e.preventDefault();
|
|
desc = true;
|
|
sortIt();
|
|
});
|
|
$('#clear').on( 'click', function( e ) {
|
|
e.preventDefault();
|
|
clearAll(1);
|
|
});
|
|
$('#showall').on( 'click', function( e ) {
|
|
e.preventDefault();
|
|
$('#sort-buttons span a').toggle();
|
|
$('a.describe-toggle-on').hide();
|
|
$('a.describe-toggle-off, table.slidetoggle').show();
|
|
$('img.pinkynail').toggle(false);
|
|
});
|
|
$('#hideall').on( 'click', function( e ) {
|
|
e.preventDefault();
|
|
$('#sort-buttons span a').toggle();
|
|
$('a.describe-toggle-on').show();
|
|
$('a.describe-toggle-off, table.slidetoggle').hide();
|
|
$('img.pinkynail').toggle(true);
|
|
});
|
|
|
|
// Initialize sortable.
|
|
gallerySortableInit();
|
|
clearAll();
|
|
|
|
if ( $('#media-items>*').length > 1 ) {
|
|
w = wpgallery.getWin();
|
|
|
|
$('#save-all, #gallery-settings').show();
|
|
if ( typeof w.tinyMCE !== 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
|
|
wpgallery.mcemode = true;
|
|
wpgallery.init();
|
|
} else {
|
|
$('#insert-gallery').show();
|
|
}
|
|
}
|
|
});
|
|
|
|
/* gallery settings */
|
|
window.tinymce = null;
|
|
|
|
window.wpgallery = {
|
|
mcemode : false,
|
|
editor : {},
|
|
dom : {},
|
|
is_update : false,
|
|
el : {},
|
|
|
|
I : function(e) {
|
|
return document.getElementById(e);
|
|
},
|
|
|
|
init: function() {
|
|
var t = this, li, q, i, it, w = t.getWin();
|
|
|
|
if ( ! t.mcemode ) {
|
|
return;
|
|
}
|
|
|
|
li = ('' + document.location.search).replace(/^\?/, '').split('&');
|
|
q = {};
|
|
for (i=0; i<li.length; i++) {
|
|
it = li[i].split('=');
|
|
q[unescape(it[0])] = unescape(it[1]);
|
|
}
|
|
|
|
if ( q.mce_rdomain ) {
|
|
document.domain = q.mce_rdomain;
|
|
}
|
|
|
|
// Find window & API.
|
|
window.tinymce = w.tinymce;
|
|
window.tinyMCE = w.tinyMCE;
|
|
t.editor = tinymce.EditorManager.activeEditor;
|
|
|
|
t.setup();
|
|
},
|
|
|
|
getWin : function() {
|
|
return window.dialogArguments || opener || parent || top;
|
|
},
|
|
|
|
setup : function() {
|
|
var t = this, a, ed = t.editor, g, columns, link, order, orderby;
|
|
if ( ! t.mcemode ) {
|
|
return;
|
|
}
|
|
|
|
t.el = ed.selection.getNode();
|
|
|
|
if ( t.el.nodeName !== 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
|
|
if ( ( g = ed.dom.select('img.wpGallery') ) && g[0] ) {
|
|
t.el = g[0];
|
|
} else {
|
|
if ( getUserSetting('galfile') === '1' ) {
|
|
t.I('linkto-file').checked = 'checked';
|
|
}
|
|
if ( getUserSetting('galdesc') === '1' ) {
|
|
t.I('order-desc').checked = 'checked';
|
|
}
|
|
if ( getUserSetting('galcols') ) {
|
|
t.I('columns').value = getUserSetting('galcols');
|
|
}
|
|
if ( getUserSetting('galord') ) {
|
|
t.I('orderby').value = getUserSetting('galord');
|
|
}
|
|
jQuery('#insert-gallery').show();
|
|
return;
|
|
}
|
|
}
|
|
|
|
a = ed.dom.getAttrib(t.el, 'title');
|
|
a = ed.dom.decode(a);
|
|
|
|
if ( a ) {
|
|
jQuery('#update-gallery').show();
|
|
t.is_update = true;
|
|
|
|
columns = a.match(/columns=['"]([0-9]+)['"]/);
|
|
link = a.match(/link=['"]([^'"]+)['"]/i);
|
|
order = a.match(/order=['"]([^'"]+)['"]/i);
|
|
orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
|
|
|
|
if ( link && link[1] ) {
|
|
t.I('linkto-file').checked = 'checked';
|
|
}
|
|
if ( order && order[1] ) {
|
|
t.I('order-desc').checked = 'checked';
|
|
}
|
|
if ( columns && columns[1] ) {
|
|
t.I('columns').value = '' + columns[1];
|
|
}
|
|
if ( orderby && orderby[1] ) {
|
|
t.I('orderby').value = orderby[1];
|
|
}
|
|
} else {
|
|
jQuery('#insert-gallery').show();
|
|
}
|
|
},
|
|
|
|
update : function() {
|
|
var t = this, ed = t.editor, all = '', s;
|
|
|
|
if ( ! t.mcemode || ! t.is_update ) {
|
|
s = '[gallery' + t.getSettings() + ']';
|
|
t.getWin().send_to_editor(s);
|
|
return;
|
|
}
|
|
|
|
if ( t.el.nodeName !== 'IMG' ) {
|
|
return;
|
|
}
|
|
|
|
all = ed.dom.decode( ed.dom.getAttrib( t.el, 'title' ) );
|
|
all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
|
|
all += t.getSettings();
|
|
|
|
ed.dom.setAttrib(t.el, 'title', all);
|
|
t.getWin().tb_remove();
|
|
},
|
|
|
|
getSettings : function() {
|
|
var I = this.I, s = '';
|
|
|
|
if ( I('linkto-file').checked ) {
|
|
s += ' link="file"';
|
|
setUserSetting('galfile', '1');
|
|
}
|
|
|
|
if ( I('order-desc').checked ) {
|
|
s += ' order="DESC"';
|
|
setUserSetting('galdesc', '1');
|
|
}
|
|
|
|
if ( I('columns').value !== 3 ) {
|
|
s += ' columns="' + I('columns').value + '"';
|
|
setUserSetting('galcols', I('columns').value);
|
|
}
|
|
|
|
if ( I('orderby').value !== 'menu_order' ) {
|
|
s += ' orderby="' + I('orderby').value + '"';
|
|
setUserSetting('galord', I('orderby').value);
|
|
}
|
|
|
|
return s;
|
|
}
|
|
};
|