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:
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user