Release of v4.1.1-beta2

Adds new JCB package engine. Fix issue with loading the Component Builder Wiki. Adds advanced version update notice to the Component Builder Dashboard. Completely refactors the class that builds the Component Dashboard. #1134. Adds Initialize, Reset, and Push functionality to the Repository entities. Completely refactors the SQL teaks and SQL dump classes. Changes J4 fields to allow NULL. Fix a bug in Dynamic Get JavaScript that causes table columns to not load.
This commit is contained in:
2025-06-27 10:36:15 +00:00
parent d11860ae1a
commit 64bc4327eb
883 changed files with 63212 additions and 27462 deletions

View File

@@ -60,7 +60,7 @@ if ($this->saveOrder)
loadingDiv.id = 'loading';
// Set CSS properties individually
loadingDiv.style.background = "rgba(255, 255, 255, .8) url('components/com_componentbuilder/assets/images/import.gif') 50% 15% no-repeat";
loadingDiv.style.background = "rgba(255, 255, 255, .8) url('components/com_componentbuilder/assets/images/ajax.gif') 50% 35% no-repeat";
loadingDiv.style.top = (outerBodyDiv.getBoundingClientRect().top + window.pageYOffset) + "px";
loadingDiv.style.left = (outerBodyDiv.getBoundingClientRect().left + window.pageXOffset) + "px";
loadingDiv.style.width = outerBodyDiv.offsetWidth + "px";
@@ -73,26 +73,31 @@ if ($this->saveOrder)
// add to page body
outerBodyDiv.appendChild(loadingDiv);
// when the clone button is clicked
jQuery('#toolbar').on('click',"button.button-save-copy", function(e){
if (document.adminForm.boxchecked.value != 0){
loadingDiv.style.display = 'block';
}
});
// when the backup button is clicked
jQuery('#toolbar').on('click',"button.button-archive", function(e){
if (document.adminForm.boxchecked.value != 0){
loadingDiv.style.display = 'block';
}
});
// when the export button is clicked
jQuery('#toolbar').on('click',"button.button-download", function(e){
if (document.adminForm.boxchecked.value != 0){
loadingDiv.style.display = 'block';
}
});
// when the expand button is clicked
jQuery('#toolbar').on('click',"button.button-expand-2", function(e){
loadingDiv.style.display = 'block';
});
document.addEventListener('DOMContentLoaded', function () {
const pushButton = document.getElementById('toolbar-share-custom-button-pushpowers');
const resetButton = document.getElementById('toolbar-joomla-custom-button-resetpowers');
// Set confirmation messages
if (pushButton) {
const pushText = Joomla.Text._('COM_COMPONENTBUILDER_HTHREEKEEP_THIS_WIDOW_OPENHTHREEPTHIS_IS_A_BVERY_LARGE_TASKB_AND_MAY_TAKE_A_BLONG_TIMEB_TO_COMPLETEBRBRIT_WILL_BPUSH_ALLB_ENTITIES_LINKED_TO_EACH_SELECTED_BCOMPONENTB_DOWN_TO_THE_FIELD_LEVELBRBRDO_YOU_WANT_TO_PROCEEDP');
pushButton.setAttribute('confirm-message', pushText);
}
if (resetButton) {
const resetText = Joomla.Text._('COM_COMPONENTBUILDER_HTHREEKEEP_THIS_WIDOW_OPENHTHREEPTHIS_IS_A_BVERY_LARGE_TASKB_AND_MAY_TAKE_A_BLONG_TIMEB_TO_COMPLETEBRBRIT_WILL_BRESET_ALLB_ENTITIES_LINKED_TO_EACH_SELECTED_BCOMPONENTB_DOWN_TO_THE_FIELD_LEVELBRBRDO_YOU_WANT_TO_CONTINUEP');
resetButton.setAttribute('confirm-message', resetText);
}
const form = document.adminForm;
// Hook into the form's submit event
if (form && loadingDiv) {
form.addEventListener('submit', function () {
loadingDiv.style.display = 'block';
});
}
});
<?php
// some language strings for JS in this area
Text::script('COM_COMPONENTBUILDER_HTHREEKEEP_THIS_WIDOW_OPENHTHREEPTHIS_IS_A_BVERY_LARGE_TASKB_AND_MAY_TAKE_A_BLONG_TIMEB_TO_COMPLETEBRBRIT_WILL_BPUSH_ALLB_ENTITIES_LINKED_TO_EACH_SELECTED_BCOMPONENTB_DOWN_TO_THE_FIELD_LEVELBRBRDO_YOU_WANT_TO_PROCEEDP');
Text::script('COM_COMPONENTBUILDER_HTHREEKEEP_THIS_WIDOW_OPENHTHREEPTHIS_IS_A_BVERY_LARGE_TASKB_AND_MAY_TAKE_A_BLONG_TIMEB_TO_COMPLETEBRBRIT_WILL_BRESET_ALLB_ENTITIES_LINKED_TO_EACH_SELECTED_BCOMPONENTB_DOWN_TO_THE_FIELD_LEVELBRBRDO_YOU_WANT_TO_CONTINUEP');
?>
</script>

