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

Ticket #4905 - Contexts: Allow to generate Thumb image from Cover image.

AntonLV 1 год назад
Родитель
Сommit
409b766c77

+ 20 - 0
modules/base/groups/classes/BxBaseModGroupsConfig.php

@@ -14,6 +14,8 @@ bx_import('BxDolInformer');
 class BxBaseModGroupsConfig extends BxBaseModProfileConfig
 {
     protected $_aHtmlIds;
+    
+    protected $_bUseCoverAsThumb;
 
     protected $_aCurrency;
 
@@ -36,6 +38,8 @@ class BxBaseModGroupsConfig extends BxBaseModProfileConfig
             'popup_price' => $sHtmlPrefix . '-popup-price'
         );
 
+        $this->_bUseCoverAsThumb = $this->_initUseCoverAsThumb();
+
         $oPayments = BxDolPayments::getInstance();
         $this->_aCurrency = array(
             'code' => $oPayments->getOption('default_currency_code'),
@@ -76,10 +80,26 @@ class BxBaseModGroupsConfig extends BxBaseModProfileConfig
         return !isset($this->CNF['PARAM_USE_IN']) || getParam($this->CNF['PARAM_USE_IN']) == 'on';
     }
 
+    public function isUseCoverAsThumb()
+    {
+        return $this->_bUseCoverAsThumb;
+    }
+
     public function getPriceName($sName)
     {
         return uriGenerate($sName, $this->CNF['TABLE_PRICES'], $this->CNF['FIELD_PRICE_NAME'], ['lowercase' => false]);
     }
+    
+    protected function _initUseCoverAsThumb()
+    {
+        if(($sKey = 'PARAM_USE_COVER_AS_THUMB') && !empty($this->CNF[$sKey]))
+            return getParam($this->CNF[$sKey]) == 'on';
+
+        if(($sParam = $this->_sName . '_use_cover_as_thumb') && ($mixedValue = getParam($sParam)) !== false)
+            return $mixedValue == 'on';
+
+        return true;
+    }
 }
 
 /** @} */

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

@@ -53,7 +53,7 @@ class BxBaseModGroupsTemplate extends BxBaseModProfileTemplate
         $aVars['title'] = (boolean)$aVars['public'] ? bx_process_output($aData[$CNF['FIELD_NAME']]) : _t($CNF['T']['txt_private_group']);
         $aVars['description'] = '';
         if(!empty($CNF['FIELD_TEXT']) && !empty($aData[$CNF['FIELD_TEXT']]) && (boolean)$aVars['public'])
-        	$aVars['description'] = strmaxtextlen(strip_tags($aData[$CNF['FIELD_TEXT']]), $this->_iUnitCharsSummary);
+            $aVars['description'] = strmaxtextlen(strip_tags($aData[$CNF['FIELD_TEXT']]), $this->_iUnitCharsSummary);
 
         $aVars['author'] = $oProfile->getDisplayName();
         $aVars['author_url'] = $oProfile->getUrl();
@@ -64,6 +64,14 @@ class BxBaseModGroupsTemplate extends BxBaseModProfileTemplate
         return $aVars;
     }
 
+    function prepareCover($aData, $aParams = [])
+    {
+        if($this->_oConfig->isUseCoverAsThumb())
+            $aParams['show_avatar'] = false;
+
+        return parent::prepareCover($aData, $aParams);
+    }     
+
     public function getPopupSetRole($aRoles, $iProfileId, $iProfileRole)
     {
         $sJsObject = $this->_oConfig->getJsObject('main');
@@ -141,6 +149,29 @@ class BxBaseModGroupsTemplate extends BxBaseModProfileTemplate
 
         return $sResult;
     }
+    
+    protected function _isUnitThumb($aData, $sTemplateName = 'unit.html')
+    {
+        $bResult = true;
+        
+        switch($sTemplateName) {
+            case 'unit.html':
+            case 'unit_with_cover.html':
+                $bResult = !$this->_oConfig->isUseCoverAsThumb();
+                break;
+        }
+
+        return $bResult;
+    }
+
+    function _image ($sField, $sTranscodeObject, $sNoImage, $aData, $bSubstituteNoImage = true)
+    {
+        $CNF = &$this->_oConfig->CNF;
+        if($sField == $CNF['FIELD_PICTURE'] && $this->_oConfig->isUseCoverAsThumb())
+            $sField = $CNF['FIELD_COVER'];
+
+        return parent::_image($sField, $sTranscodeObject, $sNoImage, $aData, $bSubstituteNoImage);
+    }
 }
 
 /** @} */

+ 6 - 6
modules/base/profile/classes/BxBaseModProfileTemplate.php

@@ -181,14 +181,9 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         if(empty($sCoverUrl))
             $sCoverUrl = $this->getImageUrl('cover.svg');
         
-        $sThumbUrl = $bPublicThumb ? $this->_getUnitThumbUrl($sTemplateSize, $aData, false) : '';
+        $sThumbUrl = $this->_isUnitThumb($aData, $sTemplate) && $bPublicThumb ? $this->_getUnitThumbUrl($sTemplateSize, $aData, false) : '';
         $bThumbUrl = !empty($sThumbUrl);
 
-        if(substr($sTemplate, 0, 13) == 'unit_wo_cover' && !$bThumbUrl && $bCoverUrl) {
-            $bThumbUrl = true;
-            $sThumbUrl = $sCoverUrl;
-        }
-
         $aTmplVarsThumbnail = array(
             'class_size' => '',
             'bx_if:show_thumb_image' => array(
@@ -818,6 +813,11 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         return $sResult;
     }
 
+    protected function _isUnitThumb($aData, $sTemplateName = 'unit.html')
+    {
+        return true;
+    }
+
     protected function _getUnitThumbUrl($sSize, $aData, $bSubstituteNoImage = true)
     {
         $sMethod = 'url' . bx_gen_method_name(str_replace('ava', 'avatar', $sSize), array('_', '-'));

+ 5 - 0
modules/boonex/organizations/classes/BxOrgsConfig.php

@@ -324,6 +324,11 @@ class BxOrgsConfig extends BxBaseModGroupsConfig
             'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
         );
     }
+
+    protected function _initUseCoverAsThumb()
+    {
+        return false;
+    }
 }
 
 /** @} */