Enhance the editor on the Add/Edit Post screens, first run. Props avril, see #28328.

Built from https://develop.svn.wordpress.org/trunk@29049


git-svn-id: http://core.svn.wordpress.org/trunk@28837 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Ozz 2014-07-09 22:06:15 +00:00
parent 3b291f7057
commit 5e4a020ff8
29 changed files with 854 additions and 104 deletions

View File

@ -37,7 +37,6 @@
#titlediv { #titlediv {
position: relative; position: relative;
margin-bottom: 10px;
} }
#titlediv label { #titlediv label {
@ -337,7 +336,7 @@ td.plugin-title p {
background-color: #f7f7f7; background-color: #f7f7f7;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04);
box-shadow: 0 1px 1px rgba(0,0,0,0.04); box-shadow: 0 1px 1px rgba(0,0,0,0.04);
cursor: row-resize; z-index: 999;
} }
#post-status-info td { #post-status-info td {
@ -345,7 +344,7 @@ td.plugin-title p {
} }
.autosave-info { .autosave-info {
padding: 2px; padding: 2px 10px;
text-align: left; text-align: left;
} }
@ -367,6 +366,18 @@ td.plugin-title p {
padding: 2px 10px; padding: 2px 10px;
} }
#wp-content-editor-container {
position: relative;
}
#content-textarea-clone {
z-index: -1;
position: absolute;
top: 0;
visibility: hidden;
overflow: hidden;
}
#timestampdiv select { #timestampdiv select {
height: 21px; height: 21px;
line-height: 14px; line-height: 14px;
@ -1348,12 +1359,6 @@ table.links-table {
padding: 10px 20px; padding: 10px 20px;
} }
#wp-content-editor-tools {
overflow: hidden;
padding: 20px 0 1px 15px;
top: 1px;
}
a.wp-switch-editor { a.wp-switch-editor {
font-size: 16px; font-size: 16px;
line-height: 1em; line-height: 1em;

View File

@ -37,7 +37,6 @@
#titlediv { #titlediv {
position: relative; position: relative;
margin-bottom: 10px;
} }
#titlediv label { #titlediv label {
@ -337,7 +336,7 @@ td.plugin-title p {
background-color: #f7f7f7; background-color: #f7f7f7;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04);
box-shadow: 0 1px 1px rgba(0,0,0,0.04); box-shadow: 0 1px 1px rgba(0,0,0,0.04);
cursor: row-resize; z-index: 999;
} }
#post-status-info td { #post-status-info td {
@ -345,7 +344,7 @@ td.plugin-title p {
} }
.autosave-info { .autosave-info {
padding: 2px; padding: 2px 10px;
text-align: right; text-align: right;
} }
@ -367,6 +366,18 @@ td.plugin-title p {
padding: 2px 10px; padding: 2px 10px;
} }
#wp-content-editor-container {
position: relative;
}
#content-textarea-clone {
z-index: -1;
position: absolute;
top: 0;
visibility: hidden;
overflow: hidden;
}
#timestampdiv select { #timestampdiv select {
height: 21px; height: 21px;
line-height: 14px; line-height: 14px;
@ -1348,12 +1359,6 @@ table.links-table {
padding: 10px 20px; padding: 10px 20px;
} }
#wp-content-editor-tools {
overflow: hidden;
padding: 20px 15px 1px 0;
top: 1px;
}
a.wp-switch-editor { a.wp-switch-editor {
font-size: 16px; font-size: 16px;
line-height: 1em; line-height: 1em;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,6 +11,7 @@ if ( !defined('ABSPATH') )
die('-1'); die('-1');
wp_enqueue_script('post'); wp_enqueue_script('post');
wp_enqueue_script('editor-expand');
if ( wp_is_mobile() ) if ( wp_is_mobile() )
wp_enqueue_script( 'jquery-touch-punch' ); wp_enqueue_script( 'jquery-touch-punch' );
@ -492,6 +493,7 @@ if ( post_type_supports($post_type, 'editor') ) {
'editor_height' => 360, 'editor_height' => 360,
'tinymce' => array( 'tinymce' => array(
'resize' => false, 'resize' => false,
'wp_autoresize_on' => true,
'add_unload_trigger' => false, 'add_unload_trigger' => false,
), ),
) ); ?> ) ); ?>

View File

