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

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

roman.lesnikov@gmail.com 4 лет назад
Родитель
Сommit
9e1f153347
42 измененных файлов с 336 добавлено и 291 удалено
  1. 6 1
      grid.php
  2. 5 4
      inc/classes/BxDolForm.php
  3. 7 1
      inc/classes/BxDolGridQuery.php
  4. 4 0
      inc/js/classes/BxDolGrid.js
  5. 0 4
      inc/js/classes/BxDolUploader.js
  6. 12 2
      install/sql/system.sql
  7. 2 0
      modules/base/connect/classes/BxBaseModConnectModule.php
  8. 7 13
      modules/base/profile/classes/BxBaseModProfileGridAdministration.php
  9. 5 5
      modules/base/text/classes/BxBaseModTextPageEntry.php
  10. 3 0
      modules/boonex/artificer/data/template/mod_text/css/main.css
  11. 2 18
      modules/boonex/artificer/data/template/system/css/forms.css
  12. 11 1
      modules/boonex/artificer/data/template/system/css/label.css
  13. 2 0
      modules/boonex/channels/classes/BxCnlConfig.php
  14. 1 0
      modules/boonex/channels/install/langs/en.xml
  15. 10 8
      modules/boonex/channels/install/sql/enable.sql
  16. 1 0
      modules/boonex/courses/install/langs/en.xml
  17. 14 14
      modules/boonex/courses/install/sql/enable.sql
  18. 37 32
      modules/boonex/english/data/langs/system/en.xml
  19. 1 0
      modules/boonex/events/classes/BxEventsConfig.php
  20. 7 16
      modules/boonex/events/classes/BxEventsModule.php
  21. 5 4
      modules/boonex/events/install/langs/en.xml
  22. 15 14
      modules/boonex/events/install/sql/enable.sql
  23. 14 14
      modules/boonex/groups/install/sql/enable.sql
  24. 0 3
      modules/boonex/organizations/install/langs/en.xml
  25. 6 7
      modules/boonex/organizations/install/sql/enable.sql
  26. 0 3
      modules/boonex/persons/install/langs/en.xml
  27. 4 6
      modules/boonex/persons/install/sql/enable.sql
  28. 1 0
      modules/boonex/russian/data/langs/bx_channels/ru.xml
  29. 1 0
      modules/boonex/russian/data/langs/bx_courses/ru.xml
  30. 1 0
      modules/boonex/russian/data/langs/bx_events/ru.xml
  31. 0 3
      modules/boonex/russian/data/langs/bx_organizations/ru.xml
  32. 0 3
      modules/boonex/russian/data/langs/bx_persons/ru.xml
  33. 84 81
      modules/boonex/russian/data/langs/system/ru.xml
  34. 14 13
      modules/boonex/spaces/install/sql/enable.sql
  35. 9 0
      plugins_public/tailwind/css/tailwind.css
  36. 0 0
      plugins_public/tailwind/css/tailwind.min.css
  37. 3 3
      plugins_public/tailwind/js/tailwind.config.js
  38. 11 0
      studio/template/scripts/BxBaseStudioOptions.php
  39. 4 0
      template/css/label.css
  40. 1 0
      template/grid.html
  41. 5 0
      template/scripts/BxBaseGrid.php
  42. 21 18
      template/scripts/BxBasePage.php

+ 6 - 1
grid.php

@@ -32,7 +32,12 @@ if(method_exists($oGrid, 'init'))
 
 $sAction = 'performAction' . bx_gen_method_name(bx_process_input(bx_get('a')));
 if (method_exists($oGrid, $sAction)) {
-    $oGrid->$sAction();
+    if (BxDolForm::isCsrfTokenValid(bx_get('csrf_token'), false)) {
+        $oGrid->$sAction();
+    }
+    else {
+        echoJson(['msg' => _t('_sys_txt_form_submission_error_csrf_expired'), 'grid' => $oGrid->getCode(false)]);
+    }
 }
 
 /** @} */

+ 5 - 4
inc/classes/BxDolForm.php

@@ -1109,10 +1109,10 @@ class BxDolForm extends BxDol implements iBxDolReplaceable
         if (!($oKeys = BxDolKey::getInstance()))
             return false;
 
-        return $oKeys->getNewKey (false, (int)getParam('sys_security_form_token_lifetime'), $_SERVER['REMOTE_ADDR']);
+        return $oKeys->getNewKey (false, (int)getParam('sys_security_form_token_lifetime'), BxDolSession::getInstance()->getId());
     }
     
-    public static function isCsrfTokenValid($s)
+    public static function isCsrfTokenValid($s, $bDeleteToken = true)
     {
         if (getParam('sys_security_form_token_enable') != 'on')
             return true;
@@ -1121,8 +1121,9 @@ class BxDolForm extends BxDol implements iBxDolReplaceable
             return true;
 
         if ($oKeys->isKeyExists($s)) {
-            $bRet = $oKeys->isKeyExists($s, $_SERVER['REMOTE_ADDR']);
-            $oKeys->removeKey($s);
+            $bRet = $oKeys->isKeyExists($s, BxDolSession::getInstance()->getId());
+            if ($bDeleteToken)
+                $oKeys->removeKey($s);
             return $bRet;
         }
         return false;

+ 7 - 1
inc/classes/BxDolGridQuery.php

@@ -79,7 +79,13 @@ class BxDolGridQuery extends BxDolDb
             if (!$aActions || !is_array($aActions))
                 continue;
             foreach ($aActions as $sKey => $aRow)
-                $aObject[$sActionField][$sKey] = $aRow['title'] || $aRow['icon'] ? array('title' => _t($aRow['title']), 'icon' => $aRow['icon'], 'confirm' => $aRow['confirm'], 'icon_only' => $aRow['icon_only']) : array();
+                $aObject[$sActionField][$sKey] = [
+                    'title' => _t($aRow['title']), 
+                    'icon' => $aRow['icon'], 
+                    'icon_only' => $aRow['icon_only'],
+                    'confirm' => $aRow['confirm'], 
+                    'active' => $aRow['active']
+                ];
         }
 
         return $aObject;

+ 4 - 0
inc/js/classes/BxDolGrid.js

