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

Merge branch 'master' of https://github.com/unaio/una

AlexeyUna 7 лет назад
Родитель
Сommit
49a135a4c1
84 измененных файлов с 812 добавлено и 106 удалено
  1. 209 0
      inc/classes/BxDolPlayer.php
  2. 37 0
      inc/classes/BxDolPlayerQuery.php
  3. 0 0
      install/sql/system.sql
  4. 1 1
      modules/base/general/classes/BxBaseModGeneralTemplate.php
  5. 12 1
      modules/base/groups/classes/BxBaseModGroupsModule.php
  6. 1 1
      modules/base/text/classes/BxBaseModTextModule.php
  7. 2 2
      modules/base/text/classes/BxBaseModTextPageEntry.php
  8. 5 1
      modules/boonex/albums/classes/BxAlbumsConfig.php
  9. 48 2
      modules/boonex/albums/classes/BxAlbumsModule.php
  10. 1 1
      modules/boonex/albums/classes/BxAlbumsTemplate.php
  11. 4 0
      modules/boonex/albums/install/langs/en.xml
  12. 2 0
      modules/boonex/channels/classes/BxCnlConfig.php
  13. 2 0
      modules/boonex/channels/install/langs/en.xml
  14. 21 0
      modules/boonex/decorous/data/template/system/scripts/BxTemplPlayerHtml5.php
  15. 2 0
      modules/boonex/directory/classes/BxDirConfig.php
  16. 2 0
      modules/boonex/directory/install/langs/en.xml
  17. 4 2
      modules/boonex/english/data/langs/system/en.xml
  18. 11 8
      modules/boonex/events/classes/BxEventsConfig.php
  19. 2 0
      modules/boonex/events/install/langs/en.xml
  20. 2 1
      modules/boonex/events/install/sql/install.sql
  21. 13 11
      modules/boonex/files/classes/BxFilesConfig.php
  22. 2 0
      modules/boonex/files/install/langs/en.xml
  23. 2 0
      modules/boonex/forum/classes/BxForumConfig.php
  24. 2 0
      modules/boonex/forum/install/langs/en.xml
  25. 2 0
      modules/boonex/glossary/classes/BxGlsrConfig.php
  26. 2 0
      modules/boonex/glossary/install/langs/en.xml
  27. 14 12
      modules/boonex/groups/classes/BxGroupsConfig.php
  28. 2 0
      modules/boonex/groups/install/langs/en.xml
  29. 21 0
      modules/boonex/lucid/data/template/system/scripts/BxTemplPlayerHtml5.php
  30. 4 2
      modules/boonex/market/classes/BxMarketConfig.php
  31. 2 0
      modules/boonex/market/install/langs/en.xml
  32. 1 0
      modules/boonex/notifications/classes/BxNtfsDb.php
  33. 21 0
      modules/boonex/ocean/data/template/system/scripts/BxTemplPlayerHtml5.php
  34. 2 0
      modules/boonex/organizations/classes/BxOrgsConfig.php
  35. 2 0
      modules/boonex/organizations/install/langs/en.xml
  36. 2 0
      modules/boonex/persons/classes/BxPersonsConfig.php
  37. 2 0
      modules/boonex/persons/install/langs/en.xml
  38. 11 9
      modules/boonex/photos/classes/BxPhotosConfig.php
  39. 2 0
      modules/boonex/photos/install/langs/en.xml
  40. 14 12
      modules/boonex/polls/classes/BxPollsConfig.php
  41. 2 0
      modules/boonex/polls/install/langs/en.xml
  42. 2 0
      modules/boonex/posts/classes/BxPostsConfig.php
  43. 2 0
      modules/boonex/posts/install/langs/en.xml
  44. 1 1
      modules/boonex/posts/install/sql/enable.sql
  45. 21 0
      modules/boonex/protean/data/template/system/scripts/BxTemplPlayerHtml5.php
  46. 1 1
      modules/boonex/protean/install/sql/install.sql
  47. 4 0
      modules/boonex/russian/data/langs/bx_albums/ru.xml
  48. 2 0
      modules/boonex/russian/data/langs/bx_channels/ru.xml
  49. 2 0
      modules/boonex/russian/data/langs/bx_events/ru.xml
  50. 2 0
      modules/boonex/russian/data/langs/bx_files/ru.xml
  51. 2 0
      modules/boonex/russian/data/langs/bx_forum/ru.xml
  52. 2 0
      modules/boonex/russian/data/langs/bx_glossary/ru.xml
  53. 2 0
      modules/boonex/russian/data/langs/bx_groups/ru.xml
  54. 2 0
      modules/boonex/russian/data/langs/bx_market/ru.xml
  55. 2 0
      modules/boonex/russian/data/langs/bx_organizations/ru.xml
  56. 2 0
      modules/boonex/russian/data/langs/bx_persons/ru.xml
  57. 2 0
      modules/boonex/russian/data/langs/bx_photos/ru.xml
  58. 2 0
      modules/boonex/russian/data/langs/bx_polls/ru.xml
  59. 2 0
      modules/boonex/russian/data/langs/bx_posts/ru.xml
  60. 2 0
      modules/boonex/russian/data/langs/bx_shopify/ru.xml
  61. 2 0
      modules/boonex/russian/data/langs/bx_snipcart/ru.xml
  62. 2 0
      modules/boonex/russian/data/langs/bx_spaces/ru.xml
  63. 2 0
      modules/boonex/russian/data/langs/bx_timeline/ru.xml
  64. 2 0
      modules/boonex/russian/data/langs/bx_videos/ru.xml
  65. 4 2
      modules/boonex/russian/data/langs/system/ru.xml
  66. 5 3
      modules/boonex/shopify/classes/BxShopifyConfig.php
  67. 2 0
      modules/boonex/shopify/install/langs/en.xml
  68. 2 0
      modules/boonex/snipcart/classes/BxSnipcartConfig.php
  69. 2 0
      modules/boonex/snipcart/install/langs/en.xml
  70. 3 0
      modules/boonex/spaces/classes/BxSpacesConfig.php
  71. 2 0
      modules/boonex/spaces/install/langs/en.xml
  72. 2 1
      modules/boonex/spaces/install/sql/install.sql
  73. 2 0
      modules/boonex/timeline/classes/BxTimelineConfig.php
  74. 82 1
      modules/boonex/timeline/classes/BxTimelineModule.php
  75. 3 0
      modules/boonex/timeline/classes/BxTimelineResponse.php
  76. 1 1
      modules/boonex/timeline/classes/BxTimelineTemplate.php
  77. 2 0
      modules/boonex/timeline/install/langs/en.xml
  78. 13 11
      modules/boonex/videos/classes/BxVideosConfig.php
  79. 1 1
      modules/boonex/videos/classes/BxVideosModule.php
  80. 1 1
      modules/boonex/videos/classes/BxVideosTemplate.php
  81. 2 0
      modules/boonex/videos/install/langs/en.xml
  82. 2 2
      template/css/uploaders.css
  83. 12 15
      template/scripts/BxBaseFunctions.php
  84. 111 0
      template/scripts/BxBasePlayerHTML5.php

+ 209 - 0
inc/classes/BxDolPlayer.php

