diff --git a/customize.dist/loading-logo.png b/customize.dist/loading-logo.png new file mode 100644 index 000000000..23753684f Binary files /dev/null and b/customize.dist/loading-logo.png differ diff --git a/customize.dist/loading.js b/customize.dist/loading.js new file mode 100644 index 000000000..a2c1dcdfc --- /dev/null +++ b/customize.dist/loading.js @@ -0,0 +1,145 @@ +// dark #326599 +// light #4591c4 +define([], function () { + var loadingStyle = (function(){/* +#cp-loading { + transition: opacity 0.75s, visibility 0s 0.75s; + visibility: visible; + position: fixed; + z-index: 10000000; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + background: linear-gradient(to right, #326599 0%, #326599 50%, #4591c4 50%, #4591c4 100%); + color: #fafafa; + font-size: 1.5em; + opacity: 1; + display: flex; + flex-flow: column; + justify-content: center; + align-items: center; +} +#cp-loading.cp-loading-hidden { + opacity: 0; + visibility: hidden; +} +#cp-loading .cp-loading-logo { + height: 300px; + width: 300px; + margin-top: 50px; + flex: 0 1 auto; + min-height: 0; + text-align: center; +} +#cp-loading .cp-loading-logo img { + max-width: 100%; + max-height: 100%; +} +#cp-loading .cp-loading-container { + width: 700px; + max-width: 90vw; + height: 500px; + max-height: calc(100vh - 20px); + margin: 50px; + flex-shrink: 0; + display: flex; + flex-flow: column; + justify-content: center; + justify-content: space-evenly; + align-items: center; +} +@media screen and (max-height: 800px) { + #cp-loading .cp-loading-container { + height: auto; + } +} +@media screen and (max-width: 600px) { + #cp-loading .cp-loading-container { + height: auto; + } +} +#cp-loading .cp-loading-cryptofist { + margin-left: auto; + margin-right: auto; + //height: 300px; + max-width: 90vw; + max-height: 300px; + width: auto; + height: auto; + margin-bottom: 2em; +} +@media screen and (max-height: 450px) { + #cp-loading .cp-loading-cryptofist { + } +} +#cp-loading-message { + background: #FFF; + padding: 20px; + width: 100%; + color: #000; + text-align: center; + display: none; +} +#cp-loading .cp-loading-spinner-container { + position: relative; + height: 100px; +} +#cp-loading .cp-loading-spinner-container > div { + height: 100px; +} +#cp-loading-tip { + position: fixed; + z-index: 10000000; + top: 80%; + left: 0; + right: 0; + text-align: center; + transition: opacity 750ms; + transition-delay: 3000ms; +} +@media screen and (max-height: 600px) { + #cp-loading-tip { + display: none; + } +} +#cp-loading-tip span { + background: #222; + color: #fafafa; + text-align: center; + font-size: 1.5em; + opacity: 0.7; + font-family: 'Open Sans', 'Helvetica Neue', sans-serif; + padding: 15px; + max-width: 60%; + display: inline-block; +} +*/}).toString().slice(14, -3); + var urlArgs = window.location.href.replace(/^.*\?([^\?]*)$/, function (all, x) { return x; }); + var elem = document.createElement('div'); + elem.setAttribute('id', 'cp-loading'); + elem.innerHTML = [ + '', + '', + '
', + '
', + '', + '
', + '

