/** * ----------------------------------------------------------------------------- * file: criteriaBuilderSearch.js * file version: 1.1.1 * date: 2011-05-15 * * JS file provided by the piwigo's plugin "GrumPluginClasses" * * ----------------------------------------------------------------------------- * Author : Grum * email : grum@piwigo.com * website : http://photos.grum.fr * PWG user : http://forum.phpwebgallery.net/profile.php?id=3706 * * << May the Little SpaceFrog be with you ! >> * ----------------------------------------------------------------------------- * * used to manage the requestBuilder search interface * * :: HISTORY :: * * | release | date | * | 1.0.0 | 2010/04/27 | * start to coding * | | | * | 1.1.0 | 2010/10/21 | * change ajax methods * | | | * | | | * fix bug : if there is no criteria, don't send * | | | request * | | | * | 1.1.1 | 2011/05/15 | * fix some incompatibilities with IE7 * | | | * | | | * | | | * | | | * */ var cb=null; var interfaceManager = function(optionsToSet) { var pn=null, requestNumber=0, options = { requestCriterionsVisible:'', requestCriterionsHidden:'', requestResult:'', requestResultContent:'', requestResultNfo:'', requestResultPagesNavigator:'', requestResultRequestNumber:0, onPageChange:null, numberPerPage:30 }; /** * */ this.doAction = function(fct) { switch(fct) { case 'queryResult': /* function 'queryResult' : when query is executed, prepare the interface */ if(arguments.length==3) { displayQueryResult(arguments[1], arguments[2]); } break; case 'queryPage': /* function 'queryPage' : display returned page */ if(arguments.length==3) { displayQueryPage(arguments[1], arguments[2]); } break; case 'show': /* function 'show' : show/hide the query/result */ if(arguments.length==2) { show(arguments[1]); } break; case 'setOptions': /* function 'setOptions' : allows to set options after the object was * created */ if(arguments.length==2) { setOptions(arguments[1]); } break; case 'fillCaddie': /* function 'fillCaddie' : allows to fill the caddie with the search result * */ if(arguments.length==2) { fillCaddie(arguments[1], this.getRequestNumber()); } break; } }; /** * returns the current request number */ this.getRequestNumber = function () { return(requestNumber); }; /** * returns the number of items per page */ this.getNumberPerPage = function () { return(options.numberPerPage); }; /** * this function show/hide the different panels * 'buildQuery' : hide the result panel and display the panel to build query * 'resultQuery' : hide the panel to build query and display the result panel */ var show = function(mode) { switch(mode) { case 'buildQuery': $('.'+options.requestCriterionsVisible).css('display', 'block'); $('.'+options.requestCriterionsHidden).css('display', 'none'); $('.'+options.requestResult).css('display', 'none'); break; case 'resultQuery': $('#iResultQueryContent').html("
"); $('.'+options.requestCriterionsVisible).css('display', 'none'); $('.'+options.requestCriterionsHidden).css('display', 'block'); $('.'+options.requestResult).css('display', 'block'); break; } }, /** * this function display the number of items found and prepare the page * navigator * * @param String nfo : 2 information separated with a semi-colon ';' * requestNumber;numberOfItems */ displayQueryResult = function (isSuccess, nfo) { if(isSuccess) { nfo=nfo.split(';'); requestNumber=nfo[0]; $('#iResultQueryNfo').html(nfo[1]); pn.doAction('setOptions', { numberItem:nfo[1], defaultPage:1 } ); show('resultQuery'); } else { //$('#'+options.requestResultContent).html(""); show('buildQuery'); alert(requestBuilderOptions.textSomethingWrong); } }, /** * this function display the number of items found and prepare the page * navigator * * @param String nfo : 2 information separated with a semi-colon ';' * requestNumber;numberOfItems */ displayQueryPage = function (isSuccess, nfo) { if(isSuccess) { $('#iResultQueryContent').html(nfo); } else { alert(requestBuilderOptions.textSomethingWrong); } }, /** * * @param Object optionsToSet : set the given options */ setOptions = function(optionsToSet) { if(typeof optionsToSet=='object') { options = jQuery.extend(options, optionsToSet); } }, /** * initialize the object */ init = function (optionsToSet) { setOptions(optionsToSet); pn = new pagesNavigator(options.requestResultPagesNavigator, { itemPerPage:options.numberPerPage, displayNumPage:9, classActive:'pnActive', classInactive:'pnInactive', onPageChange: function (page) { if(options.onPageChange!=null && jQuery.isFunction(options.onPageChange)) { options.onPageChange(requestNumber, page, options.numberPerPage); } } } ); requestNumber=options.requestResultRequestNumber; }, /** * fill the caddie with the search results * @param String mode : 'add' or 'fill' */ fillCaddie = function (mode, requestNumber) { $('#iMenuCaddieImg').css('display', 'inline-block'); $('#iMenuCaddieItems ul').css('display', 'none'); $.ajax( { type: "POST", url: "plugins/GrumPluginClasses/gpc_ajax.php", async: true, data: { ajaxfct:"admin.rbuilder.fillCaddie", fillMode:mode, requestNumber:requestNumber }, success: function(msg) { $('#iMenuCaddieImg').css('display', 'none'); $('#iMenuCaddieItems ul').css('display', 'block'); alert(requestBuilderOptions.textCaddieUpdated); }, error: function(msg) { $('#iMenuCaddieImg').css('display', 'none'); $('#iMenuCaddieItems ul').css('display', 'block'); alert(requestBuilderOptions.textSomethingWrong); } } ); }; init(optionsToSet); }; function init() { im = new interfaceManager( { requestCriterionsVisible:'cRequestCriterions', requestCriterionsHidden:'cModifyRequest', requestResult:'cResultQuery', requestResultContent:'iResultQueryContent', requestResultNfo:'iResultQueryNfo', requestResultPagesNavigator:'iPagesNavigator' } ); requestBuilderOptions.classGroup='gcBorderInput gcTextInput'; requestBuilderOptions.classItem='gcBgInput gcTextInput'; requestBuilderOptions.classOperator='cbOperator cbOperatorBg gcLinkHover'; requestBuilderOptions.onRequestSuccess = function (msg) { im.doAction('queryResult', true, msg); cb.doAction('getPage', im.getRequestNumber(), 1, im.getNumberPerPage()); }; requestBuilderOptions.onRequestError = function (msg) { im.doAction('queryResult', false, msg); }; requestBuilderOptions.onGetPageSuccess = function (msg) { im.doAction('queryPage', true, msg); }; requestBuilderOptions.onGetPageError = function (msg) { im.doAction('queryPage', false, msg); }; cb = new criteriaBuilder('iListSelectedCriterions', requestBuilderOptions); im.doAction('setOptions', { onPageChange: function (requestNumber, page, numberPerPage) { $('#iResultQueryContent').html("
"); cb.doAction('getPage', requestNumber, page, numberPerPage); } } ); }