%PDF- %PDF-
| Direktori : /home1/lightco1/www/ilfanale.com.au/administrator/components/com_jmap/js/ |
| Current File : //home1/lightco1/www/ilfanale.com.au/administrator/components/com_jmap/js/sources.js |
/**
* Data source SQL query managed JS client
*
* @package JMAP::SOURCES::administrator::components::com_jmap
* @subpackage js
* @author Joomla! Extensions Store
* @copyright (C)2015 Joomla! Extensions Store
* @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
*/
jQuery(function($){
var Sources = $.newClass ({
/**
* Main selector
* @access public
* @property prototype
* @var array
*/
selector : null,
/**
* Object initializer
*
* @access public
* @param string selector
*/
init : function(selector) {
/**
* Init prototype properties (set method)
* @property prototype
*/
this.constructor.prototype.selector = selector;
// Register app interactions
this.registerEvents();
},
/**
* Register for user interaction
*
* @access public
* @property prototype
* @return void
*/
registerEvents : function() {
var bind = this;
// Register events main selector for tables dropdown
$(this.selector).on('change', {bind:this}, function(event) {
event.data.bind.getAjaxContent(event.target);
});
// Register events for menu priorities buttons and dropdowns
$('button[data-role=priority_action]').on('click', {bind:this}, function(event) {
event.preventDefault();
var buttonAction = $(event.target).data('action');
var buttonType = $(event.target).data('type');
if(buttonAction && buttonType) {
event.data.bind.manageitemAjaxPriority(buttonAction, buttonType);
}
});
$('#paramsmenu_priorities, #paramscats_priorities').on('change', {bind:this}, function(event){
var buttonType = $(event.target).data('type');
event.data.bind.getitemAjaxPriority(buttonType);
});
$('select, input, #sqlquery_rawparams', '#accordion_datasource_sqlquery').on('change', function(){
$('#regenerate_query').val(1);
});
$('label.radio.btn', '#accordion_datasource_sqlquery').on('click', function(){
$('#regenerate_query').val(1);
});
$('#params_created_date').on('change', function(){
$('#regenerate_query').val(1);
});
$('#regenerate_button').on('click', function(){
$('#regenerate_query').val(1);
Joomla.submitbutton('sources.applyEntity');
});
$('.dialog_trigger').on('click', function(event){
event.stopPropagation();
$('#suggestions_modal').modal('show');
});
$('span[data-role=jointable_resetter]').on('click', function(event){
// Namespace next table
var nextTable = $(this).nextAll('table');
$('select', nextTable).each(function(index, elem){
$(elem).val('');
});
$('input', nextTable).each(function(index, elem){
$(elem).val('');
});
});
// Intercept modal bootstrap autofocus
$('#suggestions_modal').on('shown.bs.modal', function() {
$(document).off('focusin.modal');
$('iframe', this).attr('src', 'index.php?option=com_jmap&task=help.display&tmpl=component&partial=true');
});
$('#suggestions_modal').draggable({
iframeFix: true,
handle: 'div.modal-header',
start: function(){
var iframe = $(this).find("iframe");
if(iframe.length > 0){
$(iframe).before('<div id="iframe_overlay" style=" top: 0;bottom: 0;right: 0;left: 0;position: absolute;"></div>');
}
},
stop: function(){
$('#iframe_overlay').remove();
}
});
// Always switch on the multilevel if the menu merge is required
$('#jform_datasource_merge_menu_tree label').on('click', function(jqEvent){
if(jqEvent.target.nodeName.toLowerCase() == 'label') {
var labelId = $(this).attr('id');
if(labelId.match(/yes/i)) {
$('#params_multilevel_categories_1-lbl').trigger('click');
}
}
});
// Change the label accordingly based on the exclude/include switcher
$('input[name=params\\[choose_exclusion_way\\]]').on('change', function(jqEvent){
var selectedExclusionWay = $(this).prop('value');
switch (selectedExclusionWay) {
case 'exclude':
$('div[data-target=#datasource_excludecats] h4').text(COM_JMAP_CATEGORIES_EXCLUSION);
$('div[data-target=#datasource_excludearticles] h4').text(COM_JMAP_ARTICLES_EXCLUSION);
$('#paramschoose_catexclusion-lbl').text(COM_JMAP_CHOOSE_CATEGORIES_EXCLUSION);
$('#paramschoose_catexclusion-lbl').data('popover').options.content = COM_JMAP_CHOOSE_CATEGORIES_EXCLUSION_DESC;
$('#paramschoose_artexclusion-lbl').text(COM_JMAP_CHOOSE_ARTICLES_EXCLUSION);
$('#paramschoose_artexclusion-lbl').data('popover').options.content = COM_JMAP_CHOOSE_ARTICLES_EXCLUSION_DESC;
break;
case 'include':
$('div[data-target=#datasource_excludecats] h4').text(COM_JMAP_CATEGORIES_INCLUSION);
$('div[data-target=#datasource_excludearticles] h4').text(COM_JMAP_ARTICLES_INCLUSION);
$('#paramschoose_catexclusion-lbl').text(COM_JMAP_CHOOSE_CATEGORIES_INCLUSION);
$('#paramschoose_catexclusion-lbl').data('popover').options.content = COM_JMAP_CHOOSE_CATEGORIES_INCLUSION_DESC;
$('#paramschoose_artexclusion-lbl').text(COM_JMAP_CHOOSE_ARTICLES_INCLUSION);
$('#paramschoose_artexclusion-lbl').data('popover').options.content = COM_JMAP_CHOOSE_ARTICLES_INCLUSION_DESC;
break;
}
});
// Register events for links data source type adder/deleter rows
$('button[data-role=rawlinks_action]').on('click', {bind:this}, function(event) {
event.preventDefault();
var buttonAction = $(event.target).data('action');
// Add a row
if(buttonAction == 'add') {
var numberOfRows = $('table.rawlinks_table_links tr').length;
var rowSnippet = '<tr>' +
'<td class="key left_title">' +
'<label class="title_label">' + COM_JMAP_RAW_SOURCE_LINK.replace('%d', (numberOfRows + 1)) + '</label>' +
'<input type="checkbox" value=""/> ' +
'</td>' +
'<td class="right_details">' +
'<label class="as label label-primary">Title</label> ' +
'<input class="sitemap_rawtitle" type="text" name="sqlquery_managed[title][]" value=""> ' +
'<label class="as label label-primary">Link</label> ' +
'<input class="sitemap_rawlink" type="text" data-validation="required url" name="sqlquery_managed[link][]" value=""> ' +
'</td>' +
'</tr>';
$('table.rawlinks_table_links').append(rowSnippet);
}
// Delete selected rows
if(buttonAction == 'delete') {
// Get selected records
var selectedRecords = $('table.rawlinks_table_links input[type=checkbox]:checked');
if(!selectedRecords.length) {
alert(COM_JMAP_SELECTED_LINK_RECORDS);
return false;
}
// Remove selected records
$('table.rawlinks_table_links input[type=checkbox]:checked').each(function(index, element){
$(element).parents('tr').remove();
});
// Array reordering of rows
$('table.rawlinks_table_links tr').each(function(index, tableRow){
$('label.title_label', tableRow).text(COM_JMAP_RAW_SOURCE_LINK.replace('%d', (index + 1)));
});
}
});
// Register events for select all links
$('input[type=checkbox][data-role=selectall]').on('click', function(jqEvent){
var checkedState = $(this).prop('checked');
$('table.rawlinks_table_links input[type=checkbox]').prop('checked', checkedState);
});
// Go to bottom button
$('#gobottom').on('click', function(){
$('html, body').animate({
scrollTop: document.body.scrollHeight || document.documentElement.scrollHeight,
}, 500);
});
// Back to top button
$('#backtop').on('click', function(){
$('html, body').animate({
scrollTop: 0,
}, 500);
});
},
/**
* Get table fields from server domain
*
* @access public
* @method prototype
* @param String tableName
* @return void
*/
getAjaxContent : function(targetSelect) {
// Table name
var tableName = targetSelect.value;
// Object to send to server
var ajaxparams = {
idtask : 'loadTableFields',
template : 'json',
param: tableName
};
// Unique param 'data'
var uniqueParam = JSON.stringify(ajaxparams);
// Request JSON2JSON
$.ajax({
type:"POST",
url: "../administrator/index.php?option=com_jmap&task=ajaxserver.display&format=json",
dataType: 'json',
context: this,
data: {data : uniqueParam } ,
success: function(response) {
if(response !== null) {
this.populateSelectFields(response, targetSelect);
}
}
});
},
/**
* Create, update or delete the single item priority chosen by combination
* between 2 dropdowns for item/priority
*
* @access public
* @method prototype
* @param String action
* @param String type
* @return void
*/
manageitemAjaxPriority : function(action, type) {
// Parameters to be sent to model
var paramsObject = {};
paramsObject.task = action;
paramsObject.type = type;
paramsObject.itemId = $('#paramsmenu_priorities, #paramscats_priorities').val();
paramsObject.priorityValue = $('#priorities').val();
// Validate values to submit
if(action == 'store' && (!paramsObject.itemId || !paramsObject.priorityValue)) {
$('#controls_grouper div.alert').remove();
$('#controls_grouper').append('<div class="alert alert-priority alert-warning"><label class="glyphicon glyphicon-remove-circle"></label>' + COM_JMAP_PRIORITY_MAKE_SELECTIONS + '</div>');
return false;
}
if(action == 'remove' && !paramsObject.itemId) {
$('#controls_grouper div.alert').remove();
$('#controls_grouper').append('<div class="alert alert-priority alert-warning"><label class="glyphicon glyphicon-remove-circle"></label>' + COM_JMAP_PRIORITY_CHOOSE_TO_DELETE + '</div>');
return false;
}
// Object to send to server
var ajaxparams = {
idtask : 'storeUpdatePriority',
template : 'json',
param: paramsObject
};
// Unique param 'data'
var uniqueParam = JSON.stringify(ajaxparams);
$('#controls_grouper').append('<img/>').children('img').attr('src', jmap_baseURI + 'administrator/components/com_jmap/images/loading.gif').css({
'position': 'absolute',
'margin': '15px 65px',
'width': '36px'
});
// Request JSON2JSON
$.ajax({
type:"POST",
url: "../administrator/index.php?option=com_jmap&task=ajaxserver.display&format=json",
dataType: 'json',
context: this,
data: {data : uniqueParam } ,
success: function(response, textStatus, jqXHR) {
// Show a message to user about result of operation
if(response) {
if(response.result) {
var messageClassName = 'success';
// Manage dropdown states and user messages based on action button
switch(action) {
case 'store':
var messageForUser = COM_JMAP_STORED_PRIORITY;
// Manage adding text to item from priority stored text option
var selectedPriority = $('#priorities option:selected').text();
var currentTextForSelectedMenuitem = $('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').text();
if($('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').hasClass('haspriority')) {
currentTextForSelectedMenuitem = currentTextForSelectedMenuitem.slice(0, -6);
}
// Append and reassign
$('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').text(currentTextForSelectedMenuitem + ' - ' + selectedPriority).addClass('haspriority');
break;
case 'remove':
var messageForUser = COM_JMAP_DELETED_PRIORITY;
// Manage remove text from item with deleted priority
var selectedPriority = $('#priorities option:selected').text();
var currentTextForSelectedMenuitem = $('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').text();
// Append and reassign
var currentTextForSelectedMenuitem = $('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').text();
$('#paramsmenu_priorities option:selected, #paramscats_priorities option:selected').text(currentTextForSelectedMenuitem.slice(0, -6)).removeClass('haspriority').prop('selected', false);
break;
}
var iconResponse = '<label class="glyphicon glyphicon-ok-circle"></label>';
} else {
// Something went wrong
var messageClassName = 'warning';
var messageForUser = COM_JMAP_ERROR_FOR_PRIORITY + response.errorMsg;
var iconResponse = '<label class="glyphicon glyphicon-remove-circle"></label>';
}
$('#controls_grouper div.alert, #controls_grouper img').remove();
$('#controls_grouper').append('<div class="alert alert-priority alert-' + messageClassName + '">' + iconResponse + messageForUser + '</div>');
jqXHR.always(function() {
setTimeout(function(){
$('#controls_grouper div.alert').fadeOut();
}, 800);
});
}
}
});
},
/**
* Get the single item priority and update the priority dropdown with retrieved value if any
*
* @access public
* @method prototype
* @param String type
* @return void
*/
getitemAjaxPriority : function(type) {
// Parameters to be sent to model
var paramsObject = {};
paramsObject.iditem = $('#paramsmenu_priorities, #paramscats_priorities').val();
paramsObject.type = type;
// Object to send to server
var ajaxparams = {
idtask : 'getPriority',
template : 'json',
param: paramsObject
};
// Unique param 'data'
var uniqueParam = JSON.stringify(ajaxparams);
$('#controls_grouper').append('<img/>').children('img').attr('src', jmap_baseURI + 'administrator/components/com_jmap/images/loading.gif').css({
'position': 'absolute',
'margin': '15px 65px',
'width': '36px'
});
// Request JSON2JSON
$.ajax({
type:"POST",
url: "../administrator/index.php?option=com_jmap&task=ajaxserver.display&format=json",
dataType: 'json',
context: this,
data: {data : uniqueParam } ,
success: function(response) {
// Update the priority dropdown
if(!response.result) {
$('#priorities').val('');
}
if(response.result && response.priority) {
$('#priorities').val(response.priority);
}
// Remove progress
$('#controls_grouper img').remove();
}
});
},
/**
* Populate multiple selects with retrieved fields for selected table
*
* @access public
* @method prototype
* @param String tableName
* @return void
*/
populateSelectFields : function(responseData, sourceElement) {
// Get target elements
var sourceDataBindID = $(sourceElement).data('bind');
var targetDataBindID = sourceDataBindID.replace('table', 'field');
// Set target elements selector and empty current
var targetElementsSelector = 'select[data-bind=' + targetDataBindID + ']';
$(targetElementsSelector).empty();
// Inject default option
var currentOpt = $('<option value="">' + COM_JMAP_SELECTFIELD + '</option>');
$(targetElementsSelector).append(currentOpt);
$(responseData).each(function(index, item) {
var currentOpt = $('<option value="' + item + '">' + item + '</option>');
$(targetElementsSelector).append(currentOpt);
});
// Refresh style for target select
$(targetElementsSelector).addClass('refreshfocus');
setTimeout(function(){
$(targetElementsSelector).removeClass('refreshfocus');
}, 100);
}
});
// Start JS application
$.editSources = new Sources('select[data-bind^=table_]');
});