Release of v5.1.0

Add [AllowDynamicProperties] in the base view class for J5. Move the _prepareDocument  above the display call in the base view class. Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run. Added new import powers for custom import of spreadsheets. Move the setDocument and _prepareDocument above the display in the site view and custom admin view. Update the trashhelper layout to work in Joomla 5. Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues. Fix Save failed issue in dynamicGet. #1148. Move all [TEXT, EDITOR, TEXTAREA] fields from [NOT NULL] to [NULL]. Add the DateHelper class and improve the date methods. Add simple SessionHelper class. Add first classes for the new import engine. Improve the [VDM Registry] to be Joomla Registry Compatible. Move all registries to the [VDM Registry] class. Fix Checked Out to be null and not 0. (#1194). Fix created_by, modified_by, checked_out fields in the compiler of the SQL. (#1194). Update all core date fields in table class. (#1188). Update created_by, modified_by, checked_out fields in table class. Implementation of the decentralized Super-Power CORE repository network. (#1190). Fix the noticeboard to display Llewellyn's Joomla Social feed. Started compiling JCB5 on Joomla 5 with PHP 8.2. Add init_defaults option for dynamic form selection setup (to int new items with default values dynamically). Update all JCB 5 tables to utf8mb4_unicode_ci collation if misaligned. Move all internal ID linking to GUID inside of JCB 5. Updated the admin-tab-fields in add-fields view. #1205. Remove Custom Import Tab from admin view. Improved the customcode and placeholder search features.
This commit is contained in:
2025-02-14 22:55:55 +02:00
parent 82922eca5a
commit 442263e387
645 changed files with 42297 additions and 18475 deletions

View File

@ -24,7 +24,8 @@ use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Uri\Uri;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Joomla\Utilities\GetHelper;
use VDM\Joomla\Data\Factory as DataFactory;
use VDM\Joomla\Utilities\GuidHelper;
// No direct access to this file
\defined('_JEXEC') or die;
@ -178,13 +179,22 @@ class Admin_viewController extends FormController
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id')
{
// get the referral options (old method use return instead see parent)
// get int-defaults (to int new items with default values dynamically)
$init_defaults = $this->input->get('init_defaults', null, 'STRING');
// get the referral options (old method use init_defaults or return instead see parent)
$ref = $this->input->get('ref', 0, 'string');
$refid = $this->input->get('refid', 0, 'int');
// get redirect info.
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
// set int-defaults
if (!empty($init_defaults))
{
$append = '&init_defaults='. (string) $init_defaults . $append;
}
// set the referral options
if ($refid && $ref)
{
@ -355,29 +365,53 @@ class Admin_viewController extends FormController
*/
protected function postSaveHook(BaseDatabaseModel $model, $validData = [])
{
// linked tables to update
$_tables_array = [
'admin_fields' => 'admin_view',
'admin_fields_conditions' => 'admin_view',
'admin_fields_relations' => 'admin_view',
'admin_custom_tabs' => 'admin_view'
];
// get the state object (Joomla\CMS\Object\CMSObject)
$state = $model->get('state');
$state = $model->get('state');
// if we save2copy we need to also copy linked tables found!
if ($state->task === 'save2copy' && $state->{'admin_view.new'})
if (!empty($_tables_array) && $state->task === 'save2copy' && $state->{'admin_view.new'})
{
// get new ID
$newID = $state->{'admin_view.id'};
// get old ID
$oldID = $this->input->get('id', 0, 'INT');
// linked tables to update
$_tablesArray = array(
'admin_fields',
'admin_fields_conditions',
'admin_fields_relations',
'admin_custom_tabs'
// get new GUID
$new_guid = DataFactory::_('Load')->value(
['a.guid' => 'guid'], // select
['a' => 'admin_view'], // tables
['a.id' => $state->{'admin_view.id'}] // where
);
foreach($_tablesArray as $_updateTable)
// get old GUID
$old_guid = $validData['guid'] ?? $this->input->get('guid', null, 'STRING') ?? DataFactory::_('Load')->value(
['a.guid' => 'guid'], // select
['a' => 'admin_view'], // tables
['a.id' => $validData['id'] ?? $this->input->get('id', 0, 'INT')] // where
);
// we only continue if we have valid GUIDs
if (!GuidHelper::valid($new_guid) || !GuidHelper::valid($old_guid))
{
return;
}
foreach($_tables_array as $_update_table => $_field_name)
{
// get the linked ID
if ($_value = GetHelper::var($_updateTable, $oldID, 'admin_view', 'id'))
$_item_id = DataFactory::_('Load')->value(
['a.id' => 'id'], // select
['a' => $_update_table], // tables
['a.' . $_field_name => $old_guid] // where
);
if ($_item_id !== null)
{
// copy fields to new admin view
ComponentbuilderHelper::copyItem(/*id->*/ $_value, /*table->*/ $_updateTable, /*change->*/ array('admin_view' => $newID));
ComponentbuilderHelper::copyItem(/*id->*/ $_item_id, /*table->*/ $_update_table, /*change->*/ [$_field_name => $new_guid]);
}
}
}