Răsfoiți Sursa

Ticket #3694 - Minor fixes: Issue with Pinned comments.

AntonLV 4 ani în urmă
părinte
comite
0451b27d07

+ 1 - 0
inc/classes/BxDolCmts.php

@@ -1840,6 +1840,7 @@ class BxDolCmts extends BxDolFactory implements iBxDolReplaceable, iBxDolContent
         $aBp['parent_id'] = isset($aBp['parent_id']) ? $aBp['parent_id'] : 0;
         $aBp['start'] = isset($aBp['start']) ? $aBp['start'] : -1;
         $aBp['per_view'] = isset($aBp['per_view']) ? $aBp['per_view'] : -1;
+        $aBp['pinned'] = isset($aBp['pinned']) ? (int)$aBp['pinned'] : 0;
         $aBp['order']['by'] = isset($aBp['order_by']) ? $aBp['order_by'] : $this->_aOrder['by'];
         $aBp['order']['way'] = isset($aBp['order_way']) ? $aBp['order_way'] : $this->_aOrder['way'];
 

+ 4 - 4
template/scripts/BxBaseCmts.php

@@ -151,7 +151,7 @@ class BxBaseCmts extends BxDolCmts
         //add live update
 
         $sComments = $this->getComments($aBp, $aDp);
-        $sCommentsPinned = $this->getCommentsPinned($aBp, $aDp);
+        $sCommentsPinned = $this->getCommentsPinned(array_merge($aBp, ['pinned' => 1]), $aDp);
         $sContentBefore = $this->_getContentBefore($aBp, $aDp);
         $sContentAfter = $this->_getContentAfter($aBp, $aDp);
         $sPostFormTop = $this->getFormBoxPost($aBp, array_merge($aDp, array('type' => $this->_sDisplayType, 'position' => BX_CMT_PFP_TOP)));
@@ -345,7 +345,7 @@ class BxBaseCmts extends BxDolCmts
         if(!empty($aDp['class_comment_content']))
             $sClassCnt .= ' ' . $aDp['class_comment_content'];
 
-        $sActions = $this->_getActionsBox($aCmt, $aDp);
+        $sActions = $this->_getActionsBox($aCmt, $aBp, $aDp);
 
         $aTmplReplyTo = array();
         if((int)$aCmt['cmt_parent_id'] != 0) {
@@ -916,7 +916,7 @@ class BxBaseCmts extends BxDolCmts
         ));
     }
 
-    protected function _getActionsBox(&$aCmt, $aDp = array())
+    protected function _getActionsBox(&$aCmt, $aBp = [], $aDp = [])
     {
     	$bViewOnly = isset($aDp['view_only']) && $aDp['view_only'] === true;
     	$bDynamicMode = isset($aDp['dynamic_mode']) && $aDp['dynamic_mode'] === true;
@@ -924,7 +924,7 @@ class BxBaseCmts extends BxDolCmts
         $sMenuActions = '';
         if(!$bViewOnly) {
             $oMenuActions = BxDolMenu::getObjectInstance($this->_sMenuObjActions);
-            $oMenuActions->setCmtsData($this, $aCmt['cmt_id']);
+            $oMenuActions->setCmtsData($this, $aCmt['cmt_id'], $aBp, $aDp);
             $oMenuActions->setDynamicMode($bDynamicMode);
             $sMenuActions = $oMenuActions->getCode();
         }

+ 31 - 7
template/scripts/BxBaseCmtsMenuActions.php

@@ -15,6 +15,8 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
 {
     protected $_oCmts;
     protected $_aCmt;
+    protected $_aBp;
+    protected $_aDp;
 
     protected $_bShowTitles;
 
@@ -22,10 +24,13 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
     {
         parent::__construct ($aObject, $oTemplate);
 
+        $this->_aBp = [];
+        $this->_aDp = [];
+
         $this->_bShowTitles = false;
     }
 
-    public function setCmtsData($oCmts, $iCmtId)
+    public function setCmtsData($oCmts, $iCmtId, $aBp = [], $aDp = [])
     {
         if(empty($oCmts) || empty($iCmtId))
             return;
@@ -33,6 +38,9 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
         $this->_oCmts = $oCmts;
         $this->_aCmt = $oCmts->getCommentRow($iCmtId);
 
+        $this->_aBp = $aBp;
+        $this->_aDp = $aDp;
+
         $sJsObject = $oCmts->getJsObjectName();
         $this->addMarkers(array(
             'js_object' => $sJsObject,
@@ -45,6 +53,22 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
         ));
     }
 
+    public function getMenuItems()
+    {
+        if((int)$this->_aCmt['cmt_pinned'] > 0 && !empty($this->_aBp['pinned']))
+            $this->_aObject['menu_items'] = [
+                'item-unpin' => [
+                    'name' => 'item-unpin', 
+                    'title' => '_sys_menu_item_title_cmts_item_unpin', 
+                    'link' => 'javascript:void(0)',
+                    'onclick' => 'javascript:{js_object}.cmtPin(this, {content_id}, 0)',
+                    'icon' => 'thumbtack'
+                ]
+            ];
+
+        return parent::getMenuItems();
+    }
+
     protected function _getMenuItemItemVote($aItem)
     {
         $oVote = $this->_oCmts->getVoteObject($this->_aCmt['cmt_unique_id']);
@@ -75,24 +99,24 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
     {
         $oScore = $this->_oCmts->getScoreObject($this->_aCmt['cmt_unique_id']);
         if(!$oScore)
-        	return false;
+            return false;
 
         $aScoresParams = array('dynamic_mode' => $this->_bDynamicMode);
         if($this->_bShowTitles)
-		    $aScoresParams['show_do_vote_label'] = true;
+            $aScoresParams['show_do_vote_label'] = true;
 
     	return $oScore->getElementInline($aScoresParams);
     }
 
-	protected function _getMenuItemItemReport($aItem)
+    protected function _getMenuItemItemReport($aItem)
     {
         $oReport = $this->_oCmts->getReportObject($this->_aCmt['cmt_unique_id']);
         if(!$oReport)
-        	return false;
+            return false;
 
         $aReportParams = array('dynamic_mode' => $this->_bDynamicMode);
         if($this->_bShowTitles)
-		    $aReportParams['show_do_report_label'] = true;
+            $aReportParams['show_do_report_label'] = true;
 
     	return $oReport->getElementInline($aReportParams);
     }
@@ -107,7 +131,7 @@ class BxBaseCmtsMenuActions extends BxTemplMenuCustom
         if(!parent::_isVisible($a))
             return false;
 
-        if((int)$this->_aCmt['cmt_pinned'] > 0 && !in_array($a['name'], array('item-pin', 'item-unpin', 'item-more')))
+        if((int)$this->_aCmt['cmt_pinned'] > 0 && !empty($this->_aBp['pinned']) && $a['name'] != 'item-unpin')
             return false;
 
         $sCheckFuncName = '';