713 lines
22 KiB
JavaScript
713 lines
22 KiB
JavaScript
|
|
/***********************************************************************************************
|
||
|
|
** The contents of this file are subject to the Vtiger Module-Builder License Version 1.3
|
||
|
|
* ( "License" ); You may not use this file except in compliance with the License
|
||
|
|
* The Original Code is: Technokrafts Labs Pvt Ltd
|
||
|
|
* The Initial Developer of the Original Code is Technokrafts Labs Pvt Ltd.
|
||
|
|
* Portions created by Technokrafts Labs Pvt Ltd are Copyright ( C ) Technokrafts Labs Pvt Ltd.
|
||
|
|
* All Rights Reserved.
|
||
|
|
**
|
||
|
|
*************************************************************************************************/
|
||
|
|
|
||
|
|
jQuery.Class("ModuleBuilder_ModuleBuilderView_Js",{
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store updated Block Sequence
|
||
|
|
*/
|
||
|
|
updatedBlockSequence : {},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the reactivated Field List
|
||
|
|
*/
|
||
|
|
reactiveFieldsList : [],
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the updated related List
|
||
|
|
*/
|
||
|
|
updatedRelatedList : {'updated' : [], 'deleted' : []},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the removed modules List
|
||
|
|
*/
|
||
|
|
removeModulesArray : false,
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the inactive field List
|
||
|
|
*/
|
||
|
|
inActiveFieldsList : false,
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the updated block field List
|
||
|
|
*/
|
||
|
|
updatedBlockFieldsList : [],
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the updated block List
|
||
|
|
*/
|
||
|
|
updatedBlocksList : [],
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the block names
|
||
|
|
*/
|
||
|
|
blockNamesList : [],
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Variable to store the session token for current view
|
||
|
|
*/
|
||
|
|
token : false,
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to get the session token for current view
|
||
|
|
*/
|
||
|
|
getToken : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
if(thisInstance.token == false)
|
||
|
|
{
|
||
|
|
var container = jQuery('#editViewContainer');
|
||
|
|
var f1 = jQuery('#tks_modulevalidate');
|
||
|
|
thisInstance.token = f1.find('#token').val();
|
||
|
|
//thisInstance.token = container.find('#token').val();
|
||
|
|
}
|
||
|
|
return thisInstance.token;
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to set the removed modules array used in related list
|
||
|
|
*/
|
||
|
|
setRemovedModulesList : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
var relatedList = jQuery('#relatedTabOrder');
|
||
|
|
var container = relatedList.find('.relatedTabModulesList');
|
||
|
|
thisInstance.removeModulesArray = JSON.parse(container.find('.RemovedModulesListArray').val());
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
registerModuleBuildInitializeEvent : function(){
|
||
|
|
var thisInstance = this;
|
||
|
|
var contents = jQuery('.layoutEditorContainer');
|
||
|
|
|
||
|
|
jQuery('#nextStep').click(function(e)
|
||
|
|
{
|
||
|
|
var f1 = jQuery('#tks_modulevalidate');
|
||
|
|
var mod = f1.find('#tks_modulename');
|
||
|
|
var lbl = f1.find('#tks_modulelabel');
|
||
|
|
var prnt = f1.find('#tks_parent');
|
||
|
|
|
||
|
|
|
||
|
|
if( mod.val() == '')
|
||
|
|
{
|
||
|
|
|
||
|
|
app.helper.showErrorNotification({message :app.vtranslate('JS_ENTER_MODULE_NAME')});
|
||
|
|
mod.focus();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if( !mod.val().match(/^[a-zA-Z]+$/) )
|
||
|
|
{
|
||
|
|
app.helper.showErrorNotification({message :app.vtranslate('JS_ENTER_VALID_MODULE_NAME')});
|
||
|
|
mod.focus();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if( lbl.val() == '' )
|
||
|
|
{
|
||
|
|
app.helper.showErrorNotification({message :app.vtranslate('JS_ENTER_MODULE_LABLE')});
|
||
|
|
lbl.focus();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if( !lbl.val().match(/^[a-zA-Z\s]+$/) )
|
||
|
|
{
|
||
|
|
app.helper.showErrorNotification({message :app.vtranslate('JS_ENTER_VALID_MODULE_LABLE')});
|
||
|
|
lbl.focus();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if( prnt.val() == '' )
|
||
|
|
{
|
||
|
|
app.helper.showErrorNotification({message :app.vtranslate('JS_SELECT_PARENT_MODULE')});
|
||
|
|
prnt.focus();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
/*var progressIndicatorElement = jQuery.progressIndicator({
|
||
|
|
'position' : 'html',
|
||
|
|
'message' : app.vtranslate('JS_PLEASE_WAIT_MODULE_INITIALIZE'),
|
||
|
|
'blockInfo' : {
|
||
|
|
'enabled' : true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
var builddata = f1.serializeFormData();
|
||
|
|
builddata['mode'] = 'initMB';
|
||
|
|
builddata['action'] = 'InitModuleBuilder';*/
|
||
|
|
|
||
|
|
//var form = jQuery('#tks_modulevalidate');
|
||
|
|
f1.submit();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/*AppConnector.request(builddata).then(
|
||
|
|
function(data) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
var params = {};
|
||
|
|
if(data['result']['init'] == true) {
|
||
|
|
contents.find('#saveModule').removeClass('hide');
|
||
|
|
/* contents.find('#layoutEditorContainer').removeClass('hide');
|
||
|
|
contents.find('#download').addClass('hide');
|
||
|
|
contents.find('#edit_module').addClass('hide');
|
||
|
|
contents.find('#import').addClass('hide');
|
||
|
|
contents.find('#nextStep').addClass('hide');
|
||
|
|
contents.find('.entityField').removeClass('hide');
|
||
|
|
|
||
|
|
var dropdown = contents.find("#tks_entity");
|
||
|
|
//app.destroyChosenElement(dropdown)
|
||
|
|
dropdown.addClass('chzn-select');
|
||
|
|
|
||
|
|
app.helper.showSuccessNotification({message: app.vtranslate('JS_PLEASE_MODULE_INITIALIZE')});
|
||
|
|
|
||
|
|
} else {
|
||
|
|
contents.find('#saveModule').addClass('hide');
|
||
|
|
contents.find('#download').addClass('hide');
|
||
|
|
contents.find('#edit_module').addClass('hide');
|
||
|
|
contents.find('#import').addClass('hide');
|
||
|
|
ontents.find('#layoutEditorContainer').addClass('hide');
|
||
|
|
contents.find('#nextStep').removeClass('hide');
|
||
|
|
contents.find('.entityField').add('hide');
|
||
|
|
|
||
|
|
params['text'] = data['result']['status'];
|
||
|
|
params['type'] = 'error';
|
||
|
|
}
|
||
|
|
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
},
|
||
|
|
function(error,err){
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
}
|
||
|
|
)*/
|
||
|
|
|
||
|
|
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to trigger save module event
|
||
|
|
*/
|
||
|
|
registerModuleBuildSubmitEvent : function(){
|
||
|
|
var thisInstance = this;
|
||
|
|
jQuery('body').on('submit','#tks_moduleentityvalidate',function(e){
|
||
|
|
var form = jQuery(e.currentTarget);
|
||
|
|
thisInstance.buildModuleEvent(form);
|
||
|
|
e.preventDefault();
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to get the sequence and attach while building the module
|
||
|
|
*/
|
||
|
|
getSequence : function(){
|
||
|
|
var thisInstance = this;
|
||
|
|
var seq = {};
|
||
|
|
var contents = jQuery('#layoutEditorContainer').find('.contents');
|
||
|
|
contents.find('.blockSortable').each(function (index, domElement) {
|
||
|
|
var blockTable = jQuery(domElement);
|
||
|
|
var blockId = blockTable.data('blockId');
|
||
|
|
var blockLabel = blockTable.find('.blockLabel').text();
|
||
|
|
var blockLabels = blockLabel.trim();
|
||
|
|
seq[index] = blockLabels;
|
||
|
|
});
|
||
|
|
seq = JSON.stringify(seq);
|
||
|
|
return seq;
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to build the module on server side
|
||
|
|
*/
|
||
|
|
buildModuleEvent : function(form){
|
||
|
|
var thisInstance = this;
|
||
|
|
jQuery('#tkssequence').val(thisInstance.getSequence());
|
||
|
|
var layout = jQuery('#layoutEditorContainer');
|
||
|
|
var saveButton = layout.find('.download');
|
||
|
|
//var editButton = layout.find('.edit');
|
||
|
|
var importBtn = layout.find('.import');
|
||
|
|
var contents = jQuery('#layoutEditorContainer').find('.contents');
|
||
|
|
var f1 = jQuery('.tks_modulevalidate');
|
||
|
|
var mod = f1.find('#tks_modulename');
|
||
|
|
var lbl = f1.find('#tks_modulelabel');
|
||
|
|
var entity = f1.find('#tks_entity');
|
||
|
|
var blockval = thisInstance.emptyBlockValidation();
|
||
|
|
if(blockval == false)
|
||
|
|
{
|
||
|
|
var params = {};
|
||
|
|
params['message'] = app.vtranslate('JS_EMPTY_BLOCK_FIELD');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
}
|
||
|
|
else if( blockval != '##Passed##')
|
||
|
|
{
|
||
|
|
var params = {};
|
||
|
|
params['message'] = app.vtranslate('JS_BLOCK_EMPTY1')+blockval+app.vtranslate('JS_BLOCK_EMPTY2');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
}
|
||
|
|
else if(jQuery('.saveFieldSequence').is(':visible'))
|
||
|
|
{
|
||
|
|
var params = {};
|
||
|
|
params['message'] = app.vtranslate('JS_SEQUENCE_FIRST');
|
||
|
|
params['type'] = 'error';
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
var message = app.vtranslate('JS_ARE_YOU_SURE');
|
||
|
|
app.helper.showConfirmationBox({'message' : message}).then(
|
||
|
|
function(e) {
|
||
|
|
var progressIndicatorElement = jQuery.progressIndicator({
|
||
|
|
'position' : 'html',
|
||
|
|
'message' : app.vtranslate('JS_PLEASE_WAIT_MODULE_SAVE'),
|
||
|
|
'blockInfo' : {
|
||
|
|
'enabled' : true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
var builddata = form.serializeFormData();
|
||
|
|
builddata['mode'] = 'saveModule';
|
||
|
|
builddata['action'] = 'BuildModule';
|
||
|
|
|
||
|
|
builddata['tabid']= jQuery('#tabid').val();
|
||
|
|
var checkedItems = jQuery('.relatedlists').find('input[type="checkbox"]:checked') //...
|
||
|
|
|
||
|
|
jQuery.each(checkedItems,function(index,domElement){
|
||
|
|
var checkeditems = jQuery(domElement);
|
||
|
|
builddata[checkeditems.attr('name')] = checkeditems.val();
|
||
|
|
});
|
||
|
|
|
||
|
|
AppConnector.request(builddata).then(
|
||
|
|
function(data) {
|
||
|
|
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
var params = {};
|
||
|
|
if(data['result']['saved'] == 'success') {
|
||
|
|
params['message'] = app.vtranslate('JS_SAVE_MODULE_SUCCESS');
|
||
|
|
params['type'] = 'success';
|
||
|
|
jQuery('#tabid').val(data['result']['tabid']);
|
||
|
|
app.helper.showSuccessNotification(params);
|
||
|
|
saveButton.removeClass('hide');
|
||
|
|
//editButton.removeClass('hide');
|
||
|
|
importBtn.removeClass('hide');
|
||
|
|
thisInstance.deleteFolderStrucure();
|
||
|
|
} else {
|
||
|
|
saveButton.addClass('hide');
|
||
|
|
params['message'] = data['result']['status'];
|
||
|
|
params['type'] = 'error';
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
}
|
||
|
|
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
},
|
||
|
|
function(error,err){
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
}
|
||
|
|
)
|
||
|
|
},
|
||
|
|
function(error, err){}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to check if any block is empty if yes show validation
|
||
|
|
*/
|
||
|
|
emptyBlockValidation : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
var contents = jQuery.find('.editFieldsTable');
|
||
|
|
var status = '##Passed##';
|
||
|
|
jQuery.each(contents,function(index,domElement){
|
||
|
|
var row = jQuery(domElement);
|
||
|
|
var check = row.find('[name="sortable1"]').text();
|
||
|
|
var homestr ='Mandatory';
|
||
|
|
if( check.indexOf(homestr) > -1)
|
||
|
|
{
|
||
|
|
return status;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
if( !row.hasClass('hide') )
|
||
|
|
{
|
||
|
|
status = row.find('.blockLabel').text();
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
if(contents.length == 0)
|
||
|
|
{
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
return status;
|
||
|
|
},
|
||
|
|
/**
|
||
|
|
* Function to delete the flder structure on the server
|
||
|
|
*/
|
||
|
|
deleteFolderStrucure : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
var layout = jQuery('#editViewContainer');
|
||
|
|
var srcmodule = layout.find('#tks_modulename');
|
||
|
|
var aDeferred = jQuery.Deferred();
|
||
|
|
|
||
|
|
var params = {};
|
||
|
|
params['module'] = app.getModuleName();
|
||
|
|
params['parent'] = app.getParentModuleName();
|
||
|
|
params['action'] = 'DeleteDir';
|
||
|
|
params['mode'] = 'deletefolder';
|
||
|
|
params['srcModule'] = jQuery('#tks_modulename').val();
|
||
|
|
params['token'] = thisInstance.getToken();
|
||
|
|
AppConnector.request(params).then(
|
||
|
|
function(data) {
|
||
|
|
aDeferred.resolve(data);
|
||
|
|
},
|
||
|
|
function(error) {
|
||
|
|
aDeferred.reject();
|
||
|
|
}
|
||
|
|
);
|
||
|
|
return aDeferred.promise();
|
||
|
|
},
|
||
|
|
|
||
|
|
registerModuleBuildDownloadEvent : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
jQuery('.download').on('click',function(e){
|
||
|
|
|
||
|
|
thisInstance.checkForDownload();
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to check zip before download
|
||
|
|
*/
|
||
|
|
checkForDownload : function() {
|
||
|
|
var progressIndicatorElement = jQuery.progressIndicator({
|
||
|
|
'position' : 'html',
|
||
|
|
'message' : app.vtranslate('JS_PRECHECK_DOWNLOAD'),
|
||
|
|
'blockInfo' : {
|
||
|
|
'enabled' : true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
var thisInstance = this;
|
||
|
|
var aDeferred = jQuery.Deferred();
|
||
|
|
|
||
|
|
var params = {};
|
||
|
|
params['module'] = app.getModuleName();
|
||
|
|
params['parent'] = app.getParentModuleName();
|
||
|
|
params['action'] = 'DeleteDir';
|
||
|
|
params['mode'] = 'checkZip';
|
||
|
|
params['srcModule'] = jQuery('#tks_modulename').val();
|
||
|
|
params['token'] = thisInstance.getToken();
|
||
|
|
AppConnector.request(params).then(
|
||
|
|
function(data) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
aDeferred.resolve(data);
|
||
|
|
if(data['result']['exist'] == 'true')
|
||
|
|
{
|
||
|
|
window.location.href = 'index.php?module='
|
||
|
|
+app.getModuleName()+'&parent='+app.getParentModuleName()
|
||
|
|
+'&action=DownloadZip&mode=downloadModuleZip&srcModule='
|
||
|
|
+jQuery('#tks_modulename').val();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
params['message'] = app.vtranslate('JS_RE_SAVE');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showSuccessNotification(params);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
function(error) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
params['message'] = app.vtranslate('JS_SOMETHING_WENT_WRONG');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
aDeferred.reject();
|
||
|
|
}
|
||
|
|
);
|
||
|
|
return aDeferred.promise();
|
||
|
|
},
|
||
|
|
|
||
|
|
registerModuleBuildImportEvent : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
jQuery('.import').on('click',function(e){
|
||
|
|
thisInstance.checkForImport();
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to check zip before import
|
||
|
|
*/
|
||
|
|
checkForImport : function() {
|
||
|
|
var progressIndicatorElement = jQuery.progressIndicator({
|
||
|
|
'position' : 'html',
|
||
|
|
'message' : app.vtranslate('JS_PRECHECK_IMPORT'),
|
||
|
|
'blockInfo' : {
|
||
|
|
'enabled' : true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
var thisInstance = this;
|
||
|
|
var aDeferred = jQuery.Deferred();
|
||
|
|
|
||
|
|
var params = {};
|
||
|
|
params['module'] = app.getModuleName();
|
||
|
|
params['parent'] = app.getParentModuleName();
|
||
|
|
params['action'] = 'DeleteDir';
|
||
|
|
params['mode'] = 'checkZip';
|
||
|
|
params['srcModule'] = jQuery('#tks_modulename').val();
|
||
|
|
params['token'] = thisInstance.getToken();
|
||
|
|
AppConnector.request(params).then(
|
||
|
|
function(data) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
aDeferred.resolve(data);
|
||
|
|
if(data['result']['exist'] == 'true')
|
||
|
|
{
|
||
|
|
/*window.location.href = 'index.php?module='
|
||
|
|
+app.getModuleName()+'&parent='+app.getParentModuleName()
|
||
|
|
+'&view=ImportZip&srcModule='
|
||
|
|
+jQuery('#tks_modulename').val();*/
|
||
|
|
window.location.href = 'index.php?module=ModuleManager&parent=Settings&view=ModuleImport&mode=importUserModuleStep1';
|
||
|
|
jQuery('#moduleZip').val('C:\fakepath\dateyourmate.sql.zip');
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
params['message'] = app.vtranslate('JS_RE_SAVE1');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showSuccessNotification(params);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
function(error) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
params['message'] = app.vtranslate('JS_SOMETHING_WENT_WRONG');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
aDeferred.reject();
|
||
|
|
}
|
||
|
|
);
|
||
|
|
return aDeferred.promise();
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to attach related list field on module save
|
||
|
|
*/
|
||
|
|
registerRelatedListStringify : function(){
|
||
|
|
var thisInstance = this;
|
||
|
|
contents = jQuery('.relblock');
|
||
|
|
var params = {};
|
||
|
|
|
||
|
|
jQuery.each(contents,function(index,domElement){
|
||
|
|
var row = jQuery(domElement);
|
||
|
|
var mod = row.find('.relcheck');
|
||
|
|
var status = mod.is(':checked');
|
||
|
|
if(status)
|
||
|
|
{
|
||
|
|
var selrel = 0; var addrel = 0;
|
||
|
|
|
||
|
|
if(row.find('.relsel').is(':checked'))
|
||
|
|
selrel = 1;
|
||
|
|
if(row.find('.reladd').is(':checked'))
|
||
|
|
addrel = 1;
|
||
|
|
|
||
|
|
params[mod.val()] = selrel+':'+addrel;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
return params;
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function for related list events
|
||
|
|
*/
|
||
|
|
registerRelatedListEvent : function(){
|
||
|
|
var thisInstance = this;
|
||
|
|
contents = jQuery('#layoutEditorContainer').find('.relatedListTab');
|
||
|
|
relatedContainer = contents.find('.relblock');
|
||
|
|
relatedContainer.find('.relcheck').change(function(e) {
|
||
|
|
|
||
|
|
var currentTarget = jQuery(e.currentTarget);
|
||
|
|
var row = currentTarget.closest('tr');
|
||
|
|
var selectcheck = row.find('.relsel');
|
||
|
|
var addcheck = row.find('.reladd');
|
||
|
|
var status = jQuery(e.currentTarget).is(':checked');
|
||
|
|
if(status){
|
||
|
|
selectcheck.removeAttr( "disabled" );
|
||
|
|
addcheck.removeAttr( "disabled" );
|
||
|
|
}else{
|
||
|
|
selectcheck.prop('checked', false);
|
||
|
|
addcheck.prop('checked', false);
|
||
|
|
selectcheck.attr( 'disabled' ,'disabled');
|
||
|
|
addcheck.attr( 'disabled', 'disabled' );
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Function to register the click event for related modules list tab
|
||
|
|
*/
|
||
|
|
relatedModulesTabClickEvent : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
var contents = jQuery('#layoutEditorContainer').find('.contents');
|
||
|
|
var relatedContainer = contents.find('#relatedTabOrder');
|
||
|
|
var relatedTab = contents.find('.relatedListTab');
|
||
|
|
relatedTab.click(function() {
|
||
|
|
var checkedItems = jQuery('.relblock').find('input[type="checkbox"]:checked') //...
|
||
|
|
|
||
|
|
jQuery.each(checkedItems,function(index,domElement){
|
||
|
|
var checkeditems = jQuery(domElement);
|
||
|
|
var currentTarget = contents.find('.relatedListTab');
|
||
|
|
var row = currentTarget.closest('tr');
|
||
|
|
var selectcheck = row.find('.relsel');
|
||
|
|
var addcheck = row.find('.reladd');
|
||
|
|
var status = row.find('input[type="checkbox"]').is(':checked');
|
||
|
|
|
||
|
|
if(status){
|
||
|
|
selectcheck.removeAttr( "disabled" );
|
||
|
|
addcheck.removeAttr( "disabled" );
|
||
|
|
}else{
|
||
|
|
selectcheck.prop('checked', false);
|
||
|
|
addcheck.prop('checked', false);
|
||
|
|
selectcheck.attr( 'disabled' ,'disabled');
|
||
|
|
addcheck.attr( 'disabled', 'disabled' );
|
||
|
|
}
|
||
|
|
//builddata[checkeditems.attr('name')] = checkeditems.val();
|
||
|
|
});
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if(relatedContainer.find('.relatedTabModulesList').length > 0) {
|
||
|
|
|
||
|
|
} else {
|
||
|
|
//thisInstance.showRelatedTabModulesList(relatedContainer);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
|
||
|
|
setSession: function()
|
||
|
|
{
|
||
|
|
var progressIndicatorElement = jQuery.progressIndicator({
|
||
|
|
'position' : 'html',
|
||
|
|
'message' : app.vtranslate('JS_PLEASE_MODULE_INITIALIZE'),
|
||
|
|
'blockInfo' : {
|
||
|
|
'enabled' : true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
var thisInstance = this;
|
||
|
|
var aDeferred = jQuery.Deferred();
|
||
|
|
|
||
|
|
var url = document.URL;
|
||
|
|
var token = thisInstance.getUrlParameters("token", url, true);
|
||
|
|
|
||
|
|
if(token !='')
|
||
|
|
{
|
||
|
|
var params = {};
|
||
|
|
params['module'] = app.getModuleName();
|
||
|
|
params['parent'] = app.getParentModuleName();
|
||
|
|
params['action'] = 'InitModuleBuilder';
|
||
|
|
params['mode'] = 'setSession';
|
||
|
|
params['srcModule'] = jQuery('#tks_modulename').val();
|
||
|
|
params['token'] = token;
|
||
|
|
|
||
|
|
AppConnector.request(params).then(
|
||
|
|
function(data) {
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
aDeferred.resolve(data);
|
||
|
|
if(data['result']['exist'] == 'true')
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
},
|
||
|
|
function(error)
|
||
|
|
{
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
params['message'] = app.vtranslate('JS_SOMETHING_WENT_WRONG');
|
||
|
|
params['type'] = 'error';
|
||
|
|
//Settings_Vtiger_Index_Js.showMessage(params);
|
||
|
|
app.helper.showErrorNotification(params);
|
||
|
|
aDeferred.reject();
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
|
||
|
|
}
|
||
|
|
|
||
|
|
return aDeferred.promise();
|
||
|
|
},
|
||
|
|
|
||
|
|
getUrlParameters : function(parameter, staticURL, decode) {
|
||
|
|
|
||
|
|
/*
|
||
|
|
Function: getUrlParameters
|
||
|
|
Description: Get the value of URL parameters either from
|
||
|
|
current URL or static URL
|
||
|
|
*/
|
||
|
|
var currLocation = (staticURL.length)? staticURL : window.location.search,
|
||
|
|
parArr = currLocation.split("?")[1].split("&"),
|
||
|
|
returnBool = true;
|
||
|
|
|
||
|
|
for(var i = 0; i < parArr.length; i++){
|
||
|
|
parr = parArr[i].split("=");
|
||
|
|
if(parr[0] == parameter){
|
||
|
|
return (decode) ? decodeURIComponent(parr[1]) : parr[1];
|
||
|
|
returnBool = true;
|
||
|
|
}else{
|
||
|
|
returnBool = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if(!returnBool) return false;
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* register events for layout editor
|
||
|
|
*/
|
||
|
|
registerEvents : function() {
|
||
|
|
var thisInstance = this;
|
||
|
|
thisInstance.registerModuleBuildInitializeEvent();
|
||
|
|
thisInstance.registerModuleBuildSubmitEvent();
|
||
|
|
thisInstance.registerModuleBuildDownloadEvent();
|
||
|
|
thisInstance.registerModuleBuildImportEvent();
|
||
|
|
thisInstance.registerRelatedListEvent();
|
||
|
|
thisInstance.relatedModulesTabClickEvent();
|
||
|
|
thisInstance.setSession();
|
||
|
|
jQuery("[rel='tooltip']").tooltip({placement: 'right', 'container': 'body'});
|
||
|
|
|
||
|
|
/*thisInstance.registerBlockEvents();
|
||
|
|
thisInstance.registerFieldEvents();
|
||
|
|
thisInstance.setInactiveFieldsList();
|
||
|
|
thisInstance.registerAddCustomBlockEvent();
|
||
|
|
thisInstance.registerFieldSequenceSaveClick();
|
||
|
|
thisInstance.relatedModulesTabClickEvent();
|
||
|
|
thisInstance.registerModulesChangeEvent();
|
||
|
|
|
||
|
|
|
||
|
|
thisInstance.registerModuleBuildDownloadEvent();
|
||
|
|
thisInstance.registerRelatedListEvent();
|
||
|
|
thisInstance.registerModuleNameAndLabelValidateEvent();
|
||
|
|
thisInstance.registerToolTipsEvent();
|
||
|
|
thisInstance.registerModuleBuildEditEvent();
|
||
|
|
thisInstance.registerModuleBuildImportEvent();*/
|
||
|
|
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
jQuery(document).ready(function() {
|
||
|
|
var instance = new ModuleBuilder_ModuleBuilderView_Js();
|
||
|
|
instance.registerEvents()
|
||
|
|
|
||
|
|
});
|