Skip to content

Commit

Permalink
Merge branch '4.1-dev' into tasks_enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
brianteeman authored Dec 7, 2021
2 parents 3a483e1 + 4118ca6 commit 64501d6
Show file tree
Hide file tree
Showing 88 changed files with 814 additions and 214 deletions.
9 changes: 4 additions & 5 deletions administrator/components/com_admin/script.php
Original file line number Diff line number Diff line change
Expand Up @@ -5948,7 +5948,6 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
'/administrator/components/com_fields/tmpl/field/modal.php',
'/administrator/templates/atum/scss/pages/_com_admin.scss',
'/administrator/templates/atum/scss/pages/_com_finder.scss',
'/administrator/templates/atum/scss/pages/_com_joomlaupdate.scss',
'/libraries/src/Error/JsonApi/InstallLanguageExceptionHandler.php',
'/libraries/src/MVC/Controller/Exception/InstallLanguage.php',
'/media/com_fields/js/admin-field-edit-modal-es5.js',
Expand Down Expand Up @@ -6109,7 +6108,9 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
'/media/com_joomlaupdate/js/update.min.js.gz',
'/templates/cassiopeia/images/system/sort_asc.png',
'/templates/cassiopeia/images/system/sort_desc.png',
// From 4.0.4 to 4.1.0
// From 4.0.4 to 4.0.5
'/media/vendor/codemirror/lib/#codemirror.js#',
// From 4.0.5 to 4.1.0
'/administrator/templates/atum/css/system/searchtools/searchtools.css',
'/administrator/templates/atum/css/system/searchtools/searchtools.min.css',
'/administrator/templates/atum/css/system/searchtools/searchtools.min.css.gz',
Expand Down Expand Up @@ -6324,8 +6325,6 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
'/templates/system/scss/general.scss',
'/templates/system/scss/offline.scss',
'/templates/system/scss/offline_rtl.scss',
// From 4.0.4 to 4.0.5
'/media/vendor/codemirror/lib/#codemirror.js#',
);

$folders = array(
Expand Down Expand Up @@ -7585,7 +7584,7 @@ public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
'/libraries/vendor/algo26-matthias/idna-convert/tests',
// From 4.0.3 to 4.0.4
'/templates/cassiopeia/images/system',
// From 4.0.4 to 4.1.0
// From 4.0.5 to 4.1.0
'/templates/system/scss',
'/templates/system/css',
'/templates/cassiopeia/scss/vendor/metismenu',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -399,8 +399,10 @@ public function getFiles()
$lang = Factory::getLanguage();

// Load the core and/or local language file(s).
$lang->load('tpl_' . $template->element, $client->path) ||
$lang->load('tpl_' . $template->element, $client->path . '/templates/' . $template->element);
$lang->load('tpl_' . $template->element, $client->path)
|| (!empty($template->xmldata->parent) && $lang->load('tpl_' . $template->xmldata->parent, $client->path))
|| $lang->load('tpl_' . $template->element, $client->path . '/templates/' . $template->element)
|| (!empty($template->xmldata->parent) && $lang->load('tpl_' . $template->xmldata->parent, $client->path . '/templates/' . $template->xmldata->parent));
$this->element = $path;

if (!is_writable($path))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,24 @@ public function thumb($template, $clientId = 0)
$template->xmldata = TemplatesHelper::parseXMLTemplateFile($client->id === 0 ? JPATH_ROOT : JPATH_ROOT . '/administrator', $template->name);
}

