AntonLV 3 лет назад
Родитель
Сommit
6c68ef5c26
38 измененных файлов с 5690 добавлено и 14 удалено
  1. 51 0
      modules/boonex/credits/updates/13.0.6_13.0.7/install/config.php
  2. 23 0
      modules/boonex/credits/updates/13.0.6_13.0.7/install/installer.php
  3. 5 0
      modules/boonex/credits/updates/13.0.6_13.0.7/install/langs/en.xml
  4. 9 0
      modules/boonex/credits/updates/13.0.6_13.0.7/install/sql/install.sql
  5. 334 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/classes/BxCreditsConfig.php
  6. 195 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/classes/BxCreditsTemplate.php
  7. 77 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/install/config.php
  8. 312 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/install/langs/en.xml
  9. 206 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/install/sql/install.sql
  10. 28 0
      modules/boonex/credits/updates/13.0.6_13.0.7/source/template/bundles.html
  11. 3 1
      modules/boonex/english/updates/13.0.9_13.0.10/install/langs/en.xml
  12. 4 0
      modules/boonex/english/updates/13.0.9_13.0.10/source/data/langs/system/en.xml
  13. 3 0
      modules/boonex/russian/updates/13.0.9_13.0.10/install/config.php
  14. 5 0
      modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_credits/ru.xml
  15. 8 0
      modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_spaces/ru.xml
  16. 5 0
      modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_timeline/ru.xml
  17. 6 2
      modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/system/ru.xml
  18. 310 0
      modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_credits/ru.xml
  19. 444 0
      modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_spaces/ru.xml
  20. 394 0
      modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_timeline/ru.xml
  21. 5 1
      modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/system/ru.xml
  22. 51 0
      modules/boonex/spaces/updates/13.0.5_13.0.6/install/config.php
  23. 13 0
      modules/boonex/spaces/updates/13.0.5_13.0.6/install/installer.php
  24. 8 0
      modules/boonex/spaces/updates/13.0.5_13.0.6/install/langs/en.xml
  25. 152 0
      modules/boonex/spaces/updates/13.0.5_13.0.6/source/install/config.php
  26. 448 0
      modules/boonex/spaces/updates/13.0.5_13.0.6/source/install/langs/en.xml
  27. 3 3
      modules/boonex/timeline/updates/13.0.9_13.0.10/install/config.php
  28. 5 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/install/langs/en.xml
  29. 5 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/install/sql/enable.sql
  30. 930 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineConfig.php
  31. 28 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineMenuItemActions.php
  32. 237 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineMenuItemShare.php
  33. 8 2
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineModule.php
  34. 1 5
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineTemplate.php
  35. 409 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/install/langs/en.xml
  36. 563 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/install/sql/enable.sql
  37. 330 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/js/post.js
  38. 72 0
      modules/boonex/timeline/updates/13.0.9_13.0.10/source/template/css/post.css

+ 51 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/install/config.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Credits',
+    'version_from' => '13.0.6',
+    'version_to' => '13.0.7',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '13.0.0-RC5'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/credits/updates/update_13.0.6_13.0.7/',
+    'home_uri' => 'credits_update_1306_1307',
+
+    'module_dir' => 'boonex/credits/',
+    'module_uri' => 'credits',
+
+    'db_prefix' => 'bx_credits_',
+    'class_prefix' => 'BxCredits',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Credits',
+
+    /**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 23 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/install/installer.php

@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+class BxCreditsUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+    {
+        parent::__construct($aConfig);
+    }
+
+    public function actionExecuteSql($sOperation)
+    {
+        if($sOperation == 'install') {
+            if(!$this->oDb->isFieldExists('bx_credits_bundles', 'description'))
+                $this->oDb->query("ALTER TABLE `bx_credits_bundles` ADD `description` varchar(255) NOT NULL AFTER `title`");
+        }
+
+        return parent::actionExecuteSql($sOperation);
+    }
+}

+ 5 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/install/langs/en.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_bx_credits_form_bundle_input_sys_description"><![CDATA[Description]]></string_add>
+    <string_add name="_bx_credits_form_bundle_input_description"><![CDATA[Description]]></string_add>
+</resources>

+ 9 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/install/sql/install.sql

@@ -0,0 +1,9 @@
+-- FORMS
+DELETE FROM `sys_form_inputs` WHERE `object`='bx_credits_bundle' AND `name`='description';
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_credits_bundle', 'bx_credits', 'description', '', '', 0, 'textarea_translatable', '_bx_credits_form_bundle_input_sys_description', '_bx_credits_form_bundle_input_description', '', 0, 0, 3, '', '', '', '', '', '', 'XssHtml', '', 1, 0);
+
+DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN ('bx_credits_bundle_add', 'bx_credits_bundle_edit') AND `input_name`='description';
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_credits_bundle_add', 'description', 2147483647, 1, 2),
+('bx_credits_bundle_edit', 'description', 2147483647, 1, 2);

+ 334 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/classes/BxCreditsConfig.php

@@ -0,0 +1,334 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Credits Credits
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCreditsConfig extends BxBaseModGeneralConfig
+{
+    protected $_iAuthor;
+    protected $_aCurrency;
+
+    protected $_sCheckoutSessionKey;
+
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $this->CNF = array (
+
+            // module icon
+            'ICON' => 'copyright col-green3',
+
+            // database tables
+            'TABLE_BUNDLES' => $aModule['db_prefix'] . 'bundles',
+            'TABLE_ORDERS' => $aModule['db_prefix'] . 'orders',
+            'TABLE_ORDERS_DELETED' => $aModule['db_prefix'] . 'orders_deleted',
+            'TABLE_PROFILES' => $aModule['db_prefix'] . 'profiles',
+            'TABLE_HISTORY' => $aModule['db_prefix'] . 'history',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => '',
+            'FIELD_ADDED' => 'added',
+            'FIELD_CHANGED' => '',
+            'FIELD_NAME' => 'name',
+            'FIELD_TITLE' => 'title',
+            'FIELD_DESCRIPTION' => 'description',
+            'FIELD_AMOUNT' => 'amount',
+            'FIELD_BONUS' => 'bonus',
+            'FIELD_PRICE' => 'price',
+            'FIELD_STATUS' => 'active',
+
+            'FIELD_C_CLEARED' => 'cleared',
+            'FIELD_C_AMOUNT' => 'amount',
+            'FIELD_C_MESSAGE' => 'message',
+
+            'FIELD_H_ID' => 'id',
+            'FIELD_H_DIRECTION' => 'direction',
+            'FIELD_H_DATE' => 'date',
+            'FIELD_H_CLEARED' => 'cleared',
+
+            // page URIs
+            'URI_HOME' => 'credits-home',
+            'URL_HOME' => 'page.php?i=credits-home',
+            'URL_CHECKOUT' => 'page.php?i=credits-checkout',
+            'URL_ORDERS_COMMON' => 'page.php?i=credits-orders',
+            'URL_ORDERS_ADMINISTRATION' => 'page.php?i=credits-orders-administration',
+            'URL_HISTORY_COMMON' => 'page.php?i=credits-history-common',
+            'URL_HISTORY_ADMINISTRATION' => 'page.php?i=credits-history-administration',
+
+            // some params
+            'PARAM_WITHDRAW' => 'bx_credits_enable_withdraw',
+            'PARAM_WITHDRAW_EMAIL' => 'bx_credits_withdraw_email',
+            'PARAM_WITHDRAW_CLEARING' => 'bx_credits_withdraw_clearing',
+            'PARAM_WITHDRAW_MINIMUM' => 'bx_credits_withdraw_minimum',
+            'PARAM_WITHDRAW_REMAINING' => 'bx_credits_withdraw_remaining',
+            'PARAM_PRECISION' => 'bx_credits_precision',
+            'PARAM_CR_USE' => 'bx_credits_conversion_rate_use',
+            'PARAM_CR_WITHDRAW' => 'bx_credits_conversion_rate_withdraw',
+            'PARAM_PROVIDER_NAME' => 'credits',
+            'PARAM_PROVIDER_ENABLE' => 'bx_credits_enable_provider',
+            'PARAM_CODE' => 'bx_credits_code',
+            'PARAM_ICON' => 'bx_credits_icon',
+
+            // objects
+            'OBJECT_FORM_CREDIT' => 'bx_credits_credit',
+            'OBJECT_FORM_CREDIT_DISPLAY_GRANT' => 'bx_credits_credit_grant',
+            'OBJECT_FORM_CREDIT_DISPLAY_SEND' => 'bx_credits_credit_send',
+            'OBJECT_FORM_CREDIT_DISPLAY_WITHDRAW_REQUEST' => 'bx_credits_credit_withdraw_request',
+            'OBJECT_FORM_CREDIT_DISPLAY_WITHDRAW_CONFIRM' => 'bx_credits_credit_withdraw_confirm',
+            'OBJECT_FORM_BUNDLE' => 'bx_credits_bundle',
+            'OBJECT_FORM_BUNDLE_DISPLAY_ADD' => 'bx_credits_bundle_add',
+            'OBJECT_FORM_BUNDLE_DISPLAY_EDIT' => 'bx_credits_bundle_edit',
+            'OBJECT_FORM_PROFILE' => 'bx_credits_profile',
+            'OBJECT_FORM_PROFILE_DISPLAY_EDIT' => 'bx_credits_profile_edit',
+            'OBJECT_MENU_SUBMENU' => 'bx_credits_submenu', 
+            'OBJECT_MENU_MANAGE_SUBMENU' => 'bx_credits_manage_submenu',
+            'OBJECT_GRID_BUNDLES' => 'bx_credits_bundles',
+            'OBJECT_GRID_ORDERS_ADMINISTRATION' => 'bx_credits_orders_administration',
+            'OBJECT_GRID_ORDERS_COMMON' => 'bx_credits_orders_common',
+            'OBJECT_GRID_HISTORY_ADMINISTRATION' => 'bx_credits_history_administration',
+            'OBJECT_GRID_HISTORY_COMMON' => 'bx_credits_history_common',
+            'OBJECT_GRID_PROFILES_ADMINISTRATION' => 'bx_credits_profiles_administration',
+
+            // email templates
+            'ETEMPLATE_GRANTED' => 'bx_credits_granted',
+            'ETEMPLATE_RECEIVED' => 'bx_credits_received',
+            'ETEMPLATE_PURCHASED' => 'bx_credits_purchased',
+            'ETEMPLATE_IN' => 'bx_credits_in',
+            'ETEMPLATE_OUT' => 'bx_credits_out',
+            'ETEMPLATE_WITHDRAW_REQUESTED' => 'bx_credits_withdraw_requested',
+            'ETEMPLATE_WITHDRAW_SENT' => 'bx_credits_withdraw_sent',
+
+            // some language keys
+            'T' => array (
+                'txt_sample_single' => '_bx_credits_txt_sample_single',
+                'grant_popup' => '_bx_credits_grid_popup_title_htr_grant',
+                'send_popup' => '_bx_credits_grid_popup_title_htr_send',
+                'withdraw_request_popup' => '_bx_credits_grid_popup_title_htr_withdraw_request',
+                'withdraw_confirm_popup' => '_bx_credits_grid_popup_title_htr_withdraw_confirm',
+            ),
+        );
+
+        $this->_aJsClasses = array_merge($this->_aJsClasses, array(
+            'studio' => 'BxCreditsStudio',
+            'checkout' => 'BxCreditsCheckout',
+            'subscribe' => 'BxCreditsSubscribe',
+            'withdraw' => 'BxCreditsWithdraw',
+        ));
+
+        $this->_aJsObjects = array_merge($this->_aJsObjects, array(
+            'studio' => 'oBxCreditsStudio',
+            'checkout' => 'oBxCreditsCheckout',
+            'subscribe' => 'oBxCreditsSubscribe',
+            'withdraw' => 'oBxCreditsWithdraw',
+        ));
+
+        $sPrefix = str_replace('_', '-', $this->_sName);
+        $this->_aHtmlIds = array(
+            'add_bundle_popup' =>  $sPrefix . '-add-bundle-popup',
+            'edit_bundle_popup' =>  $sPrefix . '-edit-bundle-popup',
+
+            'send_popup' =>  $sPrefix . '-send-popup',
+            'grant_popup' =>  $sPrefix . '-grant-popup',
+            'withdraw_request_popup' =>  $sPrefix . '-withdraw-request-popup',
+            'withdraw_confirm_popup' =>  $sPrefix . '-withdraw-confirm-popup',
+            'withdraw_field_rate' => $sPrefix . '-wff-rate',
+            'withdraw_field_amount' => $sPrefix . '-wff-amount',
+            'withdraw_field_result' => $sPrefix . '-wff-result',
+
+            'edit_profile_popup' =>  $sPrefix . '-edit-profile-popup',
+
+            'subscribe_popup' =>  $sPrefix . '-subscribe-popup',
+        );
+
+        $this->_aPrefixes = array(
+            'style' => 'bx-credits',
+        );
+
+        $oPayments = BxDolPayments::getInstance();
+        $this->_iAuthor = (int)$oPayments->getOption('site_admin');
+        $this->_aCurrency = array(
+            'code' => $oPayments->getOption('default_currency_code'),
+            'sign' => $oPayments->getOption('default_currency_sign')
+        );
+        
+        $this->_sCheckoutSessionKey = $this->_sName . '_checkout';
+    }
+
+    public function getHtmlIds($sKey = '')
+    {
+        if(empty($sKey))
+            return $this->_aHtmlIds;
+
+        return isset($this->_aHtmlIds[$sKey]) ? $this->_aHtmlIds[$sKey] : '';
+    }
+
+    public function getAuthor()
+    {
+    	return $this->_iAuthor;
+    }
+
+    public function getCurrency()
+    {
+    	return $this->_aCurrency;
+    }
+
+    public function isWithdraw()
+    {
+        return getParam($this->CNF['PARAM_WITHDRAW']) == 'on';
+    }
+
+    public function getWithdrawEmail()
+    {
+        $sEmail = getParam($this->CNF['PARAM_WITHDRAW_EMAIL']);
+        if(empty($sEmail))
+            $sEmail = getParam('site_email');
+
+        return $sEmail;
+    }
+
+    public function getWithdrawClearing()
+    {
+        return (int)getParam($this->CNF['PARAM_WITHDRAW_CLEARING']);
+    }
+
+    public function getWithdrawMinimum()
+    {
+        return (int)getParam($this->CNF['PARAM_WITHDRAW_MINIMUM']);
+    }
+
+    public function getWithdrawRemaining()
+    {
+        return (int)getParam($this->CNF['PARAM_WITHDRAW_REMAINING']);
+    }
+
+    public function getTransferTypesForClearing()
+    {
+        return [
+            BX_CREDITS_TRANSFER_TYPE_PURCHASE,
+            BX_CREDITS_TRANSFER_TYPE_CHECKOUT,
+            BX_CREDITS_TRANSFER_TYPE_GRANT,
+            BX_CREDITS_TRANSFER_TYPE_SEND,
+            BX_CREDITS_TRANSFER_TYPE_SERVICE
+        ];
+    }
+
+    public function getTransferTypesForSpending()
+    {
+        return [
+            BX_CREDITS_TRANSFER_TYPE_CHECKOUT,
+            BX_CREDITS_TRANSFER_TYPE_SEND,
+            BX_CREDITS_TRANSFER_TYPE_WITHDRAW,
+            BX_CREDITS_TRANSFER_TYPE_SERVICE
+        ];
+    }
+
+    public function getPrecision()
+    {
+        return (int)getParam($this->CNF['PARAM_PRECISION']);
+    }
+
+    public function getConversionRateUse()
+    {
+        return $this->_getConversionRate('use');
+    }
+
+    public function getConversionRateWithdraw()
+    {
+        return $this->_getConversionRate('withdraw');
+    }
+
+    public function getCheckoutUrl()
+    {
+        return bx_absolute_url(BxDolPermalinks::getInstance()->permalink($this->CNF['URL_CHECKOUT']));
+    }
+
+    public function getBundleUrl($aBundle)
+    {
+        return bx_absolute_url(BxDolPermalinks::getInstance()->permalink($this->CNF['URL_HOME']));
+    }
+
+    public function getBundleName($sName)
+    {
+        return uriGenerate($sName, $this->CNF['TABLE_BUNDLES'], $this->CNF['FIELD_NAME'], ['empty' => 'cat', 'divider' => '_', 'lowercase' => false]);
+    }
+
+    public function getBundleDescription($aBundle)
+    {
+        if(empty($aBundle[$this->CNF['FIELD_BONUS']]))
+            return $aBundle[$this->CNF['FIELD_AMOUNT']];
+
+        return _t('_bx_credits_txt_n_plus_m_for_free', $aBundle[$this->CNF['FIELD_AMOUNT']], $aBundle[$this->CNF['FIELD_BONUS']]);
+    }
+
+    public function getCheckoutData()
+    {
+        return BxDolSession::getInstance()->getUnsetValue($this->_sCheckoutSessionKey);
+    }
+
+    public function setCheckoutData($aData)
+    {
+        return BxDolSession::getInstance()->setValue($this->_sCheckoutSessionKey, $aData);
+    }
+
+    public function getOrder($iLength = 16)
+    {
+        return strtoupper(genRndPwd($iLength, false));
+    }
+
+    public function constructCheckoutCustomData()
+    {
+        $aParams = func_get_args();
+        return urlencode(base64_encode(implode('|', $aParams)));
+    }
+
+    public function deconstructCheckoutCustomData($sData)
+    {
+        return explode('|', base64_decode(urldecode($sData)));
+    }
+
+    /**
+     * Convert Credits to Money
+     */
+    public function convertC2M($fCredits, $fRate = false, $iPrecision = false)
+    {
+        if($fRate === false)
+            $fRate = $this->getConversionRateUse();
+        if($iPrecision === false)
+            $iPrecision = $this->getPrecision();
+
+        return round((float)$fCredits * $fRate, $iPrecision);
+    }
+
+    /**
+     * Convert Money to Credits
+     */
+    public function convertM2C($fMoney, $fRate = false, $iPrecision = false)
+    {
+        if($fRate === false)
+            $fRate = $this->getConversionRateUse();
+        if($iPrecision === false)
+            $iPrecision = $this->getPrecision();
+
+        return round((float)$fMoney / $fRate, $iPrecision);
+    }
+
+    /*
+     * Internal methods
+     */
+    protected function _getConversionRate($sType)
+    {
+        $fRate = (float)getParam($this->CNF['PARAM_CR_' . strtoupper($sType)]);
+
+        return $fRate > 0 && $fRate <= 1 ? $fRate : 1;
+    }
+}
+
+/** @} */

+ 195 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/classes/BxCreditsTemplate.php

@@ -0,0 +1,195 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Credits Credits
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCreditsTemplate extends BxBaseModGeneralTemplate
+{
+    function __construct(&$oConfig, &$oDb)
+    {
+        $this->MODULE = 'bx_credits';
+
+        parent::__construct($oConfig, $oDb);
+
+        $this->aMethodsToCallAddJsCss = array('getBlockBundles', 'getBlockCheckout');
+    }
+
+    public function getJsCode($sType, $aParams = array(), $bWrap = true)
+    {
+        $aParams = array_merge(array(
+            'aHtmlIds' => $this->_oConfig->getHtmlIds()
+        ), $aParams);
+
+        return parent::getJsCode($sType, $aParams, $bWrap);
+    }
+
+    public function getEmptyAuthor()
+    {
+    	return MsgBox(_t('_bx_credits_msg_empty_author'));
+    }
+
+    public function getUnit()
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sUnit = '';
+        if(($sCode = getParam($CNF['PARAM_CODE'])) != '')
+            $sUnit = $sCode;
+        else if(($sIcon = getParam($CNF['PARAM_ICON'])) != '')
+            $sUnit = $this->parseIcon($sIcon, array('class' => $this->_oConfig->getPrefix('style') . '-prefix-icon bx-def-margin-thd-right'));
+
+        return $sUnit;
+    }
+
+    public function getBlockCheckout($oBuyer, $oSeller, $aData)
+    {
+        $CNF = &$this->_oConfig->CNF;
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('checkout');
+
+        $sTxtQt = _t('_bx_credits_txt_checkout_qt');
+
+        $fRate = $this->_oConfig->getConversionRateUse();
+        $aCurrency = $this->_oConfig->getCurrency();
+
+        $sCurrencySign = $aCurrency['sign'];
+        if(!empty($aData['currency']['sign']))
+            $sCurrencySign = $aData['currency']['sign'];
+
+        $aTmplVarsItems = array();
+        foreach($aData['items'] as $iIndex => $aItem)
+            $aTmplVarsItems[] = array(
+                'sp' => $sStylePrefix,
+                'item_index' => $iIndex + 1,
+                'item_title' => $aItem['title'],
+                'item_quantity' => $aItem['quantity'] . $sTxtQt
+            );
+
+        $this->addJs(array('checkout.js'));
+        $this->addCss(array('checkout.css'));
+        return $this->parseHtmlByName('checkout.html', array(
+            'sp' => $sStylePrefix,
+            'jo' => $sJsObject,
+            'title' => _t('_bx_credits_txt_checkout_to', $oSeller->getDisplayName()),
+            'bx_repeat:items' => $aTmplVarsItems,
+            'amount' => $sCurrencySign . sprintf("%.2f", (float)($aData['amountm'])),
+            'bx_if:show_rate' => array(
+                'condition' => $fRate != 1,
+                'content' => array(
+                    'sp' => $sStylePrefix,
+                    'rate' => $fRate,
+                )
+            ),
+            'credits' => $this->getModule()->convertC2S($aData['amountc']),
+            'js_code' => $this->getJsCode('checkout')
+        ));
+    }
+
+    public function getBlockBundles()
+    {
+        $CNF = &$this->_oConfig->CNF;
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+
+        $iAuthor = $this->_oConfig->getAuthor();
+        $aCurrency = $this->_oConfig->getCurrency();
+
+        $aBundles = $this->_oDb->getBundle(array('type' => 'all', 'active' => 1));
+        if(empty($aBundles) || !is_array($aBundles))
+            return MsgBox(_t('_Empty'));
+
+        $oPayment = BxDolPayments::getInstance();
+
+        $aTmplVarsBundles = array();
+        foreach($aBundles as $aBundle) {
+            $aJs = $oPayment->getAddToCartJs($iAuthor, $this->MODULE, $aBundle[$CNF['FIELD_ID']], 1, true);
+            if(empty($aJs) || !is_array($aJs))
+                continue;
+
+            list($sJsCode, $sJsMethod) = $aJs;
+
+            $aTmplVarsBundles[] = array_merge($aBundle, array(
+                'sp' => $sStylePrefix,
+                'title' => _t($aBundle[$CNF['FIELD_TITLE']]),
+                'description' => _t($aBundle[$CNF['FIELD_DESCRIPTION']]),
+                'bx_if:show_bonus' => array(
+                    'condition' => (int)$aBundle[$CNF['FIELD_BONUS']] > 0,
+                    'content' => array(
+                        'sp' => $sStylePrefix,
+                        'bonus' => (int)$aBundle[$CNF['FIELD_BONUS']]
+                    )
+                ),
+                'currency_sign' => $aCurrency['sign'],
+                'currency_code' => $aCurrency['code'],
+                'onclick' => $sJsMethod
+            ));
+        }
+
+        return $this->parseHtmlByName('bundles.html', array(
+            'sp' => $sStylePrefix,
+            'bx_repeat:bundles' => $aTmplVarsBundles,
+            'js_code' => $oPayment->getCartJs()
+        ));
+    }
+
+    public function getPopupSubscribe($oBuyer, $oSeller, $aData)
+    {
+        $CNF = &$this->_oConfig->CNF;
+        $bDynamic = bx_is_dynamic_request();
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('subscribe');
+
+        $fRate = $this->_oConfig->getConversionRateUse();
+        $aCurrency = $this->_oConfig->getCurrency();
+
+        $sCurrencySign = $aCurrency['sign'];
+        if(!empty($aData['currency']['sign']))
+            $sCurrencySign = $aData['currency']['sign'];
+
+        if(!empty($aData['period']) && !empty($aData['period_unit'])) {
+            $sPeriod = _t('_bx_credits_txt_subscribe_period_unit_' . $aData['period_unit']);
+            if((int)$aData['period'] > 1);
+                $sPeriod = _t('_bx_credits_txt_subscribe_period_mask', $aData['period'], $sPeriod);
+        }
+        else
+            $sPeriod = _t('_bx_credits_txt_subscribe_lifetime');
+
+        $sInclude = '';
+        $sInclude .= $this->addJs(array('subscribe.js'), $bDynamic);
+        $sInclude .= $this->addCss(array('main.css', 'subscribe.css'), $bDynamic);
+
+        $sContent = ($bDynamic ? $sInclude : '') . $this->parseHtmlByName('subscribe.html', array(
+            'sp' => $sStylePrefix,
+            'jo' => $sJsObject,
+            'title' => _t('_bx_credits_txt_subscribe_for', $oSeller->getDisplayName()),
+            'item_title' => $aData['title'],
+            'amount' => $sCurrencySign . sprintf("%.2f", (float)($aData['amountm'])),
+            'period' => $sPeriod,
+            'bx_if:show_rate' => array(
+                'condition' => $fRate != 1,
+                'content' => array(
+                    'sp' => $sStylePrefix,
+                    'rate' => $fRate,
+                )
+            ),
+            'bx_if:show_trial' => array(
+                'condition' => (int)$aData['trial'] > 0,
+                'content' => array(
+                    'sp' => $sStylePrefix,
+                    'trial' => _t('_bx_credits_txt_subscribe_trial_mask', $aData['trial'], _t('_bx_credits_txt_subscribe_period_unit_day'))
+                )
+            ),
+            'credits' => $this->getModule()->convertC2S($aData['amountc']),
+            'js_code' => $this->getJsCode('subscribe')
+        ));
+
+        return BxTemplFunctions::getInstance()->transBox($this->_oConfig->getHtmlIds('subscribe_popup'), $sContent);
+    }
+}
+
+/** @} */

+ 77 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/install/config.php

@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Credits Credits
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_credits',
+    'title' => 'Credits',
+    'note' => 'Credits module.',
+    'version' => '13.0.7',
+    'vendor' => 'BoonEx',
+    'help_url' => 'http://feed.una.io/?section={module_name}',
+
+    'compatible_with' => array(
+        '13.0.0-RC5'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/credits/',
+    'home_uri' => 'credits',
+
+    'db_prefix' => 'bx_credits_',
+    'class_prefix' => 'BxCredits',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Credits',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+    /**
+     * Relations Section
+     */
+    'relations' => array(),
+
+);
+
+/** @} */

+ 312 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/install/langs/en.xml

@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+    <string name="_bx_credits"><![CDATA[Credits]]></string>
+
+
+    <!-- Options -->
+    <string name="_bx_credits_option_enable_withdraw"><![CDATA[Allow members to withdraw credits converting them to money]]></string>
+    <string name="_bx_credits_option_withdraw_email"><![CDATA[Email for withdraw requests]]></string>
+    <string name="_bx_credits_option_withdraw_clearing"><![CDATA[Clearing period (in days) before received credits can be withdrawn]]></string>
+    <string name="_bx_credits_option_withdraw_minimum"><![CDATA[Minimum amount of cleared credits which can be withdrawn]]></string>
+    <string name="_bx_credits_option_withdraw_remaining"><![CDATA[Minimum credits balance after withdrawal]]></string>
+    <string name="_bx_credits_option_precision"><![CDATA[Precision (number of digits after the decimal point)]]></string>
+    <string name="_bx_credits_option_conversion_rate_use"><![CDATA[Conversion rate to pay with credits (for site currency)]]></string>
+    <string name="_bx_credits_option_conversion_rate_withdraw"><![CDATA[Conversion rate to withdraw credits (for site currency)]]></string>
+    <string name="_bx_credits_option_code"><![CDATA[Code to prefix amount]]></string>
+    <string name="_bx_credits_option_icon"><![CDATA[Icon to prefix amount]]></string>
+    <string name="_bx_credits_enable_provider"><![CDATA[Auto activate 'Credits' provider for all newly created profiles]]></string>
+
+
+    <!-- Forms -->
+    <string name="_bx_credits_form_bundle"><![CDATA[Bundle]]></string>
+    <string name="_bx_credits_form_bundle_display_add"><![CDATA[Add Bundle]]></string>
+    <string name="_bx_credits_form_bundle_display_edit"><![CDATA[Edit Bundle]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_title"><![CDATA[Title]]></string>
+    <string name="_bx_credits_form_bundle_input_title"><![CDATA[Title]]></string>
+    <string name="_bx_credits_form_bundle_input_title_err"><![CDATA[This field is essential. Please fill it in for all languages.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_description"><![CDATA[Description]]></string>
+    <string name="_bx_credits_form_bundle_input_description"><![CDATA[Description]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_name"><![CDATA[Name]]></string>
+    <string name="_bx_credits_form_bundle_input_name"><![CDATA[Name]]></string>
+    <string name="_bx_credits_form_bundle_input_name_err"><![CDATA[This field is essential for API calls. Please fill it in.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_form_bundle_input_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_form_bundle_input_amount_err"><![CDATA[This field is essential. Please fill it in.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_bonus"><![CDATA[Bonus]]></string>
+    <string name="_bx_credits_form_bundle_input_bonus"><![CDATA[Bonus]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_price"><![CDATA[Price]]></string>
+    <string name="_bx_credits_form_bundle_input_price"><![CDATA[Price]]></string>
+    <string name="_bx_credits_form_bundle_input_price_err"><![CDATA[This field is essential. Please fill it in.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_bundle_input_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_credits_form_bundle_input_do_cancel"><![CDATA[Cancel]]></string>
+
+    <string name="_bx_credits_form_credit"><![CDATA[Credit]]></string>
+    <string name="_bx_credits_form_credit_display_grant"><![CDATA[Grant]]></string>
+    <string name="_bx_credits_form_credit_display_send"><![CDATA[Send]]></string>
+    <string name="_bx_credits_form_credit_display_withdraw_request"><![CDATA[Request Withdrawal]]></string>
+    <string name="_bx_credits_form_credit_display_withdraw_confirm"><![CDATA[Confirm Withdrawal]]></string>
+    <string name="_bx_credits_form_credit_input_sys_balance"><![CDATA[Balance]]></string>
+    <string name="_bx_credits_form_credit_input_balance"><![CDATA[Balance]]></string>
+    <string name="_bx_credits_form_credit_input_sys_cleared"><![CDATA[Cleared Balance]]></string>
+    <string name="_bx_credits_form_credit_input_cleared"><![CDATA[Cleared Balance]]></string>
+    <string name="_bx_credits_form_credit_input_cleared_inf"><![CDATA[Clearing period is {wdw_clearing} days before received credits can be withdrawn.]]></string>
+    <string name="_bx_credits_form_credit_input_sys_rate"><![CDATA[Conversion rate]]></string>
+    <string name="_bx_credits_form_credit_input_rate"><![CDATA[Conversion rate]]></string>
+    <string name="_bx_credits_form_credit_input_sys_result"><![CDATA[Result]]></string>
+    <string name="_bx_credits_form_credit_input_result"><![CDATA[Result]]></string>
+    <string name="_bx_credits_form_credit_input_sys_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_form_credit_input_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_form_credit_input_amount_inf"><![CDATA[Minimum amount is {wdw_minimum} credits and remaining balance after withdrawal should be {wdw_remaining} credits.]]></string>
+    <string name="_bx_credits_form_credit_input_amount_err"><![CDATA[This field is essential. Please fill it in.]]></string>
+    <string name="_bx_credits_form_credit_input_sys_message"><![CDATA[Message]]></string>
+    <string name="_bx_credits_form_credit_input_message"><![CDATA[Message]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_g"><![CDATA[]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_s"><![CDATA[Indicate the purpose of sending to reflect it in history for future references]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_wr"><![CDATA[Payment instructions and other notes]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_wc"><![CDATA[Payment confirmation and other notes]]></string>
+    <string name="_bx_credits_form_credit_input_profile"><![CDATA[Profile]]></string>
+    <string name="_bx_credits_form_credit_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_credit_input_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_credit_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_credits_form_credit_input_do_cancel"><![CDATA[Cancel]]></string>
+
+    <string name="_bx_credits_form_profile"><![CDATA[Profile]]></string>
+    <string name="_bx_credits_form_profile_display_edit"><![CDATA[Edit Profile]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_clearing"><![CDATA[Clearing period]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_clearing"><![CDATA[Clearing period (in days)]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_clearing_inf"><![CDATA[Leave empty (0) to use global value]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_minimum"><![CDATA[Minimum withdrawal amount]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_minimum"><![CDATA[Minimum withdrawal amount]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_minimum_inf"><![CDATA[Leave empty (0) to use global value]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_remaining"><![CDATA[Minimum remaining amount]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_remaining"><![CDATA[Minimum remaining amount]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_remaining_inf"><![CDATA[Leave empty (0) to use global value]]></string>
+    <string name="_bx_credits_form_profile_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_profile_input_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_credits_form_profile_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_credits_form_profile_input_do_cancel"><![CDATA[Cancel]]></string>
+
+
+    <!-- Pages -->
+    <string name="_bx_credits_page_title_sys_home"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_page_title_home"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_page_block_title_sys_bundles"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_page_block_title_bundles"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_page_title_sys_checkout"><![CDATA[Checkout]]></string>
+    <string name="_bx_credits_page_title_checkout"><![CDATA[Checkout]]></string>
+    <string name="_bx_credits_page_block_title_sys_checkout"><![CDATA[Checkout]]></string>
+    <string name="_bx_credits_page_block_title_checkout"><![CDATA[Checkout]]></string>
+    <string name="_bx_credits_page_title_sys_history_common"><![CDATA[My History]]></string>
+    <string name="_bx_credits_page_title_history_common"><![CDATA[History]]></string>
+    <string name="_bx_credits_page_block_title_sys_history_common"><![CDATA[My History]]></string>
+    <string name="_bx_credits_page_block_title_history_common"><![CDATA[History]]></string>    
+    <string name="_bx_credits_page_title_sys_history_administration"><![CDATA[All History]]></string>
+    <string name="_bx_credits_page_title_history_administration"><![CDATA[History]]></string>
+    <string name="_bx_credits_page_block_title_sys_history_administration"><![CDATA[All History]]></string>
+    <string name="_bx_credits_page_block_title_history_administration"><![CDATA[History]]></string>
+    <string name="_bx_credits_page_title_sys_orders_common"><![CDATA[My Orders]]></string>
+    <string name="_bx_credits_page_title_orders_common"><![CDATA[Orders]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_common_note"><![CDATA[Note]]></string>
+    <string name="_bx_credits_page_block_title_orders_common_note"><![CDATA[Note]]></string>
+    <string name="_bx_credits_page_block_content_orders_common_note"><![CDATA[The orders are for reference only.]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_common"><![CDATA[My Orders]]></string>
+    <string name="_bx_credits_page_block_title_orders_common"><![CDATA[Orders]]></string>
+    <string name="_bx_credits_page_title_sys_orders_administration"><![CDATA[All Orders]]></string>
+    <string name="_bx_credits_page_title_orders_administration"><![CDATA[Orders]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_administration"><![CDATA[All Orders]]></string>
+    <string name="_bx_credits_page_block_title_orders_administration"><![CDATA[Orders]]></string>
+    <string name="_bx_credits_page_title_sys_profiles_administration"><![CDATA[All Profiles]]></string>
+    <string name="_bx_credits_page_title_profiles_administration"><![CDATA[Profiles]]></string>
+    <string name="_bx_credits_page_block_title_sys_profiles_administration"><![CDATA[All Profiles]]></string>
+    <string name="_bx_credits_page_block_title_profiles_administration"><![CDATA[Profiles]]></string>
+
+
+    <!-- Menus -->
+    <string name="_bx_credits_menu_item_title_system_credits"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_item_title_credits"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_item_title_system_history"><![CDATA[Balance]]></string>
+    <string name="_bx_credits_menu_item_title_history"><![CDATA[{unit}{value}]]></string>
+    <string name="_bx_credits_menu_item_title_system_notifications"><![CDATA[Balance]]></string>
+    <string name="_bx_credits_menu_item_title_notifications"><![CDATA[{value}]]></string>
+    <string name="_bx_credits_menu_title_submenu"><![CDATA[Credits Submenu]]></string>
+    <string name="_bx_credits_menu_set_title_submenu"><![CDATA[Credits Submenu]]></string>
+    <string name="_bx_credits_menu_item_title_system_home"><![CDATA[Home]]></string>
+    <string name="_bx_credits_menu_item_title_home"><![CDATA[Home]]></string>
+    <string name="_bx_credits_menu_item_title_system_admt_credits"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_item_title_admt_credits"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_item_title_bundles"><![CDATA[Bundles]]></string>
+    <string name="_bx_credits_menu_item_title_system_manage"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_item_title_manage"><![CDATA[Credits]]></string>
+    <string name="_bx_credits_menu_title_manage_submenu"><![CDATA[Orders Submenu]]></string>
+    <string name="_bx_credits_menu_set_title_manage_submenu"><![CDATA[Orders Submenu]]></string>
+    <string name="_bx_credits_menu_item_title_system_orders_administration"><![CDATA[All Orders]]></string>
+    <string name="_bx_credits_menu_item_title_orders_administration"><![CDATA[All Orders]]></string>
+    <string name="_bx_credits_menu_item_title_system_orders_common"><![CDATA[My Orders]]></string>
+    <string name="_bx_credits_menu_item_title_orders_common"><![CDATA[My Orders]]></string>
+    <string name="_bx_credits_menu_item_title_system_history_administration"><![CDATA[All History]]></string>
+    <string name="_bx_credits_menu_item_title_history_administration"><![CDATA[All History]]></string>
+    <string name="_bx_credits_menu_item_title_system_history_common"><![CDATA[My History]]></string>
+    <string name="_bx_credits_menu_item_title_history_common"><![CDATA[My History]]></string>
+    <string name="_bx_credits_menu_item_title_system_profiles_administration"><![CDATA[All Profiles]]></string>
+    <string name="_bx_credits_menu_item_title_profiles_administration"><![CDATA[All Profiles]]></string>
+
+
+    <!-- Grids -->
+    <string name="_bx_credits_grid_column_title_name"><![CDATA[Name]]></string>
+    <string name="_bx_credits_grid_column_title_title"><![CDATA[Title]]></string>
+    <string name="_bx_credits_grid_column_title_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_grid_column_title_bonus"><![CDATA[Bonus]]></string>
+    <string name="_bx_credits_grid_column_title_price"><![CDATA[Price]]></string>
+    <string name="_bx_credits_grid_action_title_add"><![CDATA[Add]]></string>
+    <string name="_bx_credits_grid_action_title_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_credits_grid_action_title_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_credits_grid_popup_title_add_bundle"><![CDATA[Add Bundle]]></string>
+    <string name="_bx_credits_grid_popup_title_edit_bundle"><![CDATA[Edit '{0}' Bundle]]></string>
+
+    <string name="_bx_credits_grid_column_title_htr_pid"><![CDATA[Profile]]></string>
+    <string name="_bx_credits_grid_column_title_htr_first_pid"><![CDATA[Profile 1]]></string>
+    <string name="_bx_credits_grid_column_title_htr_second_pid"><![CDATA[Profile 2]]></string>
+    <string name="_bx_credits_grid_column_title_htr_amount"><![CDATA[Amount]]></string>
+    <string name="_bx_credits_grid_column_title_htr_order"><![CDATA[Order]]></string>
+    <string name="_bx_credits_grid_column_title_htr_direction"><![CDATA[Direction]]></string>
+    <string name="_bx_credits_grid_column_title_htr_info"><![CDATA[Notice]]></string>
+    <string name="_bx_credits_grid_column_title_htr_date"><![CDATA[Date]]></string>
+    <string name="_bx_credits_grid_column_title_htr_cleared"><![CDATA[Clearing]]></string>
+    <string name="_bx_credits_grid_action_title_htr_grant"><![CDATA[Grant]]></string>
+    <string name="_bx_credits_grid_action_title_htr_send"><![CDATA[Send]]></string>
+    <string name="_bx_credits_grid_action_title_htr_withdraw_confirm"><![CDATA[Confirm withdraw]]></string>
+    <string name="_bx_credits_grid_action_title_htr_withdraw_request"><![CDATA[Request withdraw]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_grant"><![CDATA[Grant]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_send"><![CDATA[Send]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_withdraw_confirm"><![CDATA[Confirm withdraw]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_withdraw_request"><![CDATA[Request withdraw]]></string>
+
+    <string name="_bx_credits_grid_column_title_ord_profile_id"><![CDATA[Profile]]></string>
+    <string name="_bx_credits_grid_column_title_ord_bundle"><![CDATA[Bundle]]></string>
+    <string name="_bx_credits_grid_column_title_ord_transaction"><![CDATA[Transaction]]></string>
+    <string name="_bx_credits_grid_column_title_ord_type"><![CDATA[Type]]></string>
+    <string name="_bx_credits_grid_column_value_ord_type_single"><![CDATA[Single]]></string>
+    <string name="_bx_credits_grid_column_value_ord_type_recurring"><![CDATA[Recurring]]></string>
+    <string name="_bx_credits_grid_column_title_ord_added"><![CDATA[Added]]></string>
+    <string name="_bx_credits_grid_column_title_ord_expired"><![CDATA[Expires]]></string>
+
+    <string name="_bx_credits_grid_column_title_pfl_id"><![CDATA[Profile]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_clearing"><![CDATA[Clearing period (in days)]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_minimum"><![CDATA[Min withdrawal amount]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_remaining"><![CDATA[Min remaining amount]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_balance"><![CDATA[Balance]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_balance_cleared"><![CDATA[Cleared balance]]></string>
+    <string name="_bx_credits_grid_action_title_pfl_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_credits_grid_popup_title_pfl_edit"><![CDATA[Edit '{0}' Profile's Limitations]]></string>
+
+    <!-- Email templates -->
+    <string name="_bx_credits_et_txt_name_granted"><![CDATA[Credits granted.]]></string>
+    <string name="_bx_credits_et_txt_subject_granted"><![CDATA[You're granted {amount} credits.]]></string>
+    <string name="_bx_credits_et_txt_body_granted"><![CDATA[{email_header}
+<p>Hello, {profile_name}.</p>
+<p>You're granted <b>{amount}</b> credits.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_received"><![CDATA[Credits received.]]></string>
+    <string name="_bx_credits_et_txt_subject_received"><![CDATA[You've received {amount} credits.]]></string>
+    <string name="_bx_credits_et_txt_body_received"><![CDATA[{email_header}
+<p>Hello, {profile_name}.</p>
+<p>You've received <b>{amount}</b> credits from <a href="{performer_link}">{performer_name}</a>.<br />The order is <b>{order}</b>.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_purchased"><![CDATA[Credits purchased.]]></string>
+    <string name="_bx_credits_et_txt_subject_purchased"><![CDATA[You've purchased {bundle_title} credits bundle.]]></string>
+    <string name="_bx_credits_et_txt_body_purchased"><![CDATA[{email_header}
+<p>Hello, {client_name}.</p>
+<p>You've purchased <a href="{bundle_url}">{bundle_title}</a> credits bundle.<br />Your order is <b>{order}</b>.</p>
+<p>{notes}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_in"><![CDATA[Credits in.]]></string>
+    <string name="_bx_credits_et_txt_subject_in"><![CDATA[Credits in.]]></string>
+    <string name="_bx_credits_et_txt_body_in"><![CDATA[{email_header}
+<p>Hello, {profile_name}.</p>
+<p>You've received <b>{amount}</b> credits from {second_profile_name}.</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_out"><![CDATA[Credits out.]]></string>
+    <string name="_bx_credits_et_txt_subject_out"><![CDATA[Credits out.]]></string>
+    <string name="_bx_credits_et_txt_body_out"><![CDATA[{email_header}
+<p>Hello, {profile_name}.</p>
+<p>You've sent <b>{amount}</b> credits to {second_profile_name}.</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_withdraw_requested"><![CDATA[Withdraw request.]]></string>
+    <string name="_bx_credits_et_txt_subject_withdraw_requested"><![CDATA[Withdraw request.]]></string>
+    <string name="_bx_credits_et_txt_body_withdraw_requested"><![CDATA[{email_header}
+<p><a href="{profile_link}">{profile_name}</a> requested to withdraw <b>{amount}</b> credits from his/her balance.</p>
+<p>Current withdraw conversion rate is <b>{rate}</b></p>
+<p>Withdrawal can be confirmed <a href="{confirm_url}">here</a>.</p>
+<p>Notes from <b>{profile_name}</b>:<br />{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_withdraw_sent"><![CDATA[Withdraw was sent.]]></string>
+    <string name="_bx_credits_et_txt_subject_withdraw_sent"><![CDATA[Withdraw was sent.]]></string>
+    <string name="_bx_credits_et_txt_body_withdraw_sent"><![CDATA[{email_header}
+<p>Hello, {profile_name}.</p>
+<p>The requested amount of credits (<b>{amount}</b>) was withdrawn to you.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+
+
+    <!-- Other -->
+    <string name="_bx_credits_txt_sample_single"><![CDATA[credit]]></string>
+    <string name="_bx_credits_txt_sample_single_with_article"><![CDATA[a credit]]></string>
+    <string name="_bx_credits_txt_for_free"><![CDATA[for Free]]></string>
+    <string name="_bx_credits_txt_n_plus_m_for_free"><![CDATA[{0} (+{1} for free)]]></string>
+    <string name="_bx_credits_txt_purchase"><![CDATA[Purchase]]></string>
+    <string name="_bx_credits_txt_never"><![CDATA[never]]></string>
+    <string name="_bx_credits_txt_direction_out"><![CDATA[sent to]]></string>
+    <string name="_bx_credits_txt_direction_in"><![CDATA[got from]]></string>
+    <string name="_bx_credits_txt_purchased_note"><![CDATA[Contact <a href="{0}">{1}</a> if you have any questions or need support.]]></string>
+    <string name="_bx_credits_txt_history_info_grant"><![CDATA[Grant]]></string>
+    <string name="_bx_credits_txt_history_info_send"><![CDATA[Transfer]]></string>
+    <string name="_bx_credits_txt_history_info_purchase"><![CDATA[Bundle purchase]]></string>
+    <string name="_bx_credits_txt_history_info_checkout"><![CDATA[Profile to profile checkout]]></string>
+    <string name="_bx_credits_txt_history_info_withdraw"><![CDATA[Withdrawal by request]]></string>
+    <string name="_bx_credits_txt_history_info_service"><![CDATA[Artificially initiated transfer]]></string>
+    <string name="_bx_credits_txt_history_info_refund"><![CDATA[Refund]]></string>
+    <string name="_bx_credits_txt_history_info_cancellation"><![CDATA[Cancellation]]></string>
+
+
+    <string name="_bx_credits_msg_empty_author"><![CDATA['Main seller' is empty. You need to mark some profile as 'Main seller' in Settings of currently active Payment app.]]></string>
+    <string name="_bx_credits_msg_action_performed"><![CDATA[The action was performed successfully.]]></string>
+    <string name="_bx_credits_err_profile_not_found"><![CDATA[Profile wasn't found.]]></string>
+    <string name="_bx_credits_err_login_required"><![CDATA[Login required.]]></string>
+    <string name="_bx_credits_err_low_balance"><![CDATA[Low balance.]]></string>
+    <string name="_bx_credits_err_withdraw_minimum"><![CDATA[Withdrawal less then {0} credits isn't available.]]></string>
+    <string name="_bx_credits_err_withdraw_remaining"><![CDATA[Minimum remaining balance after withdrawal should be more then {0} credits.]]></string>
+    <string name="_bx_credits_err_cannot_update_balance"><![CDATA[Cannot update balance.]]></string>
+    <string name="_bx_credits_err_cannot_send"><![CDATA[Cannot send message. Please report.]]></string>
+    <string name="_bx_credits_err_cannot_perform_action"><![CDATA[Cannot perform the action. Please report.]]></string>
+
+
+    <!-- Checkout process -->
+    <string name="_bx_credits_txt_checkout"><![CDATA[Checkout]]></string>
+    <string name="_bx_credits_txt_checkout_to"><![CDATA[Pay to {0} for:]]></string>
+    <string name="_bx_credits_txt_checkout_price_money"><![CDATA[Price:]]></string>
+    <string name="_bx_credits_txt_checkout_price_credits"><![CDATA[In Credits:]]></string>
+    <string name="_bx_credits_txt_checkout_rate"><![CDATA[Rate:]]></string>
+    <string name="_bx_credits_txt_checkout_qt"><![CDATA[qt.]]></string>
+
+    <!-- Subscribe process -->
+    <string name="_bx_credits_txt_subscribe"><![CDATA[Subscribe]]></string>
+    <string name="_bx_credits_txt_subscribe_for"><![CDATA[Subscribe for:]]></string>
+    <string name="_bx_credits_txt_subscribe_lifetime"><![CDATA[lifetime]]></string>    
+    <string name="_bx_credits_txt_subscribe_period_mask"><![CDATA[{0} {1}]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_year"><![CDATA[yr.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_month"><![CDATA[mo.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_week"><![CDATA[wk.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_day"><![CDATA[d.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_hour"><![CDATA[hr.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_minute"><![CDATA[min.]]></string>
+    <string name="_bx_credits_txt_subscribe_trial"><![CDATA[Trial:]]></string>
+    <string name="_bx_credits_txt_subscribe_trial_mask"><![CDATA[{0} {1}]]></string>
+
+    <string name="_bx_credits_err_unknown_buyer"><![CDATA[Login required.]]></string>
+    <string name="_bx_credits_err_unknown_seller"><![CDATA[Unknown seller.]]></string>
+    <string name="_bx_credits_err_incorrect_data"><![CDATA[Incorrect input data. Please report.]]></string>
+</resources>

+ 206 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/install/sql/install.sql

@@ -0,0 +1,206 @@
+-- TABLE: bundles
+CREATE TABLE IF NOT EXISTS `bx_credits_bundles` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `added` int(11) NOT NULL,
+  `name` varchar(255) NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `description` varchar(255) NOT NULL,
+  `amount` int(11) NOT NULL DEFAULT '0',
+  `bonus` int(11) NOT NULL DEFAULT '0',
+  `price` float NOT NULL DEFAULT '0',
+  `active` tinyint(4) NOT NULL DEFAULT '0',
+  `order` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`)
+);
+
+-- TABLE: orders
+CREATE TABLE IF NOT EXISTS `bx_credits_orders` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `profile_id` int(11) unsigned NOT NULL default '0',
+  `bundle_id` int(11) unsigned NOT NULL default '0',
+  `count` int(11) unsigned NOT NULL default '0',
+  `order` varchar(32) NOT NULL default '',
+  `license` varchar(32) NOT NULL default '',
+  `type` varchar(16) NOT NULL default '',
+  `added` int(11) unsigned NOT NULL default '0',
+  `expired` int(11) unsigned NOT NULL default '0',
+  `new` tinyint(1) NOT NULL default '1',
+  PRIMARY KEY (`id`),
+  KEY `order_id` (`bundle_id`, `profile_id`),
+  KEY `license` (`license`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_credits_orders_deleted` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `profile_id` int(11) unsigned NOT NULL default '0',
+  `bundle_id` int(11) unsigned NOT NULL default '0',
+  `count` int(11) unsigned NOT NULL default '0',
+  `order` varchar(32) NOT NULL default '',
+  `license` varchar(32) NOT NULL default '',
+  `type` varchar(16) NOT NULL default '',
+  `added` int(11) unsigned NOT NULL default '0',
+  `expired` int(11) unsigned NOT NULL default '0',
+  `new` tinyint(1) NOT NULL default '1',
+  `reason` varchar(16) NOT NULL default '',
+  `deleted` int(11) unsigned NOT NULL default '0',
+  PRIMARY KEY (`id`),
+  KEY `order_id` (`bundle_id`, `profile_id`),
+  KEY `license` (`license`)
+);
+
+-- TABLE: profiles
+CREATE TABLE IF NOT EXISTS `bx_credits_profiles` (
+  `id` int(11) NOT NULL DEFAULT '0',
+  `wdw_clearing` int(11) unsigned NOT NULL default '0',
+  `wdw_minimum` int(11) unsigned NOT NULL default '0',
+  `wdw_remaining` int(11) unsigned NOT NULL default '0',
+  `balance` float NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`)
+);
+
+-- TABLE: history
+CREATE TABLE IF NOT EXISTS `bx_credits_history` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `first_pid` int(11) NOT NULL DEFAULT '0',
+  `second_pid` int(11) NOT NULL DEFAULT '0',
+  `amount` float NOT NULL DEFAULT '0',
+  `type` varchar(16) NOT NULL default '',
+  `direction` enum('in', 'out') NOT NULL DEFAULT 'in',
+  `order` varchar(32) NOT NULL default '',
+  `data` text NOT NULL default '',
+  `info` varchar(255) NOT NULL DEFAULT '',
+  `date` int(11) NOT NULL DEFAULT '0',
+  `cleared` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`)
+);
+
+
+-- FORMS: credit
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_credits_credit', 'bx_credits', '_bx_credits_form_credit', '', 'a:1:{s:7:"enctype";s:19:"multipart/form-data";}', '', '', '', '', 'a:1:{i:0;s:9:"do_submit";}', '', 0, 1, 'BxCreditsFormCredit', 'modules/boonex/credits/classes/BxCreditsFormCredit.php');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_credits_credit', 'bx_credits_credit_send', 'bx_credits', 0, '_bx_credits_form_credit_display_send'),
+('bx_credits_credit', 'bx_credits_credit_grant', 'bx_credits', 0, '_bx_credits_form_credit_display_grant'),
+('bx_credits_credit', 'bx_credits_credit_withdraw_request', 'bx_credits', 0, '_bx_credits_form_credit_display_withdraw_request'),
+('bx_credits_credit', 'bx_credits_credit_withdraw_confirm', 'bx_credits', 0, '_bx_credits_form_credit_display_withdraw_confirm');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_credits_credit', 'bx_credits', 'balance', '', '', 0, 'text', '_bx_credits_form_credit_input_sys_balance', '_bx_credits_form_credit_input_balance', '', 0, 0, 0, 'a:1:{s:8:"disabled";s:8:"disabled";}', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'cleared', '', '', 0, 'text', '_bx_credits_form_credit_input_sys_cleared', '_bx_credits_form_credit_input_cleared', '_bx_credits_form_credit_input_cleared_inf', 0, 0, 0, 'a:1:{s:8:"disabled";s:8:"disabled";}', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'rate', '', '', 0, 'text', '_bx_credits_form_credit_input_sys_rate', '_bx_credits_form_credit_input_rate', '', 0, 0, 0, 'a:1:{s:8:"disabled";s:8:"disabled";}', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'result', '', '', 0, 'text', '_bx_credits_form_credit_input_sys_result', '_bx_credits_form_credit_input_result', '', 0, 0, 0, 'a:1:{s:8:"disabled";s:8:"disabled";}', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'amount', '', '', 0, 'text', '_bx_credits_form_credit_input_sys_amount', '_bx_credits_form_credit_input_amount', '_bx_credits_form_credit_input_amount_inf', 1, 0, 0, '', '', '', 'Avail', '', '_bx_credits_form_credit_input_amount_err', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'message', '', '', 0, 'textarea', '_bx_credits_form_credit_input_sys_message', '_bx_credits_form_credit_input_message', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'profile', '', '', 0, 'custom', '_bx_credits_form_credit_input_sys_profile', '_bx_credits_form_credit_input_profile', '', 1, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'controls', '', 'do_submit,do_cancel', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('bx_credits_credit', 'bx_credits', 'do_submit', '_bx_credits_form_credit_input_do_submit', '', 0, 'submit', '_bx_credits_form_credit_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_credits_credit', 'bx_credits', 'do_cancel', '_bx_credits_form_credit_input_do_cancel', '', 0, 'button', '_bx_credits_form_credit_input_sys_do_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 1, 0);
+
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_credits_credit_send', 'profile', 2147483647, 1, 1),
+('bx_credits_credit_send', 'amount', 2147483647, 1, 2),
+('bx_credits_credit_send', 'message', 2147483647, 1, 3),
+('bx_credits_credit_send', 'controls', 2147483647, 1, 4),
+('bx_credits_credit_send', 'do_submit', 2147483647, 1, 5),
+('bx_credits_credit_send', 'do_cancel', 2147483647, 1, 6),
+
+('bx_credits_credit_grant', 'profile', 2147483647, 1, 1),
+('bx_credits_credit_grant', 'amount', 2147483647, 1, 2),
+('bx_credits_credit_grant', 'message', 2147483647, 1, 3),
+('bx_credits_credit_grant', 'controls', 2147483647, 1, 4),
+('bx_credits_credit_grant', 'do_submit', 2147483647, 1, 5),
+('bx_credits_credit_grant', 'do_cancel', 2147483647, 1, 6),
+
+('bx_credits_credit_withdraw_request', 'balance', 2147483647, 1, 1),
+('bx_credits_credit_withdraw_request', 'cleared', 2147483647, 1, 2),
+('bx_credits_credit_withdraw_request', 'rate', 2147483647, 1, 3),
+('bx_credits_credit_withdraw_request', 'amount', 2147483647, 1, 4),
+('bx_credits_credit_withdraw_request', 'result', 2147483647, 1, 5),
+('bx_credits_credit_withdraw_request', 'message', 2147483647, 1, 6),
+('bx_credits_credit_withdraw_request', 'controls', 2147483647, 1, 7),
+('bx_credits_credit_withdraw_request', 'do_submit', 2147483647, 1, 8),
+('bx_credits_credit_withdraw_request', 'do_cancel', 2147483647, 1, 9),
+
+('bx_credits_credit_withdraw_confirm', 'profile', 2147483647, 1, 1),
+('bx_credits_credit_withdraw_confirm', 'amount', 2147483647, 1, 2),
+('bx_credits_credit_withdraw_confirm', 'message', 2147483647, 1, 3),
+('bx_credits_credit_withdraw_confirm', 'controls', 2147483647, 1, 4),
+('bx_credits_credit_withdraw_confirm', 'do_submit', 2147483647, 1, 5),
+('bx_credits_credit_withdraw_confirm', 'do_cancel', 2147483647, 1, 6);
+
+-- FORMS: bundle
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_credits_bundle', 'bx_credits', '_bx_credits_form_bundle', '', 'a:1:{s:7:"enctype";s:19:"multipart/form-data";}', 'bx_credits_bundles', 'id', '', '', 'a:1:{i:0;s:9:"do_submit";}', '', 0, 1, 'BxCreditsFormBundle', 'modules/boonex/credits/classes/BxCreditsFormBundle.php');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_credits_bundle', 'bx_credits_bundle_add', 'bx_credits', 0, '_bx_credits_form_bundle_display_add'),
+('bx_credits_bundle', 'bx_credits_bundle_edit', 'bx_credits', 0, '_bx_credits_form_bundle_display_edit');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_credits_bundle', 'bx_credits', 'title', '', '', 0, 'text_translatable', '_bx_credits_form_bundle_input_sys_title', '_bx_credits_form_bundle_input_title', '', 1, 0, 0, '', '', '', 'AvailTranslatable', 'a:1:{i:0;s:5:"title";}', '_bx_credits_form_bundle_input_title_err', 'Xss', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'description', '', '', 0, 'textarea_translatable', '_bx_credits_form_bundle_input_sys_description', '_bx_credits_form_bundle_input_description', '', 0, 0, 3, '', '', '', '', '', '', 'XssHtml', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'name', '', '', 0, 'text', '_bx_credits_form_bundle_input_sys_name', '_bx_credits_form_bundle_input_name', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_credits_form_bundle_input_name_err', 'Xss', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'amount', '', '', 0, 'text', '_bx_credits_form_bundle_input_sys_amount', '_bx_credits_form_bundle_input_amount', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_credits_form_bundle_input_amount_err', 'Xss', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'bonus', '', '', 0, 'text', '_bx_credits_form_bundle_input_sys_bonus', '_bx_credits_form_bundle_input_bonus', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'price', '', '', 0, 'price', '_bx_credits_form_bundle_input_sys_price', '_bx_credits_form_bundle_input_price', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_credits_form_bundle_input_price_err', 'Xss', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'controls', '', 'do_submit,do_cancel', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('bx_credits_bundle', 'bx_credits', 'do_submit', '_bx_credits_form_bundle_input_do_submit', '', 0, 'submit', '_bx_credits_form_bundle_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_credits_bundle', 'bx_credits', 'do_cancel', '_bx_credits_form_bundle_input_do_cancel', '', 0, 'button', '_bx_credits_form_bundle_input_sys_do_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 1, 0);
+
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_credits_bundle_add', 'name', 2147483647, 1, 1),
+('bx_credits_bundle_add', 'title', 2147483647, 1, 2),
+('bx_credits_bundle_add', 'description', 2147483647, 1, 3),
+('bx_credits_bundle_add', 'amount', 2147483647, 1, 4),
+('bx_credits_bundle_add', 'bonus', 2147483647, 1, 5),
+('bx_credits_bundle_add', 'price', 2147483647, 1, 6),
+('bx_credits_bundle_add', 'controls', 2147483647, 1, 7),
+('bx_credits_bundle_add', 'do_submit', 2147483647, 1, 8),
+('bx_credits_bundle_add', 'do_cancel', 2147483647, 1, 9),
+
+('bx_credits_bundle_edit', 'name', 2147483647, 1, 1),
+('bx_credits_bundle_edit', 'title', 2147483647, 1, 2),
+('bx_credits_bundle_edit', 'description', 2147483647, 1, 3),
+('bx_credits_bundle_edit', 'amount', 2147483647, 1, 4),
+('bx_credits_bundle_edit', 'bonus', 2147483647, 1, 5),
+('bx_credits_bundle_edit', 'price', 2147483647, 1, 6),
+('bx_credits_bundle_edit', 'controls', 2147483647, 1, 7),
+('bx_credits_bundle_edit', 'do_submit', 2147483647, 1, 8),
+('bx_credits_bundle_edit', 'do_cancel', 2147483647, 1, 9);
+
+-- FORMS: profile
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_credits_profile', 'bx_credits', '_bx_credits_form_profile', '', 'a:1:{s:7:"enctype";s:19:"multipart/form-data";}', 'bx_credits_profiles', 'id', '', '', 'a:1:{i:0;s:9:"do_submit";}', '', 0, 1, 'BxCreditsFormProfile', 'modules/boonex/credits/classes/BxCreditsFormProfile.php');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_credits_profile', 'bx_credits_profile_edit', 'bx_credits', 0, '_bx_credits_form_profile_display_edit');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_credits_profile', 'bx_credits', 'wdw_clearing', '', '', 0, 'text', '_bx_credits_form_profile_input_sys_wdw_clearing', '_bx_credits_form_profile_input_wdw_clearing', '_bx_credits_form_profile_input_wdw_clearing_inf', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 1, 0),
+('bx_credits_profile', 'bx_credits', 'wdw_minimum', '', '', 0, 'text', '_bx_credits_form_profile_input_sys_wdw_minimum', '_bx_credits_form_profile_input_wdw_minimum', '_bx_credits_form_profile_input_wdw_minimum_inf', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 1, 0),
+('bx_credits_profile', 'bx_credits', 'wdw_remaining', '', '', 0, 'text', '_bx_credits_form_profile_input_sys_wdw_remaining', '_bx_credits_form_profile_input_wdw_remaining', '_bx_credits_form_profile_input_wdw_remaining_inf', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 1, 0),
+('bx_credits_profile', 'bx_credits', 'controls', '', 'do_submit,do_cancel', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('bx_credits_profile', 'bx_credits', 'do_submit', '_bx_credits_form_profile_input_do_submit', '', 0, 'submit', '_bx_credits_form_profile_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_credits_profile', 'bx_credits', 'do_cancel', '_bx_credits_form_profile_input_do_cancel', '', 0, 'button', '_bx_credits_form_bundle_input_sys_do_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 1, 0);
+
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_credits_profile_edit', 'wdw_clearing', 2147483647, 1, 1),
+('bx_credits_profile_edit', 'wdw_minimum', 2147483647, 1, 2),
+('bx_credits_profile_edit', 'wdw_remaining', 2147483647, 1, 3),
+('bx_credits_profile_edit', 'controls', 2147483647, 1, 4),
+('bx_credits_profile_edit', 'do_submit', 2147483647, 1, 5),
+('bx_credits_profile_edit', 'do_cancel', 2147483647, 1, 6);
+
+
+-- STUDIO: page & widget
+INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
+(3, 'bx_credits', '_bx_credits', '_bx_credits', 'bx_credits@modules/boonex/credits/|std-icon.svg');
+SET @iPageId = LAST_INSERT_ID();
+
+SET @iParentPageId = (SELECT `id` FROM `sys_std_pages` WHERE `name` = 'home');
+SET @iParentPageOrder = (SELECT MAX(`order`) FROM `sys_std_pages_widgets` WHERE `page_id` = @iParentPageId);
+INSERT INTO `sys_std_widgets` (`page_id`, `module`, `type`, `url`, `click`, `icon`, `caption`, `cnt_notices`, `cnt_actions`) VALUES
+(@iPageId, 'bx_credits', 'extensions', '{url_studio}module.php?name=bx_credits', '', 'bx_credits@modules/boonex/credits/|std-icon.svg', '_bx_credits', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}');
+INSERT INTO `sys_std_pages_widgets` (`page_id`, `widget_id`, `order`) VALUES
+(@iParentPageId, LAST_INSERT_ID(), IF(ISNULL(@iParentPageOrder), 1, @iParentPageOrder + 1));

+ 28 - 0
modules/boonex/credits/updates/13.0.6_13.0.7/source/template/bundles.html

@@ -0,0 +1,28 @@
+<div class="__sp__-bundles">
+    <div class="__sp__-bundles-cnt relative flex flex-wrap items-stretch justify-center -m-2">
+        <bx_repeat:bundles>
+            <div class="__sp__-bundle-wrp w-full md:w-1/3 p-2 box-border">
+                <div class="__sp__-bundle bx-def-box bx-def-box-round-corners bx-def-color-bg-box w-full h-full">
+                    <div class="__sp__-bundle-cnt flex flex-col items-center justify-center w-full h-full p-4 box-border text-center">
+                        <div class="__sp__-b-title text-2xl uppercase">__title__</div>
+                        <div class="__sp__-b-amount flex-grow mt-4">
+                            <div class="__sp__-ba-value text-3xl font-semibold"><b>__amount__</b></div>
+                            <bx_if:show_bonus>
+                                <div class="__sp__-ba-bonus"><i class="sys-icon plus"></i> <b>__bonus__</b> <bx_text:_bx_credits_txt_for_free /></div>
+                            </bx_if:show_bonus>
+                        </div>
+                        <div class="__sp__-b-price flex justify-center mt-4">
+                            <div class="bx-credits-bp-currency">__currency_sign__</div>
+                            <div class="bx-credits-bp-value">__price__</div>
+                        </div>
+                        <div class="__sp__-b-description mt-4">__description__</div>
+                        <div class="__sp__-b-buy bx-def-margin-top ">
+                            <a class="bx-btn" href="javascript:void(0)" onclick="__onclick__"><bx_text:_bx_credits_txt_purchase /></a>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </bx_repeat:bundles>
+    </div>
+</div>
+__js_code__

+ 3 - 1
modules/boonex/english/updates/13.0.9_13.0.10/install/langs/en.xml

@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources name="en" flag="gb" title="English">
+	<string_add name="_adm_bp_txt_block_active_api"><![CDATA[Active (for App)]]></string_add>
+	<string_add name="_adm_nav_txt_items_active_api"><![CDATA[Active (for App)]]></string_add>
 	<string_add name="_adm_stg_cpt_category_api_general"><![CDATA[General]]></string_add>
     <string_add name="_adm_stg_cpt_category_api_layout"><![CDATA[Layout]]></string_add>
 	<string_add name="_adm_stg_cpt_option_sys_api_menu_top"><![CDATA[Top Menu]]></string_add>
+	<string_add name="_adm_txt_active_api"><![CDATA[Available in App]]></string_add>
 	<string_add name="_sys_audit_action_resolve"><![CDATA[Marked as resolved]]></string_add>
 	<string_add name="_sys_pre_lists_vote_reactions_default"><![CDATA[React]]></string_add>
 
 	<string_del name="_adm_stg_cpt_category_api"><![CDATA[API]]></string_del>
-	<string_del name="_adm_stg_cpt_option_sys_session_auth"><![CDATA[Session authentication]]></string_del>
 </resources>

+ 4 - 0
modules/boonex/english/updates/13.0.9_13.0.10/source/data/langs/system/en.xml

@@ -532,6 +532,7 @@
 	<string name="_adm_bp_mi_page_visibility"><![CDATA[Visibility]]></string>
 	<string name="_adm_bp_scs_save"><![CDATA[The changes were successfully saved]]></string>
 	<string name="_adm_bp_txt_block_active"><![CDATA[Active]]></string>
+        <string name="_adm_bp_txt_block_active_api"><![CDATA[Active (for App)]]></string>
 	<string name="_adm_bp_txt_block_async"><![CDATA[Asynchronous Mode]]></string>
 	<string name="_adm_bp_txt_block_cache_lifetime"><![CDATA[Block Cache Lifetime (in seconds)]]></string>
 	<string name="_adm_bp_txt_block_content_attachments_html"><![CDATA[Attachments]]></string>
@@ -1225,6 +1226,7 @@
         <string name="_adm_nav_txt_items_parent_id"><![CDATA[Parent Item]]></string>
         <string name="_adm_nav_txt_items_parent_id_empty"><![CDATA[No Parent Item]]></string>
         <string name="_adm_nav_txt_items_primary"><![CDATA[Primary]]></string>
+        <string name="_adm_nav_txt_items_active_api"><![CDATA[Active (for App)]]></string>
 	<string name="_adm_nav_txt_items_show_to_popup"><![CDATA[Show "{0}" menu item to: ]]></string>
 	<string name="_adm_nav_txt_items_submenu"><![CDATA[Submenu]]></string>
 	<string name="_adm_nav_txt_items_submenu_empty"><![CDATA[No Submenu]]></string>
@@ -1673,6 +1675,7 @@
 	<string name="_adm_stg_cpt_option_sys_template_cache_minify_js_enable"><![CDATA[Enable lessening for JS files (cache should be enabled)]]></string>
 	<string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Remote video transcoding (requires special setup)]]></string>
   	<string name="_adm_stg_cpt_option_sys_session_lifetime_in_min"><![CDATA[Session lifetime (min)]]></string>
+  	<string name="_adm_stg_cpt_option_sys_session_auth"><![CDATA[Session authentication]]></string>
 	<string name="_adm_stg_cpt_option_sys_default_curl_timeout"><![CDATA[cURL - default timeout]]></string>
     <string name="_adm_stg_cpt_option_sys_ssl_allow_untrusted"><![CDATA[cURL - trust unsigned certificates or not verified hosts]]></string>
     <string name="_adm_stg_cpt_option_sys_csp_frame_ancestors"><![CDATA['Content-Security-Policy: frame-ancestors' header value]]></string>
@@ -1809,6 +1812,7 @@
 	<string name="_adm_tmi_cpt_site"><![CDATA[Go To Site]]></string>
 	<string name="_adm_tmi_cpt_tour"><![CDATA[Tour]]></string>
 	<string name="_adm_tmi_cpt_launcher"><![CDATA[Launcher]]></string>
+        <string name="_adm_txt_active_api"><![CDATA[Available in App]]></string>
 	<string name="_adm_txt_confirm_cancel"><![CDATA[Cancel]]></string>
 	<string name="_adm_txt_confirm_ok"><![CDATA[OK]]></string>
 	<string name="_adm_txt_forgot_password"><![CDATA[Forgot password?]]></string>

+ 3 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/install/config.php

@@ -44,6 +44,9 @@ $aConfig = array(
      * Category for language keys.
      */
     'language_category' => array(
+        array('name' => 'Credits', 'path' => 'bx_credits/'),
+        array('name' => 'Spaces', 'path' => 'bx_spaces/'),
+        array('name' => 'Timeline', 'path' => 'bx_timeline/'),
         array('name' => 'System', 'path' => 'system/'),
     ),
 

+ 5 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_credits/ru.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+	<string_add name="_bx_credits_form_bundle_input_sys_description"><![CDATA[Описание]]></string_add>
+    <string_add name="_bx_credits_form_bundle_input_description"><![CDATA[Описание]]></string_add>
+</resources>

+ 8 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_spaces/ru.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+	<string_add name="_bx_spaces_menu_item_title_system_leave_group"><![CDATA[Покинуть пространство]]></string_add>
+    <string_add name="_bx_spaces_menu_item_title_leave_group"><![CDATA[Покинуть пространство]]></string_add>
+
+	<string_del name="_bx_spaces_menu_item_title_system_leave_space"><![CDATA[Покинуть пространство]]></string_del>
+    <string_del name="_bx_spaces_menu_item_title_leave_space"><![CDATA[Покинуть пространство]]></string_del>
+</resources>

+ 5 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/bx_timeline/ru.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+	<string_del name="_bx_timeline_menu_item_title_system_add_emoji"><![CDATA[Добавить Emoji]]></string_del>
+    <string_del name="_bx_timeline_menu_item_title_add_emoji"><![CDATA[Добавить Emoji]]></string_del>
+</resources>

+ 6 - 2
modules/boonex/russian/updates/13.0.9_13.0.10/install/langs/system/ru.xml

@@ -1,11 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources name="ru" flag="ru" title="Russian">
-	<string_add name="_adm_stg_cpt_category_api"><![CDATA[Общие]]></string_add>
+	<string_add name="_adm_bp_txt_block_active_api"><![CDATA[Активный (для приложения)]]></string_add>
+	<string_add name="_adm_nav_txt_items_active_api"><![CDATA[Активный (для приложения)]]></string_add>
+	<string_add name="_adm_stg_cpt_category_api_general"><![CDATA[Общие]]></string_add>
     <string_add name="_adm_stg_cpt_category_api_layout"><![CDATA[Планировка]]></string_add>
 	<string_add name="_adm_stg_cpt_option_sys_api_menu_top"><![CDATA[Главное меню]]></string_add>
+	<string_add name="_adm_txt_active_api"><![CDATA[Доступно в приложении]]></string_add>
 	<string_add name="_sys_audit_action_resolve"><![CDATA[Помечена как решеная]]></string_add>
 	<string_add name="_sys_pre_lists_vote_reactions_default"><![CDATA[Отреагировать]]></string_add>
 
+	<string_upd name="_adm_stg_cpt_option_sys_session_auth"><![CDATA[Аутентификация через сессию]]></string_upd>
+
 	<string_del name="_adm_stg_cpt_category_api"><![CDATA[API]]></string_del>
-	<string_del name="_adm_stg_cpt_option_sys_session_auth"><![CDATA[Аутентификация черех сессию]]></string_del>
 </resources>

+ 310 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_credits/ru.xml

@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+    <string name="_bx_credits"><![CDATA[Кредиты]]></string>
+
+
+    <!-- Options -->
+    <string name="_bx_credits_option_enable_withdraw"><![CDATA[Позволить пользователям снимать кредиты, конвертируя их в деньги]]></string>
+    <string name="_bx_credits_option_withdraw_email"><![CDATA[Email, на который будут приходить запросы на снятие]]></string>
+    <string name="_bx_credits_option_withdraw_clearing"><![CDATA[Промежуток времени (в днях), в течение которого полученные кредиты не могут быть сняты]]></string>
+    <string name="_bx_credits_option_withdraw_minimum"><![CDATA[Минимальная сумма очищенных кредитов, которая может быть снята]]></string>
+    <string name="_bx_credits_option_withdraw_remaining"><![CDATA[Минимальный баланс кредитов после снятия]]></string>
+    <string name="_bx_credits_option_precision"><![CDATA[Точность (количество цифр после десятичной точки)]]></string>
+    <string name="_bx_credits_option_conversion_rate_use"><![CDATA[Коэффициент конвертации для оплаты кредитами (для валюты сайта)]]></string>
+    <string name="_bx_credits_option_conversion_rate_withdraw"><![CDATA[Коэффициент конвертации для снятия кредитов (для валюты сайта)]]></string>
+    <string name="_bx_credits_option_code"><![CDATA[Код для префикса суммы]]></string>
+    <string name="_bx_credits_option_icon"><![CDATA[Иконка для префикса суммы]]></string>
+    <string name="_bx_credits_enable_provider"><![CDATA[Активировать платежную систему 'Credits' для всех новосозданных профилей]]></string>
+
+
+    <!-- Forms -->
+    <string name="_bx_credits_form_bundle"><![CDATA[Пакет]]></string>
+    <string name="_bx_credits_form_bundle_display_add"><![CDATA[Добавить пакет]]></string>
+    <string name="_bx_credits_form_bundle_display_edit"><![CDATA[Редактировать пакет]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_title"><![CDATA[Заголовок]]></string>
+    <string name="_bx_credits_form_bundle_input_title"><![CDATA[Заголовок]]></string>
+    <string name="_bx_credits_form_bundle_input_title_err"><![CDATA[Это поле обязательно. Пожалуйста, заполните его на всех языках.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_description"><![CDATA[Описание]]></string>
+    <string name="_bx_credits_form_bundle_input_description"><![CDATA[Описание]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_name"><![CDATA[Имя]]></string>
+    <string name="_bx_credits_form_bundle_input_name"><![CDATA[Имя]]></string>
+    <string name="_bx_credits_form_bundle_input_name_err"><![CDATA[Это поле обязательно для использования в API запросах. Пожалуйста, заполните его.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_form_bundle_input_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_form_bundle_input_amount_err"><![CDATA[Это поле обязательно. Пожалуйста, заполните его.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_bonus"><![CDATA[Бонус]]></string>
+    <string name="_bx_credits_form_bundle_input_bonus"><![CDATA[Бонус]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_price"><![CDATA[Цена]]></string>
+    <string name="_bx_credits_form_bundle_input_price"><![CDATA[Цена]]></string>
+    <string name="_bx_credits_form_bundle_input_price_err"><![CDATA[Это поле обязательно. Пожалуйста, заполните его.]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_bundle_input_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_bundle_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_credits_form_bundle_input_do_cancel"><![CDATA[Отмена]]></string>
+
+    <string name="_bx_credits_form_credit"><![CDATA[Кредит]]></string>
+    <string name="_bx_credits_form_credit_display_grant"><![CDATA[Дарить]]></string>
+    <string name="_bx_credits_form_credit_display_send"><![CDATA[Отправить]]></string>
+    <string name="_bx_credits_form_credit_display_withdraw_request"><![CDATA[Запросить снятие]]></string>
+    <string name="_bx_credits_form_credit_display_withdraw_confirm"><![CDATA[Подтвердить снятие]]></string>
+    <string name="_bx_credits_form_credit_input_sys_balance"><![CDATA[Баланс]]></string>
+    <string name="_bx_credits_form_credit_input_balance"><![CDATA[Баланс]]></string>
+    <string name="_bx_credits_form_credit_input_sys_cleared"><![CDATA[Очищенный баланс]]></string>
+    <string name="_bx_credits_form_credit_input_cleared"><![CDATA[Очищенный баланс]]></string>
+    <string name="_bx_credits_form_credit_input_cleared_inf"><![CDATA[Период клиринга составляет {wdw_clearing} дней, прежде чем полученные кредиты можно будет снять.]]></string>
+    <string name="_bx_credits_form_credit_input_sys_rate"><![CDATA[Коэффициент конвертации]]></string>
+    <string name="_bx_credits_form_credit_input_rate"><![CDATA[Коэффициент конвертации]]></string>
+    <string name="_bx_credits_form_credit_input_sys_result"><![CDATA[Результат]]></string>
+    <string name="_bx_credits_form_credit_input_result"><![CDATA[Результат]]></string>
+    <string name="_bx_credits_form_credit_input_sys_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_form_credit_input_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_form_credit_input_amount_inf"><![CDATA[Минимальная сумма составляет {wdw_minimum} кредитов, а остаток после снятия должен составлять {wdw_remaining} кредитов.]]></string>
+    <string name="_bx_credits_form_credit_input_amount_err"><![CDATA[Это поле обязательно. Пожалуйста, заполните его.]]></string>
+    <string name="_bx_credits_form_credit_input_sys_message"><![CDATA[Сообщение]]></string>
+    <string name="_bx_credits_form_credit_input_message"><![CDATA[Сообщение]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_g"><![CDATA[]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_s"><![CDATA[Укажите цель отправки, чтобы отразить её в истории для дальнейшего использования]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_wr"><![CDATA[Платежные инструкции и другие примечания]]></string>
+    <string name="_bx_credits_form_credit_input_message_inf_wc"><![CDATA[Подтверждение оплаты и другие примечания]]></string>
+    <string name="_bx_credits_form_credit_input_profile"><![CDATA[Профиль]]></string>
+    <string name="_bx_credits_form_credit_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_credit_input_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_credit_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_credits_form_credit_input_do_cancel"><![CDATA[Отмена]]></string>
+
+    <string name="_bx_credits_form_profile"><![CDATA[Профиль]]></string>
+    <string name="_bx_credits_form_profile_display_edit"><![CDATA[Редактировать профиль]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_clearing"><![CDATA[Клиринговый период]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_clearing"><![CDATA[Клиринговый период (в днях)]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_clearing_inf"><![CDATA[Оставьте пустым (0), чтобы использовать глобальное значение]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_minimum"><![CDATA[Минимальная сумма вывода]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_minimum"><![CDATA[Минимальная сумма вывода]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_minimum_inf"><![CDATA[Оставьте пустым (0), чтобы использовать глобальное значение]]></string>
+    <string name="_bx_credits_form_profile_input_sys_wdw_remaining"><![CDATA[Минимальная оставшаяся сумма]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_remaining"><![CDATA[Минимальная оставшаяся сумма]]></string>
+    <string name="_bx_credits_form_profile_input_wdw_remaining_inf"><![CDATA[Оставьте пустым (0), чтобы использовать глобальное значение]]></string>
+    <string name="_bx_credits_form_profile_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_profile_input_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_credits_form_profile_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_credits_form_profile_input_do_cancel"><![CDATA[Отмена]]></string>
+
+    <!-- Pages -->
+    <string name="_bx_credits_page_title_sys_home"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_page_title_home"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_page_block_title_sys_bundles"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_page_block_title_bundles"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_page_title_sys_checkout"><![CDATA[Подтверждение оплаты]]></string>
+    <string name="_bx_credits_page_title_checkout"><![CDATA[Подтверждение оплаты]]></string>
+    <string name="_bx_credits_page_block_title_sys_checkout"><![CDATA[Подтверждение оплаты]]></string>
+    <string name="_bx_credits_page_block_title_checkout"><![CDATA[Подтверждение оплаты]]></string>
+    <string name="_bx_credits_page_title_sys_history_common"><![CDATA[Моя история]]></string>
+    <string name="_bx_credits_page_title_history_common"><![CDATA[История]]></string>
+    <string name="_bx_credits_page_block_title_sys_history_common"><![CDATA[Моя история]]></string>
+    <string name="_bx_credits_page_block_title_history_common"><![CDATA[История]]></string>    
+    <string name="_bx_credits_page_title_sys_history_administration"><![CDATA[Вся история]]></string>
+    <string name="_bx_credits_page_title_history_administration"><![CDATA[История]]></string>
+    <string name="_bx_credits_page_block_title_sys_history_administration"><![CDATA[Вся история]]></string>
+    <string name="_bx_credits_page_block_title_history_administration"><![CDATA[История]]></string>
+    <string name="_bx_credits_page_title_sys_orders_common"><![CDATA[Мои ордеры]]></string>
+    <string name="_bx_credits_page_title_orders_common"><![CDATA[Ордеры]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_common_note"><![CDATA[Заметка]]></string>
+    <string name="_bx_credits_page_block_title_orders_common_note"><![CDATA[Заметка]]></string>
+    <string name="_bx_credits_page_block_content_orders_common_note"><![CDATA[Ордеры только для справки.]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_common"><![CDATA[Мои ордеры]]></string>
+    <string name="_bx_credits_page_block_title_orders_common"><![CDATA[Ордеры]]></string>
+    <string name="_bx_credits_page_title_sys_orders_administration"><![CDATA[Все ордеры]]></string>
+    <string name="_bx_credits_page_title_orders_administration"><![CDATA[Ордеры]]></string>
+    <string name="_bx_credits_page_block_title_sys_orders_administration"><![CDATA[Все ордеры]]></string>
+    <string name="_bx_credits_page_block_title_orders_administration"><![CDATA[Ордеры]]></string>
+    <string name="_bx_credits_page_title_sys_profiles_administration"><![CDATA[Все профили]]></string>
+    <string name="_bx_credits_page_title_profiles_administration"><![CDATA[Профили]]></string>
+    <string name="_bx_credits_page_block_title_sys_profiles_administration"><![CDATA[Все профили]]></string>
+    <string name="_bx_credits_page_block_title_profiles_administration"><![CDATA[Профили]]></string>
+
+
+    <!-- Menus -->
+    <string name="_bx_credits_menu_item_title_system_credits"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_credits"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_system_history"><![CDATA[Баланс]]></string>
+    <string name="_bx_credits_menu_item_title_history"><![CDATA[{unit}{value}]]></string>
+    <string name="_bx_credits_menu_item_title_system_notifications"><![CDATA[Баланс]]></string>
+    <string name="_bx_credits_menu_item_title_notifications"><![CDATA[{value}]]></string>
+    <string name="_bx_credits_menu_title_submenu"><![CDATA[Кредиты - Подменю]]></string>
+    <string name="_bx_credits_menu_set_title_submenu"><![CDATA[Кредиты - Подменю]]></string>
+    <string name="_bx_credits_menu_item_title_system_home"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_home"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_system_admt_credits"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_admt_credits"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_bundles"><![CDATA[Пакеты]]></string>
+    <string name="_bx_credits_menu_item_title_system_manage"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_item_title_manage"><![CDATA[Кредиты]]></string>
+    <string name="_bx_credits_menu_title_manage_submenu"><![CDATA[Ордеры - Подменю]]></string>
+    <string name="_bx_credits_menu_set_title_manage_submenu"><![CDATA[Ордеры - Подменю]]></string>
+    <string name="_bx_credits_menu_item_title_system_orders_administration"><![CDATA[Все ордеры]]></string>
+    <string name="_bx_credits_menu_item_title_orders_administration"><![CDATA[Все ордеры]]></string>
+    <string name="_bx_credits_menu_item_title_system_orders_common"><![CDATA[Мои ордеры]]></string>
+    <string name="_bx_credits_menu_item_title_orders_common"><![CDATA[Мои ордеры]]></string>
+    <string name="_bx_credits_menu_item_title_system_history_administration"><![CDATA[Вся история]]></string>
+    <string name="_bx_credits_menu_item_title_history_administration"><![CDATA[Вся история]]></string>
+    <string name="_bx_credits_menu_item_title_system_history_common"><![CDATA[Моя история]]></string>
+    <string name="_bx_credits_menu_item_title_history_common"><![CDATA[Моя история]]></string>
+    <string name="_bx_credits_menu_item_title_system_profiles_administration"><![CDATA[Все профили]]></string>
+    <string name="_bx_credits_menu_item_title_profiles_administration"><![CDATA[Все профили]]></string>
+
+
+    <!-- Grids -->
+    <string name="_bx_credits_grid_column_title_name"><![CDATA[Название]]></string>
+    <string name="_bx_credits_grid_column_title_title"><![CDATA[Заголовок]]></string>
+    <string name="_bx_credits_grid_column_title_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_grid_column_title_bonus"><![CDATA[Бонус]]></string>
+    <string name="_bx_credits_grid_column_title_price"><![CDATA[Цена]]></string>
+    <string name="_bx_credits_grid_action_title_add"><![CDATA[Добавить]]></string>
+    <string name="_bx_credits_grid_action_title_edit"><![CDATA[Редактировать]]></string>
+    <string name="_bx_credits_grid_action_title_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_credits_grid_popup_title_add_bundle"><![CDATA[Добавить пакет]]></string>
+    <string name="_bx_credits_grid_popup_title_edit_bundle"><![CDATA[Редактировать '{0}' пакет]]></string>
+
+    <string name="_bx_credits_grid_column_title_htr_pid"><![CDATA[Профиль]]></string>
+    <string name="_bx_credits_grid_column_title_htr_first_pid"><![CDATA[Профиль 1]]></string>
+    <string name="_bx_credits_grid_column_title_htr_second_pid"><![CDATA[Профиль 2]]></string>
+    <string name="_bx_credits_grid_column_title_htr_amount"><![CDATA[Количество]]></string>
+    <string name="_bx_credits_grid_column_title_htr_order"><![CDATA[Ордер]]></string>
+    <string name="_bx_credits_grid_column_title_htr_direction"><![CDATA[Направление]]></string>
+    <string name="_bx_credits_grid_column_title_htr_info"><![CDATA[Пометка]]></string>
+    <string name="_bx_credits_grid_column_title_htr_date"><![CDATA[Дата]]></string>
+    <string name="_bx_credits_grid_column_title_htr_cleared"><![CDATA[Очищение]]></string>
+    <string name="_bx_credits_grid_action_title_htr_grant"><![CDATA[Подарить]]></string>
+    <string name="_bx_credits_grid_action_title_htr_send"><![CDATA[Отправить]]></string>
+    <string name="_bx_credits_grid_action_title_htr_withdraw_confirm"><![CDATA[Подтвердить снятие]]></string>
+    <string name="_bx_credits_grid_action_title_htr_withdraw_request"><![CDATA[Запросить снятие]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_grant"><![CDATA[Подарить]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_send"><![CDATA[Отправить]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_withdraw_confirm"><![CDATA[Подтвердить снятие]]></string>
+    <string name="_bx_credits_grid_popup_title_htr_withdraw_request"><![CDATA[Запросить снятие]]></string>
+
+    <string name="_bx_credits_grid_column_title_ord_profile_id"><![CDATA[Профиль]]></string>
+    <string name="_bx_credits_grid_column_title_ord_bundle"><![CDATA[Пакет]]></string>
+    <string name="_bx_credits_grid_column_title_ord_transaction"><![CDATA[Транзакция]]></string>
+    <string name="_bx_credits_grid_column_title_ord_type"><![CDATA[Тип]]></string>
+    <string name="_bx_credits_grid_column_value_ord_type_single"><![CDATA[Разовый]]></string>
+    <string name="_bx_credits_grid_column_value_ord_type_recurring"><![CDATA[Повторяющийся]]></string>
+    <string name="_bx_credits_grid_column_title_ord_added"><![CDATA[Добавлено]]></string>
+    <string name="_bx_credits_grid_column_title_ord_expired"><![CDATA[Закончится]]></string>
+
+    <string name="_bx_credits_grid_column_title_pfl_id"><![CDATA[Профиль]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_clearing"><![CDATA[Клиринговый период (в днях)]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_minimum"><![CDATA[Минимальная сумма вывода]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_wdw_remaining"><![CDATA[Минимальная оставшаяся сумма]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_balance"><![CDATA[Баланс]]></string>
+    <string name="_bx_credits_grid_column_title_pfl_balance_cleared"><![CDATA[Очищенный баланс]]></string>
+    <string name="_bx_credits_grid_action_title_pfl_edit"><![CDATA[Редактировать]]></string>
+    <string name="_bx_credits_grid_popup_title_pfl_edit"><![CDATA[Редактировать ограничения профиля '{0}']]></string>
+
+    <!-- Email templates -->
+    <string name="_bx_credits_et_txt_name_granted"><![CDATA[Кредиты подарены.]]></string>
+    <string name="_bx_credits_et_txt_subject_granted"><![CDATA[Вам подарили {amount} кредитов.]]></string>
+    <string name="_bx_credits_et_txt_body_granted"><![CDATA[{email_header}
+<p>Здравствуйте, {profile_name}.</p>
+<p>Вам подарили <b>{amount}</b> кредитов.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_received"><![CDATA[Кредиты получены.]]></string>
+    <string name="_bx_credits_et_txt_subject_received"><![CDATA[Вы получили {amount} кредитов.]]></string>
+    <string name="_bx_credits_et_txt_body_received"><![CDATA[{email_header}
+<p>Здравствуйте, {profile_name}.</p>
+<p>Вы получили <b>{amount}</b> кредитов от <a href="{performer_link}">{performer_name}</a>.<br />Ордер: <b>{order}</b>.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_purchased"><![CDATA[Кредиты куплены.]]></string>
+    <string name="_bx_credits_et_txt_subject_purchased"><![CDATA[Вы приобрели {bundle_title} пакет кредитов.]]></string>
+    <string name="_bx_credits_et_txt_body_purchased"><![CDATA[{email_header}
+<p>Здравствуйте, {client_name}.</p>
+<p>Вы приобрели <a href="{bundle_url}">{bundle_title}</a> пакет кредитов.<br />Ваш ордер: <b>{order}</b>.</p>
+<p>{notes}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_in"><![CDATA[Входящие кредиты.]]></string>
+    <string name="_bx_credits_et_txt_subject_in"><![CDATA[Входящие кредиты.]]></string>
+    <string name="_bx_credits_et_txt_body_in"><![CDATA[{email_header}
+<p>Здравствуйте, {profile_name}.</p>
+<p>Вы получили <b>{amount}</b> кредитов от {second_profile_name}.</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_out"><![CDATA[Исходящие кредиты.]]></string>
+    <string name="_bx_credits_et_txt_subject_out"><![CDATA[Исходящие кредиты.]]></string>
+    <string name="_bx_credits_et_txt_body_out"><![CDATA[{email_header}
+<p>Здравствуйте, {profile_name}.</p>
+<p>Вы отправили <b>{amount}</b> кредитов на счет {second_profile_name}.</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_withdraw_requested"><![CDATA[Запрос на снятие.]]></string>
+    <string name="_bx_credits_et_txt_subject_withdraw_requested"><![CDATA[Запрос на снятие.]]></string>
+    <string name="_bx_credits_et_txt_body_withdraw_requested"><![CDATA[{email_header}
+<p><a href="{profile_link}">{profile_name}</a> запросил снятие <b>{amount}</b> кредитов с его/её баланса.</p>
+<p>Текущий коэффициент вывода: <b>{rate}</b></p>
+<p>Подтвердить вывод можно перейдя по <a href="{confirm_url}">ссылке</a>.</p>
+<p>Примечания от <b>{profile_name}</b>:<br />{message}</p>
+{email_footer}]]></string>
+    <string name="_bx_credits_et_txt_name_withdraw_sent"><![CDATA[Снятие было выполнено.]]></string>
+    <string name="_bx_credits_et_txt_subject_withdraw_sent"><![CDATA[Снятие было выполнено.]]></string>
+    <string name="_bx_credits_et_txt_body_withdraw_sent"><![CDATA[{email_header}
+<p>Здравствуйте, {profile_name}.</p>
+<p>Запрашиваемая сумма кредитов (<b>{amount}</b>) была отправлена.</p>
+<p>{message}</p>
+{email_footer}]]></string>
+
+
+    <!-- Other -->
+    <string name="_bx_credits_txt_sample_single"><![CDATA[кредит]]></string>
+    <string name="_bx_credits_txt_sample_single_with_article"><![CDATA[кредит]]></string>
+    <string name="_bx_credits_txt_for_free"><![CDATA[бесплатно]]></string>
+    <string name="_bx_credits_txt_n_plus_m_for_free"><![CDATA[{0} (+{1} бесплатно)]]></string>
+    <string name="_bx_credits_txt_purchase"><![CDATA[Купить]]></string>
+    <string name="_bx_credits_txt_never"><![CDATA[никогда]]></string>
+    <string name="_bx_credits_txt_direction_out"><![CDATA[получено]]></string>
+    <string name="_bx_credits_txt_direction_in"><![CDATA[переведено]]></string>
+    <string name="_bx_credits_txt_purchased_note"><![CDATA[Обращайтесь к <a href="{0}">{1}</a>, если у вас есть какие-либо вопросы или вам нужна поддержка.]]></string>
+    <string name="_bx_credits_txt_history_info_grant"><![CDATA[Подарок]]></string>
+    <string name="_bx_credits_txt_history_info_send"><![CDATA[Перевод]]></string>
+    <string name="_bx_credits_txt_history_info_purchase"><![CDATA[Покупка пакета]]></string>
+    <string name="_bx_credits_txt_history_info_checkout"><![CDATA[Выплаты между профилями]]></string>
+    <string name="_bx_credits_txt_history_info_withdraw"><![CDATA[Снятие по запросу]]></string>
+    <string name="_bx_credits_txt_history_info_service"><![CDATA[Искусственно инициированный перевод]]></string>
+    <string name="_bx_credits_txt_history_info_refund"><![CDATA[Возврат средств]]></string>
+    <string name="_bx_credits_txt_history_info_cancellation"><![CDATA[Отмена]]></string>
+
+    <string name="_bx_credits_msg_empty_author"><![CDATA['Главный продавец' не задан. Вам необходимо пометить какой-либо профайл как 'Главный продавец' в настройках активного на данный момент платежного модуля.]]></string>
+    <string name="_bx_credits_msg_action_performed"><![CDATA[Действие было успешно выполнено.]]></string>
+    <string name="_bx_credits_err_profile_not_found"><![CDATA[Профиль не был найден.]]></string>
+    <string name="_bx_credits_err_login_required"><![CDATA[Необходимо войти.]]></string>
+    <string name="_bx_credits_err_low_balance"><![CDATA[Недостаточно средств на балансе.]]></string>
+    <string name="_bx_credits_err_withdraw_minimum"><![CDATA[Вывод менее {0} кредитов недоступен.]]></string>
+    <string name="_bx_credits_err_withdraw_remaining"><![CDATA[Минимальный остаток на счете после вывода должен быть более {0} кредитов.]]></string>
+    <string name="_bx_credits_err_cannot_update_balance"><![CDATA[Невозможно обновить баланс.]]></string>
+    <string name="_bx_credits_err_cannot_send"><![CDATA[Невозможно отправить сообщение. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+    <string name="_bx_credits_err_cannot_perform_action"><![CDATA[Невозможно выполнить действие. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+
+
+    <!-- Checkout process -->
+    <string name="_bx_credits_txt_checkout"><![CDATA[Подтверждение оплаты]]></string>
+    <string name="_bx_credits_txt_checkout_to"><![CDATA[Заплатить {0} за:]]></string>
+    <string name="_bx_credits_txt_checkout_price_money"><![CDATA[Цена:]]></string>
+    <string name="_bx_credits_txt_checkout_price_credits"><![CDATA[В кредитах:]]></string>
+    <string name="_bx_credits_txt_checkout_rate"><![CDATA[Коэффициент:]]></string>
+    <string name="_bx_credits_txt_checkout_qt"><![CDATA[шт.]]></string>
+
+    <!-- Subscribe process -->
+    <string name="_bx_credits_txt_subscribe"><![CDATA[Подписаться]]></string>
+    <string name="_bx_credits_txt_subscribe_for"><![CDATA[Подписаться на:]]></string>
+    <string name="_bx_credits_txt_subscribe_lifetime"><![CDATA[пожизненно]]></string>  
+    <string name="_bx_credits_txt_subscribe_period_mask"><![CDATA[{0} {1}]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_year"><![CDATA[гд.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_month"><![CDATA[мес.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_week"><![CDATA[нед.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_day"><![CDATA[дн.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_hour"><![CDATA[ч.]]></string>
+    <string name="_bx_credits_txt_subscribe_period_unit_minute"><![CDATA[мин.]]></string>
+    <string name="_bx_credits_txt_subscribe_trial"><![CDATA[Пробный период:]]></string>
+    <string name="_bx_credits_txt_subscribe_trial_mask"><![CDATA[{0} {1}]]></string>
+
+    <string name="_bx_credits_err_unknown_buyer"><![CDATA[Необходимо войти.]]></string>
+    <string name="_bx_credits_err_unknown_seller"><![CDATA[Неизвестный продавец.]]></string>
+    <string name="_bx_credits_err_incorrect_data"><![CDATA[Неверные входные данные. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+</resources>

+ 444 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_spaces/ru.xml

@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+    <string name="_bx_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_cmts"><![CDATA[Пространства - Комментарии]]></string>
+
+    <string name="_bx_spaces_option_enable_auto_approve"><![CDATA[Автоматически активировать пространство после создания]]></string>
+    <string name="_bx_spaces_option_enable_multilevel_hierarchy"><![CDATA[Включить многоуровневую иерархию (экспериментально)]]></string>
+    <string name="_bx_spaces_option_num_connections_quick"><![CDATA[Количество элементов в блоке друзей]]></string>
+    <string name="_bx_spaces_option_per_page_browse"><![CDATA[Количество элементов на странице]]></string>
+    <string name="_bx_spaces_option_num_rss"><![CDATA[Количество элементов в ленте RSS]]></string>
+    <string name="_bx_spaces_option_searchable_fields"><![CDATA[Поля для поиска]]></string>
+    <string name="_bx_spaces_option_members_mode"><![CDATA[Спец. режим для членов пространства]]></string>
+    <string name="_bx_spaces_option_members_mode_multi_roles"><![CDATA[Множественные роли]]></string>
+    <string name="_bx_spaces_option_per_page_for_favorites_lists"><![CDATA[Количество списков избранного на странице]]></string>
+    <string name="_bx_spaces_option_internal_notifications"><![CDATA[Использовать встроенную нотификацию]]></string>
+
+    <string name="_bx_spaces_form_profile"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_add"><![CDATA[Добавление пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_edit"><![CDATA[Редактирование пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_edit_cover"><![CDATA[Редактирование обложки]]></string>
+    <string name="_bx_spaces_form_profile_display_delete"><![CDATA[Удаление пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_view"><![CDATA[Просмотр пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_view_full"><![CDATA[Полный просмотр пространства]]></string>
+    <string name="_bx_spaces_form_profile_display_invite"><![CDATA[Приглашение в пространство]]></string>
+    <string name="_bx_spaces_form_entry_input_author"><![CDATA[Автор]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_join_confirm"><![CDATA[Подтверждение присоединения]]></string>
+    <string name="_bx_spaces_form_profile_input_join_confirm"><![CDATA[Для присоединения требуется разрешение]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_allow_view_to"><![CDATA[Доступно для]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_to"><![CDATA[Доступно для]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_favorite_list"><![CDATA[Видимость]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_to_desc"><![CDATA[Закрытая - все могут найти пространство и видеть кто в ней состоит, только участники могут видеть сообщения. Секретная - только участники могут найти пространство и видеть сообщения.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_allow_post_to"><![CDATA[Оставлять сообщения в профиле могут]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_post_to"><![CDATA[Оставлять сообщения в профиле могут]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_initial_members"><![CDATA[Пригласить участников]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_parent_space"><![CDATA[Родительское пространство]]></string>
+    <string name="_bx_spaces_form_profile_input_parent_space"><![CDATA[Родительское пространство]]></string>
+    <string name="_bx_spaces_form_profile_input_initial_members"><![CDATA[Пригласить участников]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_name"><![CDATA[Название пространства]]></string>
+    <string name="_bx_spaces_form_profile_input_space_name"><![CDATA[Название пространства]]></string>
+    <string name="_bx_spaces_form_profile_input_space_name_err"><![CDATA[Эта информация необходима. Пожалуйста, заполните это поле.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_desc"><![CDATA[Описание]]></string>
+    <string name="_bx_spaces_form_profile_input_space_desc"><![CDATA[Описание]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_cat"><![CDATA[Категория]]></string>
+    <string name="_bx_spaces_form_profile_input_space_cat"><![CDATA[Категория]]></string>
+    <string name="_bx_spaces_form_profile_input_space_cat_err"><![CDATA[Поле категории необходимо]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_picture"><![CDATA[Картинка пространства]]></string>
+    <string name="_bx_spaces_form_profile_input_picture"><![CDATA[Загрузить новую картинку пространства]]></string>
+    <string name="_bx_spaces_form_profile_input_picture_err"><![CDATA[Необходима картинка пространства.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_cover"><![CDATA[Картинка обложки]]></string>
+    <string name="_bx_spaces_form_profile_input_cover"><![CDATA[Загрузить новую картинку обложки]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_delete_confirm"><![CDATA[Подтверждение на удаление]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm"><![CDATA[Я уверен, что хочу удалить эту пространство]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm_info"><![CDATA[Это действие не может быть отменено.]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm_error"><![CDATA[Пожалуйста, отметьте этот флажок, если действительно хотите удалить пространство.]]></string>
+
+    <string name="_bx_spaces_form_price"><![CDATA[Цена]]></string>
+    <string name="_bx_spaces_form_price_display_add"><![CDATA[Добавление]]></string>
+    <string name="_bx_spaces_form_price_display_edit"><![CDATA[Редактирование]]></string>
+    <string name="_bx_spaces_form_price_input_sys_id"><![CDATA[ID]]></string>
+    <string name="_bx_spaces_form_price_input_sys_role_id"><![CDATA[ID роли]]></string>
+    <string name="_bx_spaces_form_price_input_sys_name"><![CDATA[Имя]]></string>
+    <string name="_bx_spaces_form_price_input_name"><![CDATA[Имя]]></string>
+    <string name="_bx_spaces_form_price_input_inf_name"><![CDATA[Уникальное значение, которое будет использоваться в серверной части и API запросах]]></string>
+    <string name="_bx_spaces_form_price_input_err_name"><![CDATA[Введите уникальное значение]]></string>
+    <string name="_bx_spaces_form_price_input_sys_period"><![CDATA[Период]]></string>
+    <string name="_bx_spaces_form_price_input_period"><![CDATA[Период]]></string>
+    <string name="_bx_spaces_form_price_input_inf_period"><![CDATA[Используйте 0 для пожизненного]]></string>
+    <string name="_bx_spaces_form_price_input_sys_period_unit"><![CDATA[Единица измерения периода]]></string>
+    <string name="_bx_spaces_form_price_input_period_unit"><![CDATA[Единица измерения периода]]></string>
+    <string name="_bx_spaces_form_price_input_inf_period_unit"><![CDATA[Оставьте пустым для пожизненного уровня.]]></string>
+    <string name="_bx_spaces_form_price_input_err_period_unit"><![CDATA[Здесь Вам необходимо выбрать единицу измерения периода.]]></string>
+    <string name="_bx_spaces_form_price_input_sys_price"><![CDATA[Цена]]></string>
+    <string name="_bx_spaces_form_price_input_price"><![CDATA[Цена]]></string>
+    <string name="_bx_spaces_form_price_input_inf_price"><![CDATA[Введите 0 или оставьте пустым для создания бесплатного уровня.]]></string>
+    <string name="_bx_spaces_form_price_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_spaces_form_price_input_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_spaces_form_price_input_sys_do_cancel"><![CDATA[Отменить]]></string>
+    <string name="_bx_spaces_form_price_input_do_cancel"><![CDATA[Отменить]]></string>
+
+	<string name="_bx_spaces_acl_action_create_profile"><![CDATA[Создать пространство]]></string>
+        <string name="_bx_spaces_acl_action_use_paid_join"><![CDATA[Использовать платный вход в пространство]]></string>
+	<string name="_bx_spaces_acl_action_delete_profile"><![CDATA[Удалить пространство]]></string>
+	<string name="_bx_spaces_acl_action_view_profile"><![CDATA[Просмотреть пространство]]></string>
+	<string name="_bx_spaces_acl_action_edit_any_profile"><![CDATA[Редактировать любую пространство]]></string>
+	<string name="_bx_spaces_acl_action_delete_any_profile"><![CDATA[Удалять любую пространство]]></string>
+	<string name="_bx_spaces_acl_action_delete_invites"><![CDATA[Удалять приглашения]]></string>
+
+	<string name="_bx_spaces_page_title_sys_joined_entries"><![CDATA[Пространства профиля]]></string>
+	<string name="_bx_spaces_page_title_joined_entries"><![CDATA[Пространства профиля]]></string>
+	<string name="_bx_spaces_page_title_sys_create_profile"><![CDATA[Создать пространство]]></string>
+	<string name="_bx_spaces_page_title_create_profile"><![CDATA[Создать пространство]]></string>
+	<string name="_bx_spaces_page_title_sys_edit_profile"><![CDATA[Редактировать пространство]]></string>
+	<string name="_bx_spaces_page_title_edit_profile"><![CDATA[Редактировать пространство]]></string>
+	<string name="_bx_spaces_page_title_sys_edit_profile_cover"><![CDATA[Редактировать обложку пространства]]></string>
+	<string name="_bx_spaces_page_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
+	<string name="_bx_spaces_page_title_sys_delete_profile"><![CDATA[Удалить пространство]]></string>
+	<string name="_bx_spaces_page_title_delete_profile"><![CDATA[Удалить пространство]]></string>
+        <string name="_bx_spaces_page_title_sys_join_profile"><![CDATA[Присоединиться к пространству]]></string>
+        <string name="_bx_spaces_page_title_join_profile"><![CDATA[Присоединиться к пространству]]></string>
+	<string name="_bx_spaces_page_title_sys_view_profile_closed"><![CDATA[Просмотр закрытой пространства]]></string>
+	<string name="_bx_spaces_page_title_sys_view_profile"><![CDATA[Просмотр пространства]]></string>
+	<string name="_bx_spaces_page_title_view_profile"><![CDATA[{display_name}]]></string>
+	<string name="_bx_spaces_page_title_browse"><![CDATA[Пространства]]></string>
+	<string name="_bx_spaces_page_title_browse_by_author"><![CDATA[Пространства {display_name}]]></string>
+	<string name="_bx_spaces_page_title_browse_featured"><![CDATA[Продвинутые пространства]]></string>
+    <string name="_bx_spaces_page_title_browse_top"><![CDATA[Популярные пространства]]></string>
+	<string name="_bx_spaces_page_title_browse_recent"><![CDATA[Новые пространства]]></string>
+	<string name="_bx_spaces_page_title_browse_connections"><![CDATA[{0} связей]]></string>
+	<string name="_bx_spaces_page_title_browse_connections_mutual"><![CDATA[{0} и {1} обоюдных связей]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_friends"><![CDATA[Друзья]]></string>
+	<string name="_bx_spaces_page_title_profile_friends"><![CDATA[Друзья]]></string>
+	<string name="_bx_spaces_page_title_sys_space_fans"><![CDATA[Участники]]></string>
+	<string name="_bx_spaces_page_title_space_fans"><![CDATA[Участники]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_spaces_page_title_profile_comments"><![CDATA[Комментарии]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_info"><![CDATA[Инфо пространства]]></string>
+	<string name="_bx_spaces_page_title_profile_info"><![CDATA[Инфо о {display_name}]]></string>
+        <string name="_bx_spaces_page_title_sys_profile_pricing"><![CDATA[Цены]]></string>
+        <string name="_bx_spaces_page_title_profile_pricing"><![CDATA[Цены]]></string>
+	<string name="_bx_spaces_page_title_sys_recent"><![CDATA[Новые пространства]]></string>
+	<string name="_bx_spaces_page_title_recent"><![CDATA[Новые пространства]]></string>
+	<string name="_bx_spaces_page_title_sys_manage"><![CDATA[Управление собственными пространствами]]></string>
+	<string name="_bx_spaces_page_title_sys_manage_administration"><![CDATA[Управление всеми пространствами]]></string>
+	<string name="_bx_spaces_page_title_manage"><![CDATA[Управление]]></string>
+	<string name="_bx_spaces_page_title_sys_top"><![CDATA[Популярные пространства]]></string>
+    <string name="_bx_spaces_page_title_top"><![CDATA[Популярные пространства]]></string>
+    <string name="_bx_spaces_page_title_sys_invite_to_space"><![CDATA[Пригласить участников в пространство]]></string>
+    <string name="_bx_spaces_page_title_invite_to_space"><![CDATA[Пригласить участников в пространство]]></string>
+    <string name="_bx_spaces_page_title_sys_entries_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_spaces_page_title_entries_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_spaces_page_title_sys_entries_favorites"><![CDATA[Избранные пространства]]></string>
+    <string name="_bx_spaces_page_title_entries_favorites"><![CDATA[Избранные пространства]]></string>
+
+    <string name="_bx_spaces_page_block_title_sys_entries_actions"><![CDATA[Пространства - Действия]]></string>
+    <string name="_bx_spaces_page_block_title_entries_actions"><![CDATA[Пространства - Действия]]></string>
+    <string name="_bx_spaces_page_block_title_sys_entries_of_author"><![CDATA[Пространства автора]]></string>
+    <string name="_bx_spaces_page_block_title_entries_of_author"><![CDATA[{display_name} - Пространства]]></string>
+    <string name="_bx_spaces_page_block_title_favorites_of_author"><![CDATA[Избранные пространства]]></string>   
+    <string name="_bx_spaces_page_block_title_sys_favorites_of_author"><![CDATA[Избранные пространства]]></string>
+    <string name="_bx_spaces_page_block_title_sys_joined_entries"><![CDATA[Участие в пространствах]]></string>
+    <string name="_bx_spaces_page_block_title_joined_entries"><![CDATA[Участие в пространствах]]></string>
+    <string name="_bx_spaces_page_block_title_parent"><![CDATA[Родительское пространство]]></string>
+    <string name="_bx_spaces_page_block_title_childs"><![CDATA[Дочерние пространства]]></string>
+    <string name="_bx_spaces_page_block_title_create_profile"><![CDATA[Создать пространство]]></string>
+    <string name="_bx_spaces_page_block_title_edit_profile"><![CDATA[Редактировать пространство]]></string>
+    <string name="_bx_spaces_page_block_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
+    <string name="_bx_spaces_page_block_title_delete_profile"><![CDATA[Удалить пространство]]></string>
+    <string name="_bx_spaces_page_block_title_profile_info_link"><![CDATA[<a href="{profile_link}">{display_name}</a> - Инфо]]></string>
+    <string name="_bx_spaces_page_block_title_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_spaces_page_block_title_system_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_spaces_page_block_title_system_profile_pricing"><![CDATA[Цены]]></string>
+    <string name="_bx_spaces_page_block_title_profile_pricing"><![CDATA[Цены]]></string>
+    <string name="_bx_spaces_page_block_title_profile_pricing_link"><![CDATA[Расценки пространства: <a href="{profile_link}">{display_name}</a>]]></string>
+    <string name="_bx_spaces_page_block_title_profile_description"><![CDATA[Описание]]></string>
+    <string name="_bx_spaces_page_block_title_profile_friends_link"><![CDATA[<a href="{profile_link}">{display_name}</a> - Друзья]]></string>
+    <string name="_bx_spaces_page_block_title_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_page_block_title_system_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_page_block_title_admins"><![CDATA[Администраторы]]></string>
+    <string name="_bx_spaces_page_block_title_fans_link"><![CDATA[Участники пространства: <a href="{profile_link}">{display_name}</a>]]></string>
+    <string name="_bx_spaces_page_block_title_fans"><![CDATA[Участники]]></string>
+    <string name="_bx_spaces_page_block_title_system_fans"><![CDATA[Участники]]></string>
+    <string name="_bx_spaces_page_block_title_fans_invites"><![CDATA[Приглашения]]></string>
+    <string name="_bx_spaces_page_block_title_system_invites"><![CDATA[Приглашения]]></string>
+    <string name="_bx_spaces_page_block_title_profile_location"><![CDATA[Расположение]]></string>
+    <string name="_bx_spaces_page_block_title_profile_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_spaces_page_block_title_profile_comments_link"><![CDATA[Комментарии к <a href="{entry_link}">{title}</a>]]></string>
+    <string name="_bx_spaces_page_block_title_profile_actions"><![CDATA[Действия]]></string>
+    <string name="_bx_spaces_page_block_title_featured_profiles"><![CDATA[Продвинутые пространства]]></string>
+    <string name="_bx_spaces_page_block_title_latest_profiles"><![CDATA[Новые пространства]]></string>
+    <string name="_bx_spaces_page_block_title_system_manage"><![CDATA[Управление собственными пространствами]]></string>
+    <string name="_bx_spaces_page_block_title_system_manage_administration"><![CDATA[Управление всеми пространствами]]></string>
+    <string name="_bx_spaces_page_block_title_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_spaces_page_block_title_top_profiles"><![CDATA[Популярные пространства]]></string>
+    <string name="_bx_spaces_page_block_title_joined_profiles"><![CDATA[Мои пространства]]></string>
+    <string name="_bx_spaces_page_block_title_entry_all_actions"><![CDATA[Все действия]]></string>
+    <string name="_bx_spaces_page_block_title_entry_social_sharing"><![CDATA[Поделиться]]></string>
+    <string name="_bx_spaces_page_block_title_categories"><![CDATA[Категории пространств]]></string>
+    <string name="_bx_spaces_page_block_title_invite_to_space"><![CDATA[Пригласить участников в пространство]]></string>
+    <string name="_bx_spaces_page_block_title_search_form"><![CDATA[Форма поиска]]></string>
+    <string name="_bx_spaces_page_block_title_search_results"><![CDATA[Результаты поиска]]></string>
+    <string name="_bx_spaces_page_block_title_search_form_cmts"><![CDATA[Форма поиска комментариев]]></string>
+    <string name="_bx_spaces_page_block_title_search_results_cmts"><![CDATA[Результаты поиска комментариев]]></string>
+    <string name="_bx_spaces_page_block_title_sys_featured_entries_view_showcase"><![CDATA[Продвинутые пространства]]></string>
+    <string name="_bx_spaces_page_block_title_featured_entries_view_showcase"><![CDATA[Продвинутые пространства (Витринный просмотр)]]></string>
+    <string name="_bx_spaces_page_block_title_sys_recommended_entries_view_showcase"><![CDATA[Рекомендованные пространства (Витринный просмотр)]]></string>
+    <string name="_bx_spaces_page_block_title_recommended_entries_view_showcase"><![CDATA[Рекомендованные пространства]]></string>
+    <string name="_bx_spaces_page_block_title_top_level_spaces"><![CDATA[Пространства верхнего уровня]]></string>
+    <string name="_bx_spaces_page_block_title_sys_favorites_entries"><![CDATA[Избранное]]></string>
+    <string name="_bx_spaces_page_block_title_favorites_entries"><![CDATA[Список "{title}"]]></string>
+    <string name="_bx_spaces_page_block_title_favorites_entries_info"><![CDATA[Информация]]></string>
+    <string name="_bx_spaces_page_block_title_favorites_entries_actions"><![CDATA[Действия]]></string>
+    <string name="_bx_spaces_page_block_title_sys_cover_block"><![CDATA[Обложка]]></string>
+    <string name="_bx_spaces_page_block_title_cover_block"><![CDATA[Обложка]]></string>
+
+    <string name="_bx_spaces_menu_title_submenu"><![CDATA[Пространства - Подменю]]></string>
+    <string name="_bx_spaces_menu_set_title_submenu"><![CDATA[Пространства - Подменю]]></string>
+    <string name="_bx_spaces_menu_set_title_view_profile_actions"><![CDATA[Пространство - Действия]]></string>
+    <string name="_bx_spaces_menu_title_view_profile_actions"><![CDATA[Пространство - Действия]]></string>
+    <string name="_bx_spaces_menu_set_title_view_profile_actions_more"><![CDATA[Пространство - Дополнительные действия]]></string>
+    <string name="_bx_spaces_menu_title_view_profile_actions_more"><![CDATA[Пространство - Дополнительные действия]]></string>
+    <string name="_bx_spaces_menu_title_view_profile_meta"><![CDATA[Пространство - Мета инфо]]></string>
+    <string name="_bx_spaces_menu_set_title_view_profile_meta"><![CDATA[Пространство - Мета инфо]]></string>
+    <string name="_bx_spaces_menu_set_title_view_profile_submenu"><![CDATA[Подменю просмотра пространства]]></string>
+    <string name="_bx_spaces_menu_title_view_profile_submenu"><![CDATA[Подменю просмотра пространства]]></string>
+    <string name="_bx_spaces_menu_title_entries_my"><![CDATA[Пространства профиля - Меню действий]]></string>
+    <string name="_bx_spaces_menu_set_title_entries_my"><![CDATA[Пространства профиля - Меню]]></string>
+    <string name="_bx_spaces_menu_set_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
+    <string name="_bx_spaces_menu_title_manage_tools"><![CDATA[Инструменты управления - Подменю]]></string>
+    <string name="_bx_spaces_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_spaces_menu_item_title_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_spaces_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_spaces_menu_item_title_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_spaces_menu_item_title_system_clear_reports"><![CDATA[Очистить жалобы]]></string>
+    <string name="_bx_spaces_menu_item_title_clear_reports"><![CDATA[Очистить жалобы]]></string>
+    <string name="_bx_spaces_menu_item_title_system_edit_cover"><![CDATA[Редактировать обложку]]></string>
+    <string name="_bx_spaces_menu_item_title_edit_cover"><![CDATA[Редактировать обложку]]></string>
+    <string name="_bx_spaces_menu_item_title_system_edit_pricing"><![CDATA[Редактировать цены]]></string>
+    <string name="_bx_spaces_menu_item_title_edit_pricing"><![CDATA[Редактировать цены]]></string>
+    <string name="_bx_spaces_menu_item_title_system_edit_profile"><![CDATA[Редактировать пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_edit_profile"><![CDATA[Редактировать пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_system_delete_profile"><![CDATA[Удалить пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_delete_profile"><![CDATA[Удалить пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_system_delete_account"><![CDATA[Удалить аккаунт]]></string>
+    <string name="_bx_spaces_menu_item_title_delete_account"><![CDATA[Удалить аккаунт]]></string>
+    <string name="_bx_spaces_menu_item_title_system_profile_type"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_profile_type"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_system_create_profile"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_create_profile"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_view_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_joined_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_view_joined_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_fans"><![CDATA[Участники]]></string>
+    <string name="_bx_spaces_menu_item_title_view_fans"><![CDATA[Участники]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_profile_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_spaces_menu_item_title_view_profile_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_spaces_menu_item_title_view_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_profile_view"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_view_profile_view"><![CDATA[Пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_system_view_profile_more_auto"><![CDATA[Еще]]></string>
+    <string name="_bx_spaces_menu_item_title_view_profile_more_auto"><![CDATA[Еще]]></string>
+    <string name="_bx_spaces_menu_item_title_system_invite"><![CDATA[Пригласить]]></string>
+    <string name="_bx_spaces_menu_item_title_invite"><![CDATA[Пригласить]]></string>
+    
+    <string name="_bx_spaces_menu_item_title_system_befriend"><![CDATA[Добавить в друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_befriend"><![CDATA[Добавить в друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_befriend_sent"><![CDATA[Добавить в друзья (запрошено)]]></string>
+    <string name="_bx_spaces_menu_item_title_befriend_confirm"><![CDATA[Принять запрос о дружбе]]></string>
+    <string name="_bx_spaces_menu_item_title_system_unfriend"><![CDATA[Удалить из друзей]]></string>
+    <string name="_bx_spaces_menu_item_title_unfriend"><![CDATA[Удалить из друзей]]></string>
+    <string name="_bx_spaces_menu_item_title_unfriend_cancel_request"><![CDATA[Отменить запрос о дружбе]]></string>
+    <string name="_bx_spaces_menu_item_title_unfriend_reject_request"><![CDATA[Отвергнуть запрос о дружбе]]></string>
+
+    <string name="_bx_spaces_menu_item_title_system_become_fan"><![CDATA[Присоединиться]]></string>
+    <string name="_bx_spaces_menu_item_title_become_fan"><![CDATA[Присоединиться]]></string>
+    <string name="_bx_spaces_menu_item_title_become_fan_sent"><![CDATA[Присоединение запрошено]]></string>
+    <string name="_bx_spaces_menu_item_title_become_fan_confirm"><![CDATA[Одобрить присоединение]]></string>
+    <string name="_bx_spaces_menu_item_title_system_leave_group"><![CDATA[Покинуть пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_leave_group"><![CDATA[Покинуть пространство]]></string>
+    <string name="_bx_spaces_menu_item_title_leave_space_cancel_request"><![CDATA[Отменить присоединение]]></string>
+    <string name="_bx_spaces_menu_item_title_leave_space_reject_request"><![CDATA[Отвергнуть присоединение]]></string>
+
+    <string name="_bx_spaces_menu_item_title_system_pay_and_join"><![CDATA[Оплатить и присоединиться]]></string>
+    <string name="_bx_spaces_menu_item_title_pay_and_join"><![CDATA[Оплатить и присоединиться]]></string>
+
+    <string name="_bx_spaces_menu_item_title_system_subscribe"><![CDATA[Получать уведомления]]></string>
+    <string name="_bx_spaces_menu_item_title_subscribe"><![CDATA[Получать уведомления]]></string>
+    <string name="_bx_spaces_menu_item_title_system_unsubscribe"><![CDATA[Отключить уведомления]]></string>
+    <string name="_bx_spaces_menu_item_title_unsubscribe"><![CDATA[Отключить уведомления]]></string>
+    <string name="_bx_spaces_menu_item_title_system_more_actions"><![CDATA[Дополнительные действия]]></string>
+    <string name="_bx_spaces_menu_item_title_more_actions"><![CDATA[]]></string>
+    <string name="_bx_spaces_menu_item_title_system_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_spaces_menu_item_title_system_manage_my_spaces"><![CDATA[Мои пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_manage_my_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_system_followings"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_followings"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_recent"><![CDATA[Новые]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_recent"><![CDATA[Новые]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_joined"><![CDATA[Участие]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_joined"><![CDATA[Участие]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_home"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_home"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_system_admt_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_admt_spaces"><![CDATA[Пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_manage_my"><![CDATA[Мои пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_manage_all"><![CDATA[Все пространства]]></string>
+    <string name="_bx_spaces_menu_item_title_system_entries_top"><![CDATA[Популярные]]></string>
+    <string name="_bx_spaces_menu_item_title_entries_top"><![CDATA[Популярные]]></string>
+    <string name="_bx_spaces_menu_item_title_system_sm_parent"><![CDATA[Предок]]></string>
+    <string name="_bx_spaces_menu_item_title_sm_parent"><![CDATA[Предок]]></string>
+
+    <string name="_bx_spaces_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Любая аудитория]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_hidden"><![CDATA[Спрятанные]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_name"><![CDATA[Название]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_added"><![CDATA[Создание]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_more_actions"><![CDATA[Дополнительные действия]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_audit_context"><![CDATA[Аудит действий в контексте]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_audit_content"><![CDATA[Аудит действий над контентом]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_clear_reports"><![CDATA[Очистить жалобы]]></string>
+    <string name="_bx_spaces_grid_action_err_delete"><![CDATA[Невозможно удалить выбранную(ные) пространство(ы).]]></string>
+    <string name="_bx_spaces_grid_txt_account_manager"><![CDATA[Перенаправить в управление аккаунтом.]]></string>
+
+    <string name="_bx_spaces_grid_column_title_name"><![CDATA[Название]]></string>
+    <string name="_bx_spaces_grid_column_title_role_id"><![CDATA[Роль]]></string>
+    <string name="_bx_spaces_grid_column_title_period"><![CDATA[Период]]></string>
+    <string name="_bx_spaces_grid_column_title_price"><![CDATA[Цена]]></string>
+    <string name="_bx_spaces_grid_action_title_add"><![CDATA[Добавить]]></string>
+    <string name="_bx_spaces_grid_action_title_edit"><![CDATA[Изменить]]></string>
+    <string name="_bx_spaces_grid_action_title_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_spaces_grid_action_title_buy"><![CDATA[Купить]]></string>
+    <string name="_bx_spaces_grid_action_title_buy_title"><![CDATA[Единовременный платеж]]></string>
+    <string name="_bx_spaces_grid_action_title_subscribe"><![CDATA[Подписаться]]></string>
+    <string name="_bx_spaces_grid_action_title_subscribe_title"><![CDATA[Создать подписку с регулярным выставлением счетов]]></string>
+    <string name="_bx_spaces_grid_action_title_choose"><![CDATA[Выбирать]]></string>
+    <string name="_bx_spaces_grid_action_title_choose_title"><![CDATA[Бесплатно переключиться на уровень]]></string>
+    <string name="_bx_spaces_popup_title_price_add"><![CDATA[Добавить ценовой план]]></string>
+    <string name="_bx_spaces_popup_title_price_edit"><![CDATA[Редактировать ценовой план]]></string>
+
+    <string name="_bx_spaces_chart_growth"><![CDATA[Пространства: Развитие]]></string>
+    <string name="_bx_spaces_chart_growth_speed"><![CDATA[Пространства: Скорость развития]]></string>
+
+    <string name="_bx_spaces_search_extended"><![CDATA[Поиск пространств]]></string>
+    <string name="_bx_spaces_search_extended_cmts"><![CDATA[Поиск комментариев к пространством]]></string>
+
+    <string name="_bx_spaces_err_delete_child_presend"><![CDATA[Невозможно удалить пространство, т.к. оно используется другими в качестве родительского.]]></string>
+    <string name="_bx_spaces_txt_account_pending"><![CDATA[Это пространство ожидает одобрения. Пожалуйста, дождитесь ее активации.]]></string>
+    <string name="_bx_spaces_txt_account_suspended"><![CDATA[Это пространство заблокировано.]]></string>
+    <string name="_bx_spaces_txt_status_hidden"><![CDATA[Это пространство было скрыто.]]></string>
+    <string name="_bx_spaces_txt_N_fans"><![CDATA[{0} участников]]></string>
+    <string name="_bx_spaces_txt_role"><![CDATA[Роль]]></string>
+    <string name="_bx_spaces_txt_role_added"><![CDATA[Начало]]></string>
+    <string name="_bx_spaces_txt_role_expired"><![CDATA[Окончание]]></string>
+    <string name="_bx_spaces_txt_sample_single"><![CDATA[пространство]]></string>
+    <string name="_bx_spaces_txt_sample_single_with_article"><![CDATA[пространство]]></string>
+    <string name="_bx_spaces_txt_sample_comment_single"><![CDATA[комментарий к пространству]]></string>
+    <string name="_bx_spaces_txt_sample_vote_single"><![CDATA[голос за пространство]]></string>
+    <string name="_bx_spaces_txt_sample_score_up_single"><![CDATA[голос за пространство]]></string>
+    <string name="_bx_spaces_txt_sample_score_down_single"><![CDATA[голос против пространства]]></string>
+    <string name="_bx_spaces_txt_set_role"><![CDATA[Задать роль]]></string>
+    <string name="_bx_spaces_txt_private_space"><![CDATA[Приватная пространство]]></string>
+    <string name="_bx_spaces_txt_invite_popup_text"><![CDATA[Вы были приглашены в это пространство.  Нажмите кнопку ниже чтобы принять приглашение.]]></string>
+    <string name="_bx_spaces_txt_invite_popup_title"><![CDATA[Приглашение в пространство]]></string>
+    <string name="_bx_spaces_txt_invite_popup_button_accept"><![CDATA[Принять]]></string>
+    <string name="_bx_spaces_txt_invite_popup_button_decline"><![CDATA[Отклонить]]></string>
+    <string name="_bx_spaces_txt_invite_popup_error_invitation_absent"><![CDATA[Извините, произошла ошибка. Вы не можете вступить в это пространство. Приглашение устарело или удалено.]]></string>
+    <string name="_bx_spaces_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Извините, произошла ошибка. Вы не можете вступить в это пространство. Приглашение адресовано не Вам.]]></string>
+    <string name="_bx_spaces_txt_n_unit"><![CDATA[{0} ({1})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (пожизненно)]]></string>
+
+    <string name="_bx_spaces_msg_performed"><![CDATA[Действие было успешно выполнено.]]></string>
+    <string name="_bx_spaces_err_price_duplicate"><![CDATA[Аналогичный ценовой план уже существует.]]></string>
+    <string name="_bx_spaces_err_cannot_perform"><![CDATA[Невозможно выполнить действие. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+
+    <string name="_bx_spaces_alert_action_fan_added"><![CDATA[присоединение нового участника]]></string>
+    <string name="_bx_spaces_txt_ntfs_fan_added"><![CDATA[В пространство <b class="bx-ntfs-content-profile">{owner_name}</b> вступил <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+    <string name="_bx_spaces_alert_action_join_invitation_notif"><![CDATA[приглашение вступить в группу]]></string>
+    <string name="_bx_spaces_alert_action_join_request"><![CDATA[запрос на присоединение к пространству]]></string>
+    <string name="_bx_spaces_txt_ntfs_join_invitation"><![CDATA[Представитель пространства <b class="bx-ntfs-content-profile">{owner_name}</b> пригласил <b class="bx-ntfs-content-entry">{subentry_sample}</b> вступить в пространство]]></string>
+    <string name="_bx_spaces_txt_ntfs_join_request"><![CDATA[В пространство <b class="bx-ntfs-content-profile">{owner_name}</b> хочет вступить <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+    <string name="_bx_spaces_txt_ntfs_timeline_post_common"><![CDATA[В пространству <b class="bx-ntfs-content-profile">{owner_name}</b> новая публикация <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+
+    <string name="_bx_spaces_pre_lists_cats"><![CDATA[Категории пространств]]></string>
+    <string name="_bx_spaces_cat_General"><![CDATA[Обобщение]]></string>
+    <string name="_bx_spaces_cat_Business"><![CDATA[Бизнес]]></string>
+    <string name="_bx_spaces_cat_Interests"><![CDATA[Увлечение]]></string>
+    <string name="_bx_spaces_cat_Causes"><![CDATA[Движение]]></string>
+    <string name="_bx_spaces_cat_Fun"><![CDATA[Юмор]]></string>
+    <string name="_bx_spaces_cat_Uncategorised"><![CDATA[Без категории]]></string>
+
+    <string name="_bx_spaces_pre_lists_roles"><![CDATA[Роли в пространствах]]></string>
+    <string name="_bx_spaces_role_regular"><![CDATA[Обычный]]></string>
+    <string name="_bx_spaces_role_administrator"><![CDATA[Администратор]]></string>
+    <string name="_bx_spaces_role_moderator"><![CDATA[Модератор]]></string>
+
+    <string name="_bx_spaces_pre_lists_period_units"><![CDATA[Платежный интервал]]></string>
+    <string name="_bx_spaces_period_unit_day"><![CDATA[день]]></string>
+    <string name="_bx_spaces_period_unit_week"><![CDATA[неделя]]></string>
+    <string name="_bx_spaces_period_unit_month"><![CDATA[месяц]]></string>
+    <string name="_bx_spaces_period_unit_year"><![CDATA[год]]></string>
+
+    <string name="_bx_spaces_email_join_request"><![CDATA[Запрос на присоединение к пространству]]></string>
+    <string name="_bx_spaces_email_join_request_subject"><![CDATA[Запрос на присоединение к пространству]]></string>
+    <string name="_bx_spaces_email_join_request_body"><![CDATA[{email_header}
+<p>Получен запрос на присоединение к пространству <a href="{EntryUrl}">{EntryTitle}</a> от <a href="{NewMemberUrl}">{NewMemberDisplayName}</a></p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_join_reject"><![CDATA[Отклонение запроса на присоединение к пространству]]></string>
+    <string name="_bx_spaces_email_join_reject_subject"><![CDATA[Ваш запрос на присоединение к пространству был отклонен]]></string>
+    <string name="_bx_spaces_email_join_reject_body"><![CDATA[{email_header}
+<p>Ваш запрос на присоединение к пространству <a href="{EntryUrl}">{EntryTitle}</a> был отклонен администратором пространства.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_join_confirm"><![CDATA[Одобрение запроса на присоединение к пространству]]></string>
+    <string name="_bx_spaces_email_join_confirm_subject"><![CDATA[Ваш запрос на присоединение к пространству был одобрен]]></string>
+    <string name="_bx_spaces_email_join_confirm_body"><![CDATA[{email_header}
+<p>Ваш запрос на присоединение к пространству <a href="{EntryUrl}">{EntryTitle}</a> был одобрен.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_fan_remove"><![CDATA[Удаление из пространства]]></string>
+    <string name="_bx_spaces_email_fan_remove_subject"><![CDATA[Вы были удалены из пространства]]></string>
+    <string name="_bx_spaces_email_fan_remove_body"><![CDATA[{email_header}
+<p>Ваш профиль был удален из пространства <a href="{EntryUrl}">{EntryTitle}</a> администратором пространства.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_fan_become_admin"><![CDATA[Получение статуса администратора пространства]]></string>
+    <string name="_bx_spaces_email_fan_become_admin_subject"><![CDATA[Вы стали администратором пространства]]></string>
+    <string name="_bx_spaces_email_fan_become_admin_body"><![CDATA[{email_header}
+<p>Вы получили статус администратора пространства <a href="{EntryUrl}">{EntryTitle}</a>.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_admin_become_fan"><![CDATA[Лишение статуса администратора пространства]]></string>
+    <string name="_bx_spaces_email_admin_become_fan_subject"><![CDATA[Вы были лишены статуса администратора пространства]]></string>
+    <string name="_bx_spaces_email_admin_become_fan_body"><![CDATA[{email_header}
+<p>Вы были лишены статуса администратора пространства <a href="{EntryUrl}">{EntryTitle}</a></p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_set_role"><![CDATA[Изменение статуса в пространстве]]></string>
+    <string name="_bx_spaces_email_set_role_subject"><![CDATA[Ваш статус в пространстве был изменен]]></string>
+    <string name="_bx_spaces_email_set_role_body"><![CDATA[{email_header}
+<p>Ваш статус в пространстве <a href="{EntryUrl}">{EntryTitle}</a> был изменен на <b>{Role}</b>.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_invitation"><![CDATA[Приглашение в пространство]]></string>
+    <string name="_bx_spaces_email_invitation_subject"><![CDATA[Приглашение в пространство "{EntryTitle}"]]></string>
+    <string name="_bx_spaces_email_invitation_body"><![CDATA[{email_header}
+<p><a href="{InviterUrl}">{InviterDisplayName}</a> пригласил Вас в пространство <a href="{EntryUrl}">{EntryTitle}</a>.</p>
+{email_footer}]]></string>
+</resources>

+ 394 - 0
modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/bx_timeline/ru.xml

@@ -0,0 +1,394 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+    <string name="_bx_timeline"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_cmts"><![CDATA[Лента - Комментарии]]></string>
+    <string name="_bx_timeline_reactions"><![CDATA[Лента - Реакции]]></string>
+
+    <string name="_bx_timeline_options_category_general"><![CDATA[Общие]]></string>
+    <string name="_bx_timeline_options_category_browse"><![CDATA[Просмотр]]></string>
+    <string name="_bx_timeline_options_category_card"><![CDATA[Карточка]]></string>
+    <string name="_bx_timeline_options_category_cache"><![CDATA[Кэш]]></string>
+    <string name="_bx_timeline_options_category_post"><![CDATA[Создание сообщения]]></string>
+
+    <string name="_bx_timeline_option_enable_auto_approve"><![CDATA[Автоматически активировать сообщение после создания]]></string>
+    <string name="_bx_timeline_option_enable_edit"><![CDATA[Разрешить пользователю изменять собственные сообщения]]></string>
+    <string name="_bx_timeline_option_enable_delete"><![CDATA[Разрешить владельцу ленты удалять сообщения]]></string>
+    <string name="_bx_timeline_option_enable_show_all"><![CDATA[Показывать все сообщения в 'Общей хронике', включая те, что были написаны в персональных Хрониках]]></string>
+    <string name="_bx_timeline_option_enable_count_all_views"><![CDATA[Считать просмотры для всех событий в хронике]]></string>
+    <string name="_bx_timeline_option_enable_repost_own_actions"><![CDATA[Репост использует собственные действия (просмотры, голосование и тп.)]]></string>
+    <string name="_bx_timeline_option_enable_hide_upon_delete"><![CDATA[Деактивировать сообщения при скрывании вместо удаления]]></string>
+    <string name="_bx_timeline_option_events_per_page_profile"><![CDATA[Количество элементов на странице профайла]]></string>
+    <string name="_bx_timeline_option_events_per_page_account"><![CDATA[Количество элементов на странице "панель аккаунта"]]></string>
+    <string name="_bx_timeline_option_events_per_page_home"><![CDATA[Количество элементов на главной странице сайта]]></string>
+    <string name="_bx_timeline_option_events_per_page"><![CDATA[Количество элементов на странице]]></string>
+    <string name="_bx_timeline_option_enable_infinite_scroll"><![CDATA[Включить 'Бесконечную прокрутку' (экспериментально)]]></string>
+    <string name="_bx_timeline_option_events_per_preload"><![CDATA[Бесконечная прокрутка: Количество элементов, получаемых при авто-подгрузке]]></string>
+    <string name="_bx_timeline_option_auto_preloads"><![CDATA[Бесконечная прокрутка: Количество авто-подгрузок]]></string>
+    <string name="_bx_timeline_option_rss_length"><![CDATA[Количество элементов в RSS-ленте]]></string>
+    <string name="_bx_timeline_option_events_hide"><![CDATA[Показывать события]]></string>
+    <string name="_bx_timeline_option_enable_brief_cards"><![CDATA[Включить лаконичные карточки]]></string>
+    <string name="_bx_timeline_option_title_chars"><![CDATA[Количество символов в автогенерируемом заголовке сообщения]]></string>
+    <string name="_bx_timeline_option_title_chars_short"><![CDATA[Количество символов в автогенерируемом укороченном заголовке сообщения]]></string>
+    <string name="_bx_timeline_option_videos_preload"><![CDATA[Предварительная загрузка для видео роликов]]></string>
+    <string name="_bx_timeline_option_videos_preload_auto"><![CDATA[Автоматически]]></string>
+    <string name="_bx_timeline_option_videos_preload_metadata"><![CDATA[Метаданные]]></string>
+    <string name="_bx_timeline_option_videos_preload_none"><![CDATA[Отключено]]></string>
+    <string name="_bx_timeline_option_videos_autoplay"><![CDATA[Автоматически проигрывать видео ролики (доступно только для Ленты)]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_off"><![CDATA[Отключено]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on_mute"><![CDATA[Включено (без звука)]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on"><![CDATA[Включено (cо звуком)]]></string>
+    <string name="_bx_timeline_option_preload_comments"><![CDATA[Количество предварительно загруженных комментариев (до 7 штук)]]></string>
+    <string name="_bx_timeline_option_enable_jump_to_switcher"><![CDATA[Показывать переключатель 'Перейти к']]></string>
+    <string name="_bx_timeline_option_enable_sort_by_reaction"><![CDATA[Сортировать по дате последнего комментария (экспериментально, работает только для обновлений)]]></string>
+    <string name="_bx_timeline_option_enable_sort_by_unread"><![CDATA[Сортировать по состоянию "непрочитанный" (показывать непрочитанные первыми, экспериментально).]]></string>
+    <string name="_bx_timeline_option_attachments_layout"><![CDATA[Показывать вложения как]]></string>
+    <string name="_bx_timeline_option_attachments_layout_gallery"><![CDATA[Галерея]]></string>
+    <string name="_bx_timeline_option_attachments_layout_showcase"><![CDATA[Витрина]]></string>
+    <string name="_bx_timeline_option_enable_hot"><![CDATA[Включить сбор данных для 'горячей' хроники]]></string>
+    <string name="_bx_timeline_option_hot_sources"><![CDATA[Использовать следующие действия для появления контента в 'горячей' хронике]]></string>
+    <string name="_bx_timeline_option_hot_sources_content"><![CDATA[Добавление контента]]></string>
+    <string name="_bx_timeline_option_hot_sources_comment"><![CDATA[Добавление комментария]]></string>
+    <string name="_bx_timeline_option_hot_sources_vote"><![CDATA[Добавление голоса]]></string>
+    <string name="_bx_timeline_option_hot_threshold_age"><![CDATA[Максимальный возраст поста, получившего комментарии/голоса, который включается в 'горячую' хронику (в днях, 0 - без ограничений)]]></string>
+    <string name="_bx_timeline_option_hot_threshold_comment"><![CDATA[Минимальное количество комментариев, необходимое для появления контента в 'горячей' хронике]]></string>
+    <string name="_bx_timeline_option_hot_threshold_vote"><![CDATA[Минимальное количество голосов, необходимое для появления контента в 'горячей' хронике]]></string>
+    <string name="_bx_timeline_option_hot_interval"><![CDATA[Интервал времени (в часах) для получения 'горячих' событий]]></string>
+    <string name="_bx_timeline_option_enable_cache_item"><![CDATA[Включить кэш элемента]]></string>
+    <string name="_bx_timeline_option_cache_item_engine"><![CDATA[Механизм кэширования элемента (отличный от FileHtml может потребовать дополнительную настройку сервера)]]></string>
+    <string name="_bx_timeline_option_cache_item_lifetime"><![CDATA[Время жизни кэша элемента]]></string>
+    <string name="_bx_timeline_option_enable_editor_toolbar"><![CDATA[Включить панель инструментов в форме создания сообщения]]></string>
+    <string name="_bx_timeline_option_editor_auto_attach_insertion"><![CDATA[Обрабатывать изображения, вставленные в редактор, как вложения]]></string>
+    <string name="_bx_timeline_option_limit_attach_links"><![CDATA[Ограничить число присоединенных линок (0 - без ограничений)]]></string>
+
+    <string name="_bx_timeline_form_post"><![CDATA[Сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add"><![CDATA[Написать сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add_public"><![CDATA[Написать публичное сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Написать сообщение в профиль]]></string>
+    <string name="_bx_timeline_form_post_display_edit"><![CDATA[Изменить сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_view"><![CDATA[Просмотреть сообщение (для индивидуальных полей)]]></string>
+    <string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[ID владельца]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Собственный профиль]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Действие]]></string>
+    <string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Тип]]></string>
+    <string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Содержимое]]></string>
+    <string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Видимость]]></string>
+    <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Видимость]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Создано]]></string>
+    <string name="_bx_timeline_form_post_input_date"><![CDATA[Создано]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Время публикации]]></string>
+    <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Время публикации]]></string>
+    <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Оставьте пустым, чтобы опубликовать немедленно.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Ссылка]]></string>
+    <string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Невозможно удалить ссылку. Пожалуйста, оповестите нас о проблеме.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Фото]]></string>
+    <string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Добавить фото]]></string>
+    <string name="_bx_timeline_form_post_input_sys_files"><![CDATA[Файл]]></string>
+    <string name="_bx_timeline_form_post_input_files"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Видео]]></string>
+    <string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Добавить видео]]></string>
+    <string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Прикрепления]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Создать]]></string>
+    <string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Создать]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Отмена]]></string>
+
+    <string name="_bx_timeline_form_attach_link"><![CDATA[Прикрепить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Прикрепить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_event_id"><![CDATA[ID события]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Необходима правильная ссылка. Пожалуйста, заполните это поле.]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Добавить]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Добавить]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Закрыть]]></string>
+
+    <string name="_bx_timeline_form_reposto"><![CDATA[Сделать репост]]></string>
+    <string name="_bx_timeline_form_repost_display_with"><![CDATA[Cделать репост с текстом]]></string>
+    <string name="_bx_timeline_form_repost_display_to"><![CDATA[Cделать репост в]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_reposter_id"><![CDATA[ID исполнителя]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_owner_id"><![CDATA[ID владельца]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_type"><![CDATA[Тип]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_action"><![CDATA[Действие]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_object_id"><![CDATA[ID объекта]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_search"><![CDATA[Поиск]]></string>
+    <string name="_bx_timeline_form_repost_input_search"><![CDATA[Найти]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_list"><![CDATA[Список]]></string>
+    <string name="_bx_timeline_form_repost_input_list"><![CDATA[или выбрать]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_text"><![CDATA[Текст]]></string>
+    <string name="_bx_timeline_form_repost_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_reposted"><![CDATA[Исходный контент]]></string>
+    <string name="_bx_timeline_form_repost_input_reposted"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_do_submit"><![CDATA[Репост]]></string>
+    <string name="_bx_timeline_form_repost_input_do_submit"><![CDATA[Репост]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_timeline_form_repost_input_do_cancel"><![CDATA[Отмена]]></string>
+
+    <string name="_bx_timeline_privacy_view"><![CDATA[Просматривать события]]></string>
+
+    <string name="_bx_timeline_acl_action_post"><![CDATA[Писать сообщения]]></string>
+    <string name="_bx_timeline_acl_action_edit"><![CDATA[Изменять любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_delete"><![CDATA[Удалять любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_vote"><![CDATA[Голосовать]]></string>
+    <string name="_bx_timeline_acl_action_repost"><![CDATA[Делать репост]]></string>
+    <string name="_bx_timeline_acl_action_send"><![CDATA[Послать]]></string>
+    <string name="_bx_timeline_acl_action_pin"><![CDATA['Приколоть тут' любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_stick"><![CDATA['Приколоть для всех' любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_promote"><![CDATA[Рекламировать любое сообщение]]></string>
+
+    <!-- Pages -->
+    <string name="_bx_timeline_page_title_sys_view"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_title_view"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_title_view_home"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_title_sys_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
+    <string name="_bx_timeline_page_title_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
+    <string name="_bx_timeline_page_title_sys_item"><![CDATA[Элемент хроники]]></string>
+    <string name="_bx_timeline_page_title_item"><![CDATA[Элемент хроники]]></string>
+    <string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Предпросмотр элемента хроники]]></string>
+    <string name="_bx_timeline_page_title_item_brief"><![CDATA[Предпросмотр элемента хроники]]></string>
+    <string name="_bx_timeline_page_title_sys_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_title_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Создать публикацию (в контекст)]]></string>
+    <string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Хроника новостей профайла (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Хроника новостей профайла (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_block_title_item"><![CDATA[Элемент]]></string>
+    <string name="_bx_timeline_page_block_title_item_content"><![CDATA[Содержимое]]></string>
+    <string name="_bx_timeline_page_block_title_item_info"><![CDATA[Информация]]></string>
+    <string name="_bx_timeline_page_block_title_item_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_post_account"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Хроника новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Хроника новостей (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_timeline"><![CDATA[Все хроники (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_views_timeline"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_outline"><![CDATA[Все хроники (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_views_outline"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Создать публичную публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_post_home"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Общая хроника новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Общая хроника новостей (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Хроника 'горячих' новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot_outline"><![CDATA[Хроника 'горячих' новостей (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_hot_outline"><![CDATA[Хроника 'горячих' новостей]]></string>
+    <string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Хроника новостей - Комментарии]]></string>
+
+    <string name="_bx_timeline_page_title_sys_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Управление лентой]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
+    <string name="_bx_timeline_page_block_title_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_block_title_manage_own"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_block_title_muted"><![CDATA[Отключенные]]></string>
+
+    <string name="_bx_timeline_page_content_ph_timeline"><![CDATA[Лента: c заполнителем в виде ленты]]></string>
+    <string name="_bx_timeline_page_content_ph_outline"><![CDATA[Лента: c заполнителем в виде сводки]]></string>
+
+
+    <!-- Menus -->
+    <string name="_bx_timeline_menu_title_view"><![CDATA[Просмотр]]></string>
+    <string name="_bx_timeline_menu_set_title_view"><![CDATA[Просмотр]]></string>
+    <string name="_bx_timeline_menu_item_title_system_channels"><![CDATA[Каналы]]></string>
+    <string name="_bx_timeline_menu_item_title_channels"><![CDATA[Каналы]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Хроника]]></string>
+    <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Хроника]]></string>
+    <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Публичное]]></string>
+    <string name="_bx_timeline_menu_item_title_public"><![CDATA[Публичное]]></string>
+    <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Популярное]]></string>
+    <string name="_bx_timeline_menu_item_title_hot"><![CDATA[Популярное]]></string>
+
+    <string name="_bx_timeline_menu_title_feeds"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_menu_set_title_feeds"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_menu_template_title_feeds"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_menu_item_title_system_divider"><![CDATA[Разделитель]]></string>
+
+    <string name="_bx_timeline_menu_item_view_all"><![CDATA[Все сообщения]]></string>
+    <string name="_bx_timeline_menu_item_view_owner"><![CDATA[Сообщения от {0}]]></string>
+    <string name="_bx_timeline_menu_item_view_other"><![CDATA[Сообщения от других]]></string>
+    <string name="_bx_timeline_menu_item_get_rss"><![CDATA[RSS]]></string>
+
+    <string name="_bx_timeline_menu_title_item_share"><![CDATA[Поделиться]]></string>
+    <string name="_bx_timeline_menu_set_title_item_share"><![CDATA[Поделиться]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost"><![CDATA[Сделать репост]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost"><![CDATA[Сделать репост]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost_with"><![CDATA[Сделать репост с текстом]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost_with"><![CDATA[Сделать репост с текстом]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost_to"><![CDATA[Сделать репост в контекст]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost_to"><![CDATA[Сделать репост в контекст]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_send"><![CDATA[Послать]]></string>
+    <string name="_bx_timeline_menu_item_title_item_send"><![CDATA[Послать другу]]></string>
+    <string name="_bx_timeline_menu_item_title_system_admt_timeline"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_menu_item_title_admt_timeline"><![CDATA[Лента]]></string>
+
+    <string name="_bx_timeline_menu_title_item_manage"><![CDATA[Элемент - Управление]]></string>
+    <string name="_bx_timeline_menu_set_title_item_manage"><![CDATA[Элемент - Управление]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_pin"><![CDATA[Приколоть тут]]></string>
+    <string name="_bx_timeline_menu_item_title_item_pin"><![CDATA[Приколоть тут]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unpin"><![CDATA[Отколоть тут]]]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unpin"><![CDATA[Отколоть тут]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_stick"><![CDATA[Приколоть для всех]]></string>
+    <string name="_bx_timeline_menu_item_title_item_stick"><![CDATA[Приколоть для всех]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unstick"><![CDATA[Отколоть для всех]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unstick"><![CDATA[Отколоть для всех]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_promote"><![CDATA[Рекламировать]]></string>
+    <string name="_bx_timeline_menu_item_title_item_promote"><![CDATA[Рекламировать]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unpromote"><![CDATA[Не рекламировать]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unpromote"><![CDATA[Не рекламировать]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_edit"><![CDATA[Изменить]]></string>
+    <string name="_bx_timeline_menu_item_title_item_edit"><![CDATA[Изменить]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete"><![CDATA[{delete_title}]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete_common"><![CDATA[Удалить]]></string>  
+    <string name="_bx_timeline_menu_item_title_item_delete_system"><![CDATA[Скрыть из хроник]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_mute"><![CDATA[Отключить автора]]></string>
+    <string name="_bx_timeline_menu_item_title_item_mute"><![CDATA[Отключить автора]]></string>
+
+    <string name="_bx_timeline_menu_title_item_actions"><![CDATA[Элемент - Действия]]></string>
+    <string name="_bx_timeline_menu_set_title_item_actions"><![CDATA[Элемент - Действия]]></string>
+    <string name="_bx_timeline_menu_title_item_actions_all"><![CDATA[Элемент - Все действия]]></string>
+    <string name="_bx_timeline_menu_set_title_item_actions_all"><![CDATA[Элемент - Все действия]]></string>
+    <string name="_bx_timeline_menu_title_item_counters"><![CDATA[Элемент - Счетчики]]></string>
+    <string name="_bx_timeline_menu_set_title_item_counters"><![CDATA[Элемент - Счетчики]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_comment"><![CDATA[Комментарий]]></string>
+    <string name="_bx_timeline_menu_item_title_item_comment"><![CDATA[Прокомментировать]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_view"><![CDATA[Посмотреть]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_vote"><![CDATA[Голосовать (Нравится)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_score"><![CDATA[Голосовать (За/Против)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_reaction"><![CDATA[Отреагировать]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_share"><![CDATA[Поделиться]]></string>
+    <string name="_bx_timeline_menu_item_title_item_share"><![CDATA[Поделиться]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_report"><![CDATA[Пожаловаться]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_more"><![CDATA[Дополнительные действия]]></string>
+    <string name="_bx_timeline_menu_item_title_item_more"><![CDATA[]]></string>
+
+    <string name="_bx_timeline_menu_title_post_attachments"><![CDATA[Форма - Прикрепления]]></string>
+    <string name="_bx_timeline_menu_set_title_post_attachments"><![CDATA[Форма - Прикрепления]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_link"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_menu_item_title_add_link"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_photo_simple"><![CDATA[Добавить фото (Обычная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_photo_html5"><![CDATA[Добавить фото (Множественная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_add_photo"><![CDATA[Добавить фото]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_simple"><![CDATA[Добавить видео (Обычная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_html5"><![CDATA[Добавить видео (Множественная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_add_video"><![CDATA[Добавить видео]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_record"><![CDATA[Записать видео]]></string>
+    <string name="_bx_timeline_menu_item_title_add_video_record"><![CDATA[Записать видео]]></string>
+    <string name="_bx_timeline_menu_item_title_add_file"><![CDATA[Добавить Файл]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_file_simple"><![CDATA[Добавить Файл (Обычная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_file_html5"><![CDATA[Добавить Файл (Множественная загрузка)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_timeline"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_menu_item_title_timeline"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_menu_item_title_system_create_entry"><![CDATA[Статус]]></string>
+    <string name="_bx_timeline_menu_item_title_create_entry"><![CDATA[Статус]]></string>
+    <string name="_bx_timeline_menu_item_title_system_view_timeline_view"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_menu_item_title_view_timeline_view"><![CDATA[Лента]]></string>
+
+    <string name="_bx_timeline_menu_item_title_system_manage_my_timeline"><![CDATA[Лента]]></string>
+    <string name="_bx_timeline_menu_item_title_manage_my_timeline"><![CDATA[Лента]]></string>
+
+    <string name="_bx_timeline_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_hidden"><![CDATA[Спрятанные]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_description"><![CDATA[Событие]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_added"><![CDATA[Добавлено]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_author"><![CDATA[Автор]]></string>
+    <string name="_bx_timeline_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_timeline_grid_action_title_adm_audit_content"><![CDATA[Аудит действий]]></string>
+    <string name="_bx_timeline_grid_action_err_delete"><![CDATA[Невозможно удалить выбранную(ные) событие(я) ленты.]]></string>
+    <string name="_bx_timeline_grid_txt_account_manager"><![CDATA[Перенаправить в Управление аккаунтом.]]></string>
+
+    <string name="_bx_timeline_alert_module_comment"><![CDATA[Комментарий]]></string>
+    <string name="_bx_timeline_alert_module_timeline_common_post"><![CDATA[Лента (разместить)]]></string>
+    <string name="_bx_timeline_alert_module_timeline_common_repost"><![CDATA[Лента (сделать репост)]]></string>
+    <string name="_bx_timeline_alert_action_added"><![CDATA[добавить]]></string>
+    <string name="_bx_timeline_alert_action_post_common"><![CDATA[добавить сообщение]]></string>
+    <string name="_bx_timeline_alert_action_repost"><![CDATA[добавить репост]]></string>
+    <string name="_bx_timeline_alert_action_post_common_personal"><![CDATA[Новый контент]]></string>
+    <string name="_bx_timeline_alert_action_post_common_follow_member"><![CDATA[Новый контент]]></string>
+    <string name="_bx_timeline_alert_action_post_common_follow_context"><![CDATA[Новый контент]]></string>
+    <string name="_bx_timeline_alert_action_repost_personal"><![CDATA[Новый репост контента]]></string>
+    <string name="_bx_timeline_alert_action_repost_follow_member"><![CDATA[Новый репост контента]]></string>
+    <string name="_bx_timeline_alert_action_repost_follow_context"><![CDATA[Новый репост контента]]></string>
+
+    <string name="_bx_timeline_txt_msg_no_results"><![CDATA[Пусто]]></string>
+    <string name="_bx_timeline_txt_msg_performed_action"><![CDATA[Действие было успешно выполнено.]]></string>
+    <string name="_bx_timeline_txt_msg_posted"><![CDATA[Успешно опубликовано.]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_insertion"><![CDATA[Невозможно выполнить вставку.]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Невозможно выполнить действие. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+    <string name="_bx_timeline_txt_err_empty_post"><![CDATA[Сообщение пусто.]]></string>
+    <string name="_bx_timeline_txt_err_attach_links"><![CDATA[Достигнуто максимально допустимое количество прикрепленных ссылок.]]></string>
+
+    <string name="_bx_timeline_txt_to"><![CDATA[в]]></string>
+    <string name="_bx_timeline_txt_load_more"><![CDATA[Загрузить ещё]]></string>
+    <string name="_bx_timeline_txt_loading"><![CDATA[Загрузка...]]></string>
+    <string name="_bx_timeline_txt_loading_complete"><![CDATA[Загрузка завершена]]></string>
+    <string name="_bx_timeline_txt_or_jump_to"><![CDATA[... или перейти к:]]></string>
+    <string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Перейти к {0} году]]></string>
+    <string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Перейти к недавним сообщениям]]></string>
+    <string name="_bx_timeline_txt_status_deleted"><![CDATA[Удалено]]></string>
+    <string name="_bx_timeline_txt_hot"><![CDATA['Горячее' событие]]></string>
+    <string name="_bx_timeline_txt_pinned"><![CDATA[Приколотое событие]]></string>
+    <string name="_bx_timeline_txt_sticked"><![CDATA[Событие приколотое для всех]]></string>
+    <string name="_bx_timeline_txt_promoted"><![CDATA[Рекламируемое]]></string>
+    <string name="_bx_timeline_txt_note_approve_pending"><![CDATA[Обновление будет опубликовано, как только пройдет проверку модератором.]]></string>
+    <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Дата публикации: {0}]]></string>
+    <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Обновление будет опубликовано, как только сконвертируется видео.]]></string>
+    <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Обновление не было опубликовано, тк произошла ошибка при конвертации видео. Обновите видео, чтобы решить проблему.]]></string>
+    <string name="_bx_timeline_txt_rss_caption"><![CDATA[Лента {0}]]></string>
+    <string name="_bx_timeline_txt_added_sample"><![CDATA[Добавил {0}]]></string>
+    <string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} добавил {1}]]></string>
+    <string name="_bx_timeline_txt_user_repost"><![CDATA[Репост от {0}]]></string>
+    <string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} сделал репост {1} {2}]]></string>
+    <string name="_bx_timeline_txt_sample"><![CDATA[сообщение]]></string>
+    <string name="_bx_timeline_txt_sample_with_article"><![CDATA[сообщение]]></string>
+    <string name="_bx_timeline_txt_sample_ext"><![CDATA[сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_comment_single"><![CDATA[комментарий к сообщению в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_vote_single"><![CDATA[голос за сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_reaction_single"><![CDATA[реакция '{0}' к сообщению в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[голос за сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_score_down_single"><![CDATA[голос против сообщения в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_with_link"><![CDATA[со ссылкой]]></string>
+    <string name="_bx_timeline_txt_sample_with_image"><![CDATA[с изображением]]></string>
+    <string name="_bx_timeline_txt_sample_with_video"><![CDATA[с медиа]]></string>
+    <string name="_bx_timeline_txt_sample_with_media"><![CDATA[с медиа]]></string>
+    <string name="_bx_timeline_txt_sample_with_file"><![CDATA[с файлом]]></string>
+    <string name="_bx_timeline_txt_today"><![CDATA[Сегодня]]></string>
+    <string name="_bx_timeline_txt_some_text_here"><![CDATA[Поделитесь своими мыслями]]></string>
+    <string name="_bx_timeline_txt_show"><![CDATA[Показать]]></string>
+    <string name="_bx_timeline_txt_new_content"><![CDATA[Новый контент]]></string>
+
+    <string name="_bx_timeline_txt_do_repost"><![CDATA[Сделать репост]]></string>
+    <string name="_bx_timeline_txt_do_repost_with"><![CDATA[Сделать репост с текстом]]></string>
+    <string name="_bx_timeline_txt_do_repost_to"><![CDATA[Сделать репост в контекст]]></string>
+    <string name="_bx_timeline_txt_repost_counter"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_txt_reposted"><![CDATA[Сделал репост {0} {1}.]]></string>
+    <string name="_bx_timeline_txt_reposted_by"><![CDATA[Сделал репост]]></string>
+    <string name="_bx_timeline_txt_err_cannot_repost"><![CDATA[Невозможно сделать репост. Пожалуйста, сообщите нам об этой проблеме.]]></string>
+    <string name="_bx_timeline_txt_err_already_reposted"><![CDATA[Вы уже сделали репост этого элемента.]]></string>
+    <string name="_bx_timeline_txt_msg_success_repost"><![CDATA[Репост данного элемента был сделан успешно.]]></string>
+    <string name="_bx_timeline_txt_object_reposted"><![CDATA[<b class="bx-ntfs-content-profile">{owner_name}</b> - {entry_sample} <b class="bx-ntfs-content-entry">{entry_caption}</b>]]> (репост)</string>
+
+    <!-- EMAIL TEMPLATES -->
+    <string name="_bx_timeline_et_txt_name_send"><![CDATA[Послать другу.]]></string>
+    <string name="_bx_timeline_et_txt_subject_send"><![CDATA[Это может быть интересно для вас.]]></string>
+    <string name="_bx_timeline_et_txt_body_send"><![CDATA[{email_header}
+<p>Привет.</p>
+<p>Взгляните на <a href="{ViewLink}">это сообщение</a>, оно может быть интересно для вас.</p>
+{email_footer}]]></string>
+</resources>

+ 5 - 1
modules/boonex/russian/updates/13.0.9_13.0.10/source/data/langs/system/ru.xml

@@ -532,6 +532,7 @@
 	<string name="_adm_bp_mi_page_visibility"><![CDATA[Видимость]]></string>
 	<string name="_adm_bp_scs_save"><![CDATA[Изменения успешно сохранены]]></string>
 	<string name="_adm_bp_txt_block_active"><![CDATA[Активный]]></string>
+        <string name="_adm_bp_txt_block_active_api"><![CDATA[Активный (для приложения)]]></string>
         <string name="_adm_bp_txt_block_async"><![CDATA[Асинхронный режим]]></string>
         <string name="_adm_bp_txt_block_cache_lifetime"><![CDATA[Кэш для блока (в секундах)]]></string>
 	<string name="_adm_bp_txt_block_content_attachments_html"><![CDATA[Вложения]]></string>
@@ -1209,6 +1210,7 @@
         <string name="_adm_nav_txt_items_parent_id"><![CDATA[Родительский пункт]]></string>
         <string name="_adm_nav_txt_items_parent_id_empty"><![CDATA[Нет родительского пункта]]></string>
         <string name="_adm_nav_txt_items_primary"><![CDATA[Основная]]></string>
+        <string name="_adm_nav_txt_items_active_api"><![CDATA[Активный (для приложения)]]></string>
 	<string name="_adm_nav_txt_items_show_to_popup"><![CDATA[Отображать "{0}" элемент меню для: ]]></string>
 	<string name="_adm_nav_txt_items_submenu"><![CDATA[Подменю]]></string>
 	<string name="_adm_nav_txt_items_submenu_empty"><![CDATA[Без подменю]]></string>
@@ -1477,7 +1479,7 @@
     <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_category_api"><![CDATA[Общие]]></string>
+    <string name="_adm_stg_cpt_category_api_general"><![CDATA[Общие]]></string>
     <string name="_adm_stg_cpt_category_api_layout"><![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>    
@@ -1651,6 +1653,7 @@
     <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_session_auth"><![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>
@@ -1787,6 +1790,7 @@
 	<string name="_adm_tmi_cpt_site"><![CDATA[Перейти на сайт]]></string>
 	<string name="_adm_tmi_cpt_tour"><![CDATA[Инструкции]]></string>
 	<string name="_adm_tmi_cpt_launcher"><![CDATA[Загрузчик]]></string>
+        <string name="_adm_txt_active_api"><![CDATA[Доступно в приложении]]></string>
 	<string name="_adm_txt_confirm_cancel"><![CDATA[Отменить]]></string>
 	<string name="_adm_txt_confirm_ok"><![CDATA[OK]]></string>
 	<string name="_adm_txt_forgot_password"><![CDATA[Забыли пароль?]]></string>

+ 51 - 0
modules/boonex/spaces/updates/13.0.5_13.0.6/install/config.php

@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Spaces',
+    'version_from' => '13.0.5',
+    'version_to' => '13.0.6',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '13.0.0-RC5'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/spaces/updates/update_13.0.5_13.0.6/',
+    'home_uri' => 'spaces_update_1305_1306',
+
+    'module_dir' => 'boonex/spaces/',
+    'module_uri' => 'spaces',
+
+    'db_prefix' => 'bx_spaces_',
+    'class_prefix' => 'BxSpaces',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 0,
+    ),
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Spaces',
+
+    /**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/spaces/updates/13.0.5_13.0.6/install/installer.php

@@ -0,0 +1,13 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ */
+
+class BxSpacesUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+    {
+        parent::__construct($aConfig);
+    }
+}

+ 8 - 0
modules/boonex/spaces/updates/13.0.5_13.0.6/install/langs/en.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_bx_spaces_menu_item_title_system_leave_group"><![CDATA[Leave Space]]></string_add>
+	<string_add name="_bx_spaces_menu_item_title_leave_group"><![CDATA[Leave Space]]></string_add>
+
+	<string_del name="_bx_spaces_menu_item_title_system_leave_space"><![CDATA[Leave Space]]></string_del>
+	<string_del name="_bx_spaces_menu_item_title_leave_space"><![CDATA[Leave Space]]></string_del>
+</resources>

+ 152 - 0
modules/boonex/spaces/updates/13.0.5_13.0.6/source/install/config.php

@@ -0,0 +1,152 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Spaces Spaces
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_spaces',
+    'title' => 'Spaces',
+    'note' => 'Spaces functionality.',
+    'version' => '13.0.6',
+    'vendor' => 'BoonEx',
+    'help_url' => 'http://feed.una.io/?section={module_name}',
+
+    'compatible_with' => array(
+        '13.0.0-RC5'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/spaces/',
+    'home_uri' => 'spaces',
+
+    'db_prefix' => 'bx_spaces_',
+    'class_prefix' => 'BxSpaces',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Spaces',
+
+    /**
+     * Connections.
+     */
+    'connections' => array(
+        'sys_profiles_friends' => array ('type' => 'profiles'),
+        'sys_profiles_subscriptions' => array ('type' => 'profiles'),
+    ),
+
+    /**
+     * Menu triggers.
+     */
+    'menu_triggers' => array(
+        'trigger_profile_view_submenu',
+        'trigger_group_view_submenu',
+        'trigger_group_snippet_meta',
+        'trigger_group_view_actions',
+    ),
+
+    /**
+     * Page triggers.
+     */
+    'page_triggers' => array (
+        'trigger_page_group_view_entry',
+    ),
+
+    /**
+     * Storage objects to automatically delete files from upon module uninstallation.
+     * Note. Don't add storage objects used in transcoder objects.
+     */
+    'storages' => array(
+        'bx_spaces_pics'
+    ),
+
+    /**
+     * Transcoders.
+     */
+    'transcoders' => array(
+        'bx_spaces_icon',
+        'bx_spaces_thumb',
+        'bx_spaces_avatar',
+        'bx_spaces_avatar_big',
+        'bx_spaces_picture',
+        'bx_spaces_cover',
+        'bx_spaces_cover_thumb',
+        'bx_spaces_gallery'
+    ),
+
+    /**
+     * Extended Search Forms.
+     */
+    'esearches' => array(
+        'bx_spaces',
+        'bx_spaces_cmts',
+    ),
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+        'process_esearches' => 1,
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'process_connections' => 1,
+        'process_deleted_profiles' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable_success' => array(
+        'process_menu_triggers' => 1,
+        'process_page_triggers' => 1,
+        'process_esearches' => 1,
+        'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'unregister_transcoders' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable_failed' => array (
+        'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+    /**
+     * Connections Section
+     */
+    'relations' => array(
+        'bx_timeline',
+        'bx_notifications',
+    ),
+);
+
+/** @} */

+ 448 - 0
modules/boonex/spaces/updates/13.0.5_13.0.6/source/install/langs/en.xml

@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+    <string name="_bx_spaces"><![CDATA[Spaces]]></string>
+    <string name="_bx_spaces_cmts"><![CDATA[Spaces' Comments]]></string>
+
+    <string name="_bx_spaces_option_enable_auto_approve"><![CDATA[Auto approve a space after creation]]></string>
+    <string name="_bx_spaces_option_enable_multilevel_hierarchy"><![CDATA[Allow multilevel hierarchy (experimental)]]></string>
+    <string name="_bx_spaces_option_num_connections_quick"><![CDATA[Number of items in friends block]]></string>
+    <string name="_bx_spaces_option_per_page_browse"><![CDATA[Number of items per page]]></string>
+    <string name="_bx_spaces_option_num_rss"><![CDATA[Number of items in RSS feed]]></string>
+    <string name="_bx_spaces_option_searchable_fields"><![CDATA[Searchable fields]]></string>
+    <string name="_bx_spaces_option_members_mode"><![CDATA[Special mode for space members]]></string>
+    <string name="_bx_spaces_option_members_mode_multi_roles"><![CDATA[Multi Roles]]></string>
+    <string name="_bx_spaces_option_per_page_for_favorites_lists"><![CDATA[Number of favorite lists per page]]></string>
+    <string name="_bx_spaces_option_internal_notifications"><![CDATA[Use internal notifications]]></string>
+
+    <string name="_bx_spaces_form_profile"><![CDATA[Spaces]]></string>
+    <string name="_bx_spaces_form_profile_display_add"><![CDATA[Add Space]]></string>
+    <string name="_bx_spaces_form_profile_display_edit"><![CDATA[Edit Space]]></string>
+    <string name="_bx_spaces_form_profile_display_edit_cover"><![CDATA[Edit Cover]]></string>
+    <string name="_bx_spaces_form_profile_display_delete"><![CDATA[Delete Space]]></string>
+    <string name="_bx_spaces_form_profile_display_view"><![CDATA[View Space]]></string>
+    <string name="_bx_spaces_form_profile_display_view_full"><![CDATA[Full View Space]]></string>
+    <string name="_bx_spaces_form_profile_display_invite"><![CDATA[Invite to Space]]></string>
+    <string name="_bx_spaces_form_entry_input_author"><![CDATA[Author]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_join_confirm"><![CDATA[Join confirmation]]></string>
+    <string name="_bx_spaces_form_profile_input_join_confirm"><![CDATA[Approval required to join]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_allow_view_to"><![CDATA[Visible to]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_to"><![CDATA[Visible to]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_favorite_list"><![CDATA[Visibility]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_view_to_desc"><![CDATA[Closed - anyone can find the space and see who's in it, only members can see posts. Secret - only members can find the space and see posts.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_allow_post_to"><![CDATA[Who can post]]></string>
+    <string name="_bx_spaces_form_profile_input_allow_post_to"><![CDATA[Who can post]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_initial_members"><![CDATA[Invite Members]]></string>
+    <string name="_bx_spaces_form_profile_input_initial_members"><![CDATA[Invite Members]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_parent_space"><![CDATA[Parent Space]]></string>
+    <string name="_bx_spaces_form_profile_input_parent_space"><![CDATA[Parent Space]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_name"><![CDATA[Space Name]]></string>
+    <string name="_bx_spaces_form_profile_input_space_name"><![CDATA[Space Name]]></string>
+    <string name="_bx_spaces_form_profile_input_space_name_err"><![CDATA[This information is essential. Please, fill in this field.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_desc"><![CDATA[Description]]></string>
+    <string name="_bx_spaces_form_profile_input_space_desc"><![CDATA[Description]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_space_cat"><![CDATA[Category]]></string>
+    <string name="_bx_spaces_form_profile_input_space_cat"><![CDATA[Category]]></string>
+    <string name="_bx_spaces_form_profile_input_space_cat_err"><![CDATA[Category field is mandatory]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_picture"><![CDATA[Space Picture]]></string>
+    <string name="_bx_spaces_form_profile_input_picture"><![CDATA[Upload New Space Picture]]></string>
+    <string name="_bx_spaces_form_profile_input_picture_err"><![CDATA[Space picture is mandatory.]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_cover"><![CDATA[Cover Picture]]></string>
+    <string name="_bx_spaces_form_profile_input_cover"><![CDATA[Upload New Cover Picture]]></string>
+    <string name="_bx_spaces_form_profile_input_sys_delete_confirm"><![CDATA[Delete confirmation]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm"><![CDATA[I am sure I want to delete this space]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm_info"><![CDATA[This action can not be undone.]]></string>
+    <string name="_bx_spaces_form_profile_input_delete_confirm_error"><![CDATA[Please check this checkbox if you really want to delete space.]]></string>
+
+    <string name="_bx_spaces_form_price"><![CDATA[Price]]></string>
+    <string name="_bx_spaces_form_price_display_add"><![CDATA[Add]]></string>
+    <string name="_bx_spaces_form_price_display_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_spaces_form_price_input_sys_id"><![CDATA[ID]]></string>
+    <string name="_bx_spaces_form_price_input_sys_role_id"><![CDATA[Role ID]]></string>
+    <string name="_bx_spaces_form_price_input_sys_name"><![CDATA[Name]]></string>
+    <string name="_bx_spaces_form_price_input_name"><![CDATA[Name]]></string>
+    <string name="_bx_spaces_form_price_input_inf_name"><![CDATA[Unique value which will be used in back end and API calls]]></string>
+    <string name="_bx_spaces_form_price_input_err_name"><![CDATA[You need to enter a unique value here]]></string>
+    <string name="_bx_spaces_form_price_input_sys_period"><![CDATA[Period]]></string>
+    <string name="_bx_spaces_form_price_input_period"><![CDATA[Period]]></string>
+    <string name="_bx_spaces_form_price_input_inf_period"><![CDATA[Use 0 for lifetime]]></string>
+    <string name="_bx_spaces_form_price_input_sys_period_unit"><![CDATA[Period unit]]></string>
+    <string name="_bx_spaces_form_price_input_period_unit"><![CDATA[Period unit]]></string>
+    <string name="_bx_spaces_form_price_input_inf_period_unit"><![CDATA[Leave empty for lifetime level.]]></string>
+    <string name="_bx_spaces_form_price_input_err_period_unit"><![CDATA[You need to select a period unit here.]]></string>
+    <string name="_bx_spaces_form_price_input_sys_price"><![CDATA[Price]]></string>
+    <string name="_bx_spaces_form_price_input_price"><![CDATA[Price]]></string>
+    <string name="_bx_spaces_form_price_input_inf_price"><![CDATA[Use 0 or leave empty to create free level.]]></string>
+    <string name="_bx_spaces_form_price_input_sys_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_spaces_form_price_input_do_submit"><![CDATA[Submit]]></string>
+    <string name="_bx_spaces_form_price_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_spaces_form_price_input_do_cancel"><![CDATA[Cancel]]></string>
+
+    <string name="_bx_spaces_acl_action_create_profile"><![CDATA[Create Space]]></string>
+    <string name="_bx_spaces_acl_action_use_paid_join"><![CDATA[Use paid join]]></string>
+    <string name="_bx_spaces_acl_action_delete_profile"><![CDATA[Delete Space]]></string>
+    <string name="_bx_spaces_acl_action_view_profile"><![CDATA[View Space]]></string>
+    <string name="_bx_spaces_acl_action_edit_any_profile"><![CDATA[Edit Any Space]]></string>
+	<string name="_bx_spaces_acl_action_delete_any_profile"><![CDATA[Delete Any Space]]></string>
+    <string name="_bx_spaces_acl_action_delete_invites"><![CDATA[Delete Invites]]></string>
+	
+	<string name="_bx_spaces_page_title_sys_joined_entries"><![CDATA[Profile Spaces]]></string>
+	<string name="_bx_spaces_page_title_joined_entries"><![CDATA[Profile Spaces]]></string>
+	<string name="_bx_spaces_page_title_sys_create_profile"><![CDATA[Create Space]]></string>
+	<string name="_bx_spaces_page_title_create_profile"><![CDATA[Create Space]]></string>
+	<string name="_bx_spaces_page_title_sys_edit_profile"><![CDATA[Edit Space]]></string>
+	<string name="_bx_spaces_page_title_edit_profile"><![CDATA[Edit Space]]></string>
+	<string name="_bx_spaces_page_title_sys_edit_profile_cover"><![CDATA[Edit Space Cover]]></string>
+	<string name="_bx_spaces_page_title_edit_profile_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_spaces_page_title_sys_delete_profile"><![CDATA[Delete Space]]></string>
+	<string name="_bx_spaces_page_title_delete_profile"><![CDATA[Delete Space]]></string>
+        <string name="_bx_spaces_page_title_sys_join_profile"><![CDATA[Join Space]]></string>
+        <string name="_bx_spaces_page_title_join_profile"><![CDATA[Join Space]]></string>
+	<string name="_bx_spaces_page_title_sys_view_profile_closed"><![CDATA[View Closed Space]]></string>
+	<string name="_bx_spaces_page_title_sys_view_profile"><![CDATA[View Space]]></string>
+	<string name="_bx_spaces_page_title_view_profile"><![CDATA[{display_name}]]></string>
+	<string name="_bx_spaces_page_title_browse"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_page_title_browse_by_author"><![CDATA[Spaces of {display_name}]]></string>
+	<string name="_bx_spaces_page_title_browse_featured"><![CDATA[Featured Spaces]]></string>
+	<string name="_bx_spaces_page_title_browse_top"><![CDATA[Top Spaces]]></string>
+	<string name="_bx_spaces_page_title_browse_recent"><![CDATA[New Spaces]]></string>
+	<string name="_bx_spaces_page_title_browse_connections"><![CDATA[{0} connections]]></string>
+	<string name="_bx_spaces_page_title_browse_connections_mutual"><![CDATA[{0} and {1} mutual connections]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_page_title_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_page_title_sys_space_fans"><![CDATA[Members]]></string>
+	<string name="_bx_spaces_page_title_space_fans"><![CDATA[Members]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_spaces_page_title_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_spaces_page_title_sys_profile_info"><![CDATA[Space Info]]></string>
+	<string name="_bx_spaces_page_title_profile_info"><![CDATA[Info about {display_name}]]></string>
+        <string name="_bx_spaces_page_title_sys_profile_pricing"><![CDATA[Pricing]]></string>
+        <string name="_bx_spaces_page_title_profile_pricing"><![CDATA[Pricing]]></string>
+	<string name="_bx_spaces_page_title_sys_recent"><![CDATA[New Spaces]]></string>
+	<string name="_bx_spaces_page_title_recent"><![CDATA[New Spaces]]></string>
+	<string name="_bx_spaces_page_title_sys_manage"><![CDATA[Manage Own Spaces]]></string>
+	<string name="_bx_spaces_page_title_sys_manage_administration"><![CDATA[Manage All Spaces]]></string>
+	<string name="_bx_spaces_page_title_manage"><![CDATA[Manage Spaces]]></string>
+	<string name="_bx_spaces_page_title_sys_top"><![CDATA[Top Spaces]]></string>
+	<string name="_bx_spaces_page_title_top"><![CDATA[Top Spaces]]></string>
+        <string name="_bx_spaces_page_title_sys_joined"><![CDATA[Joined  Spaces]]></string>
+        <string name="_bx_spaces_page_title_joined"><![CDATA[Joined Spaces]]></string>
+	<string name="_bx_spaces_page_title_sys_invite_to_space"><![CDATA[Invite Members to the Space]]></string>
+	<string name="_bx_spaces_page_title_invite_to_space"><![CDATA[Invite Members to the Space]]></string>
+	<string name="_bx_spaces_page_title_sys_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_spaces_page_title_entries_search"><![CDATA[Search]]></string>
+        <string name="_bx_spaces_page_title_sys_entries_favorites"><![CDATA[Favorites Spaces]]></string>
+        <string name="_bx_spaces_page_title_entries_favorites"><![CDATA[Favorites Spaces]]></string>
+	
+	<string name="_bx_spaces_page_block_title_sys_entries_actions"><![CDATA[Spaces actions]]></string>
+	<string name="_bx_spaces_page_block_title_entries_actions"><![CDATA[Spaces actions]]></string>
+        <string name="_bx_spaces_page_block_title_sys_favorites_entries"><![CDATA[Favorite List]]></string>
+        <string name="_bx_spaces_page_block_title_favorites_entries"><![CDATA["{title}" List]]></string>
+        <string name="_bx_spaces_page_block_title_favorites_entries_info"><![CDATA[Info]]></string>
+        <string name="_bx_spaces_page_block_title_favorites_entries_actions"><![CDATA[Favorites List Actions]]></string>
+	<string name="_bx_spaces_page_block_title_sys_entries_of_author"><![CDATA[Spaces of author]]></string>
+	<string name="_bx_spaces_page_block_title_entries_of_author"><![CDATA[Spaces by {display_name}]]></string>
+	<string name="_bx_spaces_page_block_title_favorites_of_author"><![CDATA[Favorite Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_sys_favorites_of_author"><![CDATA[Favorite Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_sys_joined_entries"><![CDATA[Joined Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_joined_entries"><![CDATA[Joined Spaces]]></string>
+  <string name="_bx_spaces_page_block_title_parent"><![CDATA[Parent Space]]></string>
+  <string name="_bx_spaces_page_block_title_childs"><![CDATA[Child Spaces]]></string>
+  <string name="_bx_spaces_page_block_title_create_profile"><![CDATA[Create Space]]></string>
+	<string name="_bx_spaces_page_block_title_edit_profile"><![CDATA[Edit Space]]></string>
+	<string name="_bx_spaces_page_block_title_edit_profile_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_spaces_page_block_title_delete_profile"><![CDATA[Delete Space]]></string>
+        <string name="_bx_spaces_page_block_title_join_profile"><![CDATA[Join Space]]></string>
+	<string name="_bx_spaces_page_block_title_profile_info_link"><![CDATA[About <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_spaces_page_block_title_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_spaces_page_block_title_system_profile_info"><![CDATA[Info]]></string>
+        <string name="_bx_spaces_page_block_title_system_profile_pricing"><![CDATA[Pricing]]></string>
+        <string name="_bx_spaces_page_block_title_profile_pricing"><![CDATA[Pricing]]></string>
+        <string name="_bx_spaces_page_block_title_profile_pricing_link"><![CDATA[Pricing of <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_spaces_page_block_title_profile_description"><![CDATA[Description]]></string>
+	<string name="_bx_spaces_page_block_title_profile_friends_link"><![CDATA[Friends of <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_spaces_page_block_title_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_page_block_title_system_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_page_block_title_admins"><![CDATA[Administrators]]></string>
+	<string name="_bx_spaces_page_block_title_fans_link"><![CDATA[Members of <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_spaces_page_block_title_fans"><![CDATA[Members]]></string>
+	<string name="_bx_spaces_page_block_title_system_fans"><![CDATA[Members]]></string>
+  <string name="_bx_spaces_page_block_title_fans_invites"><![CDATA[Invites]]></string>
+  <string name="_bx_spaces_page_block_title_system_invites"><![CDATA[Invites]]></string>
+        <string name="_bx_spaces_page_block_title_profile_location"><![CDATA[Location]]></string>
+	<string name="_bx_spaces_page_block_title_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_spaces_page_block_title_entry_reports"><![CDATA[Reports]]></string>
+	<string name="_bx_spaces_page_block_title_profile_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string>
+	<string name="_bx_spaces_page_block_title_profile_actions"><![CDATA[Actions]]></string>
+	<string name="_bx_spaces_page_block_title_featured_profiles"><![CDATA[Featured Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_latest_profiles"><![CDATA[New Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_system_manage"><![CDATA[Manage Own Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_system_manage_administration"><![CDATA[Manage All Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_manage"><![CDATA[Manage Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_top_profiles"><![CDATA[Top Spaces]]></string>
+        <string name="_bx_spaces_page_block_title_joined_profiles"><![CDATA[Joined Spaces]]></string>
+        <string name="_bx_spaces_page_block_title_entry_all_actions"><![CDATA[All Actions]]></string>
+	<string name="_bx_spaces_page_block_title_entry_social_sharing"><![CDATA[Share]]></string>
+	<string name="_bx_spaces_page_block_title_categories"><![CDATA[Spaces Categories]]></string>
+	<string name="_bx_spaces_page_block_title_invite_to_space"><![CDATA[Invite Members to the Space]]></string>
+	<string name="_bx_spaces_page_block_title_search_form"><![CDATA[Search Form]]></string>
+	<string name="_bx_spaces_page_block_title_search_results"><![CDATA[Search Results]]></string>
+	<string name="_bx_spaces_page_block_title_search_form_cmts"><![CDATA[Comments Search Form]]></string>
+	<string name="_bx_spaces_page_block_title_search_results_cmts"><![CDATA[Comments Search Results]]></string>
+	<string name="_bx_spaces_page_block_title_sys_featured_entries_view_showcase"><![CDATA[Featured Spaces (Showcase View)]]></string>
+	<string name="_bx_spaces_page_block_title_featured_entries_view_showcase"><![CDATA[Featured Spaces]]></string>
+	<string name="_bx_spaces_page_block_title_sys_recommended_entries_view_showcase"><![CDATA[Recommended Spaces (Showcase View)]]></string>
+	<string name="_bx_spaces_page_block_title_recommended_entries_view_showcase"><![CDATA[Recommended Spaces]]></string>
+  <string name="_bx_spaces_page_block_title_top_level_spaces"><![CDATA[Top Level Spaces]]></string>
+  <string name="_bx_spaces_page_block_title_sys_cover_block"><![CDATA[Cover]]></string>
+  <string name="_bx_spaces_page_block_title_cover_block"><![CDATA[Cover]]></string>
+
+        <string name="_bx_spaces_menu_title_submenu"><![CDATA[Spaces Submenu]]></string>
+	<string name="_bx_spaces_menu_set_title_submenu"><![CDATA[Spaces Submenu]]></string>
+	<string name="_bx_spaces_menu_set_title_view_profile_actions"><![CDATA[Space Actions]]></string>
+	<string name="_bx_spaces_menu_title_view_profile_actions"><![CDATA[Space Actions]]></string>
+	<string name="_bx_spaces_menu_set_title_view_profile_actions_more"><![CDATA[Space More Actions]]></string>
+	<string name="_bx_spaces_menu_title_view_profile_actions_more"><![CDATA[Space More Actions]]></string>
+        <string name="_bx_spaces_menu_title_view_profile_meta"><![CDATA[Space Meta]]></string>
+        <string name="_bx_spaces_menu_set_title_view_profile_meta"><![CDATA[Space Meta]]></string>
+	<string name="_bx_spaces_menu_set_title_view_profile_submenu"><![CDATA[View Space Submenu]]></string>
+	<string name="_bx_spaces_menu_title_view_profile_submenu"><![CDATA[View Space Submenu]]></string>
+	<string name="_bx_spaces_menu_title_entries_my"><![CDATA[Profile Spaces Action Menu]]></string>
+	<string name="_bx_spaces_menu_set_title_entries_my"><![CDATA[Profile Spaces Menu]]></string>
+	<string name="_bx_spaces_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+	<string name="_bx_spaces_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+	<string name="_bx_spaces_menu_item_title_system_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_spaces_menu_item_title_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_spaces_menu_item_title_system_delete_with_content"><![CDATA[Delete With Content]]></string>
+	<string name="_bx_spaces_menu_item_title_delete_with_content"><![CDATA[Delete With Content]]></string>
+        <string name="_bx_spaces_menu_item_title_system_clear_reports"><![CDATA[Clear reports]]></string>
+        <string name="_bx_spaces_menu_item_title_clear_reports"><![CDATA[Clear reports]]></string>
+	<string name="_bx_spaces_menu_item_title_system_edit_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_spaces_menu_item_title_edit_cover"><![CDATA[Edit Cover]]></string>
+        <string name="_bx_spaces_menu_item_title_system_edit_pricing"><![CDATA[Edit Pricing]]></string>
+        <string name="_bx_spaces_menu_item_title_edit_pricing"><![CDATA[Edit Pricing]]></string>
+	<string name="_bx_spaces_menu_item_title_system_edit_profile"><![CDATA[Edit Space]]></string>
+	<string name="_bx_spaces_menu_item_title_edit_profile"><![CDATA[Edit Space]]></string>
+	<string name="_bx_spaces_menu_item_title_system_delete_profile"><![CDATA[Delete Space]]></string>
+	<string name="_bx_spaces_menu_item_title_delete_profile"><![CDATA[Delete Space]]></string>
+	<string name="_bx_spaces_menu_item_title_system_delete_account"><![CDATA[Delete Account]]></string>
+	<string name="_bx_spaces_menu_item_title_delete_account"><![CDATA[Delete Account]]></string>
+	<string name="_bx_spaces_menu_item_title_system_profile_type"><![CDATA[Space]]></string>
+	<string name="_bx_spaces_menu_item_title_profile_type"><![CDATA[Space]]></string>
+	<string name="_bx_spaces_menu_item_title_system_create_profile"><![CDATA[Space]]></string>
+	<string name="_bx_spaces_menu_item_title_create_profile"><![CDATA[Space]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_menu_item_title_view_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_joined_spaces"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_view_joined_spaces"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_fans"><![CDATA[Members]]></string>
+	<string name="_bx_spaces_menu_item_title_view_fans"><![CDATA[Members]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_spaces_menu_item_title_view_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_spaces_menu_item_title_view_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_spaces_menu_item_title_system_view_profile_view"><![CDATA[Space]]></string>
+	<string name="_bx_spaces_menu_item_title_view_profile_view"><![CDATA[Space]]></string>
+        <string name="_bx_spaces_menu_item_title_system_view_profile_more_auto"><![CDATA[More]]></string>
+        <string name="_bx_spaces_menu_item_title_view_profile_more_auto"><![CDATA[More]]></string>
+	<string name="_bx_spaces_menu_item_title_system_invite"><![CDATA[Invite]]></string>
+	<string name="_bx_spaces_menu_item_title_invite"><![CDATA[Invite]]></string>
+	
+	<string name="_bx_spaces_menu_item_title_system_befriend"><![CDATA[Add friend]]></string>
+	<string name="_bx_spaces_menu_item_title_befriend"><![CDATA[Add friend]]></string>
+	<string name="_bx_spaces_menu_item_title_befriend_sent"><![CDATA[Add friend (requested)]]></string>
+	<string name="_bx_spaces_menu_item_title_befriend_confirm"><![CDATA[Accept friend request]]></string>
+	<string name="_bx_spaces_menu_item_title_system_unfriend"><![CDATA[Unfriend]]></string>
+	<string name="_bx_spaces_menu_item_title_unfriend"><![CDATA[Unfriend]]></string>
+	<string name="_bx_spaces_menu_item_title_unfriend_cancel_request"><![CDATA[Cancel friend request]]></string>
+	<string name="_bx_spaces_menu_item_title_unfriend_reject_request"><![CDATA[Reject friend request]]></string>
+	
+	<string name="_bx_spaces_menu_item_title_system_become_fan"><![CDATA[Join Space]]></string>
+	<string name="_bx_spaces_menu_item_title_become_fan"><![CDATA[Join Space]]></string>
+	<string name="_bx_spaces_menu_item_title_become_fan_sent"><![CDATA[Join Space (requested)]]></string>
+	<string name="_bx_spaces_menu_item_title_become_fan_confirm"><![CDATA[Accept Request]]></string>
+	<string name="_bx_spaces_menu_item_title_system_leave_group"><![CDATA[Leave Space]]></string>
+	<string name="_bx_spaces_menu_item_title_leave_group"><![CDATA[Leave Space]]></string>
+	<string name="_bx_spaces_menu_item_title_leave_space_cancel_request"><![CDATA[Cancel Request]]></string>
+	<string name="_bx_spaces_menu_item_title_leave_space_reject_request"><![CDATA[Reject Request]]></string>
+
+        <string name="_bx_spaces_menu_item_title_system_pay_and_join"><![CDATA[Pay & Join]]></string>
+        <string name="_bx_spaces_menu_item_title_pay_and_join"><![CDATA[Pay & Join]]></string>
+
+	<string name="_bx_spaces_menu_item_title_system_subscribe"><![CDATA[Follow]]></string>
+	<string name="_bx_spaces_menu_item_title_subscribe"><![CDATA[Follow]]></string>
+	<string name="_bx_spaces_menu_item_title_system_unsubscribe"><![CDATA[Unfollow]]></string>
+	<string name="_bx_spaces_menu_item_title_unsubscribe"><![CDATA[Unfollow]]></string>
+	<string name="_bx_spaces_menu_item_title_system_more_actions"><![CDATA[More Actions]]></string>
+	<string name="_bx_spaces_menu_item_title_more_actions"><![CDATA[]]></string>
+	<string name="_bx_spaces_menu_item_title_system_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_menu_item_title_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_spaces_menu_item_title_system_manage_my_spaces"><![CDATA[My spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_manage_my_spaces"><![CDATA[Spaces]]></string>
+        <string name="_bx_spaces_menu_item_title_system_followings"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_followings"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_system_entries_recent"><![CDATA[New]]></string>
+	<string name="_bx_spaces_menu_item_title_entries_recent"><![CDATA[New]]></string>
+	<string name="_bx_spaces_menu_item_title_system_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_spaces_menu_item_title_entries_search"><![CDATA[Search]]></string>
+        <string name="_bx_spaces_menu_item_title_system_entries_joined"><![CDATA[Joined]]></string>
+        <string name="_bx_spaces_menu_item_title_entries_joined"><![CDATA[Joined]]></string>
+	<string name="_bx_spaces_menu_item_title_system_entries_manage"><![CDATA[Manage]]></string>
+	<string name="_bx_spaces_menu_item_title_entries_manage"><![CDATA[Manage]]></string>
+	<string name="_bx_spaces_menu_item_title_system_entries_home"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_entries_home"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_system_admt_spaces"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_admt_spaces"><![CDATA[Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_manage_my"><![CDATA[My Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_manage_all"><![CDATA[All Spaces]]></string>
+	<string name="_bx_spaces_menu_item_title_system_entries_top"><![CDATA[Top]]></string>
+	<string name="_bx_spaces_menu_item_title_entries_top"><![CDATA[Top]]></string>
+	
+    <string name="_bx_spaces_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Any Audience]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
+    <string name="_bx_spaces_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_name"><![CDATA[Name]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_added"><![CDATA[Created]]></string>
+    <string name="_bx_spaces_grid_column_title_adm_account"><![CDATA[Account]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_delete_with_content"><![CDATA[Delete With Content]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_more_actions"><![CDATA[More Actions]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_audit_context"><![CDATA[Audit actions in context]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_audit_content"><![CDATA[Audit actions with content]]></string>
+    <string name="_bx_spaces_grid_action_title_adm_clear_reports"><![CDATA[Clear reports]]></string>
+    <string name="_bx_spaces_grid_action_err_delete"><![CDATA[Cannot delete the selected space(s).]]></string>
+    <string name="_bx_spaces_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
+    <string name="_bx_spaces_menu_item_title_system_sm_parent"><![CDATA[Parent]]></string>
+    <string name="_bx_spaces_menu_item_title_sm_parent"><![CDATA[Parent]]></string>
+
+    <string name="_bx_spaces_grid_column_title_name"><![CDATA[Name]]></string>
+    <string name="_bx_spaces_grid_column_title_role_id"><![CDATA[Role]]></string>
+    <string name="_bx_spaces_grid_column_title_period"><![CDATA[Period]]></string>
+    <string name="_bx_spaces_grid_column_title_price"><![CDATA[Price]]></string>
+    <string name="_bx_spaces_grid_action_title_add"><![CDATA[Add]]></string>
+    <string name="_bx_spaces_grid_action_title_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_spaces_grid_action_title_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_spaces_grid_action_title_buy"><![CDATA[Buy]]></string>
+    <string name="_bx_spaces_grid_action_title_buy_title"><![CDATA[One-time payment]]></string>
+    <string name="_bx_spaces_grid_action_title_subscribe"><![CDATA[Subscribe]]></string>
+    <string name="_bx_spaces_grid_action_title_subscribe_title"><![CDATA[Create a subscription with recurring billing]]></string>
+    <string name="_bx_spaces_grid_action_title_choose"><![CDATA[Choose]]></string>
+    <string name="_bx_spaces_grid_action_title_choose_title"><![CDATA[Switch to the level for free]]></string>
+    <string name="_bx_spaces_popup_title_price_add"><![CDATA[Add Pricing Plan]]></string>
+    <string name="_bx_spaces_popup_title_price_edit"><![CDATA[Edit Pricing Plan]]></string>
+
+	<string name="_bx_spaces_chart_growth"><![CDATA[Spaces: Growth]]></string>
+	<string name="_bx_spaces_chart_growth_speed"><![CDATA[Spaces: Growth Speed]]></string>
+	
+	<string name="_bx_spaces_search_extended"><![CDATA[Spaces Search]]></string>
+	<string name="_bx_spaces_search_extended_cmts"><![CDATA[Spaces Comments Search]]></string>
+
+    <string name="_bx_spaces_err_delete_child_presend"><![CDATA[Cannot delete this space because there are child elements.]]></string>
+    <string name="_bx_spaces_txt_account_pending"><![CDATA[This space is pending approval, please wait until it is activated.]]></string>
+    <string name="_bx_spaces_txt_account_suspended"><![CDATA[This space is suspended.]]></string>
+    <string name="_bx_spaces_txt_status_hidden"><![CDATA[This space was hidden.]]></string>
+    <string name="_bx_spaces_txt_N_fans"><![CDATA[{0} members]]></string>
+    <string name="_bx_spaces_txt_role"><![CDATA[Role]]></string>
+    <string name="_bx_spaces_txt_role_added"><![CDATA[Added]]></string>
+    <string name="_bx_spaces_txt_role_expired"><![CDATA[Expires]]></string>
+    <string name="_bx_spaces_txt_sample_single"><![CDATA[space]]></string>
+    <string name="_bx_spaces_txt_sample_single_with_article"><![CDATA[a space]]></string>
+    <string name="_bx_spaces_txt_sample_comment_single"><![CDATA[comment to space]]></string>
+    <string name="_bx_spaces_txt_sample_vote_single"><![CDATA[vote to space]]></string>
+    <string name="_bx_spaces_txt_sample_score_up_single"><![CDATA[score up vote to space]]></string>
+    <string name="_bx_spaces_txt_sample_score_down_single"><![CDATA[score down vote to space]]></string>
+    <string name="_bx_spaces_txt_set_role"><![CDATA[Set Role]]></string>
+    <string name="_bx_spaces_txt_private_space"><![CDATA[Private space]]></string>
+    <string name="_bx_spaces_txt_invite_popup_text"><![CDATA[You have been invited to a space. Click the button below to accept the invitation.]]></string>
+    <string name="_bx_spaces_txt_invite_popup_title"><![CDATA[Invitation to a space]]></string>
+    <string name="_bx_spaces_txt_invite_popup_button_accept"><![CDATA[Accept]]></string>
+    <string name="_bx_spaces_txt_invite_popup_button_decline"><![CDATA[Decline]]></string>
+    <string name="_bx_spaces_txt_invite_popup_error_invitation_absent"><![CDATA[Sorry, an error has occurred. You can not join this space. The invitation is expired or deleted.]]></string>
+    <string name="_bx_spaces_txt_invite_popup_error_invitation_wrong_user"><![CDATA[Sorry, an error has occurred. You can not join this space. This invitation cannot be used by you.]]></string>
+    <string name="_bx_spaces_txt_n_unit"><![CDATA[{0} ({1})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title"><![CDATA[{0}: {1} ({2} {3})]]></string>
+    <string name="_bx_spaces_txt_cart_item_title_lifetime"><![CDATA[{0}: {1} (lifetime)]]></string>    
+
+    <string name="_bx_spaces_msg_performed"><![CDATA[The action was successfully performed.]]></string>
+    <string name="_bx_spaces_err_price_duplicate"><![CDATA[Similar pricing plan is already exists.]]></string>
+    <string name="_bx_spaces_err_cannot_perform"><![CDATA[An error appeared. Please report.]]></string>
+	
+    <string name="_bx_spaces_alert_action_fan_added"><![CDATA[member joined]]></string>
+    <string name="_bx_spaces_txt_ntfs_fan_added"><![CDATA[Space <b class="bx-ntfs-content-profile">{owner_name}</b> has got a member <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+    <string name="_bx_spaces_alert_action_join_invitation_notif"><![CDATA[join invitation]]></string>
+    <string name="_bx_spaces_alert_action_join_request"><![CDATA[join request]]></string>
+    <string name="_bx_spaces_txt_ntfs_join_invitation"><![CDATA[<b class="bx-ntfs-content-profile">{owner_name}</b> space's representative invites <b class="bx-ntfs-content-entry">{subentry_sample}</b> to join space]]></string>
+    <string name="_bx_spaces_txt_ntfs_join_request"><![CDATA[Space <b class="bx-ntfs-content-profile">{owner_name}</b> has a join request from <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+    <string name="_bx_spaces_txt_ntfs_timeline_post_common"><![CDATA[New post <b class="bx-ntfs-content-entry">{subentry_sample}</b> in <b class="bx-ntfs-content-profile">{owner_name}</b> space timeline]]></string>
+
+    <string name="_bx_spaces_pre_lists_cats"><![CDATA[Space categories]]></string>
+    <string name="_bx_spaces_cat_General"><![CDATA[General]]></string>
+    <string name="_bx_spaces_cat_Business"><![CDATA[Business]]></string>
+    <string name="_bx_spaces_cat_Interests"><![CDATA[Interests]]></string>
+    <string name="_bx_spaces_cat_Causes"><![CDATA[Causes]]></string>
+    <string name="_bx_spaces_cat_Fun"><![CDATA[Fun]]></string>
+    <string name="_bx_spaces_cat_Uncategorised"><![CDATA[Uncategorised]]></string>
+
+    <string name="_bx_spaces_pre_lists_roles"><![CDATA[Space roles]]></string>
+    <string name="_bx_spaces_role_regular"><![CDATA[Regular]]></string>
+    <string name="_bx_spaces_role_administrator"><![CDATA[Administrator]]></string>
+    <string name="_bx_spaces_role_moderator"><![CDATA[Moderator]]></string>
+
+    <string name="_bx_spaces_pre_lists_period_units"><![CDATA[Billing Interval]]></string>
+    <string name="_bx_spaces_period_unit_day"><![CDATA[day]]></string>
+    <string name="_bx_spaces_period_unit_week"><![CDATA[week]]></string>
+    <string name="_bx_spaces_period_unit_month"><![CDATA[month]]></string>
+    <string name="_bx_spaces_period_unit_year"><![CDATA[year]]></string>
+
+    <string name="_bx_spaces_email_join_request"><![CDATA[Space join request]]></string>
+    <string name="_bx_spaces_email_join_request_subject"><![CDATA[Request to join your space]]></string>
+    <string name="_bx_spaces_email_join_request_body"><![CDATA[{email_header}
+    <p>New request to join <a href="{EntryUrl}">{EntryTitle}</a> space from <a href="{NewMemberUrl}">{NewMemberDisplayName}</a></p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_join_reject"><![CDATA[Space join request was rejected]]></string>
+    <string name="_bx_spaces_email_join_reject_subject"><![CDATA[Request to join a space was rejected]]></string>
+    <string name="_bx_spaces_email_join_reject_body"><![CDATA[{email_header}
+    <p>Your request to join <a href="{EntryUrl}">{EntryTitle}</a> space was rejected by space admin.</p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_join_confirm"><![CDATA[Space join request was confirmed]]></string>
+    <string name="_bx_spaces_email_join_confirm_subject"><![CDATA[Your request to join a space was confirmed]]></string>
+    <string name="_bx_spaces_email_join_confirm_body"><![CDATA[{email_header}
+    <p>Your request to join <a href="{EntryUrl}">{EntryTitle}</a> space was confirmed by the space admin.</p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_fan_remove"><![CDATA[Profile was removed from space fans]]></string>
+    <string name="_bx_spaces_email_fan_remove_subject"><![CDATA[Your profile was removed from the space]]></string>
+    <string name="_bx_spaces_email_fan_remove_body"><![CDATA[{email_header}
+    <p>Your profile was removed from <a href="{EntryUrl}">{EntryTitle}</a> space by the space admin.</p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_fan_become_admin"><![CDATA[Space admin status was granted]]></string>
+    <string name="_bx_spaces_email_fan_become_admin_subject"><![CDATA[You are a space admin now]]></string>
+    <string name="_bx_spaces_email_fan_become_admin_body"><![CDATA[{email_header}
+    <p>You are an admin of <a href="{EntryUrl}">{EntryTitle}</a> space now.</p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_admin_become_fan"><![CDATA[Space admin status was revoked]]></string>
+    <string name="_bx_spaces_email_admin_become_fan_subject"><![CDATA[Your space admin status was revoked]]></string>
+    <string name="_bx_spaces_email_admin_become_fan_body"><![CDATA[{email_header}
+    <p>Your admin status was revoked from <a href="{EntryUrl}">{EntryTitle}</a> space.</p>
+    {email_footer}]]></string>
+
+    <string name="_bx_spaces_email_set_role"><![CDATA[Space member status was changed]]></string>
+    <string name="_bx_spaces_email_set_role_subject"><![CDATA[Your space status was changed]]></string>
+    <string name="_bx_spaces_email_set_role_body"><![CDATA[{email_header}
+<p>Your status in <a href="{EntryUrl}">{EntryTitle}</a> space was changed to <b>{Role}</b>.</p>
+{email_footer}]]></string>
+
+    <string name="_bx_spaces_email_invitation"><![CDATA[Invitation to space]]></string>
+    <string name="_bx_spaces_email_invitation_subject"><![CDATA[Invitation to "{EntryTitle}" space]]></string>
+    <string name="_bx_spaces_email_invitation_body"><![CDATA[{email_header}
+    <p><a href="{InviterUrl}">{InviterDisplayName}</a> invited you to <a href="{EntryUrl}">{EntryTitle} space</a>.</p>
+    {email_footer}]]></string>
+</resources>

+ 3 - 3
modules/boonex/timeline/updates/13.0.9_13.0.10/install/config.php

@@ -33,10 +33,10 @@ $aConfig = array(
      * Installation/Uninstallation Section.
      */
     'install' => array(
-        'execute_sql' => 0,
+        'execute_sql' => 1,
         'update_files' => 1,
-        'update_languages' => 0,
-        'clear_db_cache' => 0,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
     ),
 
     /**

+ 5 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/install/langs/en.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_del name="_bx_timeline_menu_item_title_system_add_emoji"><![CDATA[Add Emoji]]></string_del>
+    <string_del name="_bx_timeline_menu_item_title_add_emoji"><![CDATA[Add Emoji]]></string_del>
+</resources>

+ 5 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/install/sql/enable.sql

@@ -0,0 +1,5 @@
+SET @sName = 'bx_timeline';
+
+
+-- MENU
+DELETE FROM `sys_menu_items` WHERE `set_name`='bx_timeline_menu_post_attachments' AND `name`='add-emoji';

+ 930 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineConfig.php

@@ -0,0 +1,930 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+bx_import('BxDolPrivacy');
+
+class BxTimelineConfig extends BxBaseModNotificationsConfig
+{
+    protected $_aTypeToFormDisplay;
+
+    protected $_bAllowEdit;
+    protected $_bAllowDelete;
+    protected $_bShowAll;
+    protected $_bCountAllViews;
+    protected $_bRepostOwnActions;
+    protected $_bHideUponDelete;
+
+    protected $_bCacheItem;
+    protected $_sCacheItemEngine;
+    protected $_iCacheItemLifetime;
+
+    protected $_bInfScroll;
+    protected $_iInfScrollAutoPreloads;
+
+    protected $_iRssLength;
+    protected $_iLiveUpdateLength;
+    protected $_iCharsDisplayMinTitle;
+    protected $_iCharsDisplayMaxTitle;
+
+    protected $_bBriefCards;
+    protected $_aBriefCardsTags;
+    protected $_sVideosPreload;
+    protected $_sVideosAutoplay;
+    protected $_iPreloadComments;
+    protected $_iPreloadCommentsMax;
+    protected $_bJumpTo;
+    protected $_bSortByReaction;
+    protected $_bSortByUnread;
+    protected $_sAttachmentsLayout;
+
+    protected $_bHot;
+    protected $_iHotInterval;
+    protected $_iHotThresholdContent;
+    protected $_iHotThresholdComment;
+    protected $_iHotThresholdVote;
+    protected $_aHotSources;
+    protected $_aHotSourcesList;
+    protected $_aHotList;
+
+    protected $_bEditorToolbar;
+    protected $_bEditorAutoAttach;
+    protected $_iLimitAttachLinks;
+
+    protected $_bUnhideRestored;
+
+    protected $_sStorageObject;
+    protected $_sTranscoderObjectPreview;
+    protected $_sTranscoderObjectView;
+    protected $_aPhotoUploaders;
+    protected $_aVideoUploaders;
+    protected $_aItemToUploader;
+
+    protected $_sMenuItemManage;
+    protected $_sMenuItemActions;
+
+    protected $_aRepostDefaults;
+
+    protected $_iTimelineVisibilityThreshold;
+    protected $_aPregPatterns;
+
+    protected $_sSessionKeyType;
+
+    /**
+     * Constructor
+     */
+    public function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $this->CNF = array (
+            'ICON' => 'far clock col-green1',
+
+            // database tables
+            'TABLE_ENTRIES' => $aModule['db_prefix'] . 'events',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => 'object_owner_id',
+            'FIELD_OWNER_ID' => 'owner_id',
+            'FIELD_SYSTEM' => 'system',
+            'FIELD_OBJECT_ID' => 'object_id', //Note. For 'Direct Timeline Posts' ('system' db field == 0) this field contains post's author profile ID.
+            'FIELD_OBJECT_OWNER_ID' => 'object_owner_id',
+            'FIELD_OBJECT_PRIVACY_VIEW' => 'object_privacy_view',
+            'FIELD_CF' => 'object_cf',
+            'FIELD_ADDED' => 'date',
+            'FIELD_PUBLISHED' => 'published',
+            'FIELD_TITLE' => 'title',
+            'FIELD_TEXT' => 'description',
+            'FIELD_ATTACHMENTS' => 'attachments',
+            'FIELD_LINK' => 'link',
+            'FIELD_PHOTO' => 'photo',
+            'FIELD_VIDEO' => 'video',
+            'FIELD_FILE' => 'file',
+            'FIELD_STATUS' => 'status',
+            'FIELD_STATUS_ADMIN' => 'status_admin',
+            'FIELD_STICKED' => 'sticked',
+            'FIELD_DATE' => 'date',
+            'FIELD_REACTED' => 'reacted',
+            'FIELD_ANONYMOUS' => 'anonymous',
+            'FIELD_CONTROLS' => 'controls',
+            'FIELD_LOCATION' => 'location',
+            'FIELD_LOCATION_PREFIX' => 'location',
+            'FIELDS_DELAYED_PROCESSING' => 'video', // can be array of fields or comma separated string of field names
+
+            // page URIs
+            'URI_VIEW_LIST' => 'timeline-view',
+            'URI_VIEW_ENTRY' => 'item',
+
+            'URL_HOME' => 'page.php?i=timeline-view-home',
+
+            // some params
+            'PARAM_AUTO_APPROVE' => $this->_sName . '_enable_auto_approve',
+
+            // objects
+            'OBJECT_STORAGE' => $this->_sName . '_photos',
+            'OBJECT_STORAGE_VIDEOS' => $this->_sName . '_videos',
+            'OBJECT_STORAGE_FILES' => $this->_sName . '_files',
+            'OBJECT_IMAGES_TRANSCODER_PREVIEW' => $this->_sName . '_photos_preview',
+            'OBJECT_VIDEOS_TRANSCODER_PREVIEW' => $this->_sName . '_proxy_preview',
+            'OBJECT_VIDEOS_TRANSCODERS' => array(
+                'poster' => 'bx_timeline_videos_poster_view', 
+                'poster_preview' => 'bx_timeline_videos_poster_preview', 
+            	'mp4' => 'bx_timeline_videos_mp4', 
+            	'mp4_hd' => 'bx_timeline_videos_mp4_hd'
+            ),
+            'OBJECT_UPLOADER_PHOTO_SIMPLE' => $this->_sName . '_simple_photo',
+            'OBJECT_UPLOADER_PHOTO_HTML5' => $this->_sName . '_html5_photo',
+            'OBJECT_UPLOADER_VIDEO_SIMPLE' => $this->_sName . '_simple_video',
+            'OBJECT_UPLOADER_VIDEO_HTML5' => $this->_sName . '_html5_video',
+            'OBJECT_UPLOADER_VIDEO_RECORD' => $this->_sName . '_record_video',
+            'OBJECT_UPLOADER_FILE_HTML5' => $this->_sName . '_html5_file',
+            'OBJECT_UPLOADER_FILE_SIMPLE' => $this->_sName . '_simple_file',
+            'OBJECT_GRID_ADMINISTRATION' => $this->_sName . '_administration',
+            'OBJECT_GRID_COMMON' => $this->_sName . '_common',
+            'OBJECT_GRID_MUTE' => $this->_sName . '_mute',
+            'OBJECT_MENU_ENTRY_ATTACHMENTS' => $this->_sName . '_menu_post_attachments',
+            'OBJECT_METATAGS' => $this->_sName,
+            'OBJECT_COMMENTS' => $this->_sName,
+            'OBJECT_NOTES' => $this->_sName . '_notes',
+            'OBJECT_VIEWS' => $this->_sName,
+            'OBJECT_VOTES' => $this->_sName,
+            'OBJECT_REACTIONS' => $this->_sName . '_reactions',
+            'OBJECT_SCORES' => $this->_sName,
+            'OBJECT_REPORTS' => $this->_sName,
+            'OBJECT_PRIVACY_VIEW' => $this->_sName . '_privacy_view',
+            'OBJECT_CONNECTIONS_MUTE' => $this->_sName . '_mute',
+
+            // some language keys
+            'T' => array (
+                'txt_status_deleted' => '_bx_timeline_txt_status_deleted',
+                'txt_sample_single' => '_bx_timeline_txt_sample',
+                'txt_sample_single_ext' => '_bx_timeline_txt_sample_ext',
+            	'txt_sample_comment_single' => '_bx_timeline_txt_sample_comment_single',
+                'txt_sample_vote_single' => '_bx_timeline_txt_sample_vote_single',
+                'txt_sample_reaction_single' => '_bx_timeline_txt_sample_reaction_single',
+                'txt_sample_score_up_single' => '_bx_timeline_txt_sample_score_up_single',
+                'txt_sample_score_down_single' => '_bx_timeline_txt_sample_score_down_single',
+                'txt_sample_with_link' => '_bx_timeline_txt_sample_with_link',
+                'txt_sample_with_image' => '_bx_timeline_txt_sample_with_image',
+                'txt_sample_with_video' => '_bx_timeline_txt_sample_with_video',
+                'txt_sample_with_file' => '_bx_timeline_txt_sample_with_file',
+                'txt_sample_with_media' => '_bx_timeline_txt_sample_with_media',
+                'grid_action_err_delete' => '_bx_timeline_grid_action_err_delete', 
+                'grid_txt_account_manager' => '_bx_timeline_grid_txt_account_manager',
+                'filter_item_active' => '_bx_timeline_grid_filter_item_title_adm_active',
+            	'filter_item_hidden' => '_bx_timeline_grid_filter_item_title_adm_hidden',
+                'filter_item_pending' => '_bx_timeline_grid_filter_item_title_adm_pending',
+            	'filter_item_select_one_filter1' => '_bx_timeline_grid_filter_item_title_adm_select_one_filter1',
+                'form_input_title_object_privacy_view' => '_bx_timeline_form_post_input_object_privacy_view',
+                'option_vp_auto' => '_bx_timeline_option_videos_preload_auto',
+                'option_vp_metadata' => '_bx_timeline_option_videos_preload_metadata',
+                'option_vp_none' => '_bx_timeline_option_videos_preload_none',
+                'option_vap_off' => '_bx_timeline_option_videos_autoplay_off',
+                'option_vap_on_mute' => '_bx_timeline_option_videos_autoplay_on_mute',
+                'option_vap_on' => '_bx_timeline_option_videos_autoplay_on',
+                'option_al_gallery' => '_bx_timeline_option_attachments_layout_gallery',
+                'option_al_showcase' => '_bx_timeline_option_attachments_layout_showcase',
+                'option_hs_content' => '_bx_timeline_option_hot_sources_content',
+                'option_hs_comment' => '_bx_timeline_option_hot_sources_comment',
+                'option_hs_vote' => '_bx_timeline_option_hot_sources_vote',
+            ),
+        );
+
+        $this->_aTypeToFormDisplay = array(
+            BX_BASE_MOD_NTFS_TYPE_OWNER => 'form_display_post_add_profile',
+            BX_BASE_MOD_NTFS_TYPE_PUBLIC => 'form_display_post_add_public',
+            BX_TIMELINE_TYPE_CHANNELS => 'form_display_post_add',
+            BX_TIMELINE_TYPE_FEED => 'form_display_post_add',
+            BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS => 'form_display_post_add'
+        );
+
+        $this->_aPrefixes = array(
+            'style' => 'bx-tl',
+            'language' => '_bx_timeline',
+            'option' => 'bx_timeline_',
+            'common_post' => 'timeline_common_',
+            'cache_list_hot' => 'bx_timeline_list_hot',
+            'cache_item' => 'bx_timeline_item_'
+        );
+
+        $this->_aObjects = array_merge($this->_aObjects, array(
+            'comment' => $this->CNF['OBJECT_COMMENTS'],
+            'view' => $this->CNF['OBJECT_VIEWS'],
+            'vote' => $this->CNF['OBJECT_VOTES'],
+            'reaction' => $this->CNF['OBJECT_REACTIONS'],
+            'score' => $this->CNF['OBJECT_SCORES'],
+            'report' => $this->CNF['OBJECT_REPORTS'],
+            'privacy_view' => $this->CNF['OBJECT_PRIVACY_VIEW'],
+            'metatags' => $this->_sName,
+
+            'storage_photos' => $this->CNF['OBJECT_STORAGE'],
+            'storage_videos' => $this->CNF['OBJECT_STORAGE_VIDEOS'],
+            'storage_files' => $this->CNF['OBJECT_STORAGE_FILES'],
+            'transcoder_photos_preview' => $this->CNF['OBJECT_IMAGES_TRANSCODER_PREVIEW'],
+            'transcoder_photos_view' => $this->_sName . '_photos_view',
+            'transcoder_photos_medium' => $this->_sName . '_photos_medium',
+            'transcoder_photos_big' => $this->_sName . '_photos_big',
+            'transcoder_videos_preview' => $this->CNF['OBJECT_VIDEOS_TRANSCODER_PREVIEW'],
+            'transcoder_videos_poster' => $this->CNF['OBJECT_VIDEOS_TRANSCODERS']['poster'],
+            'transcoder_videos_mp4' => $this->CNF['OBJECT_VIDEOS_TRANSCODERS']['mp4'],
+            'transcoder_videos_mp4_hd' => $this->CNF['OBJECT_VIDEOS_TRANSCODERS']['mp4_hd'],
+            'transcoder_videos_photo_view' => $this->_sName . '_videos_photo_view',
+            'transcoder_videos_photo_big' => $this->_sName . '_videos_photo_big',
+
+            'page_item_brief' => $this->_sName . '_item_brief',
+
+            'menu_view' => $this->_sName . '_menu_view',
+            'menu_feeds' => $this->_sName . '_menu_feeds',
+            'menu_set_feeds' => $this->_sName . '_menu_feeds',
+            'menu_item_manage' => $this->_sName . '_menu_item_manage',
+            'menu_item_actions' => $this->_sName . '_menu_item_actions',
+            'menu_item_actions_all' => $this->_sName . '_menu_item_actions_all',
+            'menu_item_counters' => $this->_sName . '_menu_item_counters',
+            'menu_item_meta' => $this->_sName . '_menu_item_meta',
+            'menu_post_attachments' => $this->CNF['OBJECT_MENU_ENTRY_ATTACHMENTS'],
+
+            'form_post' => $this->_sName . '_post',
+            'form_attach_link' => $this->_sName . '_attach_link',
+            'form_repost' => $this->_sName . '_repost',
+            'form_display_post_add' => $this->_sName . '_post_add',
+            'form_display_post_add_public' => $this->_sName . '_post_add_public',
+            'form_display_post_add_profile' => $this->_sName . '_post_add_profile',
+            'form_display_post_edit' => $this->_sName . '_post_edit',
+            'form_display_post_view' => $this->_sName . '_post_view',
+            'form_display_attach_link_add' => $this->_sName . '_attach_link_add',
+            'form_display_repost_with' => $this->_sName . '_repost_with',
+            'form_display_repost_to' => $this->_sName . '_repost_to',
+
+            'grid_mute' => $this->CNF['OBJECT_GRID_MUTE'],
+
+            'connection_mute' => $this->CNF['OBJECT_CONNECTIONS_MUTE'],
+        ));
+
+        $this->_aHandlerDescriptor = array('module_name' => '', 'module_method' => '', 'module_class' => '', 'groupable' => '', 'group_by' => '');
+        $this->_sHandlersMethod = 'get_timeline_data';
+
+        $this->_aPhotoUploaders = array($this->CNF['OBJECT_UPLOADER_PHOTO_SIMPLE']);
+        $this->_aVideoUploaders = array($this->CNF['OBJECT_UPLOADER_VIDEO_SIMPLE']);
+        $this->_aFilesUploaders = array($this->CNF['OBJECT_UPLOADER_FILE_SIMPLE']);
+
+        $this->_aItemToUploader = array(
+            'add-photo-simple' => $this->CNF['OBJECT_UPLOADER_PHOTO_SIMPLE'],
+            'add-photo-html5' => $this->CNF['OBJECT_UPLOADER_PHOTO_HTML5'],
+            'add-video-simple' => $this->CNF['OBJECT_UPLOADER_VIDEO_SIMPLE'],
+            'add-video-html5' => $this->CNF['OBJECT_UPLOADER_VIDEO_HTML5'],
+            'add-video-record' => $this->CNF['OBJECT_UPLOADER_VIDEO_RECORD'],
+            'add-file-simple' => $this->CNF['OBJECT_UPLOADER_FILE_SIMPLE'],
+            'add-file-html5' => $this->CNF['OBJECT_UPLOADER_FILE_HTML5'],
+        );
+
+        $this->_bJsMode = false;
+        $this->_aJsClasses = array(
+            'main' => 'BxTimelineMain',
+            'view' => 'BxTimelineView',
+            'post' => 'BxTimelinePost',
+            'repost' => 'BxTimelineRepost',
+            'manage_tools' => 'BxTimelineManageTools'
+        );
+        $this->_aJsObjects = array(
+            'view' => 'oTimelineView',
+            'post' => 'oTimelinePost',
+            'repost' => 'oTimelineRepost',
+            'manage_tools' => 'oBxTimelineManageTools'
+        );
+
+        $this->_aGridObjects = array(
+            'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+            'common' => $this->CNF['OBJECT_GRID_COMMON']
+        );
+
+        $sHp = str_replace('_', '-', $this->_sName);
+        $sHpT = BX_TIMELINE_VIEW_TIMELINE;
+        $sHpO = BX_TIMELINE_VIEW_OUTLINE;
+        $this->_aHtmlIds = array(
+            'view' => array(
+                'edit_form' => $sHp . '-edit-',
+                'attach_link_form_field' => $sHp . '-attach-link-form-field-',
+
+                'menu_popup' => $sHp . '-menu-popup-',
+
+                'video_iframe' => $sHp . '-video-iframe-',
+                'video' => $sHp . '-video-',
+
+                'live_update_popup' => $sHp . '-live-update-popup-',
+            ),
+            'post' => array(
+                'attach_link_popup' =>  $sHp . '-attach-link-popup',
+                'attach_link_form_field' => $sHp . '-attach-link-form-field-',
+                'attach_link_item' => $sHp . '-attach-link-item-',
+                'textarea' => $sHp . '-textarea-',
+
+                'main_' . $sHpT => $sHp . '-' . $sHpT,
+                'main_' . $sHpO => $sHp . '-' . $sHpO,
+            ),
+            'repost' => array(
+                'main' => $sHp . '-repost-',
+                'counter' => $sHp . '-repost-counter-',
+                'by_popup' => $sHp . '-repost-by-',
+                'with_popup' => $sHp . '-repost-with',
+                'to_popup' => $sHp . '-repost-to',
+            )
+        );
+
+        $this->_aRepostDefaults = array(
+            'do' => 'repost',
+
+            'show_do_repost_as_button' => false,
+            'show_do_repost_as_button_small' => false,
+            'show_do_repost_icon' => true,
+            'show_do_repost_text' => false,
+
+            //--- Counter
+            'show_counter_label_icon' => false,
+            'show_counter_label_text' => true,
+            'show_counter' => true,
+
+            //--- JS script
+            'show_script' => true,
+
+            //--- Icons
+            'icon_do_repost' => 'redo',
+            'icon_do_repost_with' => 'redo',
+            'icon_do_repost_to' => 'redo',
+
+            //--- Texts
+            'text_do_repost' => '_bx_timeline_txt_do_repost',
+            'text_do_repost_with' => '_bx_timeline_txt_do_repost_with',
+            'text_do_repost_to' => '_bx_timeline_txt_do_repost_to',
+
+            //--- Templates
+            'template_do_repost_label' => '',
+            'template_do_repost_label_name' => 'repost_do_repost_label.html',
+        );
+
+        $this->_iTimelineVisibilityThreshold = 0;
+
+        $this->_aPregPatterns = array(
+            "meta_title" => "/<title>(.*)<\/title>/",
+            "meta_description" => "/<meta[\s]+[^>]*?name[\s]?=[\s\"\']+description[\s\"\']+content[\s]?=[\s\"\']+(.*?)[\"\']+.*?>/",
+            "url" => "/(([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%#\/\.\w\-_!\(\)]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?/"
+        );
+
+        $this->_aBriefCardsTags = array('a', 'b', 'i');
+
+        $this->_sSessionKeyType = $this->_sName . '_type_';
+
+        $this->_aHotSourcesList = [
+            BX_TIMELINE_HFS_CONTENT, 
+            BX_TIMELINE_HFS_COMMENT,
+            BX_TIMELINE_HFS_VOTE
+        ];
+    }
+
+    public function init(&$oDb)
+    {
+    	parent::init($oDb);
+
+    	$sOptionPrefix = $this->getPrefix('option');
+    	$this->_bAllowEdit = getParam($sOptionPrefix . 'enable_edit') == 'on';
+        $this->_bAllowDelete = getParam($sOptionPrefix . 'enable_delete') == 'on';
+        $this->_bShowAll = getParam($sOptionPrefix . 'enable_show_all') == 'on';
+        $this->_bCountAllViews = getParam($sOptionPrefix . 'enable_count_all_views') == 'on';
+        $this->_bRepostOwnActions = getParam($sOptionPrefix . 'enable_repost_own_actions') == 'on';
+        $this->_bHideUponDelete = getParam($sOptionPrefix . 'enable_hide_upon_delete') == 'on';
+
+        $this->_bCacheItem = getParam($sOptionPrefix . 'enable_cache_item') == 'on';
+        $this->_sCacheItemEngine = getParam($sOptionPrefix . 'cache_item_engine');
+        $this->_iCacheItemLifetime = (int)getParam($sOptionPrefix . 'cache_item_lifetime');
+
+        $this->_aPerPage = array(
+            'default' => (int)getParam($sOptionPrefix . 'events_per_page'),
+            'profile' => (int)getParam($sOptionPrefix . 'events_per_page_profile'),
+            'account' => (int)getParam($sOptionPrefix . 'events_per_page_account'),
+            'home' => (int)getParam($sOptionPrefix . 'events_per_page_home'),
+            'preload' => (int)getParam($sOptionPrefix . 'events_per_preload')
+    	);
+
+        $this->_bInfScroll = getParam($sOptionPrefix . 'enable_infinite_scroll') == 'on';
+        $this->_iInfScrollAutoPreloads = (int)getParam($sOptionPrefix . 'auto_preloads');
+
+        $this->_iRssLength = (int)getParam($sOptionPrefix . 'rss_length');       
+
+        $this->_bBriefCards = getParam($sOptionPrefix . 'enable_brief_cards') == 'on';
+
+        $this->_iLiveUpdateLength = 10;
+        $this->_iCharsDisplayMinTitle = (int)getParam($sOptionPrefix . 'title_chars_short');
+        $this->_iCharsDisplayMaxTitle = (int)getParam($sOptionPrefix . 'title_chars');
+
+        $this->_sVideosPreload = getParam($sOptionPrefix . 'videos_preload');
+        $this->_sVideosAutoplay = getParam($sOptionPrefix . 'videos_autoplay');
+
+        $this->_iPreloadCommentsMax = 7;
+        $this->_iPreloadComments = (int)getParam($sOptionPrefix . 'preload_comments');
+        if($this->_iPreloadComments > $this->_iPreloadCommentsMax)
+            $this->_iPreloadComments = $this->_iPreloadCommentsMax;
+
+        $this->_bJumpTo = getParam($sOptionPrefix . 'enable_jump_to_switcher') == 'on';
+        $this->_bSortByReaction = getParam($sOptionPrefix . 'enable_sort_by_reaction') == 'on';
+        $this->_bSortByUnread = getParam($sOptionPrefix . 'enable_sort_by_unread') == 'on';
+        $this->_sAttachmentsLayout = getParam($sOptionPrefix . 'attachments_layout');
+
+        $this->_bHot = getParam($sOptionPrefix . 'enable_hot') == 'on';
+        $this->_iHotThresholdContent = (int)getParam($sOptionPrefix . 'hot_threshold_age');
+        $this->_iHotThresholdComment = (int)getParam($sOptionPrefix . 'hot_threshold_comment');
+        $this->_iHotThresholdVote = (int)getParam($sOptionPrefix . 'hot_threshold_vote');
+        $this->_iHotInterval = (int)getParam($sOptionPrefix . 'hot_interval');
+        $this->_aHotSources = explode(',', getParam($sOptionPrefix . 'hot_sources'));
+        $this->_aHotList = $this->_bHot ? $this->_oDb->getHot() : array();
+
+        $this->_bEditorToolbar = getParam($sOptionPrefix . 'enable_editor_toolbar') == 'on';
+        $this->_bEditorAutoAttach = getParam($sOptionPrefix . 'editor_auto_attach_insertion') == 'on';
+        $this->_iLimitAttachLinks = (int)getParam($sOptionPrefix . 'limit_attach_links');
+
+        $this->_bUnhideRestored = false;
+    }
+
+    /**
+     * Generate name from parameters.
+     * 
+     * @param type $aParams - parameters whose values will be used during generation.
+     * @param type $aRules - generation rules.
+     * @return string
+     */
+    protected function getNameView($aParams, $aRules = array())
+    {
+        $bWithView = !isset($aRules['with_view']) || $aRules['with_view'] === true;
+        $bWithType = !isset($aRules['with_type']) || $aRules['with_type'] === true;
+        $bWithOwner = isset($aRules['with_owner']) && $aRules['with_owner'] === true;
+        $sGlue = !empty($aRules['glue']) ? $aRules['glue'] : '_';
+
+        $aAddons = array();
+        if(!empty($aParams['name']))
+            $aAddons[] = bx_process_output($aParams['name']);
+        else {
+            if($bWithView && !empty($aParams['view']))
+                $aAddons[] = bx_process_output($aParams['view']);
+
+            if($bWithType && !empty($aParams['type']))
+                $aAddons[] = bx_process_output($aParams['type']);
+        }
+
+        if($bWithOwner)
+            $aAddons[] = (int)$aParams['owner_id'];
+
+        return !empty($aAddons) ? implode($sGlue, $aAddons) : '';
+    }
+
+    /**
+     * Generates unique JS object name for View events block.
+     * 
+     * @param array $aParams - an array with browsing params received in View block service method
+     * @return string with JS object name
+     */
+    public function getJsObjectView($aParams = array())
+    {
+        return parent::getJsObject('view') . bx_gen_method_name($this->getNameView($aParams));
+    }
+
+    public function getHtmlIdView($sKey, $aParams, $aRules = array())
+    {
+        $bWhole = !isset($aRules['whole']) || $aRules['whole'] === true;
+        $sGlue = !empty($aRules['glue']) ? $aRules['glue'] : '_';
+
+        return str_replace($sGlue, '-', $this->_sName  . $sGlue . $sKey . $sGlue . $this->getNameView($aParams, $aRules) . (!$bWhole ? $sGlue : ''));
+    }
+
+    public function isAllowEdit()
+    {
+        return $this->_bAllowEdit;
+    }
+
+    public function isAllowDelete()
+    {
+        return $this->_bAllowDelete;
+    }
+
+    public function isInfiniteScroll()
+    {
+        return $this->_bInfScroll;
+    }
+
+    public function isShowAll()
+    {
+        return $this->_bShowAll;
+    }
+
+    public function isCountAllViews()
+    {
+        return $this->_bCountAllViews;
+    }
+
+    public function isRepostOwnActions()
+    {
+        return $this->_bRepostOwnActions;
+    }
+
+    public function isHideUponDelete()
+    {
+        return $this->_bHideUponDelete;
+    }
+
+    public function isBriefCards()
+    {
+        return $this->_bBriefCards;
+    }
+
+    public function isJumpTo()
+    {
+        return $this->_bJumpTo;
+    }
+
+    public function isSortByReaction()
+    {
+        return $this->_bSortByReaction;
+    }
+
+    public function isSortByUnread()
+    {
+        return $this->_bSortByUnread;
+    }
+
+    public function isHot()
+    {
+        return $this->_bHot;
+    }
+
+    public function getHotSourcesList()
+    {
+        return $this->_aHotSourcesList;
+    }
+
+    public function getHotSources()
+    {
+        return $this->_aHotSources;
+    }
+
+    public function isHotSource($sName)
+    {
+        return in_array($sName, $this->_aHotSources);
+    }
+
+    public function getHotThreshold($sSource)
+    {
+        if(!in_array($sSource, [BX_TIMELINE_HFS_CONTENT, BX_TIMELINE_HFS_COMMENT, BX_TIMELINE_HFS_VOTE]))
+            return false;
+
+        return $this->{'_iHotThreshold' . ucfirst($sSource)};
+    }
+
+    public function isHotEvent($iEventId)
+    {
+        return in_array($iEventId, $this->_aHotList);
+    }
+
+    public function isEditorToolbar()
+    {
+    	return $this->_bEditorToolbar;
+    }
+
+    public function isEditorAutoAttach()
+    {
+    	return $this->_bEditorAutoAttach;
+    }
+
+    public function isUnhideRestored()
+    {
+        return $this->_bUnhideRestored;
+    }
+
+    public function isCacheItem()
+    {
+        return $this->_bCacheItem;
+    }
+
+    public function getCacheItemEngine()
+    {
+        return $this->_sCacheItemEngine;
+    }
+
+    public function getCacheItemLifetime()
+    {
+        return $this->_iCacheItemLifetime;
+    }
+
+    public function getCacheItemKey($iId, $sPostfix = '')
+    {
+        return $this->getPrefix('cache_item') . $iId . (bx_is_mobile() ? '_m' : '') . '_r' . bx_get_device_pixel_ratio() . '_' . (!empty($sPostfix) ? '_' . $sPostfix : '') . '.php';
+    }
+
+    public function getCacheHotKey()
+    {
+        return $this->getPrefix('cache_list_hot');
+    }
+
+    public function getPostFormDisplay($sType)
+    {
+        if(empty($sType) || !array_key_exists($sType, $this->_aTypeToFormDisplay))
+            $sType = BX_TIMELINE_TYPE_DEFAULT;
+
+        return $this->_aTypeToFormDisplay[$sType];
+    }
+
+    public function getUploaders($sField)
+    {
+        $aResult = array();
+
+        switch($sField) {
+            case 'photo':
+                $aResult = $this->_aPhotoUploaders;
+                break;
+            case 'video':
+                $aResult = $this->_aVideoUploaders;
+                break;
+            case 'file':
+                $aResult = $this->_aFilesUploaders;
+                break;
+        }
+
+        return $aResult;
+    }
+
+    public function getUploaderByMenuItem($sMenuItem)
+    {
+        if(!isset($this->_aItemToUploader[$sMenuItem]))
+            return false;
+    
+        return $this->_aItemToUploader[$sMenuItem];
+    }
+
+    public function getPerPage($sType = 'default')
+    {
+        if($this->isInfiniteScroll())
+            $sType = 'preload';
+
+        return parent::getPerPage($sType);
+    }
+
+    public function getExtenalsEvery($sType = 'default')
+    {
+        if($this->isInfiniteScroll())
+            $sType .= '_preload';
+
+        $iExtenalsEvery = (int)getParam($this->getPrefix('option') . 'extenals_every_' . $sType);
+        if(!$iExtenalsEvery)
+            return $iExtenalsEvery;
+
+        $iPerPage = $this->getPerPage($sType);
+        if(empty($iPerPage))
+            $iPerPage = $this->getPerPage();
+
+        if($iExtenalsEvery > $iPerPage)
+            $iExtenalsEvery = $iPerPage;
+
+        return $iExtenalsEvery;
+    }
+
+    public function getAutoPreloads()
+    {
+        return $this->_iInfScrollAutoPreloads;
+    }
+
+    public function getRssLength()
+    {
+        return $this->_iRssLength;
+    }
+
+    public function getLiveUpdateLength()
+    {
+        return $this->_iLiveUpdateLength;
+    }
+
+    public function getCharsDisplayMinTitle()
+    {
+        return $this->_iCharsDisplayMinTitle;
+    }
+
+    public function getCharsDisplayMaxTitle()
+    {
+        return $this->_iCharsDisplayMaxTitle;
+    }
+
+    public function getBriefCardsTags($bAsString = false)
+    {
+        return !$bAsString ? $this->_aBriefCardsTags : '<' . implode('><', $this->_aBriefCardsTags) . '>';
+    }
+
+    public function getVideosPreload()
+    {
+        return $this->_sVideosPreload;
+    }
+
+    public function getVideosAutoplay()
+    {
+        return $this->_sVideosAutoplay;
+    }
+
+    public function getPreloadComments()
+    {
+        return $this->_iPreloadComments;
+    }
+
+    public function getAttachmentsLayout()
+    {
+        return $this->_sAttachmentsLayout;
+    }
+
+    public function getHotInterval()
+    {
+        return $this->_iHotInterval;
+    }
+
+    public function getLimitAttachLinks()
+    {
+        return $this->_iLimitAttachLinks;
+    }
+
+    public function getRepostDefaults()
+    {
+        return $this->_aRepostDefaults;
+    }
+
+    public function getPregPattern($sType)
+    {
+        return $this->_aPregPatterns[$sType];
+    }
+
+    /**
+     * Ancillary functions
+     */
+    public function getTitle($s, $mixedProfile = false, $sMethodLength = 'getCharsDisplayMaxTitle')
+    {
+        if(get_mb_substr($s, 0, 1) == '_' && strcmp($s, _t($s)) != 0)
+            return $s;
+
+        if($mixedProfile !== false) {
+            if(is_numeric($mixedProfile))
+                $mixedProfile = BxDolProfile::getInstanceMagic((int)$mixedProfile);
+
+            if($mixedProfile instanceof BxDolProfile)
+                $s = bx_replace_markers($s, array(
+                    'profile_name' => $mixedProfile->getDisplayName()
+                ));
+        }
+
+        if(!method_exists($this, $sMethodLength))
+            $sMethodLength = 'getCharsDisplayMaxTitle';
+
+        return strmaxtextlen($s, $this->$sMethodLength(), '...');
+    }
+
+    public function getTitleShort($s, $mixedProfile = false)
+    {
+        return $this->getTitle($s, $mixedProfile, 'getCharsDisplayMinTitle');
+    }
+
+    public function getTitleDefault($bL, $bP, $bV, $bF)
+    {
+        $sResult = '';
+
+        if($bL && !$bP && !$bV && !$bF)
+            $sResult = 'link';
+        else if(!$bL && $bP && !$bV && !$bF)
+            $sResult = 'image';
+        else if(!$bL && !$bP && $bV && !$bF)
+            $sResult = 'video';
+        else if(!$bL && !$bP && !$bV && $bF)
+            $sResult = 'file';
+        else 
+            $sResult = 'media';
+
+        return $this->CNF['T']['txt_sample_with_' . $sResult];
+    }
+
+    public function getViewUrl($iOwnerId, $bAbsolute = true)
+    {
+        $sUrl = BxDolPermalinks::getInstance()->permalink('page.php?i=' . $this->CNF['URI_VIEW_LIST'], ['id' => $iOwnerId]);
+        return $bAbsolute ? bx_absolute_url($sUrl) : $sUrl;
+    }
+
+    public function getHomeViewUrl($bAbsolute = true)
+    {
+        $sUrl = BxDolPermalinks::getInstance()->permalink($this->CNF['URL_HOME']);
+        return $bAbsolute ? bx_absolute_url($sUrl) : $sUrl;
+    }
+
+    public function getItemViewUrl($aEvent, $bAbsolute = true)
+    {
+        $sUrl = BxDolPermalinks::getInstance()->permalink('page.php?i=' . $this->CNF['URI_VIEW_ENTRY'], ['id' => $aEvent['id']]);
+        return $bAbsolute ? bx_absolute_url($sUrl) : $sUrl;
+    }
+
+    public function getLiveUpdateKey($aParams)
+    {
+        return $this->getName() . '_live_update_' . $this->getNameView($aParams, array('with_owner' => true));
+    }
+
+    public function isCommon($sType, $sAction)
+    {
+        return !$this->isSystem($sType, $sAction);
+    }
+
+    public function isSystem($sType, $sAction)
+    {
+        $sPrefix = $this->getPrefix('common_post');
+        return strpos($sType, $sPrefix) === false && !empty($sAction);
+    }
+
+    public function getSystemData(&$aEvent, $aBrowseParams = array())
+    {
+        $aHandler = $this->getHandler($aEvent);
+        if($aHandler === false)
+            return false;
+
+        return BxDolService::call($aHandler['module_name'], $aHandler['module_method'], array($aEvent, $aBrowseParams), $aHandler['module_class']);
+    }
+
+    public function getSystemDataByDescriptor($sType, $sAction, $iObjectId)
+    {
+    	$aDescriptor = array(
+            'type' => $sType, 
+            'action' => $sAction,
+            'object_id' => $iObjectId
+    	);
+    	return $this->getSystemData($aDescriptor);
+    }
+
+    public function isEqualUrls($sUrl1, $sUrl2)
+    {
+        $sUrl1 = trim($sUrl1, "/");
+        $sUrl2 = trim($sUrl2, "/");
+
+        return strncmp($sUrl1, $sUrl2, strlen($sUrl1)) === 0;
+    }
+
+    public function addBrowseParams($sUrl, $aParams, $sKey = 'bp')
+    {
+        return bx_append_url_params($sUrl, [$sKey => base64_encode(json_encode($aParams))]);
+    }
+
+    public function getBrowseParams($sValue)
+    {
+        return json_decode(base64_decode(urldecode($sValue)), true);
+    }
+
+    public function setUserChoice($aChoices = array())
+    {
+        if(!isLogged() || empty($aChoices))
+            return;
+
+        $iUserId = bx_get_logged_profile_id();
+
+        $oSession = BxDolSession::getInstance();
+        foreach($aChoices as $sKey => $mixedValue) {
+            $sField = '_sSessionKey' . bx_gen_method_name($sKey);
+            if(isset($this->$sField) && !empty($mixedValue))
+                $oSession->setValue($this->$sField . $iUserId, $mixedValue);
+        }
+    }
+
+    public function getUserChoice($sKey, $iUserId = 0)
+    {
+        $sField = '_sSessionKey' . bx_gen_method_name($sKey);
+        if(!isLogged() || !isset($this->$sField))
+            return false;
+
+        if(!$iUserId)
+            $iUserId = bx_get_logged_profile_id();
+
+        return BxDolSession::getInstance()->getValue($this->$sField . $iUserId);
+    }
+
+    public function prepareParam($sName, $sPattern = "/^[\d\w_]+$/")
+    {
+        return $this->processParam(bx_get($sName), $sPattern);
+    }
+
+    public function prepareParamWithDefault($sName, $sDefault, $sPattern = "/^[\d\w_]+$/")
+    {
+        return ($sValue = $this->prepareParam($sName, $sPattern)) != '' ? $sValue : $sDefault;
+    }
+
+    public function processParam($sValue, $sPattern = "/^[\d\w_]+$/")
+    {
+        return bx_process_url_param($sValue, $sPattern);
+    }
+
+    public function processParamWithDefault($sValue, $sDefault, $sPattern = "/^[\d\w_]+$/")
+    {
+        return ($sValue = $this->processParam($sValue, $sPattern)) != '' ? $sValue : $sDefault;
+    }
+}
+
+/** @} */

+ 28 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineMenuItemActions.php

@@ -369,6 +369,34 @@ class BxTimelineMenuItemActions extends BxTemplMenuCustom
         return parent::_getMenuItemDefault ($aItem);
     }
 
+    protected function _getMenuItemDefaultApi ($aItem)
+    {
+        $sType = $this->_aEvent['type'];
+        $sAction = $this->_aEvent['action'];
+
+        if(!empty($aItem['submenu']) && ($oSubmenu = BxDolMenu::getObjectInstance($aItem['submenu'])) !== false) {
+            $sMethod = 'setEventById';
+            if(method_exists($oSubmenu, $sMethod))
+                $oSubmenu->$sMethod($this->_iEvent);
+
+            $aItem = array_merge($aItem, [
+                'content_type' => 'submenu',
+                'submenu' => $oSubmenu->getCodeAPI()
+            ]);
+        }
+
+        switch($aItem['name']) {
+            case 'item-comment':
+                $aItem['link'] = $this->_oModule->_oConfig->getItemViewUrl($this->_aEvent);
+                if($this->_oModule->_oConfig->isSystem($sType, $sAction) && !empty($this->_aEvent['content']['url']))
+                    $aItem['link'] = $this->_aEvent['content']['url'];
+                $aItem['link'] = bx_api_get_relative_url($aItem['link']);
+                break;
+        }
+
+        return $aItem;
+    }
+
     protected function _getMenuItemElementApi($aItem, $aElement)
     {
         if(!$this->_bIsApi)

+ 237 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineMenuItemShare.php

@@ -0,0 +1,237 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * 'Item' menu.
+ */
+class BxTimelineMenuItemShare extends BxTemplMenu
+{
+    protected $_sModule;
+    protected $_oModule;
+
+    protected $_iEvent;
+    protected $_aEvent;
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->_sModule = 'bx_timeline';
+        $this->_oModule = BxDolModule::getInstance($this->_sModule);
+
+        parent::__construct($aObject, $this->_oModule->_oTemplate);
+
+        $iContentId = 0;
+        if(bx_get('content_id') !== false)
+            $iContentId = bx_process_input(bx_get('content_id'), BX_DATA_INT);
+
+        if(!empty($iContentId)) {
+            $aBrowseParams = array('name' => '', 'view' => '', 'type' => '');
+            foreach($aBrowseParams as $sKey => $sValue)
+                if(bx_get($sKey) !== false)
+                    $aBrowseParams[$sKey] = $this->_oModule->_oConfig->prepareParam($sKey);
+
+            $this->setEventById($iContentId, $aBrowseParams);
+        }
+    }
+
+    public function setEventById($iEventId, $aBrowseParams = array())
+    {
+    	$this->_iEvent = $iEventId;
+    	$this->_aEvent = $this->_oModule->_oDb->getEvents(array('browse' => 'id', 'value' => $this->_iEvent));
+
+        $this->_setBrowseParams($aBrowseParams);
+
+        $sRepostOnclick = $sEtSend = '';
+        if(!empty($this->_aEvent) && is_array($this->_aEvent)) {
+            $sType = $this->_aEvent['type'];
+            $sAction = $this->_aEvent['action'];
+
+            $this->_aEvent['url'] = $this->_oModule->_oConfig->getItemViewUrl($this->_aEvent);
+            if($this->_oModule->_oConfig->isSystem($sType, $sAction)) {
+                $aResult = $this->_oModule->_oConfig->getSystemData($this->_aEvent);
+                if(!empty($aResult['url']))
+                    $this->_aEvent['url'] = $aResult['url'];
+            }
+
+            //--- Repost and 'Repost To' items
+            $iOwnerId = $this->_oModule->getUserId(); //--- in whose timeline the content will be reposted
+            $iObjectId = $this->_oModule->_oConfig->isSystem($sType, $sAction) ? $this->_aEvent['object_id'] : $this->_aEvent['id'];
+            $sRepostOnclick = $this->_oModule->serviceGetRepostJsClick($iOwnerId, $sType, $sAction, $iObjectId);
+            $sRepostWithOnclick = $this->_oModule->serviceGetRepostWithJsClick($iOwnerId, $sType, $sAction, $iObjectId);
+            $sRepostToOnclick = $this->_oModule->serviceGetRepostToJsClick($iOwnerId, $sType, $sAction, $iObjectId);
+
+            //--- Send item
+    	    $sAetSend = urlencode(base64_encode(serialize(array(
+    	        'name' => 'bx_timeline_send',
+    	        'params' => array(
+    	            'ViewLink' => $this->_aEvent['url']
+    	        )
+    	    )))); 
+        }
+
+    	$this->addMarkers(array(
+            'content_id' => $this->_iEvent,
+            'content_url' => $this->_aEvent['url'],
+
+            'repost_onclick' => $sRepostOnclick,
+            'repost_with_onclick' => $sRepostWithOnclick,
+            'repost_to_onclick' => $sRepostToOnclick,
+            'et_send' => $sAetSend
+    	));
+    }
+
+    public function getMenuItems ()
+    {
+        $aItems = parent::getMenuItems();
+
+        $aMarkers = array(
+            'id' => $this->_iEvent,
+            'module' => $this->_oModule->_oConfig->getName(),
+            'url' => $this->_aEvent['url'],
+            'title' => $this->_aEvent['title'],
+            'img_url' => '',
+            'img_url_encoded' => ''
+        );
+
+        $aEventData = $this->_oModule->_oTemplate->getDataCached($this->_aEvent);
+        if(!empty($aEventData['content']['images']) && is_array($aEventData['content']['images'])) {
+            $aImage = array_shift($aEventData['content']['images']);
+
+            $sImgUrl = isset($aImage['src_medium']) ? $aImage['src_medium'] : $aImage['src'];;
+            if(!empty($sImgUrl))
+                $aMarkers = array_merge($aMarkers, array(
+                    'img_url' => $sImgUrl,
+                    'img_url_encoded' => rawurlencode($sImgUrl),
+                ));
+        }
+
+        if(($oSocial = BxDolMenu::getObjectInstance('sys_social_sharing')) !== false) {
+            $oSocial->addMarkers($aMarkers);
+
+            $aItems = array_merge($aItems, $oSocial->getMenuItems());
+        }
+
+        if($this->_bIsApi) {
+            $aItemsApi = [];
+
+            foreach($aItems as $aItem)
+                switch($aItem['name']) {
+                    case 'item-repost':
+                        $iOwnerId = $this->_oModule->getUserId();
+                        $sType = $this->_aEvent['type'];
+                        $sAction = $this->_aEvent['action'];
+                        $iObjectId = 0;
+
+                        $sCommonPrefix = $this->_oModule->_oConfig->getPrefix('common_post');
+                        if(str_replace($sCommonPrefix, '', $sType) == BX_TIMELINE_PARSE_TYPE_REPOST) {
+                            $aRepostedData = unserialize($this->_aEvent['content']);
+
+                            $sType = $aRepostedData['type'];
+                            $sAction = $aRepostedData['action'];
+                            $iObjectId = $aRepostedData['object_id'];
+                        }
+                        else
+                            $iObjectId = $this->_oModule->_oConfig->isSystem($sType, $sAction) ? $this->_aEvent['object_id'] : $this->_aEvent['id'];
+
+                        $aItemsApi['item-repost'] = array_merge($aItem, [
+                            'data' => [
+                                'author_id' => $iOwnerId,
+                                'owner_id' => $iOwnerId,
+                                'type' => $sType,
+                                'action' => $sAction,
+                                'object_id' => $iObjectId
+                            ]
+                        ]);
+                        break;
+
+                    /**
+                     * TODO: Update when Copy function will be added in Timeline.
+                     */
+                    case 'item-send':
+                        $aItemsApi['item-copy'] = array_merge($aItem, [
+                            'name' => 'item-copy',
+                            'title' => _t('_sys_wiki_copy'),
+                            'link' => $aMarkers['url'],
+                        ]);
+                        break;
+
+                    /**
+                     * TODO: Update when unified Share popup will be used here.
+                     */
+                    case 'social-sharing-facebook':
+                    case 'social-sharing-twitter':
+                    case 'social-sharing-pinterest':
+                    case 'social-sharing-linked_in':
+                    case 'social-sharing-whatsapp':
+                        if(isset($aItemsApi['item-share']))
+                            break;
+
+                        $aItemsApi['item-share'] = array_merge($aItem, [
+                            'name' => 'item-share',
+                            'title' => _t('_sys_menu_item_title_social_sharing'),
+                            'link' => $aMarkers['url'],
+                        ]);
+                        break;
+                }
+
+            return array_values($aItemsApi);
+        }
+
+        return $aItems;
+    }
+
+    protected function _setBrowseParams($aBrowseParams = array())
+    {
+        $aMarkers = array();
+        foreach($aBrowseParams as $sKey => $mixedValue)
+            if(!is_array($aMarkers))
+                $aMarkers[$sKey] = $mixedValue;
+
+        $this->addMarkers($aMarkers);
+        $this->addMarkers(array(
+            'js_object_view' => $this->_oModule->_oConfig->getJsObjectView($aBrowseParams)
+        ));
+    }
+
+    /**
+     * Check if menu items is visible.
+     * @param $a menu item array
+     * @return boolean
+     */
+    protected function _isVisible ($a)
+    {
+        if(!parent::_isVisible($a))
+            return false;
+
+        if(empty($this->_aEvent) || !is_array($this->_aEvent))
+            return false;
+
+        $sCheckFuncName = '';
+        $aCheckFuncParams = array();
+        switch ($a['name']) {
+            case 'item-repost':
+                $sCheckFuncName = 'isAllowedRepost';
+                $aCheckFuncParams = array($this->_aEvent);
+                break;
+
+            case 'item-send':
+                $sCheckFuncName = 'isAllowedSend';
+                $aCheckFuncParams = array($this->_aEvent);
+                break;
+        }
+
+        if(!$sCheckFuncName || !method_exists($this->_oModule, $sCheckFuncName))
+            return true;
+
+        return call_user_func_array(array($this->_oModule, $sCheckFuncName), $aCheckFuncParams) === true;
+    }
+}
+
+/** @} */

+ 8 - 2
modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineModule.php

@@ -905,7 +905,8 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
             'GetBlockViewHotOutline' => '',
             'GetBlockViewAccount' => '',
             'GetBlockViewAccountOutline' => '',
-            'GetPosts' => ''
+            'GetPosts' => '',
+            'Repost' => ''
         ));
     }
 
@@ -2827,10 +2828,15 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
      */
     /** 
      * @ref bx_timeline-repost "repost"
+     * @api @ref bx_timeline-repost "repost"
      */
     public function serviceRepost($iAuthorId, $iOwnerId, $sType, $sAction, $iObjectId, $bForce = false)
     {
-        return $this->repost($iAuthorId, $iOwnerId, $sType, $sAction, $iObjectId, false, $bForce);
+        $mixedResult = $this->repost($iAuthorId, $iOwnerId, $sType, $sAction, $iObjectId, false, $bForce);
+        if(bx_is_api() && !is_array($mixedResult))
+            $mixedResult = ['code' => 0, 'id' => $mixedResult];
+
+        return $mixedResult;
     }
     
     /**

+ 1 - 5
modules/boonex/timeline/updates/13.0.9_13.0.10/source/classes/BxTimelineTemplate.php

@@ -71,9 +71,6 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
                 break;
 
             case 'post':
-                if($this->_oConfig->isEmoji())
-                    $aCss[] = BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'emoji/css/|emoji.css';
-
                 $aCss[] = 'post.css';
                 break;
         }
@@ -144,7 +141,6 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
         }
 
         return $this->getJsCode('post', array_merge(array(
-            'bEmoji' => $this->_oConfig->isEmoji(),
             'bAutoAttach' => $this->_oConfig->isEditorAutoAttach(),
             'iLimitAttachLinks' => $this->_oConfig->getLimitAttachLinks(),
             'sLimitAttachLinksErr' => bx_js_string(_t('_bx_timeline_txt_err_attach_links')),
@@ -187,7 +183,7 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
             ];
  
             $sType = '';
-            if(!isset($aParams['rparams']['type']))
+            if(isset($aParams['rparams']['type']))
                 $sType = $aParams['rparams']['type'];
             else
                 $sType = trim(str_replace('bx_timeline_post_add', '', $aResult['form_object']->aParams['display']), '_');

+ 409 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/install/langs/en.xml

@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+    <string name="_bx_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_cmts"><![CDATA[Timeline's Comments]]></string>
+    <string name="_bx_timeline_reactions"><![CDATA[Timeline's Reactions]]></string>
+
+    <string name="_bx_timeline_options_category_general"><![CDATA[General]]></string>
+    <string name="_bx_timeline_options_category_browse"><![CDATA[Browse]]></string>
+    <string name="_bx_timeline_options_category_card"><![CDATA[Card]]></string>
+    <string name="_bx_timeline_options_category_cache"><![CDATA[Cache]]></string>
+    <string name="_bx_timeline_options_category_post"><![CDATA[Post]]></string>
+
+    <string name="_bx_timeline_option_enable_auto_approve"><![CDATA[Auto approve an update after creation]]></string>
+    <string name="_bx_timeline_option_enable_edit"><![CDATA[Allow user to edit his items]]></string>
+    <string name="_bx_timeline_option_enable_delete"><![CDATA[Allow Timeline owner to remove items]]></string>
+    <string name="_bx_timeline_option_enable_show_all"><![CDATA[Show all items in Public Feed including ones which were posted in personal Feeds]]></string>
+    <string name="_bx_timeline_option_enable_count_all_views"><![CDATA[Count views for all items in the Feed]]></string>
+    <string name="_bx_timeline_option_enable_repost_own_actions"><![CDATA[Repost uses its own actions (views, likes, etc)]]></string>
+    <string name="_bx_timeline_option_enable_hide_upon_delete"><![CDATA[Inactivate items upon hiding instead of deletion]]></string>
+    <string name="_bx_timeline_option_events_per_page_profile"><![CDATA[Number of items on profile page]]></string>
+    <string name="_bx_timeline_option_events_per_page_account"><![CDATA[Number of items on dashboard page]]></string>
+    <string name="_bx_timeline_option_events_per_page_home"><![CDATA[Number of items on site home page]]></string>
+    <string name="_bx_timeline_option_events_per_page"><![CDATA[Number of items per page]]></string>
+    <string name="_bx_timeline_option_enable_infinite_scroll"><![CDATA[Enable Infinite Scroll (experimental)]]></string>
+    <string name="_bx_timeline_option_events_per_preload"><![CDATA[Infinite Scroll: Number of items per preload]]></string>
+    <string name="_bx_timeline_option_auto_preloads"><![CDATA[Infinite Scroll: Number of auto preloads]]></string>
+    <string name="_bx_timeline_option_rss_length"><![CDATA[The length of RSS feed]]></string>
+    <string name="_bx_timeline_option_events_hide"><![CDATA[Show events]]></string>
+    <string name="_bx_timeline_option_enable_brief_cards"><![CDATA[Enable brief cards]]></string>
+    <string name="_bx_timeline_option_title_chars"><![CDATA[Number of characters in auto-generated update's title]]></string>
+    <string name="_bx_timeline_option_title_chars_short"><![CDATA[Number of characters in auto-generated update's short title]]></string>
+    <string name="_bx_timeline_option_videos_preload"><![CDATA[Videos preload]]></string>
+    <string name="_bx_timeline_option_videos_preload_auto"><![CDATA[Auto]]></string>
+    <string name="_bx_timeline_option_videos_preload_metadata"><![CDATA[Metadata]]></string>
+    <string name="_bx_timeline_option_videos_preload_none"><![CDATA[Disabled]]></string>
+    <string name="_bx_timeline_option_videos_autoplay"><![CDATA[Videos autoplay (for Timeline view only)]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_off"><![CDATA[Disabled]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on_mute"><![CDATA[Enabled without sound]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on"><![CDATA[Enabled with sound]]></string>
+    <string name="_bx_timeline_option_preload_comments"><![CDATA[Number of preloaded comments (up to 7 items)]]></string>
+    <string name="_bx_timeline_option_enable_jump_to_switcher"><![CDATA[Show 'Jump to' switcher]]></string>
+    <string name="_bx_timeline_option_enable_sort_by_reaction"><![CDATA[Sort by the date of last comment (experimental, works for updates only)]]></string>
+    <string name="_bx_timeline_option_enable_sort_by_unread"><![CDATA[Sort by 'unread' state (show unread first, experimental).]]></string>
+    <string name="_bx_timeline_option_attachments_layout"><![CDATA[Show attachments as]]></string>
+    <string name="_bx_timeline_option_attachments_layout_gallery"><![CDATA[Gallery]]></string>
+    <string name="_bx_timeline_option_attachments_layout_showcase"><![CDATA[Showcase]]></string>
+    <string name="_bx_timeline_option_enable_hot"><![CDATA[Enable Hot feed aggregation]]></string>
+    <string name="_bx_timeline_option_hot_sources"><![CDATA[Use the following actions for content to appear in Hot feed]]></string>
+    <string name="_bx_timeline_option_hot_sources_content"><![CDATA[Add content]]></string>
+    <string name="_bx_timeline_option_hot_sources_comment"><![CDATA[Add comment]]></string>
+    <string name="_bx_timeline_option_hot_sources_vote"><![CDATA[Add vote]]></string>
+    <string name="_bx_timeline_option_hot_threshold_age"><![CDATA[Maximum age of commented/voted post that gets included in Hot feed (in days, 0 - no limit)]]></string>
+    <string name="_bx_timeline_option_hot_threshold_comment"><![CDATA[Minimum number of comments for content to appear in Hot feed]]></string>
+    <string name="_bx_timeline_option_hot_threshold_vote"><![CDATA[Minimum number of votes for content to appear in Hot feed]]></string>
+    <string name="_bx_timeline_option_hot_interval"><![CDATA[Interval of time (in hours) to get Hot events]]></string>
+    <string name="_bx_timeline_option_enable_cache_item"><![CDATA[Enable item cache]]></string>
+    <string name="_bx_timeline_option_cache_item_engine"><![CDATA[Item cache engine (other than File option may require custom server setup)]]></string>
+    <string name="_bx_timeline_option_cache_item_lifetime"><![CDATA[Item cache lifetime]]></string>
+    <string name="_bx_timeline_option_enable_editor_toolbar"><![CDATA[Enable post form editor toolbar]]></string>
+    <string name="_bx_timeline_option_editor_auto_attach_insertion"><![CDATA[Treat images inserted in the editor as attachments]]></string>
+    <string name="_bx_timeline_option_limit_attach_links"><![CDATA[Limit number of attached links (0 - no limit)]]></string>
+
+    <string name="_bx_timeline_form_post"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_display_add"><![CDATA[Write Post]]></string>
+    <string name="_bx_timeline_form_post_display_add_public"><![CDATA[Write Public Post]]></string>
+    <string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Write Profile Post]]></string>
+    <string name="_bx_timeline_form_post_display_edit"><![CDATA[Edit Post]]></string>
+    <string name="_bx_timeline_form_post_display_view"><![CDATA[View Post (for custom fields)]]></string>
+    <string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[Owner ID]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Your profile]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Action]]></string>
+    <string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Type]]></string>
+    <string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Content]]></string>
+    <string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Visibility]]></string>
+    <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Visibility]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Created at]]></string>
+    <string name="_bx_timeline_form_post_input_date"><![CDATA[Created at]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Publishing time]]></string>
+    <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Publishing time]]></string>
+    <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Leave empty to publish immediately.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Link]]></string>
+    <string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Cannot remove the link. Please report.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Photo]]></string>
+    <string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_files"><![CDATA[File]]></string>
+    <string name="_bx_timeline_form_post_input_files"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Add Photo]]></string>
+    <string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Video]]></string>
+    <string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Add Video]]></string>
+    <string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Attachments]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Cancel]]></string>
+
+    <string name="_bx_timeline_form_attach_link"><![CDATA[Attach Link]]></string>
+    <string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Attach Link]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_event_id"><![CDATA[Event ID]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Correct Link is essential. Please, fill in this field.]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Add]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Add]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Close]]></string>
+
+    <string name="_bx_timeline_form_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_form_repost_display_with"><![CDATA[Repost With Text]]></string>
+    <string name="_bx_timeline_form_repost_display_to"><![CDATA[Repost To]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_reposter_id"><![CDATA[Reposter ID]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_owner_id"><![CDATA[Owner ID]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_type"><![CDATA[Type]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_action"><![CDATA[Action]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_object_id"><![CDATA[Object ID]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_search"><![CDATA[Search]]></string>
+    <string name="_bx_timeline_form_repost_input_search"><![CDATA[Search]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_list"><![CDATA[List]]></string>
+    <string name="_bx_timeline_form_repost_input_list"><![CDATA[or select]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_text"><![CDATA[Text]]></string>
+    <string name="_bx_timeline_form_repost_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_reposted"><![CDATA[Reposted]]></string>
+    <string name="_bx_timeline_form_repost_input_reposted"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_do_submit"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_form_repost_input_do_submit"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_form_repost_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_timeline_form_repost_input_do_cancel"><![CDATA[Cancel]]></string>
+
+    <string name="_bx_timeline_form_filters_input_by_modules"><![CDATA[Content:]]></string>
+    <string name="_bx_timeline_form_filters_input_by_modules_all"><![CDATA[All]]></string>
+    <string name="_bx_timeline_form_filters_input_by_modules_selected"><![CDATA[Selected]]></string>
+    <string name="_bx_timeline_form_filters_input_do_apply"><![CDATA[Apply]]></string>
+
+    <string name="_bx_timeline_privacy_view"><![CDATA[View event]]></string>
+
+    <string name="_bx_timeline_acl_action_post"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_acl_action_edit"><![CDATA[Edit Any Post]]></string>
+    <string name="_bx_timeline_acl_action_delete"><![CDATA[Delete Any Post]]></string>
+    <string name="_bx_timeline_acl_action_vote"><![CDATA[Vote]]></string>
+    <string name="_bx_timeline_acl_action_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_acl_action_send"><![CDATA[Send]]></string>
+    <string name="_bx_timeline_acl_action_mute"><![CDATA[Mute Author]]></string>
+    <string name="_bx_timeline_acl_action_pin"><![CDATA['Pin here' Any Post]]></string>
+    <string name="_bx_timeline_acl_action_stick"><![CDATA['Pin for all' Any Post]]></string>
+    <string name="_bx_timeline_acl_action_promote"><![CDATA[Promote Any Post]]></string>
+
+
+    <!-- Pages -->
+    <string name="_bx_timeline_page_title_sys_view"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_title_view"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_title_view_home"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_view_hot"><![CDATA[Hot Feed]]></string>
+    <string name="_bx_timeline_page_title_view_hot"><![CDATA[Hot Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_item"><![CDATA[Feed Item]]></string>
+    <string name="_bx_timeline_page_title_item"><![CDATA[Feed Item]]></string>
+    <string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Feed Item Preview]]></string>
+    <string name="_bx_timeline_page_title_item_brief"><![CDATA[Feed Item Preview]]></string>
+    <string name="_bx_timeline_page_title_sys_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_title_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Manage All]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Post to Сontext Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Profile Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Profile Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_block_title_item"><![CDATA[Item]]></string>
+    <string name="_bx_timeline_page_block_title_item_content"><![CDATA[Content]]></string>
+    <string name="_bx_timeline_page_block_title_item_info"><![CDATA[Info]]></string>
+    <string name="_bx_timeline_page_block_title_entry_reports"><![CDATA[Reports]]></string>
+    <string name="_bx_timeline_page_block_title_item_comments"><![CDATA[Comments]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_account"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_timeline"><![CDATA[All Feeds (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_views_timeline"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_outline"><![CDATA[All Feeds (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_views_outline"><![CDATA[Feed]]></string>        
+    <string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Post to Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_home"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Public Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Public Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Hot Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_hot"><![CDATA[Hot Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot_outline"><![CDATA[Hot Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_hot_outline"><![CDATA[Hot Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_menu_db"><![CDATA[Dynamic Browsing: Menu]]></string>
+    <string name="_bx_timeline_page_block_title_menu_db"><![CDATA[Feeds]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_db"><![CDATA[Dynamic Browsing: Views]]></string>
+    <string name="_bx_timeline_page_block_title_views_db"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Feeds' Comments]]></string>
+
+    <string name="_bx_timeline_page_title_sys_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Manage Timeline]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Manage All]]></string>
+    <string name="_bx_timeline_page_block_title_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_manage_own"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_muted"><![CDATA[Muted]]></string>
+
+    <string name="_bx_timeline_page_content_ph_timeline"><![CDATA[Timeline: with timeline placeholder]]></string>
+    <string name="_bx_timeline_page_content_ph_outline"><![CDATA[Timeline: with outline placeholder]]></string>
+
+
+    <!-- Menus -->
+    <string name="_bx_timeline_menu_title_view"><![CDATA[View]]></string>
+    <string name="_bx_timeline_menu_set_title_view"><![CDATA[View]]></string>
+    <string name="_bx_timeline_menu_item_title_system_channels"><![CDATA[Channels]]></string>
+    <string name="_bx_timeline_menu_item_title_channels"><![CDATA[Channels]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Public]]></string>
+    <string name="_bx_timeline_menu_item_title_public"><![CDATA[Public]]></string>
+    <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Hot]]></string>
+    <string name="_bx_timeline_menu_item_title_hot"><![CDATA[Hot]]></string>
+
+    <string name="_bx_timeline_menu_title_feeds"><![CDATA[Feeds]]></string>
+    <string name="_bx_timeline_menu_set_title_feeds"><![CDATA[Feeds]]></string>
+    <string name="_bx_timeline_menu_template_title_feeds"><![CDATA[Feeds]]></string>
+    <string name="_bx_timeline_menu_item_title_system_divider"><![CDATA[Divider]]></string>
+
+    <string name="_bx_timeline_menu_item_view_all"><![CDATA[All posts]]></string>
+    <string name="_bx_timeline_menu_item_view_owner"><![CDATA[Posts by {0}]]></string>
+    <string name="_bx_timeline_menu_item_view_other"><![CDATA[Posts by others]]></string>
+    <string name="_bx_timeline_menu_item_get_rss"><![CDATA[RSS]]></string>
+
+    <string name="_bx_timeline_menu_title_item_share"><![CDATA[Share Item]]></string>
+    <string name="_bx_timeline_menu_set_title_item_share"><![CDATA[Share Item]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost_with"><![CDATA[Repost with Text]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost_with"><![CDATA[Repost with Text]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_repost_to"><![CDATA[Repost to Context]]></string>
+    <string name="_bx_timeline_menu_item_title_item_repost_to"><![CDATA[Repost to Context]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_send"><![CDATA[Send]]></string>
+    <string name="_bx_timeline_menu_item_title_item_send"><![CDATA[Send to Friend]]></string>
+    <string name="_bx_timeline_menu_item_title_system_admt_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_admt_timeline"><![CDATA[Timeline]]></string>
+
+    <string name="_bx_timeline_menu_title_item_manage"><![CDATA[Manage Item]]></string>
+    <string name="_bx_timeline_menu_set_title_item_manage"><![CDATA[Manage Item]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_pin"><![CDATA[Pin here]]></string>
+    <string name="_bx_timeline_menu_item_title_item_pin"><![CDATA[Pin here]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unpin"><![CDATA[Unpin here]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unpin"><![CDATA[Unpin here]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_stick"><![CDATA[Pin for all]]></string>
+    <string name="_bx_timeline_menu_item_title_item_stick"><![CDATA[Pin for all]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unstick"><![CDATA[Unpin for all]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unstick"><![CDATA[Unpin for all]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_promote"><![CDATA[Promote]]></string>
+    <string name="_bx_timeline_menu_item_title_item_promote"><![CDATA[Promote]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_unpromote"><![CDATA[Unpromote]]></string>
+    <string name="_bx_timeline_menu_item_title_item_unpromote"><![CDATA[Unpromote]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_timeline_menu_item_title_item_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete"><![CDATA[{delete_title}]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete_common"><![CDATA[Delete]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete_system"><![CDATA[Hide from feeds]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_mute"><![CDATA[Mute Author]]></string>
+    <string name="_bx_timeline_menu_item_title_item_mute"><![CDATA[Mute Author]]></string>
+
+    <string name="_bx_timeline_menu_title_item_actions"><![CDATA[Item Actions]]></string>
+    <string name="_bx_timeline_menu_set_title_item_actions"><![CDATA[Item Actions]]></string>
+    <string name="_bx_timeline_menu_title_item_actions_all"><![CDATA[Item Actions All]]></string>
+    <string name="_bx_timeline_menu_set_title_item_actions_all"><![CDATA[Item Actions All]]></string>
+    <string name="_bx_timeline_menu_title_item_counters"><![CDATA[Item Counters]]></string>
+    <string name="_bx_timeline_menu_set_title_item_counters"><![CDATA[Item Counters]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_comment"><![CDATA[Comment]]></string>
+    <string name="_bx_timeline_menu_item_title_item_comment"><![CDATA[Comment]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_view"><![CDATA[View]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_vote"><![CDATA[Vote (Like)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_score"><![CDATA[Vote (Up/Down)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_reaction"><![CDATA[Reaction]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_share"><![CDATA[Share]]></string>
+    <string name="_bx_timeline_menu_item_title_item_share"><![CDATA[Share]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_report"><![CDATA[Report]]></string>
+    <string name="_bx_timeline_menu_item_title_system_item_more"><![CDATA[More Actions]]></string>
+    <string name="_bx_timeline_menu_item_title_item_more"><![CDATA[]]></string>
+
+    <string name="_bx_timeline_menu_title_post_attachments"><![CDATA[Form Attachments]]></string>
+    <string name="_bx_timeline_menu_set_title_post_attachments"><![CDATA[Form Attachments]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_link"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_menu_item_title_add_link"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_photo_simple"><![CDATA[Add Photo (Simple)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_photo_html5"><![CDATA[Add Photo (HTML5)]]></string>
+    <string name="_bx_timeline_menu_item_title_add_photo"><![CDATA[Add Photo]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_simple"><![CDATA[Add Video (Simple)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_html5"><![CDATA[Add Video (HTML5)]]></string>
+
+    <string name="_bx_timeline_menu_item_title_add_file"><![CDATA[Add File]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_file_simple"><![CDATA[Add File (Simple)]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_file_html5"><![CDATA[Add File (HTML5)]]></string>
+
+    <string name="_bx_timeline_menu_item_title_add_video"><![CDATA[Add Video]]></string>
+    <string name="_bx_timeline_menu_item_title_system_add_video_record"><![CDATA[Record Video]]></string>
+    <string name="_bx_timeline_menu_item_title_add_video_record"><![CDATA[Record Video]]></string>
+    <string name="_bx_timeline_menu_item_title_system_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_system_create_entry"><![CDATA[Update]]></string>
+    <string name="_bx_timeline_menu_item_title_create_entry"><![CDATA[Update]]></string>
+    <string name="_bx_timeline_menu_item_title_system_view_timeline_view"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_view_timeline_view"><![CDATA[Timeline]]></string>
+
+    <string name="_bx_timeline_menu_item_title_system_manage_my_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_manage_my_timeline"><![CDATA[Timeline]]></string>
+
+    <!-- Grids -->
+    <string name="_bx_timeline_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
+    <string name="_bx_timeline_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_description"><![CDATA[Event]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_added"><![CDATA[Added]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_author"><![CDATA[Author]]></string>
+    <string name="_bx_timeline_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_timeline_grid_action_title_adm_audit_content"><![CDATA[Audit actions]]></string>
+    <string name="_bx_timeline_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
+
+    <string name="_bx_timeline_alert_module_comment"><![CDATA[Comment]]></string>
+    <string name="_bx_timeline_alert_module_timeline_common_post"><![CDATA[Timeline (post)]]></string>
+    <string name="_bx_timeline_alert_module_timeline_common_repost"><![CDATA[Timeline (repost)]]></string>
+    <string name="_bx_timeline_alert_action_added"><![CDATA[add]]></string>
+    <string name="_bx_timeline_alert_action_post_common"><![CDATA[add post]]></string>
+    <string name="_bx_timeline_alert_action_repost"><![CDATA[repost]]></string>
+    <string name="_bx_timeline_alert_action_post_common_personal"><![CDATA[New content]]></string>
+    <string name="_bx_timeline_alert_action_post_common_follow_member"><![CDATA[New content]]></string>
+    <string name="_bx_timeline_alert_action_post_common_follow_context"><![CDATA[New content]]></string>
+    <string name="_bx_timeline_alert_action_repost_personal"><![CDATA[New content repost]]></string>
+    <string name="_bx_timeline_alert_action_repost_follow_member"><![CDATA[New content repost]]></string>
+    <string name="_bx_timeline_alert_action_repost_follow_context"><![CDATA[New content repost]]></string>
+
+    <string name="_bx_timeline_txt_msg_no_results"><![CDATA[Empty]]></string>
+    <string name="_bx_timeline_txt_msg_performed_action"><![CDATA[The action was successfully performed.]]></string>
+    <string name="_bx_timeline_txt_msg_posted"><![CDATA[Posted successfully.]]></string>
+    <string name="_bx_timeline_grid_action_err_delete"><![CDATA[Cannot delete the selected timeline events(s).]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_insertion"><![CDATA[Cannot perform insertion.]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Cannot perform action. Please report.]]></string>
+    <string name="_bx_timeline_txt_err_empty_post"><![CDATA[The post is empty.]]></string>
+    <string name="_bx_timeline_txt_err_attach_links"><![CDATA[The maximum allowed number of attached links has been reached.]]></string>
+
+    <string name="_bx_timeline_txt_to"><![CDATA[to]]></string>
+    <string name="_bx_timeline_txt_load_more"><![CDATA[Load More]]></string>
+    <string name="_bx_timeline_txt_loading"><![CDATA[Loading...]]></string>
+    <string name="_bx_timeline_txt_loading_complete"><![CDATA[Loading complete]]></string>
+    <string name="_bx_timeline_txt_or_jump_to"><![CDATA[... or jump to:]]></string>
+    <string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Jump to {0} year]]></string>
+    <string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Jump to recent posts]]></string>
+    <string name="_bx_timeline_txt_status_deleted"><![CDATA[Deleted]]></string>
+    <string name="_bx_timeline_txt_hot"><![CDATA[Hot post]]></string>
+    <string name="_bx_timeline_txt_pinned"><![CDATA[Pinned post]]></string>
+    <string name="_bx_timeline_txt_sticked"><![CDATA[Pinned for all post]]></string>
+    <string name="_bx_timeline_txt_promoted"><![CDATA[Promoted]]></string>
+    <string name="_bx_timeline_txt_note_approve_pending"><![CDATA[Update will be published as soon as it's approved by moderator]]></string>
+    <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Update publishing date is {0}]]></string>
+    <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Update will be published as soon as video is converted]]></string>
+    <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Update isn't published because video conversion failed, edit video to fix the issue.]]></string>
+    <string name="_bx_timeline_txt_rss_caption"><![CDATA[{0}'s timeline]]></string>
+    <string name="_bx_timeline_txt_added_sample"><![CDATA[Added {0}]]></string>
+    <string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} added {1}]]></string>
+    <string name="_bx_timeline_txt_user_repost"><![CDATA[{0}'s repost]]></string>
+    <string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} reposted {1}'s {2}]]></string>
+    <string name="_bx_timeline_txt_sample"><![CDATA[post]]></string>
+    <string name="_bx_timeline_txt_sample_with_article"><![CDATA[a post]]></string>
+    <string name="_bx_timeline_txt_sample_ext"><![CDATA[timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_comment_single"><![CDATA[comment to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_vote_single"><![CDATA[vote to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_reaction_single"><![CDATA['{0}' reaction to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[score up vote to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_score_down_single"><![CDATA[score down vote to timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_with_link"><![CDATA[with link]]></string>
+    <string name="_bx_timeline_txt_sample_with_image"><![CDATA[with image]]></string>
+    <string name="_bx_timeline_txt_sample_with_video"><![CDATA[with media]]></string>
+    <string name="_bx_timeline_txt_sample_with_media"><![CDATA[with media]]></string>
+    <string name="_bx_timeline_txt_sample_with_file"><![CDATA[with file]]></string>
+    <string name="_bx_timeline_txt_today"><![CDATA[Today]]></string>
+    <string name="_bx_timeline_txt_some_text_here"><![CDATA[Share your thoughts, location, photos or video]]></string>
+    <string name="_bx_timeline_txt_show"><![CDATA[Show]]></string>
+    <string name="_bx_timeline_txt_new_content"><![CDATA[New content]]></string>
+    <string name="_bx_timeline_txt_filters"><![CDATA[Filters]]></string>
+
+    <string name="_bx_timeline_txt_do_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_txt_do_repost_with"><![CDATA[Repost with Text]]></string>
+    <string name="_bx_timeline_txt_do_repost_to"><![CDATA[Repost to Context]]></string>
+    <string name="_bx_timeline_txt_repost_counter"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_txt_reposted"><![CDATA[Reposted {0}'s {1}.]]></string>
+    <string name="_bx_timeline_txt_reposted_by"><![CDATA[Reposted by]]></string>
+    <string name="_bx_timeline_txt_err_cannot_repost"><![CDATA[Cannot repost. Please report.]]></string>
+    <string name="_bx_timeline_txt_err_already_reposted"><![CDATA[You already reposted the item.]]></string>
+    <string name="_bx_timeline_txt_msg_success_repost"><![CDATA[The item was successfully reposted.]]></string>
+    <string name="_bx_timeline_txt_object_reposted"><![CDATA[<b class="bx-ntfs-content-profile">{owner_name}</b> reposted a {entry_sample} <b class="bx-ntfs-content-entry">{entry_caption}</b>]]></string>
+
+    <!-- EMAIL TEMPLATES -->
+    <string name="_bx_timeline_et_txt_name_send"><![CDATA[Send to Friend.]]></string>
+    <string name="_bx_timeline_et_txt_subject_send"><![CDATA[It may be interesting for you.]]></string>
+    <string name="_bx_timeline_et_txt_body_send"><![CDATA[
+<p>Hello.</p>
+<p>Take a look at <a href="{ViewLink}">this post</a>, it may be interesting for you.</p>]]></string>
+</resources>

+ 563 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/install/sql/enable.sql

@@ -0,0 +1,563 @@
+
+-- CONTENT PLACEHOLDERS
+SET @iCPHOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_content_placeholders` ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_content_placeholders` (`module`, `title`, `template`, `order`) VALUES
+('bx_timeline', '_bx_timeline_page_content_ph_timeline', 'block_async_timeline.html', @iCPHOrder + 1),
+('bx_timeline', '_bx_timeline_page_content_ph_outline', 'block_async_outline.html', @iCPHOrder + 2);
+
+
+-- PAGES & BLOCKS
+INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_view', '_bx_timeline_page_title_sys_view', '_bx_timeline_page_title_view', 'bx_timeline', 5, 2147483647, 1, 'timeline-view', 'page.php?i=timeline-view', '', '', '', 0, 1, 0, 'BxTimelinePageView', 'modules/boonex/timeline/classes/BxTimelinePageView.php'),
+('bx_timeline_view_home', '_bx_timeline_page_title_sys_view_home', '_bx_timeline_page_title_view_home', 'bx_timeline', 5, 2147483647, 1, 'timeline-view-home', 'page.php?i=timeline-view-home', '', '', '', 0, 1, 0, '', ''),
+('bx_timeline_view_hot', '_bx_timeline_page_title_sys_view_hot', '_bx_timeline_page_title_view_hot', 'bx_timeline', 5, 2147483647, 1, 'timeline-view-hot', 'page.php?i=timeline-view-hot', '', '', '', 0, 1, 0, '', ''),
+
+('bx_timeline_item', '_bx_timeline_page_title_sys_item', '_bx_timeline_page_title_item', 'bx_timeline', 2, 2147483647, 1, 'item', '', '', '', '', 0, 1, 0, 'BxTimelinePageViewItem', 'modules/boonex/timeline/classes/BxTimelinePageViewItem.php'),
+('bx_timeline_item_brief', '_bx_timeline_page_title_sys_item_brief', '_bx_timeline_page_title_item_brief', 'bx_timeline', 5, 2147483647, 1, 'item-quick', '', '', '', '', 0, 1, 0, 'BxTimelinePageViewItem', 'modules/boonex/timeline/classes/BxTimelinePageViewItem.php'),
+
+('bx_timeline_manage', '_bx_timeline_page_title_sys_manage', '_bx_timeline_page_title_manage', 'bx_timeline', 5, 2147483647, 1, 'timeline-manage', 'page.php?i=timeline-manage', '', '', '', 0, 1, 0, '', '');
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('bx_timeline_view', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_post_profile', '_bx_timeline_page_block_title_post_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:14:"get_block_post";}', 0, 0, 1, 1),
+('bx_timeline_view', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile', '_bx_timeline_page_block_title_view_profile', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:14:"get_block_view";}', 0, 0, 1, 2),
+('bx_timeline_view', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile_outline', '_bx_timeline_page_block_title_view_profile_outline', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_outline";}', 0, 0, 0, 3),
+
+('bx_timeline_view_home', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_post_home', '_bx_timeline_page_block_title_post_home', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_post_home";}', 0, 0, 1, 1),
+('bx_timeline_view_home', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home', '_bx_timeline_page_block_title_view_home', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_view_home";}', 0, 0, 0, 2),
+('bx_timeline_view_home', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home_outline', '_bx_timeline_page_block_title_view_home_outline', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_block_view_home_outline";}', 0, 0, 1, 3),
+
+('bx_timeline_view_hot', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_hot', '_bx_timeline_page_block_title_view_hot', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:18:"get_block_view_hot";}', 0, 1, 0, 1),
+('bx_timeline_view_hot', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_view_hot_outline', '_bx_timeline_page_block_title_view_hot_outline', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:26:"get_block_view_hot_outline";}', 0, 1, 1, 2),
+
+('bx_timeline_item', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_item', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:14:"get_block_item";}', 0, 0, 1, 1),
+('bx_timeline_item', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_item_comments', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_item_comments";}', 0, 0, 1, 2),
+('bx_timeline_item', 2, 'bx_timeline', '', '_bx_timeline_page_block_title_item_info', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_item_info";}', 0, 0, 1, 1),
+('bx_timeline_item', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_entry_reports', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_timeline\";s:6:\"method\";s:14:\"entity_reports\";}', 0, 0, 1, 6),
+
+('bx_timeline_item_brief', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_item_content', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_item_content";}', 0, 0, 1, 1),
+('bx_timeline_item_brief', 0, 'bx_timeline', '', '_bx_timeline_page_block_title_item_info', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_item_info";}', 0, 0, 1, 1),
+('bx_timeline_item_brief', 0, 'bx_timeline', '', '_bx_timeline_page_block_title_item_comments', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_item_comments";}', 0, 0, 1, 2),
+
+('bx_timeline_manage', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_manage_own', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:12:"manage_tools";}', 0, 0, 1, 1),
+('bx_timeline_manage', 1, 'bx_timeline', '', '_bx_timeline_page_block_title_muted', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:15:"get_block_muted";}', 0, 0, 1, 2);
+
+
+-- PAGES: add page block on dashboard
+SET @iPBCellDashboard = 2;
+SET @iPBOrderDashboard = 1; --(SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'sys_dashboard' AND `cell_id` = @iPBCellDashboard LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_post_account', '_bx_timeline_page_block_title_post_account', 11, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_account";}', 0, 1, 0, @iPBOrderDashboard),
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 11, 1, 2147483644, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";s:6:"params";a:1:{i:0;s:4:"feed";}}', 0, 0, 0, @iPBOrderDashboard + 1),
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_views_outline', '_bx_timeline_page_block_title_views_outline', 11, 1, 2147483644, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_views_outline";s:6:"params";a:1:{i:0;s:4:"feed";}}', 0, 0, 0, @iPBOrderDashboard + 1);
+
+-- PAGES: add page block on home
+SET @iPBCellHome = 3;
+SET @iPBOrderHome = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'sys_home' AND `cell_id` = @iPBCellHome ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_post_home', '_bx_timeline_page_block_title_post_home', 11, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_post_home";}', 0, 1, 0, @iPBOrderHome + 1),
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 11, 1, 2147483644, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";s:6:"params";a:1:{i:0;s:4:"feed";}}', 0, 0, 1, @iPBOrderHome + 2);
+
+SET @iPBCellHome = 4;
+SET @iPBOrderHome = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'sys_home' AND `cell_id` = @iPBCellHome ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home_outline', '_bx_timeline_page_block_title_view_home_outline', 0, 1, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_block_view_home_outline";}', 0, 0, 1, @iPBOrderHome + 1);
+
+-- PAGES: add page block to profiles modules (trigger* page objects are processed separately upon modules enable/disable)
+SET @iPBCellProfile = 2;
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('trigger_page_profile_view_entry', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_system_post_profile', '_bx_timeline_page_block_title_post_profile', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_profile";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 1, 0),
+('trigger_page_profile_view_entry', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile', '_bx_timeline_page_block_title_view_profile', 0, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_profile";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 1, 0),
+('trigger_page_profile_view_entry', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile_outline', '_bx_timeline_page_block_title_view_profile_outline', 0, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_block_view_profile_outline";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 0, 0);
+
+SET @iPBCellGroup = 4;
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `async`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('trigger_page_group_view_entry', @iPBCellGroup, 'bx_timeline', '_bx_timeline_page_block_title_system_post_profile', '_bx_timeline_page_block_title_post_profile', 11, 0, 0, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_profile";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 0, 0),
+('trigger_page_group_view_entry', @iPBCellGroup, 'system', '_sys_page_block_title_sys_create_post_context', '_sys_page_block_title_create_post_context', 11, 1, 4, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}s:5:"class";s:13:"TemplServices";}', 0, 0, 1, 0),
+('trigger_page_group_view_entry', @iPBCellGroup, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile', '_bx_timeline_page_block_title_view_profile', 0, 0, 0, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_profile";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 1, 0),
+('trigger_page_group_view_entry', @iPBCellGroup, 'bx_timeline', '_bx_timeline_page_block_title_system_view_profile_outline', '_bx_timeline_page_block_title_view_profile_outline', 0, 0, 0, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_block_view_profile_outline";s:6:"params";a:1:{i:0;s:6:"{type}";}}', 0, 0, 0, 0);
+
+-- PAGE: module manage all
+INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_administration', '_bx_timeline_page_title_sys_manage_administration', '_bx_timeline_page_title_manage', 'bx_timeline', 5, 192, 1, 'timeline-administration', 'page.php?i=timeline-administration', '', '', '', 0, 1, 0, 'BxTimelinePageBrowse', 'modules/boonex/timeline/classes/BxTimelinePageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_timeline_administration', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_manage_administration', '_bx_timeline_page_block_title_manage', 11, 192, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_timeline\";s:6:\"method\";s:12:\"manage_tools\";s:6:\"params\";a:1:{i:0;s:14:\"administration\";}}', 0, 1, 0);
+
+
+-- PAGE: service blocks
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 11, 1, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";}', 0, 1, 1, @iPBOrderHome + 1),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_views_outline', '_bx_timeline_page_block_title_views_outline', 11, 1, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_views_outline";}', 0, 1, 1, @iPBOrderHome + 2),
+
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home', '_bx_timeline_page_block_title_view_home', 0, 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_view_home";}', 0, 1, 1, @iBlockOrder + 3),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home_outline', '_bx_timeline_page_block_title_view_home_outline', 0, 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_block_view_home_outline";}', 0, 1, 1, @iBlockOrder + 4),
+
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account', '_bx_timeline_page_block_title_view_account', 0, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, 1, @iBlockOrder + 5),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account_outline', '_bx_timeline_page_block_title_view_account_outline', 0, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_block_view_account_outline";}', 0, 1, 1, @iBlockOrder + 6),
+
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_menu_db', '_bx_timeline_page_block_title_menu_db', 11, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:17:"get_block_menu_db";}', 0, 1, 1, @iBlockOrder + 7),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_views_db', '_bx_timeline_page_block_title_views_db', 11, 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:18:"get_block_views_db";}', 0, 1, 1, @iBlockOrder + 8);
+
+
+-- MENU: View
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_view', '_bx_timeline_menu_title_view', 'bx_timeline_menu_view', 'bx_timeline', 15, 0, 1, 'BxTimelineMenuView', 'modules/boonex/timeline/classes/BxTimelineMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_view', 'bx_timeline', '_bx_timeline_menu_set_title_view', 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_timeline_menu_view', 'bx_timeline', 'feed', '_bx_timeline_menu_item_title_system_feed', '_bx_timeline_menu_item_title_feed', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''feed'')', '_self', '', '', 2147483647, 1, 0, 1),
+('bx_timeline_menu_view', 'bx_timeline', 'public', '_bx_timeline_menu_item_title_system_public', '_bx_timeline_menu_item_title_public', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''public'')', '_self', '', '', 2147483647, 1, 0, 2),
+('bx_timeline_menu_view', 'bx_timeline', 'channels', '_bx_timeline_menu_item_title_system_channels', '_bx_timeline_menu_item_title_channels', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''channels'')', '_self', '', '', 2147483647, 0, 0, 3),
+('bx_timeline_menu_view', 'bx_timeline', 'hot', '_bx_timeline_menu_item_title_system_hot', '_bx_timeline_menu_item_title_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''hot'')', '_self', '', '', 2147483647, 1, 0, 4);
+
+-- MENU: Feeds
+INSERT INTO `sys_menu_templates` (`id`, `template`, `title`, `visible`) VALUES
+(ROUND(RAND()*(9999 - 1000) + 1000), 'menu_feeds.html', '_bx_timeline_menu_template_title_feeds', 1);
+SET @iTemplId = (SELECT `id` FROM `sys_menu_templates` WHERE `template`='menu_feeds.html' AND `title`='_bx_timeline_menu_template_title_feeds' LIMIT 1);
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_feeds', '_bx_timeline_menu_title_feeds', 'bx_timeline_menu_feeds', 'bx_timeline', @iTemplId, 0, 1, 'BxTimelineMenuFeeds', 'modules/boonex/timeline/classes/BxTimelineMenuFeeds.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_feeds', 'bx_timeline', '_bx_timeline_menu_set_title_feeds', 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_timeline_menu_feeds', 'bx_timeline', 'feed', '_bx_timeline_menu_item_title_system_feed', '_bx_timeline_menu_item_title_feed', 'javascript:void(0)', 'javascript:{js_object_view}.changeFeed(this, ''feed'')', '_self', '', '', 2147483647, 1, 0, 1),
+('bx_timeline_menu_feeds', 'bx_timeline', 'public', '_bx_timeline_menu_item_title_system_public', '_bx_timeline_menu_item_title_public', 'javascript:void(0)', 'javascript:{js_object_view}.changeFeed(this, ''public'')', '_self', '', '', 2147483647, 1, 0, 2),
+('bx_timeline_menu_feeds', 'bx_timeline', 'hot', '_bx_timeline_menu_item_title_system_hot', '_bx_timeline_menu_item_title_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeFeed(this, ''hot'')', '_self', '', '', 2147483647, 1, 0, 3),
+('bx_timeline_menu_feeds', 'bx_timeline', 'divider', '_bx_timeline_menu_item_title_system_divider', '', '', '', '', '', '', 2147483647, 1, 1, 4);
+
+-- MENU: Item Share (Repost, Send to Friend, etc)
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_item_share', '_bx_timeline_menu_title_item_share', 'bx_timeline_menu_item_share', 'bx_timeline', 6, 0, 1, 'BxTimelineMenuItemShare', 'modules/boonex/timeline/classes/BxTimelineMenuItemShare.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_item_share', 'bx_timeline', '_bx_timeline_menu_set_title_item_share', 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_timeline_menu_item_share', 'bx_timeline', 'item-repost', '_bx_timeline_menu_item_title_system_item_repost', '_bx_timeline_menu_item_title_item_repost', 'javascript:void(0)', 'javascript:{repost_onclick}', '_self', 'redo', '', 2147483647, 1, 0, 1),
+('bx_timeline_menu_item_share', 'bx_timeline', 'item-repost-with', '_bx_timeline_menu_item_title_system_item_repost_with', '_bx_timeline_menu_item_title_item_repost_with', 'javascript:void(0)', 'javascript:{repost_with_onclick}', '_self', 'redo', '', 2147483647, 1, 0, 2),
+('bx_timeline_menu_item_share', 'bx_timeline', 'item-repost-to', '_bx_timeline_menu_item_title_system_item_repost_to', '_bx_timeline_menu_item_title_item_repost_to', 'javascript:void(0)', 'javascript:{repost_to_onclick}', '_self', 'redo', '', 2147483647, 1, 0, 3),
+('bx_timeline_menu_item_share', 'bx_timeline', 'item-send', '_bx_timeline_menu_item_title_system_item_send', '_bx_timeline_menu_item_title_item_send', 'page.php?i=start-convo&et={et_send}', '', '_self', 'envelope', '', 2147483647, 1, 0, 4);
+
+-- MENU: Item Manage (Pin, Delete, etc)
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_item_manage', '_bx_timeline_menu_title_item_manage', 'bx_timeline_menu_item_manage', 'bx_timeline', 20, 0, 1, 'BxTimelineMenuItemManage', 'modules/boonex/timeline/classes/BxTimelineMenuItemManage.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_item_manage', 'bx_timeline', '_bx_timeline_menu_set_title_item_manage', 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_timeline_menu_item_manage', 'bx_timeline', 'item-pin', '_bx_timeline_menu_item_title_system_item_pin', '_bx_timeline_menu_item_title_item_pin', 'javascript:void(0)', 'javascript:{js_object_view}.pinPost(this, {content_id}, 1)', '_self', 'thumbtack', '', 2147483647, 1, 0, 0),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-unpin', '_bx_timeline_menu_item_title_system_item_unpin', '_bx_timeline_menu_item_title_item_unpin', 'javascript:void(0)', 'javascript:{js_object_view}.pinPost(this, {content_id}, 0)', '_self', 'thumbtack', '', 2147483647, 1, 0, 1),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-stick', '_bx_timeline_menu_item_title_system_item_stick', '_bx_timeline_menu_item_title_item_stick', 'javascript:void(0)', 'javascript:{js_object_view}.stickPost(this, {content_id}, 1)', '_self', 'thumbtack', '', 2147483647, 1, 0, 2),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-unstick', '_bx_timeline_menu_item_title_system_item_unstick', '_bx_timeline_menu_item_title_item_unstick', 'javascript:void(0)', 'javascript:{js_object_view}.stickPost(this, {content_id}, 0)', '_self', 'thumbtack', '', 2147483647, 1, 0, 3),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-promote', '_bx_timeline_menu_item_title_system_item_promote', '_bx_timeline_menu_item_title_item_promote', 'javascript:void(0)', 'javascript:{js_object_view}.promotePost(this, {content_id}, 1)', '_self', 'certificate ', '', 2147483647, 1, 0, 4),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-unpromote', '_bx_timeline_menu_item_title_system_item_unpromote', '_bx_timeline_menu_item_title_item_unpromote', 'javascript:void(0)', 'javascript:{js_object_view}.promotePost(this, {content_id}, 0)', '_self', 'certificate', '', 2147483647, 1, 0, 5),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-report', '_bx_timeline_menu_item_title_system_item_report', '', 'javascript:void(0)', '', '', '', '', 2147483647, 1, 0, 6),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-notes', '_sys_menu_item_title_system_va_notes', '_sys_menu_item_title_va_notes', 'javascript:void(0)', 'javascript:bx_get_notes(this,  ''{module_uri}'', {content_id});', '_self', 'exclamation-triangle', '', 2147483647, 1, 0, 7),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-mute', '_bx_timeline_menu_item_title_system_item_mute', '_bx_timeline_menu_item_title_item_mute', 'javascript:void(0)', 'javascript:{js_object_view}.muteAuthor(this, {content_id})', '_self', 'user-slash', '', 2147483647, 1, 0, 8),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-edit', '_bx_timeline_menu_item_title_system_item_edit', '_bx_timeline_menu_item_title_item_edit', 'javascript:void(0)', 'javascript:{js_object_view}.editPost(this, {content_id})', '_self', 'pencil-alt', '', 2147483647, 1, 0, 9),
+('bx_timeline_menu_item_manage', 'bx_timeline', 'item-delete', '_bx_timeline_menu_item_title_system_item_delete', '_bx_timeline_menu_item_title_item_delete', 'javascript:void(0)', 'javascript:{js_object_view}.deletePost(this, {content_id})', '_self', 'remove', '', 2147483647, 1, 0, 10);
+
+-- MENU: Item Actions (Comment, Vote, Share, Report, etc)
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_item_actions', '_bx_timeline_menu_title_item_actions', 'bx_timeline_menu_item_actions', 'bx_timeline', 15, 0, 1, 'BxTimelineMenuItemActions', 'modules/boonex/timeline/classes/BxTimelineMenuItemActions.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_item_actions', 'bx_timeline', '_bx_timeline_menu_set_title_item_actions', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-view', '_bx_timeline_menu_item_title_system_item_view', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 0),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-comment', '_bx_timeline_menu_item_title_system_item_comment', '_bx_timeline_menu_item_title_item_comment', 'javascript:void(0)', 'javascript:{comment_onclick}', '_self', 'comment', '', '', 0, 2147483647, 1, 0, 1, 10),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-vote', '_bx_timeline_menu_item_title_system_item_vote', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 20),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-reaction', '_bx_timeline_menu_item_title_system_item_reaction', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 30),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-score', '_bx_timeline_menu_item_title_system_item_score', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 40),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-share', '_bx_timeline_menu_item_title_system_item_share', '_bx_timeline_menu_item_title_item_share', 'javascript:void(0)', 'bx_menu_popup(''bx_timeline_menu_item_share'', this, {''id'':''bx_timeline_menu_item_share_{content_id}''}, {content_id:{content_id}, name:''{name}'', view:''{view}'', type:''{type}''});', '', 'share-alt', '', 'bx_timeline_menu_item_share', 1, 2147483647, 1, 0, 1, 50),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-repost', '_bx_timeline_menu_item_title_system_item_repost', '_bx_timeline_menu_item_title_item_repost', 'javascript:void(0)', 'javascript:{repost_onclick}', '', 'redo', '', '', 0, 2147483647, 0, 0, 1, 55),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-more', '_bx_timeline_menu_item_title_system_item_more', '_bx_timeline_menu_item_title_item_more', 'javascript:void(0)', 'bx_menu_popup(''bx_timeline_menu_item_manage'', this, {''id'':''bx_timeline_menu_item_manage_{content_id}''}, {content_id:{content_id}, name:''{name}'', view:''{view}'', type:''{type}''});', '', 'ellipsis-v', '', 'bx_timeline_menu_item_manage', 1, 2147483647, 0, 0, 1, 60);
+
+-- MENU: all actions menu for view entry 
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_item_actions_all', '_bx_timeline_menu_title_item_actions_all', 'bx_timeline_menu_item_actions_all', 'bx_timeline', 15, 0, 0, 'BxTimelineMenuItemActionsAll', 'modules/boonex/timeline/classes/BxTimelineMenuItemActionsAll.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_item_actions_all', 'bx_timeline', '_bx_timeline_menu_set_title_item_actions_all', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-view', '_bx_timeline_menu_item_title_system_item_view', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 0),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-comment', '_bx_timeline_menu_item_title_system_item_comment', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 10),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-vote', '_bx_timeline_menu_item_title_system_item_vote', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 20),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-reaction', '_bx_timeline_menu_item_title_system_item_reaction', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 30),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-score', '_bx_timeline_menu_item_title_system_item_score', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 40),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-share', '_bx_timeline_menu_item_title_system_item_share', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 50),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-repost', '_bx_timeline_menu_item_title_system_item_repost', '', '', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 55),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-pin', '_bx_timeline_menu_item_title_system_item_pin', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 100),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-unpin', '_bx_timeline_menu_item_title_system_item_unpin', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 110),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-stick', '_bx_timeline_menu_item_title_system_item_stick', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 120),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-unstick', '_bx_timeline_menu_item_title_system_item_unstick', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 130),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-promote', '_bx_timeline_menu_item_title_system_item_promote', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 140),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-unpromote', '_bx_timeline_menu_item_title_system_item_unpromote', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 150),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-report', '_bx_timeline_menu_item_title_system_item_report', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 160),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-mute', '_bx_timeline_menu_item_title_system_item_mute', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 165),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-edit', '_bx_timeline_menu_item_title_system_item_edit', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 170),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'item-delete', '_bx_timeline_menu_item_title_system_item_delete', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 180),
+('bx_timeline_menu_item_actions_all', 'bx_timeline', 'more-auto', '_sys_menu_item_title_system_va_more_auto', '_sys_menu_item_title_va_more_auto', 'javascript:void(0)', '', '', 'ellipsis-v', '', '', 0, 2147483647, 1, 0, 1, 9999);
+
+-- MENU: Item Counters (Comments, Votes, Reactions, etc)
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_item_counters', '_bx_timeline_menu_title_item_counters', 'bx_timeline_menu_item_counters', 'bx_timeline', 15, 0, 1, 'BxTimelineMenuItemCounters', 'modules/boonex/timeline/classes/BxTimelineMenuItemCounters.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_item_counters', 'bx_timeline', '_bx_timeline_menu_set_title_item_counters', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-view', '_bx_timeline_menu_item_title_system_item_view', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 0),
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-vote', '_bx_timeline_menu_item_title_system_item_vote', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 10),
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-reaction', '_bx_timeline_menu_item_title_system_item_reaction', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 20),
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-score', '_bx_timeline_menu_item_title_system_item_score', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 30),
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-comment', '_bx_timeline_menu_item_title_system_item_comment', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 40),
+('bx_timeline_menu_item_counters', 'bx_timeline', 'item-repost', '_bx_timeline_menu_item_title_system_item_repost', '', 'javascript:void(0)', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 50);
+
+-- MENU: Item Meta Info
+INSERT INTO `sys_objects_menu` (`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES
+('bx_timeline_menu_item_meta', '_sys_menu_title_snippet_meta', 'bx_timeline_menu_item_meta', 'bx_timeline', 15, 0, 1, 'BxTimelineMenuSnippetMeta', 'modules/boonex/timeline/classes/BxTimelineMenuSnippetMeta.php');
+
+INSERT INTO `sys_menu_sets` (`set_name`, `module`, `title`, `deletable`) VALUES
+('bx_timeline_menu_item_meta', 'bx_timeline', '_sys_menu_set_title_snippet_meta', 0);
+
+-- comment meta info menu
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('bx_timeline_menu_item_meta', 'bx_timeline', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', '', 0, 2147483647, 1, 0, 1, 1),
+('bx_timeline_menu_item_meta', 'bx_timeline', 'membership', '_sys_menu_item_title_system_sm_membership', '_sys_menu_item_title_sm_membership', '', '', '', '', '', '', 0, 2147483647, 0, 0, 1, 2);
+
+-- MENU: Post form attachments (Link, Photo, Video)
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_post_attachments', '_bx_timeline_menu_title_post_attachments', 'bx_timeline_menu_post_attachments', 'bx_timeline', 23, 0, 1, 'BxTimelineMenuPostAttachments', 'modules/boonex/timeline/classes/BxTimelineMenuPostAttachments.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_post_attachments', 'bx_timeline', '_bx_timeline_menu_set_title_post_attachments', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-link', '_bx_timeline_menu_item_title_system_add_link', '_bx_timeline_menu_item_title_add_link', 'javascript:void(0)', 'javascript:{js_object}.showAttachLink(this, {content_id});', '_self', 'link', '', '', 2147483647, 1, 0, 1, 1),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-photo-simple', '_bx_timeline_menu_item_title_system_add_photo_simple', '_bx_timeline_menu_item_title_add_photo', 'javascript:void(0)', 'javascript:{js_object_add_photo_simple}.showUploaderForm();', '_self', 'camera', '', '', 2147483647, 0, 0, 1, 2),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-photo-html5', '_bx_timeline_menu_item_title_system_add_photo_html5', '_bx_timeline_menu_item_title_add_photo', 'javascript:void(0)', 'javascript:{js_object_add_photo_html5}.showUploaderForm();', '_self', 'camera', '', '', 2147483647, 1, 0, 1, 3),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-video-simple', '_bx_timeline_menu_item_title_system_add_video_simple', '_bx_timeline_menu_item_title_add_video', 'javascript:void(0)', 'javascript:{js_object_add_video_simple}.showUploaderForm();', '_self', 'video', '', '', 2147483647, 0, 0, 1, 4),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-video-html5', '_bx_timeline_menu_item_title_system_add_video_html5', '_bx_timeline_menu_item_title_add_video', 'javascript:void(0)', 'javascript:{js_object_add_video_html5}.showUploaderForm();', '_self', 'video', '', '', 2147483647, 1, 0, 1, 5),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-video-record', '_bx_timeline_menu_item_title_system_add_video_record', '_bx_timeline_menu_item_title_add_video_record', 'javascript:void(0)', 'javascript:{js_object_add_video_record}.showUploaderForm();', '_self', 'fas circle', '', '', 2147483647, 1, 0, 1, 6),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-file-simple', '_bx_timeline_menu_item_title_system_add_file_simple', '_bx_timeline_menu_item_title_add_file', 'javascript:void(0)', 'javascript:{js_object_add_file_simple}.showUploaderForm();', '_self', 'file', '', '', 2147483647, 0, 0, 1, 7),
+('bx_timeline_menu_post_attachments', 'bx_timeline', 'add-file-html5', '_bx_timeline_menu_item_title_system_add_file_html5', '_bx_timeline_menu_item_title_add_file', 'javascript:void(0)', 'javascript:{js_object_add_file_html5}.showUploaderForm();', '_self', 'file', '', '', 2147483647, 1, 0, 1, 8);
+
+-- MENU: add to "add content" menu
+SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+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 
+('sys_add_content_links', 'bx_timeline', 'create-item', '_bx_timeline_menu_item_title_system_create_entry', '_bx_timeline_menu_item_title_create_entry', 'page.php?i=timeline-view', '', '', 'far clock col-green1', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+
+-- MENU: add menu item to profiles modules (trigger* menu sets are processed separately upon modules enable/disable)
+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 
+('trigger_profile_view_submenu', 'bx_timeline', 'timeline-view', '_bx_timeline_menu_item_title_system_view_timeline_view', '_bx_timeline_menu_item_title_view_timeline_view', 'page.php?i=timeline-view&profile_id={profile_id}', '', '', 'far clock col-green1', '', 2147483647, 1, 0, 0),
+('trigger_group_view_submenu', 'bx_timeline', 'timeline-view', '_bx_timeline_menu_item_title_system_view_timeline_view', '_bx_timeline_menu_item_title_view_timeline_view', 'page.php?i=timeline-view&profile_id={profile_id}', '', '', 'far clock col-green1', '', 2147483647, 1, 0, 0);
+
+-- MENU: profile stats
+SET @iPStatsMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
+('sys_profile_stats', 'bx_timeline', 'profile-stats-my-timeline', '_bx_timeline_menu_item_title_system_manage_my_timeline', '_bx_timeline_menu_item_title_manage_my_timeline', 'page.php?i=timeline-manage', '', '_self', 'far clock col-green1', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:28:"get_menu_addon_profile_stats";}', '', 2147483646, 1, 0, @iPStatsMenuOrder + 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);
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_account_dashboard_manage_tools', 'bx_timeline', 'timeline-administration', '_bx_timeline_menu_item_title_system_admt_timeline', '_bx_timeline_menu_item_title_admt_timeline', 'page.php?i=timeline-administration', '', '_self', 'clock', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_menu_addon_manage_tools";}', '', 192, 1, 0, @iManageMenuOrder + 1);
+
+-- SETTINGS
+SET @iTypeOrder = (SELECT MAX(`order`) FROM `sys_options_types` WHERE `group` = 'modules');
+INSERT INTO `sys_options_types`(`group`, `name`, `caption`, `icon`, `order`) VALUES 
+('modules', 'bx_timeline', '_bx_timeline', 'bx_timeline@modules/boonex/timeline/|std-icon.svg', IF(ISNULL(@iTypeOrder), 1, @iTypeOrder + 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+-- Category: General
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline_general', '_bx_timeline_options_category_general', 1);
+SET @iCategId = LAST_INSERT_ID();
+
+-- Events hidden by default:
+SET @iHdrIdComment = (SELECT `id` FROM `bx_timeline_handlers` WHERE `group`='comment' AND `type`='insert' AND `alert_unit`='comment' AND `alert_action`='added' LIMIT 1);
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
+('bx_timeline_enable_auto_approve', 'on', @iCategId, '_bx_timeline_option_enable_auto_approve', 'checkbox', '', '', '', '', 0),
+('bx_timeline_enable_edit', 'on', @iCategId, '_bx_timeline_option_enable_edit', 'checkbox', '', '', '', '', 1),
+('bx_timeline_enable_delete', 'on', @iCategId, '_bx_timeline_option_enable_delete', 'checkbox', '', '', '', '', 2),
+('bx_timeline_enable_count_all_views', '', @iCategId, '_bx_timeline_option_enable_count_all_views', 'checkbox', '', '', '', '', 3),
+('bx_timeline_enable_repost_own_actions', 'on', @iCategId, '_bx_timeline_option_enable_repost_own_actions', 'checkbox', '', '', '', '', 4),
+('bx_timeline_enable_hide_upon_delete', '', @iCategId, '_bx_timeline_option_enable_hide_upon_delete', 'checkbox', '', '', '', '', 5),
+('bx_timeline_events_hide', CONCAT_WS(',', @iHdrIdComment), @iCategId, '_bx_timeline_option_events_hide', 'rlist', '', '', '', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:21:"get_actions_checklist";}', 6);
+
+-- Category: Browse
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline_browse', '_bx_timeline_options_category_browse', 2);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
+('bx_timeline_enable_show_all', '', @iCategId, '_bx_timeline_option_enable_show_all', 'checkbox', '', '', '', '', 1),
+('bx_timeline_enable_jump_to_switcher', '', @iCategId, '_bx_timeline_option_enable_jump_to_switcher', 'checkbox', '', '', '', '', 2),
+('bx_timeline_enable_sort_by_reaction', '', @iCategId, '_bx_timeline_option_enable_sort_by_reaction', 'checkbox', '', '', '', '', 3),
+('bx_timeline_enable_sort_by_unread', '', @iCategId, '_bx_timeline_option_enable_sort_by_unread', 'checkbox', '', '', '', '', 4),
+
+('bx_timeline_events_per_page_profile', '12', @iCategId, '_bx_timeline_option_events_per_page_profile', 'digit', '', '', '', '', 10),
+('bx_timeline_events_per_page_account', '12', @iCategId, '_bx_timeline_option_events_per_page_account', 'digit', '', '', '', '', 11),
+('bx_timeline_events_per_page_home', '24', @iCategId, '_bx_timeline_option_events_per_page_home', 'digit', '', '', '', '', 12),
+('bx_timeline_events_per_page', '24', @iCategId, '_bx_timeline_option_events_per_page', 'digit', '', '', '', '', 13),
+('bx_timeline_rss_length', '5', @iCategId, '_bx_timeline_option_rss_length', 'digit', '', '', '', '', 14),
+
+('bx_timeline_enable_infinite_scroll', '', @iCategId, '_bx_timeline_option_enable_infinite_scroll', 'checkbox', '', '', '', '', 20),
+('bx_timeline_events_per_preload', '5', @iCategId, '_bx_timeline_option_events_per_preload', 'digit', '', '', '', '', 21),
+('bx_timeline_auto_preloads', '10', @iCategId, '_bx_timeline_option_auto_preloads', 'digit', '', '', '', '', 22),
+
+('bx_timeline_enable_hot', 'on', @iCategId, '_bx_timeline_option_enable_hot', 'checkbox', '', '', '', '', 30),
+('bx_timeline_hot_sources', 'content,comment,vote', @iCategId, '_bx_timeline_option_hot_sources', 'list', '', '', '', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:25:"get_hot_sources_checklist";}', 31),
+('bx_timeline_hot_threshold_age', '0', @iCategId, '_bx_timeline_option_hot_threshold_age', 'digit', '', '', '', '', 32),
+('bx_timeline_hot_threshold_comment', '1', @iCategId, '_bx_timeline_option_hot_threshold_comment', 'digit', '', '', '', '', 33),
+('bx_timeline_hot_threshold_vote', '2', @iCategId, '_bx_timeline_option_hot_threshold_vote', 'digit', '', '', '', '', 34),
+('bx_timeline_hot_interval', '48', @iCategId, '_bx_timeline_option_hot_interval', 'digit', '', '', '', '', 35);
+
+-- Category: Card
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline_card', '_bx_timeline_options_category_card', 3);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
+('bx_timeline_enable_brief_cards', '', @iCategId, '_bx_timeline_option_enable_brief_cards', 'checkbox', '', '', '', '', 2),
+('bx_timeline_title_chars', '64', @iCategId, '_bx_timeline_option_title_chars', 'digit', '', '', '', '', 5),
+('bx_timeline_title_chars_short', '32', @iCategId, '_bx_timeline_option_title_chars_short', 'digit', '', '', '', '', 6),
+('bx_timeline_videos_preload', 'auto', @iCategId, '_bx_timeline_option_videos_preload', 'select', '', '', '', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:26:"get_options_videos_preload";}', 10),
+('bx_timeline_videos_autoplay', 'off', @iCategId, '_bx_timeline_option_videos_autoplay', 'select', '', '', '', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_options_videos_autoplay";}', 11),
+('bx_timeline_preload_comments', '0', @iCategId, '_bx_timeline_option_preload_comments', 'digit', '', '', '', '', 20),
+('bx_timeline_attachments_layout', 'gallery', @iCategId, '_bx_timeline_option_attachments_layout', 'select', '', '', '', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_options_attachments_layout";}', 30);
+
+-- Category: Cache
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline_cache', '_bx_timeline_options_category_cache', 4);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
+('bx_timeline_enable_cache_item', 'on', @iCategId, '_bx_timeline_option_enable_cache_item', 'checkbox', '', '', '', '', 1),
+('bx_timeline_cache_item_engine', 'File', @iCategId, '_bx_timeline_option_cache_item_engine', 'select', '', '', '', 'File,Memcache,APC,XCache', 2),
+('bx_timeline_cache_item_lifetime', '604800', @iCategId, '_bx_timeline_option_cache_item_lifetime', 'digit', '', '', '', '', 3);
+
+-- Category: Post form
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline_post', '_bx_timeline_options_category_post', 5);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_params`, `check_error`, `extra`, `order`) VALUES
+('bx_timeline_enable_editor_toolbar', '', @iCategId, '_bx_timeline_option_enable_editor_toolbar', 'checkbox', '', '', '', '', 1),
+('bx_timeline_editor_auto_attach_insertion', '', @iCategId, '_bx_timeline_option_editor_auto_attach_insertion', 'checkbox', '', '', '', '', 2),
+('bx_timeline_limit_attach_links', '0', @iCategId, '_bx_timeline_option_limit_attach_links', 'digit', '', '', '', '', 10);
+
+
+-- PRIVACY 
+INSERT INTO `sys_objects_privacy` (`object`, `module`, `action`, `title`, `default_group`, `table`, `table_field_id`, `table_field_author`, `override_class_name`, `override_class_file`) VALUES
+('bx_timeline_privacy_view', 'bx_timeline', 'view', '_bx_timeline_privacy_view', '3', 'bx_timeline_events', 'id', 'owner_id', 'BxTimelinePrivacy', 'modules/boonex/timeline/classes/BxTimelinePrivacy.php');
+
+
+-- ACL
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'post', NULL, '_bx_timeline_acl_action_post', '', 1, 3);
+SET @iIdActionPost = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'edit', NULL, '_bx_timeline_acl_action_edit', '', 1, 3);
+SET @iIdActionEdit = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'delete', NULL, '_bx_timeline_acl_action_delete', '', 1, 3);
+SET @iIdActionDelete = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'vote', NULL, '_bx_timeline_acl_action_vote', '', 1, 0);
+SET @iIdActionVote = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'repost', NULL, '_bx_timeline_acl_action_repost', '', 1, 3);
+SET @iIdActionRepost = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'send', NULL, '_bx_timeline_acl_action_send', '', 1, 3);
+SET @iIdActionSend = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'mute', NULL, '_bx_timeline_acl_action_mute', '', 1, 3);
+SET @iIdActionMute = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'pin', NULL, '_bx_timeline_acl_action_pin', '', 1, 3);
+SET @iIdActionPin = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'stick', NULL, '_bx_timeline_acl_action_stick', '', 1, 3);
+SET @iIdActionStick = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_timeline', 'promote', NULL, '_bx_timeline_acl_action_promote', '', 1, 3);
+SET @iIdActionPromote = LAST_INSERT_ID();
+
+SET @iUnauthenticated = 1;
+SET @iAccount = 2;
+SET @iStandard = 3;
+SET @iUnconfirmed = 4;
+SET @iPending = 5;
+SET @iSuspended = 6;
+SET @iModerator = 7;
+SET @iAdministrator = 8;
+SET @iPremium = 9;
+
+INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES
+
+-- post
+(@iStandard, @iIdActionPost),
+(@iModerator, @iIdActionPost),
+(@iAdministrator, @iIdActionPost),
+(@iPremium, @iIdActionPost),
+
+-- edit any post
+(@iModerator, @iIdActionEdit),
+(@iAdministrator, @iIdActionEdit),
+
+-- delete any post
+(@iModerator, @iIdActionDelete),
+(@iAdministrator, @iIdActionDelete),
+
+-- vote
+(@iStandard, @iIdActionVote),
+(@iModerator, @iIdActionVote),
+(@iAdministrator, @iIdActionVote),
+(@iPremium, @iIdActionVote),
+
+-- repost
+(@iStandard, @iIdActionRepost),
+(@iModerator, @iIdActionRepost),
+(@iAdministrator, @iIdActionRepost),
+(@iPremium, @iIdActionRepost),
+
+-- send
+(@iStandard, @iIdActionSend),
+(@iModerator, @iIdActionSend),
+(@iAdministrator, @iIdActionSend),
+(@iPremium, @iIdActionSend),
+
+-- mute
+(@iStandard, @iIdActionMute),
+(@iModerator, @iIdActionMute),
+(@iAdministrator, @iIdActionMute),
+(@iPremium, @iIdActionMute),
+
+-- pin any post
+(@iModerator, @iIdActionPin),
+(@iAdministrator, @iIdActionPin),
+
+-- stick any post
+(@iModerator, @iIdActionStick),
+(@iAdministrator, @iIdActionStick),
+
+-- promote any post
+(@iModerator, @iIdActionPromote),
+(@iAdministrator, @iIdActionPromote);
+
+
+-- ALERTS
+INSERT INTO `sys_alerts_handlers`(`name`, `class`, `file`, `service_call`) VALUES 
+('bx_timeline', 'BxTimelineResponse', 'modules/boonex/timeline/classes/BxTimelineResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('system', 'clear_cache', @iHandler),
+('system', 'enable', @iHandler),
+('system', 'disable', @iHandler),
+
+('account', 'confirm', @iHandler),
+('account', 'unconfirm', @iHandler),
+
+('profile', 'approve', @iHandler),
+('profile', 'disapprove', @iHandler),
+('profile', 'activate', @iHandler),
+('profile', 'suspend', @iHandler),
+('profile', 'delete', @iHandler),
+
+('comment', 'added', @iHandler),
+('comment', 'edited', @iHandler),
+('comment', 'deleted', @iHandler),
+
+('bx_timeline_videos_mp4', 'transcoded', @iHandler);
+
+
+-- SEARCH
+SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
+INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `ClassName`, `ClassPath`) VALUES
+('bx_timeline', '_bx_timeline', @iSearchOrder + 1, 'BxTimelineSearchResult', 'modules/boonex/timeline/classes/BxTimelineSearchResult.php'),
+('bx_timeline_cmts', '_bx_timeline_cmts', @iSearchOrder + 2, 'BxTimelineCmtsSearchResult', 'modules/boonex/timeline/classes/BxTimelineCmtsSearchResult.php');
+
+
+-- GRIDS: connection mute
+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`, `responsive`, `override_class_name`, `override_class_file`) VALUES
+('bx_timeline_mute', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxTimelineGridMute', 'modules/boonex/timeline/classes/BxTimelineGridMute.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `hidden_on`, `order`) VALUES
+('bx_timeline_mute', 'name', '_sys_name', '60%', '', '', 1),
+('bx_timeline_mute', 'info', '', '20%', '', '1', 2),
+('bx_timeline_mute', 'actions', '', '20%', '', '', 3);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
+('bx_timeline_mute', 'single', 'delete', '', 'remove', 0, 1, 2);
+
+-- GRIDS: moderation tools
+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
+('bx_timeline_administration', 'Sql', 'SELECT * FROM `bx_timeline_events` WHERE 1 AND `active`=''1'' ', 'bx_timeline_events', 'id', 'date', 'status_admin', '', 20, NULL, 'start', '', 'title,description', '', 'like', 'reports', '', 192, 'BxTimelineGridAdministration', 'modules/boonex/timeline/classes/BxTimelineGridAdministration.php'),
+('bx_timeline_common', 'Sql', 'SELECT * FROM `bx_timeline_events` WHERE 1 AND `active`=''1'' ', 'bx_timeline_events', 'id', 'date', 'status', '', 20, NULL, 'start', '', 'title,description', '', 'like', '', '', 2147483647, 'BxTimelineGridCommon', 'modules/boonex/timeline/classes/BxTimelineGridCommon.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
+('bx_timeline_administration', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
+('bx_timeline_administration', 'switcher', '_bx_timeline_grid_column_title_adm_active', '8%', 0, '', '', 2),
+('bx_timeline_administration', 'reports', '_sys_txt_reports_title', '5%', 0, '', '', 3),
+('bx_timeline_administration', 'description', '_bx_timeline_grid_column_title_adm_description', '25%', 0, '25', '', 4),
+('bx_timeline_administration', 'date', '_bx_timeline_grid_column_title_adm_added', '20%', 1, '25', '', 5),
+('bx_timeline_administration', 'owner_id', '_bx_timeline_grid_column_title_adm_author', '20%', 0, '25', '', 6),
+('bx_timeline_administration', 'actions', '', '20%', 0, '', '', 7),
+
+('bx_timeline_common', 'checkbox', '_sys_select', '2%', 0, 0, '', 1),
+('bx_timeline_common', 'switcher', '_bx_timeline_grid_column_title_adm_active', '8%', 0, 0, '', 2),
+('bx_timeline_common', 'description', '_bx_timeline_grid_column_title_adm_description', '30%', 0, 25, '', 3),
+('bx_timeline_common', 'date', '_bx_timeline_grid_column_title_adm_added', '20%', 1, 25, '', 4),
+('bx_timeline_common', 'status_admin', '_bx_posts_grid_column_title_adm_status_admin', '20%', 0, 16, '', 5),
+('bx_timeline_common', 'actions', '', '20%', 0, 0, '', 6);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
+('bx_timeline_administration', 'bulk', 'delete', '_bx_timeline_grid_action_title_adm_delete', '', 0, 1, 1),
+('bx_timeline_administration', 'single', 'delete', '_bx_timeline_grid_action_title_adm_delete', 'remove', 1, 1, 2),
+('bx_timeline_administration', 'single', 'audit_content', '_bx_timeline_grid_action_title_adm_audit_content', 'search', 1, 0, 4),
+
+('bx_timeline_common', 'bulk', 'delete', '_bx_timeline_grid_action_title_adm_delete', '', 0, 1, 1),
+('bx_timeline_common', 'single', 'delete', '_bx_timeline_grid_action_title_adm_delete', 'remove', 1, 1, 2);
+
+
+-- METATAGS
+INSERT INTO `sys_objects_metatags` (`object`, `module`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
+('bx_timeline', 'bx_timeline', 'bx_timeline_meta_keywords', 'bx_timeline_meta_locations', 'bx_timeline_meta_mentions', '', '');
+
+
+-- CONNECTIONS
+INSERT INTO `sys_objects_connection` (`object`, `table`, `profile_initiator`, `profile_content`, `type`, `override_class_name`, `override_class_file`) VALUES
+('bx_timeline_mute', 'bx_timeline_mute', 1, 1, 'one-way', '', '');
+
+
+-- EMAIL TEMPLATES
+INSERT INTO `sys_email_templates` (`Module`, `NameSystem`, `Name`, `Subject`, `Body`) VALUES 
+('bx_timeline', '_bx_timeline_et_txt_name_send', 'bx_timeline_send', '_bx_timeline_et_txt_subject_send', '_bx_timeline_et_txt_body_send');
+
+
+-- CRON
+INSERT INTO `sys_cron_jobs` (`name`, `time`, `class`, `file`, `service_call`) VALUES
+('bx_timeline_hot', '0 * * * *', 'BxTimelineCronHot', 'modules/boonex/timeline/classes/BxTimelineCronHot.php', ''),
+('bx_timeline_publishing', '* * * * *', 'BxTimelineCronPublishing', 'modules/boonex/timeline/classes/BxTimelineCronPublishing.php', ''),
+('bx_timeline_clean', '0 0 * * *', 'BxTimelineCronClean', 'modules/boonex/timeline/classes/BxTimelineCronClean.php', '');

+ 330 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/js/post.js

@@ -0,0 +1,330 @@
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+function BxTimelinePost(oOptions) {
+    this._sActionsUri = oOptions.sActionUri;
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oTimelinePost' : oOptions.sObjName;
+    this._iOwnerId = oOptions.iOwnerId == undefined ? 0 : parseInt(oOptions.iOwnerId);
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'slide' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+    this._bAutoAttach = oOptions.bAutoAttach == undefined ? false : oOptions.bAutoAttach;
+    this._sAutoUploader = oOptions.sAutoUploader == undefined ? '' : oOptions.sAutoUploader;
+    this._sAutoUploaderId = oOptions.sAutoUploaderId == undefined ? '' : oOptions.sAutoUploaderId;
+    this._iLimitAttachLinks = oOptions.iLimitAttachLinks == undefined ? 0 : oOptions.iLimitAttachLinks;
+    this._sLimitAttachLinksErr = oOptions.sLimitAttachLinksErr == undefined ? '' : oOptions.sLimitAttachLinksErr;
+    this._oAttachedLinks = oOptions.oAttachedLinks == undefined ? {} : oOptions.oAttachedLinks;
+    this._sVideosAutoplay = oOptions.sVideosAutoplay == undefined ? 'off' : oOptions.sVideosAutoplay;
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+
+    var $this = this;
+    if (typeof window.glOnInitEditor === 'undefined')
+        window.glOnInitEditor = [];
+
+    $(document).ready(function () {
+        var oPost = $($this.sIdPost + ' form');
+        if(!oPost || oPost.length == 0)
+            oPost = $($this.sIdPostForm);
+
+    	oPost.each(function() {
+            var sId = $(this).attr('id');
+            $this.initFormPost(sId);
+
+            $this.initTrackerInsertSpace(sId);
+            if($this._bAutoAttach) 
+                $this.initTrackerInsertImage(sId);
+    	});
+    });
+}
+
+BxTimelinePost.prototype = new BxTimelineMain();
+
+BxTimelinePost.prototype.initFormPost = function(sFormId)
+{
+    var $this = this;
+    var oForm = $('#' + sFormId);
+    var oTextarea = oForm.find('textarea');
+    autosize(oTextarea);
+
+    oForm.ajaxForm({
+        dataType: "json",
+        beforeSubmit: function (formData, jqForm, options) {
+            window[$this._sObjName].beforeFormPostSubmit(oForm);
+        },
+        success: function (oData) {
+            window[$this._sObjName].afterFormPostSubmit(oForm, oData);
+        }
+    });
+};
+
+BxTimelinePost.prototype.onFormPostSubmit = function(oForm)
+{
+    if(this.isLockedForm($(oForm)))
+        return false;
+
+    return true;
+};
+
+BxTimelinePost.prototype.beforeFormPostSubmit = function(oForm)
+{
+    this.loadingInButton($(oForm).children().find(':submit'), true);
+};
+
+BxTimelinePost.prototype.afterFormPostSubmit = function (oForm, oData)
+{
+    var $this = this;
+    var fContinue = function() {
+        if(oData && oData.form != undefined && oData.form_id != undefined) {
+            $('#' + oData.form_id).replaceWith(oData.form);
+            $this.initFormPost(oData.form_id);
+
+            return;
+        }
+
+        if(oData && oData.id != undefined) {
+            var iId = parseInt(oData.id);
+            if(iId <= 0) 
+                return;
+
+            $('.' + $this.sClassView + ':visible').each(function() {
+                var oView = $(this);
+                $this._getPost(oView, iId, jQuery.extend({}, $this._oRequestParams, {view: $this._getView(oView), afps_loading: 1}));
+            });
+        }
+
+        $this._getForm(oForm);
+    };
+
+    this.loadingInButton($(oForm).children().find(':submit'), false);
+
+    if(oData && oData.message != undefined)
+        bx_alert(oData.message, fContinue);
+    else
+        fContinue();
+};
+    
+BxTimelinePost.prototype.initFormAttachLink = function(sFormId)
+{
+    var $this = this;
+    var oForm = $('#' + sFormId);
+
+    oForm.ajaxForm({
+        dataType: "json",
+        clearForm: true,
+        beforeSubmit: function (formData, jqForm, options) {
+            window[$this._sObjName].beforeFormAttachLinkSubmit(oForm);
+        },
+        success: function (oData) {
+            window[$this._sObjName].afterFormAttachLinkSubmit(oForm, oData);
+        }
+    });
+};
+
+BxTimelinePost.prototype.beforeFormAttachLinkSubmit = function(oForm)
+{
+    this.loadingInButton($(oForm).children().find(':submit'), true);
+};
+
+BxTimelinePost.prototype.afterFormAttachLinkSubmit = function (oForm, oData)
+{
+    var $this = this;
+    var fContinue = function() {
+        if(oData && oData.item != undefined) {
+            $('#' + $this._aHtmlIds['attach_link_popup']).dolPopupHide({});
+
+            if(!$.trim(oData.item).length)
+                return;
+
+            //--- Mark that 'attach link' process was finished.
+            $this._oAttachedLinks[oData.url] = oData.id;
+
+            var iEventId = 0;
+            if(oData && oData.event_id != undefined)
+                iEventId = parseInt(oData.event_id);
+
+            var oItem = $(oData.item).hide();
+            $('#' + $this._aHtmlIds['attach_link_form_field'] + iEventId).prepend(oItem).find('#' + oItem.attr('id')).bx_anim('show', $this._sAnimationEffect, $this._sAnimationSpeed, function() {
+                $(this).bxProcessHtml();
+            });
+
+            $this.unlockForm($('#' + $this._aHtmlIds['attach_link_form_field'] + iEventId).parents('form:first'));
+            return;
+        }
+
+        if(oData && oData.form != undefined && oData.form_id != undefined) {
+            $('#' + oData.form_id).replaceWith(oData.form);
+            $this.initFormAttachLink(oData.form_id);
+
+            return;
+        }
+    };
+
+    this.loadingInButton($(oForm).find(':submit'), false);
+
+    if(oData && oData.message != undefined)
+        bx_alert(oData.message, fContinue);
+    else
+        fContinue();
+};
+
+BxTimelinePost.prototype.deleteAttachLink = function(oLink, iId)
+{
+    var $this = this;
+    var oData = this._getDefaultData();
+    oData['id'] = iId;
+
+    var oAttachLink = $('#' + this._aHtmlIds['attach_link_item'] + iId);
+    bx_loading(oAttachLink, true);
+    
+    jQuery.post (
+        this._sActionsUrl + 'delete_attach_link/',
+        oData,
+        function(oData) {
+            var fContinue = function() {
+                if(oData && oData.code != undefined && oData.code == 0) {
+                    oAttachLink.bx_anim('hide', $this._sAnimationEffect, $this._sAnimationSpeed, function() {
+                        $(this).remove;
+
+                        if(oData.url != undefined && oData.url.length != 0)
+                            delete $this._oAttachedLinks[oData.url];
+                    });
+                }
+            };
+
+            bx_loading(oAttachLink, false);
+
+            if(oData && oData.message != undefined)
+                bx_alert(oData.message, fContinue);
+            else
+                    fContinue();
+        },
+        'json'
+    );
+
+    return false;
+};
+
+BxTimelinePost.prototype.showAttachLink = function(oLink, iEventId)
+{
+    if(this._iLimitAttachLinks != 0 && Object.keys(this._oAttachedLinks).length >= this._iLimitAttachLinks) {
+        bx_alert(this._sLimitAttachLinksErr);
+        return false;
+    }
+
+    var oData = this._getDefaultData();
+    oData['event_id'] = iEventId;
+
+    $(window).dolPopupAjax({
+        id: {value: this._aHtmlIds['attach_link_popup'], force: true},
+        url: bx_append_url_params(this._sActionsUri + 'get_attach_link_form/', oData),
+        closeOnOuterClick: false,
+        removeOnClose: true
+    });
+
+    return false;
+};
+
+BxTimelinePost.prototype._getForm = function(oElement)
+{
+    var $this = this;
+    var oData = this._getDefaultData();
+
+    jQuery.post (
+        this._sActionsUrl + 'get_post_form/',
+        oData,
+        function(oData) {
+            if(oData && oData.options != undefined)
+                $this.updateOptions(oData.options);
+
+            if(oData && oData.form != undefined && oData.form_id != undefined) {
+                $('#' + oData.form_id).replaceWith(oData.form);
+                $this.initFormPost(oData.form_id);
+            }
+        },
+        'json'
+    );
+};
+
+BxTimelinePost.prototype._onGetPost = function(oData)
+{
+    var $this = this;
+    var fContinue = function(oData) {
+        if(!$.trim(oData.item).length) 
+            return;
+
+        var aTypes = Array.isArray(oData.type) ? oData.type : new Array(oData.type);
+        aTypes.forEach(function(sType) {
+            oData['type'] = sType;
+            $this.oView = $($this._getHtmlId('main', oData));
+
+            /*
+             * For backward compatibility.
+             * Current UPF: 'Post to Feed' and Timeline: 'Post to Feed' forms 
+             * should work with an old Account Feed ('Owner and Connections') block.
+             */
+            if(!$this.oView.length && oData['type'] == 'feed') {
+                oData['type'] = 'owner_and_connections';
+                $this.oView = $($this._getHtmlId('main', oData));
+            }
+
+            var oLoadMore = $this.oView.find('.' + $this.sSP + '-load-more');
+            if(!oLoadMore.is(':visible'))
+                oLoadMore.show();
+
+            var oEmpty = $this.oView.find('.' + $this.sSP + '-empty');
+            if(oEmpty.is(':visible'))
+                oEmpty.hide();
+
+            var oContent = $(oData.item).bxProcessHtml();
+            switch(oData.view) {
+                case 'timeline':
+                    var oItems = $this.oView.find('.' + $this.sClassItems);
+                    var oDivider  = oItems.find('.' + $this.sClassDividerToday);
+                    var bDivider = oDivider.length > 0;
+
+                    if(bDivider && !oDivider.is(':visible'))
+                        oDivider.show();
+
+                    oContent.hide();
+
+                    var oItem = bDivider ? oDivider.after(oContent).next('.' + $this.sClassItem + ':hidden') : oContent.prependTo(oItems);
+                    oItem.bx_anim('show', $this._sAnimationEffect, $this._iAnimationSpeed, function() {
+                        $(this).find('.bx-tl-item-text .bx-tl-content').checkOverflowHeight($this.sSP + '-overflow', function(oElement) {
+                            $this.onFindOverflow(oElement);
+                        });
+
+                        $this.initFlickity($this.oView);
+                    });
+
+                    if($this._sVideosAutoplay != 'off')
+                        $this.initVideos($this.oView);
+                    break;
+
+                case 'outline':
+                    $this.prependMasonry(oContent, function(oItems) {
+                        $(oItems).find('.bx-tl-item-text .bx-tl-content').checkOverflowHeight($this.sSP + '-overflow', function(oElement) {
+                            $this.onFindOverflow(oElement);
+                        });
+
+                        $this.initFlickity($this.oView);
+                    });
+                    break;
+            }
+        });
+    };
+
+    if(oData && oData.message != undefined && oData.message.length != 0)
+        bx_alert(oData.message, function() {
+                fContinue(oData);
+        });
+    else
+        fContinue(oData);
+};

+ 72 - 0
modules/boonex/timeline/updates/13.0.9_13.0.10/source/template/css/post.css

@@ -0,0 +1,72 @@
+div.bx-tl-post {
+    position: relative;
+}
+div.bx-tl-post-cnt {
+    position: relative;
+    display: block;
+}
+
+/*--- Post Form Styles ---*/
+#bx_timeline_post textarea.bx-form-input-textarea {
+    height: 2.2rem;
+}
+
+#bx_timeline_post div#bx-form-element-link,
+#bx_timeline_post div#bx-form-element-photo,
+#bx_timeline_post div#bx-form-element-video,
+#bx_timeline_post .bx-form-input-files-uploaders {
+    margin-top: 0px;
+}
+#bx_timeline_post div#bx-form-element-attachments ul.bx-menu-btns-hor {
+    text-align: left;
+}
+div.bx-tl-uploader-file {
+    position: relative;
+    float: left;
+}
+#bx_timeline_post div.bx-uploader-ghost-cnt {
+    min-width: 6.25rem;
+}
+div.bx-tl-uploader-file-preview {
+    overflow: hidden;
+}
+div.bx-tl-uploader-file-preview,
+div.bx-tl-uploader-file-preview img {
+    width: 6.25rem;
+    height: 6.25rem;
+}
+div.bx-tl-uploader-file-preview img {
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: contain;
+}
+
+/*--- Attach Link Form Field Styles ---*/
+div.bx-tl-attach-link-form-field {}
+div.bx-tl-al-item {
+    position: relative;
+
+    overflow: hidden;
+}
+div.bx-tl-al-item.embed {
+    display: inline-block;
+    vertical-align: top;
+    width: 50%;
+}
+div.bx-tl-ali-thumbnail img {
+    width: 100px;
+    height: 100px;
+}
+div.bx-tl-ali-embed {
+    max-height: 250px;
+    overflow-y: scroll;
+}
+div.bx-tl-ali-actions .bx-btn {
+    display: inline-block;
+    float: none;
+}
+
+/*--- Froala Styles ---*/
+.bx-form-input-wrapper-textarea .fr-toolbar {
+    z-index: 0;
+}