main.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /**
  2. * Copyright (c) UNA, Inc - https://una.io
  3. * MIT License - https://opensource.org/licenses/MIT
  4. *
  5. * @defgroup BaseGroups Base classes for groups modules
  6. * @ingroup UnaModules
  7. *
  8. * @{
  9. */
  10. function BxBaseModGroupsMain(oOptions) {
  11. this._sModule = oOptions.sModule;
  12. this._sActionsUrl = oOptions.sActionUrl;
  13. this._sObjName = oOptions.sObjName == undefined ? 'oBxBaseModGroupsMain' : oOptions.sObjName;
  14. this._sObjNameGrid = oOptions.sObjNameGrid == undefined ? '' : oOptions.sObjNameGrid;
  15. this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
  16. this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
  17. this._sParamsDivider = oOptions.sParamsDivider == undefined ? '#-#' : oOptions.sParamsDivider;
  18. this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
  19. this._oBrowsingFiltersPopupOptions = {};
  20. this._oBrowsingFiltersPopupOptionsDefaults = {};
  21. }
  22. BxBaseModGroupsMain.prototype.changeBrowsingFilters = function(oElement, sSelector, oRequestParams) {
  23. if($(sSelector).length)
  24. return $(sSelector).dolPopup(this._oBrowsingFiltersPopupOptions);
  25. var $this = this;
  26. var oData = jQuery.extend({mode: ''}, this._getDefaultData());
  27. if(oRequestParams != undefined)
  28. oData = jQuery.extend({}, oData, oRequestParams);
  29. this.loadingInButton(oElement, true);
  30. jQuery.get (
  31. this._sActionsUrl + 'get_browsing_filters',
  32. oData,
  33. function(oResponse) {
  34. if(oElement)
  35. $this.loadingInButton(oElement, false);
  36. if(oResponse && oResponse.popup != undefined) {
  37. $this._oBrowsingFiltersPopupOptions = jQuery.extend($this._oBrowsingFiltersPopupOptionsDefaults, oResponse.popup.options, {
  38. pointer: {
  39. el: $(oElement),
  40. align: 'right'
  41. }
  42. });
  43. oResponse.popup.options = $this._oBrowsingFiltersPopupOptions;
  44. }
  45. processJsonData(oResponse);
  46. },
  47. 'json'
  48. );
  49. };
  50. BxBaseModGroupsMain.prototype.applyBrowsingFilter = function(oElement, oRequestParams) {
  51. var $this = this;
  52. var oData = this._getDefaultData();
  53. if(oRequestParams != undefined)
  54. oData = jQuery.extend({}, oData, oRequestParams);
  55. this.loadingInButton(oElement, true);
  56. jQuery.get (
  57. this._sActionsUrl + 'apply_browsing_filters',
  58. oData,
  59. function(oResponse) {
  60. $this.loadingInButton(oElement, false);
  61. $(oElement).parents('.bx-popup-applied:visible:first').dolPopupHide();
  62. processJsonData(oResponse);
  63. },
  64. 'json'
  65. );
  66. };
  67. BxBaseModGroupsMain.prototype.onApplyBrowsingFilter = function(oData) {
  68. if(!oData.content)
  69. return;
  70. var oContainer = $('.bx-db-content').has('#' + $(oData.content).find('.bx-search-result-block:first').attr('id'));
  71. if(!oContainer || oContainer.length == 0)
  72. return;
  73. oContainer.html(oData.content).bxProcessHtml();
  74. };
  75. BxBaseModGroupsMain.prototype.onChangeMembersFilter = function(oFilter) {
  76. var $this = this;
  77. var oFilter1 = $('#bx-grid-frole-' + this._sObjNameGrid);
  78. var sValueFilter1 = oFilter1.length > 0 ? oFilter1.val() : '';
  79. var oSearch = $('#bx-grid-search-' + this._sObjNameGrid);
  80. var sValueSearch = oSearch.length > 0 ? oSearch.val() : '';
  81. if(sValueSearch == _t('_sys_grid_search'))
  82. sValueSearch = '';
  83. clearTimeout($this._iSearchTimeoutId);
  84. $this._iSearchTimeoutId = setTimeout(function () {
  85. glGrids[$this._sObjNameGrid].setFilter(sValueFilter1 + $this._sParamsDivider + sValueSearch, true);
  86. }, 500);
  87. };
  88. BxBaseModGroupsMain.prototype.connAction = function(oElement, sObject, sAction, iContentId) {
  89. var $this = this;
  90. var oParams = this._getDefaultData();
  91. oParams['s'] = 'main';
  92. oParams['o'] = sObject;
  93. oParams['a'] = sAction;
  94. oParams['cpi'] = iContentId;
  95. if(oElement)
  96. this.loadingInButton(oElement, true);
  97. jQuery.get (
  98. this._sActionsUrl + 'get_questionnaire',
  99. oParams,
  100. function(oData) {
  101. if(oElement)
  102. $this.loadingInButton(oElement, false);
  103. oData.element = oElement;
  104. processJsonData(oData);
  105. },
  106. 'json'
  107. );
  108. };
  109. BxBaseModGroupsMain.prototype.connActionPerformed = function(oData) {
  110. var sClass = this._sModule.replace('_', '-') + '-unit-' + oData.ci;
  111. bx_conn_action($('.' + sClass + ' .bx-btn'), oData.o, oData.a, oData.cpi, false, function(oData, eLink) {
  112. $(eLink).each(function() {
  113. $(this).parents('.bx-menu-item:first').remove();
  114. });
  115. });
  116. };
  117. BxBaseModGroupsMain.prototype.onClickSetRole = function(iFanProfileId, iRole) {
  118. $('.bx-popup-applied:visible').dolPopupHide();
  119. if(glGrids[this._sObjNameGrid] != undefined)
  120. glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {role: iRole}, '', false, false);
  121. };
  122. BxBaseModGroupsMain.prototype.onClickSetRoleMulti = function(oElement, iFanProfileId, iRole) {
  123. if(!glGrids[this._sObjNameGrid])
  124. return;
  125. var oSiblings = $(oElement).parents('.bx-base-group-sr-role:first').siblings();
  126. if(iRole == 0)
  127. oSiblings.find('input:checked').removeAttr('checked');
  128. else
  129. oSiblings.find("input[value = '0']:checked").removeAttr('checked');
  130. var sRoles = $(oElement).parents('.bx-base-group-sr-roles:first').find('input:checked').serialize();
  131. glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {}, sRoles, false, false);
  132. };
  133. BxBaseModGroupsMain.prototype.loadingInButton = function(e, bShow) {
  134. if($(e).length)
  135. bx_loading_btn($(e), bShow);
  136. else
  137. bx_loading($('body'), bShow);
  138. };
  139. BxBaseModGroupsMain.prototype._getDefaultData = function() {
  140. var oDate = new Date();
  141. return jQuery.extend({}, this._oRequestParams, {_t:oDate.getTime()});
  142. };
  143. /** @} */