Просмотр исходного кода

Merge branch 'master' of https://github.com/unaio/una

roman.lesnikov@gmail.com 2 лет назад
Родитель
Сommit
ae763ff503

+ 5 - 0
modules/base/groups/classes/BxBaseModGroupsMenuSnippetMeta.php

@@ -24,6 +24,11 @@ class BxBaseModGroupsMenuSnippetMeta extends BxBaseModProfileMenuSnippetMeta
             ];
     }
 
+    protected function getMenuItemConnectionJsCode($sConnection, $sAction, $iContentProfile, $aItem)
+    {
+        return $this->_oModule->_oConfig->getJsObject('main') . ".connAction(this, '" . $sConnection . "', '" . $sAction . "', '" . $iContentProfile . "')";
+    }
+
     protected function _getMenuItemJoinPaid($aItem)
     {
         $CNF = &$this->_oModule->_oConfig->CNF;

+ 8 - 3
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -107,6 +107,10 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
 
     public function actionGetQuestionnaire()
     {
+        $sSource = '';
+        if(($sSource = bx_get('s')) !== false)
+            $sSource = bx_process_url_param($sSource);
+
         $sObject = '';
         if(($sObject = bx_get('o')) !== false)
             $sObject = bx_process_url_param($sObject);
@@ -119,7 +123,7 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         if(($iContentProfileId = bx_get('cpi')) !== false)
             $iContentProfileId = (int)$iContentProfileId;
 
-        echoJson($this->serviceGetQuestionnaire($sObject, $sAction, $iContentProfileId));
+        echoJson($this->serviceGetQuestionnaire($sSource, $sObject, $sAction, $iContentProfileId));
     }
 
     public function serviceManageTools($sType = 'common')
@@ -1124,7 +1128,7 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
         return $this->unsetRole($aItemInfo['profile_id'], $iClientId);
     }
 
