X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/8f374b7233bc2815ccc387e448d208c5434eb961..fcaa67f093b5c83deea7a361a8cf8c6ac4e832d3:/wp-admin/js/dashboard.js diff --git a/wp-admin/js/dashboard.js b/wp-admin/js/dashboard.js index c44eed79..f5e37e62 100644 --- a/wp-admin/js/dashboard.js +++ b/wp-admin/js/dashboard.js @@ -1 +1,190 @@ -var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(c){var d=c("#welcome-panel"),a=c("#wp_welcome_panel-hide"),b=function(e){c.post(ajaxurl,{action:"update-welcome-panel",visible:e,welcomepanelnonce:c("#welcomepanelnonce").val()})};if(d.hasClass("hidden")&&a.prop("checked")){d.removeClass("hidden")}c(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(f){f.preventDefault();d.addClass("hidden");b(0);c("#wp_welcome_panel-hide").prop("checked",false)});a.click(function(){d.toggleClass("hidden",!this.checked);b(this.checked?1:0)});ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(f){function e(g,k){var j,h=c("#"+k+" div.inside:visible").find(".widget-loading");if(h.length){j=h.parent();setTimeout(function(){j.load(ajaxurl+"?action=dashboard-widgets&widget="+k,"",function(){j.hide().slideDown("normal",function(){c(this).css("display","")})})},g*500)}}if(f){f=f.toString();if(c.inArray(f,ajaxWidgets)!=-1){e(0,f)}}else{c.each(ajaxWidgets,e)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var e=c("#quickpost-action"),f;f=c("#quick-press").submit(function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==e.val()){e.val("post-quickpress-publish")}c("#dashboard_quick_press div.inside").load(f.attr("action"),f.serializeArray(),function(){c("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");c('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);c("#dashboard_quick_press ul").next("p").remove();c("#dashboard_quick_press ul").find("li").each(function(){c("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});c("#publish").click(function(){e.val("post-quickpress-publish")})};quickPressLoad()}); \ 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() { + $('#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); + } + + return false; + } ); + + $('#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', 'document' ); + + 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'); + }); + } + +} );