@ -179,7 +179,7 @@ $(document).ready( function() {
}); });
$('#collapse-menu').on('click.collapse-menu', function() { $('#collapse-menu').on('click.collapse-menu', function() {
var body = $( document.body ), respWidth; var body = $( document.body ), respWidth, state;
// reset any compensation for submenus near the bottom of the screen // reset any compensation for submenus near the bottom of the screen
$('#adminmenu div.wp-submenu').css('margin-top', ''); $('#adminmenu div.wp-submenu').css('margin-top', '');
@ -197,19 +197,25 @@ $(document).ready( function() {
body.removeClass('auto-fold').removeClass('folded'); body.removeClass('auto-fold').removeClass('folded');
setUserSetting('unfold', 1); setUserSetting('unfold', 1);
setUserSetting('mfold', 'o'); setUserSetting('mfold', 'o');
state = 'open';
} else { } else {
body.addClass('auto-fold'); body.addClass('auto-fold');
setUserSetting('unfold', 0); setUserSetting('unfold', 0);
state = 'folded';
} }
} else { } else {
if ( body.hasClass('folded') ) { if ( body.hasClass('folded') ) {
body.removeClass('folded'); body.removeClass('folded');
setUserSetting('mfold', 'o'); setUserSetting('mfold', 'o');
state = 'open';
} else { } else {
body.addClass('folded'); body.addClass('folded');
setUserSetting('mfold', 'f'); setUserSetting('mfold', 'f');
state = 'folded';
} }
} }
$( document ).trigger( 'wp-collapse-menu', { state: state } );
}); });
if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device
@ -721,7 +727,7 @@ $(document).ready( function() {
window.wpResponsive.init(); window.wpResponsive.init();
}); });
// make Windows 8 devices playing along nicely // Make Windows 8 devices play along nicely.
(function(){ (function(){
if ( '-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/) ) { if ( '-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/) ) {
var msViewportStyle = document.createElement( 'style' ); var msViewportStyle = document.createElement( 'style' );

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,378 @@
window.wp = window.wp || {};
jQuery( document ).ready( function($) {
var $window = $( window ),
$document = $( document ),
$adminBar = $( '#wpadminbar' ),
$contentWrap = $( '#wp-content-wrap' ),
$tools = $( '#wp-content-editor-tools' ),
$visualTop,
$visualEditor,
$textTop = $( '#ed_toolbar' ),
$textEditor = $( '#content' ),
$textEditorClone = $( '<div id="content-textarea-clone"></div>' ),
$bottom = $( '#post-status-info' ),
$statusBar,
buffer = 200,
adjust,
fullscreen = window.wp.editor && window.wp.editor.fullscreen,
editorInstance,
fixedTop = false,
fixedBottom = false;
$textEditorClone.insertAfter( $textEditor );
// use to enable/disable
$contentWrap.addClass( 'wp-editor-expand' );
$( '#content-resize-handle' ).hide();
$textEditorClone.css( {
'font-family': $textEditor.css( 'font-family' ),
'font-size': $textEditor.css( 'font-size' ),
'line-height': $textEditor.css( 'line-height' ),
'padding': $textEditor.css( 'padding' ),
'padding-top': 37,
'white-space': 'pre-wrap',
'word-wrap': 'break-word'
} );
$textEditor.on( 'focus input propertychange', function() {
textEditorResize();
} );
$textEditor.on( 'keyup', function() {
var range = document.createRange(),
start = $textEditor[0].selectionStart,
end = $textEditor[0].selectionEnd,
textNode = $textEditorClone[0].firstChild,
windowHeight = $window.height(),
offset, cursorTop, cursorBottom, editorTop, editorBottom;
if ( start && end && start !== end ) {
return;
}
range.setStart( textNode, start );
range.setEnd( textNode, end + 1 );
offset = range.getBoundingClientRect();
if ( ! offset.height ) {
return;
}
cursorTop = offset.top;
cursorBottom = cursorTop + offset.height;
editorTop = $adminBar.outerHeight() + $textTop.outerHeight();
editorBottom = windowHeight - $bottom.outerHeight();
if ( cursorTop < editorTop || cursorBottom > editorBottom ) {
window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - windowHeight / 2 );
}
} );
function textEditorResize() {
if ( editorInstance && ! editorInstance.isHidden() ) {
return;
}
var hiddenHeight = $textEditorClone.width( $textEditor.width() ).text( $textEditor.val() + '&nbsp;' ).height(),
textEditorHeight = $textEditor.height();
if ( hiddenHeight < 300 ) {
hiddenHeight = 300;
}
if ( hiddenHeight === textEditorHeight ) {
return;
}
$textEditor.height( hiddenHeight );
adjust( 'resize' );
}
// We need to wait for TinyMCE to initialize.
$document.on( 'tinymce-editor-init.editor-expand', function( event, editor ) {
// Make sure it's the main editor.
if ( editor.id !== 'content' ) {
return;
}
// Copy the editor instance.
editorInstance = editor;
// Resizing will be handled by the autoresize plugin.
editor.theme.resizeTo = function() {};
// Set the minimum height to the initial viewport height.
editor.settings.autoresize_min_height = 300;
// Get the necessary UI elements.
$visualTop = $contentWrap.find( '.mce-toolbar-grp' );
$visualEditor = $contentWrap.find( '.mce-edit-area' );
$statusBar = $contentWrap.find( '.mce-statusbar' ).filter( ':visible' );
// Adjust when switching editor modes.
editor.on( 'show', function() {
setTimeout( function() {
editor.execCommand( 'mceAutoResize' );
adjust( 'resize' );
}, 200 );
} );
editor.on( 'keyup', function() {
var offset = getCursorOffset(),
windowHeight = $window.height(),
cursorTop, cursorBottom, editorTop, editorBottom;
if ( ! offset ) {
return;
}
cursorTop = offset.top + editor.getContentAreaContainer().getElementsByTagName( 'iframe' )[0].getBoundingClientRect().top;
cursorBottom = cursorTop + offset.height;
editorTop = $adminBar.outerHeight() + $tools.outerHeight() + $visualTop.outerHeight();
editorBottom = $window.height() - $bottom.outerHeight();
if ( cursorTop < editorTop || cursorBottom > editorBottom ) {
window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - windowHeight / 2 );
}
} );
function getCursorOffset() {
var selection = editor.selection,
node = selection.getNode(),
range = selection.getRng(),
view, clone, right, offset;
if ( tinymce.Env.ie && tinymce.Env.ie < 9 ) {
return;
}
if ( editor.plugins.wpview && ( view = editor.plugins.wpview.getView( node ) ) ) {
offset = view.getBoundingClientRect();
} else if ( selection.isCollapsed() ) {
clone = range.cloneRange();
if ( clone.startContainer.length > 1 ) {
if ( clone.startContainer.length > clone.endOffset ) {
clone.setEnd( clone.startContainer, clone.endOffset + 1 );
right = true;
} else {
clone.setStart( clone.startContainer, clone.endOffset - 1 );
}
selection.setRng( clone );
offset = selection.getRng().getBoundingClientRect();
selection.setRng( range );
} else {
offset = node.getBoundingClientRect();
}
} else {
offset = range.getBoundingClientRect();
}
if ( ! offset.height ) {
return false;
}
return offset;
}
editor.on( 'hide', function() {
textEditorResize();
adjust( 'resize' );
} );
// Adjust when the editor resizes.
editor.on( 'nodechange setcontent keyup FullscreenStateChanged', function() {
adjust( 'resize' );
} );
editor.on( 'wp-toolbar-toggle', function() {
$visualEditor.css( {
paddingTop: $visualTop.outerHeight()
} );
} );
// And adjust "immediately".
// Allow some time to load CSS etc.
setTimeout( function() {
$visualEditor.css( {
paddingTop: $visualTop.outerHeight()
} );
adjust( 'resize' );
}, 500 );
} );
// Adjust when the window is scrolled or resized.
$window.on( 'scroll resize', function( event ) {
adjust( event.type );
} );
// Adjust when exiting fullscreen mode.
fullscreen && fullscreen.pubsub.subscribe( 'hidden', function() {
adjust( 'resize' );
} );
// Adjust when collapsing the menu.
$document.on( 'wp-collapse-menu.editor-expand', function() {
adjust( 'resize' );
} )
// Adjust when changing the columns.
.on( 'postboxes-columnchange.editor-expand', function() {
adjust( 'resize' );
} )
// Adjust when changing the body class.
.on( 'editor-classchange.editor-expand', function() {
adjust( 'resize' );
} );
// Adjust the toolbars based on the active editor mode.
function adjust( eventType ) {
// Make sure we're not in fullscreen mode.
if ( fullscreen && fullscreen.settings.visible ) {
return;
}
var bottomHeight = $bottom.outerHeight(),
windowPos = $window.scrollTop(),
windowHeight = $window.height(),
windowWidth = $window.width(),
adminBarHeight = windowWidth > 600 ? $adminBar.height() : 0,
$top, $editor, visual,
toolsHeight, topPos, topHeight, editorPos, editorHeight, editorWidth, statusBarHeight;
// Visual editor.
if ( editorInstance && ! editorInstance.isHidden() ) {
$top = $visualTop;
$editor = $visualEditor;
visual = true;
// Doesn't hide the panel of 'styleselect'. :(
tinymce.each( editorInstance.controlManager.buttons, function( button ) {
if ( button._active && ( button.type === 'colorbutton' || button.type === 'panelbutton' || button.type === 'menubutton' ) ) {
button.hidePanel();
}
} );
// Text editor.
} else {
$top = $textTop;
$editor = $textEditor;
}
toolsHeight = $tools.outerHeight();
topPos = $top.parent().offset().top;
topHeight = $top.outerHeight();
editorPos = $editor.offset().top;
editorHeight = $editor.outerHeight();
editorWidth = $editor.outerWidth();
statusBarHeight = visual ? $statusBar.outerHeight() : 0;
// Maybe pin the top.
if ( ( ! fixedTop || eventType === 'resize' ) &&
// Handle scrolling down.
( windowPos >= ( topPos - toolsHeight - adminBarHeight ) &&
// Handle scrolling up.
windowPos <= ( topPos - toolsHeight - adminBarHeight + editorHeight - buffer ) ) ) {
fixedTop = true;
$top.css( {
position: 'fixed',
top: adminBarHeight + toolsHeight,
width: editorWidth - ( visual ? 0 : 38 ),
borderTop: '1px solid #e5e5e5'
} );
$tools.css( {
position: 'fixed',
top: adminBarHeight,
width: editorWidth + 2
} );
// Maybe unpin the top.
} else if ( fixedTop || eventType === 'resize' ) {
// Handle scrolling up.
if ( windowPos <= ( topPos - toolsHeight - adminBarHeight ) ) {
fixedTop = false;
$top.css( {
position: 'absolute',
top: 0,
borderTop: 'none',
width: $editor.parent().width() - ( $top.outerWidth() - $top.width() )
} );
$tools.css( {
position: 'absolute',
top: 0,
borderTop: 'none',
width: $contentWrap.width()
} );
// Handle scrolling down.
} else if ( windowPos >= ( topPos - toolsHeight - adminBarHeight + editorHeight - buffer ) ) {
fixedTop = false;
$top.css( {
position: 'absolute',
top: window.pageYOffset - $editor.offset().top + adminBarHeight + $tools.outerHeight(),
borderTop: 'none'
} );
$tools.css( {
position: 'absolute',
top: window.pageYOffset - $contentWrap.offset().top + adminBarHeight,
borderTop: 'none',
width: $contentWrap.width()
} );
}
}
// Maybe adjust the bottom bar.
if ( ( ! fixedBottom || eventType === 'resize' ) &&
// + 1 for the border around the .wp-editor-container.
( windowPos + windowHeight ) <= ( editorPos + editorHeight + bottomHeight + statusBarHeight + 1 ) ) {
fixedBottom = true;
$bottom.css( {
position: 'fixed',
bottom: 0,
width: editorWidth + 2,
borderTop: '1px solid #dedede'
} );
} else if ( fixedBottom &&
( windowPos + windowHeight ) > ( editorPos + editorHeight + bottomHeight + statusBarHeight - 1 ) ) {
fixedBottom = false;
$bottom.css( {
position: 'relative',
bottom: 'auto',
width: '100%',
borderTop: 'none'
} );
}
}
textEditorResize();
$tools.css( {
position: 'absolute',
top: 0,
width: $contentWrap.width()
} );
$contentWrap.css( {
paddingTop: $tools.outerHeight()
} );
// This needs to execute after quicktags is ready or a button is added...
setTimeout( function() {
$textEditor.css( {
paddingTop: $textTop.outerHeight() + parseInt( $textEditor.css( 'padding-top' ), 10 )
} );
}, 500 );
});

1
wp-admin/js/editor-expand.min.js vendored Normal file
View File

@ -0,0 +1 @@
window.wp=window.wp||{},jQuery(document).ready(function(a){function b(){if(!g||g.isHidden()){var a=o.width(n.width()).text(n.val()+"&nbsp;").height(),b=n.height();300>a&&(a=300),a!==b&&(n.height(a),c("resize"))}}function c(a){if(!r||!r.settings.visible){var b,c,i,o,u,v,w,x,y,z,A=p.outerHeight(),B=h.scrollTop(),C=h.height(),D=h.width(),E=D>600?j.height():0;g&&!g.isHidden()?(b=d,c=e,i=!0,tinymce.each(g.controlManager.buttons,function(a){!a._active||"colorbutton"!==a.type&&"panelbutton"!==a.type&&"menubutton"!==a.type||a.hidePanel()})):(b=m,c=n),o=l.outerHeight(),u=b.parent().offset().top,v=b.outerHeight(),w=c.offset().top,x=c.outerHeight(),y=c.outerWidth(),z=i?f.outerHeight():0,(!s||"resize"===a)&&B>=u-o-E&&u-o-E+x-q>=B?(s=!0,b.css({position:"fixed",top:E+o,width:y-(i?0:38),borderTop:"1px solid #e5e5e5"}),l.css({position:"fixed",top:E,width:y+2})):(s||"resize"===a)&&(u-o-E>=B?(s=!1,b.css({position:"absolute",top:0,borderTop:"none",width:c.parent().width()-(b.outerWidth()-b.width())}),l.css({position:"absolute",top:0,borderTop:"none",width:k.width()})):B>=u-o-E+x-q&&(s=!1,b.css({position:"absolute",top:window.pageYOffset-c.offset().top+E+l.outerHeight(),borderTop:"none"}),l.css({position:"absolute",top:window.pageYOffset-k.offset().top+E,borderTop:"none",width:k.width()}))),(!t||"resize"===a)&&w+x+A+z+1>=B+C?(t=!0,p.css({position:"fixed",bottom:0,width:y+2,borderTop:"1px solid #dedede"})):t&&B+C>w+x+A+z-1&&(t=!1,p.css({position:"relative",bottom:"auto",width:"100%",borderTop:"none"}))}}var d,e,f,c,g,h=a(window),i=a(document),j=a("#wpadminbar"),k=a("#wp-content-wrap"),l=a("#wp-content-editor-tools"),m=a("#ed_toolbar"),n=a("#content"),o=a('<div id="content-textarea-clone"></div>'),p=a("#post-status-info"),q=200,r=window.wp.editor&&window.wp.editor.fullscreen,s=!1,t=!1;o.insertAfter(n),k.addClass("wp-editor-expand"),a("#content-resize-handle").hide(),o.css({"font-family":n.css("font-family"),"font-size":n.css("font-size"),"line-height":n.css("line-height"),padding:n.css("padding"),"padding-top":37,"white-space":"pre-wrap","word-wrap":"break-word"}),n.on("focus input propertychange",function(){b()}),n.on("keyup",function(){var a,b,c,d,e,f=document.createRange(),g=n[0].selectionStart,i=n[0].selectionEnd,k=o[0].firstChild,l=h.height();g&&i&&g!==i||(f.setStart(k,g),f.setEnd(k,i+1),a=f.getBoundingClientRect(),a.height&&(b=a.top,c=b+a.height,d=j.outerHeight()+m.outerHeight(),e=l-p.outerHeight(),(d>b||c>e)&&window.scrollTo(window.pageXOffset,b+window.pageYOffset-l/2)))}),i.on("tinymce-editor-init.editor-expand",function(a,i){function m(){var a,b,c,d,e=i.selection,f=e.getNode(),g=e.getRng();if(!(tinymce.Env.ie&&tinymce.Env.ie<9))return i.plugins.wpview&&(a=i.plugins.wpview.getView(f))?d=a.getBoundingClientRect():e.isCollapsed()?(b=g.cloneRange(),b.startContainer.length>1?(b.startContainer.length>b.endOffset?(b.setEnd(b.startContainer,b.endOffset+1),c=!0):b.setStart(b.startContainer,b.endOffset-1),e.setRng(b),d=e.getRng().getBoundingClientRect(),e.setRng(g)):d=f.getBoundingClientRect()):d=g.getBoundingClientRect(),d.height?d:!1}"content"===i.id&&(g=i,i.theme.resizeTo=function(){},i.settings.autoresize_min_height=300,d=k.find(".mce-toolbar-grp"),e=k.find(".mce-edit-area"),f=k.find(".mce-statusbar").filter(":visible"),i.on("show",function(){setTimeout(function(){i.execCommand("mceAutoResize"),c("resize")},200)}),i.on("keyup",function(){var a,b,c,e,f=m(),g=h.height();f&&(a=f.top+i.getContentAreaContainer().getElementsByTagName("iframe")[0].getBoundingClientRect().top,b=a+f.height,c=j.outerHeight()+l.outerHeight()+d.outerHeight(),e=h.height()-p.outerHeight(),(c>a||b>e)&&window.scrollTo(window.pageXOffset,a+window.pageYOffset-g/2))}),i.on("hide",function(){b(),c("resize")}),i.on("nodechange setcontent keyup FullscreenStateChanged",function(){c("resize")}),i.on("wp-toolbar-toggle",function(){e.css({paddingTop:d.outerHeight()})}),setTimeout(function(){e.css({paddingTop:d.outerHeight()}),c("resize")},500))}),h.on("scroll resize",function(a){c(a.type)}),r&&r.pubsub.subscribe("hidden",function(){c("resize")}),i.on("wp-collapse-menu.editor-expand",function(){c("resize")}).on("postboxes-columnchange.editor-expand",function(){c("resize")}).on("editor-classchange.editor-expand",function(){c("resize")}),b(),l.css({position:"absolute",top:0,width:k.width()}),k.css({paddingTop:l.outerHeight()}),setTimeout(function(){n.css({paddingTop:m.outerHeight()+parseInt(n.css("padding-top"),10)})},500)});

View File

@ -1004,7 +1004,8 @@ jQuery(document).ready( function($) {
( function() { ( function() {
var editor, offset, mce, var editor, offset, mce,
$textarea = $('textarea#content'), $textarea = $('textarea#content'),
$handle = $('#post-status-info'); $handle = $('#post-status-info'),
$contentWrap = $('#wp-content-wrap');
// No point for touch devices // No point for touch devices
if ( ! $textarea.length || 'ontouchstart' in window ) { if ( ! $textarea.length || 'ontouchstart' in window ) {
@ -1012,6 +1013,10 @@ jQuery(document).ready( function($) {
} }
function dragging( event ) { function dragging( event ) {
if ( $contentWrap.hasClass( 'wp-editor-expand' ) ) {
return;
}
if ( mce ) { if ( mce ) {
editor.theme.resizeTo( null, offset + event.pageY ); editor.theme.resizeTo( null, offset + event.pageY );
} else { } else {
@ -1024,6 +1029,10 @@ jQuery(document).ready( function($) {
function endDrag() { function endDrag() {
var height, toolbarHeight; var height, toolbarHeight;
if ( $contentWrap.hasClass( 'wp-editor-expand' ) ) {
return;
}
if ( mce ) { if ( mce ) {
editor.focus(); editor.focus();
toolbarHeight = parseInt( $( '#wp-content-editor-container .mce-toolbar-grp' ).height(), 10 ); toolbarHeight = parseInt( $( '#wp-content-editor-container .mce-toolbar-grp' ).height(), 10 );
@ -1074,14 +1083,11 @@ jQuery(document).ready( function($) {
$( '#post-formats-select input.post-format' ).on( 'change.set-editor-class', function() { $( '#post-formats-select input.post-format' ).on( 'change.set-editor-class', function() {
var editor, body, format = this.id; var editor, body, format = this.id;
if ( format && $( this ).prop('checked') ) { if ( format && $( this ).prop( 'checked' ) && ( editor = tinymce.get( 'content' ) ) ) {
editor = tinymce.get( 'content' );
if ( editor ) {
body = editor.getBody(); body = editor.getBody();
body.className = body.className.replace( /\bpost-format-[^ ]+/, '' ); body.className = body.className.replace( /\bpost-format-[^ ]+/, '' );
editor.dom.addClass( body, format == 'post-format-0' ? 'post-format-standard' : format ); editor.dom.addClass( body, format == 'post-format-0' ? 'post-format-standard' : format );
} $( document ).trigger( 'editor-classchange' );
} }
}); });
} }

File diff suppressed because one or more lines are too long

View File

@ -159,6 +159,8 @@ var postboxes;
if ( el ) { if ( el ) {
el.className = el.className.replace(/columns-\d+/, 'columns-' + n); el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
} }
$( document ).trigger( 'postboxes-columnchange' );
}, },
_pb_change : function() { _pb_change : function() {

View File

@ -1 +1 @@
var postboxes;!function(a){postboxes={add_postbox_toggles:function(b,c){var d=this;d.init(b,c),a(".postbox .hndle, .postbox .handlediv").bind("click.postboxes",function(){var c=a(this).parent(".postbox"),e=c.attr("id");"dashboard_browser_nag"!=e&&(c.toggleClass("closed"),"press-this"!=b&&d.save_state(b),e&&(!c.hasClass("closed")&&a.isFunction(postboxes.pbshow)?d.pbshow(e):c.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&d.pbhide(e)))}),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").bind("click.postboxes",function(){var b=a(this).parents(".postbox").attr("id")+"-hide";return a("#"+b).prop("checked",!1).triggerHandler("click"),!1}),a(".hide-postbox-tog").bind("click.postboxes",function(){var c=a(this).val();a(this).prop("checked")?(a("#"+c).show(),a.isFunction(postboxes.pbshow)&&d.pbshow(c)):(a("#"+c).hide(),a.isFunction(postboxes.pbhide)&&d.pbhide(c)),d.save_state(b),d._mark_area()}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var c=parseInt(a(this).val(),10);c&&(d._pb_edit(c),d.save_order(b))})},init:function(b,c){var d=a(document.body).hasClass("mobile");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){return a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void a(this).sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area()},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b))},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery); var postboxes;!function(a){postboxes={add_postbox_toggles:function(b,c){var d=this;d.init(b,c),a(".postbox .hndle, .postbox .handlediv").bind("click.postboxes",function(){var c=a(this).parent(".postbox"),e=c.attr("id");"dashboard_browser_nag"!=e&&(c.toggleClass("closed"),"press-this"!=b&&d.save_state(b),e&&(!c.hasClass("closed")&&a.isFunction(postboxes.pbshow)?d.pbshow(e):c.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&d.pbhide(e)))}),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").bind("click.postboxes",function(){var b=a(this).parents(".postbox").attr("id")+"-hide";return a("#"+b).prop("checked",!1).triggerHandler("click"),!1}),a(".hide-postbox-tog").bind("click.postboxes",function(){var c=a(this).val();a(this).prop("checked")?(a("#"+c).show(),a.isFunction(postboxes.pbshow)&&d.pbshow(c)):(a("#"+c).hide(),a.isFunction(postboxes.pbhide)&&d.pbhide(c)),d.save_state(b),d._mark_area()}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var c=parseInt(a(this).val(),10);c&&(d._pb_edit(c),d.save_order(b))})},init:function(b,c){var d=a(document.body).hasClass("mobile");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){return a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void a(this).sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area()},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);

View File

@ -347,6 +347,7 @@ final class _WP_Editors {
'textcolor', 'textcolor',
'fullscreen', 'fullscreen',
'wordpress', 'wordpress',
'wpautoresize',
'wpeditimage', 'wpeditimage',
'wpgallery', 'wpgallery',
'wplink', 'wplink',

View File

@ -148,8 +148,13 @@ div.mce-tab {
div.mce-toolbar-grp { div.mce-toolbar-grp {
border-bottom: 1px solid #dedede; border-bottom: 1px solid #dedede;
background: #f5f5f5; background: #f5f5f5;
padding: 3px; padding: 0;
position: relative; position: relative;
z-index: 999;
}
div.mce-toolbar-grp > div {
padding: 3px;
} }
.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first { .has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first {
@ -161,14 +166,26 @@ div.mce-toolbar-grp {
} }
div.mce-statusbar { div.mce-statusbar {
border-top: 1px solid #eee; border-top: 1px solid #e5e5e5;
} }
div.mce-path { div.mce-path {
padding: 0 8px 2px; padding: 2px 10px;
margin: 0; margin: 0;
} }
.mce-path,
.mce-path-item,
.mce-path .mce-divider {
font-size: 12px;
line-height: 18px;
}
.mce-path-item:focus {
background: none;
color: inherit;
}
.mce-toolbar .mce-btn, .mce-toolbar .mce-btn,
.qt-fullscreen { .qt-fullscreen {
border-color: transparent; border-color: transparent;
@ -731,7 +748,7 @@ i.mce-i-hr:before {
} }
.mce-i-wp_code:before { .mce-i-wp_code:before {
content: '\e017'; content: '\f475';
} }
/* Editors */ /* Editors */
@ -740,8 +757,16 @@ i.mce-i-hr:before {
} }
.wp-editor-tools { .wp-editor-tools {
background-color: #f1f1f1;
padding-top: 20px;
position: relative; position: relative;
z-index: 1; z-index: 1000;
}
.wp-editor-tools:after {
clear: both;
content: '';
display: table;
} }
.wp-editor-container { .wp-editor-container {
@ -763,10 +788,6 @@ i.mce-i-hr:before {
box-sizing: border-box; box-sizing: border-box;
} }
.wp-editor-tools {
padding: 0;
}
.wp-editor-container textarea.wp-editor-area { .wp-editor-container textarea.wp-editor-area {
width: 100%; width: 100%;
margin: 0; margin: 0;

File diff suppressed because one or more lines are too long

View File

@ -148,8 +148,13 @@ div.mce-tab {
div.mce-toolbar-grp { div.mce-toolbar-grp {
border-bottom: 1px solid #dedede; border-bottom: 1px solid #dedede;
background: #f5f5f5; background: #f5f5f5;
padding: 3px; padding: 0;
position: relative; position: relative;
z-index: 999;
}
div.mce-toolbar-grp > div {
padding: 3px;
} }
.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first { .has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first {
@ -161,14 +166,26 @@ div.mce-toolbar-grp {
} }
div.mce-statusbar { div.mce-statusbar {
border-top: 1px solid #eee; border-top: 1px solid #e5e5e5;
} }
div.mce-path { div.mce-path {
padding: 0 8px 2px; padding: 2px 10px;
margin: 0; margin: 0;
} }
.mce-path,
.mce-path-item,
.mce-path .mce-divider {
font-size: 12px;
line-height: 18px;
}
.mce-path-item:focus {
background: none;
color: inherit;
}
.mce-toolbar .mce-btn, .mce-toolbar .mce-btn,
.qt-fullscreen { .qt-fullscreen {
border-color: transparent; border-color: transparent;
@ -731,7 +748,7 @@ i.mce-i-hr:before {
} }
.mce-i-wp_code:before { .mce-i-wp_code:before {
content: '\e017'; content: '\f475';
} }
/* Editors */ /* Editors */
@ -740,8 +757,16 @@ i.mce-i-hr:before {
} }
.wp-editor-tools { .wp-editor-tools {
background-color: #f1f1f1;
padding-top: 20px;
position: relative; position: relative;
z-index: 1; z-index: 1000;
}
.wp-editor-tools:after {
clear: both;
content: '';
display: table;
} }
.wp-editor-container { .wp-editor-container {
@ -763,10 +788,6 @@ i.mce-i-hr:before {
box-sizing: border-box; box-sizing: border-box;
} }
.wp-editor-tools {
padding: 0;
}
.wp-editor-container textarea.wp-editor-area { .wp-editor-container textarea.wp-editor-area {
width: 100%; width: 100%;
margin: 0; margin: 0;

File diff suppressed because one or more lines are too long

View File

@ -52,6 +52,8 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
wpAdvButton && wpAdvButton.active( true ); wpAdvButton && wpAdvButton.active( true );
} }
} }
editor.fire( 'wp-toolbar-toggle' );
} }
// Add the kitchen sink button :) // Add the kitchen sink button :)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,326 @@
/**
* plugin.js
*
* Copyright, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
// Forked for WordPress so it can be turned on/off after loading.
/*global tinymce:true */
/*eslint no-nested-ternary:0 */
/**
* Auto Resize
*
* This plugin automatically resizes the content area to fit its content height.
* It will retain a minimum height, which is the height of the content area when
* it's initialized.
*/
tinymce.PluginManager.add('wpautoresize', function(editor) {
var settings = editor.settings, oldSize = 0;
function isFullscreen() {
return editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();
}
if (editor.settings.inline) {
return;
}
/**
* This method gets executed each time the editor needs to resize.
*/
function resize(e) {
var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight, marginTop, marginBottom;
doc = editor.getDoc();
if (!doc) {
return;
}
body = doc.body;
docElm = doc.documentElement;
resizeHeight = settings.autoresize_min_height;
if (!body || (e && e.type === "setcontent" && e.initial) || isFullscreen()) {
if (body && docElm) {
body.style.overflowY = "auto";
docElm.style.overflowY = "auto"; // Old IE
}
return;
}
// Calculate outer height of the body element using CSS styles
marginTop = editor.dom.getStyle(body, 'margin-top', true);
marginBottom = editor.dom.getStyle(body, 'margin-bottom', true);
myHeight = body.offsetHeight + parseInt(marginTop, 10) + parseInt(marginBottom, 10);
// Make sure we have a valid height
if (isNaN(myHeight) || myHeight <= 0) {
// Get height differently depending on the browser used
myHeight = tinymce.Env.ie ? body.scrollHeight : (tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight);
}
// Don't make it smaller than the minimum height
if (myHeight > settings.autoresize_min_height) {
resizeHeight = myHeight;
}
// If a maximum height has been defined don't exceed this height
if (settings.autoresize_max_height && myHeight > settings.autoresize_max_height) {
resizeHeight = settings.autoresize_max_height;
body.style.overflowY = "auto";
docElm.style.overflowY = "auto"; // Old IE
} else {
body.style.overflowY = "hidden";
docElm.style.overflowY = "hidden"; // Old IE
body.scrollTop = 0;
}
// Resize content element
if (resizeHeight !== oldSize) {
deltaSize = resizeHeight - oldSize;
DOM.setStyle(DOM.get(editor.id + '_ifr'), 'height', resizeHeight + 'px');
oldSize = resizeHeight;
// WebKit doesn't decrease the size of the body element until the iframe gets resized
// So we need to continue to resize the iframe down until the size gets fixed
if (tinymce.isWebKit && deltaSize < 0) {
resize(e);
}
}
}
/**
* Calls the resize x times in 100ms intervals. We can't wait for load events since
* the CSS files might load async.
*/
function wait( times, interval, callback ) {
setTimeout( function() {
resize({});
if ( times-- ) {
wait( times, interval, callback );
} else if ( callback ) {
callback();
}
}, interval );
}
// Define minimum height
settings.autoresize_min_height = parseInt(editor.getParam('autoresize_min_height', editor.getElement().offsetHeight), 10);
// Define maximum height
settings.autoresize_max_height = parseInt(editor.getParam('autoresize_max_height', 0), 10);
function on() {
if ( ! editor.dom.hasClass( editor.getBody(), 'wp-autoresize' ) ) {
editor.dom.addClass( editor.getBody(), 'wp-autoresize' );
// Add appropriate listeners for resizing the content area
editor.on( 'nodechange setcontent keyup FullscreenStateChanged', resize );
}
}
function off() {
// Don't turn off if the setting is 'on'
if ( ! settings.wp_autoresize_on ) {
editor.dom.removeClass( editor.getBody(), 'wp-autoresize' );
editor.off( 'nodechange setcontent keyup FullscreenStateChanged', resize );
oldSize = 0;
}
}
if ( settings.wp_autoresize_on ) {
// Turn resizing on when the editor loads
editor.on( 'init', function() {
editor.dom.addClass( editor.getBody(), 'wp-autoresize' );
});
editor.on( 'nodechange setcontent keyup FullscreenStateChanged', resize );
if ( editor.getParam( 'autoresize_on_init', true ) ) {
editor.on( 'init', function() {
// Hit it 20 times in 100 ms intervals
wait( 10, 200, function() {
// Hit it 5 times in 1 sec intervals
wait( 5, 1000 );
});
});
}
}
// Register the command
editor.addCommand( 'wpAutoResize', resize );
// On/off
editor.addCommand( 'wpAutoResizeOn', on );
editor.addCommand( 'wpAutoResizeOff', off );
});
/**
* plugin.js
*
* Copyright, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
// Forked for WordPress so it can be turned on/off after loading.
/*global tinymce:true */
/*eslint no-nested-ternary:0 */
/**
* Auto Resize
*
* This plugin automatically resizes the content area to fit its content height.
* It will retain a minimum height, which is the height of the content area when
* it's initialized.
*/
tinymce.PluginManager.add('wpautoresize', function(editor) {
var settings = editor.settings, oldSize = 0;
function isFullscreen() {
return editor.plugins.fullscreen && editor.plugins.fullscreen.isFullscreen();
}
if (editor.settings.inline) {
return;
}
/**
* This method gets executed each time the editor needs to resize.
*/
function resize(e) {
var deltaSize, doc, body, docElm, DOM = tinymce.DOM, resizeHeight, myHeight, marginTop, marginBottom;
doc = editor.getDoc();
if (!doc) {
return;
}
body = doc.body;
docElm = doc.documentElement;
resizeHeight = settings.autoresize_min_height;
if (!body || (e && e.type === "setcontent" && e.initial) || isFullscreen()) {
if (body && docElm) {
body.style.overflowY = "auto";
docElm.style.overflowY = "auto"; // Old IE
}
return;
}
// Calculate outer height of the body element using CSS styles
marginTop = editor.dom.getStyle(body, 'margin-top', true);
marginBottom = editor.dom.getStyle(body, 'margin-bottom', true);
myHeight = body.offsetHeight + parseInt(marginTop, 10) + parseInt(marginBottom, 10);
// Make sure we have a valid height
if (isNaN(myHeight) || myHeight <= 0) {
// Get height differently depending on the browser used
myHeight = tinymce.Env.ie ? body.scrollHeight : (tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight);
}
// Don't make it smaller than the minimum height
if (myHeight > settings.autoresize_min_height) {
resizeHeight = myHeight;
}
// If a maximum height has been defined don't exceed this height
if (settings.autoresize_max_height && myHeight > settings.autoresize_max_height) {
resizeHeight = settings.autoresize_max_height;
body.style.overflowY = "auto";
docElm.style.overflowY = "auto"; // Old IE
} else {
body.style.overflowY = "hidden";
docElm.style.overflowY = "hidden"; // Old IE
body.scrollTop = 0;
}
// Resize content element
if (resizeHeight !== oldSize) {
deltaSize = resizeHeight - oldSize;
DOM.setStyle(DOM.get(editor.id + '_ifr'), 'height', resizeHeight + 'px');
oldSize = resizeHeight;
// WebKit doesn't decrease the size of the body element until the iframe gets resized
// So we need to continue to resize the iframe down until the size gets fixed
if (tinymce.isWebKit && deltaSize < 0) {
resize(e);
}
}
}
/**
* Calls the resize x times in 100ms intervals. We can't wait for load events since
* the CSS files might load async.
*/
function wait( times, interval, callback ) {
setTimeout( function() {
resize({});
if ( times-- ) {
wait( times, interval, callback );
} else if ( callback ) {
callback();
}
}, interval );
}
// Define minimum height
settings.autoresize_min_height = parseInt(editor.getParam('autoresize_min_height', editor.getElement().offsetHeight), 10);
// Define maximum height
settings.autoresize_max_height = parseInt(editor.getParam('autoresize_max_height', 0), 10);
function on() {
if ( ! editor.dom.hasClass( editor.getBody(), 'wp-autoresize' ) ) {
editor.dom.addClass( editor.getBody(), 'wp-autoresize' );
// Add appropriate listeners for resizing the content area
editor.on( 'nodechange setcontent keyup FullscreenStateChanged', resize );
}
}
function off() {
// Don't turn off if the setting is 'on'
if ( ! settings.wp_autoresize_on ) {
editor.dom.removeClass( editor.getBody(), 'wp-autoresize' );
editor.off( 'nodechange setcontent keyup FullscreenStateChanged', resize );
oldSize = 0;
}
}
if ( settings.wp_autoresize_on ) {
// Turn resizing on when the editor loads
editor.on( 'init', function() {
editor.dom.addClass( editor.getBody(), 'wp-autoresize' );
});
editor.on( 'nodechange setcontent keyup FullscreenStateChanged', resize );
if ( editor.getParam( 'autoresize_on_init', true ) ) {
editor.on( 'init', function() {
// Hit it 20 times in 100 ms intervals
wait( 10, 200, function() {
// Hit it 5 times in 1 sec intervals
wait( 5, 1000 );
});
});
}
}
// Register the command
editor.addCommand( 'wpAutoResize', resize );
// On/off
editor.addCommand( 'wpAutoResizeOn', on );
editor.addCommand( 'wpAutoResizeOff', off );
});

View File

@ -0,0 +1 @@
tinymce.PluginManager.add("wpautoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var e,f,i,j,k,l,m,n,o=tinymce.DOM;if(f=a.getDoc()){if(i=f.body,j=f.documentElement,k=g.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>g.autoresize_min_height&&(k=l),g.autoresize_max_height&&l>g.autoresize_max_height?(k=g.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==h&&(e=k-h,o.setStyle(o.get(a.id+"_ifr"),"height",k+"px"),h=k,tinymce.isWebKit&&0>e&&c(d))}}function d(a,b,e){setTimeout(function(){c({}),a--?d(a,b,e):e&&e()},b)}function e(){a.dom.hasClass(a.getBody(),"wp-autoresize")||(a.dom.addClass(a.getBody(),"wp-autoresize"),a.on("nodechange setcontent keyup FullscreenStateChanged",c))}function f(){g.wp_autoresize_on||(a.dom.removeClass(a.getBody(),"wp-autoresize"),a.off("nodechange setcontent keyup FullscreenStateChanged",c),h=0)}var g=a.settings,h=0;a.settings.inline||(g.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),g.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),g.wp_autoresize_on&&(a.on("init",function(){a.dom.addClass(a.getBody(),"wp-autoresize")}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(10,200,function(){d(5,1e3)})})),a.addCommand("wpAutoResize",c),a.addCommand("wpAutoResizeOn",e),a.addCommand("wpAutoResizeOff",f))}),tinymce.PluginManager.add("wpautoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var e,f,i,j,k,l,m,n,o=tinymce.DOM;if(f=a.getDoc()){if(i=f.body,j=f.documentElement,k=g.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>g.autoresize_min_height&&(k=l),g.autoresize_max_height&&l>g.autoresize_max_height?(k=g.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==h&&(e=k-h,o.setStyle(o.get(a.id+"_ifr"),"height",k+"px"),h=k,tinymce.isWebKit&&0>e&&c(d))}}function d(a,b,e){setTimeout(function(){c({}),a--?d(a,b,e):e&&e()},b)}function e(){a.dom.hasClass(a.getBody(),"wp-autoresize")||(a.dom.addClass(a.getBody(),"wp-autoresize"),a.on("nodechange setcontent keyup FullscreenStateChanged",c))}function f(){g.wp_autoresize_on||(a.dom.removeClass(a.getBody(),"wp-autoresize"),a.off("nodechange setcontent keyup FullscreenStateChanged",c),h=0)}var g=a.settings,h=0;a.settings.inline||(g.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),g.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),g.wp_autoresize_on&&(a.on("init",function(){a.dom.addClass(a.getBody(),"wp-autoresize")}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(10,200,function(){d(5,1e3)})})),a.addCommand("wpAutoResize",c),a.addCommand("wpAutoResizeOn",e),a.addCommand("wpAutoResizeOff",f))});

View File

@ -3,60 +3,20 @@
* WP Fullscreen (Distraction Free Writing) TinyMCE plugin * WP Fullscreen (Distraction Free Writing) TinyMCE plugin
*/ */
tinymce.PluginManager.add( 'wpfullscreen', function( editor ) { tinymce.PluginManager.add( 'wpfullscreen', function( editor ) {
var settings = editor.settings, var settings = editor.settings;
oldSize = 0;
function resize( e ) {
var deltaSize, myHeight,
d = editor.getDoc(),
body = d.body,
DOM = tinymce.DOM,
resizeHeight = 250;
if ( ( e && e.type === 'setcontent' && e.initial ) || editor.settings.inline ) {
return;
}
// Get height differently depending on the browser used
myHeight = tinymce.Env.ie ? body.scrollHeight : ( tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight );
// Don't make it smaller than 250px
if ( myHeight > 250 ) {
resizeHeight = myHeight;
}
body.scrollTop = 0;
// Resize content element
if ( resizeHeight !== oldSize ) {
deltaSize = resizeHeight - oldSize;
DOM.setStyle( DOM.get( editor.id + '_ifr' ), 'height', resizeHeight + 'px' );
oldSize = resizeHeight;
// WebKit doesn't decrease the size of the body element until the iframe gets resized
// So we need to continue to resize the iframe down until the size gets fixed
if ( tinymce.isWebKit && deltaSize < 0 ) {
resize( e );
}
}
}
// Register the command
editor.addCommand( 'wpAutoResize', resize );
function fullscreenOn() { function fullscreenOn() {
settings.wp_fullscreen = true; settings.wp_fullscreen = true;
editor.dom.addClass( editor.getDoc().documentElement, 'wp-fullscreen' ); editor.dom.addClass( editor.getDoc().documentElement, 'wp-fullscreen' );
// Add listeners for auto-resizing // Start auto-resizing
editor.on( 'change setcontent paste keyup', resize ); editor.execCommand( 'wpAutoResizeOn' );
} }
function fullscreenOff() { function fullscreenOff() {
settings.wp_fullscreen = false; settings.wp_fullscreen = false;
editor.dom.removeClass( editor.getDoc().documentElement, 'wp-fullscreen' ); editor.dom.removeClass( editor.getDoc().documentElement, 'wp-fullscreen' );
// Remove listeners for auto-resizing // Stop auto-resizing
editor.off( 'change setcontent paste keyup', resize ); editor.execCommand( 'wpAutoResizeOff' );
oldSize = 0;
} }
// For use from outside the editor. // For use from outside the editor.

View File

@ -1 +1 @@
tinymce.PluginManager.add("wpfullscreen",function(a){function b(c){var d,e,f=a.getDoc(),g=f.body,i=tinymce.DOM,j=250;c&&"setcontent"===c.type&&c.initial||a.settings.inline||(e=tinymce.Env.ie?g.scrollHeight:tinymce.Env.webkit&&0===g.clientHeight?0:g.offsetHeight,e>250&&(j=e),g.scrollTop=0,j!==h&&(d=j-h,i.setStyle(i.get(a.id+"_ifr"),"height",j+"px"),h=j,tinymce.isWebKit&&0>d&&b(c)))}function c(){g.wp_fullscreen=!0,a.dom.addClass(a.getDoc().documentElement,"wp-fullscreen"),a.on("change setcontent paste keyup",b)}function d(){g.wp_fullscreen=!1,a.dom.removeClass(a.getDoc().documentElement,"wp-fullscreen"),a.off("change setcontent paste keyup",b),h=0}function e(){return"undefined"!=typeof wp&&wp.editor&&wp.editor.fullscreen}function f(){var b=e();b&&(a.getParam("wp_fullscreen")?b.off():b.on())}var g=a.settings,h=0;a.addCommand("wpAutoResize",b),a.addCommand("wpFullScreenOn",c),a.addCommand("wpFullScreenOff",d),a.addCommand("wpFullScreen",f),a.on("keydown",function(a){var b;27===a.keyCode&&(b=e())&&b.settings.visible&&b.off()}),a.on("init",function(){a.getParam("wp_fullscreen")&&c(),a.addShortcut("alt+shift+w","","wpFullScreen")}),a.addButton("wp_fullscreen",{tooltip:"Distraction Free Writing",shortcut:"Alt+Shift+W",onclick:f,classes:"wp-fullscreen btn widget"}),a.addMenuItem("wp_fullscreen",{text:"Distraction Free Writing",icon:"wp_fullscreen",shortcut:"Alt+Shift+W",context:"view",onclick:f})}); tinymce.PluginManager.add("wpfullscreen",function(a){function b(){f.wp_fullscreen=!0,a.dom.addClass(a.getDoc().documentElement,"wp-fullscreen"),a.execCommand("wpAutoResizeOn")}function c(){f.wp_fullscreen=!1,a.dom.removeClass(a.getDoc().documentElement,"wp-fullscreen"),a.execCommand("wpAutoResizeOff")}function d(){return"undefined"!=typeof wp&&wp.editor&&wp.editor.fullscreen}function e(){var b=d();b&&(a.getParam("wp_fullscreen")?b.off():b.on())}var f=a.settings;a.addCommand("wpFullScreenOn",b),a.addCommand("wpFullScreenOff",c),a.addCommand("wpFullScreen",e),a.on("keydown",function(a){var b;27===a.keyCode&&(b=d())&&b.settings.visible&&b.off()}),a.on("init",function(){a.getParam("wp_fullscreen")&&b(),a.addShortcut("alt+shift+w","","wpFullScreen")}),a.addButton("wp_fullscreen",{tooltip:"Distraction Free Writing",shortcut:"Alt+Shift+W",onclick:e,classes:"wp-fullscreen btn widget"}),a.addMenuItem("wp_fullscreen",{text:"Distraction Free Writing",icon:"wp_fullscreen",shortcut:"Alt+Shift+W",context:"view",onclick:e})});

View File

@ -646,6 +646,7 @@ tinymce.PluginManager.add( 'wpview', function( editor ) {
return { return {
getViewText: getViewText, getViewText: getViewText,
setViewText: setViewText setViewText: setViewText,
getView: getView
}; };
}); });

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,17 @@ body {
font-size: 13px; font-size: 13px;
line-height: 19px; line-height: 19px;
color: #333; color: #333;
margin: 10px; margin: 9px 10px;
}
body.wp-autoresize {
max-width: 100%;
overflow: visible !important;
/* The padding ensures margins of the children are contained in the body. */
padding-top: 1px !important;
padding-bottom: 1px !important;
padding-left: 0 !important;
padding-right: 0 !important;
} }
/* When font-weight is different than the default browser style, /* When font-weight is different than the default browser style,

View File

@ -459,6 +459,8 @@ function wp_default_scripts( &$scripts ) {
'savingText' => __('Saving Draft&#8230;'), 'savingText' => __('Saving Draft&#8230;'),
) ); ) );
$scripts->add( 'editor-expand', "/wp-admin/js/editor-expand$suffix.js", array( 'jquery' ), false, 1 );
$scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 ); $scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 );
$scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array( 'jquery', 'postbox' ) ); $scripts->add( 'comment', "/wp-admin/js/comment$suffix.js", array( 'jquery', 'postbox' ) );