@@ -0,0 +1,209 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaCore UNA Core
+ * @{
+ */
+
+/**
+ * Standard Player view.
+ * @see BxDolPlayer::attachPlayer
+ */
+define('BX_PLAYER_STANDARD', 1);
+
+/**
+ * Mini Player view. If not supported by player, standard view is used.
+ * @see BxDolPlayer::attachPlayer
+ */
+define('BX_PLAYER_MINI', 3);
+
+/**
+ * Player view in embed. If not supported by player, standard view is used.
+ * @see BxDolPlayer::attachPlayer
+ */
+define('BX_PLAYER_EMBED', 2);
+
+/**
+ * Audio/Video player integration.
+ *
+ * Site owner can choose which audio/video can be user on the site.
+ *
+ * Default player is stored in 'sys_player_default' setting option.
+ *
+ * @section player_create Creating the Editor object:
+ *
+ *
+ * Add record to 'sys_objects_player' table:
+ *
+ * - object: name of the object, in the format: vendor prefix, underscore, module prefix, underscore, internal identifier or nothing; 
+ * - title: title of the player, displayed in the studio.
+ * - skin: player skin, if player suports custom/multiple skins.
+ * - override_class_name: user defined class name which is derived from one of base player classes.
+ * - override_class_file: the location of the user defined class, leave it empty if class is located in system folders.
+ *
+ *
+ * @section example Example of usage
+ *
+ * Display player
+ *
+ * @code
+ *
+ *  $oPlayer = BxDolPlayer::getObjectInstance(); // get default player object instance
+ *  if ($oPlayer) // check if player is available for using
+ *      echo $oPlayer->getCodeVideo (BX_PLAYER_STANDARD, array(
+ *          'poster' => $sUrlPoster, // optional, but very 
+ *          'mp4' => $sUrlMP4, // or array of files, 
+ *                   for example: array('standard' => $sUrl480, 'hd' => $sUrl720)
+ *          'webm' => $sUrlWebM, // optional, mp4 format is enough for all moders browsers
+ *          'attrs' => $aAttrs,  // optional, not supported by all player implementations
+ *          'styles' => 'width:100%; height:auto;', // optional, not supported by all 
+ *                                                     players implementations
+ *      )); // output HTML player implementation
+ * @endcode
+ *
+ */
+class BxDolPlayer extends BxDolFactory implements iBxDolFactoryObject
+{
+    protected $_sObject;
+    protected $_aObject;
+    protected $_sConfCustom = '';
+    protected $_sPluginsCustom = false;
+
+    protected $_sSkin;
+    protected $_aSkins;
+
+    protected function __construct($aObject)
+    {
+        parent::__construct();
+
+        $this->_sObject = $aObject['object'];
+        $this->_aObject = $aObject;
+        
+        $this->_sSkin = !empty($aObject['skin']) ? $aObject['skin']: '';
+        $this->_aSkins = array();
+    }
+
+    /**
+     * Get player object instance by object name
+     * @param $sObject object name
+     * @return object instance or false on error
+     */
+    static public function getObjectInstance($sObject = false, $oTemplate = false)
+    {
+        if (!$sObject)
+            $sObject = getParam('sys_player_default');
+
+        if (isset($GLOBALS['bxDolClasses']['BxDolPlayer!'.$sObject]))
+            return $GLOBALS['bxDolClasses']['BxDolPlayer!'.$sObject];
+
+        $aObject = BxDolPlayerQuery::getPlayerObject($sObject);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        if (empty($aObject['override_class_name']))
+            return false;
+
+        $sClass = $aObject['override_class_name'];
+        if (!empty($aObject['override_class_file']))
+            require_once(BX_DIRECTORY_PATH_ROOT . $aObject['override_class_file']);
+
+        $o = new $sClass($aObject, $oTemplate);
+
+        return ($GLOBALS['bxDolClasses']['BxDolPlayer!'.$sObject] = $o);
+    }
+
+    /**
+     * Get object name
+     */
+    public function getObjectName ()
+    {
+        return $this->_sObject;
+    }
+
+    /**
+     * Set custom player configuration options
+     */
+    public function setCustomConf ($s)
+    {
+        $this->_sConfCustom = $s;
+    }
+
+    /**
+     * Set custom plugins
+     */
+    public function setCustomPlugins ($sPlugins)
+    {
+        $this->_sPluginsCustom = $sPlugins;
+    }
+
+    /**
+     * Get a list of available skins.
+     */
+    public function getSkins($bFullInfo = false)
+    {
+        if($bFullInfo)
+            return $this->_aSkins;
+
+        $aResults = array();
+        foreach($this->_aSkins as $aSkin)
+            $aResults[] = array('key' => $aSkin['name'], 'value' => _t($aSkin['title']));
+
+        return $aResults;
+    }
+
+    public function setSkin($sSkin)
+    {
+        if(!in_array($sSkin, array_keys($this->_aSkins)))
+            return;
+
+        $this->_sSkin = $sSkin;
+    }
+
+    /**
+     * Get player HTML code
+     * @param $iViewMode - player view mode: BX_PLAYER_STANDARD, BX_PLAYER_MINI, BX_PLAYER_EMBED
+     * @param $aParams - player params: mp3, ogg, attrs, styles - See usage example.
+     * @param $bDynamicMode - is AJAX mode or not, the HTML with player is loaded dynamically.
+     */
+    public function getCodeAudio ($iViewMode, $aParams, $bDynamicMode = false)
+    {
+        // override this function in particular player class
+    }
+    
+    /**
+     * Get player HTML code
+     * @param $iViewMode - player view mode: BX_PLAYER_STANDARD, BX_PLAYER_MINI, BX_PLAYER_EMBED
+     * @param $aParams - player params: poster, mp4, webm, attrs, styles - See usage example.
+     * @param $bDynamicMode - is AJAX mode or not, the HTML with player is loaded dynamically.
+     */
+    public function getCodeVideo ($iViewMode, $aParams, $bDynamicMode = false)
+    {
+        // override this function in particular player class
+    }
+
+    /**
+     * Add css/js files which are needed for player display and functionality.
+     */
+    protected function _addJsCss ($bDynamicMode = false)
+    {
+        // override this function in particular player class
+    }
+
+    /**
+     * Replace provided markers string.
+     * @param $s - string to replace markers in
+     * @param $a - markers array
+     * @return string with replaces markers
+     */
+    protected function _replaceMarkers ($s, $a)
+    {
+        if (empty($s) || empty($a) || !is_array($a))
+            return $s;
+        return bx_replace_markers($s, $a);
+    }
+
+}
+
+/** @} */

+ 37 - 0
inc/classes/BxDolPlayerQuery.php

@@ -0,0 +1,37 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaCore UNA Core
+ * @{
+ */
+
+/**
+ * Database queries for player objects.
+ * @see BxDolPlayer
+ */
+class BxDolPlayerQuery extends BxDolDb
+{
+    protected $_aObject;
+
+    public function __construct($aObject)
+    {
+        parent::__construct();
+        $this->_aObject = $aObject;
+    }
+
+    static public function getPlayerObject ($sObject)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_player` WHERE `object` = ?", $sObject);
+        $aObject = $oDb->getRow($sQuery);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        return $aObject;
+    }
+
+}
+
+/** @} */

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
install/sql/system.sql


+ 1 - 1
modules/base/general/classes/BxBaseModGeneralTemplate.php

@@ -287,7 +287,7 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
             if($isVideo) {
                 $sVideoUrl = $oStorage->getFileUrlById($a['id']);
                 $aVideoSize = $aTranscodersVideo['mp4_hd']->getVideoSize($sVideoUrl);
-                if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+                if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
                     $sVideoUrlHd = $aTranscodersVideo['mp4_hd']->getFileUrl($a['id']);
             }
 

+ 12 - 1
modules/base/groups/classes/BxBaseModGroupsModule.php

@@ -420,7 +420,7 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
     {
     	$sModule = $this->_aModule['name'];
 
-        $aSettingsTypes = array('follow_context');
+        $aSettingsTypes = array('follow_member', 'follow_context');
         if($this->serviceActAsProfile())
             $aSettingsTypes = array('personal', 'follow_member');
 
@@ -428,6 +428,10 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
             'handlers' => array(
                 array('group' => $sModule . '_vote', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVote', 'module_name' => $sModule, 'module_method' => 'get_notifications_vote', 'module_class' => 'Module'),
                 array('group' => $sModule . '_vote', 'type' => 'delete', 'alert_unit' => $sModule, 'alert_action' => 'undoVote'),
+                
+                array('group' => $sModule . '_score_up', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVoteUp', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_up', 'module_class' => 'Module'),
+
+                array('group' => $sModule . '_score_down', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVoteDown', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_down', 'module_class' => 'Module'),
 
                 array('group' => $sModule . '_fan_added', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'fan_added', 'module_name' => $sModule, 'module_method' => 'get_notifications_fan_added', 'module_class' => 'Module'),
 
@@ -437,6 +441,10 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
             ),
             'settings' => array(
                 array('group' => 'vote', 'unit' => $sModule, 'action' => 'doVote', 'types' => $aSettingsTypes),
+
+                array('group' => 'score_up', 'unit' => $sModule, 'action' => 'doVoteUp', 'types' => $aSettingsTypes),
+
+                array('group' => 'score_down', 'unit' => $sModule, 'action' => 'doVoteDown', 'types' => $aSettingsTypes),
                 
                 array('group' => 'fan', 'unit' => $sModule, 'action' => 'fan_added', 'types' => $aSettingsTypes),
 
@@ -448,6 +456,9 @@ class BxBaseModGroupsModule extends BxBaseModProfileModule
                 array('unit' => $sModule, 'action' => 'doVote'),
                 array('unit' => $sModule, 'action' => 'undoVote'),
 
+                array('unit' => $sModule, 'action' => 'doVoteUp'),
+                array('unit' => $sModule, 'action' => 'doVoteDown'),
+
                 array('unit' => $sModule, 'action' => 'fan_added'),
 
                 array('unit' => $sModule, 'action' => 'join_request'),

+ 1 - 1
modules/base/text/classes/BxBaseModTextModule.php

@@ -401,7 +401,7 @@ class BxBaseModTextModule extends BxBaseModGeneralModule implements iBxDolConten
             $aVideoSize = $oTcMp4Hd->getVideoSize($sVideoUrl);
 
             $sVideoUrlHd = '';
-            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
                 $sVideoUrlHd = $oTcMp4Hd->getFileUrl($a['id']);
 
             $aResults[$a['id']] = array(

+ 2 - 2
modules/base/text/classes/BxBaseModTextPageEntry.php

@@ -53,10 +53,10 @@ class BxBaseModTextPageEntry extends BxBaseModGeneralPageEntry
         if($oInformer && ($bLoggedOwner || $bLoggedModerator)) {
             $iNow = time();
             $bFieldPublished = isset($CNF['FIELD_PUBLISHED']);
-            $sStatus = isset($CNF['FIELD_STATUS']) ? $this->_aContentInfo[$CNF['FIELD_STATUS']] : '';
+            $sStatus = isset($CNF['FIELD_STATUS']) && isset($this->_aContentInfo[$CNF['FIELD_STATUS']]) ? $this->_aContentInfo[$CNF['FIELD_STATUS']] : '';
 
             //--- Display 'processing' informer if an item was already published but awaiting/failed to be processed.
-            if(!$bFieldPublished || $this->_aContentInfo[$CNF['FIELD_PUBLISHED']] <= $iNow) {
+            if(!$bFieldPublished || (isset($this->_aContentInfo[$CNF['FIELD_PUBLISHED']]) && $this->_aContentInfo[$CNF['FIELD_PUBLISHED']] <= $iNow)) {
                 if(!empty($CNF['INFORMERS']['processing']) && isset($CNF['INFORMERS']['processing']['map'][$sStatus])) {
                     $aInformer = $CNF['INFORMERS']['processing'];
                     $aInformers[] = array ('name' => $aInformer['name'], 'msg' => _t($aInformer['map'][$sStatus]['msg']), 'type' => $aInformer['map'][$sStatus]['type']);

+ 5 - 1
modules/boonex/albums/classes/BxAlbumsConfig.php

@@ -156,14 +156,18 @@ class BxAlbumsConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_albums_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_albums_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_albums_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_albums_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_albums_txt_sample_score_down_single',
                 'txt_sample_action_changed' => '_bx_albums_txt_sample_action_changed',
                 'txt_media_single' => '_bx_albums_txt_media_single',
                 'txt_media_comment_single' => '_bx_albums_txt_media_comment_single',
             	'txt_media_vote_single' => '_bx_albums_txt_media_vote_single',
+                'txt_media_score_up_single' => '_bx_albums_txt_media_score_up_single',
+                'txt_media_score_down_single' => '_bx_albums_txt_media_score_down_single',
             	'form_field_author' => '_bx_albums_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_albums_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_albums_grid_txt_account_manager',
-				'filter_item_active' => '_bx_albums_grid_filter_item_title_adm_active',
+                'filter_item_active' => '_bx_albums_grid_filter_item_title_adm_active',
             	'filter_item_hidden' => '_bx_albums_grid_filter_item_title_adm_hidden',
             	'filter_item_select_one_filter1' => '_bx_albums_grid_filter_item_title_adm_select_one_filter1',
             	'menu_item_manage_my' => '_bx_albums_menu_item_title_manage_my',

+ 48 - 2
modules/boonex/albums/classes/BxAlbumsModule.php

@@ -451,12 +451,18 @@ class BxAlbumsModule extends BxBaseModTextModule
 
             array('group' => $sModule . '_vote_media', 'type' => 'insert', 'alert_unit' => $sModule . '_media', 'alert_action' => 'doVote', 'module_name' => $sModule, 'module_method' => 'get_notifications_vote_media', 'module_class' => 'Module', 'module_event_privacy' => $sEventPrivacy),
             array('group' => $sModule . '_vote_media', 'type' => 'delete', 'alert_unit' => $sModule . '_media', 'alert_action' => 'undoVote'),
+            
+            array('group' => $sModule . '_score_up_media', 'type' => 'insert', 'alert_unit' => $sModule . '_media', 'alert_action' => 'doVoteUp', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_up_media', 'module_class' => 'Module', 'module_event_privacy' => $sEventPrivacy),
+
+            array('group' => $sModule . '_score_down_media', 'type' => 'insert', 'alert_unit' => $sModule . '_media', 'alert_action' => 'doVoteDown', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_down_media', 'module_class' => 'Module', 'module_event_privacy' => $sEventPrivacy),
         ));
 
         $aResult['settings'] = array_merge($aResult['settings'], array(
             array('group' => 'content', 'unit' => $sModule, 'action' => 'medias_added', 'types' => array('follow_member', 'follow_context')),
             array('group' => 'comment', 'unit' => $sModule . '_media', 'action' => 'commentPost', 'types' => array('personal', 'follow_member', 'follow_context')),
-            array('group' => 'vote', 'unit' => $sModule . '_media', 'action' => 'doVote', 'types' => array('personal', 'follow_member', 'follow_context'))
+            array('group' => 'vote', 'unit' => $sModule . '_media', 'action' => 'doVote', 'types' => array('personal', 'follow_member', 'follow_context')),
+            array('group' => 'score_up', 'unit' => $sModule . '_media', 'action' => 'doVoteUp', 'types' => array('personal', 'follow_member', 'follow_context')),
+            array('group' => 'score_down', 'unit' => $sModule . '_media', 'action' => 'doVoteDown', 'types' => array('personal', 'follow_member', 'follow_context'))
         ));
 
         $aResult['alerts'] = array_merge($aResult['alerts'], array(
@@ -468,6 +474,9 @@ class BxAlbumsModule extends BxBaseModTextModule
 
             array('unit' => $sModule . '_media', 'action' => 'doVote'),
             array('unit' => $sModule . '_media', 'action' => 'undoVote'),
+
+            array('unit' => $sModule . '_media', 'action' => 'doVoteUp'),
+            array('unit' => $sModule . '_media', 'action' => 'doVoteDown'),
         ));
 
         return $aResult; 
@@ -557,6 +566,43 @@ class BxAlbumsModule extends BxBaseModTextModule
         );
     }
 
+    public function serviceGetNotificationsScoreUpMedia($aEvent)
+    {
+    	return $this->_serviceGetNotificationsScoreMedia('up', $aEvent);
+    }
+
+    public function serviceGetNotificationsScoreDownMedia($aEvent)
+    {
+    	return $this->_serviceGetNotificationsScoreMedia('down', $aEvent);
+    }
+
+    protected function _serviceGetNotificationsScoreMedia($sType, $aEvent)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+    	$iMediaId = (int)$aEvent['object_id'];
+    	$aMediaInfo = $this->_oDb->getMediaInfoById($iMediaId);
+        if(empty($aMediaInfo) || !is_array($aMediaInfo))
+            return array();
+
+        $oVote = BxDolScore::getObjectInstance($CNF['OBJECT_SCORES_MEDIA'], $iMediaId);
+        if(!$oVote || !$oVote->isEnabled())
+            return array();
+
+        $sEntryUrl = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_MEDIA'] . '&id=' . $aMediaInfo['id']);
+        $sEntryCaption = isset($aMediaInfo['title']) ? $aMediaInfo['title'] : _t('_bx_albums_media');
+
+        return array(
+            'entry_sample' => $CNF['T']['txt_media_single'],
+            'entry_url' => $sEntryUrl,
+            'entry_caption' => $sEntryCaption,
+            'entry_author' => $aMediaInfo['author'],
+            'subentry_sample' => $CNF['T']['txt_media_score_' . $sType . '_single'],
+            'subentry_url' => '',
+            'lang_key' => '', //may be empty or not specified. In this case the default one from Notification module will be used.
+        );
+    }
+
     public function actionEditMedia($iMediaId)
     {
         $CNF = &$this->_oConfig->CNF;
@@ -719,7 +765,7 @@ class BxAlbumsModule extends BxBaseModTextModule
             $aVideoSize = $oTcMp4Hd->getVideoSize($sVideoUrl);
 
             $sVideoUrlHd = '';
-            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
                 $sVideoUrlHd = $oTcMp4Hd->getFileUrl($aMedia['file_id']);
 
             $aOutput[$aMedia['id']] = array(

+ 1 - 1
modules/boonex/albums/classes/BxAlbumsTemplate.php

@@ -278,7 +278,7 @@ class BxAlbumsTemplate extends BxBaseModTextTemplate
             $aVideoSize = $aTranscodersVideo['mp4_hd']->getVideoSize($sVideoUrl);
 
             $sVideoUrlHd = '';
-            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+            if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
                 $sVideoUrlHd = $aTranscodersVideo['mp4_hd']->getFileUrl($aMediaInfo['file_id']);
 
             $aTmplVarsVideo = array (

+ 4 - 0
modules/boonex/albums/install/langs/en.xml

@@ -242,10 +242,14 @@
     <string name="_bx_albums_txt_sample_single_with_article"><![CDATA[an album]]></string>
     <string name="_bx_albums_txt_sample_comment_single"><![CDATA[comment to album]]></string>
     <string name="_bx_albums_txt_sample_vote_single"><![CDATA[vote to album]]></string>
+    <string name="_bx_albums_txt_sample_score_up_single"><![CDATA[score up vote to album]]></string>
+    <string name="_bx_albums_txt_sample_score_down_single"><![CDATA[score down vote to album]]></string>
     <string name="_bx_albums_txt_sample_action_changed"><![CDATA[changed {0}]]></string>
     <string name="_bx_albums_txt_media_single"><![CDATA[image]]></string>
     <string name="_bx_albums_txt_media_comment_single"><![CDATA[image's comment]]></string>
     <string name="_bx_albums_txt_media_vote_single"><![CDATA[image's vote]]></string>
+    <string name="_bx_albums_txt_media_score_up_single"><![CDATA[image's score up vote]]></string>
+    <string name="_bx_albums_txt_media_score_down_single"><![CDATA[image's score down vote]]></string>
     <string name="_bx_albums_txt_media_title_alt"><![CDATA[{0}'s media]]></string>
     <string name="_bx_albums_txt_media_title_empty"><![CDATA[No Caption]]></string>
     <string name="_bx_albums_txt_media_album_link"><![CDATA[<a href="{0}">{1}</a> album by <a href="{2}">{3}</a>]]></string>

+ 2 - 0
modules/boonex/channels/classes/BxCnlConfig.php

@@ -142,6 +142,8 @@ class BxCnlConfig extends BxBaseModProfileConfig
                 'txt_sample_single_with_article' => '_bx_channels_txt_sample_single_with_article',
                 'txt_sample_comment_single' => '_bx_channels_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_channels_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_channels_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_channels_txt_sample_score_down_single',
                 'txt_private_group' => '_bx_channels_txt_private_channel',
                 'txt_ntfs_timeline_post_common' => '_bx_channels_txt_ntfs_timeline_post_common',
                 'form_field_author' => '_bx_channels_form_entry_input_author',

+ 2 - 0
modules/boonex/channels/install/langs/en.xml

@@ -225,6 +225,8 @@
 	<string name="_bx_channels_txt_sample_single_with_article"><![CDATA[a channel]]></string>
 	<string name="_bx_channels_txt_sample_comment_single"><![CDATA[comment to channel]]></string>
 	<string name="_bx_channels_txt_sample_vote_single"><![CDATA[vote to channel]]></string>
+        <string name="_bx_channels_txt_sample_score_up_single"><![CDATA[score up vote to channel]]></string>
+        <string name="_bx_channels_txt_sample_score_down_single"><![CDATA[score down vote to channel]]></string>
 
     <string name="_bx_channels_txt_ntfs_timeline_post_common"><![CDATA[New post <b class="bx-ntfs-content-entry">{subentry_sample}</b> in <b class="bx-ntfs-content-profile">{owner_name}</b> channel timeline]]></string>
     <string name="_bx_channels_ntfs_txt_subobject_added"><![CDATA[New content <b class="bx-ntfs-content-entry">{entry_caption}</b> in <b class="bx-ntfs-content-profile">{owner_name}</b> channel]]></string>

+ 21 - 0
modules/boonex/decorous/data/template/system/scripts/BxTemplPlayerHtml5.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolEditor
+ */
+class BxTemplPlayerHtml5 extends BxBasePlayerHTML5
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 2 - 0
modules/boonex/directory/classes/BxDirConfig.php

@@ -167,6 +167,8 @@ class BxDirConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_directory_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_directory_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_directory_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_directory_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_directory_txt_sample_score_down_single',
                 'form_field_author' => '_bx_directory_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_directory_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_directory_grid_txt_account_manager',

+ 2 - 0
modules/boonex/directory/install/langs/en.xml

@@ -353,6 +353,8 @@
     <string name="_bx_directory_txt_sample_single_with_article"><![CDATA[an ad]]></string>
     <string name="_bx_directory_txt_sample_comment_single"><![CDATA[comment to ad]]></string>
     <string name="_bx_directory_txt_sample_vote_single"><![CDATA[vote to ad]]></string>
+    <string name="_bx_directory_txt_sample_score_up_single"><![CDATA[score up vote to ad]]></string>
+    <string name="_bx_directory_txt_sample_score_down_single"><![CDATA[score down vote to ad]]></string>
     <string name="_bx_directory_txt_display_title_add"><![CDATA[{0}: Add]]></string>
     <string name="_bx_directory_txt_display_title_edit"><![CDATA[{0}: Edit]]></string>
     <string name="_bx_directory_txt_display_title_view"><![CDATA[{0}: View]]></string>

+ 4 - 2
modules/boonex/english/data/langs/system/en.xml

@@ -1313,12 +1313,14 @@
 	<string name="_adm_stg_cpt_option_sys_autoupdate"><![CDATA[Enable auto-update]]></string>
 	<string name="_adm_stg_cpt_option_sys_cache_memcache_host"><![CDATA[Memcached server host]]></string>
 	<string name="_adm_stg_cpt_option_sys_cache_memcache_port"><![CDATA[Memcached server port]]></string>
-	<string name="_adm_stg_cpt_option_sys_captcha_default"><![CDATA[Сaptcha object]]></string>
+	<string name="_adm_stg_cpt_option_sys_captcha_default"><![CDATA[Default Сaptcha]]></string>
 	<string name="_adm_stg_cpt_option_sys_email_attachable_email_templates"><![CDATA[Attachable email templates list]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_enable"><![CDATA[Enable DB cache]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_engine"><![CDATA[DB cache engine (other than File option may require custom server setup)]]></string>
 	<string name="_adm_stg_cpt_option_sys_default_payment"><![CDATA[Payment module]]></string>
-	<string name="_adm_stg_cpt_option_sys_editor_default"><![CDATA[HTML editor object]]></string>
+    <string name="_adm_stg_cpt_option_sys_editor_default"><![CDATA[Default HTML editor]]></string>
+	<string name="_adm_stg_cpt_option_sys_player_default"><![CDATA[Default Player]]></string>
+	<string name="_adm_stg_cpt_option_sys_player_default_format"><![CDATA[Default video format]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_date"><![CDATA[Date Format]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_datetime"><![CDATA[Datetime Format]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_time"><![CDATA[Time Format]]></string>

+ 11 - 8
modules/boonex/events/classes/BxEventsConfig.php

@@ -51,7 +51,7 @@ class BxEventsConfig extends BxBaseModProfileConfig
             'FIELD_COVER' => 'cover',
             'FIELD_TIMEZONE' => 'timezone',
             'FIELD_JOIN_CONFIRMATION' => 'join_confirmation',
-        	'FIELD_REMINDER' => 'reminder',
+            'FIELD_REMINDER' => 'reminder',
             'FIELD_ALLOW_VIEW_TO' => 'allow_view_to',
             'FIELD_ALLOW_POST_TO' => 'allow_post_to',
             'FIELD_VIEWS' => 'views',
@@ -59,13 +59,14 @@ class BxEventsConfig extends BxBaseModProfileConfig
             'FIELDS_QUICK_SEARCH' => array('event_name'),
             'FIELD_LOCATION_PREFIX' => 'location',
             'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
+            'FIELD_LABELS' => 'labels',
 
             // page URIs
             'URI_VIEW_ENTRY' => 'view-event-profile',
             'URI_EDIT_ENTRY' => 'edit-event-profile',
             'URI_EDIT_COVER' => 'edit-event-cover',
             'URI_JOINED_ENTRIES' => 'joined-events',
-        	'URI_MANAGE_COMMON' => 'events-manage',
+            'URI_MANAGE_COMMON' => 'events-manage',
 
             'URL_HOME' => 'page.php?i=events-home',
             'URL_ENTRY_FANS' => 'page.php?i=event-fans',
@@ -89,18 +90,18 @@ class BxEventsConfig extends BxBaseModProfileConfig
             'OBJECT_IMAGES_TRANSCODER_PICTURE' => 'bx_events_picture',
             'OBJECT_IMAGES_TRANSCODER_COVER' => 'bx_events_cover',
             'OBJECT_IMAGES_TRANSCODER_COVER_THUMB' => 'bx_events_cover_thumb',
-        	'OBJECT_IMAGES_TRANSCODER_GALLERY' => 'bx_events_gallery',
+            'OBJECT_IMAGES_TRANSCODER_GALLERY' => 'bx_events_gallery',
             'OBJECT_VIEWS' => 'bx_events',
             'OBJECT_VOTES' => 'bx_events',
-        	'OBJECT_SCORES' => 'bx_events',
-        	'OBJECT_FAVORITES' => 'bx_events',
-        	'OBJECT_FEATURED' => 'bx_events',
-        	'OBJECT_COMMENTS' => 'bx_events',
+            'OBJECT_SCORES' => 'bx_events',
+            'OBJECT_FAVORITES' => 'bx_events',
+            'OBJECT_FEATURED' => 'bx_events',
+            'OBJECT_COMMENTS' => 'bx_events',
             'OBJECT_REPORTS' => 'bx_events',
             'OBJECT_METATAGS' => 'bx_events',
             'OBJECT_FORM_ENTRY' => 'bx_event',
             'OBJECT_FORM_ENTRY_DISPLAY_VIEW' => 'bx_event_view',
-        	'OBJECT_FORM_ENTRY_DISPLAY_VIEW_FULL' => 'bx_event_view_full', // for "info" tab on view group page
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW_FULL' => 'bx_event_view_full', // for "info" tab on view group page
             'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_event_add',
             'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => 'bx_event_edit',
             'OBJECT_FORM_ENTRY_DISPLAY_EDIT_COVER' => 'bx_event_edit_cover',
@@ -166,6 +167,8 @@ class BxEventsConfig extends BxBaseModProfileConfig
             	'txt_sample_single_with_article' => '_bx_events_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_events_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_events_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_events_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_events_txt_sample_score_down_single',
                 'txt_private_group' => '_bx_events_txt_private_group',
                 'txt_N_fans' => '_bx_events_txt_N_fans',
                 'txt_ntfs_join_request' => '_bx_events_txt_ntfs_join_request',

+ 2 - 0
modules/boonex/events/install/langs/en.xml

@@ -293,6 +293,8 @@
     <string name="_bx_events_txt_sample_single_with_article"><![CDATA[an event]]></string>
     <string name="_bx_events_txt_sample_comment_single"><![CDATA[comment to event]]></string>
     <string name="_bx_events_txt_sample_vote_single"><![CDATA[vote to event]]></string>
+    <string name="_bx_events_txt_sample_score_up_single"><![CDATA[score up vote to event]]></string>
+    <string name="_bx_events_txt_sample_score_down_single"><![CDATA[score down vote to event]]></string>
     <string name="_bx_events_txt_to_admins"><![CDATA[To Admins]]></string>
     <string name="_bx_events_txt_from_admins"><![CDATA[From Admins]]></string>
     <string name="_bx_events_txt_private_group"><![CDATA[Private event]]></string>

+ 2 - 1
modules/boonex/events/install/sql/install.sql

@@ -280,7 +280,8 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_event', 'bx_events', 'reoccurring', '', '', 0, 'custom', '_bx_events_form_profile_input_sys_reoccurring', '_bx_events_form_profile_input_reoccurring', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 1),
 ('bx_event', 'bx_events', 'time', '', '', 0, 'custom', '_bx_events_form_profile_input_sys_time', '_bx_events_form_profile_input_time', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_event', 'bx_events', 'timezone', 'UTC', '', 0, 'select', '_bx_events_form_profile_input_sys_timezone', '_bx_events_form_profile_input_timezone', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
-('bx_event', 'bx_events', 'location', '', '', 0, 'location', '_sys_form_input_sys_location', '_sys_form_input_location', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
+('bx_event', 'bx_events', 'location', '', '', 0, 'location', '_sys_form_input_sys_location', '_sys_form_input_location', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_event', 'bx_events', 'labels', '', '', 0, 'custom', '_sys_form_input_sys_labels', '_sys_form_input_labels', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
 ('bx_event_add', 'time', 2147483647, 0, 1),

+ 13 - 11
modules/boonex/files/classes/BxFilesConfig.php

@@ -37,17 +37,17 @@ class BxFilesConfig extends BxBaseModTextConfig
             'FIELD_ADDED' => 'added',
             'FIELD_CHANGED' => 'changed',
             'FIELD_FILE_ID' => 'file_id',
-			'FIELD_FOR_STORING_FILE_ID' => 'file_id',
+            'FIELD_FOR_STORING_FILE_ID' => 'file_id',
             'FIELD_TITLE' => 'title',
             'FIELD_CATEGORY' => 'cat',
             'FIELD_TEXT' => 'desc',
             'FIELD_TEXT_ID' => 'file-desc',
             'FIELD_ALLOW_VIEW_TO' => 'allow_view_to',
             'FIELD_PHOTO' => 'attachments',
-        	'FIELD_VIEWS' => 'views',
+            'FIELD_VIEWS' => 'views',
             'FIELD_COMMENTS' => 'comments',
-	        'FIELD_STATUS' => 'status',
-        	'FIELD_STATUS_ADMIN' => 'status_admin',
+            'FIELD_STATUS' => 'status',
+            'FIELD_STATUS_ADMIN' => 'status_admin',
             'FIELD_LOCATION_PREFIX' => 'location',
             'FIELD_LABELS' => 'labels',
             'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
@@ -57,14 +57,14 @@ class BxFilesConfig extends BxBaseModTextConfig
             'URI_AUTHOR_ENTRIES' => 'files-author',
             'URI_ENTRIES_BY_CONTEXT' => 'files-context',
             'URI_ADD_ENTRY' => 'create-file',
-        	'URI_EDIT_ENTRY' => 'edit-file',
-        	'URI_MANAGE_COMMON' => 'files-manage',
+            'URI_EDIT_ENTRY' => 'edit-file',
+            'URI_MANAGE_COMMON' => 'files-manage',
 
             'URL_HOME' => 'page.php?i=files-home',
             'URL_POPULAR' => 'page.php?i=files-popular',
             'URL_UPDATED' => 'page.php?i=files-updated',
-        	'URL_MANAGE_COMMON' => 'page.php?i=files-manage',
-        	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=files-administration',
+            'URL_MANAGE_COMMON' => 'page.php?i=files-manage',
+            'URL_MANAGE_ADMINISTRATION' => 'page.php?i=files-administration',
 
             // some params
             'PARAM_CHARS_SUMMARY' => 'bx_files_summary_chars',
@@ -102,7 +102,7 @@ class BxFilesConfig extends BxBaseModTextConfig
             'OBJECT_MENU_SNIPPET_META' => 'bx_files_snippet_meta', // menu for snippet meta info
             'OBJECT_MENU_MANAGE_TOOLS' => 'bx_files_menu_manage_tools', //manage menu in content administration tools
             'OBJECT_GRID_ADMINISTRATION' => 'bx_files_administration',
-        	'OBJECT_GRID_COMMON' => 'bx_files_common',
+            'OBJECT_GRID_COMMON' => 'bx_files_common',
             'OBJECT_UPLOADERS' => array('sys_simple', 'sys_html5'),
 
             // menu items which visibility depends on custom visibility checking
@@ -119,11 +119,13 @@ class BxFilesConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_files_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_files_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_files_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_files_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_files_txt_sample_score_down_single',
              	'form_field_author' => '_bx_files_form_entry_input_author',
-				'form_entry_upload_single_for_update' => '_bx_files_form_entry_input_pictures_upload',
+                'form_entry_upload_single_for_update' => '_bx_files_form_entry_input_pictures_upload',
             	'grid_action_err_delete' => '_bx_files_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_files_grid_txt_account_manager',
-				'filter_item_active' => '_bx_files_grid_filter_item_title_adm_active',
+                'filter_item_active' => '_bx_files_grid_filter_item_title_adm_active',
             	'filter_item_hidden' => '_bx_files_grid_filter_item_title_adm_hidden',
             	'filter_item_select_one_filter1' => '_bx_files_grid_filter_item_title_adm_select_one_filter1',
             	'menu_item_manage_my' => '_bx_files_menu_item_title_manage_my',

+ 2 - 0
modules/boonex/files/install/langs/en.xml

@@ -221,6 +221,8 @@
     <string name="_bx_files_txt_sample_single_with_article"><![CDATA[a file]]></string>
     <string name="_bx_files_txt_sample_comment_single"><![CDATA[comment to file]]></string>
     <string name="_bx_files_txt_sample_vote_single"><![CDATA[vote to file]]></string>
+    <string name="_bx_files_txt_sample_score_up_single"><![CDATA[score up vote to file]]></string>
+    <string name="_bx_files_txt_sample_score_down_single"><![CDATA[score down vote to file]]></string>
 
     <string name="_bx_files_privacy_public"><![CDATA[Public]]></string>
     <string name="_bx_files_privacy_participants"><![CDATA[Participants]]></string>

+ 2 - 0
modules/boonex/forum/classes/BxForumConfig.php

@@ -148,6 +148,8 @@ class BxForumConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_forum_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_forum_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_forum_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_forum_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_forum_txt_sample_score_down_single',
             	'form_field_author' => '_bx_forum_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_forum_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_forum_grid_txt_account_manager',

+ 2 - 0
modules/boonex/forum/install/langs/en.xml

@@ -277,6 +277,8 @@
     <string name="_bx_forum_txt_entry_sticked"><![CDATA[Pinned discussion]]></string>
     <string name="_bx_forum_txt_sample_comment_single"><![CDATA[comment to discussion]]></string>
     <string name="_bx_forum_txt_sample_vote_single"><![CDATA[vote to discussion]]></string>
+    <string name="_bx_forum_txt_sample_score_up_single"><![CDATA[score up vote to discussion]]></string>
+    <string name="_bx_forum_txt_sample_score_down_single"><![CDATA[score down vote to discussion]]></string>
     <string name="_bx_forum_txt_sample_single"><![CDATA[discussion]]></string>
     <string name="_bx_forum_txt_sample_single_with_article"><![CDATA[a discussion]]></string>
     <string name="_bx_forum_x_date_by_x_replier"><![CDATA[{0} by {1}]]></string>

+ 2 - 0
modules/boonex/glossary/classes/BxGlsrConfig.php

@@ -117,6 +117,8 @@ class BxGlsrConfig extends BxBaseModTextConfig
                 'txt_sample_single_with_article' => '_bx_glossary_txt_sample_single_with_article',
                 'txt_sample_comment_single' => '_bx_glossary_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_glossary_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_glossary_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_glossary_txt_sample_score_down_single',
                 'form_field_author' => '_bx_glossary_form_entry_input_author',
                 'grid_action_err_delete' => '_bx_glossary_grid_action_err_delete',
                 'grid_txt_account_manager' => '_bx_glossary_grid_txt_account_manager',

+ 2 - 0
modules/boonex/glossary/install/langs/en.xml

@@ -220,5 +220,7 @@
     <string name="_bx_glossary_txt_sample_single_with_article"><![CDATA[a term]]></string>
     <string name="_bx_glossary_txt_sample_comment_single"><![CDATA[comment to term]]></string>
     <string name="_bx_glossary_txt_sample_vote_single"><![CDATA[vote to term]]></string>
+    <string name="_bx_glossary_txt_sample_score_up_single"><![CDATA[score up vote to term]]></string>
+    <string name="_bx_glossary_txt_sample_score_down_single"><![CDATA[score down vote to term]]></string>
     <string name="_bx_glossary_txt_term_in_pending_status"><![CDATA[This term is pending approval.]]></string>
 </resources>

+ 14 - 12
modules/boonex/groups/classes/BxGroupsConfig.php

@@ -161,34 +161,36 @@ class BxGroupsConfig extends BxBaseModProfileConfig
             // some language keys
             'T' => array (
                 'txt_sample_single' => '_bx_groups_txt_sample_single',
-            	'txt_sample_single_with_article' => '_bx_groups_txt_sample_single_with_article',
-            	'txt_sample_comment_single' => '_bx_groups_txt_sample_comment_single',
+                'txt_sample_single_with_article' => '_bx_groups_txt_sample_single_with_article',
+                'txt_sample_comment_single' => '_bx_groups_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_groups_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_groups_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_groups_txt_sample_score_down_single',
                 'txt_private_group' => '_bx_groups_txt_private_group',
                 'txt_N_fans' => '_bx_groups_txt_N_fans',
                 'txt_ntfs_join_request' => '_bx_groups_txt_ntfs_join_request',
                 'txt_ntfs_fan_added' => '_bx_groups_txt_ntfs_fan_added',
-            	'txt_ntfs_timeline_post_common' => '_bx_groups_txt_ntfs_timeline_post_common',
-            	'form_field_author' => '_bx_groups_form_entry_input_author',
+                'txt_ntfs_timeline_post_common' => '_bx_groups_txt_ntfs_timeline_post_common',
+                'form_field_author' => '_bx_groups_form_entry_input_author',
                 'menu_item_title_befriend_sent' => '_bx_groups_menu_item_title_befriend_sent',
                 'menu_item_title_unfriend_cancel_request' => '_bx_groups_menu_item_title_unfriend_cancel_request',
                 'menu_item_title_befriend_confirm' => '_bx_groups_menu_item_title_befriend_confirm',
                 'menu_item_title_unfriend_reject_request' => '_bx_groups_menu_item_title_unfriend_reject_request',
                 'menu_item_title_befriend' => '_bx_groups_menu_item_title_befriend',
                 'menu_item_title_unfriend' => '_bx_groups_menu_item_title_unfriend',
-            	'grid_action_err_delete' => '_bx_groups_grid_action_err_delete',
-            	'grid_txt_account_manager' => '_bx_groups_grid_txt_account_manager',
-				'filter_item_active' => '_bx_groups_grid_filter_item_title_adm_active',
-            	'filter_item_pending' => '_bx_groups_grid_filter_item_title_adm_pending',
-            	'filter_item_suspended' => '_bx_groups_grid_filter_item_title_adm_suspended',
-            	'filter_item_select_one_filter1' => '_bx_groups_grid_filter_item_title_adm_select_one_filter1',
-            	'menu_item_manage_my' => '_bx_groups_menu_item_title_manage_my',
+                'grid_action_err_delete' => '_bx_groups_grid_action_err_delete',
+                'grid_txt_account_manager' => '_bx_groups_grid_txt_account_manager',
+                'filter_item_active' => '_bx_groups_grid_filter_item_title_adm_active',
+                'filter_item_pending' => '_bx_groups_grid_filter_item_title_adm_pending',
+                'filter_item_suspended' => '_bx_groups_grid_filter_item_title_adm_suspended',
+                'filter_item_select_one_filter1' => '_bx_groups_grid_filter_item_title_adm_select_one_filter1',
+                'menu_item_manage_my' => '_bx_groups_menu_item_title_manage_my',
                 'menu_item_manage_all' => '_bx_groups_menu_item_title_manage_all',
                 'menu_item_title_become_fan_sent' => '_bx_groups_menu_item_title_become_fan_sent',
                 'menu_item_title_leave_group_cancel_request' => '_bx_groups_menu_item_title_leave_group_cancel_request',
                 'menu_item_title_become_fan' => '_bx_groups_menu_item_title_become_fan',
                 'menu_item_title_leave_group' => '_bx_groups_menu_item_title_leave_group',
-            	'txt_all_entries_by_author' => '_bx_groups_page_title_browse_by_author'
+                'txt_all_entries_by_author' => '_bx_groups_page_title_browse_by_author'
             ),
 
         );

+ 2 - 0
modules/boonex/groups/install/langs/en.xml

@@ -255,6 +255,8 @@
     <string name="_bx_groups_txt_sample_single_with_article"><![CDATA[a group]]></string>
     <string name="_bx_groups_txt_sample_comment_single"><![CDATA[comment to group]]></string>
     <string name="_bx_groups_txt_sample_vote_single"><![CDATA[vote to group]]></string>
+    <string name="_bx_groups_txt_sample_score_up_single"><![CDATA[score up vote to group]]></string>
+    <string name="_bx_groups_txt_sample_score_down_single"><![CDATA[score down vote to group]]></string>
     <string name="_bx_groups_txt_to_admins"><![CDATA[To Admins]]></string>
     <string name="_bx_groups_txt_from_admins"><![CDATA[From Admins]]></string>
     <string name="_bx_groups_txt_private_group"><![CDATA[Private group]]></string>

+ 21 - 0
modules/boonex/lucid/data/template/system/scripts/BxTemplPlayerHtml5.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolEditor
+ */
+class BxTemplPlayerHtml5 extends BxBasePlayerHTML5
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 4 - 2
modules/boonex/market/classes/BxMarketConfig.php

@@ -18,7 +18,7 @@ class BxMarketConfig extends BxBaseModTextConfig
         parent::__construct($aModule);
 
         $aMenuItems2Methods = array (
-        	'hide-product' => 'checkAllowedHide',
+            'hide-product' => 'checkAllowedHide',
             'unhide-product' => 'checkAllowedUnhide',
             'edit-product' => 'checkAllowedEdit',
             'delete-product' => 'checkAllowedDelete',
@@ -179,10 +179,12 @@ class BxMarketConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_market_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_market_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_market_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_market_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_market_txt_sample_score_down_single',
             	'form_field_author' => '_bx_market_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_market_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_market_grid_txt_account_manager',
-				'filter_item_active' => '_bx_market_grid_filter_item_title_adm_active',
+                'filter_item_active' => '_bx_market_grid_filter_item_title_adm_active',
             	'filter_item_hidden' => '_bx_market_grid_filter_item_title_adm_hidden',
             	'filter_item_select_one_filter1' => '_bx_market_grid_filter_item_title_adm_select_one_filter1',
             	'menu_item_manage_my' => '_bx_market_menu_item_title_manage_my',

+ 2 - 0
modules/boonex/market/install/langs/en.xml

@@ -420,6 +420,8 @@
     <string name="_bx_market_txt_sample_single_with_article"><![CDATA[a product]]></string>
     <string name="_bx_market_txt_sample_comment_single"><![CDATA[comment to product]]></string>
     <string name="_bx_market_txt_sample_vote_single"><![CDATA[vote to product]]></string>
+    <string name="_bx_market_txt_sample_score_up_single"><![CDATA[score up vote to product]]></string>
+    <string name="_bx_market_txt_sample_score_down_single"><![CDATA[score down vote to product]]></string>
     <string name="_bx_market_txt_author_added_product"><![CDATA[{0} {1}]]></string>
     <string name="_bx_market_txt_joined"><![CDATA[Joined:]]></string>
     <string name="_bx_market_txt_last_active"><![CDATA[Last Active:]]></string>

+ 1 - 0
modules/boonex/notifications/classes/BxNtfsDb.php

@@ -92,6 +92,7 @@ class BxNtfsDb extends BxBaseModNotificationsDb
         }
 
         $sSql = "(" . $sSqlOwner . ") UNION (" . $sSqlConnections . ") {order} {limit}";
+        //var_dump(str_replace(array('{select}', '{order}', '{limit}'), array($sSelectClause, $sOrderClause, $sLimitClause), $sSql), "<br />"); exit;
         $aEntries = $this->$sMethod(str_replace(array('{select}', '{order}', '{limit}'), array($sSelectClause, $sOrderClause, $sLimitClause), $sSql));
         if(!$bReturnCount)
             return $aEntries;

+ 21 - 0
modules/boonex/ocean/data/template/system/scripts/BxTemplPlayerHtml5.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolEditor
+ */
+class BxTemplPlayerHtml5 extends BxBasePlayerHTML5
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

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

@@ -185,6 +185,8 @@ class BxOrgsConfig extends BxBaseModProfileConfig
                 'txt_sample_single' => '_bx_orgs_txt_sample_single',
             	'txt_sample_comment_single' => '_bx_orgs_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_orgs_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_orgs_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_orgs_txt_sample_score_down_single',
             	'txt_sample_pp_single' => '_bx_orgs_txt_sample_pp_single',
             	'txt_sample_pp_single_with_article' => '_bx_orgs_txt_sample_pp_single_with_article',
                 'txt_sample_pc_single' => '_bx_orgs_txt_sample_pc_single',

+ 2 - 0
modules/boonex/organizations/install/langs/en.xml

@@ -383,6 +383,8 @@
     <string name="_bx_orgs_txt_sample_single"><![CDATA[organization]]></string>
     <string name="_bx_orgs_txt_sample_comment_single"><![CDATA[comment to organization]]></string>
     <string name="_bx_orgs_txt_sample_vote_single"><![CDATA[vote to organization]]></string>
+    <string name="_bx_orgs_txt_sample_score_up_single"><![CDATA[score up vote to organization]]></string>
+    <string name="_bx_orgs_txt_sample_score_down_single"><![CDATA[score down vote to organization]]></string>
     <string name="_bx_orgs_txt_sample_pp_single"><![CDATA[profile picture]]></string>
     <string name="_bx_orgs_txt_sample_pp_single_with_article"><![CDATA[a profile picture]]></string>
     <string name="_bx_orgs_txt_sample_pc_single"><![CDATA[profile cover]]></string>

+ 2 - 0
modules/boonex/persons/classes/BxPersonsConfig.php

@@ -166,6 +166,8 @@ class BxPersonsConfig extends BxBaseModProfileConfig
                 'txt_sample_single' => '_bx_persons_txt_sample_single',
             	'txt_sample_comment_single' => '_bx_persons_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_persons_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_persons_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_persons_txt_sample_score_down_single',
             	'txt_sample_pp_single' => '_bx_persons_txt_sample_pp_single',
             	'txt_sample_pp_single_with_article' => '_bx_persons_txt_sample_pp_single_with_article',
                 'txt_sample_pc_single' => '_bx_persons_txt_sample_pc_single',

+ 2 - 0
modules/boonex/persons/install/langs/en.xml

@@ -301,6 +301,8 @@
     <string name="_bx_persons_txt_sample_single"><![CDATA[person]]></string>
     <string name="_bx_persons_txt_sample_comment_single"><![CDATA[comment to person]]></string>
     <string name="_bx_persons_txt_sample_vote_single"><![CDATA[vote to person]]></string>
+    <string name="_bx_persons_txt_sample_score_up_single"><![CDATA[score up vote to person]]></string>
+    <string name="_bx_persons_txt_sample_score_down_single"><![CDATA[score down vote to person]]></string>
     <string name="_bx_persons_txt_sample_pp_single"><![CDATA[profile picture]]></string>
     <string name="_bx_persons_txt_sample_pp_single_with_article"><![CDATA[a profile picture]]></string>
     <string name="_bx_persons_txt_sample_pc_single"><![CDATA[profile cover]]></string>

+ 11 - 9
modules/boonex/photos/classes/BxPhotosConfig.php

@@ -106,7 +106,7 @@ class BxPhotosConfig extends BxBaseModTextConfig
             'OBJECT_MENU_SNIPPET_META' => 'bx_photos_snippet_meta', // menu for snippet meta info
             'OBJECT_MENU_MANAGE_TOOLS' => 'bx_photos_menu_manage_tools', //manage menu in content administration tools
             'OBJECT_GRID_ADMINISTRATION' => 'bx_photos_administration',
-        	'OBJECT_GRID_COMMON' => 'bx_photos_common',
+            'OBJECT_GRID_COMMON' => 'bx_photos_common',
             'OBJECT_UPLOADERS' => array('sys_simple', 'sys_html5'),
 
             // menu items which visibility depends on custom visibility checking
@@ -123,11 +123,13 @@ class BxPhotosConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_photos_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_photos_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_photos_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_photos_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_photos_txt_sample_score_down_single',
                 'form_field_author' => '_bx_photos_form_entry_input_author',
-				'form_entry_upload_single_for_update' => '_bx_photos_form_entry_input_pictures_upload',
+                'form_entry_upload_single_for_update' => '_bx_photos_form_entry_input_pictures_upload',
             	'grid_action_err_delete' => '_bx_photos_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_photos_grid_txt_account_manager',
-				'filter_item_active' => '_bx_photos_grid_filter_item_title_adm_active',
+                'filter_item_active' => '_bx_photos_grid_filter_item_title_adm_active',
             	'filter_item_hidden' => '_bx_photos_grid_filter_item_title_adm_hidden',
             	'filter_item_select_one_filter1' => '_bx_photos_grid_filter_item_title_adm_select_one_filter1',
             	'menu_item_manage_my' => '_bx_photos_menu_item_title_manage_my',
@@ -141,18 +143,18 @@ class BxPhotosConfig extends BxBaseModTextConfig
         );
 
         $this->_aJsClasses = array(
-        	'main' => 'BxPhotosMain',
-        	'manage_tools' => 'BxPhotosManageTools'
+            'main' => 'BxPhotosMain',
+            'manage_tools' => 'BxPhotosManageTools'
         );
 
         $this->_aJsObjects = array(
-        	'main' => 'oBxPhotosMain',
-        	'manage_tools' => 'oBxPhotosManageTools'
+            'main' => 'oBxPhotosMain',
+            'manage_tools' => 'oBxPhotosManageTools'
         );
 
         $this->_aGridObjects = array(
-        	'common' => $this->CNF['OBJECT_GRID_COMMON'],
-        	'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION']
+            'common' => $this->CNF['OBJECT_GRID_COMMON'],
+            'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION']
         );
 
         $sHtmlPrefix = str_replace('_', '-', $this->_sName);

+ 2 - 0
modules/boonex/photos/install/langs/en.xml

@@ -223,6 +223,8 @@
     <string name="_bx_photos_txt_sample_single_with_article"><![CDATA[a photo]]></string>
     <string name="_bx_photos_txt_sample_comment_single"><![CDATA[comment to photo]]></string>
     <string name="_bx_photos_txt_sample_vote_single"><![CDATA[vote to photo]]></string>
+    <string name="_bx_photos_txt_sample_score_up_single"><![CDATA[score up vote to photo]]></string>
+    <string name="_bx_photos_txt_sample_score_down_single"><![CDATA[score down vote to photo]]></string>
     <string name="_bx_photos_txt_n_views"><![CDATA[{0} views]]></string>
     <string name="_bx_photos_txt_previous"><![CDATA[Previous]]></string>
     <string name="_bx_photos_txt_next"><![CDATA[Next]]></string>

+ 14 - 12
modules/boonex/polls/classes/BxPollsConfig.php

@@ -121,22 +121,24 @@ class BxPollsConfig extends BxBaseModTextConfig
             // some language keys
             'T' => array (
                 'txt_sample_single' => '_bx_polls_txt_sample_single',
-            	'txt_sample_single_with_article' => '_bx_polls_txt_sample_single_with_article',
-            	'txt_sample_comment_single' => '_bx_polls_txt_sample_comment_single',
-            	'txt_sample_vote_single' => '_bx_polls_txt_sample_vote_single',
-            	'form_field_author' => '_bx_polls_form_entry_input_author',
-            	'grid_action_err_delete' => '_bx_polls_grid_action_err_delete',
-            	'grid_txt_account_manager' => '_bx_polls_grid_txt_account_manager',
-				'filter_item_active' => '_bx_polls_grid_filter_item_title_adm_active',
-            	'filter_item_hidden' => '_bx_polls_grid_filter_item_title_adm_hidden',
-            	'filter_item_select_one_filter1' => '_bx_polls_grid_filter_item_title_adm_select_one_filter1',
-            	'menu_item_manage_my' => '_bx_polls_menu_item_title_manage_my',
-            	'menu_item_manage_all' => '_bx_polls_menu_item_title_manage_all',
+                'txt_sample_single_with_article' => '_bx_polls_txt_sample_single_with_article',
+                'txt_sample_comment_single' => '_bx_polls_txt_sample_comment_single',
+                'txt_sample_vote_single' => '_bx_polls_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_polls_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_polls_txt_sample_score_down_single',
+                'form_field_author' => '_bx_polls_form_entry_input_author',
+                'grid_action_err_delete' => '_bx_polls_grid_action_err_delete',
+                'grid_txt_account_manager' => '_bx_polls_grid_txt_account_manager',
+                'filter_item_active' => '_bx_polls_grid_filter_item_title_adm_active',
+                'filter_item_hidden' => '_bx_polls_grid_filter_item_title_adm_hidden',
+                'filter_item_select_one_filter1' => '_bx_polls_grid_filter_item_title_adm_select_one_filter1',
+                'menu_item_manage_my' => '_bx_polls_menu_item_title_manage_my',
+                'menu_item_manage_all' => '_bx_polls_menu_item_title_manage_all',
                 'txt_all_entries_by' => '_bx_polls_txt_all_entries_by',
                 'txt_all_entries_in' => '_bx_polls_txt_all_entries_in',
                 'txt_all_entries_by_author' => '_bx_polls_page_title_browse_by_author',
                 'txt_all_entries_by_context' => '_bx_polls_page_title_browse_by_context',
-            	'txt_pict_use_as_thumb' => '_bx_polls_form_entry_input_picture_use_as_thumb'
+                'txt_pict_use_as_thumb' => '_bx_polls_form_entry_input_picture_use_as_thumb'
             ),
         );
 

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

@@ -229,6 +229,8 @@
     <string name="_bx_polls_txt_sample_single_with_article"><![CDATA[a poll]]></string>
     <string name="_bx_polls_txt_sample_comment_single"><![CDATA[comment to poll]]></string>
     <string name="_bx_polls_txt_sample_vote_single"><![CDATA[vote to poll]]></string>
+    <string name="_bx_polls_txt_sample_score_up_single"><![CDATA[score up vote to poll]]></string>
+    <string name="_bx_polls_txt_sample_score_down_single"><![CDATA[score down vote to poll]]></string>
     <string name="_bx_polls_txt_subentry_vote_do_by"><![CDATA[Voted for]]></string>
     <string name="_bx_polls_txt_subentry_vote_counter"><![CDATA[{0} votes]]></string>
     <string name="_bx_polls_txt_subentry_vote_percent"><![CDATA[({0}%)]]></string>

+ 2 - 0
modules/boonex/posts/classes/BxPostsConfig.php

@@ -162,6 +162,8 @@ class BxPostsConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_posts_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_posts_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_posts_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_posts_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_posts_txt_sample_score_down_single',
                 'form_field_author' => '_bx_posts_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_posts_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_posts_grid_txt_account_manager',

+ 2 - 0
modules/boonex/posts/install/langs/en.xml

@@ -278,6 +278,8 @@
     <string name="_bx_posts_txt_sample_single_with_article"><![CDATA[a post]]></string>
     <string name="_bx_posts_txt_sample_comment_single"><![CDATA[comment to post]]></string>
     <string name="_bx_posts_txt_sample_vote_single"><![CDATA[vote to post]]></string>
+    <string name="_bx_posts_txt_sample_score_up_single"><![CDATA[score up vote to post]]></string>
+    <string name="_bx_posts_txt_sample_score_down_single"><![CDATA[score down vote to post]]></string>
     <string name="_bx_posts_txt_processing_awaiting"><![CDATA[Post will be published as soon as video is converted]]></string>
     <string name="_bx_posts_txt_processing_failed"><![CDATA[Post isn't published because video conversion failed, edit video to fix the issue.]]></string>
     <string name="_bx_posts_txt_scheduled_awaiting"><![CDATA[Post publishing date is {date_publish_uf}]]></string>

+ 1 - 1
modules/boonex/posts/install/sql/enable.sql

@@ -236,7 +236,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_posts_view_actions', 'bx_posts', 'delete-post', '_bx_posts_menu_item_title_system_delete_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 20),
 ('bx_posts_view_actions', 'bx_posts', 'comment', '_sys_menu_item_title_system_va_comment', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 200),
 ('bx_posts_view_actions', 'bx_posts', 'view', '_sys_menu_item_title_system_va_view', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 210),
-('bx_posts_view_actions', 'bx_posts', 'vote', '_sys_menu_item_title_system_va_vote', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 220),
+('bx_posts_view_actions', 'bx_posts', 'vote', '_sys_menu_item_title_system_va_vote', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 220),
 ('bx_posts_view_actions', 'bx_posts', 'reaction', '_sys_menu_item_title_system_va_reaction', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 225),
 ('bx_posts_view_actions', 'bx_posts', 'score', '_sys_menu_item_title_system_va_score', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 230),
 ('bx_posts_view_actions', 'bx_posts', 'favorite', '_sys_menu_item_title_system_va_favorite', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 240),

+ 21 - 0
modules/boonex/protean/data/template/system/scripts/BxTemplPlayerHtml5.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolEditor
+ */
+class BxTemplPlayerHtml5 extends BxBasePlayerHTML5
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 1 - 1
modules/boonex/protean/install/sql/install.sql

@@ -1126,7 +1126,7 @@ INSERT INTO `sys_options_mixes2options` (`option`, `mix_id`, `value`) VALUES
 ('bx_protean_site_logo_alt', @iMixId, ''),
 ('bx_protean_site_logo_height', @iMixId, '48'),
 ('bx_protean_site_logo_width', @iMixId, '240'),
-('bx_protean_styles_custom', @iMixId, 'div.bx-base-pofile-cover {\r\nborder: 1px solid rgba(136, 153, 170, 0.3);\r\nborder-bottom-width: 0;\r\n}\r\n\r\n\r\ndiv.bx-market-unit-cover div.bx-base-text-unit-no-thumb {\r\nborder-width: 0px;\r\n}\r\n\r\n.sys-cpf-header,\r\n.sys-cpf-title,\r\n.sys-cpf-submenu-cnt ul li {\r\nborder-bottom-color: rgba(136, 153, 170, 0.3);\r\n}\r\n\r\n.sys-cpf-submenu-cnt ul li.bx-menu-inter-act {\r\nborder-bottom-color: rgb(17, 34, 51);\r\n}\r\n\r\n\r\n.bx-def-font {\r\nline-height:18px;\r\nline-height:1.2rem;\r\n}\r\nh1,\r\n.bx-def-font-h1 {\r\nline-height:36px;\r\nline-height:2.4rem;\r\n}\r\nh2,\r\n.bx-def-font-h2 {\r\nline-height:29px;\r\nline-height:1.92rem;\r\n}\r\nh3,\r\n.bx-def-font-h3 {\r\nline-height:22px;\r\nline-height:1.44rem;\r\n}\r\n\r\n.bx-def-label {\r\nbackground-color: rgba(245, 250, 255, 0.5);\r\n}\r\n.bx-def-label,\r\n.bx-def-label a,\r\n.bx-def-label .sys-icon {\r\ncolor: rgba(51, 68, 85, 1);\r\n}\r\n\r\n/*--- Informers ---*/\r\n.bx-informer-msg-info {\r\nbackground-color: rgba(60, 164, 85, 1.0);\r\n}\r\n.bx-informer-msg-alert {\r\nbackground-color: rgba(230, 115, 55, 1.0);\r\n}\r\n.bx-informer-msg-error {\r\nbackground-color: rgba(200, 64, 64, 1.0);\r\n}\r\n\r\n\r\n/*--- Menus ---*/\r\n.bx-menu-notif li.bx-menu-tab-active a, \r\n.bx-menu-verlit li.bx-menu-tab-active a, \r\n.bx-menu-ver li.bx-menu-tab-active a,\r\n.bx-menu-hor li.bx-menu-tab-active a {\r\ncolor: rgba(252, 253, 254, 1);\r\n}\r\n\r\n/*--- Forms ---*/\r\n.bx-form-value .bx-form-input-autotoken b {\r\ncolor: rgba(243, 244, 245, 1);\r\n}\r\n\r\n/*--- Timeline ---*/\r\ndiv.bx-tl-view-timeline div.bx-tl-items:before,\r\ndiv.bx-tl-view-timeline div.bx-tl-item-circle {\r\nbackground-color: rgba(51, 68, 85, 1);\r\n}\r\ndiv.bx-tl-il-embed {\r\npadding: 0.5rem;\r\nbackground-color: rgba(255, 255, 255, 0.8);\r\nborder-radius:  5px;\r\n}\r\n'),
+('bx_protean_styles_custom', @iMixId, 'div.bx-base-pofile-cover {\r\nborder: 1px solid rgba(136, 153, 170, 0.3);\r\nborder-bottom-width: 0;\r\n}\r\n\r\n\r\ndiv.bx-market-unit-cover div.bx-base-text-unit-no-thumb {\r\nborder-width: 0px;\r\n}\r\n\r\n.sys-cpf-header,\r\n.sys-cpf-title,\r\n.sys-cpf-submenu-cnt ul li {\r\nborder-bottom-color: rgba(136, 153, 170, 0.3);\r\n}\r\n\r\n.sys-cpf-submenu-cnt ul li.bx-menu-inter-act {\r\nborder-bottom-color: rgb(17, 34, 51);\r\n}\r\n\r\n\r\n.bx-def-font {\r\nline-height:18px;\r\nline-height:1.2rem;\r\n}\r\nh1,\r\n.bx-def-font-h1 {\r\nline-height:36px;\r\nline-height:2.4rem;\r\n}\r\nh2,\r\n.bx-def-font-h2 {\r\nline-height:29px;\r\nline-height:1.92rem;\r\n}\r\nh3,\r\n.bx-def-font-h3 {\r\nline-height:22px;\r\nline-height:1.44rem;\r\n}\r\n\r\n.bx-def-label {\r\nbackground-color: rgba(245, 250, 255, 0.5);\r\n}\r\n.bx-def-label,\r\n.bx-def-label a,\r\n.bx-def-label .sys-icon {\r\ncolor: rgba(51, 68, 85, 1);\r\n}\r\n\r\n/*--- Informers ---*/\r\n.bx-informer-msg-info {\r\nbackground-color: rgba(60, 164, 85, 1.0);\r\n}\r\n.bx-informer-msg-alert {\r\nbackground-color: rgba(230, 115, 55, 1.0);\r\n}\r\n.bx-informer-msg-error {\r\nbackground-color: rgba(200, 64, 64, 1.0);\r\n}\r\n\r\n\r\n/*--- Menus ---*/\r\n.bx-menu-notif li.bx-menu-tab-active a, \r\n.bx-menu-verlit li.bx-menu-tab-active a, \r\n.bx-menu-ver li.bx-menu-tab-active a,\r\n.bx-menu-hor li.bx-menu-tab-active a {\r\ncolor: rgba(252, 253, 254, 1);\r\n}\r\n\r\n/*--- Forms ---*/\r\n.bx-form-value .bx-form-input-autotoken b {\r\ncolor: rgba(243, 244, 245, 1);\r\n}\r\n.bx-popup .dropzone {\r\nbackground-color: rgba(17, 34, 51, 1);\r\n}\r\n\r\n/*--- Timeline ---*/\r\ndiv.bx-tl-view-timeline div.bx-tl-items:before,\r\ndiv.bx-tl-view-timeline div.bx-tl-item-circle {\r\nbackground-color: rgba(51, 68, 85, 1);\r\n}\r\ndiv.bx-tl-il-embed {\r\npadding: 0.5rem;\r\nbackground-color: rgba(255, 255, 255, 0.8);\r\nborder-radius:  5px;\r\n}\r\n'),
 ('bx_protean_vpm_font_size_scale', @iMixId, '85%'),
 ('bx_protean_vpt_font_size_scale', @iMixId, '93.75%');
 

+ 4 - 0
modules/boonex/russian/data/langs/bx_albums/ru.xml

@@ -240,10 +240,14 @@
     <string name="_bx_albums_txt_sample_single_with_article"><![CDATA[альбом]]></string>
     <string name="_bx_albums_txt_sample_comment_single"><![CDATA[комментарий к альбому]]></string>
     <string name="_bx_albums_txt_sample_vote_single"><![CDATA[голос за альбом]]></string>
+    <string name="_bx_albums_txt_sample_score_up_single"><![CDATA[голос за альбом]]></string>
+    <string name="_bx_albums_txt_sample_score_down_single"><![CDATA[голос против альбома]]></string>
     <string name="_bx_albums_txt_sample_action_changed"><![CDATA[изменил {0}]]></string>
     <string name="_bx_albums_txt_media_single"><![CDATA[изображение]]></string>
     <string name="_bx_albums_txt_media_comment_single"><![CDATA[комментарий к изображению]]></string>
     <string name="_bx_albums_txt_media_vote_single"><![CDATA[голос за изображение]]></string>
+    <string name="_bx_albums_txt_media_score_up_single"><![CDATA[голос за изображение]]></string>
+    <string name="_bx_albums_txt_media_score_down_single"><![CDATA[голос против изображения]]></string>
     <string name="_bx_albums_txt_media_title_alt"><![CDATA[медиа-файлы автора {0}]]></string>
     <string name="_bx_albums_txt_media_title_empty"><![CDATA[Без заголовка]]></string>
     <string name="_bx_albums_txt_media_album_link"><![CDATA[<a href="{0}">{1}</a> альбом от <a href="{2}">{3}</a>]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_channels/ru.xml

@@ -225,6 +225,8 @@
     <string name="_bx_channels_txt_sample_single_with_article"><![CDATA[Канал]]></string>
     <string name="_bx_channels_txt_sample_comment_single"><![CDATA[комментарий к каналу]]></string>
     <string name="_bx_channels_txt_sample_vote_single"><![CDATA[голос за канал]]></string>
+    <string name="_bx_channels_txt_sample_score_up_single"><![CDATA[голос за канал]]></string>
+    <string name="_bx_channels_txt_sample_score_down_single"><![CDATA[голос против канала]]></string>
 	
     <string name="_bx_channels_txt_ntfs_timeline_post_common"><![CDATA[В канале <b class="bx-ntfs-content-profile">{owner_name}</b> новая публикация <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
     <string name="_bx_channels_ntfs_txt_subobject_added"><![CDATA[В канале <b class="bx-ntfs-content-profile">{owner_name}</b> новая публикация <b class="bx-ntfs-content-entry">{entry_caption}</b>]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_events/ru.xml

@@ -294,6 +294,8 @@
     <string name="_bx_events_txt_sample_single_with_article"><![CDATA[событие]]></string>
     <string name="_bx_events_txt_sample_comment_single"><![CDATA[комментарий к событию]]></string>
     <string name="_bx_events_txt_sample_vote_single"><![CDATA[голос за событие]]></string>
+    <string name="_bx_events_txt_sample_score_up_single"><![CDATA[голос за событие]]></string>
+    <string name="_bx_events_txt_sample_score_down_single"><![CDATA[голос против события]]></string>
     <string name="_bx_events_txt_to_admins"><![CDATA[В админы]]></string>
     <string name="_bx_events_txt_from_admins"><![CDATA[Из админов]]></string>
     <string name="_bx_events_txt_private_group"><![CDATA[Приватная группа]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_files/ru.xml

@@ -220,6 +220,8 @@
     <string name="_bx_files_txt_sample_single_with_article"><![CDATA[файл]]></string>
     <string name="_bx_files_txt_sample_comment_single"><![CDATA[комментарии к файлу]]></string>
     <string name="_bx_files_txt_sample_vote_single"><![CDATA[голос за файл]]></string>
+    <string name="_bx_files_txt_sample_score_up_single"><![CDATA[голос за файл]]></string>
+    <string name="_bx_files_txt_sample_score_down_single"><![CDATA[голос против файла]]></string>
 
     <string name="_bx_files_privacy_public"><![CDATA[Для всех]]></string>
     <string name="_bx_files_privacy_participants"><![CDATA[Для участников]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_forum/ru.xml

@@ -278,6 +278,8 @@
     <string name="_bx_forum_txt_entry_sticked"><![CDATA[Закрепленное обсуждение]]></string>
     <string name="_bx_forum_txt_sample_comment_single"><![CDATA[комментарий к обсуждению]]></string>
     <string name="_bx_forum_txt_sample_vote_single"><![CDATA[голос за обсуждение]]></string>
+    <string name="_bx_forum_txt_sample_score_up_single"><![CDATA[голос за обсуждение]]></string>
+    <string name="_bx_forum_txt_sample_score_down_single"><![CDATA[голос против обсуждения]]></string>
     <string name="_bx_forum_txt_all_entries_in"><![CDATA[<a href="{0}">Все обсуждения в {1} ({2})</a>]]></string>
     <string name="_bx_forum_txt_sample_single"><![CDATA[обсуждение]]></string>
     <string name="_bx_forum_txt_sample_single_with_article"><![CDATA[обсуждение]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_glossary/ru.xml

@@ -223,5 +223,7 @@
     <string name="_bx_glossary_txt_sample_single_with_article"><![CDATA[термин]]></string>
     <string name="_bx_glossary_txt_sample_comment_single"><![CDATA[комментарий к Глоссарий]]></string>
     <string name="_bx_glossary_txt_sample_vote_single"><![CDATA[голос за термин]]></string>
+    <string name="_bx_glossary_txt_sample_score_up_single"><![CDATA[голос за термин]]></string>
+    <string name="_bx_glossary_txt_sample_score_down_single"><![CDATA[голос против термина]]></string>
 	<string name="_bx_glossary_txt_term_in_pending_status"><![CDATA[Этот термин ожидает одобрения.]]></string>
 </resources>

+ 2 - 0
modules/boonex/russian/data/langs/bx_groups/ru.xml

@@ -256,6 +256,8 @@
     <string name="_bx_groups_txt_sample_single_with_article"><![CDATA[группа]]></string>
     <string name="_bx_groups_txt_sample_comment_single"><![CDATA[комментарий к группе]]></string>
     <string name="_bx_groups_txt_sample_vote_single"><![CDATA[голос за группу]]></string>
+    <string name="_bx_groups_txt_sample_score_up_single"><![CDATA[голос за группу]]></string>
+    <string name="_bx_groups_txt_sample_score_down_single"><![CDATA[голос против группы]]></string>
     <string name="_bx_groups_txt_to_admins"><![CDATA[В админы]]></string>
     <string name="_bx_groups_txt_from_admins"><![CDATA[Из админов]]></string>
     <string name="_bx_groups_txt_private_group"><![CDATA[Приватная группа]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_market/ru.xml

@@ -418,6 +418,8 @@
     <string name="_bx_market_txt_sample_single_with_article"><![CDATA[продукт]]></string>
     <string name="_bx_market_txt_sample_comment_single"><![CDATA[обзор к продукту]]></string>
     <string name="_bx_market_txt_sample_vote_single"><![CDATA[голос за продукт]]></string>
+    <string name="_bx_market_txt_sample_score_up_single"><![CDATA[голос за продукт]]></string>
+    <string name="_bx_market_txt_sample_score_down_single"><![CDATA[голос против продукта]]></string>
     <string name="_bx_market_txt_author_added_product"><![CDATA[{0} {1}]]></string>
     <string name="_bx_market_txt_joined"><![CDATA[Зарегистрирован:]]></string>
     <string name="_bx_market_txt_last_active"><![CDATA[Последняя активность:]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_organizations/ru.xml

@@ -383,6 +383,8 @@
     <string name="_bx_orgs_txt_sample_single"><![CDATA[Организация]]></string>
     <string name="_bx_orgs_txt_sample_comment_single"><![CDATA[комментарий к организации]]></string>
     <string name="_bx_orgs_txt_sample_vote_single"><![CDATA[голос за организацию]]></string>
+    <string name="_bx_orgs_txt_sample_score_up_single"><![CDATA[голос за организацию]]></string>
+    <string name="_bx_orgs_txt_sample_score_down_single"><![CDATA[голос против организации]]></string>
     <string name="_bx_orgs_txt_sample_pp_single"><![CDATA[изображение профиля]]></string>
     <string name="_bx_orgs_txt_sample_pp_single_with_article"><![CDATA[изображение профиля]]></string>
     <string name="_bx_orgs_txt_sample_pc_single"><![CDATA[обложка профиля]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_persons/ru.xml

@@ -302,6 +302,8 @@
     <string name="_bx_persons_txt_sample_single"><![CDATA[Персона]]></string>
     <string name="_bx_persons_txt_sample_comment_single"><![CDATA[комментарий к персональному профилю]]></string>
     <string name="_bx_persons_txt_sample_vote_single"><![CDATA[голос за профиль]]></string>
+    <string name="_bx_persons_txt_sample_score_up_single"><![CDATA[голос за профиль]]></string>
+    <string name="_bx_persons_txt_sample_score_down_single"><![CDATA[голос против профиля]]></string>
     <string name="_bx_persons_txt_sample_pp_single"><![CDATA[изображение профиля]]></string>
     <string name="_bx_persons_txt_sample_pp_single_with_article"><![CDATA[изображение профиля]]></string>
     <string name="_bx_persons_txt_sample_pc_single"><![CDATA[обложка профиля]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_photos/ru.xml

@@ -225,6 +225,8 @@
     <string name="_bx_photos_txt_sample_single_with_article"><![CDATA[фото]]></string>
     <string name="_bx_photos_txt_sample_comment_single"><![CDATA[комментарий к фото]]></string>
     <string name="_bx_photos_txt_sample_vote_single"><![CDATA[голос за фото]]></string>
+    <string name="_bx_photos_txt_sample_score_up_single"><![CDATA[голос за фото]]></string>
+    <string name="_bx_photos_txt_sample_score_down_single"><![CDATA[голос против фото]]></string>
     <string name="_bx_photos_txt_n_views"><![CDATA[{0} просмотров]]></string>
     <string name="_bx_photos_txt_previous"><![CDATA[Предыдущее фото]]></string>
     <string name="_bx_photos_txt_next"><![CDATA[Следующее фото]]></string>

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

@@ -228,6 +228,8 @@
     <string name="_bx_polls_txt_sample_single_with_article"><![CDATA[голосование]]></string>
     <string name="_bx_polls_txt_sample_comment_single"><![CDATA[комментарий к голосованию]]></string>
     <string name="_bx_polls_txt_sample_vote_single"><![CDATA[голос за голосование]]></string>
+    <string name="_bx_polls_txt_sample_score_up_single"><![CDATA[голос за голосование]]></string>
+    <string name="_bx_polls_txt_sample_score_down_single"><![CDATA[голос против голосования]]></string>
     <string name="_bx_polls_txt_subentry_vote_do_by"><![CDATA[Проголосовали за]]></string>
     <string name="_bx_polls_txt_subentry_vote_counter"><![CDATA[{0} голосов]]></string>
     <string name="_bx_polls_txt_subentry_vote_percent"><![CDATA[({0}%)]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_posts/ru.xml

@@ -278,6 +278,8 @@
     <string name="_bx_posts_txt_sample_single_with_article"><![CDATA[публикация]]></string>
     <string name="_bx_posts_txt_sample_comment_single"><![CDATA[комментарий к публикации]]></string>
     <string name="_bx_posts_txt_sample_vote_single"><![CDATA[голос за публикацию]]></string>
+    <string name="_bx_posts_txt_sample_score_up_single"><![CDATA[голос за публикацию]]></string>
+    <string name="_bx_posts_txt_sample_score_down_single"><![CDATA[голос против публикации]]></string>
     <string name="_bx_posts_txt_processing_awaiting"><![CDATA[Публикация будет опубликована как только сконвертируется видео.]]></string>
     <string name="_bx_posts_txt_processing_failed"><![CDATA[Публикация не была опубликовано, тк произошла ошибка при конвертации видео. Обновите видео, чтобы решить проблему.]]></string>
     <string name="_bx_posts_txt_scheduled_awaiting"><![CDATA[Дата публикации: {date_publish_uf}]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_shopify/ru.xml

@@ -238,4 +238,6 @@
     <string name="_bx_shopify_txt_sample_single_with_article"><![CDATA[товар]]></string>
     <string name="_bx_shopify_txt_sample_comment_single"><![CDATA[комментарии к товару]]></string>
     <string name="_bx_shopify_txt_sample_vote_single"><![CDATA[голос за товар]]></string>
+    <string name="_bx_shopify_txt_sample_score_up_single"><![CDATA[голос за товар]]></string>
+    <string name="_bx_shopify_txt_sample_score_down_single"><![CDATA[голос против товара]]></string>
 </resources>

+ 2 - 0
modules/boonex/russian/data/langs/bx_snipcart/ru.xml

@@ -256,4 +256,6 @@
     <string name="_bx_snipcart_txt_sample_single_with_article"><![CDATA[товар]]></string>
     <string name="_bx_snipcart_txt_sample_comment_single"><![CDATA[комментарии к товару]]></string>
     <string name="_bx_snipcart_txt_sample_vote_single"><![CDATA[голос за товар]]></string>
+    <string name="_bx_snipcart_txt_sample_score_up_single"><![CDATA[голос за товар]]></string>
+    <string name="_bx_snipcart_txt_sample_score_down_single"><![CDATA[голос против товара]]></string>
 </resources>

+ 2 - 0
modules/boonex/russian/data/langs/bx_spaces/ru.xml

@@ -260,6 +260,8 @@
     <string name="_bx_spaces_txt_sample_single_with_article"><![CDATA[пространство]]></string>
     <string name="_bx_spaces_txt_sample_comment_single"><![CDATA[комментарий к пространству]]></string>
     <string name="_bx_spaces_txt_sample_vote_single"><![CDATA[голос за пространство]]></string>
+    <string name="_bx_spaces_txt_sample_score_up_single"><![CDATA[голос за пространство]]></string>
+    <string name="_bx_spaces_txt_sample_score_down_single"><![CDATA[голос против пространства]]></string>
     <string name="_bx_spaces_txt_to_admins"><![CDATA[В админы]]></string>
     <string name="_bx_spaces_txt_from_admins"><![CDATA[Из админов]]></string>
     <string name="_bx_spaces_txt_private_group"><![CDATA[Приватная пространство]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_timeline/ru.xml

@@ -237,6 +237,8 @@
 	<string name="_bx_timeline_txt_sample_ext"><![CDATA[сообщение в ленте]]></string>
 	<string name="_bx_timeline_txt_sample_comment_single"><![CDATA[комментарий к сообщению в ленте]]></string>
 	<string name="_bx_timeline_txt_sample_vote_single"><![CDATA[голос за сообщение в ленте]]></string>
+        <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[голос за сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_score_down_single"><![CDATA[голос против сообщения в ленте]]></string>
     <string name="_bx_timeline_txt_sample_with_link"><![CDATA[со ссылкой]]></string>
     <string name="_bx_timeline_txt_sample_with_image"><![CDATA[с изображением]]></string>
     <string name="_bx_timeline_txt_sample_with_video"><![CDATA[с видео]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/bx_videos/ru.xml

@@ -220,6 +220,8 @@
     <string name="_bx_videos_txt_sample_single_with_article"><![CDATA[видео]]></string>
     <string name="_bx_videos_txt_sample_comment_single"><![CDATA[комментарий к видео]]></string>
     <string name="_bx_videos_txt_sample_vote_single"><![CDATA[голос за видео]]></string>
+    <string name="_bx_videos_txt_sample_score_up_single"><![CDATA[голос за видео]]></string>
+    <string name="_bx_videos_txt_sample_score_down_single"><![CDATA[голос против видео]]></string>
     <string name="_bx_videos_txt_n_views"><![CDATA[{0} просмотров]]></string>
     <string name="_bx_videos_txt_processing_awaiting"><![CDATA[Видео будет опубликовано как только сконвертируется.]]></string>
     <string name="_bx_videos_txt_processing_failed"><![CDATA[Видео не было опубликовано, тк произошла ошибка при конвертации. Обновите видео, чтобы решить проблему.]]></string>

+ 4 - 2
modules/boonex/russian/data/langs/system/ru.xml

@@ -1313,12 +1313,14 @@
 	<string name="_adm_stg_cpt_option_sys_autoupdate"><![CDATA[Включить автообновление]]></string>
 	<string name="_adm_stg_cpt_option_sys_cache_memcache_host"><![CDATA[Memcached - адрес сервера]]></string>
 	<string name="_adm_stg_cpt_option_sys_cache_memcache_port"><![CDATA[Memcached - порт сервера]]></string>
-	<string name="_adm_stg_cpt_option_sys_captcha_default"><![CDATA[Объект CAPTCHA]]></string>
+	<string name="_adm_stg_cpt_option_sys_captcha_default"><![CDATA[CAPTCHA по умолчанию]]></string>
 	<string name="_adm_stg_cpt_option_sys_email_attachable_email_templates"><![CDATA[Список присоединяемых email темплейтов]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_enable"><![CDATA[Задействовать кэш БД]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_engine"><![CDATA[Кэш-движок для БД (значение, отличное от File, может потребовать дополнительной настройки сервера)]]></string>
 	<string name="_adm_stg_cpt_option_sys_default_payment"><![CDATA[Модуль оплаты]]></string>
-	<string name="_adm_stg_cpt_option_sys_editor_default"><![CDATA[Объект HTML редактора]]></string>
+	<string name="_adm_stg_cpt_option_sys_editor_default"><![CDATA[HTML редактор по умолчанию]]></string>
+	<string name="_adm_stg_cpt_option_sys_player_default"><![CDATA[Плеер по умолчанию]]></string>
+	<string name="_adm_stg_cpt_option_sys_player_default_format"><![CDATA[Видео формат по умолчанию]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_date"><![CDATA[Формат даты]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_datetime"><![CDATA[Формат даты и времени]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_time"><![CDATA[Формат времени]]></string>

+ 5 - 3
modules/boonex/shopify/classes/BxShopifyConfig.php

@@ -29,8 +29,8 @@ class BxShopifyConfig extends BxBaseModTextConfig
 
             // database tables
             'TABLE_ENTRIES' => $aModule['db_prefix'] . 'entries',
-        	'TABLE_SETTINGS' => $aModule['db_prefix'] . 'settings',
-        	'TABLE_ENTRIES_FULLTEXT' => 'title_text',
+            'TABLE_SETTINGS' => $aModule['db_prefix'] . 'settings',
+            'TABLE_ENTRIES_FULLTEXT' => 'title_text',
 
             // database fields
             'FIELD_ID' => 'id',
@@ -122,10 +122,12 @@ class BxShopifyConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_shopify_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_shopify_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_shopify_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_shopify_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_shopify_txt_sample_score_down_single',
             	'form_field_author' => '_bx_shopify_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_shopify_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_shopify_grid_txt_account_manager',
-				'filter_item_active' => '_bx_shopify_grid_filter_item_title_adm_active',
+                'filter_item_active' => '_bx_shopify_grid_filter_item_title_adm_active',
             	'filter_item_hidden' => '_bx_shopify_grid_filter_item_title_adm_hidden',
             	'filter_item_select_one_filter1' => '_bx_shopify_grid_filter_item_title_adm_select_one_filter1',
             	'menu_item_manage_my' => '_bx_shopify_menu_item_title_manage_my',

+ 2 - 0
modules/boonex/shopify/install/langs/en.xml

@@ -237,4 +237,6 @@
     <string name="_bx_shopify_txt_sample_single_with_article"><![CDATA[a shop item]]></string>
     <string name="_bx_shopify_txt_sample_comment_single"><![CDATA[comment to shop item]]></string>
     <string name="_bx_shopify_txt_sample_vote_single"><![CDATA[vote to shop item]]></string>
+    <string name="_bx_shopify_txt_sample_score_up_single"><![CDATA[score up vote to shop item]]></string>
+    <string name="_bx_shopify_txt_sample_score_down_single"><![CDATA[score down vote to shop item]]></string>
 </resources>

+ 2 - 0
modules/boonex/snipcart/classes/BxSnipcartConfig.php

@@ -123,6 +123,8 @@ class BxSnipcartConfig extends BxBaseModTextConfig
             	'txt_sample_single_with_article' => '_bx_snipcart_txt_sample_single_with_article',
             	'txt_sample_comment_single' => '_bx_snipcart_txt_sample_comment_single',
             	'txt_sample_vote_single' => '_bx_snipcart_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_snipcart_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_snipcart_txt_sample_score_down_single',
             	'form_field_author' => '_bx_snipcart_form_entry_input_author',
             	'grid_action_err_delete' => '_bx_snipcart_grid_action_err_delete',
             	'grid_txt_account_manager' => '_bx_snipcart_grid_txt_account_manager',

+ 2 - 0
modules/boonex/snipcart/install/langs/en.xml

@@ -256,4 +256,6 @@
     <string name="_bx_snipcart_txt_sample_single_with_article"><![CDATA[a shop item]]></string>
     <string name="_bx_snipcart_txt_sample_comment_single"><![CDATA[comment to shop item]]></string>
     <string name="_bx_snipcart_txt_sample_vote_single"><![CDATA[vote to shop item]]></string>
+    <string name="_bx_snipcart_txt_sample_score_up_single"><![CDATA[score up vote to shop item]]></string>
+    <string name="_bx_snipcart_txt_sample_score_down_single"><![CDATA[score down vote to shop item]]></string>
 </resources>

+ 3 - 0
modules/boonex/spaces/classes/BxSpacesConfig.php

@@ -59,6 +59,7 @@ class BxSpacesConfig extends BxBaseModProfileConfig
             'FIELDS_QUICK_SEARCH' => array('space_name'),
             'FIELD_LOCATION_PREFIX' => 'location',
             'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
+            'FIELD_LABELS' => 'labels',
 
             // page URIs
             'URI_VIEW_ENTRY' => 'view-space-profile',
@@ -165,6 +166,8 @@ class BxSpacesConfig extends BxBaseModProfileConfig
                 'txt_sample_single_with_article' => '_bx_spaces_txt_sample_single_with_article',
                 'txt_sample_comment_single' => '_bx_spaces_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_spaces_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_spaces_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_spaces_txt_sample_score_down_single',
                 'txt_private_group' => '_bx_spaces_txt_private_space',
                 'txt_N_fans' => '_bx_spaces_txt_N_fans',
                 'txt_ntfs_join_request' => '_bx_spaces_txt_ntfs_join_request',

+ 2 - 0
modules/boonex/spaces/install/langs/en.xml

@@ -259,6 +259,8 @@
 	<string name="_bx_spaces_txt_sample_single_with_article"><![CDATA[a space]]></string>
 	<string name="_bx_spaces_txt_sample_comment_single"><![CDATA[comment to space]]></string>
 	<string name="_bx_spaces_txt_sample_vote_single"><![CDATA[vote to space]]></string>
+        <string name="_bx_spaces_txt_sample_score_up_single"><![CDATA[score up vote to space]]></string>
+        <string name="_bx_spaces_txt_sample_score_down_single"><![CDATA[score down vote to space]]></string>
 	<string name="_bx_spaces_txt_to_admins"><![CDATA[To Admins]]></string>
 	<string name="_bx_spaces_txt_from_admins"><![CDATA[From Admins]]></string>
 	<string name="_bx_spaces_txt_private_space"><![CDATA[Private space]]></string>

+ 2 - 1
modules/boonex/spaces/install/sql/install.sql

@@ -258,7 +258,8 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_space', 'bx_spaces', 'join_confirmation', 1, '', 1, 'switcher', '_bx_spaces_form_profile_input_sys_join_confirm', '_bx_spaces_form_profile_input_join_confirm', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
 ('bx_space', 'bx_spaces', 'cover', 'a:1:{i:0;s:20:"bx_spaces_cover_crop";}', 'a:1:{s:20:"bx_spaces_cover_crop";s:24:"_sys_uploader_crop_title";}', 0, 'files', '_bx_spaces_form_profile_input_sys_cover', '_bx_spaces_form_profile_input_cover', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_space', 'bx_spaces', 'picture', 'a:1:{i:0;s:22:"bx_spaces_picture_crop";}', 'a:1:{s:22:"bx_spaces_picture_crop";s:24:"_sys_uploader_crop_title";}', 0, 'files', '_bx_spaces_form_profile_input_sys_picture', '_bx_spaces_form_profile_input_picture', '', 0, 0, 0, '', '', '', '', '', '_bx_spaces_form_profile_input_picture_err', '', '', 1, 0),
-('bx_space', 'bx_spaces', 'location', '', '', 0, 'location', '_sys_form_input_sys_location', '_sys_form_input_location', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
+('bx_space', 'bx_spaces', 'location', '', '', 0, 'location', '_sys_form_input_sys_location', '_sys_form_input_location', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_space', 'bx_spaces', 'labels', '', '', 0, 'custom', '_sys_form_input_sys_labels', '_sys_form_input_labels', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
 ('bx_space_add', 'initial_members', 2147483647, 1, 1),

+ 2 - 0
modules/boonex/timeline/classes/BxTimelineConfig.php

@@ -114,6 +114,8 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
                 'txt_sample_single_ext' => '_bx_timeline_txt_sample_ext',
             	'txt_sample_comment_single' => '_bx_timeline_txt_sample_comment_single',
                 'txt_sample_vote_single' => '_bx_timeline_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_timeline_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_timeline_txt_sample_score_down_single',
                 'txt_sample_with_link' => '_bx_timeline_txt_sample_with_link',
                 'txt_sample_with_image' => '_bx_timeline_txt_sample_with_image',
                 'txt_sample_with_video' => '_bx_timeline_txt_sample_with_video',

+ 82 - 1
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -1387,12 +1387,18 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
 
                 array('group' => $sModule . '_vote', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVote', 'module_name' => $sModule, 'module_method' => 'get_notifications_vote', 'module_class' => 'Module'),
                 array('group' => $sModule . '_vote', 'type' => 'delete', 'alert_unit' => $sModule, 'alert_action' => 'undoVote'),
+                
+                array('group' => $sModule . '_score_up', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVoteUp', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_up', 'module_class' => 'Module'),
+
+                array('group' => $sModule . '_score_down', 'type' => 'insert', 'alert_unit' => $sModule, 'alert_action' => 'doVoteDown', 'module_name' => $sModule, 'module_method' => 'get_notifications_score_down', 'module_class' => 'Module'),
             ),
             'settings' => array(
                 array('group' => 'content', 'unit' => $sModule, 'action' => 'post_common', 'types' => array('personal', 'follow_member', 'follow_context')),
                 array('group' => 'content', 'unit' => $sModule, 'action' => 'repost', 'types' => array('follow_member', 'follow_context')),
                 array('group' => 'comment', 'unit' => $sModule, 'action' => 'commentPost', 'types' => array('personal', 'follow_member', 'follow_context')),
-                array('group' => 'vote', 'unit' => $sModule, 'action' => 'doVote', 'types' => array('personal', 'follow_member', 'follow_context'))
+                array('group' => 'vote', 'unit' => $sModule, 'action' => 'doVote', 'types' => array('personal', 'follow_member', 'follow_context')),
+                array('group' => 'score_up', 'unit' => $sModule, 'action' => 'doVoteUp', 'types' => array('personal', 'follow_member', 'follow_context')),
+                array('group' => 'score_down', 'unit' => $sModule, 'action' => 'doVoteDown', 'types' => array('personal', 'follow_member', 'follow_context'))
             ),
             'alerts' => array(
                 array('unit' => $sModule, 'action' => 'post_common'),
@@ -1406,6 +1412,9 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
                 
                 array('unit' => $sModule, 'action' => 'doVote'),
                 array('unit' => $sModule, 'action' => 'undoVote'),
+
+                array('unit' => $sModule, 'action' => 'doVoteUp'),
+                array('unit' => $sModule, 'action' => 'doVoteDown'),
             )
         );
     }
@@ -1566,6 +1575,78 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         );
     }
 
+    /**
+     * @page service Service Calls
+     * @section bx_timeline Timeline
+     * @subsection bx_timeline-integration_notifications Integration with Notifications
+     * @subsubsection bx_timeline-get_notifications_score_up get_notifications_score_up
+     * 
+     * @code bx_srv('bx_timeline', 'get_notifications_score_up', [...]); @endcode
+     * 
+     * Get data for Score Up Vote event to display in Notifications module.
+     * 
+     * @param $aEvent an array with event description.
+     * @return an array with special format.
+     * 
+     * @see BxTimelineModule::serviceGetNotificationsScoreUp
+     */
+    /** 
+     * @ref bx_timeline-get_notifications_score_up "get_notifications_score_up"
+     */
+    public function serviceGetNotificationsScoreUp($aEvent)
+    {
+    	return $this->_serviceGetNotificationsScore('up', $aEvent);
+    }
+
+    /**
+     * @page service Service Calls
+     * @section bx_timeline Timeline
+     * @subsection bx_timeline-integration_notifications Integration with Notifications
+     * @subsubsection bx_timeline-get_notifications_score_down get_notifications_score_down
+     * 
+     * @code bx_srv('bx_timeline', 'get_notifications_score_down', [...]); @endcode
+     * 
+     * Get data for Score Down Vote event to display in Notifications module.
+     * 
+     * @param $aEvent an array with event description.
+     * @return an array with special format.
+     * 
+     * @see BxTimelineModule::serviceGetNotificationsScoreDown
+     */
+    /** 
+     * @ref bx_timeline-get_notifications_score_down "get_notifications_score_down"
+     */
+    public function serviceGetNotificationsScoreDown($aEvent)
+    {
+    	return $this->_serviceGetNotificationsScore('down', $aEvent);
+    }
+
+
+    protected function _serviceGetNotificationsScore($sType, $aEvent)
+    {
+    	$CNF = &$this->_oConfig->CNF;
+
+        $iContent = (int)$aEvent['object_id'];
+        $aContent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iContent));
+        if(empty($aContent) || !is_array($aContent))
+            return array();
+
+        $oScore = BxDolScore::getObjectInstance($CNF['OBJECT_SCORES'], $iContent);
+        if(!$oScore || !$oScore->isEnabled())
+            return array();
+
+        $sEntryCaption = !empty($aContent['title']) ? $aContent['title'] : $this->_oConfig->getTitle($aContent['description'], $aContent['object_id']);
+
+        return array(
+            'entry_sample' => $CNF['T']['txt_sample_single'],
+            'entry_url' => $this->_oConfig->getItemViewUrl($aContent),
+            'entry_caption' => $sEntryCaption,
+            'entry_author' => $aContent['owner_id'],
+            'subentry_sample' => $CNF['T']['txt_sample_score_' . $sType . '_single'],
+            'lang_key' => '', //may be empty or not specified. In this case the default one from Notification module will be used.
+        );
+    }
+
     /**
      * @page service Service Calls
      * @section bx_timeline Timeline

+ 3 - 0
modules/boonex/timeline/classes/BxTimelineResponse.php

@@ -114,6 +114,9 @@ class BxTimelineResponse extends BxBaseModNotificationsResponse
                     'action' => $aHandlers[BX_BASE_MOD_NTFS_HANDLER_TYPE_INSERT]['alert_action'], 
                     'object_id' => $oAlert->iObject
             	));
+                if(empty($aEvent) || !is_array($aEvent))
+                    break;
+
             	$this->_oModule->deleteEvent($aEvent);
 
                 $this->_oModule->_oDb->deleteCache(array('event_id' => $aEvent[$CNF['FIELD_ID']]));

+ 1 - 1
modules/boonex/timeline/classes/BxTimelineTemplate.php

@@ -2124,7 +2124,7 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
                         $aVideoSize = $oTranscoderMp4Hd->getVideoSize($sVideoUrl);
 
                         $sVideoUrlHd = '';
-                        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+                        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
                             $sVideoUrlHd = $oTranscoderMp4Hd->getFileUrl($iVideoId);
 
                         $aResult['content']['videos_attach'][$iVideoId] = array(

+ 2 - 0
modules/boonex/timeline/install/langs/en.xml

@@ -237,6 +237,8 @@
 	<string name="_bx_timeline_txt_sample_ext"><![CDATA[timeline post]]></string>
 	<string name="_bx_timeline_txt_sample_comment_single"><![CDATA[comment to timeline post]]></string>
     <string name="_bx_timeline_txt_sample_vote_single"><![CDATA[vote to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[score up vote to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_score_down_single"><![CDATA[score down vote to timeline post]]></string>
     <string name="_bx_timeline_txt_sample_with_link"><![CDATA[with link]]></string>
     <string name="_bx_timeline_txt_sample_with_image"><![CDATA[with image]]></string>
     <string name="_bx_timeline_txt_sample_with_video"><![CDATA[with video]]></string>

+ 13 - 11
modules/boonex/videos/classes/BxVideosConfig.php

@@ -143,21 +143,23 @@ class BxVideosConfig extends BxBaseModTextConfig
             // some language keys
             'T' => array (
                 'txt_sample_single' => '_bx_videos_txt_sample_single',
-            	'txt_sample_single_with_article' => '_bx_videos_txt_sample_single_with_article',
-            	'txt_sample_comment_single' => '_bx_videos_txt_sample_comment_single',
-            	'txt_sample_vote_single' => '_bx_videos_txt_sample_vote_single',
+                'txt_sample_single_with_article' => '_bx_videos_txt_sample_single_with_article',
+                'txt_sample_comment_single' => '_bx_videos_txt_sample_comment_single',
+                'txt_sample_vote_single' => '_bx_videos_txt_sample_vote_single',
+                'txt_sample_score_up_single' => '_bx_videos_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_videos_txt_sample_score_down_single',
                 'form_field_author' => '_bx_videos_form_entry_input_author',
-            	'grid_action_err_delete' => '_bx_videos_grid_action_err_delete',
-            	'grid_txt_account_manager' => '_bx_videos_grid_txt_account_manager',
-				'filter_item_active' => '_bx_videos_grid_filter_item_title_adm_active',
-            	'filter_item_hidden' => '_bx_videos_grid_filter_item_title_adm_hidden',
-            	'filter_item_select_one_filter1' => '_bx_videos_grid_filter_item_title_adm_select_one_filter1',
-            	'menu_item_manage_my' => '_bx_videos_menu_item_title_manage_my',
-            	'menu_item_manage_all' => '_bx_videos_menu_item_title_manage_all',
+                'grid_action_err_delete' => '_bx_videos_grid_action_err_delete',
+                'grid_txt_account_manager' => '_bx_videos_grid_txt_account_manager',
+                'filter_item_active' => '_bx_videos_grid_filter_item_title_adm_active',
+                'filter_item_hidden' => '_bx_videos_grid_filter_item_title_adm_hidden',
+                'filter_item_select_one_filter1' => '_bx_videos_grid_filter_item_title_adm_select_one_filter1',
+                'menu_item_manage_my' => '_bx_videos_menu_item_title_manage_my',
+                'menu_item_manage_all' => '_bx_videos_menu_item_title_manage_all',
                 'txt_all_entries_by' => '_bx_videos_txt_all_entries_by',
                 'txt_all_entries_in' => '_bx_videos_txt_all_entries_in',
                 'txt_all_entries_by_author' => '_bx_videos_page_title_browse_by_author',
-            	'txt_pict_use_as_thumb' => '_bx_videos_form_entry_input_picture_use_as_thumb',
+                'txt_pict_use_as_thumb' => '_bx_videos_form_entry_input_picture_use_as_thumb',
                 'txt_all_entries_by_context' => '_bx_videos_page_title_browse_by_context',
                 'txt_pict_use_as_poster' => '_bx_videos_form_entry_input_picture_use_as_poster',
             ),

+ 1 - 1
modules/boonex/videos/classes/BxVideosModule.php

@@ -125,7 +125,7 @@ class BxVideosModule extends BxBaseModTextModule
         $aVideoSize = $oTcvMp4Hd->getVideoSize($sVideoUrl);
 
         $sVideoUrlHd = '';
-        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
             $sVideoUrlHd = $oTcvMp4Hd->getFileUrl($iFile);
 
         return array(

+ 1 - 1
modules/boonex/videos/classes/BxVideosTemplate.php

@@ -104,7 +104,7 @@ class BxVideosTemplate extends BxBaseModTextTemplate
         $aVideoSize = $aTranscodersVideo['mp4_hd']->getVideoSize($sVideoUrl);
 
         $sVideoUrlHd = '';
-        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] > 720)
+        if(!empty($aVideoSize) && is_array($aVideoSize) && (int)$aVideoSize['h'] >= 720)
             $sVideoUrlHd = $aTranscodersVideo['mp4_hd']->getFileUrl($iFile);
 
         return array(

+ 2 - 0
modules/boonex/videos/install/langs/en.xml

@@ -220,6 +220,8 @@
     <string name="_bx_videos_txt_sample_single_with_article"><![CDATA[a video]]></string>
     <string name="_bx_videos_txt_sample_comment_single"><![CDATA[comment to video]]></string>
     <string name="_bx_videos_txt_sample_vote_single"><![CDATA[vote to video]]></string>
+    <string name="_bx_videos_txt_sample_score_up_single"><![CDATA[score up vote to video]]></string>
+    <string name="_bx_videos_txt_sample_score_down_single"><![CDATA[score down vote to video]]></string>
     <string name="_bx_videos_txt_n_views"><![CDATA[{0} views]]></string>
     <string name="_bx_videos_txt_processing_awaiting"><![CDATA[Video will be published as soon as video is converted]]></string>
     <string name="_bx_videos_txt_processing_failed"><![CDATA[Video isn't published because video conversion failed, edit video to fix the issue.]]></string>

+ 2 - 2
template/css/uploaders.css

@@ -40,14 +40,14 @@
 .bx-uploader-html5-drop-area { 
     width:auto;
     height:12rem;
-    overflow-y:scroll;
+    overflow-y:auto;
 }
 .bx-uploader-html5-drop-area.dropzone .dz-message {
     margin:3.5em 0;
 }
 .bx-uploader-html5-errors-area {
     max-height:2.75rem;
-    overflow-y:scroll;
+    overflow-y:auto;
 }
 .bx-uploader-html5-paste-catcher {
     width:0; 

+ 12 - 15
template/scripts/BxBaseFunctions.php

@@ -504,25 +504,22 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
      * Ouputs HTML5 video player.
      * @param $sUrlPoster video poster image
      * @param $sUrlMP4 .mp4 video
-     * @param $sUrlWebM .webm video
+     * @param $sUrlMP4Hd .mp4 video in better quality
      * @param $aAttrs custom attributes, defaults are: controls="" preload="none" autobuffer=""
      * @param $sStyles custom styles, defaults are: width:100%; height:auto;
      */
-    function videoPlayer ($sUrlPoster, $sUrlMP4, $sUrlWebM = '', $aAttrs = false, $sStyles = 'width:100%; height:auto;')
+    function videoPlayer ($sUrlPoster, $sUrlMP4, $sUrlMP4Hd = '', $aAttrs = false, $sStyles = 'width:100%; height:auto;')
     {
-        $aAttrsDefaults = array(
-            'controls' => '',
-            'controlsList' => 'nodownload',
-            'preload' => 'none',
-            'autobuffer' => '', 
-        );
-        $aAttrs = array_merge($aAttrsDefaults, is_array($aAttrs) ? $aAttrs : array());
-        $sAttrs = bx_convert_array2attrs($aAttrs, '', $sStyles);
-
-        return '<video ' . $sAttrs . ' poster="' . $sUrlPoster . '">
-                    ' . ($sUrlWebM ? '<source type="video/webm; codecs="vp8, vorbis" src="' . $sUrlWebM . '" />' : '') . '
-                    ' . ($sUrlMP4  ? '<source type="video/mp4" src="' . $sUrlMP4 . '" />' : '') . '
-                </video>';
+        $oPlayer = BxDolPlayer::getObjectInstance();
+        if (!$oPlayer)
+            return '';
+        return $oPlayer->getCodeVideo (BX_PLAYER_STANDARD, array(
+            'poster' => $sUrlPoster,
+            'mp4' => array('standard' => $sUrlMP4, 'hd' => $sUrlMP4Hd),
+            'webm' => '',
+            'attrs' => $aAttrs,
+            'styles' => $sStyles,
+        ));
     }
 
     protected function getInjection($sPrefix)

+ 111 - 0
template/scripts/BxBasePlayerHTML5.php

@@ -0,0 +1,111 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaBaseView UNA Base Representation Classes
+ * @{
+ */
+
+/**
+ * Basic HTML5 player representation.
+ * @see BxDolPlayer
+ */
+class BxBasePlayerHTML5 extends BxDolPlayer
+{
+    /**
+     * Standard view initialization params
+     */
+    protected static $CONF_STANDARD = "
+        <video {attrs}>
+            {webm}
+            {mp4}
+        </video>
+    ";
+
+    /**
+     * Minimal view initialization params
+     */
+    protected static $CONF_MINI = "";
+
+    /**
+     * Embed view initialization params
+     */
+    protected static $CONF_EMBED = "";
+
+    /**
+     * Available player languages
+     */
+    protected static $CONF_LANGS = array();
+
+    protected $_oTemplate;
+    protected $_bJsCssAdded = false;
+
+    public function __construct ($aObject, $oTemplate)
+    {
+        parent::__construct ($aObject);
+
+        if ($oTemplate)
+            $this->_oTemplate = $oTemplate;
+        else
+            $this->_oTemplate = BxDolTemplate::getInstance();
+    }
+
+    public function getCodeAudio ($iViewMode, $aParams, $bDynamicMode = false)
+    {
+        // TODO:
+    }
+
+    public function getCodeVideo ($iViewMode, $aParams, $bDynamicMode = false)
+    {
+        // set visual mode
+        switch ($iViewMode) {
+        case BX_PLAYER_STANDARD:
+        case BX_PLAYER_MINI:
+        case BX_PLAYER_EMBED:
+        default:
+                $sInit = self::$CONF_STANDARD;
+        }
+
+        // attrs
+        $aAttrsDefault = array(
+            'controls' => '',
+            'controlsList' => 'nodownload',
+            'preload' => 'none',
+            'autobuffer' => '', 
+        );
+        $aAttrs = isset($aParams['attrs']) && is_array($aParams['attrs']) ? $aParams['attrs'] : array();
+        $aAttrs = array_merge($aAttrsDefault, $aAttrs);
+        if (isset($aParams['poster']) && is_string($aParams['poster']))
+            $aAttrs['poster'] = $aParams['poster'];
+        $sAttrs = bx_convert_array2attrs($aAttrs, false, isset($aParams['styles']) && is_string($aParams['styles']) ? $aParams['styles'] : false);
+
+        // generate files list for HTML5 player
+        $sFormat = getParam('sys_player_default_format');
+        $aTypes = array(
+            'webm' => '<source type="video/webm; codecs=\'vp8, vorbis\'" src="{url}" />',
+            'mp4' => '<source type="video/mp4" src="{url}" />',
+        );
+        foreach ($aTypes as $s => $ss) {
+            if (is_array($aParams[$s]) && !empty($aParams[$s][$sFormat]))
+                $aParams[$s] = str_replace('{url}', $aParams[$s][$sFormat], $ss);
+            elseif (is_array($aParams[$s]) && !empty($aParams[$s]['standard']))
+                $aParams[$s] = str_replace('{url}', $aParams[$s]['standard'], $ss);
+            elseif (is_string($aParams[$s]) && !empty($aParams[$s]))
+                $aParams[$s] = str_replace('{url}', $aParams[$s], $ss);
+            else
+                $aParams[$s] = '';
+        }
+
+        // player code
+        $sCode = $this->_replaceMarkers($sInit, array(
+            'attrs' => $sAttrs,
+            'webm' => $aParams['webm'],
+            'mp4' => $aParams['mp4'],
+        ));
+
+        return $sCode;
+    }
+}
+
+/** @} */

Некоторые файлы не были показаны из-за большого количества измененных файлов