', + '
' + ].join(''); + return function () { + var intr; + var append = function () { + if (!document.body) { return; } + clearInterval(intr); + document.body.appendChild(elem); + }; + intr = setInterval(append, 100); + append(); + }; +}); diff --git a/customize.dist/login.js b/customize.dist/login.js index dd40ad831..27984fed6 100644 --- a/customize.dist/login.js +++ b/customize.dist/login.js @@ -213,6 +213,7 @@ define([ loadingText: Messages.login_hashing, hideTips: true, }); + // We need a setTimeout(cb, 0) otherwise the loading screen is only displayed // after hashing the password window.setTimeout(function () { diff --git a/customize.dist/pages.js b/customize.dist/pages.js index 6fd5d418e..6b182bea0 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -626,19 +626,6 @@ define([ ]; }; - var loadingScreen = Pages.loadingScreen = function () { - return h('div#cp-loading', - h('div.cp-loading-container', [ - h('img.cp-loading-cryptofist', { - src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs - }), - h('div.cp-loading-spinner-container', - h('span.fa.fa-circle-o-notch.fa-spin.fa-8x.fa-fw')), - h('p'), - ]) - ); - }; - Pages.createCheckbox = function (id, labelTxt, checked, opts) { opts = opts|| {}; // Input properties @@ -722,12 +709,6 @@ define([ ]); }; - var hiddenLoader = function () { - var loader = loadingScreen(); - loader.style.display = 'none'; - return loader; - }; - Pages['/user/'] = Pages['/user/index.html'] = function () { return h('div#container'); }; @@ -789,7 +770,6 @@ define([ ]), infopageFooter(), - hiddenLoader(), ])]; }; @@ -825,7 +805,6 @@ define([ ]), ]), infopageFooter(), - hiddenLoader(), ])]; }; diff --git a/customize.dist/src/less2/loading.less b/customize.dist/src/less2/loading.less deleted file mode 100644 index 8c7e8f5e4..000000000 --- a/customize.dist/src/less2/loading.less +++ /dev/null @@ -1,73 +0,0 @@ -/* -WARNING: THIS FILE DOES NOTHING -It exists only as a proposal of what CSS you should use in loading.js -The CSS inside of loading.js is precompiled in order to save 200ish milliseconds to the loading screen. -*/ -@import (once) "./include/colortheme-all.less"; -@import (once) "./include/browser.less"; - -#cp-loading { - transition: opacity 0.75s, visibility 0s 0.75s; - visibility: visible; - opacity: 1; - position: fixed; - z-index: 10000000; // #loading - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; - background: @colortheme_loading-bg; - color: @colortheme_loading-color; - text-align: center; - font-size: 1.5em; - .cp-loading-container { - margin-top: 50vh; - transform: translateY(-50%); - } - .cp-loading-cryptofist { - margin-left: auto; - margin-right: auto; - height: 300px; - margin-bottom: 2em; - @media screen and (max-height: @browser_media-short-screen) { - display: none; - } - } - .cp-loading-spinner-container { - position: relative; - height: 100px; - > div { - height: 100px; - } - } - &.cp-loading-hidden { - opacity: 0; - visibility: hidden; - } -} -#cp-loading-tip { - position: fixed; - z-index: 10000000; // loading tip - top: 80%; - left: 0; - right: 0; - text-align: center; - - transition: opacity 750ms; - transition-delay: 3000ms; - @media screen and (max-height: @browser_media-medium-screen) { - display: none; - } - span { - background: @colortheme_loading-bg; - color: @colortheme_loading-color; - text-align: center; - font-size: 1.5em; - opacity: 0.7; - font-family: @colortheme_font; - padding: 15px; - max-width: 60%; - display: inline-block; - } -} - diff --git a/customize.dist/src/less2/pages/page-login.less b/customize.dist/src/less2/pages/page-login.less index dafb447ed..5ad874d0f 100644 --- a/customize.dist/src/less2/pages/page-login.less +++ b/customize.dist/src/less2/pages/page-login.less @@ -2,7 +2,6 @@ @import (once) "../include/colortheme-all.less"; @import (once) "../include/alertify.less"; @import (once) "../include/checkmark.less"; -@import (once) "../loading.less"; .infopages_main(); .infopages_topbar(); diff --git a/customize.dist/src/less2/pages/page-register.less b/customize.dist/src/less2/pages/page-register.less index 28edd8613..84944f4df 100644 --- a/customize.dist/src/less2/pages/page-register.less +++ b/customize.dist/src/less2/pages/page-register.less @@ -2,7 +2,6 @@ @import (once) "../include/colortheme-all.less"; @import (once) "../include/alertify.less"; @import (once) "../include/checkmark.less"; -@import (once) "../loading.less"; .infopages_main(); .infopages_topbar(); diff --git a/www/common/common-interface.js b/www/common/common-interface.js index eafdaca78..9ee419a82 100644 --- a/www/common/common-interface.js +++ b/www/common/common-interface.js @@ -9,12 +9,13 @@ define([ '/common/tippy/tippy.min.js', '/customize/pages.js', '/common/hyperscript.js', + '/customize/loading.js', '/common/test.js', '/bower_components/bootstrap-tokenfield/dist/bootstrap-tokenfield.js', 'css!/common/tippy/tippy.css', ], function ($, Messages, Util, Hash, Notifier, AppConfig, - Alertify, Tippy, Pages, h, Test) { + Alertify, Tippy, Pages, h, Loading, Test) { var UI = {}; /* @@ -551,7 +552,7 @@ define([ //var hideTips = config.hideTips || AppConfig.hideLoadingScreenTips; var hideLogo = config.hideLogo; var $loading, $container; - if ($('#' + LOADING).length) { + var todo = function () { $loading = $('#' + LOADING); //.show(); $loading.css('display', ''); $loading.removeClass('cp-loading-hidden'); @@ -561,27 +562,13 @@ define([ } else { $('#' + LOADING).find('p').hide().text(''); } - $container = $loading.find('.cp-loading-container'); + }; + if ($('#' + LOADING).length) { + todo(); } else { - $loading = $(Pages.loadingScreen()); - $container = $loading.find('.cp-loading-container'); - if (hideLogo) { - $loading.find('img').hide(); - } else { - $loading.find('img').show(); - } - var $spinner = $loading.find('.cp-loading-spinner-container'); - $spinner.show(); - $('body').append($loading); + Loading(); + todo(); } - /*if (Messages.tips && !hideTips) { - var $loadingTip = $('
', {'id': 'cp-loading-tip'}); - $('', {'class': 'tips'}).text(getRandomTip()).appendTo($loadingTip); - $loadingTip.css({ - 'bottom': $('body').height()/2 - $container.height()/2 + 20 + 'px' - }); - $('body').append($loadingTip); - }*/ }; UI.removeLoadingScreen = function (cb) { // Release the test blocker, hopefully every test has been registered. @@ -591,7 +578,6 @@ define([ $('#' + LOADING).addClass("cp-loading-hidden"); setTimeout(cb, 750); - //$('#' + LOADING).fadeOut(750, cb); var $tip = $('#cp-loading-tip').css('top', '') // loading.less sets transition-delay: $wait-time // and transition: opacity $fadeout-time diff --git a/www/common/loading.js b/www/common/loading.js index 375d060fe..9394c6ae3 100644 --- a/www/common/loading.js +++ b/www/common/loading.js @@ -1,141 +1,3 @@ -// dark #326599 -// light #4591c4 -define([], function () { - var loadingStyle = (function(){/* -#cp-loading { - transition: opacity 0.75s, visibility 0s 0.75s; - visibility: visible; - position: fixed; - z-index: 10000000; - top: 0px; - bottom: 0px; - left: 0px; - right: 0px; - background: linear-gradient(to right, #326599 0%, #326599 50%, #4591c4 50%, #4591c4 100%); - color: #fafafa; - font-size: 1.5em; - opacity: 1; - display: flex; - flex-flow: column; - justify-content: center; - align-items: center; -} -#cp-loading.cp-loading-hidden { - opacity: 0; - visibility: hidden; -} -#cp-loading .cp-loading-logo { - height: 300px; - width: 300px; - margin-top: 50px; - flex: 0 1 auto; - min-height: 0; - text-align: center; -} -#cp-loading .cp-loading-logo img { - max-width: 100%; - max-height: 100%; -} -#cp-loading .cp-loading-container { - width: 700px; - max-width: 90vw; - height: 500px; - max-height: calc(100vh - 20px); - margin: 50px; - flex-shrink: 0; - display: flex; - flex-flow: column; - justify-content: center; - align-items: center; -} -@media screen and (max-height: 800px) { - #cp-loading .cp-loading-container { - height: auto; - } -} -@media screen and (max-width: 600px) { - #cp-loading .cp-loading-container { - height: auto; - } -} -#cp-loading .cp-loading-cryptofist { - margin-left: auto; - margin-right: auto; - //height: 300px; - max-width: 90vw; - max-height: 300px; - width: auto; - height: auto; - margin-bottom: 2em; -} -@media screen and (max-height: 450px) { - #cp-loading .cp-loading-cryptofist { - } -} -#cp-loading-message { - background: #FFF; - padding: 20px; - width: 100%; - color: #000; - display: none; -} -#cp-loading .cp-loading-spinner-container { - position: relative; - height: 100px; -} -#cp-loading .cp-loading-spinner-container > div { - height: 100px; -} -#cp-loading-tip { - position: fixed; - z-index: 10000000; - top: 80%; - left: 0; - right: 0; - text-align: center; - transition: opacity 750ms; - transition-delay: 3000ms; -} -@media screen and (max-height: 600px) { - #cp-loading-tip { - display: none; - } -} -#cp-loading-tip span { - background: #222; - color: #fafafa; - text-align: center; - font-size: 1.5em; - opacity: 0.7; - font-family: 'Open Sans', 'Helvetica Neue', sans-serif; - padding: 15px; - max-width: 60%; - display: inline-block; -} -*/}).toString().slice(14, -3); - var urlArgs = window.location.href.replace(/^.*\?([^\?]*)$/, function (all, x) { return x; }); - var elem = document.createElement('div'); - elem.setAttribute('id', 'cp-loading'); - elem.innerHTML = [ - '', - '', - '
', - '
', - '', - '
', - '

', - '
' - ].join(''); - var intr; - var append = function () { - if (!document.body) { return; } - clearInterval(intr); - document.body.appendChild(elem); - }; - intr = setInterval(append, 100); - append(); +require(['/customize/loading.js'], function (Loading) { + Loading(); });