View File

@@ -34,7 +34,7 @@ $edit = "index.php?option=com_componentbuilder&view=joomla_components&task=jooml
?>
<tr class="row<?php echo $i % 2; ?>">
<td class="order nowrap center hidden-phone">
<?php if ($canDo->get('joomla_component.edit.state')): ?>
<?php if (!$this->isModal && $canDo->get('joomla_component.edit.state')): ?>
<?php
$iconClass = '';
if (!$this->saveOrder)
@@ -54,7 +54,7 @@ $edit = "index.php?option=com_componentbuilder&view=joomla_components&task=jooml
<?php endif; ?>
</td>
<td class="nowrap center">
<?php if ($canDo->get('joomla_component.edit')): ?>
<?php if (!$this->isModal && $canDo->get('joomla_component.edit')): ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo Html::_('grid.id', $i, $item->id); ?>
@@ -70,13 +70,29 @@ $edit = "index.php?option=com_componentbuilder&view=joomla_components&task=jooml
</td>
<td class="nowrap">
<div>
<?php if ($canDo->get('joomla_component.edit')): ?>
<?php if (!$this->isModal && $canDo->get('joomla_component.edit')): ?>
<a href="<?php echo $edit; ?>&id=<?php echo $item->id; ?>"><?php echo $this->escape($item->system_name); ?></a>
<?php if ($item->checked_out): ?>
<?php echo Html::_('jgrid.checkedout', $i, $userChkOut->name, $item->checked_out_time, 'joomla_components.', $canCheckin); ?>
<?php endif; ?>
<?php else: ?>
<?php echo $this->escape($item->system_name); ?>
<?php if (!$this->isModal): ?>
<?php echo $this->escape($item->system_name); ?>
<?php else: ?>
<?php
$link = "{$edit}&id={$item->id}";
$dataId = $item->{$this->getModalTitleKey()} ?? 0;
$itemHtml = '<a href="' . $this->escape($link, false) . '">' . $this->escape($item->system_name, false) . '</a>';
$attribs = 'data-content-select data-content-type="com_componentbuilder.joomla_component"'
. ' data-id="' . $dataId . '"'
. ' data-title="' . $this->escape($item->system_name, false) . '"'
. ' data-uri="' . $this->escape($link, false) . '"'
. ' data-html="' . $this->escape($itemHtml, false) . '"';
?>
<a class="select-link" href="javascript:void(0)" <?php echo $attribs; ?>>
<?php echo $this->escape($item->system_name); ?>
</a>
<?php endif; ?>
<?php endif; ?>
- <?php echo $this->escape($item->component_version); ?>
</div>
@@ -220,7 +236,7 @@ $edit = "index.php?option=com_componentbuilder&view=joomla_components&task=jooml
</div>
</td>
<td class="center">
<?php if ($canDo->get('joomla_component.edit.state')) : ?>
<?php if (!$this->isModal && $canDo->get('joomla_component.edit.state')) : ?>
<?php if ($item->checked_out) : ?>
<?php if ($canCheckin) : ?>
<?php echo Html::_('jgrid.published', $item->published, $i, 'joomla_components.', true, 'cb'); ?>

View File

@@ -17,7 +17,7 @@ defined('_JEXEC') or die;
?>
<tr>
<?php if ($this->canEdit&& $this->canState): ?>
<?php if (!$this->isModal && $this->canEdit && $this->canState): ?>
<th width="1%" class="nowrap center hidden-phone">
<?php echo Html::_('searchtools.sort', '', 'a.ordering', $this->listDirn, $this->listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?>
</th>
@@ -36,13 +36,13 @@ defined('_JEXEC') or die;
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SYSTEM_NAME_LABEL', 'a.system_name', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_NAME_CODE_LABEL', 'a.name_code', $this->listDirn, $this->listOrder); ?>
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_CODE_NAME', 'a.name_code', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_SHORT_DESCRIPTION_LABEL', 'a.short_description', $this->listDirn, $this->listOrder); ?>
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_DESCRIPTION', 'a.short_description', $this->listDirn, $this->listOrder); ?>
</th>
<th class="nowrap hidden-phone" >
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENT_COMPANYNAME_LABEL', 'a.companyname', $this->listDirn, $this->listOrder); ?>
<?php echo Html::_('searchtools.sort', 'COM_COMPONENTBUILDER_JOOMLA_COMPONENTS_COMPANY_DETAILS', 'a.companyname', $this->listDirn, $this->listOrder); ?>
</th>
<?php if ($this->canState): ?>
<th width="10" class="nowrap center" >