Ticket #17136: html.mode.2.diff
File html.mode.2.diff, 40.5 KB (added by , 13 years ago) |
---|
-
wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js
9 9 riverBottomThreshold: 5, 10 10 keySensitivity: 100, 11 11 lastSearch: '', 12 textarea: edCanvas,12 textarea: function() { return edCanvas; }, 13 13 14 14 init : function() { 15 15 inputs.dialog = $('#wp-link'); … … 49 49 wpLink.range = null; 50 50 51 51 if ( ! wpLink.isMCE() && document.selection ) { 52 wpLink.textarea .focus();52 wpLink.textarea().focus(); 53 53 wpLink.range = document.selection.createRange(); 54 54 } 55 55 }, … … 127 127 128 128 onClose: function() { 129 129 if ( ! wpLink.isMCE() ) { 130 wpLink.textarea .focus();130 wpLink.textarea().focus(); 131 131 if ( wpLink.range ) { 132 132 wpLink.range.moveToBookmark( wpLink.range.getBookmark() ); 133 133 wpLink.range.select(); … … 152 152 153 153 htmlUpdate : function() { 154 154 var attrs, html, start, end, cursor, 155 textarea = wpLink.textarea ;155 textarea = wpLink.textarea(); 156 156 157 157 if ( ! textarea ) 158 158 return; -
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.js
1 (function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{init:function(a,c){var d=this,g=0,e={},f=tinymce.DOM;a.addCommand("wpFullScreenClose",function(){if(a.getParam("wp_fullscreen_is_enabled")){f.win.setTimeout(function(){tinyMCE.remove(a);f.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings },10)}});a.addCommand("wpFullScreenSave",function(){var h=tinyMCE.get("wp_mce_fullscreen"),i;h.focus();i=tinyMCE.get(h.getParam("wp_fullscreen_editor_id"));i.setContent(h.getContent({format:"raw"}),{format:"raw"})});a.addCommand("wpFullScreenSaveContent",function(){a.execCommand("wpFullScreenSave");tinyMCE.triggerSave()});a.addCommand("wpFullScreenOpen",function(){var i=a.getDoc(),h=i.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(a.settings,function(j,k){e[k]=j});e.id="wp_mce_fullscreen";e.wp_fullscreen_is_enabled=true;e.wp_fullscreen_editor_id=a.id;e.theme_advanced_resizing=false;e.theme_advanced_toolbar_location="external";e.theme_advanced_statusbar_location="none";e.content_css=e.wp_fullscreen_content_css||"";e.height=tinymce.isIE?h.scrollHeight:h.offsetHeight;e.save_onsavecallback=function(){a.setContent(tinyMCE.get(e.id).getContent({format:"raw"}),{format:"raw"});a.execCommand("mceSave")};tinymce.each(a.getParam("wp_fullscreen_settings"),function(l,j){e[j]=l});d.fullscreenEditor=new tinymce.Editor("wp_mce_fullscreen",e);d.fullscreenEditor.onInit.add(function(){d.fullscreenEditor.setContent(a.getContent());d.fullscreenEditor.focus()});fullscreen.on();d.fullscreenEditor.render()});a.addButton("fullscreen",{title:"fullscreen.desc",cmd:"wpFullScreenOpen"});if(a.getParam("fullscreen_is_enabled")||!a.getParam("wp_fullscreen_is_enabled")){return}function b(){var k=a.getDoc(),h=k.body,m=k.documentElement,j=tinymce.DOM,l,i;if(tinymce.isIE){i=h.scrollHeight}else{if(tinymce.isWebKit){i=h.offsetHeight}else{i=m.offsetHeight}}l=(i>300)?i:300;if(g!=l){g=l;j.setStyle(j.get(a.id+"_ifr"),"height",l+"px")}}a.onInit.add(function(i,h){i.onChange.add(b);i.onSetContent.add(b);i.onPaste.add(b);i.onKeyUp.add(b);i.onPostRender.add(b);i.getBody().style.overflowY="hidden";i.dom.setStyle(i.getBody(),"paddingBottom",i.getParam("autoresize_bottom_margin",50)+"px")});if(a.getParam("autoresize_on_init",true)){a.onLoadContent.add(function(i,h){setTimeout(function(){b()},1200)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})();2 No newline at end of file 1 (function(){tinymce.create("tinymce.plugins.wpFullscreenPlugin",{init:function(a,c){var d=this,g=0,e={},f=tinymce.DOM;a.addCommand("wpFullScreenClose",function(){if(a.getParam("wp_fullscreen_is_enabled")){f.win.setTimeout(function(){tinyMCE.remove(a);f.remove("wp_mce_fullscreen_parent");tinyMCE.settings=tinyMCE.oldSettings;tinyMCE.activeEditor.execCommand("wpFullScreenClosed")},10)}});a.addCommand("wpFullScreenClosed",function(){d.fullscreenEditor=null});a.addCommand("wpFullScreenSave",function(){var h=tinyMCE.get("wp_mce_fullscreen"),i;h.focus();i=tinyMCE.get(h.getParam("wp_fullscreen_editor_id"));i.setContent(h.getContent({format:"raw"}),{format:"raw"})});a.addCommand("wpFullScreenSaveContent",function(){a.execCommand("wpFullScreenSave");tinyMCE.triggerSave()});a.addCommand("wpFullScreenInit",function(){if(d.fullscreenEditor||a.id=="wp_mce_fullscreen"){return}var i=a.getDoc(),h=i.body;tinyMCE.oldSettings=tinyMCE.settings;tinymce.each(a.settings,function(j,k){e[k]=j});e.id="wp_mce_fullscreen";e.wp_fullscreen_is_enabled=true;e.wp_fullscreen_editor_id=a.id;e.theme_advanced_resizing=false;e.theme_advanced_toolbar_location="external";e.theme_advanced_statusbar_location="none";e.content_css=e.wp_fullscreen_content_css||"";e.height=tinymce.isIE?h.scrollHeight:h.offsetHeight;e.save_onsavecallback=function(){a.setContent(tinyMCE.get(e.id).getContent({format:"raw"}),{format:"raw"});a.execCommand("mceSave")};tinymce.each(a.getParam("wp_fullscreen_settings"),function(l,j){e[j]=l});d.fullscreenEditor=new tinymce.Editor("wp_mce_fullscreen",e);d.fullscreenEditor.onInit.add(function(){if(!fullscreen.visible&&fullscreen.mode()==="tinymce"){d.fullscreenEditor.setContent(a.getContent());d.fullscreenEditor.focus()}});d.fullscreenEditor.render()});a.addCommand("wpFullScreenOpen",function(){fullscreen.on("tinymce")});a.onInit.add(function(){if(!fullscreen.visible){return}if(a.id==="wp_mce_fullscreen"){fullscreen.mode("tinymce")}else{a.execCommand("wpFullScreenInit")}});if(a.id=="wp_mce_fullscreen"){setTimeout(function(){a.onNodeChange.add(function(j,h,k,i){tinymce.each(fullscreen.tinymce.commands,function(l,n){var o=h.get(n),m=fullscreen.Button(n);if(o){m.disabled(!!o.disabled);m.active(!!o.active)}})})},100)}a.addButton("fullscreen",{title:"fullscreen.desc",cmd:"wpFullScreenOpen"});if(a.getParam("fullscreen_is_enabled")||!a.getParam("wp_fullscreen_is_enabled")){return}function b(){var k=a.getDoc(),h=k.body,m=k.documentElement,j=tinymce.DOM,l,i;if(tinymce.isIE){i=h.scrollHeight}else{if(tinymce.isWebKit){i=h.offsetHeight}else{i=m.offsetHeight}}l=(i>300)?i:300;if(g!=l){g=l;j.setStyle(j.get(a.id+"_ifr"),"height",l+"px")}}a.onInit.add(function(i,h){i.onChange.add(b);i.onSetContent.add(b);i.onPaste.add(b);i.onKeyUp.add(b);i.onPostRender.add(b);i.getBody().style.overflowY="hidden";i.dom.setStyle(i.getBody(),"paddingBottom",i.getParam("autoresize_bottom_margin",50)+"px")});if(a.getParam("autoresize_on_init",true)){a.onLoadContent.add(function(i,h){setTimeout(function(){b()},1200)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"WP Fullscreen",author:"WordPress",authorurl:"http://wordpress.org",infourl:"",version:"1.0"}}});tinymce.PluginManager.add("wpfullscreen",tinymce.plugins.wpFullscreenPlugin)})(); 2 No newline at end of file -
wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js
18 18 tinyMCE.remove(ed); 19 19 DOM.remove('wp_mce_fullscreen_parent'); 20 20 tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings 21 tinyMCE.activeEditor.execCommand('wpFullScreenClosed'); 21 22 }, 10); 22 23 } 23 24 }); 24 25 26 ed.addCommand('wpFullScreenClosed', function() { 27 t.fullscreenEditor = null; 28 }); 29 25 30 ed.addCommand('wpFullScreenSave', function() { 26 31 var ed = tinyMCE.get('wp_mce_fullscreen'), edd; 27 32 … … 30 35 31 36 edd.setContent( ed.getContent({format : 'raw'}), {format : 'raw'} ); 32 37 }); 33 38 34 39 ed.addCommand('wpFullScreenSaveContent', function() { 35 40 ed.execCommand('wpFullScreenSave'); 36 41 tinyMCE.triggerSave(); 37 42 }); 38 39 ed.addCommand('wpFullScreenOpen', function() { 43 44 ed.addCommand('wpFullScreenInit', function() { 45 // Only init the editor if necessary. 46 if ( t.fullscreenEditor || ed.id == 'wp_mce_fullscreen' ) 47 return; 48 40 49 var d = ed.getDoc(), b = d.body; 41 50 42 51 tinyMCE.oldSettings = tinyMCE.settings; // Store old settings … … 64 73 65 74 t.fullscreenEditor = new tinymce.Editor('wp_mce_fullscreen', s); 66 75 t.fullscreenEditor.onInit.add(function() { 67 t.fullscreenEditor.setContent(ed.getContent()); 68 t.fullscreenEditor.focus(); 76 if ( ! fullscreen.visible && fullscreen.mode() === 'tinymce' ) { 77 t.fullscreenEditor.setContent( ed.getContent() ); 78 t.fullscreenEditor.focus(); 79 } 69 80 }); 70 81 71 fullscreen.on();72 82 t.fullscreenEditor.render(); 73 83 }); 74 84 85 ed.addCommand('wpFullScreenOpen', function() { 86 fullscreen.on('tinymce'); 87 }); 88 89 ed.onInit.add( function() { 90 if ( ! fullscreen.visible ) 91 return; 92 93 if ( ed.id === 'wp_mce_fullscreen' ) 94 fullscreen.mode('tinymce'); 95 else 96 ed.execCommand('wpFullScreenInit'); 97 }); 98 99 if ( ed.id == 'wp_mce_fullscreen' ) { 100 // Ensure event is bound after theme events. 101 setTimeout( function() { 102 // Keep external buttons in sync with tinymce buttons 103 ed.onNodeChange.add( function( edi, cm, n, co ) { 104 tinymce.each( fullscreen.tinymce.commands, function( v, key ) { 105 var control = cm.get( key ), 106 button = fullscreen.Button( key ); 107 108 if ( control ) { 109 button.disabled( !! control.disabled ); 110 button.active( !! control.active ); 111 } 112 }); 113 }); 114 }, 100 ); 115 } 116 75 117 // Register buttons 76 118 ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'wpFullScreenOpen'}); 77 119 120 78 121 // END fullscreen 79 122 //---------------------------------------------------------------- 80 123 // START autoresize -
wp-includes/js/quicktags.dev.js
259 259 } 260 260 document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="' + quicktagsL10n.dictionaryLookup + '" value="' + quicktagsL10n.lookup + '" />'); 261 261 document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="' + quicktagsL10n.closeAllOpenTags + '" value="' + quicktagsL10n.closeTags + '" />'); 262 document.write('<input type="button" id="ed_fullscreen" class="ed_button" onclick="fullscreen.on(\'html\');return false;" title="' + quicktagsL10n.toggleFullscreen + '" value="' + quicktagsL10n.fullscreen + '" />'); 262 263 // edShowLinks(); // disabled by default 263 264 document.write('</div>'); 264 265 } -
wp-includes/script-loader.php
86 86 'enterURL' => __('Enter the URL'), 87 87 'enterImageURL' => __('Enter the URL of the image'), 88 88 'enterImageDescription' => __('Enter a description of the image'), 89 'fullscreen' => __('fullscreen'), 90 'toggleFullscreen' => esc_attr( __('Toggle fullscreen mode') ), 89 91 'l10n_print_after' => 'try{convertEntities(quicktagsL10n);}catch(e){};' 90 92 ) ); 91 93 … … 93 95 94 96 $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('utils','jquery'), '20110411' ); 95 97 $scripts->add_data( 'editor', 'group', 1 ); 96 97 $scripts->add( 'wp-fullscreen', "/wp-admin/js/wp-fullscreen$suffix.js", array('jquery'), '2011042 5a' );98 99 $scripts->add( 'wp-fullscreen', "/wp-admin/js/wp-fullscreen$suffix.js", array('jquery'), '20110428' ); 98 100 $scripts->add_data( 'wp-fullscreen', 'group', 1 ); 101 $scripts->localize( 'wp-fullscreen', 'fullscreenL10n', array( 102 'bold' => __('Bold (Ctrl + B)'), 103 'italic' => __('Italic (Ctrl + I)'), 104 'bullist' => __('Unordered list (Alt + Shift + U)'), 105 'numlist' => __('Ordered list (Alt + Shift + O)'), 106 'image' => __('Insert/edit image (Alt + Shift + M)'), 107 'link' => __('Insert/edit link (Alt + Shift + A)'), 108 'unlink' => __('Unlink (Alt + Shift + S)'), 109 'html' => __('HTML'), 110 'visual' => __('Visual'), 111 'l10n_print_after' => 'try{convertEntities(fullscreenL10n);}catch(e){};', 112 ) ); 99 113 100 114 $scripts->add( 'prototype', '/wp-includes/js/prototype.js', false, '1.6.1'); 101 115 … … 271 285 $scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20110131' ); 272 286 $scripts->add_data( 'admin-bar', 'group', 1 ); 273 287 274 $scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), '2011042 1' );288 $scripts->add( 'wplink', "/wp-includes/js/tinymce/plugins/wplink/js/wplink$suffix.js", array( 'jquery', 'wpdialogs' ), '20110428' ); 275 289 $scripts->add_data( 'wplink', 'group', 1 ); 276 290 $scripts->localize( 'wplink', 'wpLinkL10n', array( 277 291 'title' => __('Insert/edit link'), -
wp-admin/includes/post.php
1725 1725 $width = isset($content_width) && 800 > $content_width ? $content_width : 800; 1726 1726 $width = $width + 10; // compensate for the padding 1727 1727 $save = $post->post_status == 'publish' ? __('Update') : __('Save'); 1728 ?> 1728 ?> 1729 1729 <div id="wp-fullscreen-body"> 1730 1730 <div id="fullscreen-topbar" class="fade-600"> 1731 1731 <div id="wp-fullscreen-info"> 1732 1732 <span id="wp-fullscreen-saved"> </span> 1733 1733 <span class="autosave-message"> </span> 1734 <span id="wp-fullscreen-last-edit"> </span> 1734 <span id="wp-fullscreen-last-edit"> </span> 1735 1735 </div> 1736 1736 1737 1737 <div id="wp-fullscreen-toolbar"> 1738 <div id="wp-fullscreen-close"><a href="#" onclick="fullscreen.off();return false;"><?php _e('Back'); ?></a></div> 1739 <div id="wp-fullscreen-save"><input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" /></div> 1740 <div id="wp-fullscreen-buttons" style="width:<?php echo $width; ?>px;" class="wp_themeSkin"> 1741 <div> 1742 <a title="<?php _e('Bold (Ctrl + B)'); ?>" aria-labelledby="wp_fs_bold_voice" onclick="fullscreen.b();return false;" class="mceButton mceButtonEnabled mce_bold" href="javascript:;" id="wp_fs_bold" role="button" tabindex="-1" aria-pressed="false"> 1743 <span class="mceIcon mce_bold"></span> 1744 <span id="wp_fs_bold_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Bold (Ctrl + B)'); ?></span> 1745 </a> 1738 <div id="wp-fullscreen-resources" style="display:none;"> 1739 <div id="wp-fullscreen-button-template" class="wp-fullscreen-button"> 1740 <a class="mceButton mceButtonEnabled" href="javascript:;" role="button" tabindex="-1" aria-pressed="false"> 1741 <span class="mceIcon"></span> 1742 <span style="display: none;" class="mceVoiceLabel mceIconOnly"></span> 1743 </a> 1746 1744 </div> 1747 1748 <div> 1749 <a title="<?php _e('Italic (Ctrl + I)'); ?>" aria-labelledby="wp_fs_italic_voice" onclick="fullscreen.i();return false;" class="mceButton mceButtonEnabled mce_italic" href="javascript:;" id="wp_fs_italic" role="button" tabindex="-1" aria-pressed="false"> 1750 <span class="mceIcon mce_italic"></span> 1751 <span id="wp_fs_italic_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Italic (Ctrl + I)'); ?></span> 1752 </a> 1745 <div class="wp-fullscreen-separator"> 1746 <span tabindex="-1" aria-orientation="vertical" role="separator" class="mceSeparator"></span> 1753 1747 </div> 1748 </div> 1754 1749 1755 <div> 1756 <span tabindex="-1" aria-orientation="vertical" role="separator" class="mceSeparator"></span> 1757 </div> 1758 1759 <div> 1760 <a title="<?php _e('Unordered list (Alt + Shift + U)'); ?>" aria-labelledby="wp_fs_bullist_voice" onclick="fullscreen.ul();return false;" onmousedown="return false;" class="mceButton mceButtonEnabled mce_bullist" href="javascript:;" id="wp_fs_bullist" role="button" tabindex="-1" aria-pressed="false"> 1761 <span class="mceIcon mce_bullist"></span> 1762 <span id="wp_fs_bullist_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Unordered list (Alt + Shift + U)'); ?></span> 1763 </a> 1764 </div> 1765 1766 <div> 1767 <a title="<?php _e('Ordered list (Alt + Shift + O)'); ?>" aria-labelledby="wp_fs_numlist_voice" onclick="fullscreen.ol();return false;" class="mceButton mceButtonEnabled mce_numlist" href="javascript:;" id="wp_fs_numlist" role="button" tabindex="-1" aria-pressed="false"> 1768 <span class="mceIcon mce_numlist"></span> 1769 <span id="wp_fs_numlist_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Ordered list (Alt + Shift + O)'); ?></span> 1770 </a> 1771 </div> 1772 1773 <div> 1774 <span tabindex="-1" aria-orientation="vertical" role="separator" class="mceSeparator"></span> 1775 </div> 1776 1777 <div> 1778 <a title="<?php _e('Insert/edit image (Alt + Shift + M)'); ?>" aria-labelledby="wp_fs_image_voice" onclick="jQuery('#add_image').click();return false;" class="mceButton mceButtonEnabled mce_image" href="javascript:;" id="wp_fs_image" role="button" tabindex="-1"> 1779 <span class="mceIcon mce_image"></span> 1780 <span id="wp_fs_image_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Insert/edit image (Alt + Shift + M)'); ?></span> 1781 </a> 1782 </div> 1783 1784 <div> 1785 <span tabindex="-1" aria-orientation="vertical" role="separator" class="mceSeparator"></span> 1786 </div> 1787 1788 <div> 1789 <a title="<?php _e('Insert/edit link (Alt + Shift + A)'); ?>" aria-labelledby="wp_fs_link_voice" onclick="fullscreen.link();return false;" class="mceButton mce_link mceButtonEnabled" href="javascript:;" id="wp_fs_link" role="button" tabindex="-1" aria-pressed="false"> 1790 <span class="mceIcon mce_link"></span> 1791 <span id="wp_fs_link_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Insert/edit link (Alt + Shift + A)'); ?></span> 1792 </a> 1793 </div> 1794 1795 <div> 1796 <a title="<?php _e('Unlink (Alt + Shift + S)'); ?>" aria-labelledby="wp_fs_unlink_voice" onclick="fullscreen.unlink();return false;" class="mceButton mce_unlink mceButtonEnabled" href="javascript:;" id="wp_fs_unlink" role="button" tabindex="-1" aria-pressed="false"> 1797 <span class="mceIcon mce_unlink"></span> 1798 <span id="wp_fs_unlink_voice" style="display: none;" class="mceVoiceLabel mceIconOnly"><?php _e('Unlink (Alt + Shift + S)'); ?></span> 1799 </a> 1800 </div> 1801 1750 <div id="wp-fullscreen-close"><a href="#" onclick="fullscreen.off();return false;"><?php _e('Back'); ?></a></div> 1751 <div id="wp-fullscreen-save"><input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" /></div> 1752 <div id="wp-fullscreen-central-toolbar" style="width:<?php echo $width; ?>px;"> 1753 <div id="wp-fullscreen-mode-bar"><div id="wp-fullscreen-modes"></div></div> 1754 <div id="wp-fullscreen-button-bar"><div id="wp-fullscreen-buttons" class="wp_themeSkin"></div></div> 1802 1755 <div id="wp-fullscreen-count"><?php _e('Word Count:'); ?> <span class="word-count">0</span></div> 1803 1756 </div> 1804 1757 </div> -
wp-admin/js/wp-fullscreen.dev.js
1 1 /** 2 * PubSub -- A lightweight publish/subscribe implementation. Private use only! 2 * PUBSUB 3 * 4 * A lightweight publish/subscribe implementation. 5 * Private use only! 3 6 */ 4 7 var PubSub, fullscreen, wptitlehint; 5 8 … … 38 41 }; 39 42 40 43 PubSub.prototype.publish = function( topic, args ) { 41 var i, l, 44 var i, l, broken, 42 45 topics = this.topics[ topic ]; 43 46 44 47 if ( ! topics ) … … 47 50 args = args || []; 48 51 49 52 for ( i = 0, l = topics.length; i < l; i++ ) { 50 topics[i].apply( null, args);53 broken = ( topics[i].apply( null, args ) === false || broken ); 51 54 } 55 return ! broken; 52 56 }; 53 57 54 // Distraction Free Writing (wp-fullscreen) access the API globally using the fullscreen variable. 58 /** 59 * FULLSCREEN 60 * 61 * Distraction free writing. 62 * Access the API globally using the fullscreen variable. 63 */ 64 55 65 (function($){ 56 66 var api, ps, bounder; 57 67 … … 97 107 /** 98 108 * ON / OFF API 99 109 */ 100 api.on = function() { 101 if ( ! api.ui.element ) 102 api.ui.init(); 110 /** 111 * on() 112 * 113 * Turns fullscreen on. 114 * 115 * @param string mode Optional. Switch to the given mode before opening. 116 */ 117 api.on = function( mode ) { 118 if ( api.visible ) 119 return; 103 120 104 if ( ! api.visible )105 121 api.mode( mode ); 122 api.ui.fade( 'show', 'showing', 'shown' ); 106 123 }; 107 124 125 /** 126 * off() 127 * 128 * Turns fullscreen off. 129 */ 108 130 api.off = function() { 109 if ( api.ui.element && api.visible ) 110 api.ui.fade( 'hide', 'hiding', 'hidden' ); 131 if ( ! api.visible ) 132 return; 133 134 api.ui.fade( 'hide', 'hiding', 'hidden' ); 111 135 }; 112 136 113 137 /** 138 * MODE API 139 */ 140 (function(){ 141 var mode = 'html'; 142 143 /** 144 * mode() 145 * 146 * @return string - The fullscreen mode. 147 * 148 * mode( to ) 149 * 150 * @param string to - The fullscreen mode to switch to. 151 * @event switchMode 152 * @eventparam string to - The new mode. 153 * @eventparam string from - The old mode. 154 */ 155 api.mode = function( to ) { 156 if ( ! to ) 157 return mode; 158 159 var from = mode; 160 161 // Don't switch if the mode is the same. 162 if ( mode == to ) 163 return; 164 165 // Only fire the switch event when visible. 166 if ( ! api.visible || ps.publish( 'switchMode', [ to, from ] ) ) { 167 mode = to; 168 ps.publish( 'switchedMode', [ to, from ] ); 169 } 170 }; 171 })(); 172 173 /** 174 * MODE TOGGLE BUTTONS 175 */ 176 api.modes = { 177 order: 'tinymce html', 178 labels: { 179 html: fullscreenL10n.html, 180 tinymce: fullscreenL10n.visual 181 }, 182 refresh: function( slug, label ) { 183 var modes = $('#wp-fullscreen-modes'), 184 slugs = api.modes.order.split(' '); 185 186 modes.detach().children().detach().removeClass('active'); 187 188 $.each( slugs, function( i, slug ) { 189 modes.append( api.modes.element( slug ) ); 190 }); 191 192 api.modes.element( api.mode() ).addClass('active'); 193 194 modes.appendTo('#wp-fullscreen-mode-bar'); 195 }, 196 _elements: {}, 197 element: function( slug ) { 198 if ( api.modes._elements[ slug ] ) 199 return api.modes._elements[ slug ]; 200 201 var label = api.modes.labels[ slug ] || slug; 202 mode = $('<a href="javascript:;">' + label + '</a>'); 203 204 mode.click( function( e ) { 205 api.mode( slug ); 206 e.preventDefault(); 207 }); 208 209 return api.modes._elements[ slug ] = mode; 210 } 211 } 212 213 /** 114 214 * GENERAL 115 215 */ 116 216 117 217 api.save = function() { 118 218 $('#title').val( $('#wp-fullscreen-title').val() ); 119 tinyMCE.execCommand('wpFullScreenSaveContent'); 219 220 if ( api.mode() === 'tinymce' ) 221 tinyMCE.execCommand('wpFullScreenSaveContent'); 222 120 223 $('#hiddenaction').val('wp-fullscreen-save-post'); 121 224 122 225 $.post( ajaxurl, $('form#post').serialize(), function(r){ … … 129 232 }, 'json'); 130 233 } 131 234 132 set_title_hint = function( title) {133 if ( ! title.val().length )235 set_title_hint = function( title ) { 236 if ( ! title.val().length ) 134 237 title.siblings('label').css( 'visibility', '' ); 135 238 else 136 239 title.siblings('label').css( 'visibility', 'hidden' ); … … 164 267 .bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2500 ); } ); 165 268 }); 166 269 270 271 // This event occurs before the overlay blocks the UI. 167 272 ps.subscribe( 'show', function() { 273 var textarea; 274 275 if ( ! api.textarea ) { 276 textarea = $('#wp_mce_fullscreen'); 277 api.textarea = textarea[0]; 278 api.grow( textarea ); 279 } 280 281 if ( api.mode() === 'tinymce' ) { 282 // Initialize the editor. 283 api.tinymce.editor(); 284 285 } else if ( api.mode() === 'html' ) { 286 // Copy the content from the editor's textarea. 287 api.textarea.value = edCanvas.value; 288 } 289 290 // Map the textarea to edCanvas, store the old edCanvas. 291 api._edCanvas = edCanvas; 292 edCanvas = api.textarea; 293 }); 294 295 // This event occurs while the overlay blocks the UI. 296 ps.subscribe( 'showing', function() { 297 // Update the fullscreen fields 168 298 var title = $('#wp-fullscreen-title').val( $('#title').val() ); 169 this.set_title_hint(title); 299 set_title_hint( title ); 300 $('#wp-fullscreen-last-edit').html( $('#last-edit').html() ); 301 302 // Show the fullscreen UI 303 $('#wp-fullscreen-body').show(); 304 $( document.body ).addClass( 'fullscreen-active' ); 305 api.buttons.refresh(); 306 api.modes.refresh(); 307 308 // Bind toolbar fading events 170 309 $( document ).bind( 'mousemove.fullscreen', function(e) { bounder( 'showToolbar', 'hideToolbar', 2500 ); } ); 310 bounder( 'showToolbar', 'hideToolbar', 2500 ); 171 311 }); 172 312 313 // This event occurs after the overlay blocks the UI. 314 ps.subscribe( 'shown', function() { 315 api.visible = true; 316 }); 317 318 // This event occurs before the overlay blocks the UI. 173 319 ps.subscribe( 'hide', function() { 174 var title = $('#title').val( $('#wp-fullscreen-title').val() ); 175 this.set_title_hint(title); 176 tinyMCE.execCommand('wpFullScreenSave'); 320 if ( api.mode() === 'tinymce' ) 321 tinyMCE.execCommand('wpFullScreenSave'); 322 323 // Unbind all fullscreen events on the document (including mousemove) 177 324 $( document ).unbind( '.fullscreen' ); 178 325 }); 179 326 180 ps.subscribe( 'showing', function() { 181 $('#wp-fullscreen-body').show(); 182 $( document.body ).addClass( 'fullscreen-active' ); 183 bounder( 'showToolbar', 'hideToolbar', 3000 ); 184 $('#wp-fullscreen-last-edit').html( $('#last-edit').html() ); 185 }); 327 // This event occurs while the overlay blocks the UI. 328 ps.subscribe( 'hiding', function() { 329 var mode, title; 186 330 187 ps.subscribe( 'hiding', function() { 331 // Update the normal fields 332 title = $('#title').val( $('#wp-fullscreen-title').val() ); 333 set_title_hint( title ); 334 $('#last-edit').html( $('#wp-fullscreen-last-edit').html() ); 335 336 // Restore and update edCanvas. 337 edCanvas = api._edCanvas; 338 edCanvas.value = api.textarea.value; 339 340 // Hide the fullscreen UI 188 341 $('#wp-fullscreen-body').hide(); 189 342 $( document.body ).removeClass( 'fullscreen-active' ); 190 $('#last-edit').html( $('#wp-fullscreen-last-edit').html() );191 });192 343 193 ps.subscribe( 'shown', function() { 194 api.visible = true; 344 // Destroy the tinyMCE editor if it has been instantiated. 345 if ( tinyMCE ) // This should be run regardless of mode. 346 tinyMCE.execCommand('wpFullScreenClose'); 347 348 // Clear the textarea. 349 api.textarea.value = ''; 350 351 // Make sure the correct editor is displaying. 352 mode = api.mode(); 353 if ( mode == 'tinymce' || mode == 'html' ) 354 switchEditors.go( 'content', mode ); 195 355 }); 196 356 357 // This event occurs after the overlay blocks the UI. 197 358 ps.subscribe( 'hidden', function() { 198 359 api.visible = false; 360 199 361 $('#wp_mce_fullscreen').removeAttr('style'); 200 tinyMCE.execCommand('wpFullScreenClose');201 362 }); 202 363 364 ps.subscribe( 'switchMode', function( to, from ) { 365 var ed; 366 367 if ( to === 'tinymce' || from === 'tinymce' ) { 368 ed = api.tinymce.editor(); 369 370 // Don't switch modes if there was an error fetching the editor. 371 // If the editor is rendering, it will trigger the switch when initialized. 372 if ( ! ed ) 373 return false; 374 } 375 376 if ( from ==='html' && to === 'tinymce' ) { 377 api.textarea.value = switchEditors.wpautop( api.textarea.value ); 378 ed.show(); 379 } else if ( from ==='tinymce' && to === 'html' ) { 380 ed.hide(); 381 } 382 }); 383 384 ps.subscribe( 'switchedMode', function( to, from ) { 385 api.buttons.refresh(); 386 api.modes.refresh(); 387 388 if ( to === 'html' ) 389 api.grow.resize( api.textarea ); 390 }); 391 392 203 393 /** 204 * B uttons394 * BUTTONS 205 395 */ 206 api.b = function() { 207 tinyMCE.execCommand('Bold'); 208 } 396 api.Button = function( slug ) { 397 if ( ! ( this instanceof api.Button ) ) { 398 // Get the instance and create a new one if necessary. 399 if ( ! api.Button.buttons[ slug ] ) 400 api.Button.buttons[ slug ] = new api.Button( slug ); 401 return api.Button.buttons[ slug ]; 402 } 209 403 210 api.i = function() { 211 tinyMCE.execCommand('Italic'); 212 } 404 this.slug = slug; 405 this.action = {}; 213 406 214 api.ul = function() { 215 tinyMCE.execCommand('InsertUnorderedList'); 216 } 407 api.Button.buttons[ slug ] = this; 408 }; 217 409 218 api.ol = function() { 219 tinyMCE.execCommand('InsertOrderedList'); 220 } 410 api.Button.buttons = {}; 221 411 222 api.link = function() { 223 tinyMCE.execCommand('WP_Link'); 224 } 412 $.extend( api.Button.prototype, { 413 set: function( modes, callback ) { 414 var self = this; 415 if ( typeof modes === 'string' ) 416 modes = [ modes ]; 417 $.each( modes, function( i, mode ) { 418 self.action[ mode ] = callback; 419 }); 420 }, 421 get: function( mode ) { 422 return this.action[ mode ]; 423 }, 424 run: function() { 425 var callback = this.get( api.mode() ); 225 426 226 api.unlink = function() { 227 tinyMCE.execCommand('unlink'); 427 if ( ! this.disabled() && callback ) 428 return callback(); 429 }, 430 element: function( element ) { 431 var self = this; 432 if ( ! element ) { 433 if ( ! this._element ) 434 this.elementTemplate(); 435 return this._element; 436 } 437 438 this._element = element.detach(); 439 // Ensure the proper classes are set. 440 $.each([ 'disabled', 'active' ], function( i, fn ) { 441 self[ fn ]( self[ fn ]() ); 442 }); 443 // Run when the element clicked. 444 element.click( function( e ) { 445 self.run(); 446 e.preventDefault(); 447 }); 448 }, 449 450 elementTemplate: function() { 451 if ( ! api.Button.template || ! api.Button.template.length ) 452 return; 453 454 var slug = this.slug, 455 el = api.Button.template.clone(), 456 a = el.children('a'), 457 label = fullscreenL10n[ slug ] || ''; 458 459 el.attr( 'id', 'wp-fs-button-' + slug ); 460 a.addClass( 'mce_' + slug ).attr({ 461 title: label, 462 'aria-labelledby': 'wp-fs-voice-' + slug 463 }); 464 a.children('.mceIcon').addClass( 'mce_' + slug ); 465 a.children('.mceVoiceLabel').attr( 'id', 'wp-fs-voice-' + slug ).text( label ); 466 467 this.element( el ); 468 } 469 }); 470 471 $(document).ready( function() { 472 api.Button.template = $('#wp-fullscreen-button-template'); 473 }); 474 475 /** 476 * Create disabled and active functions. 477 * 478 * These functions act as getters/setters. 479 * They also toggle the appropriate classnames on the element. 480 */ 481 $.each([ 'disabled', 'active' ], function( i, fn ) { 482 var key = '_' + fn; 483 484 api.Button.prototype[ fn ] = function( change ) { 485 if ( typeof change == 'undefined' ) 486 return this[ key ]; 487 488 this[ key ] = !! change; 489 490 if ( this.element() ) 491 this.element().toggleClass( fn, this[ key ] ); 492 }; 493 }); 494 495 api.buttons = { 496 order: { 497 tinymce: 'bold italic | bullist numlist | image | link unlink', 498 html: 'image link' 499 }, 500 refresh: function() { 501 var toolbar = $('#wp-fullscreen-buttons'), 502 sep = $('#wp-fullscreen-resources .wp-fullscreen-separator'), 503 order = api.buttons.order[ api.mode() ] || '', 504 slugs = order.split(' '); 505 506 if ( ! toolbar.length ) 507 return; 508 509 // Detach the toolbar from the DOM. 510 toolbar.detach(); 511 // Remove separators 512 toolbar.children('.wp-fullscreen-separator').remove(); 513 // Detach old buttons 514 toolbar.children().detach(); 515 516 // Arrange current buttons 517 $.each( slugs, function( i, slug ) { 518 var button; 519 520 // A pipe indicates a separator 521 if ( slug == '|' ) { 522 toolbar.append( sep.clone() ); 523 // Otherwise attempt to fetch the element and append it. 524 } else { 525 button = api.Button( slug ); 526 button.disabled( false ); 527 button.active( false ); 528 529 if ( button.element() ) 530 toolbar.append( button.element() ); 531 } 532 }); 533 534 // Add the toolbar back to the DOM 535 toolbar.prependTo('#wp-fullscreen-button-bar'); 536 } 228 537 } 229 538 230 539 /** 231 * UI elements (used for transitioning)540 * TINYMCE 232 541 */ 233 api.ui = { 542 api.tinymce = { 543 234 544 /** 235 * Undefined api.ui properties: 236 * element, topbar 545 * editor() 546 * 547 * Fetches the fullscreen TinyMCE editor. 548 * 549 * Checks for errors. 550 * Will initialize the editor if necessary. 551 * 552 * @return false | tinymce.Editor 237 553 */ 554 editor: function() { 555 var ed; 238 556 557 if ( ! tinyMCE ) 558 return false; 559 560 ed = tinyMCE.get('wp_mce_fullscreen'); 561 562 if ( ed ) { 563 return ed; 564 } else if ( tinyMCE.activeEditor ) { 565 tinyMCE.activeEditor.execCommand('wpFullScreenInit'); 566 } else { 567 switchEditors.go( 'content', 'tinymce' ); 568 } 569 570 return false; 571 }, 572 573 commands: { 574 bold: 'Bold', 575 italic: 'Italic', 576 bullist: 'InsertUnorderedList', 577 numlist: 'InsertOrderedList', 578 link: 'WP_Link', 579 unlink: 'unlink' 580 } 581 }; 582 583 $.each( api.tinymce.commands, function( key, command ) { 584 api.Button( key ).set( 'tinymce', function() { tinyMCE.execCommand( command ); }); 585 }); 586 587 api.Button('link').set( 'html', function() { wpLink.open(); }); 588 api.Button('image').set([ 'html', 'tinymce' ], function() { 589 $('#add_image').click(); 590 }); 591 592 /** 593 * UI ELEMENTS 594 * 595 * Used for transitioning between states. 596 * 597 * Undeclared api.ui properties: element, topbar 598 */ 599 api.ui = { 239 600 init: function() { 240 var topbar = api.ui.topbar 601 var topbar = api.ui.topbar = $('#fullscreen-topbar'); 241 602 api.ui.element = $('#fullscreen-fader'); 242 603 243 604 if ( wptitlehint ) … … 254 615 }, 255 616 256 617 fade: function( before, during, after ) { 257 if ( before)258 ps.publish( before);618 if ( ! api.ui.element ) 619 api.ui.init(); 259 620 621 // If any callback bound to before returns false, bail. 622 if ( before && ! ps.publish( before ) ) 623 return; 624 260 625 api.fade.In( api.ui.element, 600, function() { 261 626 if ( during ) 262 627 ps.publish( during ); … … 332 697 })() 333 698 }; 334 699 335 /* 336 api.editor = function() { 337 return $('#content, #content_ifr').filter(':visible'); 700 701 /** 702 * GROW API 703 * 704 * Automatically updates textarea height. 705 */ 706 api.grow = function( element ) { 707 element = element.filter( 'textarea:not[.grow]' ); 708 element.addClass( 'grow' ).css({ 709 overflow: 'hidden', 710 resize: 'none' 711 }); 712 element.bind( 'keydown.grow keypress.grow focus.grow', api.grow.resizeEvent ); 713 714 element.each( function() { 715 var t = $(this); 716 717 // Ensure a minHeight is set. Default to the height. 718 if ( ! this.style.minHeight && this.style.minHeight !== 0 ) 719 this.style.minHeight = this.style.height; 720 721 t.bind( 'grow', function() { 722 // If the textarea causes the window's scrollbars, remember the offset. 723 // Otherwise, the scrollbars will jump when we revert to minHeight. 724 var scroll = api.grow.window.scrollTop(); 725 726 // Set to the minHeight so the textarea shrinks appropriately. 727 textarea.style.height = textarea.style.minHeight; 728 729 if ( textarea.scrollHeight > textarea.clientHeight ) 730 textarea.style.height = textarea.scrollHeight + 'px'; 731 732 api.grow.window.scrollTop( scroll ); 733 }); 734 735 // Initial resize. 736 if ( t.is(':visible') ) 737 api.grow.resize( this ); 738 }); 739 740 return element; 338 741 }; 339 */340 742 743 api.grow.window = $(window); 744 745 api.grow.resizeEvent = function( e ) { 746 var textarea = this; 747 setTimeout( function() { 748 api.grow.resize( textarea ); 749 }, 1 ); 750 }; 751 752 api.grow.resize = function( textarea ) { 753 // If the textarea causes the window's scrollbars, remember the offset. 754 // Otherwise, the scrollbars will jump when we revert to minHeight. 755 var scroll = api.grow.window.scrollTop(); 756 757 // Set to the minHeight so the textarea shrinks appropriately. 758 textarea.style.height = textarea.style.minHeight; 759 760 if ( textarea.scrollHeight > textarea.clientHeight ) 761 textarea.style.height = textarea.scrollHeight + 'px'; 762 763 api.grow.window.scrollTop( scroll ); 764 }; 765 341 766 })(jQuery); -
wp-admin/css/wp-admin.dev.css
657 657 width: 100%; 658 658 min-height: 300px; 659 659 border: 0; 660 background: transparent; 661 line-height: 1.6em; 662 padding: 0; 663 outline: none; 664 resize: none; 660 665 } 661 666 662 667 /* =Top bar … … 672 677 min-width: 800px; 673 678 width: 100%; 674 679 height: 62px; 675 background : #d9d9d9;676 background : -moz-linear-gradient(bottom, #d7d7d7, #e4e4e4);677 background : -webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#e4e4e4));680 background-color: #d9d9d9; 681 background-image: -moz-linear-gradient(bottom, #d7d7d7, #e4e4e4); 682 background-image: -webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#e4e4e4)); 678 683 } 679 684 680 685 #wp-fullscreen-toolbar { … … 682 687 clear: both; 683 688 } 684 689 690 #wp-fullscreen-mode-bar, 691 #wp-fullscreen-button-bar, 685 692 #wp-fullscreen-close { 686 693 float: left; 687 694 } 688 695 689 696 #wp-fullscreen-save, 690 #wp-fullscreen- buttons #wp-fullscreen-count {697 #wp-fullscreen-count { 691 698 float: right; 692 699 } 693 700 … … 701 708 padding: 3px 10px; 702 709 } 703 710 704 #wp-fullscreen- buttons{711 #wp-fullscreen-central-toolbar { 705 712 margin: auto; 706 713 padding: 0; 707 714 } … … 710 717 float: left; 711 718 } 712 719 720 #wp-fullscreen-mode-bar { 721 padding-right: 14px; 722 } 723 #wp-fullscreen-modes a { 724 display: block; 725 font-size: 11px; 726 text-decoration: none; 727 float: left; 728 margin: 1px 0 0 0; 729 padding: 2px 6px 2px; 730 border-width: 1px 1px 1px 0; 731 border-style: solid; 732 border-color: #bbb; 733 color: #777; 734 text-shadow: 0 1px 0 #fff; 735 background-color: #f4f4f4; 736 background-image: -moz-linear-gradient(bottom, #e4e4e4, #f9f9f9); 737 background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9)); 738 } 739 #wp-fullscreen-modes a:hover, 740 #wp-fullscreen-modes .active { 741 color: #333; 742 border-color: #999; 743 background-color: #eee; 744 background-image: -moz-linear-gradient(bottom, #f9f9f9, #e0e0e0); 745 background-image: -webkit-gradient(linear, left bottom, left top, from(#f9f9f9), to(#e0e0e0)); 746 } 747 #wp-fullscreen-modes a:first-child { 748 border-width: 1px; 749 -moz-border-radius: 4px 0 0 4px; 750 -webkit-border-top-left-radius: 4px; 751 -webkit-border-bottom-left-radius: 4px; 752 -khtml-border-top-left-radius: 4px; 753 -khtml-border-bottom-left-radius: 4px; 754 border-top-left-radius: 4px; 755 border-bottom-left-radius: 4px; 756 } 757 #wp-fullscreen-modes a:last-child { 758 -moz-border-radius: 0 4px 4px 0; 759 -webkit-border-top-right-radius: 4px; 760 -webkit-border-bottom-right-radius: 4px; 761 -khtml-border-top-right-radius: 4px; 762 -khtml-border-bottom-right-radius: 4px; 763 border-top-right-radius: 4px; 764 border-bottom-right-radius: 4px; 765 } 766 767 768 #wp-fullscreen-buttons .active a { 769 background: inherit; 770 } 771 772 #wp-fullscreen-buttons .hidden { 773 display: none; 774 } 775 776 #wp-fullscreen-buttons .disabled { 777 opacity: 0.5; 778 } 779 713 780 /* =Thickbox Adjustments 714 781 -------------------------------------------------------------- */ 715 782 .fullscreen-active #TB_overlay { … … 4076 4143 margin: 20px 0; 4077 4144 } 4078 4145 4079 .pressthis a { 4146 .pressthis a { 4080 4147 display: inline-block; 4081 4148 width: 113px; 4082 4149 position: relative; … … 4096 4163 rgb(216,216,216) 77% 4097 4164 ); 4098 4165 background-repeat: no-repeat; 4099 background-image-position: 10px 8px; 4166 background-image-position: 10px 8px; 4100 4167 border-radius: 5px; 4101 4168 -webkit-border-radius: 5px; 4102 4169 -moz-border-radius: 5px; 4103 -o-border-radius: 5px; 4170 -o-border-radius: 5px; 4104 4171 border: 1px #b4b4b4 solid; 4105 font: normal normal normal 14px/16px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; 4172 font: normal normal normal 14px/16px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; 4106 4173 text-decoration: none; 4107 4174 text-shadow: #fff 0 1px 0px; 4108 4175 -webkit-text-shadow: #fff 0 1px 0px; … … 4119 4186 transform: skew(20deg) rotate(9deg); 4120 4187 -webkit-transform: skew(20deg) rotate(9deg); 4121 4188 -moz-transform: skew(20deg) rotate(9deg); 4122 box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4123 -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4124 -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4189 box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4190 -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4191 -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); 4125 4192 } 4126 4193 4127 4194 .pressthis a span { 4128 background: url(../images/press-this.png) no-repeat 10px 7px ; 4195 background: url(../images/press-this.png) no-repeat 10px 7px ; 4129 4196 padding: 8px 0 8px 32px; 4130 4197 display: inline-block; 4131 4198 } 4132 4199 4133 .pressthis a:after { 4134 content: ''; 4135 width: 70%; 4200 .pressthis a:after { 4201 content: ''; 4202 width: 70%; 4136 4203 height: 55%; 4137 z-index: -1; 4138 position: absolute; 4139 right: 10px; 4140 bottom: 9px; 4141 background: transparent; 4204 z-index: -1; 4205 position: absolute; 4206 right: 10px; 4207 bottom: 9px; 4208 background: transparent; 4142 4209 transform: skew(20deg) rotate(6deg); 4143 4210 -webkit-transform: skew(20deg) rotate(6deg); 4144 4211 -moz-transform: skew(20deg) rotate(6deg); 4145 box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4146 -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4147 -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4148 } 4212 box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4213 -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4214 -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); 4215 } 4149 4216 4150 4217 4151 4218 /*------------------------------------------------------------------------------