if ((isset($template->xmldata->inheritable) && (bool) $template->xmldata->inheritable) || (isset($template->xmldata->parent) && (string) $template->xmldata->parent !== ''))
if ((isset($template->xmldata->inheritable) && (bool) $template->xmldata->inheritable) || isset($template->xmldata->parent))
{
if (isset($template->xmldata->parent) && (string) $template->xmldata->parent !== '' && file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png'))
{
$html = HTMLHelper::_('image', 'media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png', Text::_('COM_TEMPLATES_PREVIEW'));

if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_preview.png'))
if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . $template->name . '/images/template_preview.png'))
{
$html = HTMLHelper::_('image', 'media/templates/' . $client->name . '/' . $template->name . '/images/template_thumbnail.png', Text::_('COM_TEMPLATES_PREVIEW'));
$html = '<button type="button" data-bs-target="#' . $template->name . '-Modal" class="thumbnail" data-bs-toggle="modal" title="' . Text::_('COM_TEMPLATES_CLICK_TO_ENLARGE') . '">' . $html . '</button>';
}
elseif ((file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_preview.png')))
{
$html = HTMLHelper::_('image', 'media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png', Text::_('COM_TEMPLATES_PREVIEW'));
$html = '<button type="button" data-bs-target="#' . $template->name . '-Modal" class="thumbnail" data-bs-toggle="modal" title="' . Text::_('COM_TEMPLATES_CLICK_TO_ENLARGE') . '">' . $html . '</button>';
}
else
{
$html = HTMLHelper::_('image', 'template_thumb.svg', Text::_('COM_TEMPLATES_PREVIEW'), ['style' => 'width:200px; height:120px;']);
}
}
elseif (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . $template->name . '/images/template_thumbnail.png'))
{
Expand Down Expand Up @@ -121,15 +129,27 @@ public function thumbModal($template, $clientId = 0)
$template->xmldata = TemplatesHelper::parseXMLTemplateFile($client->id === 0 ? JPATH_ROOT : JPATH_ROOT . '/administrator', $template->name);
}

if ((isset($template->xmldata->inheritable) && (bool) $template->xmldata->inheritable) || (isset($template->xmldata->parent) && (string) $template->xmldata->parent !== ''))
if ((isset($template->xmldata->inheritable) && (bool) $template->xmldata->inheritable) || isset($template->xmldata->parent))
{
if (isset($template->xmldata->parent) && (string) $template->xmldata->parent !== '' && file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png'))
if (isset($template->xmldata->parent) && (string) $template->xmldata->parent !== '')
{
$thumb = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . 'administrator') . 'media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png';
if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . $template->name . '/images/template_thumbnail.png'))
{
$thumb = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . 'administrator') . 'media/templates/' . $client->name . '/' . $template->name . '/images/template_thumbnail.png';

if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_preview.png'))
if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . $template->name. '/images/template_preview.png'))
{
$preview = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . '/administrator') . '/media/templates/' . $client->name . '/' . $template->name. '/images/template_preview.png';
}
}
else
{
$preview = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . '/administrator') . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_preview.png';
$thumb = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . 'administrator') . 'media/templates/' . $client->name . '/' . (string) $template->xmldata->parent . '/images/template_thumbnail.png';

if (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent. '/images/template_preview.png'))
{
$preview = ($template->client_id == 0 ? Uri::root(true) : Uri::root(true) . '/administrator') . '/media/templates/' . $client->name . '/' . (string) $template->xmldata->parent. '/images/template_preview.png';
}
}
}
elseif (file_exists(JPATH_ROOT . '/media/templates/' . $client->name . '/' . $template->name . '/images/template_thumbnail.png'))
Expand Down
12 changes: 5 additions & 7 deletions administrator/language/en-GB/com_scheduler.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
; Note : All ini files need to be saved as UTF-8

