jQuery(document).ready(function($) { var j51Template = 'j51_maya'; // has width100 $('.control-group:has(.width100)').addClass('container-width100'); // group index for legend var $legends = $('h3.legend'), group = 0; $legends.each(function() { var $legend = $(this), $legendGroup = $legend.closest('.control-group'), isSub = $legend.is('.sub-legend'); // add legend class $legendGroup.addClass(isSub ? 'sub-legend-group' : 'top-legend-group'); var $params = $legendGroup.nextUntil(function() { var $next = $(this), $nextIsLegend = $next.has('h3.legend').length, $nextIsSubLegend = $nextIsLegend && $next.find('h3.legend').is('.sub-legend'); if (!isSub && $nextIsLegend && $nextIsSubLegend) { $next.find('h3.legend').data('top-legend', $legend); } return !$next.is('.control-group') || ($nextIsLegend && (isSub || !$nextIsSubLegend)); }); // store its legend $params.data('legend', $legend); $legend.data('params', $params); }); // grouping legend and params $('.form-grid').each(function() { var $pane = $(this), $topLegends = $pane.find('.top-legend-group'); $('<div />').addClass('group-legends').appendTo($pane).append($topLegends); $topLegends.each(function() { var $legend = $(this).find('h3'), $params = $legend.data('params'), $subLegends = $params.filter('.sub-legend-group'), $topGroup = $('<div />'); $topGroup.addClass('top-group').appendTo($pane); var $subGroupDirect = $('<div />').addClass('sub-group sub-group-direct').appendTo($topGroup).append( $('<div />').addClass('sub-group-inner').append($params) ); $subLegends.each(function() { var $subLegendGroup = $(this), $subLegend = $subLegendGroup.find('h3'), $params = $subLegend.data('params'); $('<div />').addClass('sub-group').appendTo($topGroup).append( $('<div />').addClass('sub-group-inner').append($subLegendGroup).append( $('<div />').addClass('sub-group-params').append($params) ) ); }); // remove empty group if (!$subGroupDirect.find('.sub-group-inner').children().length) $subGroupDirect.remove(); // add sub-group-direct class to top-group-enabler $topGroup.find('.top-group-enabler').closest('.sub-group').addClass('sub-group-direct'); // store for later use $(this).data('top-group', $topGroup); }); }); // show/hide top group var showTopGroup = function($legendGroup) { var $topGroup = $legendGroup.data('top-group'), $tabPane = $legendGroup.closest('joomla-tab-element'), $otherLegendGroups = $tabPane.find('.top-legend-group').not($legendGroup), $otherTopGroups = $tabPane.find('.top-group').not($topGroup); $otherTopGroups.removeClass('active').hide(); $topGroup.addClass('active').fadeIn(); $legendGroup.addClass('active'); $otherLegendGroups.removeClass('active'); $(document).trigger('switchLegendGroup', $legendGroup); } $('.top-legend-group').on('click', function() { showTopGroup($(this)); if (localStorage) { localStorage.setItem('last_active_group', '#' + $(this).closest('joomla-tab-element').attr('id') + ' .top-legend-group:nth-child(' + ($(this).index() + 1) + ')'); } }); // last active var $lastActiveGroup; if (localStorage && localStorage.getItem('last_active_group')) { $lastActiveGroup = $(localStorage.getItem('last_active_group')); } setTimeout(function() { $('.tab-pane .top-legend-group:first-child').trigger('click'); $lastActiveGroup.trigger('click'); }, 500); // preset loader document.querySelector('.preset-loader').addEventListener('click', function(e) { e.preventDefault(); var preset = document.querySelector('[name="preset"]').value; Joomla.request({ method: 'POST', url: 'index.php?option=com_ajax&template=' + j51Template + '&format=json&method=loadPreset' + '&preset=' + preset + '&id=' + Joomla.getOptions('j51.template.style') + '&' + Joomla.getOptions('csrf.token') + '=1', onSuccess: function(data) { var json = JSON.parse(data); if (!json.success) { Joomla.renderMessages({ warning: ['Preset could not be loaded: ' + json.message] }); return; } alert('Preset got applied successfully! Page will reload.'); window.location.reload(); } }); return false; }); document.querySelector('.preset-export').addEventListener('click', function(e) { e.preventDefault(); location = 'index.php?option=com_ajax&template=' + j51Template + '&format=raw&method=export&id=' + Joomla.getOptions('j51.template.style') + '&' + Joomla.getOptions('csrf.token') + '=1'; return false; }); document.querySelector('.preset-input').addEventListener('change', function(e) { e.preventDefault(); var file = e.target.files[0]; if (!file) { return; } var reader = new FileReader(); reader.onload = function(e) { Joomla.request({ method: 'POST', url: 'index.php?option=com_ajax&template=' + j51Template + '&format=json&method=import' + '&id=' + Joomla.getOptions('j51.template.style') + '&' + Joomla.getOptions('csrf.token') + '=1', data: e.target.result, onSuccess: function(data) { var json = JSON.parse(data); if (!json.success) { Joomla.renderMessages({ warning: ['Settings could not being imported: ' + json.message] }); return; } alert('Settings got imported successfully! Site will reload.'); window.location.reload(); } }); }; reader.readAsText(file); return false; }); });