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