COM_SCHEDULER="Scheduled Tasks"
COM_SCHEDULER_CONFIGURATION="Scheduled Tasks Manager Configuration"
COM_SCHEDULER_CONFIGURATION="Scheduled Tasks Configuration"
COM_SCHEDULER_CONFIG_FIELDSET_LAZY_SCHEDULER_DESC="Configure how site visits trigger Scheduled Tasks."
COM_SCHEDULER_CONFIG_FIELDSET_LAZY_SCHEDULER_LABEL="Lazy Scheduler"
COM_SCHEDULER_CONFIG_GENERATE_WEBCRON_KEY_DESC="The webcron needs a protection key before it is functional. Saving this configuration will autogenerate the key."
Expand All @@ -25,11 +25,10 @@ COM_SCHEDULER_CONFIG_WEBCRON_LABEL="Web Cron"
COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_DESC="Copy the link to your clipboard."
COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_FAIL="Could not copy link!"
COM_SCHEDULER_CONFIG_WEBCRON_LINK_COPY_SUCCESS="Link copied!"
COM_SCHEDULER_DASHBOARD_TITLE="Scheduled Tasks Manager"
COM_SCHEDULER_DESCRIPTION_TASK_PRIORITY="This is an advanced option. Higher priority tasks can potentially block lower priority tasks."
COM_SCHEDULER_EDIT_TASK="Edit Task"
COM_SCHEDULER_EMPTYSTATE_BUTTON_ADD="Add a Task!"
COM_SCHEDULER_EMPTYSTATE_CONTENT="No Tasks!"
COM_SCHEDULER_EMPTYSTATE_CONTENT="Tasks are actions on your website that are scheduled to occur at set times."
COM_SCHEDULER_EMPTYSTATE_TITLE="No Tasks have been created yet!"
COM_SCHEDULER_ERROR_FORBIDDEN_JUMP_TO_ADD_VIEW="You need to select a Task type first!"
COM_SCHEDULER_ERROR_INVALID_TASK_TYPE="Invalid Task Type!"
Expand Down Expand Up @@ -81,8 +80,7 @@ COM_SCHEDULER_LABEL_TASK_PRIORITY_NORMAL="Normal"
COM_SCHEDULER_LABEL_TIMES_EXEC="Times Executed"
COM_SCHEDULER_LABEL_TIMES_FAIL="Times Failed"
COM_SCHEDULER_LAST_RUN_DATE="Last Run Date"
COM_SCHEDULER_MANAGER_TASK="Task Manager"
COM_SCHEDULER_MANAGER_TASKS="Tasks Manager"
COM_SCHEDULER_MANAGER_TASKS="Scheduled Tasks"
COM_SCHEDULER_MANAGER_TASK_EDIT="Edit Task"
COM_SCHEDULER_MANAGER_TASK_NEW="New Task"
COM_SCHEDULER_MSG_MANAGE_NO_TASK_PLUGINS="There are no task types matching your query!"
Expand Down Expand Up @@ -125,7 +123,7 @@ COM_SCHEDULER_SELECT_TYPE="- Task Type -"
COM_SCHEDULER_TABLE_CAPTION="Tasks List"
COM_SCHEDULER_TASK="Task"
COM_SCHEDULER_TASKS_VIEW_DEFAULT_DESC="Schedule and Manage Task Routines."
COM_SCHEDULER_TASKS_VIEW_DEFAULT_TITLE="Scheduled Tasks Manager"
COM_SCHEDULER_TASKS_VIEW_DEFAULT_TITLE="Scheduled Tasks"
COM_SCHEDULER_TASK_PARAMS_FIELDSET_LABEL="Task Parameters"
COM_SCHEDULER_TASK_PRIORITY_ASC="Task Priority, Ascending"
COM_SCHEDULER_TASK_PRIORITY_DESC="Task Priority, Descending"
Expand All @@ -141,7 +139,7 @@ COM_SCHEDULER_TEST_RUN_STATUS_STARTED="Status: Started"
COM_SCHEDULER_TEST_RUN_STATUS_TERMINATED="Status: Terminated"
COM_SCHEDULER_TEST_RUN_TASK="Task: \"%s\""
COM_SCHEDULER_TEST_RUN_TITLE="Test task (ID: %d)"
COM_SCHEDULER_TEST_TASK="Test task"
COM_SCHEDULER_TEST_TASK="Test Task"
COM_SCHEDULER_TRIGGER_CRON="Cron"
COM_SCHEDULER_TRIGGER_PSEUDOCRON="Pseudocron"
COM_SCHEDULER_TRIGGER_XVISITS="X-Visits"
Expand Down
8 changes: 4 additions & 4 deletions administrator/language/en-GB/plg_task_sitestatus.ini
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ PLG_TASK_SITE_STATUS_ERROR_CONFIGURATION_PHP_NOTWRITABLE="Could not make configu
PLG_TASK_SITE_STATUS_ERROR_WRITE_FAILED="Could not write to the configuration file!"
PLG_TASK_SITE_STATUS_ROUTINE_END_LOG_MESSAGE="ToggleOffline return code is: %1$d. Processing Time: %2$.2f seconds."
PLG_TASK_SITE_STATUS_TASK_LOG_SITE_STATUS="Site was %1$s, is now %2$s."
PLG_TASK_SITE_STATUS_SET_OFFLINE_DESC="Sets site offline to online on each run."
PLG_TASK_SITE_STATUS_SET_OFFLINE_DESC="Sets site status to online on each run."
PLG_TASK_SITE_STATUS_SET_OFFLINE_ROUTINE_END_LOG_MESSAGE="SetOffline return code is: %1$d. Processing Time: %2$.2f seconds."
PLG_TASK_SITE_STATUS_SET_OFFLINE_TITLE="Set Site Offline."
PLG_TASK_SITE_STATUS_SET_OFFLINE_TITLE="Set Site Offline"
PLG_TASK_SITE_STATUS_SET_ONLINE_DESC="Sets site status to online on each run."
PLG_TASK_SITE_STATUS_SET_ONLINE_ROUTINE_END_LOG_MESSAGE="SetOnline return code is: %1$d. Processing Time: %2$.2f seconds."
PLG_TASK_SITE_STATUS_SET_ONLINE_TITLE="Set Site Online."
PLG_TASK_SITE_STATUS_TITLE="Toggle Offline."
PLG_TASK_SITE_STATUS_SET_ONLINE_TITLE="Set Site Online"
PLG_TASK_SITE_STATUS_TITLE="Toggle Offline"
PLG_TASK_SITE_STATUS_XML_DESCRIPTION="Offers task routines to change the site's offline status."
25 changes: 11 additions & 14 deletions build/build-modules-js/javascript/build-bootstrap-js.es6.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,26 @@ const { nodeResolve } = require('@rollup/plugin-node-resolve');
const replace = require('@rollup/plugin-replace');
const { babel } = require('@rollup/plugin-babel');
const commonjs = require('@rollup/plugin-commonjs');
const bsVersion = require('../../../package.json').dependencies.bootstrap.replace(/^\^|~/, '');

