X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/4f9d63e13cd8c6e275797c75b401b074b82937bc..c81aba3d563f7459dc79140e4c5be67bcf506b92:/wp-admin/js/dashboard.js diff --git a/wp-admin/js/dashboard.js b/wp-admin/js/dashboard.js index f391e134..fa100dd1 100644 --- a/wp-admin/js/dashboard.js +++ b/wp-admin/js/dashboard.js @@ -1 +1,189 @@ -var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins","dashboard_quick_press"];ajaxPopulateWidgets=function(b){show=function(g,c){var f,d=a("#"+g+" div.inside:visible").find(".widget-loading");if(d.length){f=d.parent();setTimeout(function(){f.load("index-extra.php?jax="+g,"",function(){f.hide().slideDown("normal",function(){a(this).css("display","");if("dashboard_plugins"==g&&a.isFunction(tb_init)){tb_init("#dashboard_plugins a.thickbox")}if("dashboard_quick_press"==g&&a.isFunction(tb_init)){tb_init("#dashboard_quick_press a.thickbox");quickPressLoad()}})})},c*500)}};if(b){b=b.toString();if(a.inArray(b,ajaxWidgets)!=-1){show(b,0)}}else{a.each(ajaxWidgets,function(c){show(this,c)})}};ajaxPopulateWidgets();postboxes.add_postbox_toggles("dashboard",{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","disabled");if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').attr("disabled","");a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();tb_init("a.thickbox");quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})}}); \ No newline at end of file +/* global pagenow, ajaxurl, postboxes, wpActiveEditor:true */ +var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad; + +jQuery(document).ready( function($) { + var welcomePanel = $( '#welcome-panel' ), + welcomePanelHide = $('#wp_welcome_panel-hide'), + updateWelcomePanel; + + updateWelcomePanel = function( visible ) { + $.post( ajaxurl, { + action: 'update-welcome-panel', + visible: visible, + welcomepanelnonce: $( '#welcomepanelnonce' ).val() + }); + }; + + if ( welcomePanel.hasClass('hidden') && welcomePanelHide.prop('checked') ) { + welcomePanel.removeClass('hidden'); + } + + $('.welcome-panel-close, .welcome-panel-dismiss a', welcomePanel).click( function(e) { + e.preventDefault(); + welcomePanel.addClass('hidden'); + updateWelcomePanel( 0 ); + $('#wp_welcome_panel-hide').prop('checked', false); + }); + + welcomePanelHide.click( function() { + welcomePanel.toggleClass('hidden', ! this.checked ); + updateWelcomePanel( this.checked ? 1 : 0 ); + }); + + // These widgets are sometimes populated via ajax + ajaxWidgets = ['dashboard_primary']; + + ajaxPopulateWidgets = function(el) { + function show(i, id) { + var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading'); + if ( e.length ) { + p = e.parent(); + setTimeout( function(){ + p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id + '&pagenow=' + pagenow, '', function() { + p.hide().slideDown('normal', function(){ + $(this).css('display', ''); + }); + }); + }, i * 500 ); + } + } + + if ( el ) { + el = el.toString(); + if ( $.inArray(el, ajaxWidgets) !== -1 ) { + show(0, el); + } + } else { + $.each( ajaxWidgets, show ); + } + }; + ajaxPopulateWidgets(); + + postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } ); + + /* QuickPress */ + quickPressLoad = function() { + var act = $('#quickpost-action'), t; + + $( '#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]' ).prop( 'disabled' , false ); + + t = $('#quick-press').submit( function( e ) { + e.preventDefault(); + $('#dashboard_quick_press #publishing-action .spinner').show(); + $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true); + + $.post( t.attr( 'action' ), t.serializeArray(), function( data ) { + // Replace the form, and prepend the published post. + $('#dashboard_quick_press .inside').html( data ); + $('#quick-press').removeClass('initial-form'); + quickPressLoad(); + highlightLatestPost(); + $('#title').focus(); + }); + + function highlightLatestPost () { + var latestPost = $('.drafts ul li').first(); + latestPost.css('background', '#fffbe5'); + setTimeout(function () { + latestPost.css('background', 'none'); + }, 1000); + } + } ); + + $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } ); + + $('#title, #tags-input, #content').each( function() { + var input = $(this), prompt = $('#' + this.id + '-prompt-text'); + + if ( '' === this.value ) { + prompt.removeClass('screen-reader-text'); + } + + prompt.click( function() { + $(this).addClass('screen-reader-text'); + input.focus(); + }); + + input.blur( function() { + if ( '' === this.value ) { + prompt.removeClass('screen-reader-text'); + } + }); + + input.focus( function() { + prompt.addClass('screen-reader-text'); + }); + }); + + $('#quick-press').on( 'click focusin', function() { + wpActiveEditor = 'content'; + }); + + autoResizeTextarea(); + }; + quickPressLoad(); + + $( '.meta-box-sortables' ).sortable( 'option', 'containment', '#wpwrap' ); + + function autoResizeTextarea() { + if ( document.documentMode && document.documentMode < 9 ) { + return; + } + + // Add a hidden div. We'll copy over the text from the textarea to measure its height. + $('body').append( '' ); + + var clone = $('.quick-draft-textarea-clone'), + editor = $('#content'), + editorHeight = editor.height(), + // 100px roughly accounts for browser chrome and allows the + // save draft button to show on-screen at the same time. + editorMaxHeight = $(window).height() - 100; + + // Match up textarea and clone div as much as possible. + // Padding cannot be reliably retrieved using shorthand in all browsers. + clone.css({ + 'font-family': editor.css('font-family'), + 'font-size': editor.css('font-size'), + 'line-height': editor.css('line-height'), + 'padding-bottom': editor.css('paddingBottom'), + 'padding-left': editor.css('paddingLeft'), + 'padding-right': editor.css('paddingRight'), + 'padding-top': editor.css('paddingTop'), + 'white-space': 'pre-wrap', + 'word-wrap': 'break-word', + 'display': 'none' + }); + + // propertychange is for IE < 9 + editor.on('focus input propertychange', function() { + var $this = $(this), + //   is to ensure that the height of a final trailing newline is included. + textareaContent = $this.val() + ' ', + // 2px is for border-top & border-bottom + cloneHeight = clone.css('width', $this.css('width')).text(textareaContent).outerHeight() + 2; + + // Default to having scrollbars + editor.css('overflow-y', 'auto'); + + // Only change the height if it has indeed changed and both heights are below the max. + if ( cloneHeight === editorHeight || ( cloneHeight >= editorMaxHeight && editorHeight >= editorMaxHeight ) ) { + return; + } + + // Don't allow editor to exceed height of window. + // This is also bound in CSS to a max-height of 1300px to be extra safe. + if ( cloneHeight > editorMaxHeight ) { + editorHeight = editorMaxHeight; + } else { + editorHeight = cloneHeight; + } + + // No scrollbars as we change height, not for IE < 9 + editor.css('overflow', 'hidden'); + + $this.css('height', editorHeight + 'px'); + }); + } + +} );