| Current Path : /var/www/modules/mod_news_pro_gk5/admin/ |
| Current File : /var/www/modules/mod_news_pro_gk5/admin/class.datasources.js |
// class used with data sources
function DataSources() {
this.configs = null;
this.datasources = null;
this.previous_data_source = '';
this.init();
}
DataSources.prototype.init = function() {
// binding
var $this = this;
// set the array of configuration
this.configs = [];
this.datasources = [];
// get the data sources configuration
jQuery('.gk-json-config').each(function(i, item) {
item = jQuery(item);
var name = item.attr('id').replace('gk-json-config-', '');
$this.configs[name] = JSON.parse(item.html());
$this.datasources.push(name);
});
// field position fix
jQuery('#jform_params_data_source-lbl').parents().eq(1).append(jQuery('#jform_params_data_source'));
jQuery('#jform_params_data_source').wrap('<div class="control"></div>');
// hide hidden fields
jQuery('.gk-hidden-field').each(function(i, field) {
jQuery(field).parent().parent().css('display', 'none');
});
// init
this.changeValue();
// add events
jQuery('#jform_params_data_source').change( function() { $this.changeValue() });
jQuery('#jform_params_data_source').focus( function() { $this.changeValue() });
jQuery('#jform_params_data_source').blur( function() { $this.changeValue() });
}
DataSources.prototype.changeValue = function() {
// binding
var $this = this;
// get the data source value ..
var data_source_value = jQuery('#jform_params_data_source').val();
// get the name of data source
var option_field = jQuery('#jform_params_data_source').find('option[value="'+data_source_value+'"]');
var data_source_name = option_field.attr('data-source');
// hide tabs with settings for unused data sources
jQuery($this.datasources).each(function(i, obj) {
obj = $this.configs[obj];
if(obj.source != data_source_name) {
jQuery('#'+obj.tab).parents().eq(2).css('display', 'none');
jQuery('a[href="#attrib-'+obj.tabj3+'"]').parent().css('display', 'none');
} else {
jQuery('#'+obj.tab).parents().eq(2).css('display', 'block');
jQuery('a[href="#attrib-'+obj.tabj3+'"]').parent().css('display', 'block');
}
});
// hide previously showed field (if exists)
if(jQuery('.gk-used-option')) {
if(jQuery('.gk-used-option').attr('id') != 'jform_params_' + data_source_value) {
if(jQuery('.gk-used-option').parent().hasClass('input-append')) {
jQuery('.gk-used-option').parents().eq(2).css('display', 'none');
}
jQuery('.gk-used-option').parent().parent().css('display', 'none');
jQuery('.gk-used-option').removeClass('gk-used-option');
}
}
// show the field connected with the selected option
if(jQuery('#jform_params_' + data_source_value)) {
jQuery('#jform_params_' + data_source_value).addClass('gk-used-option');
jQuery('#jform_params_' + data_source_value).parent().parent().css('display', 'block');
}
// change some fields only if the data source was changed
if(this.previous_data_source != data_source_value) {
//
this.previous_data_source = data_source_value;
//
if(data_source_value != '' && data_source_value != null) {
// .. and show the proper fields ..
var option_field = jQuery('#jform_params_data_source').find('option[value="'+data_source_value+'"]');
var data_source = jQuery(option_field).attr('data-source');
jQuery('#jform_params_source_name').val(data_source);
// read the config for the specific data source
jQuery(['offset', 'news_since', 'news_in', 'news_featured', 'only_featured', 'news_unauthorized', 'time_offset']).each(function(i, key) {
if($this.configs[data_source].supported_options[key]) {
if(jQuery('#jform_params_' + key).parent().hasClass('input-append')) {
jQuery('#jform_params_' + key).parents().eq(2).css('display', 'block');
} else {
jQuery('#jform_params_' + key).parent().parent().css('display', 'block');
}
} else {
if(jQuery('#jform_params_' + key).parent().hasClass('input-append')) {
jQuery('#jform_params_' + key).parents().eq(2).css('display', 'none');
} else {
jQuery('#jform_params_' + key).parent().parent().css('display', 'none');
}
}
});
// .. add the proper options to data sorting fields
var news_sort = jQuery('#jform_params_news_sort_value');
news_sort.empty();
var news_sort_value = news_sort.attr('data-value');
if($this.configs[data_source].supported_options.sort_values != false) {
news_sort.parent().parent().css('display', 'block');
jQuery('#jform_params_news_sort_order').parent().parent().css('display', 'block');
for(val in $this.configs[data_source].supported_options.sort_values) {
var opt = new jQuery('<option>', {
'value': $this.configs[data_source].supported_options.sort_values[val],
'text': val
});
if(news_sort_value == $this.configs[data_source].supported_options.sort_values[val]) {
opt.attr('selected', 'selected');
}
news_sort.append(opt);
}
} else {
news_sort.parent().parent().css('display', 'none');
jQuery('#jform_params_news_sort_order').parent().parent().css('display', 'none');
}
// .. hide/show proper areas available in the specific data source
jQuery(['header', 'image', 'text', 'info']).each(function(i, key) {
var toggler = jQuery('div[data-section-toggle="' + key + '"]');
if($this.configs[data_source].supported_elements[key]) {
jQuery(toggler).parent().parent().css('display', 'block');
} else {
jQuery(toggler).parent().parent().css('display', 'none');
}
if(toggler.hasClass('open')) {
jQuery(toggler).trigger('click');
}
});
// .. and also elements available in the layout:
jQuery(['header', 'image', 'text', 'info', 'info2', 'readmore']).each(function(i, key) {
var element = jQuery('#jform_params_news_'+key+'_enabled').parent(); // maybe second parent
if($this.configs[data_source].supported_elements[key]) {
element.css('display', 'block');
} else {
element.css('display', 'none');
}
});
}
// check the data source value
var portal_mode_value = jQuery('#jform_params_module_mode').val();
// if the portal mode is used
if(portal_mode_value != 'normal') {
var portal_mode_config = JSON.parse(jQuery('#gk-json-config-pm-'+portal_mode_value).html());
// search for the data source name
var isSupported = false;
jQuery(portal_mode_config.support).each(function(i, source) {
if(source == data_source) {
isSupported = true;
}
});
//
if(!isSupported) {
alert('Specific data source is not supported by selected Portal Mode. Please change the data source or portal mode');
}
}
}
}