Quellcode durchsuchen

Ticket #5272 - Contexts: Misaligned image in unit cover.

AntonLV vor 11 Monaten
Ursprung
Commit
1fb5784bbd

+ 4 - 5
modules/base/general/classes/BxBaseModGeneralTemplate.php

@@ -1181,14 +1181,13 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
 
         return array($oPlayer, $oStorage, $aContentInfo, $a);
     }
-    
-    function _getImageSettings($sSettings)
+
+    function _getImageSettings($sField, $sSettings, $sUsage = '')
     {
         $sCoverSettings = '';
-        $aCoverData = json_decode($sSettings, true);
-        if (!empty($aCoverData)){
+        if(($aCoverData = json_decode($sSettings, true)) && is_array($aCoverData))
             $sCoverSettings = 'background-position: ' . $aCoverData['x'] . '% ' . $aCoverData['y'] . '%';
-        }
+
         return $sCoverSettings;
     }
 

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

@@ -297,8 +297,9 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
             'badges' => $oModule->serviceGetBadges($iContentId, false, true),
             'thumb_url' => $bThumbUrl ? $sThumbUrl : $this->getImageUrl('no-picture-thumb.png'),
         );
-        
-        $sCoverData = isset($aData['cover_data']) ? $aData['cover_data'] : '';
+
+        $sCoverData = $aData['cover_data'] ?? '';
+        $sCoverSettings = $this->_getImageSettings($CNF['FIELD_COVER'], $sCoverData, 'unit_cover');
 
         return array_merge(array (
             'class' => $this->_getUnitClass($aData, $sTemplate) . (!$bCoverUrl ? ' bx-cover-empty' : ''),
@@ -309,12 +310,12 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
                 'content' => $aTmplVarsThumbnail
             ),
             'cover_url' => $sCoverUrl,
-            'cover_settings' => $this->_getImageSettings($sCoverData),
+            'cover_settings' => $sCoverSettings,
             'bx_if:show_cover' => array(
                 'condition' => $bCoverUrl,
                 'content' => array(
                     'cover_url' => $sCoverUrl,
-                    'cover_settins' => $this->_getImageSettings($sCoverData),
+                    'cover_settins' => $sCoverSettings,
                     'title' => $sTitle,
                 )
             ),
@@ -503,7 +504,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
                 'cover_popup_id' => $sCoverPopupId,
                 'cover_url' => $sUrlCover,
                 'unique_id' => $sUniqIdCover,
-                'cover_settins' => isset($CNF['FIELD_COVER_POSITION']) ? $this->_getImageSettings($aData[$CNF['FIELD_COVER_POSITION']]) : '',
+                'cover_settins' => isset($CNF['FIELD_COVER_POSITION']) ? $this->_getImageSettings($CNF['FIELD_COVER'], $aData[$CNF['FIELD_COVER_POSITION']], 'page_cover') : '',
                 'add_class' => $sAddClassCover,
                 'img_class' => $sAddClassCover != '' ? 'bx-media-editable-src' : '',
             ];
@@ -601,7 +602,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
                 'picture_avatar_url' => $bUrlAvatar ? $sUrlAvatar : $this->getImageUrl('no-picture-preview.png'),
                 'unique_id' => $sUniqIdPicture,
                 'picture_tweak' => $sPictureTweak, 
-                'cover_settins' => isset($CNF['FIELD_PICTURE_POSITION']) ? $this->_getImageSettings($aData[$CNF['FIELD_PICTURE_POSITION']]) : '',
+                'cover_settins' => isset($CNF['FIELD_PICTURE_POSITION']) ? $this->_getImageSettings($CNF['FIELD_PICTURE'], $aData[$CNF['FIELD_PICTURE_POSITION']], 'page_cover') : '',
                 'picture_href' => (!$CNF['FIELD_PICTURE'] || !$aData[$CNF['FIELD_PICTURE']]) && CHECK_ACTION_RESULT_ALLOWED === $oModule->checkAllowedEdit($aData) ? $sUrlPictureChange : 'javascript:void(0);',
             );
 
@@ -870,6 +871,16 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         return $sImageUrl;
     }
 
+    function _getImageSettings($sField, $sSettings, $sUsage = '')
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        if(isset($CNF['FIELD_COVER']) && $sField == $CNF['FIELD_COVER'] && $sUsage == 'unit_cover')
+            return '';
+
+        return parent::_getImageSettings($sField, $sSettings, $sUsage);
+    }
+
     protected function _isTemplateWithMeta($sTemplateName = 'unit.html')
     {
         $sResult = '';

+ 4 - 3
modules/base/text/classes/BxBaseModTextTemplate.php

@@ -389,7 +389,7 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
             'condition' => !empty($sImage),
             'content' => array(
                 'entry_image' => $sImage,
-                'image_settings' => $aImageParams['field_position'] ? $this->_getImageSettings($aData[$aImageParams['field_position']]) : '',
+                'image_settings' => $aImageParams['field_position'] ? $this->_getImageSettings($aImageParams['field'], $aData[$aImageParams['field_position']], 'page_cover') : '',
                 'add_class' => $sAddClassPicture,
                 'img_class' => $sAddClassPicture != '' ? 'bx-media-editable-src' : '',
                 'additional_code' => $sAddCode,
@@ -636,7 +636,8 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
         $bBadgesSingle = isset($aParams['badges_single']) ? $aParams['badges_single'] : false;
         $bBadgesCompact = isset($aParams['badges_compact']) ? $aParams['badges_compact'] : false;
 
-        $sCoverData = isset($aData['thumb_data']) ? $aData['thumb_data'] : '';
+        $sCoverData = $aData[$CNF['FIELD_THUMB_POSITION']] ?? '';
+        $sCoverSettings = $this->_getImageSettings($CNF['FIELD_THUMB'], $sCoverData, 'unit_cover');
 
         $aTmplVars = array (
             'class' => $this->_getUnitClass($aData,(isset($aParams['template_name']) ? $aParams['template_name'] : '')),
@@ -680,7 +681,7 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
                     ],
                     'thumb_url' => $sPhotoThumb ? $sPhotoThumb : '',
                     'gallery_url' => $sPhotoGallery ? $sPhotoGallery : '',
-                    'image_settings' => $this->_getImageSettings($sCoverData),
+                    'image_settings' => $sCoverSettings,
                     'strecher' => str_repeat('      ', 40),
                 ),
             ),