AntonLV 9 лет назад
Родитель
Сommit
ab3fb31695

+ 12 - 0
modules/boonex/polls/classes/BxPollsModule.php

@@ -54,6 +54,18 @@ class BxPollsModule extends BxBaseModTextModule
         return $this->_serviceTemplateFunc('entryResults', $iContentId);
     }
 
+    /**
+     * PERMISSION METHODS
+     */
+    public function isAllowedVote($isPerformAction = false)
+    {
+        $aCheck = checkActionModule($this->_iProfileId, 'vote entry', $this->getName(), false);
+        if ($aCheck[CHECK_ACTION_RESULT] !== CHECK_ACTION_RESULT_ALLOWED)
+            return $aCheck[CHECK_ACTION_MESSAGE];
+
+        return CHECK_ACTION_RESULT_ALLOWED;
+    }
+
 
 	/**
      * INTERNAL METHODS

+ 6 - 1
modules/boonex/polls/classes/BxPollsVoteSubentries.php

@@ -92,7 +92,7 @@ class BxPollsVoteSubentries extends BxTemplVote
      */
     public function isAllowedVote($isPerformAction = false)
     {
-        return true;    //--- Everybody who can see the poll should be able to vote.
+        return $this->_oModule->isAllowedVote($isPerformAction)  === CHECK_ACTION_RESULT_ALLOWED;
     }
 
     /**
@@ -117,6 +117,11 @@ class BxPollsVoteSubentries extends BxTemplVote
     {
         return _t('_bx_polls_txt_subentry_vote_counter', $iCount);
     }
+
+    protected function _isShowDoVote($aParams, $isAllowedVote, $bCount)
+    {
+        return !isset($aParams['show_do_vote']) || $aParams['show_do_vote'] == true;
+    }
 }
 
 /** @} */

+ 1 - 0
modules/boonex/polls/install/langs/en.xml

@@ -50,6 +50,7 @@
 	<string name="_bx_polls_acl_action_create_entry"><![CDATA[Create Poll]]></string>
 	<string name="_bx_polls_acl_action_delete_entry"><![CDATA[Delete Poll]]></string>
 	<string name="_bx_polls_acl_action_view_entry"><![CDATA[View Poll]]></string>
+	<string name="_bx_polls_acl_action_vote_entry"><![CDATA[Vote Poll]]></string>
 	<string name="_bx_polls_acl_action_set_thumb"><![CDATA[Set Poll Thumbnail]]></string>
 	<string name="_bx_polls_acl_action_edit_any_entry"><![CDATA[Edit Any Poll]]></string>
 

+ 14 - 0
modules/boonex/polls/install/sql/enable.sql