-    public function serviceGetQuestionnaire($sObject, $sAction, $iContentProfileId)
+    public function serviceGetQuestionnaire($sSource, $sObject, $sAction, $iContentProfileId)
     {
         $CNF = &$this->_oConfig->CNF;
 
@@ -1136,6 +1140,7 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
             'form_attrs' => [
                 'id' => $this->getName() . '_questionnaire',
                 'action' => BX_DOL_URL_ROOT . bx_append_url_params($this->_oConfig->getBaseUri() . 'get_questionnaire', [
+                    's' => $sSource,
                     'o' => $sObject, 
                     'a' => $sAction, 
                     'cpi' => $iContentProfileId
@@ -1200,7 +1205,7 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
             foreach($aQuestions as $aQuestion)
                 $this->_oDb->insertAnswer((int)$aQuestion['id'], $iProfileId, $oForm->getCleanValue('question_' . $aQuestion['id']));
 
-            return ['code' => 0, 'o' => $sObject, 'a' => $sAction, 'cpi' => $iContentProfileId, 'eval' => $this->_oConfig->getJsObject('entry') . '.connActionPerformed(oData)'];
+            return ['code' => 0, 'o' => $sObject, 'a' => $sAction, 'cpi' => $iContentProfileId, 'ci' => $aContentProfileInfo['content_id'], 'eval' => $this->_oConfig->getJsObject($sSource) . '.connActionPerformed(oData)'];
         }
 
         bx_import('BxTemplFunctions');

+ 12 - 0
modules/base/groups/classes/BxBaseModGroupsSearchResult.php

@@ -21,6 +21,18 @@ class BxBaseModGroupsSearchResult extends BxBaseModProfileSearchResult
         parent::__construct($sMode, $aParams);
     }
 
+    function displayResultBlock()
+    {
+        $this->oModule->_oTemplate->addJs(['modules/base/groups/js/|main.js', 'main.js']);
+
+        return $this->oModule->_oTemplate->getJsCode('main', [
+            'sModule' => $this->oModule->getName()
+        ], [
+            'wrap' => true,
+            'mask' => "if(window['{object}'] == undefined) window['{object}'] = new {class}({params});"
+        ]) . parent::displayResultBlock();
+    }
+
     protected function addConditionsForPrivateContent($CNF, $oProfile, $aCustomGroup = array()) 
     {
         if(empty($CNF['OBJECT_PRIVACY_VIEW']))

+ 3 - 1
modules/base/groups/classes/BxBaseModGroupsTemplate.php

@@ -105,6 +105,8 @@ class BxBaseModGroupsTemplate extends BxBaseModProfileTemplate
 
     protected function _getUnitClass($aData, $sTemplateName = 'unit.html')
     {
+        $CNF = &$this->_oConfig->CNF;
+
         $sResult = '';
         
         switch($sTemplateName) {
@@ -116,7 +118,7 @@ class BxBaseModGroupsTemplate extends BxBaseModProfileTemplate
                 $sResult = parent::_getUnitClass($aData, $sTemplateName);
         }
 
-        return $sResult;
+        return $sResult . ' ' . str_replace('_', '-', $this->_oConfig->getName()) . '-unit-' . $aData[$CNF['FIELD_ID']];
     }
 
     protected function _getUnitSize($aData, $sTemplateName = 'unit.html')

+ 2 - 2
modules/base/groups/js/entry.js

@@ -20,6 +20,7 @@ function BxBaseModGroupsEntry(oOptions) {
 BxBaseModGroupsEntry.prototype.connAction = function(oElement, sObject, sAction, iContentId) {
     var $this = this;
     var oParams = this._getDefaultData();
+    oParams['s'] = 'entry';
     oParams['o'] = sObject;
     oParams['a'] = sAction;
     oParams['cpi'] = iContentId;
@@ -34,7 +35,6 @@ BxBaseModGroupsEntry.prototype.connAction = function(oElement, sObject, sAction,
             if(oElement)
                 $this.loadingInButton(oElement, false);
 
-            oData.element = oElement;
             processJsonData(oData);
         },
         'json'
@@ -42,7 +42,7 @@ BxBaseModGroupsEntry.prototype.connAction = function(oElement, sObject, sAction,
 };
 
 BxBaseModGroupsEntry.prototype.connActionPerformed = function(oData) {
-    bx_conn_action(oData.element, oData.o, oData.a, oData.cpi);
+    bx_conn_action($('.bx-menu-item-profile-fan-' + oData.a + ' .bx-btn'), oData.o, oData.a, oData.cpi);
 };
 
 BxBaseModGroupsEntry.prototype.loadingInButton = function(e, bShow) {

+ 91 - 0
modules/base/groups/js/main.js

@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    BaseGroups Base classes for groups modules
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+function BxBaseModGroupsMain(oOptions) {
+    this._sModule = oOptions.sModule;
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oBxBaseModGroupsMain' : oOptions.sObjName;
+    this._sObjNameGrid = oOptions.sObjNameGrid == undefined ? '' : oOptions.sObjNameGrid;
+    
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+}
+
+BxBaseModGroupsMain.prototype.connAction = function(oElement, sObject, sAction, iContentId) {
+    var $this = this;
+    var oParams = this._getDefaultData();
+    oParams['s'] = 'main';
+    oParams['o'] = sObject;
+    oParams['a'] = sAction;
+    oParams['cpi'] = iContentId;
+
+    if(oElement)
+        this.loadingInButton(oElement, true);
+
+    jQuery.get (
+        this._sActionsUrl + 'get_questionnaire',
+        oParams,
+        function(oData) {
+            if(oElement)
+                $this.loadingInButton(oElement, false);
+
+            oData.element = oElement;
+            processJsonData(oData);
+        },
+        'json'
+    );
+};
+
+BxBaseModGroupsMain.prototype.connActionPerformed = function(oData) {
+    var sClass = this._sModule.replace('_', '-') + '-unit-' + oData.ci;
+    
+    bx_conn_action($('.' + sClass + ' .bx-btn'), oData.o, oData.a, oData.cpi, false, function(oData, eLink) {
+        $(eLink).each(function() {
+            $(this).parents('.bx-menu-item:first').remove();
+        });
+    });
+};
+
+BxBaseModGroupsMain.prototype.onClickSetRole = function(iFanProfileId, iRole) {
+    $('.bx-popup-applied:visible').dolPopupHide();
+
+    if(glGrids[this._sObjNameGrid] != undefined)
+        glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {role: iRole}, '', false, false);
+};
+
+BxBaseModGroupsMain.prototype.onClickSetRoleMulti = function(oElement, iFanProfileId, iRole) {
+    if(!glGrids[this._sObjNameGrid])
+        return;
+
+    var oSiblings = $(oElement).parents('.bx-base-group-sr-role:first').siblings();
+    if(iRole == 0)
+        oSiblings.find('input:checked').removeAttr('checked');
+    else
+        oSiblings.find("input[value = '0']:checked").removeAttr('checked');
+
+    var sRoles = $(oElement).parents('.bx-base-group-sr-roles:first').find('input:checked').serialize();
+    glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {}, sRoles, false, false);
+};
+
+BxBaseModGroupsMain.prototype.loadingInButton = function(e, bShow) {
+    if($(e).length)
+        bx_loading_btn($(e), bShow);
+    else
+        bx_loading($('body'), bShow);	
+};
+
+BxBaseModGroupsMain.prototype._getDefaultData = function() {
+    var oDate = new Date();
+    return jQuery.extend({}, this._oRequestParams, {_t:oDate.getTime()});
+};
+
+/** @} */

+ 4 - 27
modules/boonex/events/js/main.js

@@ -9,35 +9,12 @@
  */
 
 function BxEventsMain(oOptions) {
-    this._sActionsUrl = oOptions.sActionUrl;
-    this._sObjName = oOptions.sObjName == undefined ? 'oBxEventsMain' : oOptions.sObjName;
-    this._sObjNameGrid = oOptions.sObjNameGrid == undefined ? '' : oOptions.sObjNameGrid;
+    BxBaseModGroupsMain.call(this, oOptions);
     
-    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
-    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
-
-    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._sObjName = oOptions.sObjName == undefined ? 'oBxEventsMain' : oOptions.sObjName;
 }
 
-BxEventsMain.prototype.onClickSetRole = function(iFanProfileId, iRole) {
-    $('.bx-popup-applied:visible').dolPopupHide();
-
-    if(glGrids[this._sObjNameGrid] != undefined)
-        glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {role: iRole}, '', false, false);
-};
-
-BxEventsMain.prototype.onClickSetRoleMulti = function(oElement, iFanProfileId, iRole) {
-    if(!glGrids[this._sObjNameGrid])
-        return;
-
-    var oSiblings = $(oElement).parents('.bx-base-group-sr-role:first').siblings();
-    if(iRole == 0)
-        oSiblings.find('input:checked').removeAttr('checked');
-    else
-        oSiblings.find("input[value = '0']:checked").removeAttr('checked');
-
-    var sRoles = $(oElement).parents('.bx-base-group-sr-roles:first').find('input:checked').serialize();
-    glGrids[this._sObjNameGrid].actionWithId(iFanProfileId, 'set_role_submit', {}, sRoles, false, false);
-};
+BxEventsMain.prototype = Object.create(BxBaseModGroupsMain.prototype);
+BxEventsMain.prototype.constructor = BxEventsMain;
 
 /** @} */