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

#1521 Add snippet menu to author block in different modules

Alex Trofimov 8 лет назад
Родитель
Сommit
0f54d689bc

+ 13 - 1
modules/base/general/template/css/main.css

@@ -148,13 +148,23 @@ div.bx-base-general-comments div.bx-base-general-comments-counter-holder {
     text-overflow: ellipsis;
     text-align: left;
 }
+.sys-author ul.bx-menu-custom {
+    margin-top:0.1rem;
+    margin-bottom:0.2rem;
+}
+.sys-author ul.bx-menu-custom.bx-menu-hor > li > span,
 .bx-base-general-unit-meta ul.bx-menu-custom.bx-menu-hor > li > span {
 	margin-right: 0;
 }
+.sys-author ul.bx-menu-custom li:first-child .bx-base-general-unit-meta-div,
 .bx-base-general-unit-meta ul.bx-menu-custom li:first-child .bx-base-general-unit-meta-div {
     display: none;
 }
 
+.sys-author ul.bx-menu-custom li .bx-base-general-unit-meta-item,
+.sys-author ul.bx-menu-custom li .bx-base-general-unit-meta-div,
+.sys-author ul.bx-menu-custom li .bx-btn,
+.sys-author ul.bx-menu-custom li .bx-vote.bx-vote-stars,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-base-general-unit-meta-item,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-base-general-unit-meta-div,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-btn,
@@ -165,12 +175,14 @@ div.bx-base-general-comments div.bx-base-general-comments-counter-holder {
     vertical-align: middle;
 }
 
+.sys-author ul.bx-menu-custom li .bx-vote.bx-vote-stars,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-vote.bx-vote-stars {
     margin-top: 0px;
     margin-bottom: 0px;
 }
 
+.sys-author ul.bx-menu-custom li .bx-metatags-keyword,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-metatags-keyword {
     margin: 0px;
     line-height: normal;
-}
+}

+ 5 - 0
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -179,6 +179,11 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
         return '';
     }
 
+    public function serviceGetSnippetMenuVars($iProfileId, $bPublic = null)
+    {
+        return $this->_oTemplate->getSnippetMenuVars($iProfileId, $bPublic);
+    }
+        
 	public function serviceGetPageObjectForPageTrigger ($sPageTriggerName)
     {
         if (isset($this->_oConfig->CNF['TRIGGER_PAGE_VIEW_ENTRY']) && $this->_oConfig->CNF['TRIGGER_PAGE_VIEW_ENTRY'] == $sPageTriggerName)

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

@@ -48,12 +48,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         $oModule = $this->getModule();
         $iContentId = (int)$aData[$CNF['FIELD_ID']];
 
-        $bPublic = true;
-        if($isCheckPrivateContent && !empty($CNF['OBJECT_PRIVACY_VIEW'])) {
-            $oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_VIEW']);
-            if ($oPrivacy && !$oPrivacy->check($iContentId) && !$oPrivacy->isPartiallyVisible($aData[$CNF['FIELD_ALLOW_VIEW_TO']]))
-                $bPublic = false;
-        }
+        $bPublic = $isCheckPrivateContent && !empty($CNF['OBJECT_PRIVACY_VIEW']) ? $this->isProfilePublic($aData) : true;
 
         $bPublicThumb = true;
         if($isCheckPrivateContent && $oModule->checkAllowedViewProfileImage($aData) !== CHECK_ACTION_RESULT_ALLOWED)
@@ -86,17 +81,7 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         if(empty($sCoverUrl))
             $sCoverUrl = $this->getImageUrl('cover.jpg');
 
-        $aTmplVarsMeta = array();
-        if(!empty($CNF['OBJECT_MENU_SNIPPET_META'])) {
-            $oMenuMeta = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_SNIPPET_META'], $this);
-            if($oMenuMeta) {
-                $oMenuMeta->setContentId($iContentId);
-                $oMenuMeta->setContentPublic($bPublic);
-                $aTmplVarsMeta = array(
-                    'meta' => $oMenuMeta->getCode()
-                );
-            }
-        }
+        $aTmplVarsMeta = $this->getSnippetMenuVars ($iProfile, $bPublic);
 
         // generate html
         return array (
@@ -142,6 +127,43 @@ class BxBaseModProfileTemplate extends BxBaseModGeneralTemplate
         );
     }
 
