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

Ticket #4670 - Ads: universal Create Content form doesn't keep the bound with the context.

AntonLV 2 лет назад
Родитель
Сommit
a10bd1d482

+ 9 - 1
modules/base/general/classes/BxBaseModGeneralFormsEntryHelper.php

@@ -17,6 +17,7 @@ class BxBaseModGeneralFormsEntryHelper extends BxDolProfileForms
     protected $_oModule;
 
     protected $_bIsApi;
+    protected $_bDynamicMode;
 
     /**
      * 'Ajax Mode' determines the format of response. If it's TRUE the response 
@@ -32,7 +33,7 @@ class BxBaseModGeneralFormsEntryHelper extends BxDolProfileForms
      */
     protected $_bAbsoluteActionUrl;
 
-    protected $_bDynamicMode;
+    protected $_mixedContextId;    
 
     public function __construct($oModule)
     {
@@ -52,6 +53,8 @@ class BxBaseModGeneralFormsEntryHelper extends BxDolProfileForms
         $mixedAbsoluteActionUrl = bx_get('absolute_action_url');
         if($mixedAbsoluteActionUrl !== false)
             $this->setAbsoluteActionUrl($mixedAbsoluteActionUrl);
+
+        $this->_mixedContextId = false;
     }
 
     public function setAjaxMode($bAjaxMode)
@@ -66,6 +69,11 @@ class BxBaseModGeneralFormsEntryHelper extends BxDolProfileForms
         $this->_bAbsoluteActionUrl = (bool)$bAbsoluteActionUrl;
     }
 
+    public function setContextId($mixedContextId)
+    {
+        $this->_mixedContextId = is_numeric($mixedContextId) ? (int)$mixedContextId : (bool)$mixedContextId;
+    }
+
     public function setDynamicMode($bDynamicMode)
     {
         $this->_bDynamicMode = (bool)$bDynamicMode;

+ 3 - 0
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -1283,6 +1283,9 @@ class BxBaseModGeneralModule extends BxDolModule
         if(isset($aParams[$sParamsKey]) && (bool)$aParams[$sParamsKey] === true)
             $oFormsHelper->setAbsoluteActionUrl((bool)$aParams[$sParamsKey]);
 
+        if($bContext)
+            $oFormsHelper->setContextId($mixedContextId);
+
         $sDisplay = !empty($aParams['display']) ? $aParams['display'] : false;
 
         $sFunc = 'getObjectForm' . ucfirst($sType);

+ 13 - 1
modules/boonex/ads/classes/BxAdsFormsEntryHelper.php

@@ -21,10 +21,22 @@ class BxAdsFormsEntryHelper extends BxBaseModTextFormsEntryHelper
 
     public function getObjectFormAdd($sDisplay = false)
     {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
         if(($sCategoryDisplay = $this->_oModule->getCategoryDisplay('add')) !== false)
             $sDisplay = $sCategoryDisplay;
 
-        return parent::getObjectFormAdd($sDisplay);
+        $oForm = parent::getObjectFormAdd($sDisplay);
+
+        if($this->_mixedContextId !== false && (!$sDisplay || $sDisplay == $CNF['OBJECT_FORM_ENTRY_DISPLAY_ADD']) && $oForm !== false) {
+            $oForm->aInputs = array_merge(['context_id' => [
+                'type' => 'hidden',
+                'name' => 'context_id',
+                'value' => $this->_mixedContextId
+            ]], $oForm->aInputs);
+        }
+
+        return $oForm;
     }
 
     public function viewDataEntry ($iContentId)

+ 2 - 1
modules/boonex/ads/classes/BxAdsModule.php

@@ -116,7 +116,8 @@ class BxAdsModule extends BxBaseModTextModule
             'eval' => $this->_oConfig->getJsObject('form') . '.onSelectCategory(oData)',
             'content' => $this->serviceGetCreatePostForm([
                 'absolute_action_url' => true,
-                'dynamic_mode' => true
+                'dynamic_mode' => true,
+                'context_id' => ($iContextId = bx_get('context_id')) !== false ? (int)$iContextId : false
             ])
         ]);
     }

+ 6 - 1
modules/boonex/ads/js/form.js

@@ -21,13 +21,18 @@ function BxAdsForm(oOptions) {
 }
 
 BxAdsForm.prototype.selectCategory = function(oButton) {
-    var oCategory = $(oButton).parents('form:first').find("[name='category_select']");
+    var oForm = $(oButton).parents('form:first');
+    var oCategory = oForm.find("[name='category_select']");
     if(!oCategory || oCategory.length == 0)
         return;
 
     var $this = this;
     var oParams = this._getDefaultData();
     oParams['category'] = oCategory.val();
+    
+    var oContextId = oForm.find("[name='context_id']");
+    if(oContextId && oContextId.length != 0)
+        oParams['context_id'] = oContextId.val();
 
     this.loadingInBlock(oButton, true);