From 44d8d2d0d5d0a1a009d02765afdf38264e20cf5c Mon Sep 17 00:00:00 2001 From: nonmakina Date: Sun, 11 Jul 2021 12:46:26 +0200 Subject: [PATCH 1/3] Refactor deferred js --- inc/config.php | 11 +++++--- inc/functions.php | 2 +- inc/instance-config.php | 58 ++++++++++++++++++++--------------------- templates/header.html | 4 +-- 4 files changed, 38 insertions(+), 37 deletions(-) diff --git a/inc/config.php b/inc/config.php index 98bec6bb..9190d233 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1053,10 +1053,13 @@ // $config['additional_javascript'][] = 'js/style-select.js'; // Defer some additional Javascript for faster initial page load times. Defering may break some scripts. - // To enable, replace the $config['additional_javascript'] array with $config['additional_javascript_init'] - // and $config['additional_javascript_defer'] arrays, then merge them to with array_merge() to generate - // the $config['additional_javascript'] array. This is incompatible with additional_javascript_compile. - // Remember to add the two scripts above into ['additional_javascript_init']! + // To enable, set this to true and add the scripts you want to defer to $config['additional_javascript_defer']. + // If using $config['additional_javascript_compile'], this will be ignored and no files will be deferred. + // eg. + // inc/instance-config.php: + // $config['deferred_javascript'] = true; + // $config['additional_javascript_defer'][] = 'js/style-select.js'; + $config['additional_javascript_defer'] = []; $config['deferred_javascript'] = false; // Where these script files are located on the web. Defaults to $config['root']. diff --git a/inc/functions.php b/inc/functions.php index 0e89388b..5565d951 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1737,7 +1737,7 @@ function buildJavascript() { } if ($config['additional_javascript_compile']) { - foreach ($config['additional_javascript'] as $file) { + foreach (array_merge($config['additional_javascript'], $config['additional_javascript_defer']) as $file) { $script .= file_get_contents($file); } } diff --git a/inc/instance-config.php b/inc/instance-config.php index 109c796c..2ad7be44 100644 --- a/inc/instance-config.php +++ b/inc/instance-config.php @@ -372,46 +372,44 @@ $config['default_stylesheet'] = array('Dark Red', $config['stylesheets']['Dark R */ $config['deferred_javascript'] = true; -$config['additional_javascript_init'][] = 'js/jquery.min.js'; -$config['additional_javascript_init'][] = 'js/inline-expanding.js'; -$config['additional_javascript_init'][] = 'js/ajax.js'; - -$config['additional_javascript_init'][] = 'js/post-menu.js'; -$config['additional_javascript_init'][] = 'js/hide-images.js'; -$config['additional_javascript_init'][] = 'js/show-backlinks.js'; -$config['additional_javascript_init'][] = 'js/show-op.js'; -$config['additional_javascript_init'][] = 'js/show-own-posts.js'; -$config['additional_javascript_init'][] = 'js/post-filter.js'; - -$config['additional_javascript_init'][] = 'js/strftime.min.js'; -$config['additional_javascript_init'][] = 'js/local-time.js'; -$config['additional_javascript_init'][] = 'js/save-user_flag.js'; -$config['additional_javascript_init'][] = 'js/auto-scroll.js'; -$config['additional_javascript_init'][] = 'js/options.js'; -$config['additional_javascript_init'][] = 'js/options/general.js'; -$config['additional_javascript_init'][] = 'js/options/user-css.js'; -$config['additional_javascript_init'][] = 'js/options/user-js.js'; -$config['additional_javascript_init'][] = 'js/style-select.js'; -$config['additional_javascript_init'][] = 'js/flag-preview.js'; -$config['additional_javascript_init'][] = 'js/file-selector.js'; -$config['additional_javascript_init'][] = 'js/post-hover.js'; -$config['additional_javascript_init'][] = 'js/download-original.js'; +$config['additional_javascript'][] = 'js/jquery.min.js'; +$config['additional_javascript'][] = 'js/inline-expanding.js'; +$config['additional_javascript'][] = 'js/ajax.js'; + +$config['additional_javascript'][] = 'js/post-menu.js'; +$config['additional_javascript'][] = 'js/hide-images.js'; +$config['additional_javascript'][] = 'js/show-backlinks.js'; +$config['additional_javascript'][] = 'js/show-op.js'; +$config['additional_javascript'][] = 'js/show-own-posts.js'; +$config['additional_javascript'][] = 'js/post-filter.js'; + +$config['additional_javascript'][] = 'js/strftime.min.js'; +$config['additional_javascript'][] = 'js/local-time.js'; +$config['additional_javascript'][] = 'js/save-user_flag.js'; +$config['additional_javascript'][] = 'js/auto-scroll.js'; +$config['additional_javascript'][] = 'js/options.js'; +$config['additional_javascript'][] = 'js/options/general.js'; +$config['additional_javascript'][] = 'js/options/user-css.js'; +$config['additional_javascript'][] = 'js/options/user-js.js'; +$config['additional_javascript'][] = 'js/style-select.js'; +$config['additional_javascript'][] = 'js/flag-preview.js'; +$config['additional_javascript'][] = 'js/file-selector.js'; +$config['additional_javascript'][] = 'js/post-hover.js'; +$config['additional_javascript'][] = 'js/download-original.js'; $config['additional_javascript_defer'][] = 'js/auto-reload.js'; $config['additional_javascript_defer'][] = 'js/thread-stats.js'; $config['additional_javascript_defer'][] = 'js/image-hover.js'; -$config['additional_javascript_init'][] = 'js/jquery-ui.custom.min.js'; -$config['additional_javascript_init'][] = 'js/quick-reply.js'; +$config['additional_javascript'][] = 'js/jquery-ui.custom.min.js'; +$config['additional_javascript'][] = 'js/quick-reply.js'; -$config['additional_javascript_init'][] = 'js/gallery-view.js'; -$config['additional_javascript_init'][] = 'js/catalog-search.js'; +$config['additional_javascript'][] = 'js/gallery-view.js'; +$config['additional_javascript'][] = 'js/catalog-search.js'; $config['additional_javascript_defer'][] = 'js/thread-watcher.js'; $config['additional_javascript_defer'][] = 'js/expand.js'; $config['additional_javascript_defer'][] = 'js/webm-settings.js'; $config['additional_javascript_defer'][] = 'js/expand-video.js'; -$config['additional_javascript'] = array_merge($config['additional_javascript_init'], $config['additional_javascript_defer']); - $config['flag_preview'] = true; $config['enable_embedding'] = true; diff --git a/templates/header.html b/templates/header.html index fb0d79ed..0a7aa95f 100644 --- a/templates/header.html +++ b/templates/header.html @@ -18,9 +18,9 @@ {% if not config.additional_javascript_compile %} {% if not config.deferred_javascript %} - {% for javascript in config.additional_javascript %}{% endfor %} + {% for javascript in config.additional_javascript|merge(config.additional_javascript_defer) %}{% endfor %} {% else %} - {% for javascript in config.additional_javascript_init %}{% endfor %} + {% for javascript in config.additional_javascript %}{% endfor %} {% for javascript in config.additional_javascript_defer %}{% endfor %} {% endif %} {% endif %} From 984b57063d559b553a02ca2fb9f0c19c32959f3f Mon Sep 17 00:00:00 2001 From: nonmakina Date: Sun, 11 Jul 2021 14:00:03 +0200 Subject: [PATCH 2/3] Moves post hover and others to fix loading issue. Minifies and compiles --- inc/instance-config.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/inc/instance-config.php b/inc/instance-config.php index 2ad7be44..2e181e54 100644 --- a/inc/instance-config.php +++ b/inc/instance-config.php @@ -373,8 +373,11 @@ $config['default_stylesheet'] = array('Dark Red', $config['stylesheets']['Dark R $config['deferred_javascript'] = true; $config['additional_javascript'][] = 'js/jquery.min.js'; +$config['additional_javascript'][] = 'js/jquery-ui.custom.min.js'; $config['additional_javascript'][] = 'js/inline-expanding.js'; $config['additional_javascript'][] = 'js/ajax.js'; +$config['additional_javascript'][] = 'js/quick-reply.js'; +$config['additional_javascript'][] = 'js/post-hover.js'; $config['additional_javascript'][] = 'js/post-menu.js'; $config['additional_javascript'][] = 'js/hide-images.js'; @@ -394,14 +397,11 @@ $config['additional_javascript'][] = 'js/options/user-js.js'; $config['additional_javascript'][] = 'js/style-select.js'; $config['additional_javascript'][] = 'js/flag-preview.js'; $config['additional_javascript'][] = 'js/file-selector.js'; -$config['additional_javascript'][] = 'js/post-hover.js'; $config['additional_javascript'][] = 'js/download-original.js'; $config['additional_javascript_defer'][] = 'js/auto-reload.js'; $config['additional_javascript_defer'][] = 'js/thread-stats.js'; $config['additional_javascript_defer'][] = 'js/image-hover.js'; -$config['additional_javascript'][] = 'js/jquery-ui.custom.min.js'; -$config['additional_javascript'][] = 'js/quick-reply.js'; $config['additional_javascript'][] = 'js/gallery-view.js'; $config['additional_javascript'][] = 'js/catalog-search.js'; @@ -547,4 +547,5 @@ $config['reply_limit'] = 600; // Changes made via web editor by "zul_admin" @ Tue, 27 Apr 2021 15:39:19 -0700: $config['max_body'] = 80000; - +$config['additional_javascript_compile'] = true; +$config['minify_js'] = true; From c8c0b04492f556cef5828ae391178e5832e17ade Mon Sep 17 00:00:00 2001 From: nonmakina Date: Sun, 11 Jul 2021 16:00:39 +0200 Subject: [PATCH 3/3] fixes quick reply --- js/file-selector.js | 2 +- js/quick-reply.js | 2 +- templates/post_form.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/js/file-selector.js b/js/file-selector.js index f90bfd3b..2d347b3b 100644 --- a/js/file-selector.js +++ b/js/file-selector.js @@ -23,7 +23,7 @@ $(''+ ''+ -'').prependTo('#upload td'); +'').prependTo('#upload td.upload-area'); var files = []; $('#upload_file').remove(); // remove the original file selector diff --git a/js/quick-reply.js b/js/quick-reply.js index f31af6af..926e5880 100644 --- a/js/quick-reply.js +++ b/js/quick-reply.js @@ -261,7 +261,7 @@ if ($(this).attr('name') == 'spoiler') { $td.find('label').remove(); $(this).attr('id', 'q-spoiler-image'); - $postForm.find('input[type="file"]').parent() + $postForm.find('#upload') .removeAttr('colspan') .after($('').append(this, ' ', $('