Added events to the new module and plugin translation areas. Updated the fieldtypes to have more info on the showon property.

This commit is contained in:
Llewellyn van der Merwe 2020-04-03 20:45:48 +02:00
parent 230834057a
commit ad8717a47d
No known key found for this signature in database
GPG Key ID: 8A8F406BA7238C4E
10 changed files with 270 additions and 203 deletions

View File

@ -144,14 +144,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 28th March, 2020 + *Last Build*: 3rd April, 2020
+ *Version*: 2.10.13 + *Version*: 2.10.13
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **280177** + *Line count*: **280662**
+ *Field count*: **1512** + *Field count*: **1514**
+ *File count*: **1771** + *File count*: **1771**
+ *Folder count*: **296** + *Folder count*: **287**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com). > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) > Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -144,14 +144,14 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) + *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder) + *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
+ *First Build*: 30th April, 2015 + *First Build*: 30th April, 2015
+ *Last Build*: 28th March, 2020 + *Last Build*: 3rd April, 2020
+ *Version*: 2.10.13 + *Version*: 2.10.13
+ *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved. + *Copyright*: Copyright (C) 2015 - 2020 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt + *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **280177** + *Line count*: **280662**
+ *Field count*: **1512** + *Field count*: **1514**
+ *File count*: **1771** + *File count*: **1771**
+ *Folder count*: **296** + *Folder count*: **287**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com). > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](http://joomlacomponentbuilder.com).
> Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com) > Developed by [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)

View File