@@ -244,6 +244,10 @@ INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`,
 ('bx_polls', 'view entry', NULL, '_bx_polls_acl_action_view_entry', '', 1, 0);
 SET @iIdActionEntryView = LAST_INSERT_ID();
 
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_polls', 'vote entry', NULL, '_bx_polls_acl_action_vote_entry', '', 1, 0);
+SET @iIdActionEntryVote = LAST_INSERT_ID();
+
 INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
 ('bx_polls', 'set thumb', NULL, '_bx_polls_acl_action_set_thumb', '', 1, 3);
 SET @iIdActionSetThumb = LAST_INSERT_ID();
@@ -286,6 +290,16 @@ INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES
 (@iAdministrator, @iIdActionEntryView),
 (@iPremium, @iIdActionEntryView),
 
+-- entry vote
+(@iUnauthenticated, @iIdActionEntryVote),
+(@iAccount, @iIdActionEntryVote),
+(@iStandard, @iIdActionEntryVote),
+(@iUnconfirmed, @iIdActionEntryVote),
+(@iPending, @iIdActionEntryVote),
+(@iModerator, @iIdActionEntryVote),
+(@iAdministrator, @iIdActionEntryVote),
+(@iPremium, @iIdActionEntryVote),
+
 -- set entry thumb
 (@iStandard, @iIdActionSetThumb),
 (@iModerator, @iIdActionSetThumb),

+ 2 - 1
modules/boonex/russian/data/langs/bx_polls/ru.xml

@@ -50,8 +50,9 @@
 	<string name="_bx_polls_acl_action_create_entry"><![CDATA[Создать голосование]]></string>
 	<string name="_bx_polls_acl_action_delete_entry"><![CDATA[Удалить голосование]]></string>
 	<string name="_bx_polls_acl_action_view_entry"><![CDATA[Просмотреть голосование]]></string>
+	<string name="_bx_polls_acl_action_vote_entry"><![CDATA[Принять участие в голосовании]]></string>
 	<string name="_bx_polls_acl_action_set_thumb"><![CDATA[Назначить значок голосования]]></string>
-	<string name="_bx_polls_acl_action_edit_any_entry"><![CDATA[Редактировать любую голосование]]></string>
+	<string name="_bx_polls_acl_action_edit_any_entry"><![CDATA[Редактировать любое голосование]]></string>
 
 	<string name="_bx_polls_page_title_sys_create_entry"><![CDATA[Новая голосование]]></string>
 	<string name="_bx_polls_page_title_create_entry"><![CDATA[Новая голосование]]></string>

+ 23 - 6
template/scripts/BxBaseVote.php

@@ -218,11 +218,9 @@ class BxBaseVote extends BxDolVote
     	$aParams = array_merge($this->_aElementDefaults[$this->_sType], $aParams);
     	$bDynamicMode = isset($aParams['dynamic_mode']) && $aParams['dynamic_mode'] === true;
 
-        $bShowDoVote = !isset($aParams['show_do_vote']) || $aParams['show_do_vote'] == true;
+        
         $bShowDoVoteAsButtonSmall = $this->_bLike && isset($aParams['show_do_vote_as_button_small']) && $aParams['show_do_vote_as_button_small'] == true;
         $bShowDoVoteAsButton = $this->_bLike && !$bShowDoVoteAsButtonSmall && isset($aParams['show_do_vote_as_button']) && $aParams['show_do_vote_as_button'] == true;
-        $bShowCounter = isset($aParams['show_counter']) && $aParams['show_counter'] === true;
-        $bShowLegend = !$this->_bLike && isset($aParams['show_legend']) && $aParams['show_legend'] === true;
 
         $sMethodDoVote = '_getDoVote' . ucfirst($this->_sType);
         if(!method_exists($this, $sMethodDoVote))
@@ -237,7 +235,7 @@ class BxBaseVote extends BxDolVote
         $aParams['is_voted'] = $this->isPerformed($iObjectId, $iAuthorId) ? true : false;
 
         //--- Do Vote
-        $bTmplVarsDoVote = $bShowDoVote && (!$this->_bLike || $bCount || $isAllowedVote);
+        $bTmplVarsDoVote = $this->_isShowDoVote($aParams, $isAllowedVote, $bCount);
         $aTmplVarsDoVote = array();
         if($bTmplVarsDoVote)
         	$aTmplVarsDoVote = array(
@@ -246,7 +244,7 @@ class BxBaseVote extends BxDolVote
 			);
 
         //--- Counter
-        $bTmplVarsCounter = $bShowCounter && ($bCount || $isAllowedVote);
+        $bTmplVarsCounter = $this->_isShowCounter($aParams, $isAllowedVote, $bCount);
         $aTmplVarsCounter = array();
         if($bTmplVarsCounter)
         	$aTmplVarsCounter = array(
@@ -259,7 +257,7 @@ class BxBaseVote extends BxDolVote
         	);
 
 		//--- Legend
-		$bTmplVarsLegend = $bShowLegend;
+		$bTmplVarsLegend = $this->_isShowLegend($aParams, $isAllowedVote, $bCount);
 		$aTmplVarsLegend = array();
 		if($bTmplVarsLegend)
 			$aTmplVarsLegend = array(
@@ -412,6 +410,25 @@ class BxBaseVote extends BxDolVote
             'bx_repeat:list' => $aTmplUsers
         ));
     }
+
+    protected function _isShowDoVote($aParams, $isAllowedVote, $bCount)
+    {
+        $bShowDoVote = !isset($aParams['show_do_vote']) || $aParams['show_do_vote'] == true;
+
+        return $bShowDoVote && (!$this->_bLike || $isAllowedVote || $bCount);
+    }
+
+    protected function _isShowCounter($aParams, $isAllowedVote, $bCount)
+    {
+        $bShowCounter = isset($aParams['show_counter']) && $aParams['show_counter'] === true;
+
+        return $bShowCounter && ($isAllowedVote || $bCount);
+    }
+
+    protected function _isShowLegend($aParams, $isAllowedVote, $bCount)
+    {
+        return !$this->_bLike && isset($aParams['show_legend']) && $aParams['show_legend'] === true;
+    }
 }
 
 /** @} */