From 3c15f6a8d329854b9efc923463dcb234e04cd885 Mon Sep 17 00:00:00 2001 From: azaozz Date: Sun, 23 Nov 2008 06:37:15 +0000 Subject: [PATCH] Gallery settings for TinyMCE git-svn-id: http://svn.automattic.com/wordpress/trunk@9847 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/admin-header.php | 12 +- wp-admin/css/colors-classic.css | 10 +- wp-admin/css/colors-fresh.css | 10 +- wp-admin/includes/post.php | 2 +- wp-admin/wp-admin.css | 8 +- wp-includes/js/tinymce/langs/wp-langs-en.js | 26 +++ wp-includes/js/tinymce/langs/wp-langs.php | 28 ++- .../plugins/wpeditimage/css/editimage.css | 21 +- .../plugins/wpeditimage/editor_plugin.js | 6 +- .../tinymce/plugins/wpgallery/css/gallery.css | 208 ++++++++++++++++++ .../plugins/wpgallery/editor_plugin.js | 189 ++++++++++++++++ .../js/tinymce/plugins/wpgallery/gallery.html | 121 ++++++++++ .../tinymce/plugins/wpgallery/img/delete.png | Bin 0 -> 1638 bytes .../js/tinymce/plugins/wpgallery/img/edit.png | Bin 0 -> 1799 bytes .../tinymce/plugins/wpgallery/img/gallery.png | Bin 0 -> 28900 bytes .../js/tinymce/plugins/wpgallery/img/t.gif | Bin 0 -> 43 bytes .../tinymce/plugins/wpgallery/js/gallery.js | 165 ++++++++++++++ wp-includes/js/tinymce/wordpress.css | 7 + wp-includes/media.php | 10 +- wp-includes/post-template.php | 4 +- wp-includes/script-loader.php | 2 +- 21 files changed, 801 insertions(+), 28 deletions(-) create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/css/gallery.css create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/gallery.html create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/img/delete.png create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/img/edit.png create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/img/t.gif create mode 100644 wp-includes/js/tinymce/plugins/wpgallery/js/gallery.js diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php index 2b6aa14f8..19edd9eed 100644 --- a/wp-admin/admin-header.php +++ b/wp-admin/admin-header.php @@ -39,12 +39,14 @@ function convertEntities(o) { return s; } - if ( typeof o === 'object' ) { - for (var v in o) - o[v] = c(o[v]); - return o; - } else if ( typeof o === 'string' ) + if ( typeof o === 'string' ) return c(o); + else if ( typeof o === 'object' ) + for (var v in o) { + if ( typeof o[v] === 'string' ) + o[v] = c(o[v]); + } + return o; }; //]]> diff --git a/wp-admin/css/colors-classic.css b/wp-admin/css/colors-classic.css index 03bb7b8ec..348d5eb19 100644 --- a/wp-admin/css/colors-classic.css +++ b/wp-admin/css/colors-classic.css @@ -1449,12 +1449,18 @@ form p.submit a.cancel:hover { border-color: #999; } -#wp_editimgbtn, #wp_delimgbtn { +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { border-color: #999; background-color: #eee; } -#wp_editimgbtn:hover, #wp_delimgbtn:hover { +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { border-color: #555; background-color: #ccc; } diff --git a/wp-admin/css/colors-fresh.css b/wp-admin/css/colors-fresh.css index 6a66b3578..9b2a0036d 100644 --- a/wp-admin/css/colors-fresh.css +++ b/wp-admin/css/colors-fresh.css @@ -1452,12 +1452,18 @@ form p.submit a.cancel:hover { border-color: #999; } -#wp_editimgbtn, #wp_delimgbtn { +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { border-color: #999; background-color: #eee; } -#wp_editimgbtn:hover, #wp_delimgbtn:hover { +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { border-color: #555; background-color: #ccc; } diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index e6cb15c07..7fb118f63 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -1124,7 +1124,7 @@ function wp_tiny_mce( $teeny = false ) { $plugins = apply_filters( 'teeny_mce_plugins', array('safari', 'inlinepopups', 'media', 'autosave', 'fullscreen') ); $ext_plugins = ''; } else { - $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage' ); + $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage', 'wpgallery' ); /* The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'. diff --git a/wp-admin/wp-admin.css b/wp-admin/wp-admin.css index 8a8b8ed39..0a4140695 100644 --- a/wp-admin/wp-admin.css +++ b/wp-admin/wp-admin.css @@ -2183,14 +2183,18 @@ fieldset { font: 18px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } -#wp_editbtns { +#wp_editbtns, +#wp_gallerybtns { padding: 2px; position: absolute; display: none; z-index: 999998; } -#wp_editimgbtn, #wp_delimgbtn { +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { margin: 2px; padding: 2px; border-width: 1px; diff --git a/wp-includes/js/tinymce/langs/wp-langs-en.js b/wp-includes/js/tinymce/langs/wp-langs-en.js index 4c8ab54e0..d584c9aac 100644 --- a/wp-includes/js/tinymce/langs/wp-langs-en.js +++ b/wp-includes/js/tinymce/langs/wp-langs-en.js @@ -427,3 +427,29 @@ img_title:"Edit Image Title", caption:"Edit Image Caption", alt:"Edit Alternate Text" }); + +tinyMCE.addI18n("en.gallery",{ +settings:"Gallery Settings", +linkto:"Link thumbnails to:", +linktofile:"Image File", +linktopost:"Attachment Page", +orderby:"Order images by:", +menu_order:"Menu order", +byname:"Name", +bydate:"Date/Time", +random:"Random", +order:"Order:", +orderasc:"Ascending", +orderdesc:"Descending", +cols:"Gallery columns:", +two:"two", +three:"three", +four:"four", +five:"five", +six:"six", +seven:"seven", +eight:"eight", +nine:"nine", +imgwidth:"Limit the thumbnails width:", +imgwidthhelp:"Overrides the thumbnail images width. The default can be changed from the Media Settings page." +}); diff --git a/wp-includes/js/tinymce/langs/wp-langs.php b/wp-includes/js/tinymce/langs/wp-langs.php index d7cc8f4ac..6dc547fa1 100644 --- a/wp-includes/js/tinymce/langs/wp-langs.php +++ b/wp-includes/js/tinymce/langs/wp-langs.php @@ -450,6 +450,30 @@ img_title:"' . mce_escape( __('Edit Image Title') ) . '", caption:"' . mce_escape( __('Edit Image Caption') ) . '", alt:"' . mce_escape( __('Edit Alternate Text') ) . '" }); -'; -// mce_put_file( ABSPATH . WPINC . '/js/tinymce/langs/wp-langs-' . $language . '.js', $lang ); +tinyMCE.addI18n("' . $language . '.gallery",{ +settings:"' . mce_escape( __('Gallery Settings') ) . '", +linkto:"' . mce_escape( __('Link thumbnails to:') ) . '", +linktofile:"' . mce_escape( __('Image File') ) . '", +linktopost:"' . mce_escape( __('Attachment Page') ) . '", +orderby:"' . mce_escape( __('Order images by:') ) . '", +menu_order:"' . mce_escape( __('Menu order') ) . '", +byname:"' . mce_escape( __('Name') ) . '", +bydate:"' . mce_escape( __('Date/Time') ) . '", +random:"' . mce_escape( __('Random') ) . '", +order:"' . mce_escape( __('Order:') ) . '", +orderasc:"' . mce_escape( __('Ascending') ) . '", +orderdesc:"' . mce_escape( __('Descending') ) . '", +cols:"' . mce_escape( __('Gallery columns:') ) . '", +two:"' . mce_escape( __('two') ) . '", +three:"' . mce_escape( __('three') ) . '", +four:"' . mce_escape( __('four') ) . '", +five:"' . mce_escape( __('five') ) . '", +six:"' . mce_escape( __('six') ) . '", +seven:"' . mce_escape( __('seven') ) . '", +eight:"' . mce_escape( __('eight') ) . '", +nine:"' . mce_escape( __('nine') ) . '", +imgwidth:"' . mce_escape( __('Limit the thumbnails width:') ) . '", +imgwidthhelp:"' . mce_escape( __('Overrides the thumbnail images width. The default can be changed from the Media Settings page.') ) . '" +}); +'; diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css b/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css index c6789d537..26974d340 100644 --- a/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css +++ b/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css @@ -88,7 +88,7 @@ th.label { overflow: hidden; } -#media-upload #img-edit { +#img-edit { border: 1px solid #dfdfdf; width: 623px; margin: 15px auto; @@ -100,11 +100,10 @@ th.label { } #img_demo_txt { - font-size: 6px; - line-height: 10px; - font-family: "Courier New",Courier,monotype; - color: #ccc; - background-color: #ccc; + font-size: 9px; + line-height: 13px; + font-family: Monaco,"Courier New",Courier,monospace; + color: #888; } #img_demo { @@ -132,6 +131,7 @@ th.label { border-top-width: 1px; display: block; float: left; + height: 28px; line-height: 28px; text-decoration: none; text-align: center; @@ -332,3 +332,12 @@ div#media-upload-error { margin: 1em; font-weight: bold; } + +* html #sidemenu li { + zoom: 100%; +} + +* html #sidemenu a { + height: 27px; + line-height: 26px; +} diff --git a/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js b/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js index 7c5c00ba7..f24d0bafa 100644 --- a/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js +++ b/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js @@ -11,8 +11,9 @@ // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...'); ed.addCommand('WP_EditImage', function() { var el = ed.selection.getNode(), vp = tinymce.DOM.getViewPort(), H = vp.h, W = ( 720 < vp.w ) ? 720 : vp.w; + var cls = ed.dom.getAttrib(el, 'class'); - if ( ed.dom.getAttrib(el, 'class').indexOf('mceItem') != -1 || el.nodeName != 'IMG' ) + if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 || el.nodeName != 'IMG' ) return; tb_show('', url + '/editimage.html?ver=321&TB_iframe=true'); @@ -142,8 +143,9 @@ showButtons : function(n) { var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y; + var cls = ed.dom.getAttrib(n, 'class'); - if (ed.dom.getAttrib(n, 'class').indexOf('mceItem') != -1) + if ( cls.indexOf('mceItem') != -1 || cls.indexOf('wpGallery') != -1 ) return; vp = ed.dom.getViewPort(ed.getWin()); diff --git a/wp-includes/js/tinymce/plugins/wpgallery/css/gallery.css b/wp-includes/js/tinymce/plugins/wpgallery/css/gallery.css new file mode 100644 index 000000000..dedb297a8 --- /dev/null +++ b/wp-includes/js/tinymce/plugins/wpgallery/css/gallery.css @@ -0,0 +1,208 @@ + +html, body { + background-color: #f9f9f9; + margin: 0; + padding: 0; +} + +.button, +.button-primary, +.button-secondary { + font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; + text-decoration: none; + font-size: 11px !important; + line-height: 16px; + padding: 2px 8px; + cursor: pointer; + border-width: 1px; + border-style: solid; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + -khtml-box-sizing: content-box; + box-sizing: content-box; +} + +a.button { + padding: 4px 8px; +} + +textarea, +input, +select { + font: 13px Verdana, Arial, Helvetica, sans-serif; + margin: 1px; + padding: 2px; + background-color: #fff; +} + +.align input { + vertical-align: middle; +} + +body, td { + font: 13px "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; +} + +.alignright { + float: right; +} + +.alignleft { + float: left; +} + +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} + +label { + cursor: pointer; +} + +th.label { + width: 160px; +} + +#media-upload #basic th.label { + padding: 5px 5px 5px 0; +} + +#media-upload #basic .imgwidth { + vertical-align: top; +} + +#saveeditimg { + padding: 10px 0 0 5px; +} + +#sidemenu, +#sidemenu li { + list-style: none; +} + +#sidemenu li { + display: inline; +} + +#sidemenu a { + border-bottom-style: solid; + border-bottom-width: 1px; + border-top-style: solid; + border-top-width: 1px; + display: block; + float: left; + line-height: 28px; + text-decoration: none; + text-align: center; + white-space: nowrap; + margin: 0; + padding: 0pt 7px; +} + +#sidemenu a.current { + -moz-border-radius-topleft: 4px; + -khtml-border-top-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -khtml-border-top-right-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + border-style:solid; + border-width:1px; + font-weight:normal; +} + +#media-upload h3 { + clear: both; + padding: 0pt 0pt 3px; + border-bottom-style: solid; + border-bottom-width: 1px; + font-family: Georgia,"Times New Roman",Times,serif; + font-size: 20px; + font-weight: normal; + line-height: normal; + margin: 0 0 10px -4px; + padding: 15px 0 3px; + border-bottom-color: #DADADA; + color: #5A5A5A; +} + +#basic { + padding-top: 2px; +} + +td { + padding: 2px 0; +} + +.describe td { + vertical-align: middle; + height: 3.5em; +} + +#media-upload .describe th.label { + padding-top: .5em; + text-align: left; +} + +#media-upload .describe { + border: 1px solid #dfdfdf; + padding: 5px 15px; + width: 100%; + clear: both; + cursor: default; +} + +form { + margin: 1em; +} + +.describe select { + width: 15em; + border: 1px solid #dfdfdf; +} + +#imgwidth { + width: 3em; + border: 1px solid #dfdfdf; +} + +.media-upload-form label, +.media-upload-form legend { + font-size: 13px; + color: #464646; +} + +.align .field label { + margin: 0 1.5em 0 0; +} + +div#media-upload-header { + margin: 0; + padding: 0 5px; + font-weight: bold; + position: relative; + border-bottom-width: 1px; + border-bottom-style: solid; + height: 2.5em; +} + +body#media-upload ul#sidemenu { + font-weight: normal; + margin: 0 5px; + position: relative; + left: 0px; + bottom: -4px; +} + +div#media-upload-error { + margin: 1em; + font-weight: bold; +} diff --git a/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js new file mode 100644 index 000000000..e5aaf7c5f --- /dev/null +++ b/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js @@ -0,0 +1,189 @@ + +(function() { + tinymce.create('tinymce.plugins.wpGallery', { + + init : function(ed, url) { + var t = this; + + t.url = url; + t._createButtons(); + + // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...'); + ed.addCommand('WP_Gallery', function() { + var el = ed.selection.getNode(), vp = tinymce.DOM.getViewPort(), W = ( 720 < vp.w ) ? 720 : vp.w; + + if ( el.nodeName != 'IMG' ) return; + if ( ed.dom.getAttrib(el, 'class').indexOf('wpGallery') == -1 ) return; + + tb_show('', url + '/gallery.html?ver=321&TB_iframe=true'); + tinymce.DOM.setStyles('TB_window', { + 'width':( W - 50 )+'px', + 'height':'430px', + 'margin-left':'-'+parseInt((( W - 50 ) / 2),10) + 'px' + }); + + if ( ! tinymce.isIE6 ) { + tinymce.DOM.setStyles('TB_window', { + 'top':'30px', + 'marginTop':'0' + }); + } + + tinymce.DOM.setStyles('TB_iframeContent', { + 'width':( W - 50 )+'px', + 'height':'400px' + }); + tinymce.DOM.setStyle( ['TB_overlay','TB_window','TB_load'], 'z-index', '999999' ); + }); + + ed.onInit.add(function(ed) { + tinymce.dom.Event.add(ed.getWin(), 'scroll', function(e) { + ed.plugins.wpgallery.hideButtons(); + }); + }); + + ed.onBeforeExecCommand.add(function(ed, cmd, ui, val) { + ed.plugins.wpgallery.hideButtons(); + }); + + ed.onSaveContent.add(function(ed, o) { + ed.plugins.wpgallery.hideButtons(); + }); + + ed.onMouseUp.add(function(ed, e) { + if ( tinymce.isOpera ) { + if ( e.target.nodeName == 'IMG' ) + ed.plugins.wpgallery.showButtons(e.target); + } + + }); + + ed.onMouseDown.add(function(ed, e) { + if ( tinymce.isOpera || e.target.nodeName != 'IMG' ) { + t.hideButtons(); + return; + } + ed.plugins.wpgallery.showButtons(e.target); + }); + + ed.onBeforeSetContent.add(function(ed, o) { + o.content = t._do_gallery(o.content); + }); + + ed.onPostProcess.add(function(ed, o) { + if (o.get) + o.content = t._get_gallery(o.content); + }); + }, + + _do_gallery : function(co) { + return co.replace(/\[gallery([^\]]*)\]/g, function(a){ + return ''; + }); + }, + + _get_gallery : function(co) { + + function getAttr(s, n) { + n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s); + return n ? tinymce.DOM.decode(n[1]) : ''; + }; + + return co.replace(/(?:]*>)*(]+>)(?:<\/p>)*/g, function(a,im) { + var cls = getAttr(im, 'class'); + + if ( cls.indexOf('wpGallery') != -1 ) + return '

