Joomla.submitbutton = function(task) { var method = parseInt(jQuery('[name="jform[method]"]').val()), $inputs; // Delete if (method === 2) { $inputs = jQuery('#rsfpmappingWhere').find('input[type="text"], textarea'); } else { $inputs = jQuery('#rsfpmappingColumns').find('input[type="text"], textarea'); } var hasValues = false; $inputs.each(function(){ if (jQuery(this).val().length > 0) { hasValues = true; } }); if (!hasValues) { Joomla.renderMessages({'error': [Joomla.JText._('COM_RSFORM_PLEASE_ADD_SOME_DATA_TO_YOUR_COLUMNS_BEFORE_SAVING')]}); return false; } jQuery('input, select').prop('disabled', false); Joomla.submitform(task); } function mappingConnectionDetails() { var $connectionDetails = jQuery('#connectionDetails'), $connectionFields = $connectionDetails.find('input, select'), initial = $connectionFields.prop('disabled'), params; // We remove the disabled attribute so we can get the values $connectionFields.prop('disabled', false); // Get the values params = $connectionFields.serialize(); $connectionFields.prop('disabled', initial); return params; } function getMappingTable() { return jQuery('[name="jform[table]"]'); } function mappingConnect() { var $loader = jQuery('#mappingloader'), $connectionDetails = jQuery('#connectionDetails'), $connectionFields = $connectionDetails.find('input, select'), $connectButton = jQuery('#connectBtn'), xmlHttp = new XMLHttpRequest(), params = mappingConnectionDetails(); $loader.show(); xmlHttp.open("POST", 'index.php?option=com_rsform&task=mappings.gettables', true); // Send the proper header information along with the request xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState === 4) { var response = JSON.parse(xmlHttp.responseText); $loader.hide(); if (typeof response.message !== 'undefined') { Joomla.renderMessages({'error': [response.message]}); } else { var $table = getMappingTable(); $table.prop('disabled', false); // Create the 'Please select' option var option = document.createElement('option'); option.value = ''; option.text = Joomla.JText._('RSFP_FORM_MAPPINGS_SELECT_TABLE'); // Remove options $table.empty(); // Append the default $table.append(option); // Append tables if (typeof response.tables === 'object') { for (var i = 0; i < response.tables.length; i++) { option = document.createElement('option'); option.value = option.text = response.tables[i]; $table.append(option); } } // We don't need this button anymore $connectButton.hide(); // Everything is now disabled $connectionFields.prop('disabled', true); } } }; xmlHttp.send(params); } function mappingColumns(table) { var params = mappingConnectionDetails(), $loader = jQuery('#mappingloader2'), $saveButton = jQuery('#saveBtn'), xmlHttp = new XMLHttpRequest(), method = parseInt(jQuery('[name="jform[method]"]').val()); params += '&' + encodeURIComponent('jform[table]') + '=' + encodeURIComponent(table); params += '&type=set'; params += '&cid=' + jQuery('#mappingid').val(); $loader.show(); xmlHttp.open("POST", 'index.php?option=com_rsform&task=mappings.getcolumns', true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState === 4) { $loader.hide(); // DELETE doesn't have a 'SET' if (method !== 2) { jQuery('#rsfpmappingColumns').html(xmlHttp.responseText); } // 'WHERE' is used only for UPDATE and DELETE if ([1,2].indexOf(method) > -1) { mappingWhere(table); } jQuery(document).trigger('renderedMappings'); $saveButton.show(); } }; xmlHttp.send(params); } function mappingWhere(table) { var params = mappingConnectionDetails(), $loader = jQuery('#mappingloader2'), xmlHttp = new XMLHttpRequest(); params += '&' + encodeURIComponent('jform[table]') + '=' + encodeURIComponent(table); params += '&table=' + table; params += '&type=where'; params += '&cid=' + jQuery('#mappingid').val(); $loader.show(); xmlHttp.open("POST", 'index.php?option=com_rsform&task=mappings.getcolumns', true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState === 4) { jQuery('#rsfpmappingWhere').html(xmlHttp.responseText); $loader.hide(); jQuery(document).trigger('renderedRsfpmappingWhere', 'rsfpmappingWhere'); } }; xmlHttp.send(params); }