Release of v5.0.0-alpha8
Add power path override option on component level. Fix the sql build feature. #1032.
This commit is contained in:
@@ -0,0 +1,259 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @author Llewellyn van der Merwe <https://dev.vdm.io>
|
||||
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
|
||||
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace VDM\Joomla\Componentbuilder\Compiler\Language;
|
||||
|
||||
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Config;
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Language;
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Placeholder;
|
||||
use VDM\Joomla\Utilities\ArrayHelper;
|
||||
use VDM\Joomla\Utilities\StringHelper;
|
||||
use VDM\Joomla\Utilities\GetHelper;
|
||||
|
||||
|
||||
/**
|
||||
* Compiler Language Extractor
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
class Extractor
|
||||
{
|
||||
/**
|
||||
* The lang keys for extensions
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
public array $langKeys = [];
|
||||
|
||||
/**
|
||||
* The Language JS matching check
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
public array $langMismatch = [];
|
||||
|
||||
/**
|
||||
* The Language SC matching check
|
||||
*
|
||||
* @var array
|
||||
* @since 3.2.0
|
||||
**/
|
||||
public array $langMatch = [];
|
||||
|
||||
/**
|
||||
* The Config Class.
|
||||
*
|
||||
* @var Config
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected Config $config;
|
||||
|
||||
/**
|
||||
* The Language Class.
|
||||
*
|
||||
* @var Language
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected Language $language;
|
||||
|
||||
/**
|
||||
* The Placeholder Class.
|
||||
*
|
||||
* @var Placeholder
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected Placeholder $placeholder;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param Config $config The Config Class.
|
||||
* @param Language $language The Language Class.
|
||||
* @param Placeholder $placeholder The Placeholder Class.
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function __construct(Config $config, Language $language,
|
||||
Placeholder $placeholder)
|
||||
{
|
||||
$this->config = $config;
|
||||
$this->language = $language;
|
||||
$this->placeholder = $placeholder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract Language Strings
|
||||
*
|
||||
* @param string $content The content
|
||||
*
|
||||
* @return string The content with the updated Language place holder
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function engine(string $content): string
|
||||
{
|
||||
// get targets to search for
|
||||
$lang_string_targets = array_filter(
|
||||
$this->config->lang_string_targets, fn($get): bool => strpos($content, (string) $get) !== false
|
||||
);
|
||||
// check if we should continue
|
||||
if (ArrayHelper::check($lang_string_targets))
|
||||
{
|
||||
// insure string is not broken
|
||||
$content = $this->placeholder->update_($content);
|
||||
// reset some buckets
|
||||
$lang_holders = [];
|
||||
$lang_check = [];
|
||||
$lang_only = [];
|
||||
$js_text = [];
|
||||
$sc_text = [];
|
||||
// first get the Joomla .JText._()
|
||||
if (in_array('Joomla' . '.JText._(', $lang_string_targets) || in_array('Joomla' . '.Text._(', $lang_string_targets))
|
||||
{
|
||||
$js_text[] = GetHelper::allBetween(
|
||||
$content, "Joomla" . ".JText._('", "'"
|
||||
);
|
||||
$js_text[] = GetHelper::allBetween(
|
||||
$content, 'Joomla' . '.JText._("', '"'
|
||||
);
|
||||
$js_text[] = GetHelper::allBetween(
|
||||
$content, "Joomla" . ".Text._('", "'"
|
||||
);
|
||||
$js_text[] = GetHelper::allBetween(
|
||||
$content, 'Joomla' . '.Text._("', '"'
|
||||
);
|
||||
// combine into one array
|
||||
$js_text = ArrayHelper::merge($js_text);
|
||||
// we need to add a check to insure these JavaScript lang matchup
|
||||
if (ArrayHelper::check(
|
||||
$js_text
|
||||
)) //<-- not really needed hmmm
|
||||
{
|
||||
// load the JS text to mismatch array
|
||||
$lang_check[] = $js_text;
|
||||
$this->langMismatch = ArrayHelper::merge(
|
||||
array($js_text, $this->langMismatch)
|
||||
);
|
||||
}
|
||||
}
|
||||
// now get the JText: :script()
|
||||
if (in_array('JText:' . ':script(', $lang_string_targets) || in_array('Text:' . ':script(', $lang_string_targets))
|
||||
{
|
||||
$sc_text[] = GetHelper::allBetween(
|
||||
$content, "JText:" . ":script('", "'"
|
||||
);
|
||||
$sc_text[] = GetHelper::allBetween(
|
||||
$content, 'JText:' . ':script("', '"'
|
||||
);
|
||||
$sc_text[] = GetHelper::allBetween(
|
||||
$content, "Text:" . ":script('", "'"
|
||||
);
|
||||
$sc_text[] = GetHelper::allBetween(
|
||||
$content, 'Text:' . ':script("', '"'
|
||||
);
|
||||
// combine into one array
|
||||
$sc_text = ArrayHelper::merge($sc_text);
|
||||
// we need to add a check to insure these JavaScript lang matchup
|
||||
if (ArrayHelper::check($sc_text))
|
||||
{
|
||||
// load the Script text to match array
|
||||
$lang_check[] = $sc_text;
|
||||
$this->langMatch = ArrayHelper::merge(
|
||||
array($sc_text, $this->langMatch)
|
||||
);
|
||||
}
|
||||
}
|
||||
// now do the little trick for JustTEXT: :_('Just uppercase text');
|
||||
if (in_array('JustTEXT:' . ':_(', $lang_string_targets))
|
||||
{
|
||||
$lang_only[] = GetHelper::allBetween(
|
||||
$content, "JustTEXT:" . ":_('", "')"
|
||||
);
|
||||
$lang_only[] = GetHelper::allBetween(
|
||||
$content, 'JustTEXT:' . ':_("', '")'
|
||||
);
|
||||
// merge lang only
|
||||
$lang_only = ArrayHelper::merge($lang_only);
|
||||
}
|
||||
// set language data
|
||||
foreach ($lang_string_targets as $lang_string_target)
|
||||
{
|
||||
// need some special treatment here
|
||||
if ($lang_string_target === 'Joomla' . '.JText._('
|
||||
|| $lang_string_target === 'JText:' . ':script('
|
||||
|| $lang_string_target === 'Text:' . ':script('
|
||||
|| $lang_string_target === 'JustTEXT:' . ':_(')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$lang_check[] = GetHelper::allBetween(
|
||||
$content, $lang_string_target . "'", "'"
|
||||
);
|
||||
$lang_check[] = GetHelper::allBetween(
|
||||
$content, $lang_string_target . '"', '"'
|
||||
);
|
||||
}
|
||||
// the normal loading of the language strings
|
||||
$lang_check = ArrayHelper::merge($lang_check);
|
||||
if (ArrayHelper::check(
|
||||
$lang_check
|
||||
)) //<-- not really needed hmmm
|
||||
{
|
||||
foreach ($lang_check as $string)
|
||||
{
|
||||
if ($key_lang = $this->language->key($string))
|
||||
{
|
||||
// load the language targets
|
||||
foreach ($lang_string_targets as $lang_string_target)
|
||||
{
|
||||
// need some special treatment here
|
||||
if ($lang_string_target === 'JustTEXT:' . ':_(')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$lang_holders[$lang_string_target . "'" . $string
|
||||
. "'"]
|
||||
= $lang_string_target . "'" . $key_lang . "'";
|
||||
$lang_holders[$lang_string_target . '"' . $string
|
||||
. '"']
|
||||
= $lang_string_target . '"' . $key_lang . '"';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// the uppercase loading only (for arrays and other tricks)
|
||||
if (ArrayHelper::check($lang_only))
|
||||
{
|
||||
foreach ($lang_only as $string)
|
||||
{
|
||||
if ($key_lang = $this->language->key($string))
|
||||
{
|
||||
// load the language targets
|
||||
$lang_holders["JustTEXT:" . ":_('" . $string . "')"]
|
||||
= "'" . $key_lang . "'";
|
||||
$lang_holders['JustTEXT:' . ':_("' . $string . '")']
|
||||
= '"' . $key_lang . '"';
|
||||
}
|
||||
}
|
||||
}
|
||||
// only continue if we have value to replace
|
||||
if (ArrayHelper::check($lang_holders))
|
||||
{
|
||||
$content = $this->placeholder->update($content, $lang_holders);
|
||||
}
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,269 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Component.Builder
|
||||
*
|
||||
* @created 4th September, 2022
|
||||
* @author Llewellyn van der Merwe <https://dev.vdm.io>
|
||||
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
|
||||
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace VDM\Joomla\Componentbuilder\Compiler\Language;
|
||||
|
||||
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Language;
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Builder\MetaData;
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Builder\AccessSwitch;
|
||||
use VDM\Joomla\Componentbuilder\Compiler\Builder\AccessSwitchList;
|
||||
|
||||
|
||||
/**
|
||||
* Compiler Language Fieldset
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
class Fieldset
|
||||
{
|
||||
/**
|
||||
* The Language Class.
|
||||
*
|
||||
* @var Language
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected Language $language;
|
||||
|
||||
/**
|
||||
* The MetaData Class.
|
||||
*
|
||||
* @var MetaData
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected MetaData $metadata;
|
||||
|
||||
/**
|
||||
* The AccessSwitch Class.
|
||||
*
|
||||
* @var AccessSwitch
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected AccessSwitch $accessswitch;
|
||||
|
||||
/**
|
||||
* The AccessSwitchList Class.
|
||||
*
|
||||
* @var AccessSwitchList
|
||||
* @since 3.2.0
|
||||
*/
|
||||
protected AccessSwitchList $accessswitchlist;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param Language $language The Language Class.
|
||||
* @param MetaData $metadata The MetaData Class.
|
||||
* @param AccessSwitch $accessswitch The AccessSwitch Class.
|
||||
* @param AccessSwitchList $accessswitchlist The AccessSwitchList Class.
|
||||
*
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function __construct(Language $language, MetaData $metadata,
|
||||
AccessSwitch $accessswitch,
|
||||
AccessSwitchList $accessswitchlist)
|
||||
{
|
||||
$this->language = $language;
|
||||
$this->metadata = $metadata;
|
||||
$this->accessswitch = $accessswitch;
|
||||
$this->accessswitchlist = $accessswitchlist;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the fieldset language
|
||||
*
|
||||
* @param bool $access The access switch
|
||||
* @param bool $metadata The metadata switch
|
||||
* @param string $langTarget The language target
|
||||
* @param string $langView The single language view name
|
||||
* @param string $langViews The list language view name
|
||||
* @param string $nameSingle The single view name
|
||||
* @param string $nameList The list view name
|
||||
* @param string $nameSingleCode The single view code name
|
||||
* @param string $nameListCode The list view code name
|
||||
*
|
||||
* @return void
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public function set(bool $access, bool $metadata, string $langTarget, string $langView, string $langViews,
|
||||
string $nameSingle, string $nameList, string $nameSingleCode, string $nameListCode): void
|
||||
{
|
||||
// add metadata to the view
|
||||
if ($metadata)
|
||||
{
|
||||
$this->metadata->set($nameSingleCode, $nameListCode);
|
||||
}
|
||||
|
||||
// add access to the view
|
||||
if ($access)
|
||||
{
|
||||
$this->accessswitch->set($nameSingleCode, true);
|
||||
$this->accessswitchlist->set($nameListCode, true);
|
||||
}
|
||||
|
||||
// set default lang
|
||||
$this->language->set(
|
||||
$langTarget, $langView, $nameSingle
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews, $nameList
|
||||
);
|
||||
// set global item strings
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_ARCHIVED',
|
||||
"%s " . $nameList . " archived."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_ARCHIVED_1',
|
||||
"%s " . $nameSingle . " archived."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_CHECKED_IN_0',
|
||||
"No " . $nameSingle
|
||||
. " successfully checked in."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_CHECKED_IN_1',
|
||||
"%d " . $nameSingle
|
||||
. " successfully checked in."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_CHECKED_IN_MORE',
|
||||
"%d " . $nameList
|
||||
. " successfully checked in."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_DELETED',
|
||||
"%s " . $nameList . " deleted."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_DELETED_1',
|
||||
"%s " . $nameSingle . " deleted."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_FEATURED',
|
||||
"%s " . $nameList . " featured."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_FEATURED_1',
|
||||
"%s " . $nameSingle . " featured."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_PUBLISHED',
|
||||
"%s " . $nameList . " published."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_PUBLISHED_1',
|
||||
"%s " . $nameSingle . " published."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_TRASHED',
|
||||
"%s " . $nameList . " trashed."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_TRASHED_1',
|
||||
"%s " . $nameSingle . " trashed."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_UNFEATURED',
|
||||
"%s " . $nameList . " unfeatured."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_UNFEATURED_1',
|
||||
"%s " . $nameSingle . " unfeatured."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_UNPUBLISHED',
|
||||
"%s " . $nameList . " unpublished."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_UNPUBLISHED_1',
|
||||
"%s " . $nameSingle . " unpublished."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_FAILED_PUBLISHING',
|
||||
"%s " . $nameList . " failed publishing."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_N_ITEMS_FAILED_PUBLISHING_1',
|
||||
"%s " . $nameSingle . " failed publishing."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_BATCH_OPTIONS',
|
||||
"Batch process the selected " . $nameList
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langViews . '_BATCH_TIP',
|
||||
"All changes will be applied to all selected "
|
||||
. $nameList
|
||||
);
|
||||
// set some basic defaults
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_ERROR_UNIQUE_ALIAS',
|
||||
"Another " . $nameSingle
|
||||
. " has the same alias."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_ERROR_UNIQUE_ALIAS_TRASHED',
|
||||
"A trashed " . $nameSingle
|
||||
. " has the same alias ."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_CREATED_DATE_LABEL', "Created Date"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_CREATED_DATE_DESC',
|
||||
"The date this " . $nameSingle
|
||||
. " was created."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_MODIFIED_DATE_LABEL', "Modified Date"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_MODIFIED_DATE_DESC',
|
||||
"The date this " . $nameSingle
|
||||
. " was modified."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_CREATED_BY_LABEL', "Created By"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_CREATED_BY_DESC',
|
||||
"The user that created this " . $nameSingle
|
||||
. "."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_MODIFIED_BY_LABEL', "Modified By"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_MODIFIED_BY_DESC',
|
||||
"The last user that modified this "
|
||||
. $nameSingle . "."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_ORDERING_LABEL', "Ordering"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_VERSION_LABEL', "Version"
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_VERSION_DESC',
|
||||
"A count of the number of times this "
|
||||
. $nameSingle . " has been revised."
|
||||
);
|
||||
$this->language->set(
|
||||
$langTarget, $langView . '_SAVE_WARNING',
|
||||
"Alias already existed so a number was added at the end. You can re-edit the "
|
||||
. $nameSingle . " to customise the alias."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1 @@
|
||||
<html><body bgcolor="#FFFFFF"></body></html>
|
Reference in New Issue
Block a user