Release of v4.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 JCB4 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 4 tables to utf8mb4_unicode_ci collation if misaligned. Move all internal ID linking to GUID inside of JCB 4. 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 23:01:37 +02:00
parent 4e968e96ab
commit 8549348a61
644 changed files with 42268 additions and 18453 deletions

View File

@ -16,61 +16,75 @@ jQuery(document).ready(function()
// check and load all the customcode edit buttons
getEditCustomCodeButtons();
});
// little script to set the value
// the isSet function
function _isSet(value) {
return value !== undefined && value !== null && value !== '';
}
// Function to set the value
function getCodeGlueOptions(field) {
// get the ID
var id = jQuery(field).attr('id');
// Get the ID
var id = field.id;
var target = id.split('__');
//set the subID
var subID = target[0]+'__'+target[1];
// get listfield value
var listfield = jQuery('#'+subID+'__listfield').val();
// get type value
var type = jQuery('#'+subID+'__join_type').val();
// get area value
var area = jQuery('#'+subID+'__area').val();
// check that values are set
// Set the subID
var subID = target[0] + '__' + target[1];
// Get listfield value
var listfield = document.getElementById(subID + '__listfield')?.value || '';
// Get type value
var type = document.getElementById(subID + '__join_type')?.value || '';
// Get area value
var area = document.getElementById(subID + '__area')?.value || '';
// Check that values are set
if (_isSet(listfield) && _isSet(type) && _isSet(area)) {
// get joinfields values
var joinfields = jQuery('#'+subID+'__joinfields').val();
// get codeGlueOptions
getCodeGlueOptions_server(listfield, joinfields, type, area).done(function(result) {
if(result){
jQuery('#'+subID+'__set').val(result);
} else {
jQuery('#'+subID+'__set').val('');
}
});
// Get joinfields values
var joinfields = document.getElementById(subID + '__joinfields')?.value || '';
// Fetch CodeGlueOptions
getCodeGlueOptions_server(listfield, joinfields, type, area)
.then(result => {
document.getElementById(subID + '__set').value = result || '';
})
.catch(() => {
document.getElementById(subID + '__set').value = '';
});
} else {
jQuery('#'+subID+'__set').val('');
document.getElementById(subID + '__set').value = '';
}
}
function getCodeGlueOptions_server(listfield, joinfields, type, area){
// Function to fetch data from the server
function getCodeGlueOptions_server(listfield, joinfields, type, area) {
var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.getCodeGlueOptions&format=json");
// make sure the joinfields are set
// Ensure joinfields is set
if (!_isSet(joinfields)) {
joinfields = 'none';
}
if(token.length > 0 && listfield > 0 && type > 0 && area > 0) {
var request = token+'=1&listfield='+listfield+'&type='+type+'&area='+area+'&joinfields='+joinfields;
}
return jQuery.ajax({
type: 'GET',
url: getUrl,
dataType: 'jsonp',
data: request,
jsonp: 'callback'
});
}
// the isSet function
function _isSet(val)
{
if ((val != undefined) && (val != null) && 0 !== val.length){
return true;
if (typeof token !== 'undefined' && token.length > 0 && listfield.length > 0 && type > 0 && area > 0) {
var params = new URLSearchParams({
[token]: '1',
listfield: listfield,
type: type,
area: area,
joinfields: joinfields
});
return fetch(getUrl + '&' + params.toString(), {
method: 'GET',
headers: {
'Accept': 'application/json'
}
})
.then(response => response.json())
.catch(() => null);
}
return false;
return Promise.resolve(null);
}
function getEditCustomCodeButtons_server(id) {
@ -109,12 +123,16 @@ function getEditCustomCodeButtons() {
// Insert the div before .control-wrapper-{field}
const insertBeforeElement = document.querySelector(".control-wrapper-"+field);
insertBeforeElement.parentNode.insertBefore(div, insertBeforeElement);
if (insertBeforeElement) {
insertBeforeElement.parentNode.insertBefore(div, insertBeforeElement);
}
// Adding buttons to the div
Object.entries(buttons).forEach(([name, button]) => {
const controlsDiv = document.querySelector(".control-customcode-buttons-"+field);
controlsDiv.innerHTML += button;
if (controlsDiv) {
controlsDiv.innerHTML += button;
}
});
});
}