'+getAttr(im, 'title')+'

'; + + return im; + }); + }, + + showButtons : function(n) { + var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y; + + if (ed.dom.getAttrib(n, 'class').indexOf('wpGallery') == -1) + return; + + vp = ed.dom.getViewPort(ed.getWin()); + p1 = DOM.getPos(ed.getContentAreaContainer()); + p2 = ed.dom.getPos(n); + + X = Math.max(p2.x - vp.x, 0) + p1.x; + Y = Math.max(p2.y - vp.y, 0) + p1.y; + + DOM.setStyles('wp_gallerybtns', { + 'top' : Y+5+'px', + 'left' : X+5+'px', + 'display' : 'block' + }); + + t.btnsTout = window.setTimeout( function(){ed.plugins.wpgallery.hideButtons();}, 5000 ); + }, + + hideButtons : function() { + if ( tinymce.DOM.isHidden('wp_gallerybtns') ) return; + + tinymce.DOM.hide('wp_gallerybtns'); + window.clearTimeout(this.btnsTout); + }, + + _createButtons : function() { + var t = this, ed = tinyMCE.activeEditor, DOM = tinymce.DOM; + + DOM.remove('wp_gallerybtns'); + + var wp_gallerybtns = DOM.add(document.body, 'div', { + id : 'wp_gallerybtns', + style : 'display:none;' + }); + + var wp_editgallery = DOM.add('wp_gallerybtns', 'img', { + src : t.url+'/img/edit.png', + id : 'wp_editgallery', + width : '24', + height : '24', + title : ed.getLang('wpgallery.edit') + }); + + wp_editgallery.onmousedown = function(e) { + var ed = tinyMCE.activeEditor; + ed.windowManager.bookmark = ed.selection.getBookmark('simple'); + ed.execCommand("WP_Gallery"); + this.parentNode.style.display = 'none'; + }; + + var wp_delgallery = DOM.add('wp_gallerybtns', 'img', { + src : t.url+'/img/delete.png', + id : 'wp_delgallery', + width : '24', + height : '24', + title : ed.getLang('wpgallery.del') + }); + + wp_delgallery.onmousedown = function(e) { + var ed = tinyMCE.activeEditor, el = ed.selection.getNode(); + + if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItemWPgallery') != -1 ) { + ed.dom.remove(el); + + this.parentNode.style.display = 'none'; + ed.execCommand('mceRepaint'); + return false; + } + }; + }, + + getInfo : function() { + return { + longname : 'Gallery Settings', + author : 'WordPress', + authorurl : 'http://wordpress.org', + infourl : '', + version : "1.0" + }; + } + }); + + tinymce.PluginManager.add('wpgallery', tinymce.plugins.wpGallery); +})(); diff --git a/wp-includes/js/tinymce/plugins/wpgallery/gallery.html b/wp-includes/js/tinymce/plugins/wpgallery/gallery.html new file mode 100644 index 000000000..0a94195df --- /dev/null +++ b/wp-includes/js/tinymce/plugins/wpgallery/gallery.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + +

{#gallery.imgwidthhelp}

+
+ +
+ + +
+
+
+
+ + + diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png b/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..d64d8a66ebc7f512f5a44dd30f9ba88b9eb4d81c GIT binary patch literal 1638 zcmV-s2ATPZP)S54zJI5e!u&= za$o=4;(*pHSK`m7um^`QUV9mNTw&os;M_GiAJW0sx8B(K;`R63gVE6emV;Iys1OhcX@F@! z5D;EG&)FAWqJQAj9$(5IUfsd91P^_-Z`Tv+@4ORjnCQBTa_f}xdFIPylvX674(W6T z)3%YRG=_lj!++q=8-IGH90d0*3%JIJKDT4%wkKM9dT_@l&?s_~)BNT1X-T8 z&Y(ryc2<9?yk-K|0$3gHnzULdGi)>=P!b3 zGCn%Y!FNv9CMwkj&co|-aQQyKsaKN?Ln8x)c(T2e%i$FY$V8k?Z5#RM$mmlSE({+A z1_4ZKFo)sT0DHHrZ((9&oPrPpg?XMkF>vEdln=tXs3MP_N+Urcl`o=Q0uG^c3m*Jgun|Z4L3e&(ysY`uOo#Q=j@N!1{zK z86FyD&NK+3G0rZOzQYpyi?#ua`}o*wbL!#w!Zc#iMK@-6BbVd&xr_g}L8_a!Dvi$P z$q0=v_@wOT71Lkb~$B)?@i zCFethAxVagvl+rWEZC<4p9Kvu(xU(vLbC zECa+{TBDZIG!SgvmWaOlt+a!v)EQEmpfQaXaj3g>ECq&PVcHh)r~`pZI6XzP?_ot9 zUMP9|s#4$W!}9=+*8h{HCl8iuUz3P~yH_;OB_w&}W7sCiRV_s97*Yy?P*E)x@$z+I zi5Lqy$_sO4o~^o%umlH4UX`ZH^}Dx9)t#eWaO5lLWNLf!N*Y%;V`eiDi-QzcwHo$Z zgre*7?n0GU3q=mQ{=G3Fp1T@$^@tb&)@T?5CoScJ+b#3^T@9(&=4>PBL>z>mSgtTM zH^)Bj47> znx!l(C`BE(mcRs%OJ5gx6e1dAA4C9Sa1g7#Jv8BjarEd3+20R0l6gk7nG;@wq_MECjbBd07*qoM6N<$f>OgCM*si- literal 0 HcmV?d00001 diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png b/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..41def5115ea5a42785a380a56190c90ba4cbc1c6 GIT binary patch literal 1799 zcmV+i2l)7jP) zTa2Am6~}*TfBUk>=;_hKz|=&*KKET zV2Hudt*qZT#Kw^^c8*jTzvYt*kB)Nvj-CAI$3G>T&Ek0;+BwJnW6puY;o1)1aL!_l z!K9F;F(ys0CdC+wwH6UU{|~5kKJH@>hqD&rz$7s?O|UjaoI#wyrcDNh`U^o2j-*L^ zYkg^PR}=*gH&<5=ds?>(I2_hm0FpSyq%qE<;0)qYOwy!((}rxZSm;97hD&dCCfF8W()aUf+Gv|*CRvgt*mX07n zi9?BMcPWA>K>fF4hf)erf~Vx;*h7C@KxvP}gRl?=m2zpwb{6OK#mh5?f+R`0x(dFH z>v$MMd59;7r`i()A)fMZriE652xui}1hj|p6x#C%A_WBXBTHL zu6B0~`LpvezIKR!5lX}+mauVq50!>6 z2XSgS`qJN-df^Y8nLJ45&V6hd+p(>qqkww+vEOm_z4zRW ze*U??lFdZNKXnf`hmj%^DzrEx6j+?6dG0lulA~HFaqih?c6lFs7^xs}!sos1un;44e40`c>ihj%*-_UX4Al1%@ znoW85*#nfyLSK)N>oBOrE3ABYo}*{aP+Lwo@a|h2y);elx~*J3+aihzQD?ccQx+B$ z*5b4vU9WTi%ZagK$R7~czMH5-JP0&g5X!t&x0pBURpsk=%xlR=B-%H=D(dgv8S z96iQzYnj>E8r9wcGxbRx{K@a#UHkU$@h0|8e6?@WrhNbwXslY^o;uBZqrt_w1?J}# zXk4A)^r+h=RWL8(3E^Q!SM#cdns(V;}wfeTdQ|*7C&TPjme6Br1w%#tAA7 zdHI#UphLxm!BKA6c`KjY{S|80T%u1*O&Mn`X_~OKw1g-D=V;WM)LY9mms&LAI*sKO zKDT!-5B=Wxr4Wp<_@Xh^Voi*V4Mq%2W9aHC5CtLEKA0vIi)@4C#Tunz5h-@?)D!=_^XuQ* z_oDLJOQ@70j$?GIwTg4DEpOVx(;jJJNC78;I7`OQuvA;?a$>hI-&yS~f03m53= z+raU6kF(NPPKx==;XnT7Nyhh#Bg)}<($?gal~q9mB|;d6Xst2Ewoie0XdR*?g>1x$ zlP9@j;tuMIOB{UlH8P=QcIGO_CXXDO`RJqBzz;CikfsJ>E#T0%-L^Zj#-O!kb#)bJ z-*{)*LM{qgaf-uGtyaiqd^+-LxoOu8c%Fb|?t9Wp2fzN+Z`;i5 z-@pGxYwVx0*-W`stA)-vZBnCBYe|!sIF8$2g0tWpNs=I<$cB;gGtu(s=*Xkxa`_2s p?R2G5X^K(=zE3WfV`5^0{{V_y1OqtCpZWj*002ovPDHLkV1ja@f;#{J literal 0 HcmV?d00001 diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png b/wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..f55428bc4720e358b31f6f5b41736d6d80e13f38 GIT binary patch literal 28900 zcmXt9bx@n#(+yhO-QC^YU5k`bpt!rcyIZi}PASE`XmJnj?i6<`@a6r@d^__bGtXbS zH+#?So^x)@XEk|LBqAgL0D!8fAfpNS4*u^!fQNkcivfv?tT(m5LFuXrQ@OaEsF>{C;K^C-e7ih3T zMRPPf#=R((H__B)<3lCkpH>>~Xu5pbZv8JnQC(Fx@?Xva@>!K#8;--9zQ@JH>e?tG^x>Ms&8)gxElM~ee<4|m#3^$slZs4f7#sK5BOjg4g6aXsHCQ* zreoKP=(R&xcT|lVU1To=Z7|$GPG(Apv)-+&mkliC2{vjZTfB`MScr5}Z!aYLCaY z_N@;ZsH>aIo^`(yWh1>wbFR7kqe*r)wi*?6^@5+;Oci9_+ac+`U1IvROZ3PQQoO*? z($Lq)s70jeCd>vLK+NJE;x0q+T#~iNr!$hr6|uAWC4xF15#t`g-L@)gR7o51@T3f} z5OOSEEYST3vKdknAbf~BC_4PGlz8sUjt+@T1E;aBj>8D@Z%$e^GKXV;`EmYzumU!( z6TJ}1w2L$=RiJO%4IEu8EDq)&QEBwrY^2YM7l(ZB8}Qq(R^6P7aO<(afoa_!HfIx8 zib_PbR(!vdyL5)A!DHFtwQYFnI=Fg|GNER-wBlqKilN^;~a0axxwAT;8ze6gSqG_5Flas2d>gr25lZPI!%^y5~s~WE^W@1?l z4;L4g^3Mz`mW?ZAdexpUs!qOh|K+|^yFq?VZf@?c1>0wrj(_K(uu8JIO;IGguOuz- z_GexzB4_n}T&9oaGL03-2{Zw;Df#N#&k8*f$Iq}nl5zm+rfCG$X@v04I-1bvA@dwk zR1tE<_EC5QlfwYDk_6Qm=Xt0tY!tazy=t8t5D3)nev*1fobtkw6odnKN;i7Oz1-g~ zr7HWSuBysv&IKydtZWkE<@GpZb@Cb4Y}U(T#*3S~_wCYSO5blSK0ETY#+@M^;?WCu zAQJT?hT%i|ZBKr`0!g73Dk14V6sZH=-hsiFR##onCOV%dkd**>#5F_zu=T?5C?b3= z2B>ND!kWpfDSt`Cx8xXu-|yq2Dm<9h-YnyBpcCkFCViQine7Tb{vCZ>M~3_ddbe+Z zJvvP3Vg}}mXES5^0(0sl3TcLvkP}-1Vdta3JrnL_~wYvihMZx5xot(dW@wUQn+JvHCWK< zIc9axsRRNHjMvSWEiGup>3l?HXgqSu)-X`=deEnK)(JS-U6%1uR2(V2tE;OGqGvvH z>p|{-&T|K++w$`ApS|XgJ#IC8ux&RGdn@PfvMDpH1*eT4ocN0wF=mc$%|iLrL}_wP zdKOq(4QwiACcLqA3`@5V1w5$9k$B)#L&Z1ESW*Vu1Sa-ACVxvxt+>WSK&)TXDS|^n z9h+9eP^LWo|dKnTV*fr(jiR!hsdbb>}Tv z4hI6Ns;ZPF0P&C_@)icQ9rB5cK?M?eCjXt++C$g&g@X5!0z)^ODc5!b@PRAH3aMgt zm|NKRqA@UN#H3NagxkD!#wws^a_Ty{YbZL*Q>LWqL>4+B36CuQ4zZ7==tzS_F`1%F zjv+bYH!e~U=Yt+-bV-V0Mu8C{aS-k)#*x_Lp{e;+N7tA{fHfSGj>rP^2a!$Vt4S9> zqIC#t=|CWP+M5BzmB^^ZSI%gjZ(F%mHa0dhk8iFxvhrYltfwH@;MVT@YDu=tDpg1v z-9EP~mAU>jtS$JtbXs-kyVRlcbK$Q&ByYbmrMuDreJnqz3zksy zvh|9`73!-S%R)@)Wrz%Gv2^L1hlNyj`v2nb@sWL1diMx5I3@=1Lq6zEzT))$W#aGO zzfu^mRR^xm+Fgc50k3OY-MUo^hmcjulxZ?TFlPTyi;_8KF7d2TQh}RRQ>a>JKx0DD zX=KVJsY|Zl4G6{m;75195^ruQ$tRemwRGk zG;6}OD{+Wt)tpw0?>`g~Vs{yd=MaU`Q^p{2Af&=A?b2DrAb z-@u@YT+z2~`kp$N5a5j;G(0At=`!sL~4!Bf-FI zXZ+M?tDId$mZbradb^4R@tLwuWP#f$$h_Z_SJ)_1i4YyS%u2p#>Q3TCvgA!CfSU7L zTKY27f}zy~Tvcgo#pe)vN$!O8DQ%%Osa??Zg6*hVnSu`%MZE! zqIzl1zIZzQ3VCMu{wzzY5y?idTFLN*MnOWDm@qwc;&0Aj(m`j2n24kdvTkxLZ$U^) zz$h_Aq*jEhhnzO8KuXVDU3b`LN{N~JM$am$bQ(@Ol}=W&&Y3AC@C`WI)rb_se5Bh? zXGpM z*G>Ef_Z~dvJ-o#W3p_6vHZd4t3gqk~nBHWPYN?|giu5y58K2$! z$O`6M#Wu4Cc?M~H-WyR1YhGJ@ahlD>$2Uy*+^O_~+oKJu=-ZCps*3B`I*tkAM*bLe zo{IdEFN+CKGqV0Tun!OkBVu#j%4h7cMDoZkL9^uMX&6^;*HO=z@!-*qYdNvXl_(Kx zC1JL2^NnzFRAP?I_U9tMo}OMd*s^gjuxHDc?~gb(KrWNrsN2?vxa#23`f*xHK26Rw z!$CN!&JXj3cnlmVeFLN;9MF=cFswf23X9FJJXVsq(t5@I4S^vZ0VqGj`~+X0DKwZ6 zPc>3Ldo8)O)Vs2 zk=gFHm?Dy72r$VbmFy^$d{0pbJ+g^RIs8#lc~}P1`ya46I5{~9UyBd})<5%LeDCl) z|Gh}pseweN428Uq9FO5WyK0*jljQJI-%dI&AE2&Kk|$OA@J)zGg_Mw$CjafINe;P! zd3IIk=%4jzSXNHP12?0G)P`jPjl$_VV$7XADp?Hu*<)#*HDk)ie0@XVZM9oj8HmsX z97BIiGgJgTc?`#()1p>Eh_xa$6^18I5y^ZYD;*HSx9l#J(St(v3oI2j45d%qiy-Z& zd(Wa5EhbR&WeQR2GOV4LnwqMJ4tj`!{Y>{ca}5#+awW`VGB&D$%naJN!bKnaijbmX^t2l_KN$nz|8xi=O0T?F! z5hkr^vU{eALXi!%bZ~kj_)}u$kG3P*X|C(aaG_BH9O$K1m-5GH=pIWFlJ^M+N})n9 z3~%yrW=-gyPh+&(X1PZh_TsW`6;Jm3u*B1RT^1cF%9=Ms2U2#o_@ry+=H8(bOBFT| z?)=tUxLoWkx-WH7DnMR7_r{DZ#4%FV?=fF0vhxlP%RDHCi;?A59=Jd4yZrT3B(}K( zcUDxh@9ui0%)_i_MdVSKPy_G<1wMv572Ze=hW<_f)qs{UmuVC6ijL3u+lA+V!W2!{ zzw?zAuS0Hl5j4HlJhPfgLWU06>-P)rp4c`P{zV|zv{li zWs=L|)m0vJk&|QnUBx{K8fe@~JVFPB6?vtE4BauWJ8O^}LBgY~(w~v=Sd5s;I_QQi zuj~wg%003+97Z=qjC@Yi$W&1go2d|9GgR zWJJa*QGvgk_J>Q50TT+WW2{KVUl#f)O!D&O{xqjo*+C!4&BCta3Xq<`(cDyDsT^#a zV%vuwelOPKc5ueYhcm5%ylypR^xG;(JJEGhcfqI2vR8Se~18C$0B*(-p>_ywOAgv_rE z??4Ph3!+(!(N1O5$!=2&$swh=`%lnsN2mbGaOlYY03ou&qzv>E)*QxWtWcApS!S(G zZB_e64o6-zZPzzSlF5pl!i>c!J8mc@(y)X-)yB=jQSBP(!O~k34mxJ;Ow_k6%kZViAoZ+Lm_zgbP~} zj?m;7;YoX=0HM&U{iaq7#ZVLLD2uh5D6{6#QJcb`Mv^-qy)tM=Mc)+J;cj;dSZCbF zmk|>_PANcz5fc=eJmlmWJgplsGy2b`Z(dCeKHEk(8`9^!OiWDtOK1Mdr|^8R0%hz5 zWol+-X2(G=5R5;ZZL6j^s)QC9+l!|Aji3zypnv3P-BQjwqjbA20}v}0BSQurE0#PB zD8y@&xh0>q4^Kpz86MfSm1gIy@`!mI4jlS_k6GYoVx{2pbc9-6z#h^zT(zgtD`hn( zWueG}Ei)sr>EF6*qfxdY6_Fug6pW{pF_+w?J+t*kuXe!GEDijIE^t!D1>uGUpP!%G znZMSESkX9R!yr%&971Ae$HdLjvYd|ybre1n6bp9LqHX-UVxQJvofc!P*>OxF7-DDZ z&cMe)VL+yxHHu3R+e-IRu3d*^wkSCIS1?OZGC>w+)%InXAbu#To}uCoB2d63c7P7K z>0}o!HBbzP%`Qtu@?w`Q1sFV(ILa7PcVdn#!8n8^8yfzG!8979KrGZ=H(%DDTd6P+ ziNP-zx?;a*1gTl>S~s15!nE1^qxznnp02L001k0+BVsh3e4P35{5*H?bW$FHNi)br z6mM~=L&S5pbOl45=#^3NbpMzK^;D4)k2}>CZHj7b!UP%`-*+s0Gf$o3*L(yYW|)Pu zel%r~aZE?xYD5*#zCf*fMsk5uUFp>F$0orXgAX?{(Z_&LL|=wG(3zT-)&{k&6GVer z7E@<>gtGRE5ACl$cf7%}%xyLG%Vf152Sbz|P|PrELNI&o`5)v9_p+jCaa({jlR<*` zF~XCx0{Ugcrr(7*TNKrb=SC!LOUZ5nds6f)OpCCqJ=^_{Ryvk-ZK(sPbyKWs=J2hU zvGD*}?fs1eb2_^43^B%YAC9wpOH=1V7D#+G(j$wEB(L!vkJdREI#Qr$+X;i;$Bex4 zQ|&{c15CIlUBYOL8xI(3u@vh82q!llwxp2t*`Og+ogs1jZLYR@apLvgT_22(nn zy>_LP^^NN-6;_lCOk39RNw&k0KiAuvOY&kRIFsbN2 zJV1{DoA@28oW}=-Uww8_0UBJwANufFiwhY;_xtzn$(okwnr~Kdu#V8d8(#~9cKRa5 z9seo)k(r^!7Km+?Y93h{g&iMQP&uBk&AMNk{Fp+-rU|e4K7>rnq=Y}af>nu|1(nS! z6ysSowUPysA3B9J*KBQbN}WZir0@La5N#*`iJK2>$WLiT{F^ApDb+$T9h-P}^=e_; z^h~<9-)$hYcM;=E_CR%(>{B=|UtjMkcg z+H;MP_vy~ObB*=|Z|12+$zu0)G^^z+;^}A$C|S#vJ|vb znWdDQv&1i2@6da0*i;Tt==Eo{o~0@uDnS#6EdTqR@u0UF?iG_^lata!%EJ}|ygNvU zNFHrwRS;p8$s^gfCB_42($QnAavwF4im>gg&K;%Pm7h`8z+Tc39!YNuYtQ*vcbaH74;nJj3K;!e8e zC$YxUpc29Q%R!xVX8zIziAq5-IUBiR1G-|%Ow9NvixfRu>q*o+Y<{6=sL3zHGQx`Q z%mmP3kk%sy>%yST+2j{pA&3d7VJa+jRJ%Me2bkT#*gI%B8+b^hklUNbU5aTY==AGR zoUV|wh%ql;yz+$J2-l`-OYKJs07D24W%OF8{(~*^lF6aGOHzo9klXAca^uzJJ59Sf zs3C#&Ek{STJzt*Ri48G*Jz5R-58`??CP^5m#3&rsoFD6s8bO--)A;y!9E4*oUOIIM zs``AD129IPU8?!saRI=vQ>A4dfrl>p)4FUpH$ytKs0r#P)RSH@vQB7mWRUJSJU;< z1X3%9Mz@yJDV1)@IXwR@iHt@1qi11QSob8>R{(a_OzAj~s~Ea%GS&+H0l!bn?@ zqApUcH0P_1KJKYI4PSK-e{PhnjApd7OC=`tsl<-=(<5RpVdil3wqcy7A)`~mAQ293 zzC(fRV<_%0$|=cPQ%Bsl+9>9}T<|!S%W!St&^RU-|J|XNqx8w6u=qz3V-R5>I4p3& zM5k=`;QLTp_a`IID&fR+>|m#D#Z2Isdd<)OYU`cpD>x`Yr}oc8(4(WFJybIID6Fik zY(bvPXP+?QBOVaFrwb>!O-@Eec6M=bF*z}j7S&IgkDlIH`QGlyM88ghej(zxW6cK_ z=FCk$ko82W(Dat5P^q6|4%XdIi`3w%j`wMM_eqvSD>Li7V4E4*Yswb_-#xwy1Oy=! z2llZ{;VY^}bMvyX=H8S!cSEh(4<*-4@dJ9r)K6b%j4=^~6tX5q*H@gqjI#w*IzNjT zZGV!}qtfwzkS0IeBY#InQA0Z+Z^2w)Gd!LlMHBGa`KNkgps%m*@zvK5;GCpW< zcUbW8YB*+3Y*2}eRhsUn)|2Lrm05N_b(5#Xt$Ae@n0xud2@yaETQc(lgcmWN3X_Ua!$+Zb>gRZYA{{(5zQ6MOUErMk z9kHU+)WU->V*e!W)ZpK4nD&WQz`42>D9d>HG>1+b6Sxn%euZt5IDBC_p;X@P3p2q( zo-9N3@c#X`9z+qOv7*Q;*a@%2#?U1pDuOMS?b@=tT~H6oR{wauY;1k!iG|W=RAm?+ znB!jeY?)xp7(Ein*X@z=S~l}D%haioZa087c5rYQyzNvX86E}`13cre7plJ2wvWc( zYBy#;g)>SPx3|lVt5q`2Ax(_s4qPgCew!m@8D3m#C!A?RbwT-7x@t+MSsdN~WJlHc zhqCcNiM=E?7I&nK;vOAaxZ+SGqFAK4TXOk9P@NPADtKN98eG4@dV4?sE^uFS2`%)= zNS_;3^5#d!TqOWcE+$E7hWj>i2>NCP`TU!WmDl=n`hAEl3ASqQ81`ldS5+hTuj`1l+;Hp8)d7cAbD<5N~6O6H=qhmQl znmdE=2x3|cPxgT6|Iidu*0L+;7f(7#8dvB$11Qhj28i4sBA?V3JyCsz89k6s@6R0n zDMiR^YV-wOSn*}u%_j&M@c^;7LVU``sNM~_5u0w-DF4zALKWH-}B)0LeQP`3ouGrVk6pUzhtt9K z++Qm-nQ=6(qd|koyWz!M!u!X@0+t;c@9X<++n-t%R3om zHSrbBz7?Ou4EFnMBTCbJ7q`)hu2V_fzuiz###o)dnBj{=mm0VhYL6?RV|ltO&T0oi zmuQS=l>8ZUPtmJZAb=mJKm5Y3zqh-9l;CD`IBRy)c23J~I-Q{9C!TNHl9+XSlZS1^ zv&rk1oGJ@VAnap$Mi2(VISxLOq(eVn42~jy5lIqxlK&;MuDo*wij^d@`E2Ltf-%KydTM z5(WUi9jMf*&>3d?SO?Udo7@~9AA5UwJsMkBSPaP-so-tT7RkPNa}5#k0?F|yRB<^R z9xy6l7~C6F^vWu6d*@HJ5>)*D4dLMId_ob9+9!W=lY+Odl{hLL1eGcN?icH4+jk?| za7@zilSoE=et!jPGCJLif<;Cn*aKtmd;ZFzyf_wBw5+X^7MCmx5#+m`e5v z>|ijG<_!?y#j#EPRrr&^V;Tg#kdOy}o$CE|+;GZm($(prbu; zd-SO^&KG|l1m8}7+8UoZkZ%uYnfUJ28O|_ry?Xh^R#ULHJG+Qh6#GNXyNR8Id-?P; z7FqoT@DlHN(&$y0?yIFhBUk_PCLB|HvOh0)Zpra#^|B*usd{5_C%ag_GZeeTe6<+`+q6xZ?4$`fI20M&;p7QD;G* zXw5WO|MkLB^uAoRMgkBxRMO~&8t}&Hnhvcb>u!cFl9bQ|Ppq#hf{s)MI6*A07$YI^ zB8bN+i{Ibua6EVd8XdI;JsaIzeC+Wfgh9KA(3#V7DoBY^8dLx+puWB}wRxGT{RNom za3K5v_r8=Ni`*^sfFr;`;lIgmZqnx_w5?8BJ94`NKxNN1-B<1Mm3Yc1zJ3GeXs-!S z{S3PXuOj@#Fz`{ao<|5hUv{g3?0Yh;ZS_kQ#TizfHN7u0sPCN~q&@ma_)!5!5hBKX z2@E($2Wk~_&qE5^`p~_Lu=CA!OEn!^6tU^$xeMmdL%9|y*0K6efQ+$-@#-A2x!;|t zFC#p0QL584i>?!+&>z;HAr|i-Y-MWy z{I*ITKokZw-Y9G6w)O43Rs5MJ=n^=P!-{(5!Q0UZq&OaB!0z;Ho)|iX%xUUAt1e6ro@4w1;a#ii!Gd4EK2=3hegR&+<5_ zrLC-cgtVgEd-sI-_zZfkjFl~D7kRzy_b~8?-Q{uoLefqZqLe_IXqL@3mpucdts?-S zFaqQ3?99F(H`hJ3Op}s~QA%A4p-7NK-)&HfFSb$V#9*!X*x{Vfp0gja{|MfAnl1N4O}@!_ zOCu~u#IAKSlw7xUm`fIi&<(?~&}ZEu$S+Pk;3^>Z^=!-eah=AiXPed?;z-I9Rr{R{ zTEQyIEi}xbxj+HwXKimw%-Nx){E6-lgK>pRerEB2lMgdXYyWl+uO#M+uPfP zdewNvGYIMuycH|wW2HmlHK=Od@kgr;HNC%V8Vl^OFWS4{49MoO6_MqLz5}>0P{=;8 zA~wm!*ppMpxSL5b*)Lp;0y2^U-kCzkZc-qnvIelB;iA{^6fh-zP=ku3ZV?Oczp=Q-k*N{JmO5rHP3L36)D{K@OgUO3+WQ#2_8LF+A=-_C z8A1n~c`_UUEeKA17ufv+&O4eg?_FtTylA&Wjr{)4Am1}cp;nv%Mfzq1rE5Lf(@LiD zxV|pKs_U9TJ?N}zew@<{sAcced~FuJM~Ng!NuJ91^u$%Xw7hd2haW9Rw8J|FUgt6&6ZTKwkOrfVZugVJ)kI!I+a`I$1%-?~lcudU#M7xj|lN-kbrULrAe$sXP44yMmioPK+$tS&VY zUH&w&jQX-Cn(zwixF_@LaP3PJqjA$M3=6XYkp5WY9dglw@#dD4D(@n|J@g8+rlBV=71Kk7MplRZ8t-bTTbzYYp>J9Cm8v{i00*+V$ zPu!|zSvIHd7C#M)Pk)4rFw2n4oueX#%X>7$7I2zPScq~-O^-7W<%vD3gbaeH#@*u9 zn}5q>-6Hk}n|y8TSTO$q|3fE=-C)_GF!AYve_e6!1+yzK2Y5mG*!|D5rC_tXeWP%R zm9vq?#u3kFXPx9|>br&4URGwec{;qX|D+#D&)T8Nh0f+(`5HoOtUqg9E$x9p$oLT( z_wnO(KSr=tg&ON?w^4NQv9}18cgmmv}eRnhlf}nza-==A zN8-ep4cq2&=?ZCmoi-g2DkfDQ_|+V`;0Jz*%)s>yhG;ZK{xC&i+ie8%x|r}N1KQ|o zHf4Yeow~sE*+mP2n_y(UWeXih$d4Y^w8s9Dn^#+y|$F4u&(u$h%gAx|VTU*72ynotg>5w3J`{}w8$8Z!0zV8;weQ7NTh1XCf#@nL0M_;6F$k$MR? zx99ix*k2Nmg0qDakm5+I5@*^asU!@u=vQ4}wIog?!*3DagK-|Qz=@Szq{j`h(Laa0 zGP#n^tW)CkNk;m{w%wEc#790Gq+9AW)NQ^8R7^<6_fco0`5Y56#{!nMGuzG|;U!%# zmYEsTdfX6Ftspx)TUbo2o0DzNX$&<<94R6cUf0NI>+Ie)C9V9cC^avf`r23)pWm7C z*``0uT0UY&SVS6;I>Q_VBZsg9Qp(xA)s4ghi4>)VLeZ5!)CTszCT+t?@`ZKy?DW~7 zb&+oF#PxSC^%BvfTBqi3TVlp0T>B@tYbu#z)<(BS6Sytm8>%sLi|7ckEp?yso^WmuI(NL=UB2P6j;s$pEQ#oDna|NiA7 zU-i%0^1GANTQVb}hgy?|F*m#}ZnT>?q&aFuf1+o9Hc`XP%$ic+JVTuSJniUVQ-Biv zika|+t%fGVgRZu`sYD$T6B9EFvF>s4A21Za0HhEOUc1*JhHo(;AzSbKs6`9~RY4xr ztnzZl$CG}|;25oe^SI@4(E{Dd_+G@R>9^k@xGT(=(?ticeUA@dVFU;?(Wk9=!+3!)GL9z!+NGEwi_OXu_%^ znW8e-L_1_bZaZ4P7L>vhP^d9)kFoi^&0lR^fWvpf^eAfZ=B|YP2aRs-@%)^{Yj%4P zmTqH1E>WId0}0Ga*Z_#V+6mHpgj~DAgH50llaf5xGO_*q{MI@;I^-ep4KVBv24hif z%*x-a^XXIvb%lSv`sdUe2ZQM`9`T<&`{5HDkQC3m?K<&h&Dx%Ex~h(Tq%}Z}ZOA1j zk&UhFsB_xE$y;=nW$&5$2(!_fY1+eQ1+gno&mKEuSPwI_AL}MKDzy za_zf95o!cWG&=tTI)!BpZ54L01-goS^rX)RtjdB9UG4XcNsM zdl_P{iYX5;ii^q($6RazG6e{(H+x87v5z{L);>ij&PQ3nvfm zQQseslV)u_Q&xg)yZXY9_69i*^g@)_#8XC5UxDABiPYauV8w|egeNB|Ju{_ToA-`3?LuzJ6T z7J&AEUNuwqAv!#H_!x9QBY#<~&D4ql57VcDKvaIqSqtLtNQ!>O$E?Z;y4|$yQ41s^ zg{zOnGz`X)x3(bo!^$xqtYbr|0Dk=ex@_)(HS363DG1lF#_OOq{9(HJZ?Qna7i;Tw zy8gS)A&5+B>sIAO(c7FGDrGi45_6XO^?b7yCvb>6p`c!Buw42NGBof6CsYDSgpf*9 z_LquR0X?iF-}Zi~YR`(LnG;Z5^a;+8nGi6iAP5pZ-0E|F&QJj(R=tCCGA5=6b&5t9R+WO>DK;$4(O2u655Oa)H<| z``gju?QPFpEg>pZr*nqu0g770S*NBM+k)=P+Il3rXrD^-Y%FA$s$k3AdkeZ2d*3bkgt;JA zVpibK+aKh)^>}>)^4WZ?PfDF+*P67zl$_{`%X|*G3?i*Y&U~(Ze8(hyg;{+GpG21b zVIotCW5}V*lCvMD6Kd$wV$bOnKPK6@ zHGXLQh?sZ9wO!yEuW+Oe8$NSSpC-q&3~2a0xp;{9d=eaU04+@v9zoqVO+E2&JlsK& zD+0AHi!-Rrl)m2A*LMcFp@*CBo$q}DF#Vfiuu(3WAMq8Gp9It2HD%cdE7@DPMi;BP zOmIR#DWZ*o9fMGuMbKdqny8WD!je9XP<eDvQ~ymw@iS4fF5X?>%^R z9%tU`Ces2r4!ooI&ZbC+Y>?$2jb}8c-$QSd%_FfWeBaK?)wD7 zuovsvy5u~2#BLeecYTsfzT-}el!gzBHmsFD{$$=LXz2D~*Y+C0ZtAzkw4ju?anCxn z8Tjer(CB^X-)qmiSq6p?4s620y1BK$H zpV1J^<1}S=;f9abgH@)j1lDO6Nms+*g%kKR=8M)&XU_&zSU39Kw(fy#yX!xnH5kc> z5k=g-I+K8Xbi&r*F~Kzc(gztA!%g?ZyxNSikX0_&U*|vmgGyIIJc)wmz>3s}*XA_I zQp5|ExsEm|y$V1lv@}b0iNm2VBm4^+ac62u>&-w z%Y33ubCE&h1){glNJOX!arT<!(Nw7RZ%3gkTdKa2zN6(;|g}xL0T(-3~IW zck0%=*GE2mfp=)oL+$&g@+#mDiRsh(0$1?(#Q}QYkypFR zITLm>QN51L3?yB^EBfHwSEx@>uT8?F{#){llLzz#`_5jO21ODc#Z!N)TQwLmM_?&U z_`)tf!KW>%+^sr1czG^&28LCSXEH9(f73OTtITq2mCuS{OjqJbOwuTUGI}47wyz;~ z-HJ1kEjrU;KsLQZAVitbNUC|H33@pZFIic)DqJIJCjQYOL)W#mw9tejG%t2JjRK_VxHgj>RnW_D zG}0U;1lgVjZd-@pBqb^qOwIO$nqOdrh-OckM)2bX&hgHNFsTbQYm&jZ)BTiho;eSr zh}Z{6Kefw*2`~~Ot;?=Nlg2aIT#rb-FouVU;!8&UjYWo$(5>KY2nw~xnnxZM3Pt}jKH->9;jab^zdQApV=@$?>>3i+=|z-A zGG-G6hw^x%o0aD=v3@lbjL>6vlB7s?dE%zkPb!N{0EpFHEpz-J269FBkQ;g%x!^T7 z*T|sL!C+b{+6lU^ZIAEWcO9p#M*}Bi@&J^bcQBshA0t;1lS#XzZLcL^b)WkYi#k%-mx~%mE!5&N!F|nCx=Jz6AirI`e%0$ zu)zE@AWuF3_6`rs5a22dczf(gtjPDze*XbJz3^pR%VclB9`3w*zbyI;VQcQ6dRF}| zDLO7rr*3awH?B;N9Nqa{DI_?80o<}2N;qK+EZ-Vv1rz7It3RLCkDGL9X>mVHWY{eV z#-F8s&9G0v9ZF+Jp^Cyn?A%LzFeIbE*XFK90g5oq@>Kt*iL=kM~C12GLtiii}3|ce}hBj!QLR zGlbnA$US#)Y0O^|yYIM~^+@Ar6R1{ALhG{I8?9WXb(v%42+FX8jt;L4Vp`bpsjo!} zk^*<>+m3hR5QLx-(+FP}V4J%Giy3-ZpGADP!bF@OH-4?uA%Y*ByM85$#AAmCGuO1o z(x5EgRy#EuG>osfUwiJVNmQ*!P+TdCm1)M%#9OnnOdA;VB3*qauf`1v3;VUv783I3 z4+=L&1_hdR>ss2+FOGqiugf2I*dni2WNcj*Lh-W*RCM%w&aVeOLzQ9T!^)q`4z=1` z2ULCDOa9*rP`0qB{mOa|aR2V&Z=0ei>o%Bf*B0oG-SWlagPET3%gb_;EH{t9KxL&F z%Vha-VCI*5CaX*#dvY=g#(v}|BKtN8*Onp>NNj8oxklD*a(Q`q8^UZY@AOBV6EjIv z_gq?GJn5Zw>h9iGVZ1z>tP{(^4eohX^l$fK6g=Nm=n8nD+3_eLVh}OP@JY;CH?{aw z7yedRcT7B0L(aH%6Wbi{JD4O>>j+Tk)n!--QT`P_4-8LC+P zZGtFrn0-~zKDU4~Dj2VNB#GvvjJRr}&)p9}otw-@V2s#KM zC{-$%Z(uFtv9z%ktqm?2cw~%0OO0nUYLhSq7l%|E!e$ezSK<#*7_e$=j34>nhoD@d zlxOXXvLtDYR)(+>;QAizR+}dt{0=w1_q_~^j?kE2#C047h6gxv^aKw-@NKm8*nRUY z?ELU9YUK(^k}->nR(Pc{)k=j#MVvS_%?tbYv;Xh^feq`|am|gp@hcUgr3S&m0;@M| z!6JBe&%<2%_ID5kA@y26@4oq`IWqlCPMr;S@H-0T1Zu!yD{vyQG-V4RJyb*BhcH!h zFy|CIDs@JOeWuFul(oaDS&}?UOlzM_@*k}xQ}#N zJoAty_2Gim72Hb1%=}T}wAVCzS^vQEhDJq^O_ef9lDzINK3@TfEuawY3TT%Cxm%_b zJ(5osNn0*_YqK`2+L#RQ&zZxf`ywb1L~?l8nxc(Uk!m(s4ZyODBo-9e`D=Z3o_gpZ zMpv(8%>|oToSDa~_zVtD@YTQh94{Ywg}?mrf5p|BzyI4WaQyg5W~R?D+gxO(+RlH;|@jyg~umoeq6rNF2vqVH!XfgIqRB{`|W)GZH$`| zNNM>7_#nXa86*Dp{F$Ur|#cD}; z6k3U3WH{waOS2Th#At`Ha>CJbDQ8=t2$+vU21*{=1_v>5fDqX=ot&IpH99&vGCe&# zvqAyFC?E<0;y4Df*w=9!TuHmf3Tm?)sq~5`4uj?@+yXh zMwwW1DF=@|4FiTmNd{a9nhvUEnOp<&bAo8r;slu^?Dj#Bz*5UFX<=#}s{MkBJ3u7H zxoZ0wZt35^;F^nBwR)1RYd5fVYzwY8K$1kbuFK@)0LJ^9ae7TuE-#L_0c9p=%t;YFIV)u16%deTdNp<%%#K5w=Bp zc4Nuf&%aUgS6_K0pZYhy z&dBH}3yVwmr4o-l{uFoIejB^rc?SocdXnqkc{{G_5Cs9-F5AiD_kWwMJ9glgTt>&Y zGc;78sX~;o1R?ByHKvuq=8GY0Kq-OMeUfVAQ(ia7NPPnnwY6*<-Nf28moYK1iiy$H z3=OTLQmWv2ezz-|QWk9#)@Ik(^E?Iz2dkSlZQ69;z=1t06d;Nd;y58q6OtssYSSH7 z?Bp#vt+i;Sh|?6Es%`?!nk;lHj#<7B7rz$@)l~*#vN_~tc?K}cvh{xUo;SJTS!>Y6 z-)&xylAkZL23eXn`%IQnrOZpu?PcpFms0XQblImq(9h!!KEy3|+(Cb}$`|hc601fg zkU)KKfP23FkKBLnH>g+pShHqL?oCQCilL#RT?8CHe2CBd$}jWD&-^NzwrnPeVm#mF zu_vD7UGKV+qp!Zg%&C)X+`5%03>g?2W@u!D)5njq<-&^?8C{PMRiaiv6oIfln^sjA z7#-n)i!NmQ`!+E-vYE-ziy0msXRv>idUX|^#kem9h11hq=31hMdcE95`FotTaMjFMm8;iX6BOm6$@9v@GIyept3=Z<>o`<>r-g{UzK2DY{$=c)# zYY~o1(GN&S!NlYmk~rqGfA+`xt6%zM)~(+_Ck$vVHF)jtVXnIFI-Yv?VJ^JnlKeAj zF1Yw&Ufj2jEf;O4Uhm_k>p#YZtt0deZDOqN0#;A1p|3uG>(+Zh)^v$BScA42VaSGJ zyAlT%rJ&R4q>VvC1)W)fp3-C-iekSn6v^7IR^){x0_hZ6 zNH(lG^YSG^7^LZzmUd?j*e+3{x6R0GFG5(0<2W=MOY{%)vua|T=2C-7t;#D0USNFP zIy~29dg=^=qr>#q>onU99=P{gj0}&^ZU-op;w26`)Zj^+l7n^0hF(dFmWE2HOv(58 z);I3v)4%rXNLNxRl{j-|iftEe!z-0&w^|Gg4Q5W*x^?V-=4s+6#&O`vt3J$)H{A#p zw9Yc2)>@QNm{jAsE{-GfE!80i0^4e}I`i}MiziQ>oI7#i#MJTQ$4?$Rc5Le8$&)9i zrlw9UE-o&#+wDbb?IKw@n6}owZhF`X1xV9`G)YKQuYAm|_*OW4c3C)=XA8-i(r2`; zycNu{FjC}%ih}=V=_!>ZyPFFJk+oTvSFnS!(2}lzyGjHg@@=F0nTq4cqY;P2xp`KN zjZv*uN#ZEW&dtqn(T>YFJ9Cy=y`O>p0oHBWz+e2~AEH%CDkQB|o0_d~syRixLm@^$ zgcfTAe&{nkGm3+towgYn8RhKs6o(ETwY%xB|!ZQA*KlHlu}wh1T@+^!%w)r)G{HKYseiks~KgoH#Kx zH8pj5W@hGeqtR$+t(!oLY@^aPy957OYvsU*G$mCEt#mI8%Z0Z*JuLGpEJWe-Wse;M z)+vCTl_}(|A5dt6T~-#>6{zTX?<+ti0j2kY|*yqpk8&7_gfB2i< zhtmOZDP~&Cv3_O^N(Tf{h+iu4!t?vM{f;}ZR#Q$(1g$nhBSXwjpQYq^SfweKOZ4~k zktQ+aYL!N#5%1l*clykkGiQ$-J2rjv=+To$j~+cXH8pj1dU|?let!OJk|Z6V_%iu5 z_-70HpQQj=8?@4>GTwdFWVxM1@f8GTsNJzp?o3$IR!Sg(7wJLEEA%&%0ui-cj7i`;3 zx#Tl9>^;#VZq^V+LWR$tnr}10|%08Zy42_J^jv_|K#(3$)7Y}~w)1Ug;Mx!xJ zHrycsVr#Q$uJ)hG%Kg7sE3!Rtl9H-4gL#($EwGXoV9A9|-t#A`{K&(*q9(9+yvWUn zfUXjme5)wt`1H_0u}l%Ncj|KQa-A}{1DH2??Y>DdYey9I3fSC%()14u;CU|Pa+$JM zVsvB}4Ajdt4j+Ay$#s)dd>`p~nO|Wv9xisoa%|ro`u@W;%&7f{e+9w0B}88pQi!|| zi6m8--_q#>IIfH9O7=g$k1z@l)-pGJ7T0wtSIXJ{uN83=XBJAOokpXv- ktzEL# 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 literal 0 HcmV?d00001 diff --git a/wp-includes/js/tinymce/plugins/wpgallery/img/t.gif b/wp-includes/js/tinymce/plugins/wpgallery/img/t.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/wp-includes/js/tinymce/plugins/wpgallery/js/gallery.js b/wp-includes/js/tinymce/plugins/wpgallery/js/gallery.js new file mode 100644 index 000000000..0b8daf480 --- /dev/null +++ b/wp-includes/js/tinymce/plugins/wpgallery/js/gallery.js @@ -0,0 +1,165 @@ + +var tinymce = null, tinyMCEPopup, tinyMCE; + +tinyMCEPopup = { + init: function() { + var t = this, w, ti, li, q, i, it; + + li = ('' + document.location.search).replace(/^\?/, '').split('&'); + q = {}; + for (i=0; i' ); + } + }, + + I : function(e) { + return document.getElementById(e); + }, + + init : function() { + var ed = tinyMCEPopup.editor, h; + + h = document.body.innerHTML; + + // Replace a=x with a="x" in IE + if (tinymce.isIE) + h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"') + + document.body.innerHTML = ed.translate(h); + window.setTimeout( function(){wpgallery.setup();}, 100 ); + }, + + setup : function() { + var t = this, a, f = document.forms[0], ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom; + document.dir = tinyMCEPopup.editor.getParam('directionality',''); + + tinyMCEPopup.restoreSelection(); + el = ed.selection.getNode(); + if (el.nodeName != 'IMG') return; + + a = ed.dom.getAttrib(el, 'title'); + a = ed.dom.decode(a); + + if ( a ) { + var columns = a.match(/columns=['"]([0-9]+)['"]/), link = a.match(/link=['"]([^'"]+)['"]/i); + var imgwidth = a.match(/imgwidth=['"]([0-9]+)['"]/), order = a.match(/order=['"]([^'"]+)['"]/i); + var orderby = a.match(/orderby=['"]([^'"]+)['"]/i), all = ''; + + 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]; + if ( imgwidth && imgwidth[1] ) t.I('imgwidth').value = imgwidth[1]; + } + + document.body.style.display = ''; + }, + + update : function() { + var t = this, ed = tinyMCEPopup.editor, el, all; + + tinyMCEPopup.restoreSelection(); + el = ed.selection.getNode(); + + if (el.nodeName != 'IMG') return; + + all = ed.dom.decode(ed.dom.getAttrib(el, 'title')); + all = all.substr(0, all.lastIndexOf(']')); + all = all.replace(/\s*(order|link|columns|orderby|imgwidth)=['"]([^'"]+)['"]/gi, ''); + + if ( t.I('linkto-file').checked ) + all += ' link="file"'; + + if ( t.I('order-desc').checked ) + all += ' order="DESC"'; + + if ( t.I('columns').value != 3 ) + all += ' columns="'+t.I('columns').value+'"'; + + if ( t.I('orderby').value != 'menu_order' ) + all += ' orderby="'+t.I('orderby').value+'"'; + + if ( t.I('imgwidth').value ) + all += ' imgwidth="'+t.I('imgwidth').value+'"'; + + all += ']'; + + ed.dom.setAttrib(el, 'title', all); + tinyMCEPopup.close(); + } +}; + +window.onload = function(){wpgallery.init();} +wpgallery.preInit(); diff --git a/wp-includes/js/tinymce/wordpress.css b/wp-includes/js/tinymce/wordpress.css index 0bc5f5521..eaf9a58cc 100644 --- a/wp-includes/js/tinymce/wordpress.css +++ b/wp-includes/js/tinymce/wordpress.css @@ -40,6 +40,13 @@ dl.aligncenter { margin: 0; } +img.wpGallery { + border: 1px dotted #cc0000; + background: #ffffcc url("plugins/wpgallery/img/gallery.png") no-repeat scroll center center; + width: 99%; + height: 250px; +} + body.mceContentBody { background: #fff; color: #000; diff --git a/wp-includes/media.php b/wp-includes/media.php index 0c33ec64c..d0dab99f6 100644 --- a/wp-includes/media.php +++ b/wp-includes/media.php @@ -522,15 +522,16 @@ function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = * @param int $attachment_id Image attachment ID. * @param string $size Optional, default is 'thumbnail'. * @param bool $icon Optional, default is false. Whether it is an icon. + * @param int $imgwidth Override image width. * @return string HTML img element or empty string on failure. */ -function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false) { +function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = false, $imgwidth = false) { $html = ''; $image = wp_get_attachment_image_src($attachment_id, $size, $icon); if ( $image ) { list($src, $width, $height) = $image; - $hwstring = image_hwstring($width, $height); + $hwstring = $imgwidth ? image_hwstring($imgwidth, '') : image_hwstring($width, $height); if ( is_array($size) ) $size = join('x', $size); $html = ''; @@ -618,6 +619,7 @@ function gallery_shortcode($attr) { 'captiontag' => 'dd', 'columns' => 3, 'size' => 'thumbnail', + 'imgwidth' => '' ), $attr)); $id = intval($id); @@ -637,6 +639,7 @@ function gallery_shortcode($attr) { $captiontag = tag_escape($captiontag); $columns = intval($columns); $itemwidth = $columns > 0 ? floor(100/$columns) : 100; + $imgwidth = isset($imgwidth) && (int) $imgwidth ? $imgwidth : false; $output = apply_filters('gallery_style', "