const tasks = [];
const inputFolder = 'build/media_source/vendor/bootstrap/js';
const outputFolder = 'media/vendor/bootstrap/js';

const getCurrentUnixTime = Math.round((new Date()).getTime() / 1000);

const createMinified = async (file) => {
const initial = await readFile(resolve(outputFolder, file), { encoding: 'utf8' });
const mini = await minify(initial.replace('./popper.js', `./popper.min.js?${getCurrentUnixTime}`).replace('./dom.js', `./dom.min.js?${getCurrentUnixTime}`), { sourceMap: false, format: { comments: false } });
await writeFile(resolve(outputFolder, file), initial.replace('./popper.js', `./popper.js?${getCurrentUnixTime}`).replace('./dom.js', `./dom.js?${getCurrentUnixTime}`), { encoding: 'utf8', mode: 0o644 });
const mini = await minify(initial.replace('./popper.js', `./popper.min.js?${bsVersion}`).replace('./dom.js', `./dom.min.js?${bsVersion}`), { sourceMap: false, format: { comments: false } });
await writeFile(resolve(outputFolder, file), initial.replace('./popper.js', `./popper.js?${bsVersion}`).replace('./dom.js', `./dom.js?${bsVersion}`), { encoding: 'utf8', mode: 0o644 });
await writeFile(resolve(outputFolder, file.replace('.js', '.min.js')), mini.code, { encoding: 'utf8', mode: 0o644 });
};

