Ticket #6645: image-align-classes.patch
| File image-align-classes.patch, 7.3 KB (added by , 18 years ago) |
|---|
-
wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js
11 11 tinymce.create('tinymce.plugins.WordPress', { 12 12 init : function(ed, url) { 13 13 var t = this, tbId = ed.getParam('wordpress_adv_toolbar', 'toolbar2'); 14 var moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />';15 var nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';14 var moreHTML = '<img src="' + url + '/img/trans.gif" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />'; 15 var nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />'; 16 16 17 17 if ( tinymce.util.Cookie.get('kitchenSink') == '1' ) 18 18 ed.settings.wordpress_adv_hidden = 0; … … 42 42 inline : 1 43 43 }); 44 44 }); 45 45 46 46 ed.addCommand('WP_Adv', function() { 47 47 var id = ed.controlManager.get(tbId).id, cm = ed.controlManager, cook = tinymce.util.Cookie, date; 48 48 49 49 date = new Date(); 50 date.setTime(date.getTime()+(10*365*24*60*60*1000));51 50 date.setTime(date.getTime()+(10*365*24*60*60*1000)); 51 52 52 if (DOM.isHidden(id)) { 53 53 cm.setActive('wp_adv', 1); 54 54 DOM.show(id); … … 89 89 cmd : 'WP_Adv' 90 90 }); 91 91 92 // Add class "alignleft" or "alignright" when selecting align for images. 92 // Add class "alignleft", "alignright" and "aligncenter" when selecting align for images. 93 ed.onExecCommand.add(function( editor, cmd ) { 94 var node, bl, dom = editor.dom; 95 96 if ( 'JustifyCenter' == cmd ) { 97 if ( ( node = editor.selection.getNode() ) && node.nodeName == 'IMG' ) { 98 if ( ! dom.hasClass( node, "aligncenter" ) && ( bl = editor.forceBlocks.getParentBlock(node) ) && bl.childNodes.length == 1 ) 99 dom.setStyle(bl, 'text-align', ''); 100 } 101 editor.execCommand('mceRepaint'); 102 } 103 }); 104 93 105 ed.onBeforeExecCommand.add(function( editor, cmd ) { 94 var node, dir, xdir ;95 106 var node, dir, xdir, bl, dom = editor.dom; 107 96 108 if ( ( cmd.indexOf('Justify') != -1 ) && ( node = editor.selection.getNode() ) ) { 97 if ( node.nodeName !== 'IMG' ) return;109 if ( 'JustifyFull' == cmd || node.nodeName !== 'IMG' ) return; 98 110 dir = cmd.substring(7).toLowerCase(); 99 if ( 'JustifyCenter' == cmd || editor.queryCommandState( cmd ) ) { 100 editor.dom.removeClass( node, "alignleft" ); 101 editor.dom.removeClass( node, "alignright" ); 111 112 if ( editor.queryCommandState( cmd ) ) { 113 dom.removeClass( node, "alignleft" ); 114 dom.removeClass( node, "alignright" ); 115 dom.removeClass( node, "aligncenter" ); 116 } else if ( 'JustifyCenter' == cmd ) { 117 dom.removeClass( node, "alignleft" ); 118 dom.removeClass( node, "alignright" ); 119 120 if ( dom.hasClass( node, "aligncenter" ) ) { 121 dom.removeClass( node, "aligncenter" ); 122 if ( ( bl = editor.forceBlocks.getParentBlock(node) ) && bl.childNodes.length == 1 && tinymce.isGecko ) 123 editor.selection.select(bl.firstChild); 124 } else dom.addClass( node, "aligncenter" ); 125 102 126 } else { 103 127 xdir = ( dir == 'left' ) ? 'right' : 'left'; 104 editor.dom.removeClass( node, "align"+xdir ); 105 editor.dom.addClass( node, "align"+dir ); 128 dom.removeClass( node, "aligncenter" ); 129 dom.removeClass( node, "align"+xdir ); 130 dom.addClass( node, "align"+dir ); 106 131 } 107 132 } 108 133 }); 109 134 110 135 // Add listeners to handle more break 111 136 t._handleMoreBreak(ed, url); 112 137 113 138 // Add custom shortcuts 114 139 ed.addShortcut('alt+shift+c', ed.getLang('justifycenter_desc'), 'JustifyCenter'); 115 140 ed.addShortcut('alt+shift+r', ed.getLang('justifyright_desc'), 'JustifyRight'); … … 157 182 158 183 _handleMoreBreak : function(ed, url) { 159 184 var moreHTML = '<img src="' + url + '/img/trans.gif" alt="$1" class="mceWPmore mceItemNoResize" title="'+ed.getLang('wordpress.wp_more_alt')+'" />'; 160 var nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />';185 var nextpageHTML = '<img src="' + url + '/img/trans.gif" class="mceWPnextpage mceItemNoResize" title="'+ed.getLang('wordpress.wp_page_alt')+'" />'; 161 186 162 187 // Load plugin specific CSS into editor 163 188 ed.onInit.add(function() { … … 169 194 if (ed.theme.onResolveName) { 170 195 ed.theme.onResolveName.add(function(th, o) { 171 196 if (o.node.nodeName == 'IMG') { 172 if ( ed.dom.hasClass(o.node, 'mceWPmore') )173 o.name = 'wpmore';174 if ( ed.dom.hasClass(o.node, 'mceWPnextpage') )175 o.name = 'wppage';176 }177 197 if ( ed.dom.hasClass(o.node, 'mceWPmore') ) 198 o.name = 'wpmore'; 199 if ( ed.dom.hasClass(o.node, 'mceWPnextpage') ) 200 o.name = 'wppage'; 201 } 202 178 203 }); 179 204 } 180 205 }); … … 190 215 if (o.get) 191 216 o.content = o.content.replace(/<img[^>]+>/g, function(im) { 192 217 if (im.indexOf('class="mceWPmore') !== -1) { 193 var m; 194 var moretext = (m = im.match(/alt="(.*?)"/)) ? m[1] : ''; 218 var m, moretext = (m = im.match(/alt="(.*?)"/)) ? m[1] : ''; 219 im = '<!--more'+moretext+'-->'; 220 } 221 if (im.indexOf('class="mceWPnextpage') !== -1) 222 im = '<!--nextpage-->'; 195 223 196 im = '<!--more'+moretext+'-->'; 197 } 198 if (im.indexOf('class="mceWPnextpage') !== -1) 199 im = '<!--nextpage-->'; 200 201 return im; 224 return im; 202 225 }); 203 226 }); 204 227 … … 212 235 213 236 // Register plugin 214 237 tinymce.PluginManager.add('wordpress', tinymce.plugins.WordPress); 215 })(); 216 No newline at end of file 238 })(); -
wp-includes/js/tinymce/themes/advanced/js/image.js
108 108 // Handle align 109 109 v = getSelectValue(f, 'align'); 110 110 cls = f.class_name.value || ''; 111 cls = cls ? cls.replace(/alignright\s*|alignleft\s* /g, '') : '';111 cls = cls ? cls.replace(/alignright\s*|alignleft\s*|aligncenter\s*/g, '') : ''; 112 112 cls = cls ? cls.replace(/^\s*(.+?)\s*$/, '$1') : ''; 113 113 if (v) { 114 114 if (v == 'left' || v == 'right') { -
wp-includes/js/tinymce/wordpress.css
1 1 /* This file contains the CSS data for the editable area(iframe) of TinyMCE */ 2 2 3 .aligncenter { 4 display: block; 5 margin-left: auto; 6 margin-right: auto; 7 } 8 9 .alignleft { 10 float: left; 11 } 12 13 .alignright { 14 float: right; 15 } 16 3 17 body.mceContentBody { 4 18 background: #fff; 5 19 color: #000;