diff --git a/Gruntfile.js b/Gruntfile.js index caab837758c..bf7dbd8f247 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -43,6 +43,13 @@ module.exports = function(grunt) { 'rsc/less/bootstrap-evoskins.less' // Common styles for all bootstrap skins ], + // Superbundle Font-Awesome + Bootstrap + Front-office styles: + 'rsc/build/bootstrap-b2evo_base-superbundle.bundle.css': [ + 'rsc/ext/font-awesome/css/font-awesome.css', + 'rsc/ext/bootstrap/css/bootstrap.css', + 'rsc/build/bootstrap-b2evo_base.bundle.css', + ], + // Bootstrap back-office styles: 'rsc/build/bootstrap-backoffice-b2evo_base.bundle.css': [ // Basic styles for all bootstrap skins @@ -52,6 +59,13 @@ module.exports = function(grunt) { 'rsc/less/bootstrap-evoskins.less' // Common styles for all bootstrap skins ], + // Back-office bootstrap skin styles: + 'skins_adm/bootstrap/rsc/css/style.bundle.css': [ + 'skins_adm/bootstrap/rsc/css/style.less', + 'rsc/less/inc/jquery.easy-pie-chart.inc.less', + 'rsc/less/inc/jquery.jqplot.inc.less', + ], + // Bootstrap skins 'skins/green_bootstrap_theme/style.css': 'skins/green_bootstrap_theme/style.less', 'skins/green_bootstrap_theme/std/style.css': 'skins/green_bootstrap_theme/std/style.less', @@ -78,11 +92,17 @@ module.exports = function(grunt) { 'rsc/build/b2evo_helper_screens.css': 'rsc/less/b2evo_helper_screens.less', // Colorbox - 'rsc/css/colorbox/colorbox-regular.css': 'rsc/css/colorbox/colorbox-regular.less', - 'rsc/css/colorbox/colorbox-bootstrap.css': 'rsc/css/colorbox/colorbox-bootstrap.less', + 'rsc/customized/jquery/colorbox/css/colorbox-regular.css': 'rsc/customized/jquery/colorbox/css/colorbox-regular.less', + 'rsc/customized/jquery/colorbox/css/colorbox-bootstrap.css': 'rsc/customized/jquery/colorbox/css/colorbox-bootstrap.less', // evo helpdesk widget 'rsc/css/evo_helpdesk_widget.css': 'rsc/less/evo_helpdesk_widget.less', + + // info dots plugin + 'plugins/infodots_plugin/infodots.css': 'plugins/infodots_plugin/infodots.less', + + // Video plugin + 'plugins/videoplug_plugin/css/videoplug.css': 'plugins/videoplug_plugin/css/videoplug.less', } }, @@ -135,7 +155,7 @@ module.exports = function(grunt) { */ // Login screen: sha1_md5: { - src: ['rsc/js/src/sha1.js', 'rsc/js/src/md5.js', 'rsc/js/src/twin-bcrypt.js'], + src: ['rsc/ext/sha1.js', 'rsc/ext/md5.js', 'rsc/ext/twin-bcrypt.js'], dest: 'rsc/js/build/sha1_md5.bundle.js', }, }, @@ -154,11 +174,21 @@ module.exports = function(grunt) { src: 'rsc/build/bootstrap-b2evo_base.bundle.css', dest: 'rsc/build/bootstrap-b2evo_base.bmin.css', }, + bootstrap_b2evo_base_superbundle: { + nonull: true, // Display missing files + src: 'rsc/build/bootstrap-b2evo_base-superbundle.bundle.css', + dest: 'rsc/build/bootstrap-b2evo_base-superbundle.bmin.css', + }, bootstrap_backoffice_b2evo_base: { nonull: true, // Display missing files src: 'rsc/build/bootstrap-backoffice-b2evo_base.bundle.css', dest: 'rsc/build/bootstrap-backoffice-b2evo_base.bmin.css', }, + backoffice_bootstrap_skin_style: { + nonull: true, // Display missing files + src: 'skins_adm/bootstrap/rsc/css/style.bundle.css', + dest: 'skins_adm/bootstrap/rsc/css/style.bmin.css', + }, bootstrap_skins: { files: { // Bootstrap skins @@ -186,8 +216,8 @@ module.exports = function(grunt) { }, colorbox: { files: { - 'rsc/build/colorbox-regular.min.css': 'rsc/css/colorbox/colorbox-regular.css', - 'rsc/build/colorbox-bootstrap.min.css': 'rsc/css/colorbox/colorbox-bootstrap.css', + 'rsc/build/colorbox-regular.min.css': 'rsc/customized/jquery/colorbox/css/colorbox-regular.css', + 'rsc/build/colorbox-bootstrap.min.css': 'rsc/customized/jquery/colorbox/css/colorbox-bootstrap.css', } }, ddexitpop: { @@ -202,6 +232,14 @@ module.exports = function(grunt) { src: 'rsc/build/b2evo_helper_screens.css', dest: 'rsc/build/b2evo_helper_screens.min.css', }, + jqplot: { + src: [ 'rsc/ext/jquery/jqplot/css/jquery.jqplot.css', 'rsc/ext/jquery/jqplot/css/jquery.jqplot.b2evo.css' ], + dest: 'rsc/build/b2evo_jqplot.bmin.css', + }, + videoplug: { + src: 'plugins/videoplug_plugin/css/videoplug.css', + dest: 'plugins/videoplug_plugin/css/videoplug.min.css', + } }, // Configuration for the uglify minifying tasks: @@ -223,11 +261,11 @@ module.exports = function(grunt) { // TinyMCE tinymce: { files: { - 'rsc/js/tiny_mce/plugins/image/plugin.min.js': 'rsc/js/tiny_mce/plugins/image/plugin.js', - 'rsc/js/tiny_mce/plugins/link/plugin.min.js': 'rsc/js/tiny_mce/plugins/link/plugin.js', - 'rsc/js/tiny_mce/plugins/b2evo_attachments/plugin.min.js': 'rsc/js/tiny_mce/plugins/b2evo_attachments/plugin.js', - 'rsc/js/tiny_mce/plugins/b2evo_shorttags/plugin.min.js': 'rsc/js/tiny_mce/plugins/b2evo_shorttags/plugin.js', - 'rsc/js/tiny_mce/plugins/evo_view/plugin.min.js': 'rsc/js/tiny_mce/plugins/evo_view/plugin.js', + 'rsc/ext/tiny_mce/plugins/image/plugin.min.js': 'rsc/ext/tiny_mce/plugins/image/plugin.js', + 'rsc/ext/tiny_mce/plugins/link/plugin.min.js': 'rsc/ext/tiny_mce/plugins/link/plugin.js', + 'rsc/ext/tiny_mce/plugins/b2evo_attachments/plugin.min.js': 'rsc/ext/tiny_mce/plugins/b2evo_attachments/plugin.js', + 'rsc/ext/tiny_mce/plugins/b2evo_shorttags/plugin.min.js': 'rsc/ext/tiny_mce/plugins/b2evo_shorttags/plugin.js', + 'rsc/ext/tiny_mce/plugins/evo_view/plugin.min.js': 'rsc/ext/tiny_mce/plugins/evo_view/plugin.js', 'plugins/tinymce_plugin/js/evo_view_shortcodes.bmin.js': ['plugins/tinymce_plugin/js/shortcodes.js', 'plugins/tinymce_plugin/js/evo_view.js'], } }, @@ -238,7 +276,7 @@ module.exports = function(grunt) { banner: '/* This includes 4 files: jquery.colorbox.js, voting.js, jquery.touchswipe.js, colorbox.init.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/colorbox/jquery.colorbox.js', 'rsc/js/voting.js', 'rsc/js/jquery/jquery.touchswipe.js', 'rsc/js/colorbox/colorbox.init.js'], + src: ['rsc/customized/jquery/colorbox/js/jquery.colorbox.js', 'rsc/js/voting.js', 'rsc/ext/jquery/touchswipe/jquery.touchswipe.js', 'rsc/js/colorbox.init.js'], dest: 'rsc/js/build/colorbox.bmin.js' }, // Bubbletip @@ -267,16 +305,59 @@ module.exports = function(grunt) { banner: '/* This includes 2 files: jquery.textcomplete.js, textcomplete.init.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/jquery/jquery.textcomplete.js', 'rsc/js/textcomplete.init.js'], + src: ['rsc/ext/jquery/textcomplete/jquery.textcomplete.js', 'rsc/ext/jquery/textcomplete/textcomplete.init.js'], dest: 'rsc/js/build/textcomplete.bmin.js' }, + // JS files that are used marketing popup container: + ddexitpop: { + options: { banner: '/* This includes ddexitpop files to initialize marketing popup container */\n' }, + nonull: true, // Display missing files + src: ['rsc/js/src/ddexitpop.js', 'rsc/js/src/evo_init_ddexitpop.js'], + dest: 'rsc/js/build/ddexitpop.bmin.js' + }, + // JS files that may be used on ANY page of front-office and back-office + evo_generic: { + options: { + banner: '/* This file includes ALL generic files that may be used on any page of front-office and back-office */\n' + }, + nonull: true, // Display missing files + src: [ + 'rsc/js/src/evo_generic_functions.js', + 'rsc/js/src/evo_init_generic_jquery_ready_functions.js', + 'rsc/js/src/evo_init_password_indicator.js', + 'rsc/js/src/evo_init_password_edit.js', + 'rsc/js/src/evo_init_login_validator.js', + 'rsc/js/src/evo_init_skin_bootstrap_forums.js', + 'rsc/js/src/evo_init_autocomplete_login.js', + 'rsc/js/src/evo_init_widget_poll.js', + 'rsc/js/src/evo_init_widget_item_checklist_lines.js', + 'rsc/js/src/evo_init_plugin_auto_anchors.js', + 'rsc/js/src/evo_init_plugin_custom_tags.js', + 'rsc/js/src/evo_init_plugin_table_contents.js', + 'rsc/js/src/evo_init_plugin_shortlinks.js', + 'rsc/js/src/evo_init_plugin_inlines.js', + 'rsc/js/src/evo_init_plugin_markdown.js', + 'rsc/js/src/evo_init_plugin_polls.js', + 'rsc/js/src/evo_init_plugin_shortcodes.js', + 'rsc/js/src/evo_init_plugin_widescroll.js', + 'rsc/js/src/evo_init_plugin_videoplug.js', + 'rsc/js/src/evo_init_editable_column.js', + 'rsc/js/src/evo_init_regional.js', + 'rsc/js/src/evo_init_bootstrap_tooltips.js', + 'rsc/js/src/evo_comment_funcs.js', + 'rsc/js/src/evo_user_funcs.js', + 'rsc/js/build/colorbox.bmin.js', + ], + dest: 'rsc/js/build/evo_generic.bmin.js' + }, // JS files that are used on front-office standard skins: evo_frontoffice: { options: { - banner: '/* This includes 10 files: src/evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js */\n' + banner: '/* This includes 11 files: build/evo_generic.bmin.js, src/evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/src/evo_modal_window.js', + src: ['rsc/js/build/evo_generic.bmin.js', + 'rsc/js/src/evo_modal_window.js', 'rsc/js/src/evo_images.js', 'rsc/js/src/evo_user_crop.js', 'rsc/js/src/evo_user_report.js', @@ -288,23 +369,14 @@ module.exports = function(grunt) { 'rsc/js/ajax.js'], dest: 'rsc/js/build/evo_frontoffice.bmin.js' }, - // JS files that are used on front-office standard skins with ddexitpop: - evo_frontoffice_with_ddexitpop: { - options: { - banner: '/* This includes 11 files: src/evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js, src/ddexitpop.js */\n' - }, - nonull: true, // Display missing files - src: ['rsc/js/build/evo_frontoffice.bmin.js', - 'rsc/js/src/ddexitpop.js'], - dest: 'rsc/js/build/evo_frontoffice-with-ddexitpop.bmin.js' - }, // JS files that are used on front-office bootstrap skins: evo_frontoffice_bootstrap: { options: { - banner: '/* This includes 10 files: src/bootstrap-evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js */\n' + banner: '/* This includes 11 files: build/evo_generic.bmin.js, src/bootstrap-evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/src/bootstrap-evo_modal_window.js', + src: ['rsc/js/build/evo_generic.bmin.js', + 'rsc/js/src/bootstrap-evo_modal_window.js', 'rsc/js/src/evo_images.js', 'rsc/js/src/evo_user_crop.js', 'rsc/js/src/evo_user_report.js', @@ -316,25 +388,31 @@ module.exports = function(grunt) { 'rsc/js/ajax.js'], dest: 'rsc/js/build/bootstrap-evo_frontoffice.bmin.js' }, - // JS files that are used on front-office bootstrap skins with ddexitpop: - evo_frontoffice_bootstrap_with_ddexitpop: { + // JS files(bundled with jQuery and Bootstrap) that are used on front-office bootstrap skins: + evo_frontoffice_bootstrap_superbundle: { options: { - banner: '/* This includes 11 files: src/bootstrap-evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_contact_groups.js, src/evo_rest_api.js, src/evo_item_flag.js, src/evo_links.js, src/evo_forms.js, ajax.js, src/ddexitpop.js */\n' + banner: '/* Includes files for bootstrap front-office skins */\n' }, nonull: true, // Display missing files - src: ['rsc/js/build/bootstrap-evo_frontoffice.bmin.js', - 'rsc/js/src/ddexitpop.js'], - dest: 'rsc/js/build/bootstrap-evo_frontoffice-with-ddexitpop.bmin.js' + src: [ + 'rsc/ext/jquery/jquery.min.js', + 'rsc/ext/jquery/jquery-migrate.min.js', + 'rsc/ext/jquery/ui/js/jquery.ui.b2evo.min.js', + 'rsc/ext/bootstrap/js/bootstrap.min.js', + 'rsc/js/build/bootstrap-evo_frontoffice.bmin.js', + ], + dest: 'rsc/js/build/bootstrap-evo_frontoffice-superbundle.bmin.js' }, // JS files that are used on back-office standard skins: evo_backoffice: { options: { - banner: '/* This includes 22 files: functions.js, ajax.js, communication.js, form_extensions.js, extracats.js, dynamic_select.js, backoffice.js, blog_widgets.js,'+ + banner: '/* This includes 23 files: build/evo_generic.bmin.js, functions.js, ajax.js, communication.js, form_extensions.js, extracats.js, dynamic_select.js, backoffice.js, blog_widgets.js,'+ 'src/evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_deldata.js, '+ 'src/evo_user_org.js, src/evo_automation.js, src/evo_user_tags.js, src/evo_user_status.js, src/evo_user_groups.js, src/evo_rest_api.js, src/evo_links.js, src/evo_forms.js, src/evo_input_counter.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/functions.js', + src: ['rsc/js/build/evo_generic.bmin.js', + 'rsc/js/functions.js', 'rsc/js/ajax.js', 'rsc/js/communication.js', 'rsc/js/form_extensions.js', @@ -354,6 +432,7 @@ module.exports = function(grunt) { 'rsc/js/src/evo_user_groups.js', 'rsc/js/src/evo_user_filters.js', 'rsc/js/src/evo_rest_api.js', + 'rsc/js/src/evo_files.js', 'rsc/js/src/evo_links.js', 'rsc/js/src/evo_forms.js', 'rsc/js/src/evo_input_counter.js'], @@ -362,12 +441,13 @@ module.exports = function(grunt) { // JS files that are used on back-office bootstrap skins: evo_backoffice_bootstrap: { options: { - banner: '/* This includes 22 files: functions.js, ajax.js, communication.js, form_extensions.js, extracats.js, dynamic_select.js, backoffice.js, '+ + banner: '/* This includes 23 files: build/evo_generic.bmin.js, functions.js, ajax.js, communication.js, form_extensions.js, extracats.js, dynamic_select.js, backoffice.js, '+ 'blog_widgets.js, src/bootstrap-evo_modal_window.js, src/evo_images.js, src/evo_user_crop.js, src/evo_user_report.js, src/evo_user_deldata.js, '+ 'src/evo_user_org.js, src/evo_automation.js, src/evo_user_tags.js, src/evo_user_status.js, src/evo_user_groups.js, src/evo_rest_api.js, src/evo_links.js, src/evo_forms.js, src/evo_input_counter.js */\n' }, nonull: true, // Display missing files - src: ['rsc/js/functions.js', + src: ['rsc/js/build/evo_generic.bmin.js', + 'rsc/js/functions.js', 'rsc/js/ajax.js', 'rsc/js/communication.js', 'rsc/js/form_extensions.js', @@ -387,6 +467,7 @@ module.exports = function(grunt) { 'rsc/js/src/evo_user_groups.js', 'rsc/js/src/evo_user_filters.js', 'rsc/js/src/evo_rest_api.js', + 'rsc/js/src/evo_files.js', 'rsc/js/src/evo_links.js', 'rsc/js/src/evo_forms.js', 'rsc/js/src/evo_input_counter.js'], @@ -396,6 +477,48 @@ module.exports = function(grunt) { src: 'rsc/js/evo_helpdesk_widget.js', dest: 'rsc/js/evo_helpdesk_widget.min.js', }, + evo_fileuploader: { + options: { + banner: '/* This file includes ALL files that are used for quick file uploader */\n' + }, + nonull: true, // Display missing files + src: [ + 'rsc/customized/fileuploader/js/fine-uploader.js', + 'rsc/js/src/evo_init_dragdrop_button.js', + 'rsc/js/src/evo_init_attachment_fieldset.js', + ], + dest: 'rsc/js/build/evo_fileuploader.bmin.js' + }, + evo_fileuploader_sortable: { + options: { + banner: '/* This file includes ALL files that are used for quick file uploader with sortable feature for attachments */\n' + }, + nonull: true, // Display missing files + src: [ + 'rsc/js/build/evo_fileuploader.bmin.js', + 'rsc/ext/jquery/sortable/jquery.sortable.min.js', + 'rsc/js/src/evo_init_link_sortable.js', + ], + dest: 'rsc/js/build/evo_fileuploader_sortable.bmin.js' + }, + evo_jqplot: { + options: { + banner: '/* This file includes ALL files that are used for drawing charts using jqplot */\n' + }, + nonull: true, // Display missing files + src: [ + 'rsc/ext/jquery/jqplot/js/jquery.jqplot.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.barRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.canvasAxisTickRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.canvasTextRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.canvasOverlay.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.categoryAxisRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.donutRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.enhancedLegendRenderer.min.js', + 'rsc/ext/jquery/jqplot/js/jqplot.highlighter.min.js', + ], + dest: 'rsc/js/build/evo_jqplot.bmin.js' + } }, // Markdown to HTML diff --git a/_tests/blogs/evocore/param.funcs.simpletest.php b/_tests/blogs/evocore/param.funcs.simpletest.php index d3217b5dec0..c9c1292cfdd 100644 --- a/_tests/blogs/evocore/param.funcs.simpletest.php +++ b/_tests/blogs/evocore/param.funcs.simpletest.php @@ -55,7 +55,7 @@ function tearDown() function test_defaults() { - $this->assertIdentical( param( 'test1' ), '' ); + $this->assertIdentical( param( 'test1', 'raw' ), '' ); $this->assertIdentical( param( 'test1', 'string', NULL ), '' ); // set from first call $this->assertIdentical( param( 'test2', 'string', NULL ), NULL ); diff --git a/_tests/general/security_checks.simpletest.php b/_tests/general/security_checks.simpletest.php index e15ee0d63cf..64ca78fd9f7 100644 --- a/_tests/general/security_checks.simpletest.php +++ b/_tests/general/security_checks.simpletest.php @@ -58,8 +58,7 @@ class SecurityChecksTestCase extends EvoUnitTestCase 'inc/_blog_main.inc.php', 'inc/_main.inc.php', 'inc/locales/_locale.funcs.php', - 'inc/sessions/model/_search_engines.php', - 'inc/widgets/_widgets.funcs.php', + 'inc/sessions/model/_search_engines.json', ); function __construct() diff --git a/bower.json b/bower.json index bb023d4f273..19583624ad6 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "b2evolution", - "version": "7.1.7-stable", + "version": "7.2.5-stable", "description": "Multiblog/CMS + user community + email marketing + social network + everything you need to run and maintain a modern website (PHP/MySQL).", "devDependencies": { "jquery": ">=1.11.1", diff --git a/conf/_advanced.php b/conf/_advanced.php index 39a4b2630d1..c56e4b22ffe 100644 --- a/conf/_advanced.php +++ b/conf/_advanced.php @@ -827,12 +827,53 @@ /** - * Allow parameters in URL without redirect to Item canonical URL when collection setting "301 redirect to canonical URL when possible" is enabled + * Allow parameters in canonical URLs + * These params will NOT trigger a "301 redirect to canonical" even if the checkboxes for such redirects are enabled + * This applies to ANY canonical URLs (Items but ALSO: Collection, Category, disp=posts, Archive, Tag, User profile) canonical URLs + * + * NOTE: For Item URL we automatically include enabled switchable params of the Item (see "Switchable content" on https://b2evolution.net/man/post-advanced-properties-panel) */ -$noredir_params = array( - 'page', // For showing a different page in a multipage post - 'quote_post', // For quoting a post in the forums - 'quote_comment', // For quoting a comment in the forums +$accepted_in_canonicals__params = array( + 'get_redirected_debuginfo_from_sess_ID', // For display debug info of redirected page from different domain +); +// For pages depending on $disp: +$accepted_in_canonicals_disp__params = array( + 'single' => array( + 'page', // For showing a different page in a multipage post + 'quote_post', // For quoting a post in the forums + 'quote_comment', // For quoting a comment in the forums + ), + 'page' => array( + 'page', // For showing a different page in a multipage post + 'quote_post', // For quoting a post in the forums + 'quote_comment', // For quoting a comment in the forums + ), + 'posts' => array( + 'paged', // For switching between pages of posts + ), + 'flagged' => array( + 'paged', + ), + 'mustread' => array( + 'paged', + ), + 'users' => array( + 'filter_query', + 'results_u_order', + 'u_paged', + ), +); + + +/** + * Pass through the following params in ANY redirect. + * If these params exist, we include them in ANY redirect we make. + * We also do NOT overwrite them (e-g: in case of tiny slugs) + */ +$passthru_in_all_redirs__params = array( + 'utm_source', + 'utm_campaign', + 'utm_medium', ); @@ -913,44 +954,67 @@ * The first string is the production (minified URL), the second is the development URL (optional). */ $library_local_urls = array( - '#jquery#' => array( 'jquery.min.js', 'jquery.js' ), - '#jquery_migrate#' => array( 'jquery/jquery-migrate.min.js', 'jquery/jquery-migrate.js' ), - '#jqueryUI#' => array( 'jquery/jquery.ui.b2evo.min.js', 'jquery/jquery.ui.b2evo.js' ), - '#jqueryUI_css#' => array( 'jquery/smoothness/jquery-ui.b2evo.min.css', 'jquery/smoothness/jquery-ui.b2evo.css' ), + '#jquery#' => array( 'ext:jquery/jquery.min.js', 'ext:jquery/jquery.js' ), + '#jquery_migrate#' => array( 'ext:jquery/jquery-migrate.min.js', 'ext:jquery/jquery-migrate.js' ), + '#jqueryUI#' => array( 'ext:jquery/ui/js/jquery.ui.b2evo.min.js', 'ext:jquery/ui/js/jquery.ui.b2evo.js' ), + '#jqueryUI_css#' => array( 'ext:jquery/ui/css/smoothness/jquery-ui.b2evo.min.css', 'ext:jquery/ui/css/smoothness/jquery-ui.b2evo.css' ), # Uncomment the following lines if your plugins need more jQueryUI features than the ones loaded by b2evo: -# '#jqueryUI#' => array( 'jquery/jquery.ui.all.min.js', 'jquery/jquery.ui.all.js' ), -# '#jqueryUI_css#' => array( 'jquery/smoothness/jquery-ui.min.css', 'jquery/smoothness/jquery-ui.css' ), - '#bootstrap#' => array( 'bootstrap/bootstrap.min.js', 'bootstrap/bootstrap.js' ), - '#bootstrap_css#' => array( 'bootstrap/bootstrap.min.css', 'bootstrap/bootstrap.css' ), - '#bootstrap_theme_css#' => array( 'bootstrap/bootstrap-theme.min.css', 'bootstrap/bootstrap-theme.css' ), - '#bootstrap_typeahead#' => array( 'bootstrap/typeahead.bundle.min.js', 'bootstrap/typeahead.bundle.js' ), - '#easypiechart#' => array( 'jquery/jquery.easy-pie-chart.min.js', 'jquery/jquery.easy-pie-chart.js' ), - '#scrollto#' => array( 'jquery/jquery.scrollto.min.js', 'jquery/jquery.scrollto.js' ), - '#touchswipe#' => array( 'jquery/jquery.touchswipe.min.js', 'jquery/jquery.touchswipe.js' ), - '#jqplot#' => array( 'jquery/jqplot/jquery.jqplot.min.js', 'jquery/jqplot/jquery.jqplot.js' ), - '#jqplot_barRenderer#' => array( 'jquery/jqplot/jqplot.barRenderer.min.js', 'jquery/jqplot/jqplot.barRenderer.js' ), - '#jqplot_canvasAxisTickRenderer#' => array( 'jquery/jqplot/jqplot.canvasAxisTickRenderer.min.js', 'jquery/jqplot/jqplot.canvasAxisTickRenderer.js' ), - '#jqplot_canvasTextRenderer#' => array( 'jquery/jqplot/jqplot.canvasTextRenderer.min.js', 'jquery/jqplot/jqplot.canvasTextRenderer.js' ), - '#jqplot_categoryAxisRenderer#' => array( 'jquery/jqplot/jqplot.categoryAxisRenderer.min.js', 'jquery/jqplot/jqplot.categoryAxisRenderer.js' ), - '#jqplot_enhancedLegendRenderer#' => array( 'jquery/jqplot/jqplot.enhancedLegendRenderer.min.js', 'jquery/jqplot/jqplot.enhancedLegendRenderer.js' ), - '#jqplot_highlighter#' => array( 'jquery/jqplot/jqplot.highlighter.min.js', 'jquery/jqplot/jqplot.highlighter.js' ), - '#jqplot_canvasOverlay#' => array( 'jquery/jqplot/jqplot.canvasOverlay.min.js', 'jquery/jqplot/jqplot.canvasOverlay.js' ), - '#jqplot_donutRenderer#' => array( 'jquery/jqplot/jqplot.donutRenderer.min.js', 'jquery/jqplot/jqplot.donutRenderer.js' ), - '#jqplot_css#' => array( 'jquery/jquery.jqplot.min.css', 'jquery/jquery.jqplot.css' ), - '#tinymce#' => array( 'tiny_mce/tinymce.min.js' ), - '#tinymce_jquery#' => array( 'tiny_mce/jquery.tinymce.min.js' ), - '#flowplayer#' => array( 'flowplayer/flowplayer.min.js', 'flowplayer/flowplayer.js' ), - '#mediaelement#' => array( 'mediaelement/mediaelement-and-player.min.js', 'mediaelement/mediaelement-and-player.js' ), - '#mediaelement_css#' => array( 'mediaelement/mediaelementplayer.min.css', 'mediaelement/mediaelementplayer.css' ), - '#videojs#' => array( 'videojs/video.min.js', 'videojs/video.js' ), - '#videojs_css#' => array( 'videojs/video-js.min.css', 'videojs/video-js.css' ), - '#jcrop#' => array( 'jquery/jquery.jcrop.min.js', 'jquery/jquery.jcrop.js' ), - '#jcrop_css#' => array( 'jquery/jcrop/jquery.jcrop.min.css', 'jquery/jcrop/jquery.jcrop.css' ), - '#fontawesome#' => array( 'font-awesome.min.css', 'font-awesome.css' ), - '#clipboardjs#' => array( 'clipboardjs/clipboard.min.js' ), - '#hotkeys#' => array( 'hotkeys/hotkeys.min.js' ), +# '#jqueryUI#' => array( 'ext:jquery/ui/js/jquery.ui.all.min.js', 'ext:jquery/ui/js/jquery.ui.all.js' ), +# '#jqueryUI_css#' => array( 'ext:jquery/ui/css/smoothness/jquery-ui.min.css', 'ext:jquery/ui/css/smoothness/jquery-ui.css' ), + '#bootstrap#' => array( 'ext:bootstrap/js/bootstrap.min.js', 'ext:bootstrap/js/bootstrap.js' ), + '#bootstrap_css#' => array( 'ext:bootstrap/css/bootstrap.min.css', 'ext:bootstrap/css/bootstrap.css' ), + '#bootstrap_theme_css#' => array( 'ext:bootstrap/css/bootstrap-theme.min.css', 'ext:bootstrap/css/bootstrap-theme.css' ), + '#bootstrap_typeahead#' => array( 'ext:bootstrap/js/typeahead.bundle.min.js', 'ext:bootstrap/js/typeahead.bundle.js' ), + '#easypiechart#' => array( 'ext:jquery/easy-pie-chart/js/jquery.easy-pie-chart.min.js', 'ext:jquery/easy-pie-chart/js/jquery.easy-pie-chart.js' ), + '#scrollto#' => array( 'customized:jquery/scrollto/jquery.scrollto.min.js', 'customized:jquery/scrollto/jquery.scrollto.js' ), + '#touchswipe#' => array( 'ext:jquery/touchswipe/jquery.touchswipe.min.js', 'ext:jquery/touchswipe/jquery.touchswipe.js' ), + '#jqplot#' => array( 'ext:jquery/jqplot/js/jquery.jqplot.min.js' ), + '#jqplot_barRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.barRenderer.min.js' ), + '#jqplot_canvasAxisTickRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.canvasAxisTickRenderer.min.js' ), + '#jqplot_canvasTextRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.canvasTextRenderer.min.js' ), + '#jqplot_categoryAxisRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.categoryAxisRenderer.min.js' ), + '#jqplot_enhancedLegendRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.enhancedLegendRenderer.min.js' ), + '#jqplot_highlighter#' => array( 'ext:jquery/jqplot/js/jqplot.highlighter.min.js' ), + '#jqplot_canvasOverlay#' => array( 'ext:jquery/jqplot/js/jqplot.canvasOverlay.min.js' ), + '#jqplot_donutRenderer#' => array( 'ext:jquery/jqplot/js/jqplot.donutRenderer.min.js' ), + '#jqplot_css#' => array( 'ext:jquery/jqplot/css/jquery.jqplot.min.css', 'ext:jquery/jqplot/css/jquery.jqplot.css' ), + '#tinymce#' => array( 'ext:tiny_mce/tinymce.min.js' ), + '#tinymce_jquery#' => array( 'ext:tiny_mce/jquery.tinymce.min.js' ), + '#flowplayer#' => array( 'ext:flowplayer/flowplayer.min.js', 'ext:flowplayer/flowplayer.js' ), + '#mediaelement#' => array( 'ext:mediaelement/js/mediaelement-and-player.min.js', 'ext:mediaelement/js/mediaelement-and-player.js' ), + '#mediaelement_css#' => array( 'ext:mediaelement/css/mediaelementplayer.min.css', 'ext:mediaelement/css/mediaelementplayer.css' ), + '#videojs#' => array( 'ext:videojs/js/video.min.js', 'ext:videojs/js/video.js' ), + '#videojs_css#' => array( 'ext:videojs/css/video-js.min.css', 'ext:videojs/css/video-js.css' ), + '#jcrop#' => array( 'ext:jquery/jcrop/js/jquery.jcrop.min.js', 'ext:jquery/jcrop/js/jquery.jcrop.js' ), + '#jcrop_css#' => array( 'ext:jquery/jcrop/css/jquery.jcrop.min.css', 'ext:jquery/jcrop/css/jquery.jcrop.css' ), + '#fontawesome#' => array( 'ext:font-awesome/css/font-awesome.min.css', 'ext:font-awesome/css/font-awesome.css' ), + '#clipboardjs#' => array( 'ext:clipboardjs/clipboard.min.js' ), + '#hotkeys#' => array( 'ext:hotkeys/hotkeys.min.js' ), ); +/** + * JS/CSS files which contain other JS/CSS files in order to don't required them twice when main file is required on current page + * + * Key - Alias or relative path of main JS/CSS file, Value - array of bundled files inside the main JS/CSS file + */ +$bundled_files = array( + 'build/bootstrap-evo_frontoffice-superbundle.bmin.js' => array( + '#jquery#', + '#jquery_migrate#', + '#jqueryUI#', + '#bootstrap#', + ), + 'bootstrap-b2evo_base-superbundle.bundle.css' => array( + '#fontawesome#', + '#bootstrap_css#', + 'bootstrap-b2evo_base.bundle.css', + ), + 'bootstrap-b2evo_base-superbundle.bmin.css' => array( + '#fontawesome#', + '#bootstrap_css#', + 'bootstrap-b2evo_base.bmin.css', + ), +); /** * Allow to send outbound pings on localhost @@ -991,6 +1055,40 @@ $access_control_allow_origin = false; // set to '*' or to specific URL to enable CORS requests +/** + * Allow to use a "defer" way for loading of JavaScript files + * + * TODO: Implement new value 'front' in order to allow this only on front-office + */ +$use_defer = true; + +$use_defer_for_backoffice = false; +$use_defer_for_loggedin_users = true; +$use_defer_for_anonymous_users = true; + +$use_defer_for_default_register_form = true; + +$use_defer_for_anonymous_disp_register = true; +$use_defer_for_anonymous_disp_register_finish = true; +$use_defer_for_anonymous_disp_users = true; +$use_defer_for_anonymous_disp_anonpost = true; + +$use_defer_for_loggedin_disp_single_page = true; +$use_defer_for_loggedin_disp_front = true; +$use_defer_for_loggedin_disp_messages = true; +$use_defer_for_loggedin_disp_threads = true; +$use_defer_for_loggedin_disp_profile = true; +$use_defer_for_loggedin_disp_pwdchange = true; +$use_defer_for_loggedin_disp_edit = true; +$use_defer_for_loggedin_disp_proposechange = true; +$use_defer_for_loggedin_disp_edit_comment = true; +$use_defer_for_loggedin_disp_comments = true; +$use_defer_for_loggedin_disp_visits = true; +$use_defer_for_loggedin_disp_contacts = true; + +$disable_tinymce_for_frontoffice_comment_form = false; // Disables TinyMCE plugin in the front-office for comment forms + + // ----- CHANGE THE FOLLOWING SETTINGS ONLY IF YOU KNOW WHAT YOU'RE DOING! ----- $evonetsrv_protocol = 'http'; $evonetsrv_host = 'rpc.b2evo.net'; @@ -1014,4 +1112,4 @@ // This is for plugins to add CS files to the TinyMCE editor window: $tinymce_content_css = array(); -?> \ No newline at end of file +?> diff --git a/conf/_application.php b/conf/_application.php index 5219ec9844d..344551c1fac 100644 --- a/conf/_application.php +++ b/conf/_application.php @@ -15,13 +15,13 @@ * Note: This has to be compatible with {@link http://us2.php.net/en/version-compare}. * @global string */ -$app_version = '7.1.7-stable'; +$app_version = '7.2.5-stable'; /** * Release date (ISO) * @global string */ -$app_date = '2020-12-01'; +$app_date = '2022-08-06'; /** * Is this b2evolution PRO? @@ -44,7 +44,7 @@ * * {@internal Before changing this in CVS, it should be discussed! }} */ -$new_db_version = 16013; +$new_db_version = 16170; /** * Minimum PHP version required for b2evolution to function properly. It will contain each module own minimum PHP version as well. diff --git a/conf/_icons.php b/conf/_icons.php index 79dedadef60..7884808892b 100644 --- a/conf/_icons.php +++ b/conf/_icons.php @@ -269,7 +269,7 @@ function get_icon_info( $name ) 'size-glyph' => array( 10 ), 'fa' => 'caret-right', 'toggle-fa' => 'caret-down', - 'size-fa' => array( 3 ) + 'size-fa' => array( 8 ) ); case 'collapse': return array( 'alt' => '-', @@ -281,7 +281,7 @@ function get_icon_info( $name ) 'size-glyph' => array( 10 ), 'fa' => 'caret-down', 'toggle-fa' => 'caret-right', - 'size-fa' => array( 3 ) + 'size-fa' => array( 8 ) ); case 'filters_show': return array( diff --git a/cron/cron_exec.php b/cron/cron_exec.php index f7938d1480c..1e27490a333 100644 --- a/cron/cron_exec.php +++ b/cron/cron_exec.php @@ -306,11 +306,14 @@ if( ! $is_cli && ! is_admin_page() ) -{ // This is a web request: +{ // This is a web request: echo '
'; echo 'This page should refresh automatically in 15 seconds...
'; echo ''; echo ''; + + // Add JavaScript and CSS files included by plugins and skin + include_footerlines(); ?>