WordPress.org

Make WordPress Core

Changeset 8239


Ignore:
Timestamp:
07/02/2008 06:41:11 PM (10 years ago)
Author:
ryan
Message:

Image captions from azaozz. see #6812

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/gears-manifest.php

    r8204 r8239  
    6565{
    6666"betaManifestVersion" : 1,
    67 "version" : "<?php echo $man_version; ?>_20080626",
     67"version" : "<?php echo $man_version; ?>_20080701",
    6868"entries" : [
    6969<?php echo $defaults; ?>
  • trunk/wp-admin/includes/media.php

    r8201 r8239  
    6262    return $html;
    6363}
     64
     65function image_add_caption( $html, $id, $alt, $title, $align, $url, $size ) {
     66
     67    if ( empty($alt) ) return $html;
     68    $id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
     69
     70    preg_match( '/width="([0-9]+)/', $html, $matches );
     71    if ( ! isset($matches[1]) ) return $html;
     72    $width = $matches[1];
     73
     74    $html = preg_replace( '/align[^\s\'"]+\s?/', '', $html );
     75    if ( empty($align) ) $align = 'none';
     76
     77    $shcode = '[wp_caption id="' . $id . '" align="align' . $align
     78    . '" width="' . $width . '" caption="' . $alt . '"]' . $html . '[/wp_caption]';
     79
     80    return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
     81}
     82add_filter( 'image_send_to_editor', 'image_add_caption', 20, 7 );
    6483
    6584function media_send_to_editor($html) {
  • trunk/wp-admin/js/editor.js

    r7716 r8239  
    5353        content = content.replace(new RegExp('\\s*<div', 'mg'), '\n<div');
    5454        content = content.replace(new RegExp('</div>\\s*', 'mg'), '</div>\n');
     55        content = content.replace(new RegExp('\\s*\\[wp_caption([^\\[]+)\\[/wp_caption\\]\\s*', 'gi'), '\n\n[wp_caption$1[/wp_caption]\n\n');
    5556
    5657        var blocklist2 = 'blockquote|ul|ol|li|table|thead|tr|th|td|h[1-6]|pre';
     
    7071        // Trim whitespace
    7172        content = content.replace(new RegExp('^\\s*', ''), '');
    72         content = content.replace(new RegExp('\\s*$', ''), '');
     73        content = content.replace(new RegExp('[\\s\\u00a0]*$', ''), '');
    7374
    7475        // put back the line breaks in pre|script
     
    165166        pee = pee.replace(new RegExp('(</?(?:'+blocklist+')[^>]*>)\\s*<br />', 'gi'), "$1");
    166167        pee = pee.replace(new RegExp('<br />(\\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)', 'gi'), '$1');
     168        pee = pee.replace(new RegExp('(?:<p>|<br ?/?>)*\\s*\\[wp_caption([^\\[]+)\\[/wp_caption\\]\\s*(?:</p>|<br ?/?>)*', 'gi'), '[wp_caption$1[/wp_caption]');
    167169        // pee = pee.replace(new RegExp('^((?:&nbsp;)*)\\s', 'mg'), '$1&nbsp;');
    168170
  • trunk/wp-admin/js/media-upload.js

    r8194 r8239  
    77
    88        ed.execCommand('mceInsertContent', false, h);
     9        ed.execCommand('mceCleanup');
    910    } else
    1011        edInsertContent(edCanvas, h);
  • trunk/wp-content/themes/classic/style.css

    r7361 r8239  
    320320    text-transform: capitalize;
    321321}
     322
     323/* Captions & aligment */
     324.aligncenter,
     325dl.aligncenter {
     326    display: block;
     327    margin-left: auto;
     328    margin-right: auto;
     329}
     330
     331.alignleft {
     332    float: left;
     333}
     334
     335.alignright {
     336    float: right;
     337}
     338
     339.wp_caption {
     340    border: 1px solid #ddd;
     341    text-align: center;
     342    background-color: #f3f3f3;
     343    padding-top: 4px;
     344    margin: 10px;
     345    -moz-border-radius: 3px;
     346    -khtml-border-radius: 3px;
     347    -webkit-border-radius: 3px;
     348    border-radius: 3px;
     349}
     350
     351.wp_caption img {
     352    margin: 0;
     353    padding: 0;
     354    border: 0 none;
     355}
     356
     357.wp_caption_dd {
     358    font-size: 11px;
     359    line-height: 17px;
     360    padding: 0 4px 5px;
     361    margin: 0;
     362}
     363/* End captions & aligment */
  • trunk/wp-content/themes/default/style.css

    r7883 r8239  
    639639
    640640
     641/* Captions */
     642.aligncenter,
     643dl.aligncenter {
     644    display: block;
     645    margin-left: auto;
     646    margin-right: auto;
     647}
     648
     649.wp_caption {
     650    border: 1px solid #ddd;
     651    text-align: center;
     652    background-color: #f3f3f3;
     653    padding-top: 4px;
     654    margin: 10px;
     655    -moz-border-radius: 3px;
     656    -khtml-border-radius: 3px;
     657    -webkit-border-radius: 3px;
     658    border-radius: 3px;
     659}
     660
     661.wp_caption img {
     662    margin: 0;
     663    padding: 0;
     664    border: 0 none;
     665}
     666
     667.wp_caption_dd {
     668    font-size: 11px;
     669    line-height: 17px;
     670    padding: 0 4px 5px;
     671    margin: 0;
     672}
     673/* End captions */
     674
     675
    641676/* "Daisy, Daisy, give me your answer do. I'm half crazy all for the love of you.
    642677    It won't be a stylish marriage, I can't afford a carriage.
  • trunk/wp-includes/js/tinymce/langs/wp-langs.php

    r8167 r8239  
    401401tinyMCE.addI18n("' . $language . '.wpeditimage",{
    402402edit_img:"' . mce_escape( __('Edit Image') )  . '",
     403del_img:"' . mce_escape( __('Delete Image') )  . '",
    403404adv_settings:"' . mce_escape( __('Advanced Settings') )  . '",
    404405none:"' . mce_escape( __('None') )  . '",
  • trunk/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js

    r8167 r8239  
    3535
    3636            ed.onMouseUp.add(function(ed, e) {
    37                 if ( tinymce.isOpera )
    38                     ed.plugins.wpeditimage.showButtons(e);
     37                if ( ! tinymce.isOpera ) return;
     38                if ( e.target.nodeName == 'IMG' )
     39                    ed.plugins.wpeditimage.showButtons(e.target);
    3940            });
    4041
    4142            ed.onMouseDown.add(function(ed, e) {
    42                 if ( tinymce.isOpera ) return;
    43                 ed.plugins.wpeditimage.showButtons(e);
    44             });
    45 /*
    46             ed.onSetContent.add(function() {
    47                 t._fixCenter(ed.getBody());
    48             });
    49 
    50             ed.onPreProcess.add(function(ed, o) {
    51                 if (o.set)
    52                     t._fixCenter(o.node);
    53 
     43                if ( tinymce.isOpera || e.target.nodeName != 'IMG' ) {
     44                    t.hideButtons();
     45                    return;
     46                }
     47                ed.plugins.wpeditimage.showButtons(e.target);
     48            });
     49
     50            ed.onKeyPress.add(function(ed, e) {
     51                var DL, DIV;
     52
     53                if ( e.keyCode == 13 && (DL = ed.dom.getParent(ed.selection.getNode(), 'DL')) ) {
     54                    var P = ed.dom.create('p', {}, '&nbsp;');
     55                    if ( (DIV = DL.parentNode) && DIV.nodeName == 'DIV' )
     56                        ed.dom.insertAfter( P, DIV );
     57                    else ed.dom.insertAfter( P, DL );
     58
     59                    tinymce.dom.Event.cancel(e);
     60                    ed.selection.select(P);
     61                    return false;
     62                }
     63            });
     64
     65            ed.onBeforeSetContent.add(function(ed, o) {
     66                o.content = t._do_shcode(o.content);
     67            });
     68
     69            ed.onPostProcess.add(function(ed, o) {
    5470                if (o.get)
    55                     ed.dom.removeClass(ed.dom.select('p', o.node), 'mce_iecenter');
    56             });
    57 */
     71                    o.content = t._get_shcode(o.content);
     72            });
     73        },
     74
     75        _do_shcode : function(co) {
     76            return co.replace(/\[wp_caption([^\]]+)\]([\s\S]+?)\[\/wp_caption\][\s\u00a0]*/g, function(a,b,c){
     77                var id = b.match(/id=['"]([^'"]+)/), cls = b.match(/align=['"]([^'"]+)/);
     78                var w = b.match(/width=['"]([0-9]+)/), cap = b.match(/caption=['"]([^'"]+)/);
     79
     80                id = ( id && id[1] ) ? id[1] : '';
     81                cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
     82                w = ( w && w[1] ) ? w[1] : '';
     83                cap = ( cap && cap[1] ) ? cap[1] : '';
     84                if ( ! w || ! cap ) return c;
     85               
     86                var div_cls = (cls == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
     87
     88                return '<div class="'+div_cls+'"><dl id="'+id+'" class="wp_caption '+cls+'" style="width: '+(10+parseInt(w))+
     89                'px"><dt class="wp_caption_dt">'+c+'</dt><dd class="wp_caption_dd">'+cap+'</dd></dl></div>';
     90            });
     91        },
     92
     93        _get_shcode : function(co) {
     94            return co.replace(/<div class="mceTemp[^"]*">\s*<dl([^>]+)>\s*<dt[^>]+>([\s\S]+?)<\/dt>\s*<dd[^>]+>([^<]+)<\/dd>\s*<\/dl>\s*<\/div>\s*/g, function(a,b,c,cap){
     95                var id = b.match(/id=['"]([^'"]+)/), cls = b.match(/class=['"]([^'"]+)/);
     96                var w = c.match(/width=['"]([0-9]+)/);
     97
     98                id = ( id && id[1] ) ? id[1] : '';
     99                cls = ( cls && cls[1] ) ? cls[1] : 'alignnone';
     100                w = ( w && w[1] ) ? w[1] : '';
     101
     102                if ( ! w || ! cap ) return c;
     103                cls = cls ? cls.match(/align[^ '"]+/) : '';
     104
     105                return '[wp_caption id="'+id+'" align="'+cls+'" width="'+w+'" caption="'+cap+'"]'+c+'[/wp_caption]';
     106            });
    58107        },
    59108
     
    72121        },
    73122
    74         showButtons : function(e) {
    75             var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y, el = e.target;
    76 
    77             t.hideButtons();
    78             if (el.nodeName == 'IMG') {
    79                 if (ed.dom.getAttrib(el, 'class').indexOf('mceItem') != -1)
    80                     return;
    81 
    82                 vp = ed.dom.getViewPort(ed.getWin());
    83                 p1 = DOM.getPos(ed.getContentAreaContainer());
    84                 p2 = ed.dom.getPos(el);
    85 
    86                 X = Math.max(p2.x - vp.x, 0) + p1.x;
    87                 Y = Math.max(p2.y - vp.y, 0) + p1.y;
    88 
    89                 DOM.setStyles('wp_editbtns', {
    90                     'top' : Y+5+'px',
    91                     'left' : X+5+'px',
    92                     'display' : 'block'
    93                 });
    94 
    95                 t.btnsTout = window.setTimeout( function(){ed.plugins.wpeditimage.hideButtons();}, 5000 );
    96             }
     123        showButtons : function(n) {
     124            var t = this, ed = tinyMCE.activeEditor, p1, p2, vp, DOM = tinymce.DOM, X, Y;
     125
     126            if (ed.dom.getAttrib(n, 'class').indexOf('mceItem') != -1)
     127                return;
     128
     129            vp = ed.dom.getViewPort(ed.getWin());
     130            p1 = DOM.getPos(ed.getContentAreaContainer());
     131            p2 = ed.dom.getPos(n);
     132
     133            X = Math.max(p2.x - vp.x, 0) + p1.x;
     134            Y = Math.max(p2.y - vp.y, 0) + p1.y;
     135
     136            DOM.setStyles('wp_editbtns', {
     137                'top' : Y+5+'px',
     138                'left' : X+5+'px',
     139                'display' : 'block'
     140            });
     141
     142            t.btnsTout = window.setTimeout( function(){ed.plugins.wpeditimage.hideButtons();}, 5000 );
    97143        },
    98144
    99145        hideButtons : function() {
     146            if ( tinymce.DOM.isHidden('wp_editbtns') ) return;
     147
    100148            tinymce.DOM.hide('wp_editbtns');
    101149            window.clearTimeout(this.btnsTout);
     
    117165                width : '24',
    118166                height : '24',
    119                 title : 'Edit'
     167                title : ed.getLang('wpeditimage.edit_img')
    120168            });
    121169
     
    132180                width : '24',
    133181                height : '24',
    134                 title : 'Delete'
     182                title : ed.getLang('wpeditimage.del_img')
    135183            });
    136184
     
    138186                var ed = tinyMCE.activeEditor, el = ed.selection.getNode(), p;
    139187
    140                 if ( el.nodeName != 'IMG' || ed.dom.getAttrib(el, 'class').indexOf('mceItem') != -1 ) return;
    141 
    142                 if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1)
    143                     ed.dom.remove(p);
    144                 else ed.dom.remove(el);
    145 
    146                 this.parentNode.style.display = 'none';
    147                 ed.execCommand('mceRepaint');
    148                 return false;
     188                if ( el.nodeName == 'IMG' && ed.dom.getAttrib(el, 'class').indexOf('mceItem') == -1 ) {
     189                    if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
     190                        ed.dom.remove(p);
     191                    else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
     192                        ed.dom.remove(p);
     193                    else ed.dom.remove(el);
     194
     195                    this.parentNode.style.display = 'none';
     196                    ed.execCommand('mceRepaint');
     197                    return false;
     198                }
    149199            }
    150200        },
  • trunk/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js

    r8204 r8239  
    9696    width : '',
    9797    height : '',
     98    align : '',
     99    img_alt : '',
    98100
    99101    setTabs : function(tab) {
     
    126128        var t = this, cls = t.I('img_classes').value;
    127129
    128         t.I('img_demo').className = v;
     130        t.I('img_demo').className = t.align = v;
    129131
    130132        cls = cls.replace( /align[^ "']+/gi, '' );
     
    136138            t.updateStyle('hspace');
    137139        }
    138        
     140
    139141        t.I('img_classes').value = cls;
    140142    },
     
    154156    showSizeSet : function() {
    155157        var t = this;
    156        
     158
    157159        if ( (t.width * 1.3) > parseInt(t.preloadImg.width) ) {
    158160            var s130 = t.I('s130'), s120 = t.I('s120'), s110 = t.I('s110');
     
    244246
    245247    setup : function() {
    246         var t = this, h, c, el, id, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor, d = t.I('img_demo'), dom = tinyMCEPopup.dom;
     248        var t = this, h, c, el, id, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor, d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, caption;
    247249        document.dir = tinyMCEPopup.editor.getParam('directionality','');
    248250        tinyMCEPopup.restoreSelection();
     
    253255        ed.dom.setStyle(el, 'float', '');
    254256        t.getImageData();
     257        c = ed.dom.getAttrib(el, 'class');
     258        caption = t.img_alt = ed.dom.getAttrib(el, 'alt');
     259
     260        if ( DL = dom.getParent(el, 'dl') ) {
     261            var dlc = ed.dom.getAttrib(DL, 'class');
     262            dlc = dlc.match(/align[^ "']+/i);
     263            if ( ! dom.hasClass(el, dlc) )
     264                c += ' '+dlc;
     265               
     266            tinymce.each(DL.childNodes, function(e) {
     267                if ( e.nodeName == 'DD' ) {
     268                    caption = e.innerHTML;
     269                    return;
     270                }
     271            });
     272        }
    255273
    256274        f.img_title.value = ed.dom.getAttrib(el, 'title');
    257         f.img_alt.value = ed.dom.getAttrib(el, 'alt');
     275        f.img_alt.value = caption;
    258276        f.border.value = ed.dom.getAttrib(el, 'border');
    259277        f.vspace.value = ed.dom.getAttrib(el, 'vspace');
     
    262280        f.width.value = t.width = ed.dom.getAttrib(el, 'width');
    263281        f.height.value = t.height = ed.dom.getAttrib(el, 'height');
    264         f.img_classes.value = c = ed.dom.getAttrib(el, 'class');
     282        f.img_classes.value = c;
    265283        f.img_style.value = ed.dom.getAttrib(el, 'style');
    266284
     
    292310        if ( c.indexOf('alignleft') != -1 ) {
    293311            t.I('alignleft').checked = "checked";
    294             d.className = "alignleft";
     312            d.className = t.align = "alignleft";
    295313        } else if ( c.indexOf('aligncenter') != -1 ) {
    296314            t.I('aligncenter').checked = "checked";
    297             d.className = "aligncenter";
     315            d.className = t.align = "aligncenter";
    298316        } else if ( c.indexOf('alignright') != -1 ) {
    299317            t.I('alignright').checked = "checked";
    300             d.className = "alignright";
     318            d.className = t.align = "alignright";
    301319        } else if ( c.indexOf('alignnone') != -1 ) {
    302320            t.I('alignnone').checked = "checked";
    303             d.className = "alignnone";
     321            d.className = t.align = "alignnone";
    304322        }
    305323
    306324        if ( t.width && t.preloadImg.width ) t.showSizeSet();
    307325        document.body.style.display = '';
    308 /*
    309         // Test if is attachment
    310         if ( (id = c.match( /wp-image-([0-9]{1,6})/ )) && id[1] ) {
    311             t.I('tab_attachment').href = tinymce.documentBaseURL + 'media.php?action=edit&attachment_id=' + id[1];
    312             t.I('tab_attachment').style.display = 'inline';
    313         }
    314 */
    315326    },
    316327
     
    322333        if (el.nodeName != 'IMG') return;
    323334
    324         if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1)
     335        if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
    325336            ed.dom.remove(p);
    326         else
    327             ed.dom.remove(el);
     337        else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
     338            ed.dom.remove(p);
     339        else ed.dom.remove(el);
    328340
    329341        ed.execCommand('mceRepaint');
     
    333345
    334346    update : function() {
    335         var t = this, f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, el, P, A, v = f.img_classes.value;
     347        var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null, DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html;
    336348
    337349        tinyMCEPopup.restoreSelection();
     
    339351
    340352        if (el.nodeName != 'IMG') return;
    341         if (f.img_src.value === '') t.remove();
    342 
    343         A = ed.dom.getParent(el, 'A');
     353        if (f.img_src.value === '') {
     354            t.remove();
     355            return;
     356        }
     357
     358        if ( f.img_alt.value != '' && f.width.value != '' ) {
     359            do_caption = 1;
     360            img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
     361        }
     362
     363        A = ed.dom.getParent(el, 'a');
    344364        P = ed.dom.getParent(el, 'p');
     365        DL = ed.dom.getParent(el, 'dl');
     366        DIV = ed.dom.getParent(el, 'div');
     367
    345368        tinyMCEPopup.execCommand("mceBeginUndoLevel");
    346 /*      if ( tinymce.isIE ) {
    347             if ( f.img_classes.value.indexOf('aligncenter') != -1 )
    348                 ed.dom.addClass(P, 'mce_iecenter');
    349             else ed.dom.removeClass(P, 'mce_iecenter');
    350         }
    351 */
     369
    352370        ed.dom.setAttribs(el, {
    353371            src : f.img_src.value,
    354372            title : f.img_title.value,
    355             alt : f.img_alt.value,
     373            alt : t.img_alt,
    356374            width : f.width.value,
    357375            height : f.height.value,
    358376            style : f.img_style.value,
    359             'class' : '' //f.img_classes.value
     377            'class' : img_class
    360378        });
    361379
     
    369387            // Create new anchor elements
    370388            if ( A == null ) {
    371                
    372389                if ( ! f.link_href.value.match(/https?:\/\//) )
    373390                    f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
    374                
     391
     392                if ( tinymce.isWebKit && ed.dom.hasClass(el, 'aligncenter') ) {
     393                    ed.dom.removeClass(el, 'aligncenter');
     394                    fixSafari = 1;
     395                }
     396
    375397                tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
    376    
     398                if ( fixSafari ) ed.dom.addClass(el, 'aligncenter');
     399
    377400                tinymce.each(ed.dom.select("a"), function(n) {
    378401                    if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
    379    
     402
    380403                        ed.dom.setAttribs(n, {
    381404                            href : f.link_href.value,
     
    400423        }
    401424
    402         ed.dom.setAttrib(el, 'class', f.img_classes.value);
    403        
    404         if ( v.indexOf('aligncenter') != -1 ) {
     425        if ( do_caption ) {
     426            var id, cap_id = '', cap, DT, DD, cap_width = 10 + parseInt(f.width.value), align = t.align.substring(5), div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
     427
     428            if ( DL ) {
     429                ed.dom.setAttribs(DL, {
     430                    'class' : 'wp_caption '+t.align,
     431                    style : 'width: '+cap_width+'px;'
     432                });
     433
     434                if ( DIV )
     435                    ed.dom.setAttrib(DIV, 'class', div_cls);
     436
     437                if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp_caption_dd') )
     438                    ed.dom.setHTML(DD, f.img_alt.value);
     439
     440            } else {
     441                if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
     442                    cap_id = 'attachment_'+id[1];
     443
     444                if ( f.link_href.value ) html = ed.dom.getOuterHTML(ed.dom.getParent(el, 'a'));
     445                else html = ed.dom.getOuterHTML(el);
     446
     447                html = '<dl id="'+cap_id+'" class="wp_caption '+t.align+'" style="width: '+cap_width+
     448                'px"><dt class="wp_caption_dt">'+html+'</dt><dd class="wp_caption_dd">'+f.img_alt.value+'</dd></dl>';
     449
     450                cap = ed.dom.create('div', {'class': div_cls}, html);
     451
     452                if ( P ) {
     453                    P.parentNode.insertBefore(cap, P);
     454                    ed.dom.remove(P);
     455                }
     456            }
     457
     458            tinyMCEPopup.execCommand("mceEndUndoLevel");
     459            ed.execCommand('mceRepaint');
     460            tinyMCEPopup.close();
     461            return;
     462        } else {
     463            if ( DL ) {
     464                if ( f.link_href.value ) html = ed.dom.getOuterHTML(ed.dom.getParent(el, 'a'));
     465                else html = ed.dom.getOuterHTML(el);
     466               
     467                P = ed.dom.create('p', {}, html);
     468                DL.parentNode.insertBefore(P,DL);
     469                ed.dom.remove(DL.childNodes);
     470                ed.dom.remove(DL);
     471            }
     472        }
     473
     474        if ( f.img_classes.value.indexOf('aligncenter') != -1 ) {
    405475            if ( P && ( ! P.style || P.style.textAlign != 'center' ) )
    406476                ed.dom.setStyle(P, 'textAlign', 'center');
     
    409479                ed.dom.setStyle(P, 'textAlign', '');
    410480        }
     481
    411482        tinyMCEPopup.execCommand("mceEndUndoLevel");
    412483        ed.execCommand('mceRepaint');
     
    497568            f.height.value = t.height = t.preloadImg.height;
    498569        }
    499        
     570
    500571        t.showSizeSet();
    501572        t.demoSetSize();
  • trunk/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css

    r8167 r8239  
    1 body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
     1body, td {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
    22body {background:#FFF;}
    33body.mceForceColors {background:#FFF; color:#000;}
     
    1818cite {border-bottom:1px dashed blue}
    1919acronym {border-bottom:1px dotted #CCC; cursor:help}
    20 
    21 p.mce_iecenter {
    22     text-align: center;
    23 }
  • trunk/wp-includes/js/tinymce/wordpress.css

    r7687 r8239  
    11/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
    22
    3 .aligncenter {
     3.aligncenter,
     4dl.aligncenter {
    45    display: block;
    56    margin-left: auto;
     
    1314.alignright {
    1415    float: right;
     16}
     17
     18.wp_caption {
     19    border: 1px solid #ddd;
     20    text-align: center;
     21    background-color: #f3f3f3;
     22    padding-top: 4px;
     23    margin: 10px;
     24    -moz-border-radius: 3px;
     25    -khtml-border-radius: 3px;
     26    -webkit-border-radius: 3px;
     27    border-radius: 3px;
     28}
     29
     30.wp_caption img {
     31    margin: 0;
     32    padding: 0;
     33    border: 0 none;
     34}
     35
     36.wp_caption_dd {
     37    font-size: 11px;
     38    line-height: 17px;
     39    padding: 0 4px 5px;
     40    margin: 0;
    1541}
    1642
     
    6490    background: url(img/items.gif) no-repeat bottom left;
    6591}
     92
     93.mceIEcenter {
     94    text-align: center;
     95}
  • trunk/wp-includes/media.php

    r8029 r8239  
    349349   
    350350    return $html;
     351}
     352
     353add_shortcode('wp_caption', 'wp_caption_shortcode');
     354
     355function wp_caption_shortcode($attr, $content = null) {
     356   
     357    // Allow plugins/themes to override the default caption template.
     358    $output = apply_filters('wp_caption_shortcode', '', $attr, $content);
     359    if ( $output != '' )
     360        return $output;
     361
     362    extract(shortcode_atts(array(
     363        'id'    => '',
     364        'align' => 'alignnone',
     365        'width' => '',
     366        'caption' => ''
     367    ), $attr));
     368   
     369    if ( 1 > (int) $width || empty($caption) )
     370        return $content;
     371   
     372    if ( $id ) $id = 'id="' . $id . '" ';
     373   
     374    return '<dl ' . $id . 'class="wp_caption ' . $align . '" style="width: ' . (10 + (int) $width) . 'px">'
     375    . '<dt class="wp_caption_dt">' . $content . '</dt><dd class="wp_caption_dd">' . $caption . '</dd></dl>';
    351376}
    352377
  • trunk/wp-includes/script-loader.php

    r8214 r8239  
    3535    $scripts->add( 'editor', false, $visual_editor, '20080321' );
    3636
    37     $scripts->add( 'editor_functions', '/wp-admin/js/editor.js', false, '20080325' );
     37    $scripts->add( 'editor_functions', '/wp-admin/js/editor.js', false, '20080701' );
    3838
    3939    // Modify this version when tinyMCE plugins are changed.
    40     $mce_version = apply_filters('tiny_mce_version', '20080626');
     40    $mce_version = apply_filters('tiny_mce_version', '20080701');
    4141    $scripts->add( 'tiny_mce', '/wp-includes/js/tinymce/tiny_mce_config.php', array('editor_functions'), $mce_version );
    4242
     
    160160        ) );
    161161        $scripts->add( 'admin-gallery', '/wp-admin/js/gallery.js', array( 'jquery-ui-sortable' ), '20080520' );
    162         $scripts->add( 'media-upload', '/wp-admin/js/media-upload.js', array( 'thickbox' ), '20080625' );
     162        $scripts->add( 'media-upload', '/wp-admin/js/media-upload.js', array( 'thickbox' ), '20080701' );
    163163        $scripts->localize( 'upload', 'uploadL10n', array(
    164164            'browseTitle' => attribute_escape(__('Browse your files')),
Note: See TracChangeset for help on using the changeset viewer.