@@ -14,6 +14,8 @@ function BxDolGrid (sObject, oOptions) {
     this._sIdTable = 'bx-grid-table-' + sObject;
     this._oOptions = oOptions;
     
+    this._sCsrfToken = oOptions.csrf_token;
+
     this._sOrderField = undefined == oOptions.order_field ? '' : oOptions.order_field;
     this._sOrderDir = undefined == oOptions.order_dir ? 'ASC' : oOptions.order_dir;
     this._sSearchInputText = undefined == oOptions.text_search_input ? '' : oOptions.text_search_input;
@@ -217,6 +219,8 @@ BxDolGrid.prototype.action = function (sAction, oData, sData, isDisableLoading,
             sUrl += '&' + $this._oOptions.order_get_field + '=' + encodeURIComponent ($this._sOrderField);
         if ($this._sOrderDir.length)
             sUrl += '&' + $this._oOptions.order_get_dir + '=' + encodeURIComponent ($this._sOrderDir);
+        if ($this._sCsrfToken.length)
+            sUrl += '&csrf_token=' + encodeURIComponent ($this._sCsrfToken);
         sUrl += '&_r=' + Math.random();
 
         if (typeof(isDisableLoading) == 'undefined' || !isDisableLoading)

+ 0 - 4
inc/js/classes/BxDolUploader.js

@@ -140,12 +140,8 @@ BxDolUploaderSimple.prototype.restoreGhosts = function (bInitReordering, onCompl
 
     bInitReordering = bInitReordering !== undefined ? bInitReordering : this._isReordering;
 
-    bx_loading(this._sResultContainerId, true);
-
     $.getJSON(sUrl, function (aData) {
 
-        bx_loading($this._sResultContainerId, false);
-
         if (!$this.isMultiple())
             $('#' + $this._sResultContainerId + ' .bx-uploader-ghost').remove();
 

+ 12 - 2
install/sql/system.sql

@@ -245,7 +245,7 @@ CREATE TABLE `sys_options` (
   `name` varchar(64) NOT NULL default '',
   `caption` varchar(255) NOT NULL default '',
   `value` mediumtext NOT NULL,
-  `type` enum('value','digit','text','checkbox','select','combobox','file','image','list','rlist','rgb','rgba','datetime') NOT NULL default 'digit',
+  `type` enum('value','digit','text','code','checkbox','select','combobox','file','image','list','rlist','rgb','rgba','datetime') NOT NULL default 'digit',
   `extra` text NOT NULL default '',
   `check` varchar(32) NOT NULL,
   `check_params` text NOT NULL,
@@ -516,7 +516,6 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 (@iCategoryId, 'site_email_notify', '_adm_stg_cpt_option_site_email_notify', 'admin@example.com', 'digit', '', '', '', 3),
 (@iCategoryId, 'site_tour_home', '_adm_stg_cpt_option_site_tour_home', 'on', 'checkbox', '', '', '', 6),
 (@iCategoryId, 'site_tour_studio', '_adm_stg_cpt_option_site_tour_studio', 'on', 'checkbox', '', '', '', 7),
-(@iCategoryId, 'site_login_social_compact', '_adm_stg_cpt_option_site_login_social_compact', 'on', 'checkbox', '', '', '', 9),
 
 (@iCategoryId, 'sys_autoupdate', '_adm_stg_cpt_option_sys_autoupdate', 'on', 'checkbox', '', '', '', 10),
 (@iCategoryId, 'sys_autoupdate_force_modified_files', '_adm_stg_cpt_option_sys_autoupdate_force_modified_files', '', 'checkbox', '', '', '', 12),
@@ -659,6 +658,16 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 
 (@iCategoryId, 'sys_location_leaflet_provider', '_adm_stg_cpt_option_sys_location_leaflet_provider', 'OpenStreetMap.Mapnik', 'select', 'a:3:{s:6:"module";s:6:"system";s:6:"method";s:42:"get_options_location_leaflet_get_providers";s:5:"class";s:13:"TemplServices";}', '', '', 50);
 
+--
+-- CATEGORY: Social Settings
+--
+INSERT INTO `sys_options_categories`(`type_id`, `name`, `caption`, `hidden`, `order`) VALUES (@iTypeId, 'social_settings','_adm_stg_cpt_category_social_settings', 0, 21);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'site_login_social_compact', '_adm_stg_cpt_option_site_login_social_compact', 'on', 'checkbox', '', '', '', 1),
+(@iCategoryId, 'sys_a2a_enable', '_adm_stg_cpt_option_sys_a2a_enable', '', 'checkbox', '', '', '', 10),
+(@iCategoryId, 'sys_a2a_code', '_adm_stg_cpt_option_sys_a2a_code', '', 'code', '', '', '', 11);
 
 --
 -- CATEGORY (HIDDEN): Audit
@@ -4921,6 +4930,7 @@ CREATE TABLE IF NOT EXISTS `sys_grid_actions` (
   `icon` varchar(255) NOT NULL,
   `icon_only` tinyint(4) NOT NULL DEFAULT '0',
   `confirm` tinyint(4) NOT NULL DEFAULT '1',
+  `active` tinyint(4) NOT NULL DEFAULT '1',
   `order` int(11) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `object_name_type` (`object`(64),`type`,`name`(123))

+ 2 - 0
modules/base/connect/classes/BxBaseModConnectModule.php

@@ -194,6 +194,8 @@ class BxBaseModConnectModule extends BxBaseModGeneralModule
             // create profile
             if (isset($oFormProfile) && $oFormProfile) {
                 
+                $aFieldsProfile['author'] = $iAccountProfileId;
+
                 $aFieldsProfile['picture'] = $this->_processImage($aFieldsProfile, $iAccountProfileId, $oFormHelperProfile);
                 $_POST['picture'] = $aFieldsProfile['picture']; // set POST variable to correctly process images in processFiles method in form object
 

+ 7 - 13
modules/base/profile/classes/BxBaseModProfileGridAdministration.php

@@ -278,25 +278,19 @@ class BxBaseModProfileGridAdministration extends BxBaseModGeneralGridAdministrat
     	return $this->_getProfileObject($iId)->id();
     }
 
-	protected function _doDelete($iId, $aParams = array())
+    protected function _doDelete($iId, $aParams = array())
     {
         $oProfile = $this->_getProfileObject($iId);
-        
-        if (!$this->_oModule->isAllowDeleteOrDisable(bx_get_logged_profile_id(), $oProfile->id()))
+        if(!$oProfile || $oProfile instanceof BxDolProfileUndefined)
             return false;
-        
-    	if($this->_oModule->checkMyself($iId))
-    		return false;
-
-    	if(isset($aParams['with_content']) && $aParams['with_content'] === true) {
 
-    		if($oProfile instanceof BxDolProfileUndefined)
-    			return false;
+        if(!$this->_oModule->isAllowDeleteOrDisable(bx_get_logged_profile_id(), $oProfile->id()))
+            return false;
 
-	    	return $oProfile->delete($oProfile->id(), true);
-    	}
+    	if($this->_oModule->checkMyself($iId))
+            return false;
 
-    	return parent::_doDelete($iId, $aParams);
+        return $oProfile->delete($oProfile->id(), isset($aParams['with_content']) && $aParams['with_content'] === true);
     }
 
     protected function _getId()

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

@@ -31,11 +31,11 @@ class BxBaseModTextPageEntry extends BxBaseModGeneralPageEntry
         $bLoggedContextModerator = false;
         if($this->_aContentInfo && !empty($CNF['FIELD_ALLOW_VIEW_TO']) && (int)$this->_aContentInfo[$CNF['FIELD_ALLOW_VIEW_TO']] < 0) {
             $iContextProfileId = abs((int)$this->_aContentInfo[$CNF['FIELD_ALLOW_VIEW_TO']]);
-            $oContextProfile = BxDolProfile::getInstance($iContextProfileId);
-
-            $aAdmins = bx_srv($oContextProfile->getModule(), 'get_admins_to_manage_content', [$iContextProfileId]);
-            if(in_array($iProfileId, $aAdmins))
-                $bLoggedContextModerator = true;
+            if(($oContextProfile = BxDolProfile::getInstance($iContextProfileId)) !== false) {
+                $aAdmins = bx_srv($oContextProfile->getModule(), 'get_admins_to_manage_content', [$iContextProfileId]);
+                if(in_array($iProfileId, $aAdmins))
+                    $bLoggedContextModerator = true;
+            }
         }
 
         $sTitle = $sUrl = $sIcon = "";

+ 3 - 0
modules/boonex/artificer/data/template/mod_text/css/main.css

@@ -13,6 +13,9 @@
     height: 300px;
     object-fit: cover;
 }
+.bx-base-text-unit-ext .bx-base-text-unit-text {
+    text-align: left;
+}
 
 /*-- Browsing: Search results --*/
 .bx-base-text-unit-gallery-wrapper {

+ 2 - 18
modules/boonex/artificer/data/template/system/css/forms.css

@@ -270,7 +270,6 @@ import url(../../../../../../../template/css/forms.css);
 
 
 /*--- Form field: Auto-siggestion ---*/
-
 .bx-form-value .bx-form-input-autotoken:not(.bx-form-input-labels) {
     float: left;
     padding: 0.125rem 0;
@@ -326,29 +325,14 @@ import url(../../../../../../../template/css/forms.css);
 
     margin-right: 0.5rem;
 }
-.sys-labels .bx-form-input-text.bx-form-input-autotoken b:first-child{
+.sys-labels .bx-form-input-text.bx-form-input-autotoken b:first-child {
     margin-left: 2px !important;
 }
-
-.sys-labels .bx-form-input-text.bx-form-input-autotoken.bx-form-input-disabled b{
+.sys-labels .bx-form-input-text.bx-form-input-autotoken.bx-form-input-disabled b {
     height: 2rem;
     line-height: 2rem;
 }
 
-.bx-form-value .sys-labels .bx-form-input-autotoken.bx-form-input-labels{
-    padding: 0 !important;
-    padding-top: 2px !important;
-}
-.sys-labels .bx-form-input-text.bx-form-input-autotoken
-{
-    min-height: 2.375rem !important;
-}
-.bx-form-value .bx-form-input-labels > a {
-    margin-left: 0.5rem;
-}
-.bx-form-value .bx-form-input-labels > a:first-child {
-    margin-left: 0;
-}
 .select2-container {
     width:100% !important;
 }

+ 11 - 1
modules/boonex/artificer/data/template/system/css/label.css

@@ -2,6 +2,16 @@
 
 
 /*-- Labels Form Field --*/
+.sys-labels .bx-form-input-text.bx-form-input-autotoken {
+    min-height: 2.375rem;
+}
+
 .bx-form-value .sys-labels .bx-form-input-autotoken.bx-form-input-labels {
-    padding: 0.25rem 0;
+    padding: 0.125rem 0;
+}
+.bx-form-value .bx-form-input-labels > a {
+    margin-left: 0.5rem;
+}
+.bx-form-value .bx-form-input-labels > a:first-child {
+    margin-left: 0;
 }

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

@@ -47,6 +47,7 @@ class BxCnlConfig extends BxBaseModGroupsConfig
             'FIELD_VIEWS' => 'views',
             'FIELD_COMMENTS' => 'comments',
             'FIELD_STATUS' => 'status',
+            'FIELD_STATUS_ADMIN' => '',
             'FIELDS_QUICK_SEARCH' => array('channel_name'),
             'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
 
@@ -154,6 +155,7 @@ class BxCnlConfig extends BxBaseModGroupsConfig
                 'grid_action_err_delete' => '_bx_channels_grid_action_err_delete',
                 'grid_txt_account_manager' => '_bx_channels_grid_txt_account_manager',
                 'filter_item_active' => '_bx_channels_grid_filter_item_title_adm_active',
+                'filter_item_hidden' => '_bx_channels_grid_filter_item_title_adm_hidden',
                 'filter_item_pending' => '_bx_channels_grid_filter_item_title_adm_pending',
                 'filter_item_suspended' => '_bx_channels_grid_filter_item_title_adm_suspended',
                 'filter_item_select_one_filter1' => '_bx_channels_grid_filter_item_title_adm_select_one_filter1',

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

@@ -211,6 +211,7 @@
 	<string name="_bx_channels_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
         <string name="_bx_channels_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Any Audience]]></string>
 	<string name="_bx_channels_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+        <string name="_bx_channels_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
 	<string name="_bx_channels_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
 	<string name="_bx_channels_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
 	<string name="_bx_channels_grid_column_title_adm_active"><![CDATA[Active]]></string>

+ 10 - 8
modules/boonex/channels/install/sql/enable.sql

@@ -232,7 +232,9 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_channels_submenu', 'bx_channels', 'channels-home', '_bx_channels_menu_item_title_system_entries_recent', '_bx_channels_menu_item_title_entries_recent', 'page.php?i=channels-home', '', '', '', '', 2147483647, 1, 1, 1),
 ('bx_channels_submenu', 'bx_channels', 'channels-top', '_bx_channels_menu_item_title_system_entries_top', '_bx_channels_menu_item_title_entries_top', 'page.php?i=channels-top', '', '', '', '', 2147483647, 1, 1, 2),
 ('bx_channels_submenu', 'bx_channels', 'channels-toplevel', '_bx_channels_menu_item_title_system_entries_toplevel', '_bx_channels_menu_item_title_entries_toplevel', 'page.php?i=channels-toplevel', '', '', '', '', 2147483647, 1, 1, 3),
-('bx_channels_submenu', 'bx_channels', 'channels-search', '_bx_channels_menu_item_title_system_entries_search', '_bx_channels_menu_item_title_entries_search', 'page.php?i=channels-search', '', '', '', '', 2147483647, 1, 1, 4);
+('bx_channels_submenu', 'bx_channels', 'channels-search', '_bx_channels_menu_item_title_system_entries_search', '_bx_channels_menu_item_title_entries_search', 'page.php?i=channels-search', '', '', '', '', 2147483647, 1, 1, 4),
+('bx_channels_submenu', 'bx_channels', 'channels-administration', '_bx_channels_menu_item_title_system_entries_manage', '_bx_courses_menu_item_title_entries_manage', 'page.php?i=channels-administration', '', '', '', '', 192, 1, 1, 5);
+
 -- MENU: custom menu for snippet meta info
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
 ('bx_channels_snippet_meta', '_sys_menu_title_snippet_meta', 'bx_channels_snippet_meta', 'bx_channels', 15, 0, 1, 'BxCnlMenuSnippetMeta', 'modules/boonex/channels/classes/BxCnlMenuSnippetMeta.php');
@@ -260,7 +262,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
 ('bx_channels_menu_manage_tools', 'bx_channels', 'delete', '_bx_channels_menu_item_title_system_delete', '_bx_channels_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_channels_menu_manage_tools', 'bx_channels', 'delete-with-content', '_bx_channels_menu_item_title_system_delete_with_content', '_bx_channels_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2);
+('bx_channels_menu_manage_tools', 'bx_channels', 'delete-with-content', '_bx_channels_menu_item_title_system_delete_with_content', '_bx_channels_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 0, 0, 2);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -374,12 +376,12 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_channels_administration', 'added_ts', '_bx_channels_grid_column_title_adm_added', '20%', 1, '25', '', 5),
 ('bx_channels_administration', 'actions', '', '20%', 0, '', '', 6);
 
-INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
-('bx_channels_administration', 'bulk', 'delete', '_bx_channels_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_channels_administration', 'bulk', 'delete_with_content', '_bx_channels_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_channels_administration', 'single', 'settings', '_bx_channels_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
-('bx_channels_administration', 'single', 'audit_content', '_bx_channels_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
-('bx_channels_administration', 'single', 'audit_profile', '_bx_channels_grid_action_title_adm_audit_context', 'search-location', 1, 0, 4);
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `active`, `order`) VALUES
+('bx_channels_administration', 'bulk', 'delete', '_bx_channels_grid_action_title_adm_delete', '', 0, 1, 1, 2),
+('bx_channels_administration', 'bulk', 'delete_with_content', '_bx_channels_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 3),
+('bx_channels_administration', 'single', 'settings', '_bx_channels_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 2),
+('bx_channels_administration', 'single', 'audit_content', '_bx_channels_grid_action_title_adm_audit_content', 'search', 1, 0, 1, 3),
+('bx_channels_administration', 'single', 'audit_profile', '_bx_channels_grid_action_title_adm_audit_context', 'search-location', 1, 0, 1, 4);
 
 
 -- ALERTS

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

@@ -312,6 +312,7 @@
     <string name="_bx_courses_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Any Audience]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_courses_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
     <string name="_bx_courses_grid_column_title_adm_active"><![CDATA[Active]]></string>

+ 14 - 14
modules/boonex/courses/install/sql/enable.sql

@@ -399,9 +399,9 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_courses_menu_manage_tools', 'bx_courses', '_bx_courses_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_courses_menu_manage_tools', 'bx_courses', 'delete', '_bx_courses_menu_item_title_system_delete', '_bx_courses_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_courses_menu_manage_tools', 'bx_courses', 'delete-with-content', '_bx_courses_menu_item_title_system_delete_with_content', '_bx_courses_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
-('bx_courses_menu_manage_tools', 'bx_courses', 'clear-reports', '_bx_courses_menu_item_title_system_clear_reports', '_bx_courses_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 3);
+('bx_courses_menu_manage_tools', 'bx_courses', 'clear-reports', '_bx_courses_menu_item_title_system_clear_reports', '_bx_courses_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
+('bx_courses_menu_manage_tools', 'bx_courses', 'delete', '_bx_courses_menu_item_title_system_delete', '_bx_courses_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
+('bx_courses_menu_manage_tools', 'bx_courses', 'delete-with-content', '_bx_courses_menu_item_title_system_delete_with_content', '_bx_courses_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 0, 0, 3);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -580,17 +580,17 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_courses_common', 'added_ts', '_bx_courses_grid_column_title_adm_added', '30%', 1, '25', '', 4),
 ('bx_courses_common', 'actions', '', '20%', 0, '', '', 5);
 
-INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
-('bx_courses_administration', 'bulk', 'delete', '_bx_courses_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_courses_administration', 'bulk', 'delete_with_content', '_bx_courses_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_courses_administration', 'bulk', 'clear_reports', '_bx_classes_grid_action_title_adm_clear_reports', '', 0, 1, 4),
-('bx_courses_administration', 'single', 'settings', '_bx_courses_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
-('bx_courses_administration', 'single', 'audit_content', '_bx_courses_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
-('bx_courses_administration', 'single', 'audit_context', '_bx_courses_grid_action_title_adm_audit_context', 'search-location', 1, 0, 4),
-
-('bx_courses_common', 'bulk', 'delete', '_bx_courses_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_courses_common', 'bulk', 'delete_with_content', '_bx_courses_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
-('bx_courses_common', 'single', 'settings', '_bx_courses_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `active`, `order`) VALUES
+('bx_courses_administration', 'bulk', 'clear_reports', '_bx_classes_grid_action_title_adm_clear_reports', '', 0, 1, 1, 1),
+('bx_courses_administration', 'bulk', 'delete', '_bx_courses_grid_action_title_adm_delete', '', 0, 1, 1, 2),
+('bx_courses_administration', 'bulk', 'delete_with_content', '_bx_courses_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 3),
+('bx_courses_administration', 'single', 'settings', '_bx_courses_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 2),
+('bx_courses_administration', 'single', 'audit_content', '_bx_courses_grid_action_title_adm_audit_content', 'search', 1, 0, 1, 3),
+('bx_courses_administration', 'single', 'audit_context', '_bx_courses_grid_action_title_adm_audit_context', 'search-location', 1, 0, 1, 4),
+
+('bx_courses_common', 'bulk', 'delete', '_bx_courses_grid_action_title_adm_delete', '', 0, 1, 1, 1),
+('bx_courses_common', 'bulk', 'delete_with_content', '_bx_courses_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 2),
+('bx_courses_common', 'single', 'settings', '_bx_courses_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 1);
 
 -- GRIDS: Pricing
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES

+ 37 - 32
modules/boonex/english/data/langs/system/en.xml

@@ -1472,38 +1472,39 @@
 	<string name="_adm_rl_btn_role_cancel"><![CDATA[Cancel]]></string>
         <string name="_adm_rl_btn_role_save"><![CDATA[Save]]></string>
         
-	<string name="_adm_scs_operation_done"><![CDATA[]]></string>
-	<string name="_adm_stg_cpt_category_account"><![CDATA[Account]]></string>
-	<string name="_adm_stg_cpt_category_acl"><![CDATA[ACL]]></string>
-        <string name="_adm_stg_cpt_category_audit"><![CDATA[Audit]]></string>
-	<string name="_adm_stg_cpt_category_notifications"><![CDATA[Notifications]]></string>
-	<string name="_adm_stg_cpt_category_notifications_push"><![CDATA[Push Notifications]]></string>
-	<string name="_adm_stg_cpt_category_cache"><![CDATA[Cache]]></string>
-	<string name="_adm_stg_cpt_category_general"><![CDATA[General]]></string>
-	<string name="_adm_stg_cpt_category_hidden"><![CDATA[Hidden]]></string>
-	<string name="_adm_stg_cpt_category_languages"><![CDATA[Languages]]></string>
-	<string name="_adm_stg_cpt_category_permalinks"><![CDATA[Permalinks]]></string>
-	<string name="_adm_stg_cpt_category_security"><![CDATA[Security]]></string>
-	<string name="_adm_stg_cpt_category_site_settings"><![CDATA[Site Settings]]></string>
-	<string name="_adm_stg_cpt_category_storage"><![CDATA[Storage]]></string>
-	<string name="_adm_stg_cpt_category_system"><![CDATA[System]]></string>
-	<string name="_adm_stg_cpt_category_templates"><![CDATA[Templates]]></string>
+    <string name="_adm_scs_operation_done"><![CDATA[]]></string>
+    <string name="_adm_stg_cpt_category_account"><![CDATA[Account]]></string>
+    <string name="_adm_stg_cpt_category_acl"><![CDATA[ACL]]></string>
+    <string name="_adm_stg_cpt_category_audit"><![CDATA[Audit]]></string>
+    <string name="_adm_stg_cpt_category_notifications"><![CDATA[Notifications]]></string>
+    <string name="_adm_stg_cpt_category_notifications_push"><![CDATA[Push Notifications]]></string>
+    <string name="_adm_stg_cpt_category_cache"><![CDATA[Cache]]></string>
+    <string name="_adm_stg_cpt_category_general"><![CDATA[General]]></string>
+    <string name="_adm_stg_cpt_category_hidden"><![CDATA[Hidden]]></string>
+    <string name="_adm_stg_cpt_category_languages"><![CDATA[Languages]]></string>
+    <string name="_adm_stg_cpt_category_permalinks"><![CDATA[Permalinks]]></string>
+    <string name="_adm_stg_cpt_category_security"><![CDATA[Security]]></string>
+    <string name="_adm_stg_cpt_category_site_settings"><![CDATA[Site Settings]]></string>
+    <string name="_adm_stg_cpt_category_storage"><![CDATA[Storage]]></string>
+    <string name="_adm_stg_cpt_category_system"><![CDATA[System]]></string>
+    <string name="_adm_stg_cpt_category_templates"><![CDATA[Templates]]></string>
     <string name="_adm_stg_cpt_category_twilio_gate"><![CDATA[Twilio]]></string>
     <string name="_adm_stg_cpt_category_location"><![CDATA[Location]]></string>
+    <string name="_adm_stg_cpt_category_social_settings"><![CDATA[Social Settings]]></string>
     <string name="_adm_stg_cpt_option_client_image_resize_width"><![CDATA[Image width to resize before upload (0 - disable)]]></string>
     <string name="_adm_stg_cpt_option_client_image_resize_height"><![CDATA[Image height to resize before upload (0 - disable)]]></string>
-	<string name="_adm_stg_cpt_option_currency_code"><![CDATA[Currency code (for checkout system)]]></string>
-	<string name="_adm_stg_err_option_currency_code"><![CDATA[Cannot be empty.]]></string>
-	<string name="_adm_stg_cpt_option_currency_sign"><![CDATA[Currency sign (for display purposes only)]]></string>
-	<string name="_adm_stg_err_option_currency_sign"><![CDATA[Cannot be empty.]]></string>
-	<string name="_adm_stg_cpt_option_enable_gd"><![CDATA[Use GD library for image processing]]></string>
-	<string name="_adm_stg_cpt_option_enable_notification_account"><![CDATA[Notify about new accounts]]></string>
-	<string name="_adm_stg_cpt_option_enable_notification_pruning"><![CDATA[Notify about pruning results]]></string>
-	<string name="_adm_stg_cpt_option_expire_notification_days"><![CDATA[Number of days before membership expiration to notify members ( -1 = after expiration )]]></string>
-	<string name="_adm_stg_cpt_option_expire_notify_once"><![CDATA[Notify members about membership expiration only once (every day otherwise)]]></string>
-	<string name="_adm_stg_cpt_option_lang_default"><![CDATA[Default Language]]></string>
-	<string name="_adm_stg_cpt_option_lang_subst_from_en"><![CDATA[Substitute (during compilation) missing translations with english ones]]></string>	
-	<string name="_adm_stg_cpt_option_permalinks_modules"><![CDATA[Enable friendly permalinks for Modules]]></string>
+    <string name="_adm_stg_cpt_option_currency_code"><![CDATA[Currency code (for checkout system)]]></string>
+    <string name="_adm_stg_err_option_currency_code"><![CDATA[Cannot be empty.]]></string>
+    <string name="_adm_stg_cpt_option_currency_sign"><![CDATA[Currency sign (for display purposes only)]]></string>
+    <string name="_adm_stg_err_option_currency_sign"><![CDATA[Cannot be empty.]]></string>
+    <string name="_adm_stg_cpt_option_enable_gd"><![CDATA[Use GD library for image processing]]></string>
+    <string name="_adm_stg_cpt_option_enable_notification_account"><![CDATA[Notify about new accounts]]></string>
+    <string name="_adm_stg_cpt_option_enable_notification_pruning"><![CDATA[Notify about pruning results]]></string>
+    <string name="_adm_stg_cpt_option_expire_notification_days"><![CDATA[Number of days before membership expiration to notify members ( -1 = after expiration )]]></string>
+    <string name="_adm_stg_cpt_option_expire_notify_once"><![CDATA[Notify members about membership expiration only once (every day otherwise)]]></string>
+    <string name="_adm_stg_cpt_option_lang_default"><![CDATA[Default Language]]></string>
+    <string name="_adm_stg_cpt_option_lang_subst_from_en"><![CDATA[Substitute (during compilation) missing translations with english ones]]></string>	
+    <string name="_adm_stg_cpt_option_permalinks_modules"><![CDATA[Enable friendly permalinks for Modules]]></string>
     <string name="_adm_stg_cpt_option_permalinks_pages"><![CDATA[Enable friendly permalinks for Pages]]></string>
     <string name="_adm_stg_cpt_option_permalinks_storage"><![CDATA[Enable friendly permalinks for local Storage]]></string>
     <string name="_adm_stg_cpt_option_permalinks_seo_links"><![CDATA[Enable SEO links]]></string>
@@ -1667,8 +1668,8 @@
     <string name="_adm_stg_cpt_option_sys_csp_frame_ancestors"><![CDATA['Content-Security-Policy: frame-ancestors' header value]]></string>
     <string name="_adm_stg_cpt_option_sys_samesite_cookies"><![CDATA[SameSite value for sensitive cookies]]></string>
     <string name="_adm_stg_cpt_option_sys_notify_to_approve_by_role"><![CDATA[Notify context member with necessary role to approve content in the context]]></string>
-	<string name="_adm_stg_cpt_option_sys_fixed_header"><![CDATA[Fixed header]]></string>
-	<string name="_adm_stg_cpt_option_sys_css_media_classes"><![CDATA[CSS @media intervals]]></string>
+    <string name="_adm_stg_cpt_option_sys_fixed_header"><![CDATA[Fixed header]]></string>
+    <string name="_adm_stg_cpt_option_sys_css_media_classes"><![CDATA[CSS @media intervals]]></string>
     <string name="_adm_stg_cpt_option_template"><![CDATA[Default Template]]></string>
     <string name="_adm_stg_err_option_template"><![CDATA[Template cannot be empty and must have a valid name.]]></string>
     <string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Use operator LIKE for search (recommended for small content)]]></string>
@@ -1676,8 +1677,7 @@
     <string name="_adm_stg_cpt_option_sys_quill_allow_empty_tags"><![CDATA[Quill - allow empty tags]]></string>
     <string name="_adm_stg_cpt_option_sys_quill_allowed_tags_mini"><![CDATA[Quill - allowed formats for mini editor]]></string>
     <string name="_adm_stg_cpt_option_sys_quill_allowed_tags_standard"><![CDATA[Quill - allowed formats for standard editor]]></string>
-     <string name="_adm_stg_cpt_option_sys_quill_allowed_tags_full"><![CDATA[Quill - allowed formats for full editor]]></string>
-    
+    <string name="_adm_stg_cpt_option_sys_quill_allowed_tags_full"><![CDATA[Quill - allowed formats for full editor]]></string>
     <string name="_adm_stg_cpt_option_sys_quill_toolbar_mini"><![CDATA[Quill buttons for mini editor]]></string>
     <string name="_adm_stg_cpt_option_sys_quill_toolbar_standard"><![CDATA[Quill buttons for standard editor]]></string>
     <string name="_adm_stg_cpt_option_sys_quill_toolbar_full"><![CDATA[Quill buttons for full editor]]></string>
@@ -1690,6 +1690,11 @@
     <string name="_adm_stg_cpt_option_sys_logs_storage_default"><![CDATA[Default logs storage]]></string>
     <string name="_adm_stg_cpt_option_sys_vote_reactions_quick_mode"><![CDATA[Enable 'Quick Reactions' mode - vote with default reaction when clicked]]></string>
     <string name="_adm_stg_cpt_option_sys_cmts_enable_auto_approve"><![CDATA[Auto approve a comment after creation]]></string>
+    <string name="_adm_stg_cpt_option_sys_a2a_enable"><![CDATA[Use Add2Any code instead of default sharing menu]]></string>
+    <string name="_adm_stg_cpt_option_sys_a2a_code"><![CDATA[Add2Any code]]></string>
+    <string name=""><![CDATA[]]></string>
+    
+    
 	<string name="_adm_stg_cpt_type_system"><![CDATA[System]]></string>
 	<string name="_adm_stg_scs_save"><![CDATA[Settings were successfully saved]]></string>
 	<string name="_adm_stg_err_save_error_message"><![CDATA[Error in '{0}': {1}]]></string>

+ 1 - 0
modules/boonex/events/classes/BxEventsConfig.php

@@ -97,6 +97,7 @@ class BxEventsConfig extends BxBaseModGroupsConfig
             'PARAM_MMODE' => 'bx_events_members_mode',
             'PARAM_PAID_JOIN_ENABLED' => true,
             'PARAM_RECURRING_RESERVE' => 3, // 3 days for recurring payment to be registered
+            'PARAM_SBS_WO_JOIN' => 'bx_events_enable_subscribe_wo_join',
             'PARAM_PER_PAGE_FOR_FAVORITES_LISTS' => 'bx_events_per_page_for_favorites_lists',
             'PARAM_USE_IN' => 'bx_events_internal_notifications',
 

+ 7 - 16
modules/boonex/events/classes/BxEventsModule.php

@@ -261,25 +261,16 @@ class BxEventsModule extends BxBaseModGroupsModule implements iBxDolCalendarServ
      */
     public function serviceCalendar($aData = array(), $sTemplate = 'calendar.html')
     {
-        if (isset($aData['event'])) {
-            $aContentInfo = $this->_oDb->getContentInfoById ((int)$aData['event']);
-            if ('' == $aContentInfo['repeat_stop']) // don't display calendar for non repeating events
-                return '';
-        } 
-
-        if (isset($aData['context_id'])) {
-            if (!$this->serviceIsEnableForContext($aData['context_id'])){
-                return '';
-            }                
-        } 
+        if(isset($aData['context_id']) && !$this->serviceIsEnableForContext($aData['context_id']))
+            return '';
 
-        $oCalendar = new BxTemplCalendar(array(
-            'eventSources' => array (
+        $oCalendar = new BxTemplCalendar([
+            'eventSources' => [
                 bx_append_url_params(BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'calendar_data', $aData),
-            ),
-        ), $this->_oTemplate);
+            ],
+        ], $this->_oTemplate);
 
-        $this->_oTemplate->addCss(array('main.css'));
+        $this->_oTemplate->addCss(['main.css']);
         return $oCalendar->display($sTemplate);
     }
 

+ 5 - 4
modules/boonex/events/install/langs/en.xml

@@ -16,6 +16,7 @@
     <string name="_bx_events_option_members_mode_multi_roles"><![CDATA[Multi Roles]]></string>
     <string name="_bx_events_option_public_subscribed_me"><![CDATA[Public list of interested members]]></string>
     <string name="_bx_events_option_per_page_for_favorites_lists"><![CDATA[Number of favorite lists per page]]></string>
+    <string name="_bx_events_option_enable_subscribe_wo_join"><![CDATA[Allow to mark as Interested without joining (marking as Going)]]></string>
     <string name="_bx_events_option_internal_notifications"><![CDATA[Use internal notifications]]></string>
 
     <string name="_bx_events_form_profile"><![CDATA[Events]]></string>
@@ -203,9 +204,9 @@
     <string name="_bx_events_page_block_title_profile_info_link"><![CDATA[About <a href="{profile_link}">{display_name}</a>]]></string>
     <string name="_bx_events_page_block_title_profile_info"><![CDATA[Info]]></string>
     <string name="_bx_events_page_block_title_system_profile_info"><![CDATA[Info]]></string>
-<string name="_bx_events_page_block_title_system_profile_pricing"><![CDATA[Pricing]]></string>
-        <string name="_bx_events_page_block_title_profile_pricing"><![CDATA[Pricing]]></string>
-        <string name="_bx_events_page_block_title_profile_pricing_link"><![CDATA[Pricing of <a href="{profile_link}">{display_name}</a>]]></string>
+    <string name="_bx_events_page_block_title_system_profile_pricing"><![CDATA[Pricing]]></string>
+    <string name="_bx_events_page_block_title_profile_pricing"><![CDATA[Pricing]]></string>
+    <string name="_bx_events_page_block_title_profile_pricing_link"><![CDATA[Pricing of <a href="{profile_link}">{display_name}</a>]]></string>
     <string name="_bx_events_page_block_title_profile_description"><![CDATA[Description]]></string>
     <string name="_bx_events_page_block_title_profile_friends_link"><![CDATA[Friends of <a href="{profile_link}">{display_name}</a>]]></string>
     <string name="_bx_events_page_block_title_profile_friends"><![CDATA[Friends]]></string>
@@ -220,7 +221,7 @@
     <string name="_bx_events_page_block_title_subscribers"><![CDATA[Interested]]></string>
     <string name="_bx_events_page_block_title_system_subscribers"><![CDATA[Interested]]></string>
     <string name="_bx_events_page_block_title_profile_comments"><![CDATA[Comments]]></string>
-	<string name="_bx_events_page_block_title_entry_reports"><![CDATA[Reports]]></string>
+    <string name="_bx_events_page_block_title_entry_reports"><![CDATA[Reports]]></string>
     <string name="_bx_events_page_block_title_profile_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string>
     <string name="_bx_events_page_block_title_profile_actions"><![CDATA[Actions]]></string>
     <string name="_bx_events_page_block_title_featured_profiles"><![CDATA[Featured Events]]></string>

+ 15 - 14
modules/boonex/events/install/sql/enable.sql

@@ -25,6 +25,7 @@ INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `e
 ('bx_events_searchable_fields', 'event_name,event_desc', @iCategId, '_bx_events_option_searchable_fields', 'list', 'a:2:{s:6:"module";s:9:"bx_events";s:6:"method";s:21:"get_searchable_fields";}', '', '', 30),
 ('bx_events_members_mode', '', @iCategId, '_bx_events_option_members_mode', 'select', 'a:2:{s:6:"module";s:9:"bx_events";s:6:"method";s:24:"get_options_members_mode";}', '', '', 40),
 ('bx_events_public_subscribed_me', 'on', @iCategId, '_bx_events_option_public_subscribed_me', 'checkbox', '', '', '', 50),
+('bx_events_enable_subscribe_wo_join', '', @iCategId, '_bx_events_option_enable_subscribe_wo_join', 'checkbox', '', '', '', 55),
 ('bx_events_internal_notifications', '', @iCategId, '_bx_events_option_internal_notifications', 'checkbox', '', '', '', 60),
 ('bx_events_reminder_interval', '24', @iCategId, '_bx_events_option_reminder_interval', 'select', '24,48', '', '', 70);
 
@@ -454,9 +455,9 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_events_menu_manage_tools', 'bx_events', '_bx_events_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_events_menu_manage_tools', 'bx_events', 'delete', '_bx_events_menu_item_title_system_delete', '_bx_events_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_events_menu_manage_tools', 'bx_events', 'delete-with-content', '_bx_events_menu_item_title_system_delete_with_content', '_bx_events_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
-('bx_events_menu_manage_tools', 'bx_events', 'clear-reports', '_bx_cevents_menu_item_title_system_clear_reports', '_bx_events_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 3);
+('bx_events_menu_manage_tools', 'bx_events', 'clear-reports', '_bx_cevents_menu_item_title_system_clear_reports', '_bx_events_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
+('bx_events_menu_manage_tools', 'bx_events', 'delete', '_bx_events_menu_item_title_system_delete', '_bx_events_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
+('bx_events_menu_manage_tools', 'bx_events', 'delete-with-content', '_bx_events_menu_item_title_system_delete_with_content', '_bx_events_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 0, 0, 3);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -633,17 +634,17 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_events_common', 'added_ts', '_bx_events_grid_column_title_adm_added', '30%', 1, '25', '', 4),
 ('bx_events_common', 'actions', '', '20%', 0, '', '', 5);
 
-INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
-('bx_events_administration', 'bulk', 'delete', '_bx_events_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_events_administration', 'bulk', 'delete_with_content', '_bx_events_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_events_administration', 'bulk', 'clear_reports', '_bx_events_grid_action_title_adm_clear_reports', '', 0, 1, 3),
-('bx_events_administration', 'single', 'settings', '_bx_events_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
-('bx_events_administration', 'single', 'audit_content', '_bx_events_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
-('bx_events_administration', 'single', 'audit_context', '_bx_events_grid_action_title_adm_audit_context', 'search-location', 1, 0, 4),
-
-('bx_events_common', 'bulk', 'delete', '_bx_events_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_events_common', 'bulk', 'delete_with_content', '_bx_events_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
-('bx_events_common', 'single', 'settings', '_bx_events_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `active`, `order`) VALUES
+('bx_events_administration', 'bulk', 'clear_reports', '_bx_events_grid_action_title_adm_clear_reports', '', 0, 1, 1, 1),
+('bx_events_administration', 'bulk', 'delete', '_bx_events_grid_action_title_adm_delete', '', 0, 1, 1, 2),
+('bx_events_administration', 'bulk', 'delete_with_content', '_bx_events_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 3),
+('bx_events_administration', 'single', 'settings', '_bx_events_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 2),
+('bx_events_administration', 'single', 'audit_content', '_bx_events_grid_action_title_adm_audit_content', 'search', 1, 0, 1, 3),
+('bx_events_administration', 'single', 'audit_context', '_bx_events_grid_action_title_adm_audit_context', 'search-location', 1, 0, 1, 4),
+
+('bx_events_common', 'bulk', 'delete', '_bx_events_grid_action_title_adm_delete', '', 0, 1, 1, 1),
+('bx_events_common', 'bulk', 'delete_with_content', '_bx_events_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 2),
+('bx_events_common', 'single', 'settings', '_bx_events_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 1);
 
 -- GRIDS: Pricing
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES

+ 14 - 14
modules/boonex/groups/install/sql/enable.sql

@@ -414,9 +414,9 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_groups_menu_manage_tools', 'bx_groups', '_bx_groups_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_groups_menu_manage_tools', 'bx_groups', 'delete', '_bx_groups_menu_item_title_system_delete', '_bx_groups_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_groups_menu_manage_tools', 'bx_groups', 'delete-with-content', '_bx_groups_menu_item_title_system_delete_with_content', '_bx_groups_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
-('bx_groups_menu_manage_tools', 'bx_groups', 'clear-reports', '_bx_groups_menu_item_title_system_clear_reports', '_bx_groups_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 3);
+('bx_groups_menu_manage_tools', 'bx_groups', 'clear-reports', '_bx_groups_menu_item_title_system_clear_reports', '_bx_groups_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
+('bx_groups_menu_manage_tools', 'bx_groups', 'delete', '_bx_groups_menu_item_title_system_delete', '_bx_groups_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
+('bx_groups_menu_manage_tools', 'bx_groups', 'delete-with-content', '_bx_groups_menu_item_title_system_delete_with_content', '_bx_groups_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 0, 0, 3);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -596,17 +596,17 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_groups_common', 'added_ts', '_bx_groups_grid_column_title_adm_added', '30%', 1, '25', '', 4),
 ('bx_groups_common', 'actions', '', '20%', 0, '', '', 5);
 
-INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
-('bx_groups_administration', 'bulk', 'delete', '_bx_groups_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_groups_administration', 'bulk', 'delete_with_content', '_bx_groups_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_groups_administration', 'bulk', 'clear_reports', '_bx_groups_grid_action_title_adm_clear_reports', '', 0, 1, 4),
-('bx_groups_administration', 'single', 'settings', '_bx_groups_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
-('bx_groups_administration', 'single', 'audit_content', '_bx_groups_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
-('bx_groups_administration', 'single', 'audit_context', '_bx_groups_grid_action_title_adm_audit_context', 'search-location', 1, 0, 4),
-
-('bx_groups_common', 'bulk', 'delete', '_bx_groups_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_groups_common', 'bulk', 'delete_with_content', '_bx_groups_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
-('bx_groups_common', 'single', 'settings', '_bx_groups_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `active`, `order`) VALUES
+('bx_groups_administration', 'bulk', 'clear_reports', '_bx_groups_grid_action_title_adm_clear_reports', '', 0, 1, 1, 1),
+('bx_groups_administration', 'bulk', 'delete', '_bx_groups_grid_action_title_adm_delete', '', 0, 1, 1, 2),
+('bx_groups_administration', 'bulk', 'delete_with_content', '_bx_groups_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 3),
+('bx_groups_administration', 'single', 'settings', '_bx_groups_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 2),
+('bx_groups_administration', 'single', 'audit_content', '_bx_groups_grid_action_title_adm_audit_content', 'search', 1, 0, 1, 3),
+('bx_groups_administration', 'single', 'audit_context', '_bx_groups_grid_action_title_adm_audit_context', 'search-location', 1, 0, 1, 4),
+
+('bx_groups_common', 'bulk', 'delete', '_bx_groups_grid_action_title_adm_delete', '', 0, 1, 1, 1),
+('bx_groups_common', 'bulk', 'delete_with_content', '_bx_groups_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 2),
+('bx_groups_common', 'single', 'settings', '_bx_groups_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 1);
 
 -- GRIDS: Pricing
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES

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

@@ -277,8 +277,6 @@
     <string name="_bx_orgs_menu_set_title_entries_my"><![CDATA[Profile Organizations Menu]]></string>
     <string name="_bx_orgs_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
     <string name="_bx_orgs_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete"><![CDATA[Delete]]></string>
-    <string name="_bx_orgs_menu_item_title_delete"><![CDATA[Delete]]></string>
     <string name="_bx_orgs_menu_item_title_system_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_orgs_menu_item_title_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_orgs_menu_item_title_system_clear_reports"><![CDATA[Clear reports]]></string>
@@ -396,7 +394,6 @@
     <string name="_bx_orgs_grid_column_title_adm_fullname"><![CDATA[Name]]></string>
     <string name="_bx_orgs_grid_column_title_adm_last_online"><![CDATA[Last Logged]]></string>
     <string name="_bx_orgs_grid_column_title_adm_account"><![CDATA[Account]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
     <string name="_bx_orgs_grid_action_title_adm_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_orgs_grid_action_title_adm_clear_reports"><![CDATA[Clear reports]]></string>
     <string name="_bx_orgs_grid_action_title_adm_set_acl_level"><![CDATA[Set Membership]]></string>

+ 6 - 7
modules/boonex/organizations/install/sql/enable.sql

@@ -479,9 +479,8 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_organizations_menu_manage_tools', 'bx_organizations', '_bx_orgs_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_organizations_menu_manage_tools', 'bx_organizations', 'delete', '_bx_orgs_menu_item_title_system_delete', '_bx_orgs_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_organizations_menu_manage_tools', 'bx_organizations', 'delete-with-content', '_bx_orgs_menu_item_title_system_delete_with_content', '_bx_orgs_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
-('bx_organizations_menu_manage_tools', 'bx_organizations', 'clear-reports', '_bx_corgs_menu_item_title_system_clear_reports', '_bx_orgs_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 3);
+('bx_organizations_menu_manage_tools', 'bx_organizations', 'clear-reports', '_bx_corgs_menu_item_title_system_clear_reports', '_bx_orgs_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
+('bx_organizations_menu_manage_tools', 'bx_organizations', 'delete-with-content', '_bx_orgs_menu_item_title_system_delete_with_content', '_bx_orgs_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 99);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -657,6 +656,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_organizations_administration', 'last_online', '_bx_orgs_grid_column_title_adm_last_online', '20%', 1, '25', '', 5),
 ('bx_organizations_administration', 'account', '_bx_orgs_grid_column_title_adm_account', '20%', 0, '25', '', 6),
 ('bx_organizations_administration', 'actions', '', '20%', 0, '', '', 7),
+
 ('bx_organizations_common', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
 ('bx_organizations_common', 'fullname', '_bx_orgs_grid_column_title_adm_fullname', '48%', 0, '', '', 2),
 ('bx_organizations_common', 'last_online', '_bx_orgs_grid_column_title_adm_last_online', '30%', 1, '25', '', 3),
@@ -664,15 +664,14 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('bx_organizations_administration', 'bulk', 'set_acl_level', '_bx_orgs_grid_action_title_adm_set_acl_level', '', 0, 0, 1),
-('bx_organizations_administration', 'bulk', 'delete', '_bx_orgs_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_organizations_administration', 'bulk', 'clear_reports', '_bx_orgs_grid_action_title_adm_clear_reports', '', 0, 1, 3),
+('bx_organizations_administration', 'bulk', 'clear_reports', '_bx_orgs_grid_action_title_adm_clear_reports', '', 0, 1, 2),
 ('bx_organizations_administration', 'bulk', 'delete_with_content', '_bx_orgs_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
 ('bx_organizations_administration', 'single', 'set_acl_level', '_bx_orgs_grid_action_title_adm_set_acl_level', 'certificate', 1, 0, 1),
 ('bx_organizations_administration', 'single', 'settings', '_bx_orgs_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
 ('bx_organizations_administration', 'single', 'audit_content', '_bx_orgs_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
 ('bx_organizations_administration', 'single', 'audit_profile', '_bx_orgs_grid_action_title_adm_audit_profile', 'search-location', 1, 0, 4),
-('bx_organizations_common', 'bulk', 'delete', '_bx_orgs_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_organizations_common', 'bulk', 'delete_with_content', '_bx_orgs_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
+
+('bx_organizations_common', 'bulk', 'delete_with_content', '_bx_orgs_grid_action_title_adm_delete_with_content', '', 0, 1, 1),
 ('bx_organizations_common', 'single', 'settings', '_bx_orgs_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
 
 -- GRIDS: Pricing

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

@@ -211,8 +211,6 @@
     <string name="_bx_persons_menu_title_view_profile_submenu"><![CDATA[View Person Submenu]]></string>
     <string name="_bx_persons_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
     <string name="_bx_persons_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
-    <string name="_bx_persons_menu_item_title_system_delete"><![CDATA[Delete]]></string>
-    <string name="_bx_persons_menu_item_title_delete"><![CDATA[Delete]]></string>
     <string name="_bx_persons_menu_item_title_system_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_persons_menu_item_title_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_persons_menu_item_title_system_clear_reports"><![CDATA[Clear reports]]></string>
@@ -312,7 +310,6 @@
     <string name="_bx_persons_grid_column_title_adm_fullname"><![CDATA[Name]]></string>
     <string name="_bx_persons_grid_column_title_adm_last_online"><![CDATA[Last Logged]]></string>
     <string name="_bx_persons_grid_column_title_adm_account"><![CDATA[Account]]></string>
-    <string name="_bx_persons_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
     <string name="_bx_persons_grid_action_title_adm_delete_with_content"><![CDATA[Delete With Content]]></string>
     <string name="_bx_persons_grid_action_title_adm_clear_reports"><![CDATA[Clear reports]]></string>
     <string name="_bx_persons_grid_action_title_adm_set_acl_level"><![CDATA[Set Membership]]></string>

+ 4 - 6
modules/boonex/persons/install/sql/enable.sql

@@ -397,7 +397,6 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
 ('bx_persons_menu_manage_tools', 'bx_persons', 'clear-reports', '_bx_persons_menu_item_title_system_clear_reports', '_bx_persons_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
 ('bx_persons_menu_manage_tools', 'bx_persons', 'manage-cf', '_bx_persons_menu_item_title_system_manage_cf', '_bx_persons_menu_item_title_manage_cf', 'javascript:void(0)', 'javascript:{js_object}.onClickManageCf({content_id});', '_self', 'filter', '', 2147483647, 1, 0, 6),
-('bx_persons_menu_manage_tools', 'bx_persons', 'delete', '_bx_persons_menu_item_title_system_delete', '_bx_persons_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 98),
 ('bx_persons_menu_manage_tools', 'bx_persons', 'delete-with-content', '_bx_persons_menu_item_title_system_delete_with_content', '_bx_persons_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 99);
 
 -- MENU: dashboard manage tools
@@ -509,6 +508,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_persons_administration', 'last_online', '_bx_persons_grid_column_title_adm_last_online', '20%', 1, '25', '', 5),
 ('bx_persons_administration', 'account', '_bx_persons_grid_column_title_adm_account', '20%', 0, '25', '', 6),
 ('bx_persons_administration', 'actions', '', '20%', 0, '', '', 7),
+
 ('bx_persons_common', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
 ('bx_persons_common', 'fullname', '_bx_persons_grid_column_title_adm_fullname', '48%', 0, '', '', 2),
 ('bx_persons_common', 'last_online', '_bx_persons_grid_column_title_adm_last_online', '30%', 1, '25', '', 3),
@@ -516,16 +516,14 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('bx_persons_administration', 'bulk', 'set_acl_level', '_bx_persons_grid_action_title_adm_set_acl_level', '', 0, 0, 1),
-('bx_persons_administration', 'bulk', 'delete', '_bx_persons_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_persons_administration', 'bulk', 'delete_with_content', '_bx_persons_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_persons_administration', 'bulk', 'clear_reports', '_bx_persons_grid_action_title_adm_clear_reports', '', 0, 1, 4),
+('bx_persons_administration', 'bulk', 'delete_with_content', '_bx_persons_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
+('bx_persons_administration', 'bulk', 'clear_reports', '_bx_persons_grid_action_title_adm_clear_reports', '', 0, 1, 3),
 ('bx_persons_administration', 'single', 'set_acl_level', '_bx_persons_grid_action_title_adm_set_acl_level', 'certificate', 1, 0, 1),
 ('bx_persons_administration', 'single', 'settings', '_bx_persons_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
 ('bx_persons_administration', 'single', 'audit_content', '_bx_persons_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
 ('bx_persons_administration', 'single', 'audit_profile', '_bx_persons_grid_action_title_adm_audit_profile', 'search-location', 1, 0, 4),
 
-('bx_persons_common', 'bulk', 'delete', '_bx_persons_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_persons_common', 'bulk', 'delete_with_content', '_bx_persons_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
+('bx_persons_common', 'bulk', 'delete_with_content', '_bx_persons_grid_action_title_adm_delete_with_content', '', 0, 1, 1),
 ('bx_persons_common', 'single', 'settings', '_bx_persons_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
 
 -- LIVE UPDATES

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

@@ -210,6 +210,7 @@
     <string name="_bx_channels_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
     <string name="_bx_channels_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Любая аудитория]]></string>
     <string name="_bx_channels_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_channels_grid_filter_item_title_adm_hidden"><![CDATA[Спрятанные]]></string>
     <string name="_bx_channels_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
     <string name="_bx_channels_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
     <string name="_bx_channels_grid_column_title_adm_active"><![CDATA[Активные]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/bx_courses/ru.xml

@@ -311,6 +311,7 @@
     <string name="_bx_courses_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Любая аудитория]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_courses_grid_filter_item_title_adm_hidden"><![CDATA[Спрятанные]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
     <string name="_bx_courses_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
     <string name="_bx_courses_grid_column_title_adm_active"><![CDATA[Активные]]></string>

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

@@ -16,6 +16,7 @@
     <string name="_bx_spaces_option_members_mode_multi_roles"><![CDATA[Множественные роли]]></string>
     <string name="_bx_events_option_public_subscribed_me"><![CDATA[Открытый список заинтересованных пользователей]]></string>
     <string name="_bx_events_option_per_page_for_favorites_lists"><![CDATA[Количество списков избранного на странице]]></string>
+    <string name="_bx_events_option_enable_subscribe_wo_join"><![CDATA[Разрешить помечать как 'Заинтересован' пользователям, не являющимся участниками события]]></string>
     <string name="_bx_events_option_internal_notifications"><![CDATA[Использовать встроенную нотификацию]]></string>
 
     <string name="_bx_events_form_profile"><![CDATA[События]]></string>

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

@@ -271,8 +271,6 @@
     <string name="_bx_orgs_menu_set_title_entries_my"><![CDATA[Организации профиля - Меню]]></string>
     <string name="_bx_orgs_menu_set_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
     <string name="_bx_orgs_menu_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
-    <string name="_bx_orgs_menu_item_title_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_orgs_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_orgs_menu_item_title_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_orgs_menu_item_title_system_clear_reports"><![CDATA[Очистить жалобы]]></string>
@@ -390,7 +388,6 @@
     <string name="_bx_orgs_grid_column_title_adm_fullname"><![CDATA[Название]]></string>
     <string name="_bx_orgs_grid_column_title_adm_last_online"><![CDATA[Последнее посещение]]></string>
     <string name="_bx_orgs_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_orgs_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_orgs_grid_action_title_adm_clear_reports"><![CDATA[Очистить жалобы]]></string>
     <string name="_bx_orgs_grid_action_title_adm_set_acl_level"><![CDATA[Назначить членство]]></string>

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

@@ -197,8 +197,6 @@
     <string name="_bx_persons_menu_title_view_profile_submenu"><![CDATA[Подменю просмотра персоны]]></string>
     <string name="_bx_persons_menu_set_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
     <string name="_bx_persons_menu_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
-    <string name="_bx_persons_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
-    <string name="_bx_persons_menu_item_title_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_persons_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_persons_menu_item_title_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_persons_menu_item_title_system_clear_reports"><![CDATA[Очистить жалобы]]></string>
@@ -299,7 +297,6 @@
     <string name="_bx_persons_grid_column_title_adm_fullname"><![CDATA[Имя]]></string>
     <string name="_bx_persons_grid_column_title_adm_last_online"><![CDATA[Последнее посещение]]></string>
     <string name="_bx_persons_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>
-    <string name="_bx_persons_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_persons_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
     <string name="_bx_persons_grid_action_title_adm_clear_reports"><![CDATA[Очистить жалобы]]></string>
     <string name="_bx_persons_grid_action_title_adm_set_acl_level"><![CDATA[Назначить членство]]></string>

+ 84 - 81
modules/boonex/russian/data/langs/system/ru.xml

@@ -1451,45 +1451,46 @@
 	<string name="_adm_rl_btn_role_cancel"><![CDATA[Отменить]]></string>
         <string name="_adm_rl_btn_role_save"><![CDATA[Сохранить]]></string>
 
-	<string name="_adm_scs_operation_done"><![CDATA[]]></string>
-	<string name="_adm_stg_cpt_category_account"><![CDATA[Аккаунт]]></string>
-	<string name="_adm_stg_cpt_category_acl"><![CDATA[Уровни доступа]]></string>
-        <string name="_adm_stg_cpt_category_audit"><![CDATA[Аудит]]></string>
-	<string name="_adm_stg_cpt_category_notifications"><![CDATA[Оповещения]]></string>
-	<string name="_adm_stg_cpt_category_notifications_push"><![CDATA[Push - оповещения]]></string>
-	<string name="_adm_stg_cpt_category_cache"><![CDATA[Кэш]]></string>
-	<string name="_adm_stg_cpt_category_general"><![CDATA[Общие]]></string>
-	<string name="_adm_stg_cpt_category_hidden"><![CDATA[Скрытые]]></string>
-	<string name="_adm_stg_cpt_category_languages"><![CDATA[Языки]]></string>
-	<string name="_adm_stg_cpt_category_permalinks"><![CDATA[Пермалинки]]></string>
-	<string name="_adm_stg_cpt_category_security"><![CDATA[Безопасность]]></string>
-	<string name="_adm_stg_cpt_category_site_settings"><![CDATA[Настройки сайта]]></string>
-	<string name="_adm_stg_cpt_category_storage"><![CDATA[Дисковое пространство]]></string>
-	<string name="_adm_stg_cpt_category_system"><![CDATA[Система]]></string>
-	<string name="_adm_stg_cpt_category_templates"><![CDATA[Темы]]></string>
+    <string name="_adm_scs_operation_done"><![CDATA[]]></string>
+    <string name="_adm_stg_cpt_category_account"><![CDATA[Аккаунт]]></string>
+    <string name="_adm_stg_cpt_category_acl"><![CDATA[Уровни доступа]]></string>
+    <string name="_adm_stg_cpt_category_audit"><![CDATA[Аудит]]></string>
+    <string name="_adm_stg_cpt_category_notifications"><![CDATA[Оповещения]]></string>
+    <string name="_adm_stg_cpt_category_notifications_push"><![CDATA[Push - оповещения]]></string>
+    <string name="_adm_stg_cpt_category_cache"><![CDATA[Кэш]]></string>
+    <string name="_adm_stg_cpt_category_general"><![CDATA[Общие]]></string>
+    <string name="_adm_stg_cpt_category_hidden"><![CDATA[Скрытые]]></string>
+    <string name="_adm_stg_cpt_category_languages"><![CDATA[Языки]]></string>
+    <string name="_adm_stg_cpt_category_permalinks"><![CDATA[Пермалинки]]></string>
+    <string name="_adm_stg_cpt_category_security"><![CDATA[Безопасность]]></string>
+    <string name="_adm_stg_cpt_category_site_settings"><![CDATA[Настройки сайта]]></string>
+    <string name="_adm_stg_cpt_category_storage"><![CDATA[Дисковое пространство]]></string>
+    <string name="_adm_stg_cpt_category_system"><![CDATA[Система]]></string>
+    <string name="_adm_stg_cpt_category_templates"><![CDATA[Темы]]></string>
     <string name="_adm_stg_cpt_category_twilio_gate"><![CDATA[Twilio]]></string>
     <string name="_adm_stg_cpt_category_location"><![CDATA[Местоположение]]></string>
+    <string name="_adm_stg_cpt_category_social_settings"><![CDATA[Социальные настройки]]></string>
     <string name="_adm_stg_cpt_option_client_image_resize_width"><![CDATA[Изменять ширину картинки перед загрузкой (0 - отключить)]]></string>
     <string name="_adm_stg_cpt_option_client_image_resize_height"><![CDATA[Изменять высоту картинки перед загрузкой (0 - отключить)]]></string>    
-	<string name="_adm_stg_cpt_option_currency_code"><![CDATA[Код валюты (для платёжных систем)]]></string>
-	<string name="_adm_stg_err_option_currency_code"><![CDATA[Не должно быть пустым.]]></string>
-	<string name="_adm_stg_cpt_option_currency_sign"><![CDATA[Знак валюты (только для отображения)]]></string>
-	<string name="_adm_stg_err_option_currency_sign"><![CDATA[Не должно быть пустым.]]></string>
-	<string name="_adm_stg_cpt_option_enable_gd"><![CDATA[Использовать библиотеку GD для обработки изображений]]></string>
-	<string name="_adm_stg_cpt_option_enable_notification_account"><![CDATA[Оповещать о новых аккаунтах]]></string>
-	<string name="_adm_stg_cpt_option_enable_notification_pruning"><![CDATA[Оповещать о результатах очистки]]></string>
-	<string name="_adm_stg_cpt_option_expire_notification_days"><![CDATA[Оповещать перед тем, как истечёт срок членства за такое количество дней ( -1 = после истечения срока )]]></string>
-	<string name="_adm_stg_cpt_option_expire_notify_once"><![CDATA[Оповещать об истечении срока членства только один раз (иначе, каждый день)]]></string>
-	<string name="_adm_stg_cpt_option_lang_default"><![CDATA[Основной Язык]]></string>
-	<string name="_adm_stg_cpt_option_lang_subst_from_en"><![CDATA[Заменить (на этапе компиляции) отсутствующий перевод английским эквивалентом]]></string>	
-	<string name="_adm_stg_cpt_option_permalinks_modules"><![CDATA[Задействовать дружественные ссылки для модулей]]></string>
+    <string name="_adm_stg_cpt_option_currency_code"><![CDATA[Код валюты (для платёжных систем)]]></string>
+    <string name="_adm_stg_err_option_currency_code"><![CDATA[Не должно быть пустым.]]></string>
+    <string name="_adm_stg_cpt_option_currency_sign"><![CDATA[Знак валюты (только для отображения)]]></string>
+    <string name="_adm_stg_err_option_currency_sign"><![CDATA[Не должно быть пустым.]]></string>
+    <string name="_adm_stg_cpt_option_enable_gd"><![CDATA[Использовать библиотеку GD для обработки изображений]]></string>
+    <string name="_adm_stg_cpt_option_enable_notification_account"><![CDATA[Оповещать о новых аккаунтах]]></string>
+    <string name="_adm_stg_cpt_option_enable_notification_pruning"><![CDATA[Оповещать о результатах очистки]]></string>
+    <string name="_adm_stg_cpt_option_expire_notification_days"><![CDATA[Оповещать перед тем, как истечёт срок членства за такое количество дней ( -1 = после истечения срока )]]></string>
+    <string name="_adm_stg_cpt_option_expire_notify_once"><![CDATA[Оповещать об истечении срока членства только один раз (иначе, каждый день)]]></string>
+    <string name="_adm_stg_cpt_option_lang_default"><![CDATA[Основной Язык]]></string>
+    <string name="_adm_stg_cpt_option_lang_subst_from_en"><![CDATA[Заменить (на этапе компиляции) отсутствующий перевод английским эквивалентом]]></string>	
+    <string name="_adm_stg_cpt_option_permalinks_modules"><![CDATA[Задействовать дружественные ссылки для модулей]]></string>
     <string name="_adm_stg_cpt_option_permalinks_pages"><![CDATA[Задействовать дружественные ссылки для страниц]]></string>
     <string name="_adm_stg_cpt_option_permalinks_storage"><![CDATA[Задействовать дружественные ссылки для локального хранилища]]></string>
     <string name="_adm_stg_cpt_option_permalinks_seo_links"><![CDATA[Включить ссылки оптимизированные для поисковых систем]]></string>
     <string name="_adm_stg_cpt_option_permalinks_seo_links_redirects"><![CDATA[Включить перенаправление с обычных ссылок на оптимизированные]]></string>
-	<string name="_adm_stg_cpt_option_site_email"><![CDATA[Email для получения критических уведомлений от сайта]]></string>
-	<string name="_adm_stg_cpt_option_site_email_notify"><![CDATA[Email, с которого будут посылаться сообщения от сайта]]></string>
-	<string name="_adm_stg_cpt_option_site_email_html_template_header"><![CDATA[Заголовок HTML шаблона email сообщения]]></string>
+    <string name="_adm_stg_cpt_option_site_email"><![CDATA[Email для получения критических уведомлений от сайта]]></string>
+    <string name="_adm_stg_cpt_option_site_email_notify"><![CDATA[Email, с которого будут посылаться сообщения от сайта]]></string>
+    <string name="_adm_stg_cpt_option_site_email_html_template_header"><![CDATA[Заголовок HTML шаблона email сообщения]]></string>
     <string name="_adm_stg_cpt_option_site_email_html_template_footer"><![CDATA[Основание HTML шаблона email сообщения]]></string>
     <string name="_adm_stg_cpt_option_site_login_social_compact"><![CDATA[Задействовать компактный вид входа через соц. сети]]></string>
     <string name="_adm_stg_cpt_option_site_title"><![CDATA[Название сайта]]></string>
@@ -1630,25 +1631,25 @@
 	<string name="_adm_stg_cpt_option_sys_storage_s3_sig_ver"><![CDATA[Версия подписи (только S3v4alt движок поддерживает обе версии v4 и v2)]]></string>
 	<string name="_adm_stg_cpt_option_sys_storage_s3_region"><![CDATA[Регион (только для подписи v4)]]></string>
 
-	<string name="_adm_stg_cpt_option_sys_template_cache_image_enable"><![CDATA[Задействовать кэш для изображений]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_image_max_size"><![CDATA[Максимальный размер кэшируемого изображения (в Кб)]]></string>
-        <string name="_adm_stg_cpt_option_sys_template_cache_image_max_size_err"><![CDATA[Используйте не пустое значение не больше 10Кб. Большие заначения не имеют смысла.]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_compress_enable"><![CDATA[Задействовать сжатие для файлов JS/CSS (кэш должен быть задействован)]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_css_enable"><![CDATA[Задействовать кэш для файлов CSS]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_enable"><![CDATA[Задействовать кэш для файлов HTML]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_engine"><![CDATA[Кэш-движок для темы (темплейта) (отличный от FileHtml может потребовать дополнительную настройку сервера)]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_js_enable"><![CDATA[Задействовать кэш для файлов JS]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_minify_css_enable"><![CDATA[Задействовать уменьшение для файлов CSS (кэш должен быть задействован)]]></string>
-	<string name="_adm_stg_cpt_option_sys_template_cache_minify_js_enable"><![CDATA[Задействовать уменьшение для файлов JS (кэш должен быть задействован)]]></string>
-	<string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Удалённая раскодировка видео (требуется дополнительная настройка)]]></string>
-	<string name="_adm_stg_cpt_option_sys_session_lifetime_in_min"><![CDATA[Время жизни сессии (в минутах)]]></string>
-	<string name="_adm_stg_cpt_option_sys_default_curl_timeout"><![CDATA[cURL - Таймаут по умолчанию]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_image_enable"><![CDATA[Задействовать кэш для изображений]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_image_max_size"><![CDATA[Максимальный размер кэшируемого изображения (в Кб)]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_image_max_size_err"><![CDATA[Используйте не пустое значение не больше 10Кб. Большие заначения не имеют смысла.]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_compress_enable"><![CDATA[Задействовать сжатие для файлов JS/CSS (кэш должен быть задействован)]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_css_enable"><![CDATA[Задействовать кэш для файлов CSS]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_enable"><![CDATA[Задействовать кэш для файлов HTML]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_engine"><![CDATA[Кэш-движок для темы (темплейта) (отличный от FileHtml может потребовать дополнительную настройку сервера)]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_js_enable"><![CDATA[Задействовать кэш для файлов JS]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_minify_css_enable"><![CDATA[Задействовать уменьшение для файлов CSS (кэш должен быть задействован)]]></string>
+    <string name="_adm_stg_cpt_option_sys_template_cache_minify_js_enable"><![CDATA[Задействовать уменьшение для файлов JS (кэш должен быть задействован)]]></string>
+    <string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Удалённая раскодировка видео (требуется дополнительная настройка)]]></string>
+    <string name="_adm_stg_cpt_option_sys_session_lifetime_in_min"><![CDATA[Время жизни сессии (в минутах)]]></string>
+    <string name="_adm_stg_cpt_option_sys_default_curl_timeout"><![CDATA[cURL - Таймаут по умолчанию]]></string>
     <string name="_adm_stg_cpt_option_sys_ssl_allow_untrusted"><![CDATA[cURL - доверять неподписанным сертификатам или неподтвержденным хостам]]></string>
     <string name="_adm_stg_cpt_option_sys_csp_frame_ancestors"><![CDATA[Значение заголовка 'Content-Security-Policy: frame-ancestors']]></string>
     <string name="_adm_stg_cpt_option_sys_samesite_cookies"><![CDATA[Значение "SameSite" для конфиденциальных Cookie]]></string>
     <string name="_adm_stg_cpt_option_sys_notify_to_approve_by_role"><![CDATA[Оповещать участников контекста с определенной ролью о необходимости одобрять контент в контексте]]></string>
-	<string name="_adm_stg_cpt_option_sys_fixed_header"><![CDATA[Статический заголовок]]></string>
-	<string name="_adm_stg_cpt_option_sys_css_media_classes"><![CDATA[CSS @media интервалы]]></string>
+    <string name="_adm_stg_cpt_option_sys_fixed_header"><![CDATA[Статический заголовок]]></string>
+    <string name="_adm_stg_cpt_option_sys_css_media_classes"><![CDATA[CSS @media интервалы]]></string>
     <string name="_adm_stg_cpt_option_template"><![CDATA[Основная тема]]></string>
     <string name="_adm_stg_err_option_template"><![CDATA[Тема не может быть пустой и должна иметь приемлемое название.]]></string>
     <string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Использовать для поиска оператор LIKE (рекомендуется для небольшого содержимого)]]></string>
@@ -1669,41 +1670,43 @@
     <string name="_adm_stg_cpt_option_sys_logs_storage_default"><![CDATA[Система логирования по умолчанию]]></string>
     <string name="_adm_stg_cpt_option_sys_vote_reactions_quick_mode"><![CDATA[Включить режим 'Быстрых реакций' - голосовать при клике, используя реакцию по умолчанию]]></string>
     <string name="_adm_stg_cpt_option_sys_cmts_enable_auto_approve"><![CDATA[Автоматически активировать комментарий после создания]]></string>
-	<string name="_adm_stg_cpt_type_system"><![CDATA[Система]]></string>
-	<string name="_adm_stg_scs_save"><![CDATA[Настройки удачно сохранены]]></string>
-	<string name="_adm_stg_err_save_error_message"><![CDATA[Ошибка в '{0}': {1}]]></string>
-	<string name="_adm_stg_err_cannot_perform"><![CDATA[Не могу выполнить действие.]]></string>
-	<string name="_adm_stg_err_mix_already_exists"><![CDATA[Набор с таким именем уже существует.]]></string>
-	<string name="_adm_stg_txt_create_mix_popup"><![CDATA[Добавить новый набор]]></string>
-	<string name="_adm_stg_txt_import_mix_popup"><![CDATA[Импортировать набор]]></string>
-        <string name="_adm_stg_txt_mix_dark"><![CDATA[Темный]]></string>
-	<string name="_adm_stg_txt_mix_duplicate"><![CDATA[Продублировать]]></string>
-	<string name="_adm_stg_txt_mix_duplicate_inf"><![CDATA[Используйте 'Никакой', чтобы продублировать Системные значения]]></string>
-	<string name="_adm_stg_txt_mix_title"><![CDATA[Название набора]]></string>
-        <string name="_adm_stg_txt_mix_title_inf"><![CDATA[Создайте <b>_sys_template_mixed_[template_name]_[mix_name]</b> языковой ключ в Polyglot, чтобы изменить публичное отображение. <b>[template_name]</b> и <b>[mix_name]</b>: строчные буквы, пробелы заменены на подчеркивания.]]></string>
-	<string name="_adm_stg_txt_mix_title_err"><![CDATA[Нужно указать название. Пожалуйста, заполните это поле.]]></string>
-	<string name="_adm_stg_txt_mix_system"><![CDATA[Системный]]></string>
-	<string name="_adm_stg_err_remove_old_image"><![CDATA[Невозможно удалить текущее изображение.]]></string>
-	<string name="_adm_str_cpt_files_file"><![CDATA[Файл]]></string>
-	<string name="_adm_str_cpt_files_version"><![CDATA[Версия]]></string>
-	<string name="_adm_str_err_cannot_connect_to_ftp"><![CDATA[Невозможно соединиться с FTP-сервером. Проверьте детали доступа к FTP в Настройки -> Общие.]]></string>
-	<string name="_adm_str_err_cannot_unzip_package"><![CDATA[Невозможно распаковать ZIP-архив.]]></string>
-	<string name="_adm_str_err_cannot_write"><![CDATA[Невозможно сохранить скачанный файл.]]></string>
-	<string name="_adm_str_err_destination_not_valid"><![CDATA[Папка назначения FTP не является корневой папкой для скрипта.]]></string>
-	<string name="_adm_str_err_download_failed"><![CDATA[Скачка не удалась. Пожалуйста, оповестите нас.]]></string>
-	<string name="_adm_str_err_files_copy_failed"><![CDATA[Загрузка файла не удалась. Пожалуйста, проверьте разрешение на запись.]]></string>
-	<string name="_adm_str_err_no_ftp_info"><![CDATA[Реквизиты доступа к FTP не указаны. Вы можете их ввести в Настройки -> Общие.]]></string>
-	<string name="_adm_str_err_no_product_info"><![CDATA[Невозможно загрузить информацию о товаре. Попробуйте позднее.]]></string>
-	<string name="_adm_str_err_wrong_package_format"><![CDATA[Неверный формат пакета.]]></string>
-	<string name="_adm_str_err_zip_not_available"><![CDATA[ZIP-библиотека не доступна.]]></string>
-	<string name="_adm_str_msg_download_scheduled"><![CDATA[Закачка добавлена в очередь. Через несколько минут закачанный пакет будет доступен в  Приложения -> Скачанные.]]></string>
-	<string name="_adm_str_msg_download_and_install_scheduled"><![CDATA[Закачка и последующая установка добавлены в очередь. Это может занять несколько минут.]]></string>
-	<string name="_adm_str_msg_download_successfully"><![CDATA[Закачка удачно завершена. Вы можете установить модуль через Приложения -> Скачанные.]]></string>
-	<string name="_adm_str_msg_download_and_install_successfully"><![CDATA[Закачка и последующая установка удачно завершены.]]></string>
-	<string name="_adm_str_txt_discount_csign"><![CDATA[({0}{1} для Премиум)]]></string>
-	<string name="_adm_str_txt_items_by"><![CDATA[элементов от]]></string>
-	<string name="_adm_str_txt_or"><![CDATA[или]]></string>
-	<string name="_adm_str_txt_per_week"><![CDATA[неделю]]></string>
+    <string name="_adm_stg_cpt_option_sys_a2a_enable"><![CDATA[Использовать Add2Any код вместо стандартного меню "Поделиться"]]></string>
+    <string name="_adm_stg_cpt_option_sys_a2a_code"><![CDATA[Add2Any код]]></string>
+    <string name="_adm_stg_cpt_type_system"><![CDATA[Система]]></string>
+    <string name="_adm_stg_scs_save"><![CDATA[Настройки удачно сохранены]]></string>
+    <string name="_adm_stg_err_save_error_message"><![CDATA[Ошибка в '{0}': {1}]]></string>
+    <string name="_adm_stg_err_cannot_perform"><![CDATA[Не могу выполнить действие.]]></string>
+    <string name="_adm_stg_err_mix_already_exists"><![CDATA[Набор с таким именем уже существует.]]></string>
+    <string name="_adm_stg_txt_create_mix_popup"><![CDATA[Добавить новый набор]]></string>
+    <string name="_adm_stg_txt_import_mix_popup"><![CDATA[Импортировать набор]]></string>
+    <string name="_adm_stg_txt_mix_dark"><![CDATA[Темный]]></string>
+    <string name="_adm_stg_txt_mix_duplicate"><![CDATA[Продублировать]]></string>
+    <string name="_adm_stg_txt_mix_duplicate_inf"><![CDATA[Используйте 'Никакой', чтобы продублировать Системные значения]]></string>
+    <string name="_adm_stg_txt_mix_title"><![CDATA[Название набора]]></string>
+    <string name="_adm_stg_txt_mix_title_inf"><![CDATA[Создайте <b>_sys_template_mixed_[template_name]_[mix_name]</b> языковой ключ в Polyglot, чтобы изменить публичное отображение. <b>[template_name]</b> и <b>[mix_name]</b>: строчные буквы, пробелы заменены на подчеркивания.]]></string>
+    <string name="_adm_stg_txt_mix_title_err"><![CDATA[Нужно указать название. Пожалуйста, заполните это поле.]]></string>
+    <string name="_adm_stg_txt_mix_system"><![CDATA[Системный]]></string>
+    <string name="_adm_stg_err_remove_old_image"><![CDATA[Невозможно удалить текущее изображение.]]></string>
+    <string name="_adm_str_cpt_files_file"><![CDATA[Файл]]></string>
+    <string name="_adm_str_cpt_files_version"><![CDATA[Версия]]></string>
+    <string name="_adm_str_err_cannot_connect_to_ftp"><![CDATA[Невозможно соединиться с FTP-сервером. Проверьте детали доступа к FTP в Настройки -> Общие.]]></string>
+    <string name="_adm_str_err_cannot_unzip_package"><![CDATA[Невозможно распаковать ZIP-архив.]]></string>
+    <string name="_adm_str_err_cannot_write"><![CDATA[Невозможно сохранить скачанный файл.]]></string>
+    <string name="_adm_str_err_destination_not_valid"><![CDATA[Папка назначения FTP не является корневой папкой для скрипта.]]></string>
+    <string name="_adm_str_err_download_failed"><![CDATA[Скачка не удалась. Пожалуйста, оповестите нас.]]></string>
+    <string name="_adm_str_err_files_copy_failed"><![CDATA[Загрузка файла не удалась. Пожалуйста, проверьте разрешение на запись.]]></string>
+    <string name="_adm_str_err_no_ftp_info"><![CDATA[Реквизиты доступа к FTP не указаны. Вы можете их ввести в Настройки -> Общие.]]></string>
+    <string name="_adm_str_err_no_product_info"><![CDATA[Невозможно загрузить информацию о товаре. Попробуйте позднее.]]></string>
+    <string name="_adm_str_err_wrong_package_format"><![CDATA[Неверный формат пакета.]]></string>
+    <string name="_adm_str_err_zip_not_available"><![CDATA[ZIP-библиотека не доступна.]]></string>
+    <string name="_adm_str_msg_download_scheduled"><![CDATA[Закачка добавлена в очередь. Через несколько минут закачанный пакет будет доступен в  Приложения -> Скачанные.]]></string>
+    <string name="_adm_str_msg_download_and_install_scheduled"><![CDATA[Закачка и последующая установка добавлены в очередь. Это может занять несколько минут.]]></string>
+    <string name="_adm_str_msg_download_successfully"><![CDATA[Закачка удачно завершена. Вы можете установить модуль через Приложения -> Скачанные.]]></string>
+    <string name="_adm_str_msg_download_and_install_successfully"><![CDATA[Закачка и последующая установка удачно завершены.]]></string>
+    <string name="_adm_str_txt_discount_csign"><![CDATA[({0}{1} для Премиум)]]></string>
+    <string name="_adm_str_txt_items_by"><![CDATA[элементов от]]></string>
+    <string name="_adm_str_txt_or"><![CDATA[или]]></string>
+    <string name="_adm_str_txt_per_week"><![CDATA[неделю]]></string>
     <string name="_adm_str_txt_per_week_short"><![CDATA[нед]]></string>
     <string name="_adm_str_txt_per_month"><![CDATA[месяц]]></string>
     <string name="_adm_str_txt_per_month_short"><![CDATA[мес]]></string>

+ 14 - 13
modules/boonex/spaces/install/sql/enable.sql

@@ -402,9 +402,9 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_spaces_menu_manage_tools', 'bx_spaces', '_bx_spaces_menu_set_title_manage_tools', 0);
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
-('bx_spaces_menu_manage_tools', 'bx_spaces', 'delete', '_bx_spaces_menu_item_title_system_delete', '_bx_spaces_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
-('bx_spaces_menu_manage_tools', 'bx_spaces', 'delete-with-content', '_bx_spaces_menu_item_title_system_delete_with_content', '_bx_spaces_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
-('bx_spaces_menu_manage_tools', 'bx_spaces', 'clear-reports', '_bx_spaces_menu_item_title_system_clear_reports', '_bx_spaces_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 3);
+('bx_spaces_menu_manage_tools', 'bx_spaces', 'clear-reports', '_bx_spaces_menu_item_title_system_clear_reports', '_bx_spaces_menu_item_title_clear_reports', 'javascript:void(0)', 'javascript:{js_object}.onClickClearReports({content_id});', '_self', 'eraser', '', 2147483647, 1, 0, 1),
+('bx_spaces_menu_manage_tools', 'bx_spaces', 'delete', '_bx_spaces_menu_item_title_system_delete', '_bx_spaces_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2),
+('bx_spaces_menu_manage_tools', 'bx_spaces', 'delete-with-content', '_bx_spaces_menu_item_title_system_delete_with_content', '_bx_spaces_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 0, 0, 3);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -580,16 +580,17 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_spaces_common', 'added_ts', '_bx_spaces_grid_column_title_adm_added', '30%', 1, '25', '', 4),
 ('bx_spaces_common', 'actions', '', '20%', 0, '', '', 5);
 
-INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
-('bx_spaces_administration', 'bulk', 'delete', '_bx_spaces_grid_action_title_adm_delete', '', 0, 1, 2),
-('bx_spaces_administration', 'bulk', 'delete_with_content', '_bx_spaces_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
-('bx_spaces_administration', 'bulk', 'clear_reports', '_bx_spaces_grid_action_title_adm_clear_reports', '', 0, 1, 4),
-('bx_spaces_administration', 'single', 'settings', '_bx_spaces_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
-('bx_spaces_administration', 'single', 'audit_content', '_bx_spaces_grid_action_title_adm_audit_content', 'search', 1, 0, 3),
-('bx_spaces_administration', 'single', 'audit_context', '_bx_spaces_grid_action_title_adm_audit_context', 'search-location', 1, 0, 4),
-('bx_spaces_common', 'bulk', 'delete', '_bx_spaces_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_spaces_common', 'bulk', 'delete_with_content', '_bx_spaces_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
-('bx_spaces_common', 'single', 'settings', '_bx_spaces_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `active`, `order`) VALUES
+('bx_spaces_administration', 'bulk', 'clear_reports', '_bx_spaces_grid_action_title_adm_clear_reports', '', 0, 1, 1, 1),
+('bx_spaces_administration', 'bulk', 'delete', '_bx_spaces_grid_action_title_adm_delete', '', 0, 1, 1, 2),
+('bx_spaces_administration', 'bulk', 'delete_with_content', '_bx_spaces_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 3),
+('bx_spaces_administration', 'single', 'settings', '_bx_spaces_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 2),
+('bx_spaces_administration', 'single', 'audit_content', '_bx_spaces_grid_action_title_adm_audit_content', 'search', 1, 0, 1, 3),
+('bx_spaces_administration', 'single', 'audit_context', '_bx_spaces_grid_action_title_adm_audit_context', 'search-location', 1, 0, 1, 4),
+
+('bx_spaces_common', 'bulk', 'delete', '_bx_spaces_grid_action_title_adm_delete', '', 0, 1, 1, 1),
+('bx_spaces_common', 'bulk', 'delete_with_content', '_bx_spaces_grid_action_title_adm_delete_with_content', '', 0, 1, 0, 2),
+('bx_spaces_common', 'single', 'settings', '_bx_spaces_grid_action_title_adm_more_actions', 'cog', 1, 0, 1, 1);
 
 -- GRIDS: Pricing
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES

+ 9 - 0
plugins_public/tailwind/css/tailwind.css

@@ -183,6 +183,9 @@
     .bx-artificer .bx-def-margin {
         @apply m-4;
     }
+    .bx-artificer .bx-def-margin-neg {
+        @apply -m-4;
+    }
     .bx-artificer .bx-def-margin-left {
         @apply ml-4;
     }
@@ -223,6 +226,9 @@
     .bx-artificer .bx-def-margin-sec {
         @apply m-2;
     }
+    .bx-artificer .bx-def-margin-sec-neg {
+        @apply -m-2;
+    }
     .bx-artificer .bx-def-margin-sec-left {
         @apply ml-2;
     }
@@ -269,6 +275,9 @@
     .bx-artificer .bx-def-margin-thd {
         @apply m-1;
     }
+    .bx-artificer .bx-def-margin-thd-neg {
+        @apply -m-1;
+    }
     .bx-artificer .bx-def-margin-thd-left {
         @apply ml-1;
     }

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


+ 3 - 3
plugins_public/tailwind/js/tailwind.config.js

@@ -44,9 +44,9 @@ module.exports = {
     'bg-col-gray', 'bg-col-gray-dark',
 
     'bx-def-box-sizing', 'bx-def-align-center',  'bx-def-valign-center', 'bx-def-centered', 
-    'bx-def-margin', 'bx-def-margin-left', 'bx-def-margin-left-auto', 'bx-def-margin-right', 'bx-def-margin-top', 'bx-def-margin-top-auto', 'bx-def-margin-bottom', 'bx-def-margin-leftright', 'bx-def-margin-leftright-neg', 'bx-def-margin-topbottom', 'bx-def-margin-topbottom-neg', 'bx-def-margin-lefttopright', 'bx-def-margin-rightbottomleft', 
-    'bx-def-margin-sec', 'bx-def-margin-sec-left', 'bx-def-margin-sec-left-auto', 'bx-def-margin-sec-right', 'bx-def-margin-sec-top', 'bx-def-margin-sec-top-auto', 'bx-def-margin-sec-bottom', 'bx-def-margin-sec-leftright', 'bx-def-margin-sec-leftright-neg', 'bx-def-margin-sec-topbottom', 'bx-def-margin-sec-topbottom-neg', 'bx-def-margin-sec-lefttopright', 'bx-def-margin-sec-rightbottomleft', 
-    'bx-def-margin-thd', 'bx-def-margin-thd-left', 'bx-def-margin-thd-left-auto', 'bx-def-margin-thd-right', 'bx-def-margin-thd-top', 'bx-def-margin-thd-top-auto', 'bx-def-margin-thd-bottom', 'bx-def-margin-thd-leftright', 'bx-def-margin-thd-leftright-neg', 'bx-def-margin-thd-topbottom', 'bx-def-margin-thd-topbottom-neg', 'bx-def-margin-thd-lefttopright', 'bx-def-margin-thd-rightbottomleft', 
+    'bx-def-margin', 'bx-def-margin-neg', 'bx-def-margin-left', 'bx-def-margin-left-auto', 'bx-def-margin-right', 'bx-def-margin-top', 'bx-def-margin-top-auto', 'bx-def-margin-bottom', 'bx-def-margin-leftright', 'bx-def-margin-leftright-neg', 'bx-def-margin-topbottom', 'bx-def-margin-topbottom-neg', 'bx-def-margin-lefttopright', 'bx-def-margin-rightbottomleft', 
+    'bx-def-margin-sec', 'bx-def-margin-sec-neg', 'bx-def-margin-sec-left', 'bx-def-margin-sec-left-auto', 'bx-def-margin-sec-right', 'bx-def-margin-sec-top', 'bx-def-margin-sec-top-auto', 'bx-def-margin-sec-bottom', 'bx-def-margin-sec-leftright', 'bx-def-margin-sec-leftright-neg', 'bx-def-margin-sec-topbottom', 'bx-def-margin-sec-topbottom-neg', 'bx-def-margin-sec-lefttopright', 'bx-def-margin-sec-rightbottomleft', 
+    'bx-def-margin-thd', 'bx-def-margin-thd-neg', 'bx-def-margin-thd-left', 'bx-def-margin-thd-left-auto', 'bx-def-margin-thd-right', 'bx-def-margin-thd-top', 'bx-def-margin-thd-top-auto', 'bx-def-margin-thd-bottom', 'bx-def-margin-thd-leftright', 'bx-def-margin-thd-leftright-neg', 'bx-def-margin-thd-topbottom', 'bx-def-margin-thd-topbottom-neg', 'bx-def-margin-thd-lefttopright', 'bx-def-margin-thd-rightbottomleft', 
     'bx-def-padding', 'bx-def-padding-left', 'bx-def-padding-left-auto', 'bx-def-padding-right', 'bx-def-padding-top', 'bx-def-padding-top-auto', 'bx-def-padding-bottom', 'bx-def-padding-leftright', 'bx-def-padding-topbottom', 'bx-def-padding-lefttopright', 'bx-def-padding-rightbottomleft', 
     'bx-def-padding-sec', 'bx-def-padding-sec-left', 'bx-def-padding-sec-left-auto', 'bx-def-padding-sec-right', 'bx-def-padding-sec-top', 'bx-def-padding-sec-top-auto', 'bx-def-padding-sec-bottom', 'bx-def-padding-sec-leftright', 'bx-def-padding-sec-topbottom', 'bx-def-padding-sec-lefttopright', 'bx-def-padding-sec-rightbottomleft', 
     'bx-def-padding-thd', 'bx-def-padding-thd-left', 'bx-def-padding-thd-left-auto', 'bx-def-padding-thd-right', 'bx-def-padding-thd-top', 'bx-def-padding-thd-top-auto', 'bx-def-padding-thd-bottom', 'bx-def-padding-thd-leftright', 'bx-def-padding-thd-topbottom', 'bx-def-padding-thd-lefttopright', 'bx-def-padding-thd-rightbottomleft', 

+ 11 - 0
studio/template/scripts/BxBaseStudioOptions.php

@@ -540,6 +540,17 @@ class BxBaseStudioOptions extends BxDolStudioOptions
                     'db' => ['pass' => 'XssHtml'],
                 ];
                 break;
+            case 'code':
+                $aField = [
+                    'type' => 'textarea',
+                    'code' => true,
+                    'name' => $aItem['name'],
+                    'caption' => _t($aItem['caption']),
+                    'value' => $mixedValue,
+                    'attrs' => $aAttributes,
+                    'db' => ['pass' => 'XssHtml'],
+                ];
+                break;
             case 'checkbox':
                 $aField = [
                     'type' => 'checkbox',

+ 4 - 0
template/css/label.css

@@ -67,6 +67,10 @@
 
 
 /*-- Labels Popup List and Labels Browse  --*/
+.sys-labels-list-cnt {
+    max-height: 20rem;
+    overflow-y: auto;
+}
 .sys-labels-level {
     position: relative;
     

+ 1 - 0
template/grid.html

@@ -72,6 +72,7 @@
             glGrids = {};
         if (undefined == glGrids.__object__) {
             glGrids.__object__ = new BxDolGrid('__object__', {
+                csrf_token: '__csrf_token__',
                 sortable: __sortable__,
                 sorting: __sorting__,
                 paginate_get_start: '__paginate_get_start__',

+ 5 - 0
template/scripts/BxBaseGrid.php

@@ -211,6 +211,7 @@ class BxBaseGrid extends BxDolGrid
 
         $aVars = array (
             'object' => $this->_sObject,
+            'csrf_token' => BxDolForm::getCsrfToken(),
             'id_table' => $sIdTable,
             'id_cont' => $sIdContainer,
             'id_wrap' => $sIdWrapper,
@@ -567,8 +568,12 @@ class BxBaseGrid extends BxDolGrid
         $sActionsType = 'actions_' . $sType;
         if (empty($this->_aOptions[$sActionsType]) || !is_array($this->_aOptions[$sActionsType]))
             return '';
+
         $sRet = '';
         foreach ($this->_aOptions[$sActionsType] as $sKey => $a) {
+            if(!$a['active'] || (!$a['title'] && !$a['icon']))
+                continue;
+
             $sFunc = '_getAction' . $this->_genMethodName($sKey);
             if (!method_exists($this, $sFunc))
                 $sFunc = empty($a) ? '_getActionDivider' : '_getActionDefault';

+ 21 - 18
template/scripts/BxBasePage.php

@@ -65,25 +65,28 @@ class BxBasePage extends BxDolPage
     public function performActionGetShare ()
     {
         $aEmbedData = BxDolPage::getEmbedData(bx_get('url'));
-        if (isset($aEmbedData['url'])){
-            $aMarkers = array(
-                'url' => bx_get('url'),
-                'img_url_encoded' => '',
-                'title_encoded' => '',
-            );
-
-            $oMenu = BxDolMenu::getObjectInstance('sys_social_sharing');
-            $oMenu->addMarkers($aMarkers);
-            $sMenu = $oMenu->getCode();
-
-            echo PopupBox('sys_share_popup', _t('_sys_txt_share_popup_header'), 
-                $this->_oTemplate->parseHtmlByName('designbox_share_popup.html', [
-                    'url' => bx_process_output($aEmbedData['url']),
-                    'menu' => $sMenu,
-                    'code' => htmlspecialchars($aEmbedData['html']),
-                ]
-            ), true);
+        if(!isset($aEmbedData['url'])) 
+            return; 
+
+        $sMenu = '';
+        if(getParam('sys_a2a_enable') != 'on') {
+            if(($oMenu = BxDolMenu::getObjectInstance('sys_social_sharing')) !== false) {
+                $oMenu->addMarkers([
+                    'url' => $aEmbedData['url'],
+                    'img_url_encoded' => '',
+                    'title_encoded' => ''
+                ]);
+                $sMenu = $oMenu->getCode();
+            }
         }
+        else
+            $sMenu = getParam('sys_a2a_code');
+
+        echo PopupBox('sys_share_popup', _t('_sys_txt_share_popup_header'), $this->_oTemplate->parseHtmlByName('designbox_share_popup.html', [
+            'url' => bx_process_output($aEmbedData['url']),
+            'menu' => $sMenu,
+            'code' => htmlspecialchars($aEmbedData['html']),
+        ]), true);
     }
     
     public function performActionEmbed ()

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