From 430d5b13be5e28c98da38405f08a12ffe228752e Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Wed, 28 Oct 2015 18:18:42 +0000 Subject: [PATCH] Thickbox: spinner should disappear when loading is done. Props niklasbr, afercia. Fixes #33311. git-svn-id: https://develop.svn.wordpress.org/trunk@35418 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/common.css | 47 +++++++++++++++++++----- src/wp-includes/js/thickbox/thickbox.css | 4 +- src/wp-includes/js/thickbox/thickbox.js | 21 +++++++---- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css index 62c9da4381..d9ef953d38 100644 --- a/src/wp-admin/css/common.css +++ b/src/wp-admin/css/common.css @@ -2694,21 +2694,50 @@ body.import-php #TB_window, body.plugins-php #TB_window, body.update-core-php #TB_window, body.index-php #TB_window { - background: #fcfcfc url( ../images/spinner.gif ) no-repeat center; + background: #fcfcfc; +} + +/* IE 8 needs a change in the pseudo element content */ +.ie8 body.plugin-install-php #TB_window:before, +.ie8 body.import-php #TB_window:before, +.ie8 body.plugins-php #TB_window:before, +.ie8 body.update-core-php #TB_window:before, +.ie8 body.index-php #TB_window:before { + content: " "; + background: none; +} + +body.plugin-install-php #TB_window.thickbox-loading:before, +body.import-php #TB_window.thickbox-loading:before, +body.plugins-php #TB_window.thickbox-loading:before, +body.update-core-php #TB_window.thickbox-loading:before, +body.index-php #TB_window.thickbox-loading:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + left: 50%; + top: 50%; + z-index: -1; + margin: -10px 0 0 -10px; + background: #fcfcfc url(../images/spinner.gif) no-repeat center; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + -webkit-transform: translateZ(0); + transform: translateZ(0); } @media print, (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - body.plugin-install-php #TB_window, - body.import-php #TB_window, - body.plugins-php #TB_window, - body.update-core-php #TB_window, - body.index-php #TB_window { - background: #fcfcfc url( ../images/spinner-2x.gif ) no-repeat center; - -webkit-background-size: 20px 20px; - background-size: 20px 20px; + body.plugin-install-php #TB_window.thickbox-loading:before, + body.import-php #TB_window.thickbox-loading:before, + body.plugins-php #TB_window.thickbox-loading:before, + body.update-core-php #TB_window.thickbox-loading:before, + body.index-php #TB_window.thickbox-loading:before { + background: #fcfcfc url(../images/spinner-2x.gif) no-repeat center; } } diff --git a/src/wp-includes/js/thickbox/thickbox.css b/src/wp-includes/js/thickbox/thickbox.css index dd8894658a..11673a5562 100644 --- a/src/wp-includes/js/thickbox/thickbox.css +++ b/src/wp-includes/js/thickbox/thickbox.css @@ -12,7 +12,7 @@ #TB_window { position: fixed; - background: #fff; + background-color: #fff; z-index: 100050; /* Above DFW. */ visibility: hidden; text-align: left; @@ -55,7 +55,7 @@ float: left; font-weight: 600; line-height: 29px; - overflow: hidden; + overflow: hidden; padding: 0 29px 0 10px; text-overflow: ellipsis; white-space: nowrap; diff --git a/src/wp-includes/js/thickbox/thickbox.js b/src/wp-includes/js/thickbox/thickbox.js index 60a9eb77a5..581838496b 100644 --- a/src/wp-includes/js/thickbox/thickbox.js +++ b/src/wp-includes/js/thickbox/thickbox.js @@ -18,9 +18,16 @@ jQuery(document).ready(function(){ imgLoader.src = tb_pathToImage; }); -//add thickbox to href & area elements that have a class of .thickbox +/* + * Add thickbox to href & area elements that have a class of .thickbox. + * Remove the loading indicator when content in an iframe has loaded. + */ function tb_init(domChunk){ - jQuery('body').on('click', domChunk, tb_click); + jQuery( 'body' ) + .on( 'click', domChunk, tb_click ) + .on( 'thickbox:iframe:loaded', function() { + jQuery( '#TB_window' ).removeClass( 'thickbox-loading' ); + }); } function tb_click(){ @@ -39,12 +46,12 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic jQuery("body","html").css({height: "100%", width: "100%"}); jQuery("html").css("overflow","hidden"); if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6 - jQuery("body").append("
"); + jQuery("body").append("
"); jQuery("#TB_overlay").click(tb_remove); } }else{//all others if(document.getElementById("TB_overlay") === null){ - jQuery("body").append("
"); + jQuery("body").append("
"); jQuery("#TB_overlay").click(tb_remove); jQuery( 'body' ).addClass( 'modal-open' ); } @@ -195,10 +202,10 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic urlNoQuery = url.split('TB_'); jQuery("#TB_iframeContent").remove(); if(params['modal'] != "true"){//iframe no modal - jQuery("#TB_window").append("
"+caption+"
"); + jQuery("#TB_window").append("
"+caption+"
"); }else{//iframe modal jQuery("#TB_overlay").unbind(); - jQuery("#TB_window").append(""); + jQuery("#TB_window").append(""); } }else{// not an iframe, ajax if(jQuery("#TB_window").css("visibility") != "visible"){ @@ -260,7 +267,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic //helper functions below function tb_showIframe(){ jQuery("#TB_load").remove(); - jQuery("#TB_window").css({'visibility':'visible'}); + jQuery("#TB_window").css({'visibility':'visible'}).trigger( 'thickbox:iframe:loaded' ); } function tb_remove() {