const build = async () => {
// eslint-disable-next-line no-console
console.log('Building ES6 Components...');

const domImports = await readdir(resolve('node_modules/bootstrap', 'js/src/dom'));
const utilImports = await readdir(resolve('node_modules/bootstrap', 'js/src/util'));

const bundle = await rollup.rollup({
input: resolve(inputFolder, 'index.es6.js'),
plugins: [
Expand Down Expand Up @@ -57,11 +59,9 @@ const build = async () => {
],
external: [
'./base-component.js',
'./dom/data.js',
'./event-handler.js',
'./dom/manipulator.js',
'./selector-engine.js',
'./util/index.js',
...domImports.map((file) => `./dom/${file}`),
...domImports.map((file) => `./${file}`),
...utilImports.map((file) => `./util/${file}`),
],
manualChunks: {
alert: ['build/media_source/vendor/bootstrap/js/alert.es6.js'],
Expand All @@ -78,11 +78,8 @@ const build = async () => {
popper: ['@popperjs/core'],
dom: [
'node_modules/bootstrap/js/src/base-component.js',
'node_modules/bootstrap/js/src/dom/data.js',
'node_modules/bootstrap/js/src/dom/event-handler.js',
'node_modules/bootstrap/js/src/dom/manipulator.js',
'node_modules/bootstrap/js/src/dom/selector-engine.js',
'node_modules/bootstrap/js/src/util/index.js',
...domImports.map((file) => `node_modules/bootstrap/js/src/dom/${file}`),
...utilImports.map((file) => `node_modules/bootstrap/js/src/util/${file}`),
],
},
});
Expand Down
8 changes: 4 additions & 4 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions installation/language/ar-AA/joomla.ini
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,6 @@ INSTL_COMPLETE_ERROR_FOLDER_DELETE="تعذر حذف مجلد \"%s\" . يرجى
INSTL_COMPLETE_REMOVE_FOLDER="يرجى إزالة مجلد \"%s\""
INSTL_COMPLETE_CONGRAT="تهانينا!"
INSTL_COMPLETE_TITLE="مبروك! لقد تم تنصيب نظام جوملا! بنجاح."
INSTL_COMPLETE_SITE_BTN="استكمال والذهاب الى واجهة الموقع"
INSTL_COMPLETE_ADMIN_BTN="استكمال والذهاب الى لوحة التحكم"
INSTL_COMPLETE_FINAL="اكتمل التنصيب"
INSTL_COMPLETE_FINAL_DESC="اكتمل تنصيب جوملا الآن وجاهز للاستخدام."
INSTL_COMPLETE_ADD_EXTRA_LANGUAGE="قم بتثبيت لغات إضافية"
Expand Down Expand Up @@ -170,6 +168,7 @@ INSTL_HEADER_ERROR="خطأ"
; Helpers
INSTL_PAGE_TITLE="تنصيب الموقع - جوملا!"
; Configuration model
INSTL_ERROR_CONNECT_DB="تعذر الاتصال بقاعدة البيانات. الموصل أرجع الرقم: %s."
INSTL_STD_OFFLINE_MSG="الموقع مغلق مؤقتاً للصيانة والتحديث.<br /> تفضل بالزيارة في وقت لاحق، شكراً"
; Others
INSTL_CONFPROBLEM="ملف التهيئة configuration.php أو الدليل غير قابل للكتابة، أو توجد مشكلة تمنع إنشاء ملف التهيئة. يجب القيام بتحميل الكود التالي يدوياً. لعمل ذلك يجب الضغط على منطقة النص لتظليله ثم نسخه ولصقه في ملف نصي جديد تقوم بإنشائه وتسميته 'configuration.php' !ثم تحميله إلى حسابك في موقع جوملا!."
Expand Down Expand Up @@ -257,13 +256,15 @@ WARNING="تحذير"
; Javascript ajax error messages
JLIB_JS_AJAX_ERROR_CONNECTION_ABORT="فشل الاتصال عند محاولة الحصول على بيانات JSON."
JLIB_JS_AJAX_ERROR_NO_CONTENT="لم يتم إرجاع أي محتوى."
JLIB_JS_AJAX_ERROR_OTHER="حدث خطأ أثناء جلب البيانات JSON: HTTP %s حالة الكود."
JLIB_JS_AJAX_ERROR_PARSE="حدث خطأ عند تحليل أثناء معالجة البيانات JSON التالية:<br/><code style=\"color:inherit;white-space:pre-wrap;padding:0;margin:0;border:0;background:inherit;\">%s</code>"
JLIB_JS_AJAX_ERROR_TIMEOUT="انتهت المهلة المحددة أثناء جلب البيانات JSON."
; Field password messages
JFIELD_PASSWORD_INDICATE_COMPLETE="تم قبول كلمة المرور"
JFIELD_PASSWORD_INDICATE_INCOMPLETE="كلمة المرور لا تلبي متطلبات الموقع."
JFIELD_PASSWORD_SPACES_IN_PASSWORD="يجب ألا تحتوي كلمة المرور على مسافات في البداية أو النهاية."
JFIELD_PASSWORD_TOO_LONG="كلمة المرور طويلة جدا. يجب أن تكون كلمات المرور أقل من 100 حرف."
JFIELD_PASSWORD_TOO_SHORT_N="كلمة المرور قصيرة جدا. يجب أن تحتوي كلمات المرور على %s من الأحرف على الأقل."
; Javascript Form Validation Messages
JLIB_FORM_CONTAINS_INVALID_FIELDS="لا يمكن إرسال النموذج لأنه يفتقد إلى البيانات المطلوبة. <br> يرجى تصحيح الحقول المحددة وحاول مرة أخرى."
JLIB_FORM_FIELD_INVALID_VALUE="هذه القيمة غير صالحة."
Expand Down
Loading

0 comments on commit 64501d6

Please sign in to comment.