@ -25,7 +25,7 @@ class Compiler extends Infusion
* *
* @var string * @var string
*/ */
private $tempPath; public $tempPath;
/** /**
* The timer * The timer

View File

@ -1249,6 +1249,11 @@ class Get
$component->system_name $component->system_name
); );
// set the component name_code
$component->name_code = ComponentbuilderHelper::safeString(
$component->name_code
);
// ensure version naming is correct // ensure version naming is correct
$this->component_version = preg_replace( $this->component_version = preg_replace(
'/[^0-9.]+/', '', $component->component_version '/[^0-9.]+/', '', $component->component_version
@ -1447,7 +1452,7 @@ class Get
{ {
$this->setJoomlaFields = true; $this->setJoomlaFields = true;
} }
// has become a lacacy issue, can't remove this // has become a legacy issue, can't remove this
$array['view'] = $array['adminview']; $array['view'] = $array['adminview'];
// get the admin settings/data // get the admin settings/data
$array['settings'] = $this->getAdminViewData( $array['settings'] = $this->getAdminViewData(

View File

@ -25835,14 +25835,17 @@ function vdm_dkim() {
// Trigger Event: jcb_ce_onBeforeBuildModuleLang // Trigger Event: jcb_ce_onBeforeBuildModuleLang
$this->triggerEvent( $this->triggerEvent(
'jcb_ce_onBeforeBuildModuleLang', 'jcb_ce_onBeforeBuildModuleLang',
array(&$module->context, &$this->langContent[$module->key], array(&$this->componentContext, &$module,
&$this->langContent[$module->key],
&$module->lang_prefix, &$module->official_name) &$module->lang_prefix, &$module->official_name)
); );
// get other languages // get other languages
$values = array_unique($this->langContent[$module->key]); $values = array_unique($this->langContent[$module->key]);
// get the other lang strings if there is any // get the other lang strings if there is any
$this->multiLangString = $this->getMultiLangStrings($values); $this->multiLangString = $this->getMultiLangStrings($values);
// start the modules language bucket // start the modules language bucket (must rest every time)
$this->languages['modules'] = array();
$this->languages['modules'][$this->langTag] = array();
$this->languages['modules'][$this->langTag]['all'] $this->languages['modules'][$this->langTag]['all']
= $this->langContent[$module->key]; = $this->langContent[$module->key];
unset($this->langContent[$module->key]); unset($this->langContent[$module->key]);
@ -25855,7 +25858,8 @@ function vdm_dkim() {
// Trigger Event: jcb_ce_onBeforeBuildModuleLangFiles // Trigger Event: jcb_ce_onBeforeBuildModuleLangFiles
$this->triggerEvent( $this->triggerEvent(
'jcb_ce_onBeforeBuildModuleLangFiles', 'jcb_ce_onBeforeBuildModuleLangFiles',
array(&$module->context, &$this->languages['modules'], array(&$this->componentContext, &$module,
&$this->languages['modules'],
&$this->langTag) &$this->langTag)
); );
// now we insert the values into the files // now we insert the values into the files
@ -25867,46 +25871,48 @@ function vdm_dkim() {
$tag = trim($tag); $tag = trim($tag);
foreach ($areas as $area => $languageStrings) foreach ($areas as $area => $languageStrings)
{ {
$file_name = $tag . '.' . $module->file_name . '.ini';
// check if language should be added // check if language should be added
if (!$this->shouldLanguageBeAdded( if ($this->shouldLanguageBeAdded(
$tag, $languageStrings, $total $tag, $languageStrings, $total,
$file_name
)) ))
{ {
continue; $lang = array_map(
} function ($langstring, $placeholder) {
$lang = array_map( return $placeholder . '="' . $langstring
function ($langstring, $placeholder) { . '"';
return $placeholder . '="' . $langstring . '"'; }, array_values($languageStrings),
}, array_values($languageStrings), array_keys($languageStrings)
array_keys($languageStrings)
);
// set path
$path = $module->folder_path . '/language/' . $tag;
// create path if not exist
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// add to language files (for now we add all to both TODO)
$this->writeFile(
$path . '/' . $tag . '.' . $module->file_name
. '.ini',
implode(PHP_EOL, $lang)
);
$this->writeFile(
$path . '/' . $tag . '.' . $module->file_name
. '.sys.ini',
implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count(
(array) $lang
); );
unset($lang); // set path
// trigger to add language $path = $module->folder_path . '/language/' . $tag
$addLang[$tag] = $tag; . '/';
// create path if not exist
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// add to language files (for now we add all to both TODO)
$this->writeFile(
$path . $file_name,
implode(PHP_EOL, $lang)
);
$this->writeFile(
$path . $tag . '.' . $module->file_name
. '.sys.ini',
implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count(
(array) $lang
);
unset($lang);
// trigger to add language
$addLang[$tag] = $tag;
}
} }
} }
} }
@ -25995,7 +26001,7 @@ function vdm_dkim() {
} }
} }
// add language folder // add language folder
if ($addLang) if (ComponentbuilderHelper::checkArray($addLang))
{ {
$xml .= PHP_EOL . $this->_t(2) . '<folder>language</folder>'; $xml .= PHP_EOL . $this->_t(2) . '<folder>language</folder>';
} }
@ -26122,9 +26128,6 @@ function vdm_dkim() {
public function getPluginMainXML(&$plugin) public function getPluginMainXML(&$plugin)
{ {
// set some defaults
$view = '';
$viewType = 0;
// set the custom table key // set the custom table key
$dbkey = 'yy'; $dbkey = 'yy';
// build the xml // build the xml
@ -26174,14 +26177,17 @@ function vdm_dkim() {
// Trigger Event: jcb_ce_onBeforeBuildPluginLang // Trigger Event: jcb_ce_onBeforeBuildPluginLang
$this->triggerEvent( $this->triggerEvent(
'jcb_ce_onBeforeBuildPluginLang', 'jcb_ce_onBeforeBuildPluginLang',
array(&$plugin->context, &$this->langContent[$plugin->key], array(&$this->componentContext, &$plugin,
&$this->langContent[$plugin->key],
&$plugin->lang_prefix, &$plugin->official_name) &$plugin->lang_prefix, &$plugin->official_name)
); );
// get other languages // get other languages
$values = array_unique($this->langContent[$plugin->key]); $values = array_unique($this->langContent[$plugin->key]);
// get the other lang strings if there is any // get the other lang strings if there is any
$this->multiLangString = $this->getMultiLangStrings($values); $this->multiLangString = $this->getMultiLangStrings($values);
// start the plugins language bucket // start the plugins language bucket (must rest every time)
$this->languages['plugins'] = array();
$this->languages['plugins'][$this->langTag] = array();
$this->languages['plugins'][$this->langTag]['all'] $this->languages['plugins'][$this->langTag]['all']
= $this->langContent[$plugin->key]; = $this->langContent[$plugin->key];
unset($this->langContent[$plugin->key]); unset($this->langContent[$plugin->key]);
@ -26194,7 +26200,8 @@ function vdm_dkim() {
// Trigger Event: jcb_ce_onBeforeBuildPluginLangFiles // Trigger Event: jcb_ce_onBeforeBuildPluginLangFiles
$this->triggerEvent( $this->triggerEvent(
'jcb_ce_onBeforeBuildPluginLangFiles', 'jcb_ce_onBeforeBuildPluginLangFiles',
array(&$plugin->context, &$this->languages['plugins'], array(&$this->componentContext, &$plugin,
&$this->languages['plugins'],
&$this->langTag) &$this->langTag)
); );
// now we insert the values into the files // now we insert the values into the files
@ -26206,47 +26213,53 @@ function vdm_dkim() {
$tag = trim($tag); $tag = trim($tag);
foreach ($areas as $area => $languageStrings) foreach ($areas as $area => $languageStrings)
{ {
$file_name = $tag . '.plg_' . strtolower($plugin->group)
. '_'
. strtolower($plugin->code_name) . '.ini';
// check if language should be added // check if language should be added
if (!$this->shouldLanguageBeAdded( if ($this->shouldLanguageBeAdded(
$tag, $languageStrings, $total $tag, $languageStrings, $total,
$file_name
)) ))
{ {
continue; $lang = array_map(
} function ($langstring, $placeholder) {
$lang = array_map( return $placeholder . '="' . $langstring
function ($langstring, $placeholder) { . '"';
return $placeholder . '="' . $langstring . '"'; }, array_values($languageStrings),
}, array_values($languageStrings), array_keys($languageStrings)
array_keys($languageStrings)
);
// set path
$path = $plugin->folder_path . '/language/' . $tag . '/'
. $tag;
// create path if not exist
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// add to language file
$this->writeFile(
$path . '.plg_' . strtolower($plugin->group) . '_'
. strtolower($plugin->code_name) . '.ini',
implode(PHP_EOL, $lang)
);
$this->writeFile(
$path . '.plg_' . strtolower($plugin->group) . '_'
. strtolower($plugin->code_name) . '.sys.ini',
implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count(
(array) $lang
); );
unset($lang); // set path
// trigger to add language $path = $plugin->folder_path . '/language/' . $tag
$addLang[$tag] = $tag; . '/';
// create path if not exist
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// add to language file
$this->writeFile(
$path . $file_name,
implode(PHP_EOL, $lang)
);
$this->writeFile(
$path . $tag . '.plg_' . strtolower(
$plugin->group
)
. '_'
. strtolower($plugin->code_name) . '.sys.ini',
implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count(
(array) $lang
);
unset($lang);
// trigger to add language
$addLang[$tag] = $tag;
}
} }
} }
} }
@ -26338,7 +26351,7 @@ function vdm_dkim() {
} }
} }
// add language folder // add language folder
if ($addLang) if (ComponentbuilderHelper::checkArray($addLang))
{ {
$xml .= PHP_EOL . $this->_t(2) . '<folder>language</folder>'; $xml .= PHP_EOL . $this->_t(2) . '<folder>language</folder>';
} }
@ -26734,8 +26747,15 @@ function vdm_dkim() {
return $script; return $script;
} }
public function shouldLanguageBeAdded(&$tag, &$languageStrings, &$total) /**
{ * check if a translation should be added
*
* @return bool
*
*/
public function shouldLanguageBeAdded(&$tag, &$languageStrings, &$total,
&$file_name
) {
// only log messages for none $this->langTag translations // only log messages for none $this->langTag translations
if ($this->langTag !== $tag) if ($this->langTag !== $tag)
{ {
@ -26756,7 +26776,7 @@ function vdm_dkim() {
if ($percentage < $this->percentageLanguageAdd) if ($percentage < $this->percentageLanguageAdd)
{ {
// dont add // dont add
$this->langNot[$area . ' ' . $tag] = '<b>' $this->langNot[$file_name] = '<b>'
. $total . '</b>(total ' . $total . '</b>(total '
. $this->langTag . ' strings) only <b>' . $this->langTag . ' strings) only <b>'
. $langStringNr . '</b>' . $stringNAme . $langStringNr . '</b>' . $stringNAme
@ -26766,7 +26786,7 @@ function vdm_dkim() {
} }
} }
// show if it was added as well // show if it was added as well
$this->langSet[$area . ' ' . $tag] = '<b>' $this->langSet[$file_name] = '<b>'
. $total . '</b>(total ' . $total . '</b>(total '
. $this->langTag . ' strings) and <b>' . $this->langTag . ' strings) and <b>'
. $langStringNr . '</b>' . $stringNAme . ' = ' . $langStringNr . '</b>' . $stringNAme . ' = '

View File

@ -1875,6 +1875,11 @@ class Infusion extends Interpretation
{ {
if (ComponentbuilderHelper::checkObject($module)) if (ComponentbuilderHelper::checkObject($module))
{ {
// Trigger Event: jcb_ce_onBeforeInfuseModuleData
$this->triggerEvent(
'jcb_ce_onBeforeInfuseModuleData',
array(&$this->componentContext, &$module, $this)
);
$this->target = $module->key; $this->target = $module->key;
$this->lang = $module->key; $this->lang = $module->key;
$this->langPrefix = $module->lang_prefix; $this->langPrefix = $module->lang_prefix;
@ -1934,6 +1939,11 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$module->key][$this->hhh $this->fileContentDynamic[$module->key][$this->hhh
. 'MAINXML' . $this->hhh] . 'MAINXML' . $this->hhh]
= $this->getModuleMainXML($module); = $this->getModuleMainXML($module);
// Trigger Event: jcb_ce_onAfterInfuseModuleData
$this->triggerEvent(
'jcb_ce_onAfterInfuseModuleData',
array(&$this->componentContext, &$module, $this)
);
} }
} }
} }
@ -1944,6 +1954,11 @@ class Infusion extends Interpretation
{ {
if (ComponentbuilderHelper::checkObject($plugin)) if (ComponentbuilderHelper::checkObject($plugin))
{ {
// Trigger Event: jcb_ce_onBeforeInfusePluginData
$this->triggerEvent(
'jcb_ce_onBeforeInfusePluginData',
array(&$this->componentContext, &$plugin, $this)
);
$this->target = $plugin->key; $this->target = $plugin->key;
$this->lang = $plugin->key; $this->lang = $plugin->key;
$this->langPrefix = $plugin->lang_prefix; $this->langPrefix = $plugin->lang_prefix;
@ -1986,6 +2001,11 @@ class Infusion extends Interpretation
$this->fileContentDynamic[$plugin->key][$this->hhh $this->fileContentDynamic[$plugin->key][$this->hhh
. 'MAINXML' . $this->hhh] . 'MAINXML' . $this->hhh]
= $this->getPluginMainXML($plugin); = $this->getPluginMainXML($plugin);
// Trigger Event: jcb_ce_onAfterInfusePluginData
$this->triggerEvent(
'jcb_ce_onAfterInfusePluginData',
array(&$this->componentContext, &$plugin, $this)
);
} }
} }
} }
@ -2206,11 +2226,6 @@ class Infusion extends Interpretation
$tag = trim($tag); $tag = trim($tag);
foreach ($areas as $area => $languageStrings) foreach ($areas as $area => $languageStrings)
{ {
// check if language should be added
if (!$this->shouldLanguageBeAdded($tag, $languageStrings, $mainLangLoader[$area]))
{
continue;
}
// set naming convention // set naming convention
$p = 'admin'; $p = 'admin';
$t = ''; $t = '';
@ -2227,41 +2242,53 @@ class Infusion extends Interpretation
{ {
$t = '.sys'; $t = '.sys';
} }
// build the path to place the lang file
$path = $this->componentPath . '/' . $p . '/language/'
. $tag;
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// build the file name // build the file name
$fileName = $tag . '.com_' . $this->componentCodeName . $t $file_name = $tag . '.com_' . $this->componentCodeName . $t
. '.ini'; . '.ini';
// move the file to its place // check if language should be added
JFile::copy($getPAth, $path . '/' . $fileName); if ($this->shouldLanguageBeAdded(
// count the file created $tag, $languageStrings, $mainLangLoader[$area],
$this->fileCount++; $file_name
// add content to it ))
$lang = array_map(
function ($langstring, $placeholder) {
return $placeholder . '="' . $langstring . '"';
}, $languageStrings, array_keys($languageStrings)
);
// add to language file
$this->writeFile(
$path . '/' . $fileName, implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count((array) $lang);
// build xml strings
if (!isset($langXML[$p]))
{ {
$langXML[$p] = array(); // build the path to place the lang file
$path = $this->componentPath . '/' . $p . '/language/'
. $tag . '/';
if (!JFolder::exists($path))
{
JFolder::create($path);
// count the folder created
$this->folderCount++;
}
// move the file to its place
JFile::copy($getPAth, $path . $file_name);
// count the file created
$this->fileCount++;
// add content to it
$lang = array_map(
function ($langstring, $placeholder) {
return $placeholder . '="' . $langstring . '"';
}, array_values($languageStrings),
array_keys($languageStrings)
);
// add to language file
$this->writeFile(
$path . $file_name, implode(PHP_EOL, $lang)
);
// set the line counter
$this->lineCount = $this->lineCount + count(
(array) $lang
);
unset($lang);
// build xml strings
if (!isset($langXML[$p]))
{
$langXML[$p] = array();
}
$langXML[$p][] = '<language tag="' . $tag
. '">language/'
. $tag . '/' . $file_name . '</language>';
} }
$langXML[$p][] = '<language tag="' . $tag . '">language/'
. $tag . '/' . $fileName . '</language>';
} }
} }
// load the lang xml // load the lang xml

View File

@ -699,13 +699,13 @@ class ComponentbuilderModelImport_joomla_components extends JModelLegacy
// the array of tables to store // the array of tables to store
$tables = array( $tables = array(
'validation_rule', 'fieldtype', 'field', 'admin_view', 'snippet', 'dynamic_get', 'custom_admin_view', 'site_view', 'validation_rule', 'fieldtype', 'field', 'admin_view', 'snippet', 'dynamic_get', 'custom_admin_view', 'site_view',
'template', 'layout', 'joomla_component', 'language', 'language_translation', 'custom_code', 'placeholder', 'class_extends', 'template', 'layout', 'joomla_component', 'language', 'custom_code', 'placeholder', 'class_extends',
'joomla_module', 'joomla_module_files_folders_urls', 'joomla_module_updates', 'joomla_module', 'joomla_module_files_folders_urls', 'joomla_module_updates',
'joomla_plugin_group', 'class_property', 'class_method', 'joomla_plugin', 'joomla_plugin_files_folders_urls', 'joomla_plugin_updates', 'joomla_plugin_group', 'class_property', 'class_method', 'joomla_plugin', 'joomla_plugin_files_folders_urls', 'joomla_plugin_updates',
'admin_fields', 'admin_fields_conditions', 'admin_fields_relations', 'admin_custom_tabs', 'component_admin_views', 'admin_fields', 'admin_fields_conditions', 'admin_fields_relations', 'admin_custom_tabs', 'component_admin_views',
'component_site_views', 'component_custom_admin_views', 'component_updates', 'component_mysql_tweaks', 'component_site_views', 'component_custom_admin_views', 'component_updates', 'component_mysql_tweaks',
'component_custom_admin_menus', 'component_config', 'component_dashboard', 'component_files_folders', 'component_custom_admin_menus', 'component_config', 'component_dashboard', 'component_files_folders',
'component_placeholders', 'component_modules', 'component_plugins' 'component_placeholders', 'component_modules', 'component_plugins', 'language_translation'
); );
// get prefix // get prefix
$prefix = $this->_db->getPrefix(); $prefix = $this->_db->getPrefix();
@ -786,6 +786,8 @@ class ComponentbuilderModelImport_joomla_components extends JModelLegacy
if ($table === 'language_translation') if ($table === 'language_translation')
{ {
$item->localComponents = $local->components; $item->localComponents = $local->components;
$item->localModules = $local->modules;
$item->localPlugins = $local->plugins;
$item->localTranslation = $local->translation; $item->localTranslation = $local->translation;
} }
// make sure we have the correct ID set // make sure we have the correct ID set
@ -2192,40 +2194,49 @@ class ComponentbuilderModelImport_joomla_components extends JModelLegacy
$item = $this->setNewID($item, 'component', 'joomla_component', $type); $item = $this->setNewID($item, 'component', 'joomla_component', $type);
break; break;
case 'language_translation': case 'language_translation':
// update the component ID where needed $langKeys = array(
$item = $this->setNewID($item, 'component', 'joomla_component', $type); array('target' => 'components', 'parent' => 'joomla_component', 'local' => 'localComponents'),
// load the local components if found array('target' => 'modules', 'parent' => 'joomla_module', 'local' => 'localModules'),
if (isset($item->localComponents) && ComponentbuilderHelper::checkJson($item->localComponents)) array('target' => 'plugins', 'parent' => 'joomla_plugin', 'local' => 'localPlugins')
);
// we have a few to check so we loop them
foreach ($langKeys as $lang)
{ {
$components = array(); // update the target ID where needed
if (isset($item->components) && ComponentbuilderHelper::checkJson($item->components)) $item = $this->setNewID($item, $lang['target'], 'joomla_component', $type);
// load the local targets if found
if (isset($item->{$lang['local']}) && ComponentbuilderHelper::checkJson($item->{$lang['local']}))
{ {
$components = json_decode($item->components, true); $targets = array();
} if (isset($item->{$lang['target']}) && ComponentbuilderHelper::checkJson($item->{$lang['target']}))
$localComponents = json_decode($item->localComponents, true);
foreach ($localComponents as $lid)
{
if (!is_numeric($lid))
{ {
continue; $targets = json_decode($item->{$lang['target']}, true);
} }
// add if not already there $localComponents = json_decode($item->{$lang['local']}, true);
if (!in_array($lid, $components)) foreach ($localComponents as $lid)
{ {
$components[] = $lid; if (!is_numeric($lid))
{
continue;
}
// add if not already there
if (!in_array($lid, $targets))
{
$targets[] = $lid;
}
} }
} }
} // remove the localComponents
// remove the localComponents if (isset($item->{$lang['local']}))
if (isset($item->localComponents)) {
{ unset($item->{$lang['local']});
unset($item->localComponents); }
}
// load it back
if (isset($components) && ComponentbuilderHelper::checkArray($components))
{
// load it back // load it back
$item->components = json_encode(array_values($components), JSON_FORCE_OBJECT); if (isset($targets) && ComponentbuilderHelper::checkArray($targets))
{
// load it back
$item->{$lang['target']} = json_encode(array_values($targets), JSON_FORCE_OBJECT);
}
} }
// merge the translations where needed // merge the translations where needed
if (isset($item->translation) && isset($item->localTranslation) if (isset($item->translation) && isset($item->localTranslation)

View File

@ -966,6 +966,8 @@ class ComponentbuilderModelJoomla_components extends JModelList
$this->setData('field', $this->getValues($item->fields, 'subform++', 'fields.field'), 'id'); $this->setData('field', $this->getValues($item->fields, 'subform++', 'fields.field'), 'id');
// add dynamic gets // add dynamic gets
$this->setSmartIDs($item->custom_get, 'dynamic_get'); $this->setSmartIDs($item->custom_get, 'dynamic_get');
// set module language strings
$this->setLanguageTranslation($item->id, 'modules');
} }
// actions to take if table is joomla_plugin // actions to take if table is joomla_plugin
if ('joomla_plugin' === $table) if ('joomla_plugin' === $table)
@ -982,6 +984,8 @@ class ComponentbuilderModelJoomla_components extends JModelList
$this->setData('class_property', $this->getValues($item->property_selection, 'subform', 'property'), 'id'); $this->setData('class_property', $this->getValues($item->property_selection, 'subform', 'property'), 'id');
// add class_method // add class_method
$this->setData('class_method', $this->getValues($item->method_selection, 'subform', 'method'), 'id'); $this->setData('class_method', $this->getValues($item->method_selection, 'subform', 'method'), 'id');
// set plugin language strings
$this->setLanguageTranslation($item->id, 'plugins');
} }
// actions to take if table is joomla_plugin_group // actions to take if table is joomla_plugin_group
if ('joomla_plugin_group' === $table) if ('joomla_plugin_group' === $table)
@ -1664,7 +1668,7 @@ class ComponentbuilderModelJoomla_components extends JModelList
* @return void * @return void
* *
*/ */
protected function setLanguageTranslation(&$id) protected function setLanguageTranslation(&$id, $target = 'components')
{ {
// Create a new query object. // Create a new query object.
$query = $this->_db->getQuery(true); $query = $this->_db->getQuery(true);
@ -1695,10 +1699,10 @@ class ComponentbuilderModelJoomla_components extends JModelList
} }
foreach ($items as $item) foreach ($items as $item)
{ {
if (!isset($this->smartBox['language_translation'][$item->id]) && ComponentbuilderHelper::checkJson($item->components)) if (!isset($this->smartBox['language_translation'][$item->id]) && ComponentbuilderHelper::checkJson($item->{$target}))
{ {
$components = json_decode($item->components, true); $targets = json_decode($item->{$target}, true);
if (in_array($id, $components)) if (in_array($id, $targets))
{ {
// load to global object // load to global object
$this->smartBox['language_translation'][$item->id] = $item; $this->smartBox['language_translation'][$item->id] = $item;

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2" method="upgrade"> <extension type="component" version="3.2" method="upgrade">
<name>COM_COMPONENTBUILDER</name> <name>COM_COMPONENTBUILDER</name>
<creationDate>28th March, 2020</creationDate> <creationDate>3rd April, 2020</creationDate>
<author>Llewellyn van der Merwe</author> <author>Llewellyn van der Merwe</author>
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail> <authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl> <authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>