[Vtigercrm-developers] How to extend feature such as Global Search without core modifications ?
apcloic
apcloic at gmail.com
Tue Feb 16 07:47:00 GMT 2016
Hi Preexo,
I agree with you, we need a better way to handle module development on
code.vtiger.com, let's wait for vTiger answer to your question.
I would also like to avoid modifying core file but javascript is not easy to
understand for me ;)
So, for now I manage to override basicsearch JS function with the
HEADERSCRIPT, but I don't know how to just replace getSearchResult function.
jQuery(document).ready(function () {
jQuery(document).find("#globalSearchValue").unbind("keypress");
var thisInstance = this;
jQuery(document).on("keypress","#globalSearchValue", function(e) {
if (e.which == 13) {
e.preventDefault();
var currentTarget = jQuery(e.currentTarget)
labelSearch(currentTarget);
}
else{
return;
}
e.preventDefault();
});
var labelSearch = function(currentTarget) {
var val = currentTarget.val();
if (val == '') {
alert(app.vtranslate('JS_PLEASE_ENTER_SOME_VALUE'));
currentTarget.focus();
return false;
}
var basicSearch = new Search_BasicSearch_Js();
var progress = jQuery.progressIndicator();
basicSearch.search(val).then(function(data) {
basicSearch.showSearchResults(data);
progress.progressIndicator({
'mode': 'hide'
});
});
};
});
jQuery.Class('Search_BasicSearch_Js',{},{
//stores the module that need to be searched
searchModule : false,
//stores the module that need to be searched which is selected by the user
currentSearchModule : false,
/**
* Function to get the search module
*/
getSearchModule : function() {
if(this.searchModule === false) {
//default gives current module
var module = app.getModuleName();
if(typeof this.getCurrentSearchModule() != 'undefined') {
module = this.getCurrentSearchModule();
}
this.setSearchModule(module);
}
return this.searchModule;
},
/**
* Function to set the search module
*/
setSearchModule : function(moduleName) {
this.searchModule = moduleName;
return this;
},
/**
* Function to get the user selected search module
*/
getCurrentSearchModule : function() {
if(this.currentSearchModule === false) {
this.currentSearchModule = jQuery('#basicSearchModulesList').val();
}
return this.currentSearchModule;
},
/**
* Function which will perform the search
*/
_search : function(params) {
var aDeferred = jQuery.Deferred();
if(typeof params == 'undefined') {
params = {};
}
params.view = 'BasicAjax';
params.mode = 'showSearchResults';
if(typeof params.module == 'undefined') {
params.module = app.getModuleName();
//if you are in Settings then module should be Vtiger for normal
text search
if(app.getParentModuleName().length > 0) {
params.module = 'Vtiger';
}
}
AppConnector.request(params).then(
function(data){
aDeferred.resolve(data);
},
function(error,err){
aDeferred.reject(error);
}
);
return aDeferred.promise();
},
/**
* Helper function which invokes search
*/
search : function(value) {
// var searchModule = this.getCurrentSearchModule();
var searchModule = 'Search';
var params = {};
params.value = value;
if(typeof searchModule != 'undefined') {
params.searchModule = searchModule;
}
return this._search(params);
},
/**
* Function which shows the search results
*/
showSearchResults : function(data){
var aDeferred = jQuery.Deferred();
var postLoad = function(data) {
var blockMsg = jQuery(data).closest('.blockMsg');
app.showScrollBar(jQuery(data).find('.contents'));
blockMsg.position({
my: "left bottom",
at: "left bottom",
of: "#globalSearchValue",
offset: "1 -29"
});
aDeferred.resolve(data);
}
var params = {};
params.data = data ;
params.cb = postLoad;
params.css = {'width':'23%','text-align':'left'};
//not showing overlay
params.overlayCss = {'opacity':'0.2'};
app.showModalWindow(params);
return aDeferred.promise();
}
});
Regards,
--
View this message in context: http://vtiger-crm.2324883.n4.nabble.com/How-to-extend-feature-such-as-Global-Search-without-core-modifications-tp18384p18435.html
Sent from the vtigercrm-developers mailing list archive at Nabble.com.
More information about the vtigercrm-developers
mailing list