Joomla.submitbutton = function(task) {
if (task === 'apply' || task === 'save')
{
if (document.getElementById('component_id').value === '')
{
Joomla.renderMessages({'error': [Joomla.JText._('COM_RSFORM_CONDITION_PLEASE_SELECT_AT_LEAST_ONE_FIELD')]});
return false;
}
if (document.getElementsByName('detail_component_id[]').length === 0)
{
Joomla.renderMessages({'error': [Joomla.JText._('COM_RSFORM_CONDITION_PLEASE_ADD_AT_LEAST_ONE_CONDITION')]});
return false;
}
}
Joomla.submitform(task);
}
function conditionChangeField() {
var children = this.parentNode.childNodes;
for (var i = 0; i < children.length; i++) {
if (children[i].nodeName === 'SELECT' && children[i].getAttribute('name') === 'value[]') {
children[i].options.length = 0;
var selected_values = getConditionValues(this.value);
if (selected_values !== false) {
for (var j = 0; j < selected_values.length; j++) {
var option = document.createElement('option');
option.value = selected_values[j].value;
option.text = selected_values[j].label;
children[i].options.add(option);
}
}
break;
}
}
}
function addCondition() {
var optionFields = getConditionOptionFields();
if (optionFields.length === 0) {
Joomla.renderMessages({'error': [Joomla.JText._('RSFP_CONDITION_PLEASE_ADD_OPTIONS')]});
return false;
}
var newCondition = document.createElement('p');
var spacer = document.createElement('span');
spacer.setAttribute('class', 'rsform_spacer');
spacer.innerHTML = ' ';
var spacer2 = document.createElement('span');
spacer2.setAttribute('class', 'rsform_spacer');
spacer2.innerHTML = ' ';
var spacer3 = document.createElement('span');
spacer3.setAttribute('class', 'rsform_spacer');
spacer3.innerHTML = ' ';
// fields
var fields = document.createElement('select');
fields.name = 'detail_component_id[]';
fields.setAttribute('name', 'detail_component_id[]');
fields.setAttribute('class', 'form-select d-inline-block w-auto');
fields.onchange = conditionChangeField;
var option;
for (var componentId in optionFields) {
if (optionFields.hasOwnProperty(componentId)) {
option = document.createElement('option');
option.value = componentId;
option.text = optionFields[componentId].name;
fields.options.add(option);
}
}
// operator
var operator = document.createElement('select');
operator.setAttribute('class', 'form-select d-inline-block w-auto');
operator.name = 'operator[]';
option = document.createElement('option');
option.value = 'is';
option.text = Joomla.JText._('RSFP_CONDITION_IS');
operator.options.add(option);
option = document.createElement('option');
option.value = 'is_not';
option.text = Joomla.JText._('RSFP_CONDITION_IS_NOT');
operator.options.add(option);
// values
var selected_values = getConditionValues(fields.value);
var values = document.createElement('select');
values.setAttribute('class', 'form-select d-inline-block w-auto');
values.name = 'value[]';
if (selected_values !== false)
{
for (var i=0; i<selected_values.length; i++)
{
option = document.createElement('option');
option.value = selected_values[i].value;
option.text = selected_values[i].label;
values.options.add(option);
}
}
// remove button
var removeBtn = document.createElement('button');
removeBtn.setAttribute('type', 'button');
removeBtn.setAttribute('class', 'btn btn-danger btn-mini');
removeBtn.onclick = function() {
this.parentNode.parentNode.removeChild(this.parentNode);
};
var removeIcon = document.createElement('i');
removeIcon.setAttribute('class', 'rsficon rsficon-remove');
removeBtn.appendChild(removeIcon);
// Append all elements
newCondition.appendChild(fields);
newCondition.appendChild(spacer);
newCondition.appendChild(operator);
newCondition.appendChild(spacer2);
newCondition.appendChild(values);
newCondition.appendChild(spacer3);
newCondition.appendChild(removeBtn);
document.getElementById('conditionsContainer').appendChild(newCondition);
}
function getConditionValues(id) {
var fields = getConditionOptionFields();
if (typeof fields[id] === 'undefined' || typeof fields[id].items === 'undefined')
{
return false;
}
return fields[id].items;
}
window.addEventListener('DOMContentLoaded', function() {
var detail_component_ids = document.getElementsByName('detail_component_id[]');
for (var i = 0; i < detail_component_ids.length; i++) {
detail_component_ids[i].onchange = conditionChangeField;
}
});