%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/wizard.js |
/**
* JS APP Client for wizard data source creation
*
* @package JMAP::WIZARD::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 Wizard = $.newClass ({
/**
* Generic selectors bunch
* @access public
* @property prototype
* @var String
*/
selectors : null,
/**
* Object initializer
*
* @access public
* @param string selettore
*/
init : function(injectedSelectors) {
/**
* Init prototype properties (set method)
* @property prototype
*/
this.constructor.prototype.selectors = injectedSelectors;
$('i.icon-list').parent().addClass('btn-success');
// Start register events app
this.registerEvents();
},
/**
* Register events for user interface interaction
*
* @access public
* @property prototype
* @return void
*/
registerEvents : function() {
// Register user interaction
$(this.selectors).on('click', {bind:this}, function(event) {
// Prevent standard controller client
event.preventDefault();
// Only valida ancor <a>
event.stopPropagation();
// Start from prepare progress
event.data.bind.openPrepareProgress(this, event.data.bind);
});
},
/**
* Open first prepare progress bar
*
* @access public
* @property prototype
* @return void
*/
openPrepareProgress : function(element, context) {
// Extension selected effective name
var extensionName = $(element).data('extension');
// Show first progress
var firstProgress = '<div class="progress progress-striped active">' +
'<div id="progressBar1" class="progress-bar" role="progressbar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100">' +
'<span class="sr-only"></span>' +
'</div>' +
'</div>';
// Build modal dialog
var modalDialog = '<div class="modal fade" id="progressModal1" tabindex="-1" role="dialog" aria-labelledby="progressModal" aria-hidden="true">' +
'<div class="modal-dialog">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<h4 class="modal-title">' + COM_JMAP_PROGRESSINFOTITLE1 + '</h4>' +
'</div>' +
'<div class="modal-body">' +
'<p>' + firstProgress + '</p>' +
'<p id="progressInfo1"></p>' +
'</div>' +
'<div class="modal-footer">' +
'</div>' +
'</div><!-- /.modal-content -->' +
'</div><!-- /.modal-dialog -->' +
'</div>';
// Inject elements into content body
$('body').append(modalDialog);
var modalOptions = {
backdrop:'static'
};
$('#progressModal1').on('shown.bs.modal', function(event) {
$('#progressModal1 div.modal-body').css({'width':'90%', 'margin':'auto'});
$('#progressBar1').css({'width':'50%'});
// Inform user process initializing
$('#progressInfo1').empty().append(COM_JMAP_PROGRESSINFOSUBTITLE1);
setTimeout(function(){
context.checkAjaxRequirements(extensionName)
.then(function(response){
isValid = !!response.extensionFound;
if(isValid) {
$('#progressInfo1').append(COM_JMAP_PROGRESSINFOSUBTITLE1_2);
// Set 100% for progress
$('#progressBar1').css({'width':'100%'});
// Rethrow to create progress
context.openCreateProgress(element, context);
} else {
$('#progressBar1').css({'width':'100%'}).addClass('progress-bar-danger');
$('#progressInfo1').empty().append('<p>' + COM_JMAP_PROGRESSINFOSUBTITLE1_2ERROR + '</p>');
setTimeout(function(){
$('#progressModal1').modal('hide');
}, 3000);
}
})
}, 200);
});
$('#progressModal1').modal(modalOptions);
// Remove backdrop after removing DOM modal
$('#progressModal1').on('hidden.bs.modal',function(){
$('.modal-backdrop').remove();
$(this).remove();
});
},
/**
* Open first prepare progress bar
*
* @access public
* @property prototype
* @return void
*/
openCreateProgress : function(element, context) {
// Show second progress
var secondProgress = '<div class="progress progress-striped active">' +
'<div id="progressBar2" class="progress-bar" role="progressbar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100">' +
'<span class="sr-only"></span>' +
'</div>' +
'</div>';
// Build modal dialog
var modalDialog = '<div class="modal fade" id="progressModal2" tabindex="-1" role="dialog" aria-labelledby="progressModal" aria-hidden="true">' +
'<div class="modal-dialog">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<h4 class="modal-title">' + COM_JMAP_PROGRESSINFOTITLE2 + '</h4>' +
'</div>' +
'<div class="modal-body">' +
'<p>' + secondProgress + '</p>' +
'<p id="progressInfo2"></p>' +
'</div>' +
'<div class="modal-footer">' +
'</div>' +
'</div><!-- /.modal-content -->' +
'</div><!-- /.modal-dialog -->' +
'</div>';
// Inject elements into content body
$('body').append(modalDialog);
var modalOptions = {
backdrop:false
};
// Set 33% for progress
$('#progressModal2').on('shown.bs.modal', function(event) {
$('#progressModal2 div.modal-body').css({'width':'90%', 'margin':'auto'});
$('#progressBar2').css({'width':'33%'});
// Inform user process initializing
$('#progressInfo2').append(COM_JMAP_PROGRESSINFOSUBTITLE2);
setTimeout(function(){
// Rethrow to make real ajax call
context.startAjaxCreation(element);
}, 800);
});
$('#progressModal2').modal(modalOptions);
},
/**
* Check with ajaxServer if extension chosen for data source creation
* exists and is present in current Joomla installation, otherwise process
* will be stopped
*
* @access public
* @method prototype
* @param String tableName
* @return Promise
*/
checkAjaxRequirements : function(extensionName) {
// Is valid extension on this Joomla?
var isValid = false;
// Object to send to server
var ajaxparams = {
idtask : 'checkExtension',
template : 'json',
param: extensionName
};
// Unique param 'data'
var uniqueParam = JSON.stringify(ajaxparams);
// Request JSON2JSON
return $.ajax({
type:"POST",
url: "../administrator/index.php?option=com_jmap&task=ajaxserver.display&format=json",
dataType: 'json',
context: this,
async: true,
data: {data : uniqueParam }
}).promise();
},
/**
* Make ajax POST restful submit to create a new data source for selected extension
*
* @access public
* @property prototype
* @return void
*/
startAjaxCreation : function(element) {
$('#progressBar2').css({'width':'66%'});
$.ajax({
type:"POST",
url: $(element).attr('href') + '&client=jsapp',
context: this,
success: function(response) {
// No response evaluation needed
$('#progressInfo2').append(COM_JMAP_PROGRESSINFOSUBTITLE2_2);
// Set 100% for progress
$('#progressBar2').css({'width':'100%'});
// Redirect user
setTimeout(function(){
// Call termination handler
window.location.href = jmap_baseURI + 'index.php?option=com_jmap&task=sources.display';
$('#progressModal1').modal('hide');
$('#progressModal2').modal('hide');
}, 800);
}
});
}
});
// Start JS application
$.wizard = new Wizard('a[data-role=start_create_process]');
});