+    function isProfilePublic($aData)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $oPrivacy = BxDolPrivacy::getObjectInstance($CNF['OBJECT_PRIVACY_VIEW']);
+        if ($oPrivacy && !$oPrivacy->check($aData[$CNF['FIELD_ID']]) && !$oPrivacy->isPartiallyVisible($aData[$CNF['FIELD_ALLOW_VIEW_TO']]))
+            return false;
+        return true;
+    }
+
+    function getSnippetMenuVars ($iProfileId, $bPublic = null)
+    {
+        if (!($oProfile = BxDolProfile::getInstance($iProfileId)))
+            return array();
+        
+        $CNF = &$this->_oConfig->CNF;
+        
+        if (null === $bPublic) {
+            $aData = $this->getModule()->serviceGetContentInfoById($oProfile->getContentId());
+            $bPublic = $this->isProfilePublic($aData);
+        }
+        
+        $aTmplVarsMeta = array();
+        if (!empty($CNF['OBJECT_MENU_SNIPPET_META'])) {
+            $oMenuMeta = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_SNIPPET_META'], $this);
+            if($oMenuMeta) {
+                $oMenuMeta->setContentId($oProfile->getContentId());
+                $oMenuMeta->setContentPublic($bPublic);
+                $aTmplVarsMeta = array(
+                    'meta' => $oMenuMeta->getCode()
+                );
+            }
+        }
+
+        return $aTmplVarsMeta;
+    }
+
     /**
      * Get profile cover
      */

+ 2 - 0
modules/base/profile/template/css/main.css

@@ -26,6 +26,7 @@
 }
 
 /* unit meta */
+.sys-author ul.bx-menu-custom li .bx-base-profile-unit-meta-item,
 .bx-base-general-unit-meta ul.bx-menu-custom li .bx-base-profile-unit-meta-item {
 	height: 1.625rem;
 	padding-left: 0.5rem;
@@ -33,6 +34,7 @@
 	line-height: 1.625rem;	
 }
 
+.sys-author ul.bx-menu-custom li:first-child .bx-base-profile-unit-meta-item,
 .bx-base-general-unit-meta ul.bx-menu-custom li:first-child .bx-base-profile-unit-meta-item {
     padding-left: 0px;
 }

+ 12 - 2
modules/base/text/classes/BxBaseModTextTemplate.php

@@ -51,7 +51,7 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
             return '';
 
         $sName = $oProfile->getDisplayName();
-        $sAddon = $sFuncAuthorAddon ? $this->$sFuncAuthorAddon($aData, $oProfile) : '';
+        $sAddon = $sFuncAuthorAddon ? $this->$sFuncAuthorAddon($aData, $oProfile) : '';        
 
         $aVars = array (
             'author_url' => $oProfile->getUrl(),
@@ -135,7 +135,9 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
 
     function getAuthorDesc ($aData)
     {
-        return '';
+        if (!($a = $this->getAuthorSnippetMenu($aData)) || !isset($a['meta']))
+            return '';
+        return $a['meta'];
     }
     
     function getContextDesc ($aData)
@@ -143,6 +145,14 @@ class BxBaseModTextTemplate extends BxBaseModGeneralTemplate
         return '';
     }
 
+    function getAuthorSnippetMenu ($aData)
+    {
+        $CNF = &$this->getModule()->_oConfig->CNF;
+        if (!($oProfile = BxDolProfile::getInstance($aData[$CNF['FIELD_AUTHOR']])))
+            return array();
+        return bx_srv($oProfile->getModule(), 'get_snippet_menu_vars', array($oProfile->id()));
+    }
+    
     function getAuthorAddon ($aData, $oProfile)
     {
         $CNF = &$this->getModule()->_oConfig->CNF;