AntonLV 12 лет назад
Родитель
Сommit
0e412a62da
52 измененных файлов с 6648 добавлено и 0 удалено
  1. 46 0
      modules/boonex/convos/updates/8.0.1_8.0.2/install/config.php
  2. 15 0
      modules/boonex/convos/updates/8.0.1_8.0.2/install/installer.php
  3. 3 0
      modules/boonex/convos/updates/8.0.1_8.0.2/install/sql/enable.sql
  4. 75 0
      modules/boonex/convos/updates/8.0.1_8.0.2/source/classes/BxCnvCmts.php
  5. 77 0
      modules/boonex/convos/updates/8.0.1_8.0.2/source/install/config.php
  6. 193 0
      modules/boonex/convos/updates/8.0.1_8.0.2/source/install/sql/enable.sql
  7. 47 0
      modules/boonex/english/updates/8.0.4_8.0.5/install/config.php
  8. 15 0
      modules/boonex/english/updates/8.0.4_8.0.5/install/installer.php
  9. 10 0
      modules/boonex/english/updates/8.0.4_8.0.5/install/langs/en.xml
  10. 2070 0
      modules/boonex/english/updates/8.0.4_8.0.5/source/data/langs/system.xml
  11. 71 0
      modules/boonex/english/updates/8.0.4_8.0.5/source/install/config.php
  12. 46 0
      modules/boonex/lagoon/updates/8.0.0_8.0.1/install/config.php
  13. 15 0
      modules/boonex/lagoon/updates/8.0.0_8.0.1/install/installer.php
  14. 23 0
      modules/boonex/lagoon/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplCmtsForm.php
  15. 68 0
      modules/boonex/lagoon/updates/8.0.0_8.0.1/source/install/config.php
  16. 53 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/install/config.php
  17. 15 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/install/installer.php
  18. 8 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_convos/css/main.css
  19. 6 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_notifications/css/view.css
  20. 12 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_posts/css/main.css
  21. 43 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_timeline/css/view.css
  22. 6 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/dashboard.css
  23. 21 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/general.css
  24. 5 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/launcher.css
  25. 27 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/scripts/BxTemplStudioConfig.php
  26. 82 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/_header.html
  27. 72 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/_sub_header.html
  28. 5 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/cmts.css
  29. 13 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/default.less
  30. 5 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/informer.css
  31. 34 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/menu.css
  32. 23 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplCmtsForm.php
  33. 44 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplConfig.php
  34. 68 0
      modules/boonex/ocean/updates/8.0.0_8.0.1/source/install/config.php
  35. 53 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/install/config.php
  36. 15 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/install/installer.php
  37. 4 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/install/langs/en.xml
  38. 8 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/install/sql/enable.sql
  39. 362 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineDb.php
  40. 174 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineMenuItemActions.php
  41. 89 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineMenuItemManage.php
  42. 859 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineModule.php
  43. 880 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineTemplate.php
  44. 75 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/config.php
  45. 105 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/langs/en.xml
  46. 151 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/sql/enable.sql
  47. 89 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/main.js
  48. 204 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/post.js
  49. 56 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/share.js
  50. 196 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/view.js
  51. 5 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/template/menu_item.html
  52. 7 0
      modules/boonex/timeline/updates/8.0.2_8.0.3/source/template/share_element_block.html

+ 46 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/install/config.php

@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Conversations',
+    'version_from' => '8.0.1',
+	'version_to' => '8.0.2',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '8.0.0.A7'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/convos/updates/update_8.0.1_8.0.2/',
+	'home_uri' => 'convos_update_801_802',
+
+	'module_dir' => 'boonex/convos/',
+	'module_uri' => 'convos',
+
+    'db_prefix' => 'bx_convos_',
+    'class_prefix' => 'BxCnv',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Conversations',
+);

+ 15 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/install/installer.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+bx_import('BxDolStudioUpdater');
+
+class BxCnvUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 3 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/install/sql/enable.sql

@@ -0,0 +1,3 @@
+UPDATE `sys_pages_blocks` SET `designbox_id`='3' WHERE `object`='bx_convos_view_entry' AND `title`='_bx_cnv_page_block_title_entry_collaborators' LIMIT 1;
+UPDATE `sys_pages_blocks` SET `designbox_id`='3' WHERE `object`='bx_convos_view_entry' AND `title`='_bx_cnv_page_block_title_entry_actions' LIMIT 1;
+UPDATE `sys_pages_blocks` SET `designbox_id`='3' WHERE `object`='bx_convos_view_entry' AND `title`='_bx_cnv_page_block_title_entry_author' LIMIT 1;

+ 75 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/source/classes/BxCnvCmts.php

@@ -0,0 +1,75 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Convos Convos
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxTemplCmts');
+
+class BxCnvCmts extends BxTemplCmts
+{
+    /**
+     * Comments are enabled for collaborators only
+     */
+    public function isEnabled ()
+    {
+        if (!parent::isEnabled ())
+            return false;
+
+        bx_import('BxDolModule');
+        $oModule = BxDolModule::getInstance('bx_convos');
+        if (!$oModule->_oDb->getContentInfoById((int)$this->getId()))
+            return false;
+
+        $aCollaborators = $oModule->_oDb->getCollaborators((int)$this->getId());
+        if (!isset($aCollaborators[bx_get_logged_profile_id()]))
+            return false;
+
+        return true;
+    }
+
+    public function isRemoveAllowed ($aCmt, $isPerformAction = false)
+    {
+        if (isAdmin())
+            return true;
+
+        return false;
+    }
+
+    public function msgErrRemoveAllowed ()
+    {
+        return _t('_sys_txt_access_denied');
+    }
+
+    public function isEditAllowed ($aCmt, $isPerformAction = false)
+    {
+        return $this->isRemoveAllowed ($aCmt, $isPerformAction);
+    }
+
+    public function msgErrEditAllowed ()
+    {
+        return $this->msgErrRemoveAllowed ();
+    }
+
+    protected function _getFormObject($sAction = BX_CMT_ACTION_POST)
+    {
+        $oForm = parent::_getFormObject($sAction);
+        $oForm->aInputs['cmt_submit']['value'] = _t('_sys_send');
+        return $oForm;
+    }
+
+    function getCommentsBlock($iParentId = 0, $iVParentId = 0, $bInDesignbox = true)
+    {
+        $mixedBlock = parent::getCommentsBlock($iParentId, $iVParentId, $bInDesignbox);
+        if (is_array($mixedBlock) && isset($mixedBlock['title']))
+            $mixedBlock['title'] = _t('_bx_cnv_page_block_title_entry_comments', $this->getCommentsCount());
+        return $mixedBlock;
+    }
+}
+
+/** @} */

+ 77 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/source/install/config.php

@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Convos Convos
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_convos',
+    'title' => 'Conversations',
+    'note' => 'Conversations module.',
+    'version' => '8.0.2',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/convos/',
+    'home_uri' => 'convos',
+
+    'db_prefix' => 'bx_convos_',
+    'class_prefix' => 'BxCnv',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Conversations',
+
+    /**
+     * 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,
+        'recompile_menus' => 1,
+        'recompile_permalinks' => 1,
+        'recompile_alerts' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'recompile_menus' => 1,
+        'recompile_permalinks' => 1,
+        'recompile_alerts' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 193 - 0
modules/boonex/convos/updates/8.0.1_8.0.2/source/install/sql/enable.sql

@@ -0,0 +1,193 @@
+
+-- 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_convos', '_bx_cnv', 'bx_convos@modules/boonex/convos/|std-mi.png', IF(ISNULL(@iTypeOrder), 1, @iTypeOrder + 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_convos', '_bx_cnv', 1);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_error`, `extra`, `order`) VALUES
+('bx_convos_preview_messages_num', '3', @iCategId, '_bx_cnv_option_preview_messages_num', 'digit', '', '', '', 1);
+
+-- PAGE: dash
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('sys_dashboard', 3, 'bx_convos', '_bx_cnv_page_block_title_convos', 11, 2147483646, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:17:\"messages_previews\";}', 0, 1, 1, 0);
+
+
+-- PAGE: create entry
+
+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_convos_create_entry', '_bx_cnv_page_title_sys_create_entry', '_bx_cnv_page_title_create_entry', 'bx_convos', 5, 2147483647, 1, 'start-convo', 'page.php?i=start-convo', '', '', '', 0, 1, 0, 'BxCnvPageBrowse', 'modules/boonex/convos/classes/BxCnvPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_convos_create_entry', 1, 'bx_convos', '_bx_cnv_page_block_title_create_entry', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:9:"bx_convos";s:6:"method";s:13:"entity_create";}', 0, 1, 1);
+
+
+-- PAGE: view entry
+
+INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_convos_view_entry', 'view-convo', '_bx_cnv_page_title_sys_view_entry', '_bx_cnv_page_title_view_entry', 'bx_convos', 10, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxCnvPageEntry', 'modules/boonex/convos/classes/BxCnvPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_convos_view_entry', 4, 'bx_convos', '_bx_cnv_page_block_title_entry_text', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 1, 0),
+('bx_convos_view_entry', 3, 'bx_convos', '_bx_cnv_page_block_title_entry_collaborators', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:20:\"entity_collaborators\";}', 0, 0, 1, 0),
+('bx_convos_view_entry', 1, 'bx_convos', '_bx_cnv_page_block_title_entry_actions', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:14:\"entity_actions\";}', 0, 0, 1, 0),
+('bx_convos_view_entry', 2, 'bx_convos', '_bx_cnv_page_block_title_entry_author', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:13:\"entity_author\";}', 0, 0, 1, 0),
+('bx_convos_view_entry', 4, 'bx_convos', '_bx_cnv_page_block_title_entry_attachments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:18:\"entity_attachments\";}', 0, 0, 1, 1),
+('bx_convos_view_entry', 4, 'bx_convos', '_bx_cnv_page_block_title_entry_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_convos\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 1, 2);
+
+
+-- PAGE: module home
+
+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_convos_home', '_bx_cnv_page_title_sys_folder', '_bx_cnv_page_title_folder', 'bx_convos', 5, 2147483647, 1, 'convos-folder', 'modules/?r=convos/folder/1', '', '', '', 0, 1, 0, 'BxCnvPageBrowse', 'modules/boonex/convos/classes/BxCnvPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_convos_home', 1, 'bx_convos', '_bx_cnv_page_block_title_folder', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_convos";s:6:"method";s:23:"conversations_in_folder";s:6:"params";a:1:{i:0;s:11:"{folder_id}";}}', 0, 1, 0);
+
+
+-- MENU: 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_convos_view', '_bx_cnv_menu_title_view_entry', 'bx_convos_view', 'bx_convos', 9, 0, 1, 'BxCnvMenuView', 'modules/boonex/convos/classes/BxCnvMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_convos_view', 'bx_convos', '_bx_cnv_menu_set_title_view_entry', 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_convos_view', 'bx_convos', 'delete-convo', '_bx_cnv_menu_item_title_system_delete_entry', '_bx_cnv_menu_item_title_delete_entry', 'javascript:void(0);', 'bx_cnv_delete(this, \'{content_id}\')', '', 'remove', '', 2147483647, 1, 0, 1),
+('bx_convos_view', 'bx_convos', 'mark-unread-convo', '_bx_cnv_menu_item_title_system_mark_unread_entry', '_bx_cnv_menu_item_title_mark_unread_entry', 'javascript:void(0);', 'bx_cnv_mark_unread(this, \'{content_id}\')', '', 'check', '', 2147483647, 1, 0, 2);
+
+
+-- MENU: module sub-menu
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_convos_submenu', '_bx_cnv_menu_title_submenu', 'bx_convos_submenu', 'bx_convos', 8, 0, 1, '', '');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_convos_submenu', 'bx_convos', '_bx_cnv_menu_set_title_submenu', 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_convos_submenu', 'bx_convos', 'convos-folder-inbox', '_bx_cnv_menu_item_title_system_folder_inbox', '_bx_cnv_menu_item_title_folder_inbox', 'modules/?r=convos/folder/1', '', '', '', '', 2147483647, 1, 1, 1),
+('bx_convos_submenu', 'bx_convos', 'convos-folder-more', '_bx_cnv_menu_item_title_system_folder_more', '_bx_cnv_menu_item_title_folder_more', 'javascript:void(0);', 'bx_menu_popup(''bx_convos_menu_folders_more'', this);', '', '', '', 2147483647, 1, 1, 2);
+
+
+-- MENU: more folders
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_convos_menu_folders_more', '_bx_cnv_menu_title_folders_more', 'bx_convos_menu_folders_more', 'bx_convos', 4, 0, 1, '', '');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_convos_menu_folders_more', 'bx_convos', '_bx_cnv_menu_set_title_folders_more', 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_convos_menu_folders_more', 'bx_convos', 'convos-drafts', '_bx_cnv_menu_item_title_system_folder_drafts', '_bx_cnv_menu_item_title_folder_drafts', 'modules/?r=convos/folder/2', '', '', '', '', 2147483647, 1, 1, 1),
+('bx_convos_menu_folders_more', 'bx_convos', 'convos-spam', '_bx_cnv_menu_item_title_system_folder_spam', '_bx_cnv_menu_item_title_folder_spam', 'modules/?r=convos/folder/3', '', '', '', '', 2147483647, 1, 1, 2),
+('bx_convos_menu_folders_more', 'bx_convos', 'convos-trash', '_bx_cnv_menu_item_title_system_folder_trash', '_bx_cnv_menu_item_title_folder_trash', 'modules/?r=convos/folder/4', '', '', '', '', 2147483647, 1, 1, 3);
+
+
+-- MENU: notifications
+
+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_notifications', 'bx_convos', 'notifications-convos', '_bx_cnv_menu_item_title_system_convos', '_bx_cnv_menu_item_title_convos', 'modules/?r=convos/folder/1', '', '', 'comments col-red1', 'a:2:{s:6:"module";s:9:"bx_convos";s:6:"method";s:23:"get_unread_messages_num";}', '', 2147483646, 1, 0, 2);
+
+
+-- MENU: profile stats
+
+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_convos', 'profile-stats-unread-messages', '_bx_cnv_menu_item_title_system_unread_messages', '_bx_cnv_menu_item_title_unread_messages', 'modules/?r=convos/folder/1', '', '', 'comments col-red1', 'a:2:{s:6:"module";s:9:"bx_convos";s:6:"method";s:23:"get_unread_messages_num";}', '', 2147483646, 1, 0, 2);
+
+-- MENU: add menu item to profiles modules actions menu (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_actions', 'bx_convos', 'convos-compose', '_bx_cnv_menu_item_title_system_message', '_bx_cnv_menu_item_title_message', 'page.php?i=start-convo&profiles={profile_id}', '', '', '', '', 2147483647, 1, 0, 0);
+
+-- GRID
+
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_mode`, `sorting_fields`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
+('bx_convos', 'Sql', 'SELECT `c`.`id`, `c`.`author`, `c`.`text`, `c`.`added`, `c`.`comments`, `f`.`read_comments`, `last_reply_timestamp`, `last_reply_profile_id`, `cmt`.`cmt_text` FROM `bx_convos_conversations` AS `c` INNER JOIN `bx_convos_conv2folder` AS `f` ON (`c`.`id` = `f`.`conv_id` AND `f`.`folder_id` = {folder_id} AND `f`.`collaborator` = {profile_id}) LEFT JOIN `bx_convos_cmts` AS `cmt` ON (`cmt`.`cmt_id` = `c`.`last_reply_comment_id`)', 'bx_convos_conversations', 'id', 'last_reply_timestamp', '', 10, NULL, 'start', '', 'text', 'auto', 'comments,last_reply_timestamp', 2147483646, 'BxCnvGrid', 'modules/boonex/convos/classes/BxCnvGrid.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
+('bx_convos', 'checkbox', '_sys_select', '2%', '', 1),
+('bx_convos', 'collaborators', '_bx_cnv_field_collaborators', '25%', '', 2),
+('bx_convos', 'last_reply_timestamp', '_bx_cnv_field_preview', '68%', '', 3),
+('bx_convos', 'comments', '_bx_cnv_field_comments', '5%', '', 4);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
+('bx_convos', 'bulk', 'delete', '_bx_cnv_grid_action_delete', '', 1, 1),
+('bx_convos', 'independent', 'add', '_bx_cnv_grid_action_compose', '', 0, 1);
+
+
+-- ACL
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_convos', 'create entry', NULL, '_bx_cnv_acl_action_create_entry', '', 1, 3);
+SET @iIdActionEntryCreate = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_convos', 'delete entry', NULL, '_bx_cnv_acl_action_delete_entry', '', 1, 3);
+SET @iIdActionEntryDelete = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_convos', 'view entry', NULL, '_bx_cnv_acl_action_view_entry', '', 1, 0);
+SET @iIdActionEntryView = 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
+
+-- entry create
+(@iStandard, @iIdActionEntryCreate),
+(@iModerator, @iIdActionEntryCreate),
+(@iAdministrator, @iIdActionEntryCreate),
+(@iPremium, @iIdActionEntryCreate),
+
+-- entry delete
+(@iStandard, @iIdActionEntryDelete),
+(@iModerator, @iIdActionEntryDelete),
+(@iAdministrator, @iIdActionEntryDelete),
+(@iPremium, @iIdActionEntryDelete),
+
+-- entry view
+(@iUnauthenticated, @iIdActionEntryView),
+(@iAccount, @iIdActionEntryView),
+(@iStandard, @iIdActionEntryView),
+(@iUnconfirmed, @iIdActionEntryView),
+(@iPending, @iIdActionEntryView),
+(@iModerator, @iIdActionEntryView),
+(@iAdministrator, @iIdActionEntryView),
+(@iPremium, @iIdActionEntryView);
+
+
+-- COMMENTS
+INSERT INTO `sys_objects_cmts` (`Name`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Nl2br`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES
+('bx_convos', 'bx_convos_cmts', 1, 5000, 1000, 1, 5, 3, 'tail', 1, 'bottom', 1, 1, 0, -3, 1, 'cmt', 'page.php?i=view-convo&id={object_id}', '', 'bx_convos_conversations', 'id', '', 'comments', 'BxCnvCmts', 'modules/boonex/convos/classes/BxCnvCmts.php');
+
+-- VIEWS
+INSERT INTO `sys_objects_view` (`name`, `table_track`, `period`, `is_on`, `trigger_table`, `trigger_field_id`, `trigger_field_count`, `class_name`, `class_file`) VALUES 
+('bx_convos', 'bx_convos_views_track', '86400', '1', 'bx_convos_conversations', 'id', 'views', '', '');
+
+-- ALERTS
+
+INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
+('bx_convos', 'BxCnvAlertsResponse', 'modules/boonex/convos/classes/BxCnvAlertsResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('bx_convos', 'commentPost', @iHandler),
+('bx_convos', 'commentRemoved', @iHandler);
+

+ 47 - 0
modules/boonex/english/updates/8.0.4_8.0.5/install/config.php

@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'English',
+    'version_from' => '8.0.4',
+	'version_to' => '8.0.5',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/english/updates/update_8.0.4_8.0.5/',
+	'home_uri' => 'en_update_804_805',
+
+	'module_dir' => 'boonex/english/',
+	'module_uri' => 'en',
+
+    'db_prefix' => 'bx_eng_',
+    'class_prefix' => 'BxEng',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 1,
+        'restore_languages' => 0,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'System',
+);

+ 15 - 0
modules/boonex/english/updates/8.0.4_8.0.5/install/installer.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+bx_import('BxDolStudioUpdater');
+
+class BxEngUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 10 - 0
modules/boonex/english/updates/8.0.4_8.0.5/install/langs/en.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_adm_block_cpt_goodies"><![CDATA[Storefront]]></string_add>
+	<string_add name="_adm_btn_queued_submit"><![CDATA[Queued]]></string_add>
+	<string_add name="_cmt_view_attached_image"><![CDATA[View image]]></string_add>
+	<string_add name="_sys_menu_template_title_custom"><![CDATA[Custom menu items]]></string_add>
+
+	<string_upd name="_sys_location_country"><![CDATA[<i class="sys-icon location-arrow"></i> {0}]]></string_upd>
+	<string_upd name="_sys_location_country_city"><![CDATA[<i class="sys-icon location-arrow"></i> {1}, {0}]]></string_upd>
+</resources>

+ 2070 - 0
modules/boonex/english/updates/8.0.4_8.0.5/source/data/langs/system.xml

@@ -0,0 +1,2070 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="en" title="English">
+	<string name="_ADM_PROFILE_SEND_MSG"><![CDATA[Message was successfully sent.]]></string>
+	<string name="_ATT_ACTIVE_E"><![CDATA[You are a full-featured member of our community. You can, however, suspend your profile to become temporarily unavailable for others.]]></string>
+	<string name="_ATT_APPROVAL_E"><![CDATA[Your profile activation is in progress. Usually it takes up to 24 hours. Thank you for your patience.]]></string>
+	<string name="_ATT_REJECTED_E"><![CDATA[Your profile was rejected by the system administrator because it contains illegal information or is missing some information. If you have any questions, please, <a target=_blank href="contact.php">contact us</a>, and don't forget to specify your profile ID.]]></string>
+	<string name="_ATT_SUSPENDED_E"><![CDATA[Your profile is temporarily out of {0} system services. You can activate it <a target=_blank href="change_status.php">here</a>. If you have any questions, please <a target=_blank href="contact.php">contact the administrators</a>.]]></string>
+	<string name="_ATT_UNCONFIRMED_E"><![CDATA[You will need to follow the link supplied in the e-mail to get your account submitted for approval. <br />Send me <a target=_blank href="activation_email.php">confirmation e-mail</a>.]]></string>
+	<string name="_Access denied"><![CDATA[Access denied]]></string>
+	<string name="_Action"><![CDATA[Action]]></string>
+	<string name="_Allowed Since"><![CDATA[Allowed Since]]></string>
+	<string name="_Allowed Until"><![CDATA[Allowed Until]]></string>
+	<string name="_Allowed actions"><![CDATA[Allowed actions]]></string>
+	<string name="_Auth type"><![CDATA[Auth type]]></string>
+	<string name="_Basic"><![CDATA[Basic]]></string>
+	<string name="_CONTACT_H"><![CDATA[Contact us]]></string>
+	<string name="_CONTACT_H1"><![CDATA[Contact]]></string>
+	<string name="_Can not delete comments with replies"><![CDATA[Cannot delete comments with replies]]></string>
+	<string name="_Cancel"><![CDATA[Cancel]]></string>
+	<string name="_Content"><![CDATA[Content]]></string>
+	<string name="_Count"><![CDATA[Count]]></string>
+	<string name="_DELETE_SUCCESS"><![CDATA[You account was successfully deleted]]></string>
+	<string name="_DELETE_TEXT"><![CDATA[All your content will be deleted. Are you sure you want to delete your account?]]></string>
+	<string name="_Date"><![CDATA[Date]]></string>
+	<string name="_Delete"><![CDATA[Delete]]></string>
+	<string name="_Delete account"><![CDATA[Delete account]]></string>
+	<string name="_Description"><![CDATA[Description]]></string>
+	<string name="_EXPLANATION_H"><![CDATA[Explanation]]></string>
+	<string name="_Edit"><![CDATA[Edit]]></string>
+	<string name="_Email"><![CDATA[Email]]></string>
+	<string name="_Email sent failed"><![CDATA[Email send failed]]></string>
+	<string name="_Empty"><![CDATA[Empty]]></string>
+	<string name="_Error"><![CDATA[Error]]></string>
+	<string name="_Failed"><![CDATA[Failed]]></string>
+	<string name="_Female"><![CDATA[Woman]]></string>
+	<string name="_From"><![CDATA[From]]></string>
+	<string name="_Header"><![CDATA[Header]]></string>
+	<string name="_Incorrect Captcha"><![CDATA[Incorrect Captcha]]></string>
+	<string name="_Incorrect Email"><![CDATA[Incorrect Email]]></string>
+	<string name="_Info"><![CDATA[Info]]></string>
+	<string name="_Keyword"><![CDATA[Keyword]]></string>
+	<string name="_LookinFemale"><![CDATA[Woman]]></string>
+	<string name="_LookinMale"><![CDATA[Man]]></string>
+	<string name="_MEMBERSHIP_EXPIRES_IN_DAYS"><![CDATA[expires: in {0} day(s)]]></string>
+	<string name="_MEMBERSHIP_EXPIRES_NEVER"><![CDATA[expires: never]]></string>
+	<string name="_MEMBERSHIP_EXPIRES_TODAY"><![CDATA[expires: today at {0}. (Server time: {1})]]></string>
+	<string name="_MEMBERSHIP_STANDARD"><![CDATA[You are a standard member.]]></string>
+	<string name="_MEMBERSHIP_UPGRADE_FROM_STANDARD"><![CDATA[]]></string>
+	<string name="_Male"><![CDATA[Man]]></string>
+	<string name="_Manage"><![CDATA[Manage]]></string>
+	<string name="_Member"><![CDATA[Member]]></string>
+	<string name="_Member Login"><![CDATA[Login]]></string>
+	<string name="_Message text"><![CDATA[Message text]]></string>
+	<string name="_N_point"><![CDATA[<span>{0}</span> plus]]></string>
+	<string name="_N_points"><![CDATA[<span>{0}</span> pluses]]></string>
+	<string name="_Name"><![CDATA[Name]]></string>
+	<string name="_Name is required"><![CDATA[Name is required]]></string>
+	<string name="_No"><![CDATA[No]]></string>
+	<string name="_No actions allowed for this membership"><![CDATA[No actions allowed for this membership]]></string>
+	<string name="_No such comment"><![CDATA[No such comment]]></string>
+	<string name="_Period"><![CDATA[Period]]></string>
+	<string name="_Please Wait"><![CDATA[Please Wait]]></string>
+	<string name="_Please enter n1-n2 characters"><![CDATA[Please enter {0}-{1} characters]]></string>
+	<string name="_Preview"><![CDATA[Preview]]></string>
+	<string name="_RSS_Feed_Title_Common"><![CDATA[{0} RSS]]></string>
+	<string name="_RSS_Feed_Title_Profile"><![CDATA[{0}'s Recent {1}]]></string>
+	<string name="_Rate"><![CDATA[Rate]]></string>
+	<string name="_Read"><![CDATA[Read]]></string>
+	<string name="_Read more"><![CDATA[Read more]]></string>
+	<string name="_Reset"><![CDATA[Reset]]></string>
+	<string name="_Search"><![CDATA[Search]]></string>
+	<string name="_Section"><![CDATA[Section]]></string>
+	<string name="_Select_all"><![CDATA[Select all]]></string>
+	<string name="_Show"><![CDATA[Show]]></string>
+	<string name="_Sorry, your IP been banned"><![CDATA[Sorry, your IP has been banned]]></string>
+	<string name="_Subject"><![CDATA[Subject]]></string>
+	<string name="_Submit"><![CDATA[Submit]]></string>
+	<string name="_Success"><![CDATA[Success]]></string>
+	<string name="_There_are_no_comments_yet"><![CDATA[There are no comments yet]]></string>
+	<string name="_Times allowed"><![CDATA[Times allowed]]></string>
+	<string name="_Title"><![CDATA[Title]]></string>
+	<string name="_To"><![CDATA[to]]></string>
+	<string name="_VIEW_MEMBERSHIP_ACTIONS"><![CDATA[View Allowed Actions]]></string>
+	<string name="_View"><![CDATA[View]]></string>
+	<string name="_Yes"><![CDATA[Yes]]></string>
+	<string name="_Your email"><![CDATA[Your email]]></string>
+	<string name="_Your name"><![CDATA[Your name]]></string>
+	<string name="__Afghanistan"><![CDATA[Afghanistan]]></string>
+	<string name="__Afrikaans"><![CDATA[Afrikaans]]></string>
+	<string name="__Aland_Islands"><![CDATA[Aland Islands]]></string>
+	<string name="__Albania"><![CDATA[Albania]]></string>
+	<string name="__Algeria"><![CDATA[Algeria]]></string>
+	<string name="__American Samoa"><![CDATA[American Samoa]]></string>
+	<string name="__Andorra"><![CDATA[Andorra]]></string>
+	<string name="__Angola"><![CDATA[Angola]]></string>
+	<string name="__Anguilla"><![CDATA[Anguilla]]></string>
+	<string name="__Antarctica"><![CDATA[Antarctica]]></string>
+	<string name="__Antigua and Barbuda"><![CDATA[Antigua and Barbuda]]></string>
+	<string name="__Arabic"><![CDATA[Arabic]]></string>
+	<string name="__Argentina"><![CDATA[Argentina]]></string>
+	<string name="__Armenia"><![CDATA[Armenia]]></string>
+	<string name="__Aruba"><![CDATA[Aruba]]></string>
+	<string name="__Australia"><![CDATA[Australia]]></string>
+	<string name="__Austria"><![CDATA[Austria]]></string>
+	<string name="__Azerbaijan"><![CDATA[Azerbaijan]]></string>
+	<string name="__Bahrain"><![CDATA[Bahrain]]></string>
+	<string name="__Bangladesh"><![CDATA[Bangladesh]]></string>
+	<string name="__Barbados"><![CDATA[Barbados]]></string>
+	<string name="__Belarus"><![CDATA[Belarus]]></string>
+	<string name="__Belgium"><![CDATA[Belgium]]></string>
+	<string name="__Belize"><![CDATA[Belize]]></string>
+	<string name="__Benin"><![CDATA[Benin]]></string>
+	<string name="__Bermuda"><![CDATA[Bermuda]]></string>
+	<string name="__Bhutan"><![CDATA[Bhutan]]></string>
+	<string name="__Bolivia"><![CDATA[Bolivia]]></string>
+	<string name="__Bosnia and Herzegovina"><![CDATA[Bosnia and Herzegovina]]></string>
+	<string name="__Botswana"><![CDATA[Botswana]]></string>
+	<string name="__Bouvet Island"><![CDATA[Bouvet Island]]></string>
+	<string name="__Brazil"><![CDATA[Brazil]]></string>
+	<string name="__British Indian Ocean Territory"><![CDATA[British Indian Ocean Territory]]></string>
+	<string name="__British Virgin Islands"><![CDATA[British Virgin Islands]]></string>
+	<string name="__Brunei Darussalam"><![CDATA[Brunei]]></string>
+	<string name="__Bulgaria"><![CDATA[Bulgaria]]></string>
+	<string name="__Bulgarian"><![CDATA[Bulgarian]]></string>
+	<string name="__Burkina Faso"><![CDATA[Burkina Faso]]></string>
+	<string name="__Burma"><![CDATA[Burma]]></string>
+	<string name="__Burmese"><![CDATA[Burmese]]></string>
+	<string name="__Burundi"><![CDATA[Burundi]]></string>
+	<string name="__Cambodia"><![CDATA[Cambodia]]></string>
+	<string name="__Cameroon"><![CDATA[Cameroon]]></string>
+	<string name="__Canada"><![CDATA[Canada]]></string>
+	<string name="__Cantonese"><![CDATA[Cantonese]]></string>
+	<string name="__Cape Verde"><![CDATA[Cape Verde]]></string>
+	<string name="__Cayman Islands"><![CDATA[Cayman Islands]]></string>
+	<string name="__Central African Republic"><![CDATA[Central African Republic]]></string>
+	<string name="__Chad"><![CDATA[Chad]]></string>
+	<string name="__Chile"><![CDATA[Chile]]></string>
+	<string name="__China"><![CDATA[China]]></string>
+	<string name="__Christmas Island"><![CDATA[Christmas Island]]></string>
+	<string name="__Cocos (Keeling) Islands"><![CDATA[Cocos (Keeling) Islands]]></string>
+	<string name="__Colombia"><![CDATA[Colombia]]></string>
+	<string name="__Comoros"><![CDATA[Comoros]]></string>
+	<string name="__Congo, Democratic Republic of the"><![CDATA[Congo, Democratic Republic of the]]></string>
+	<string name="__Congo, Republic of the"><![CDATA[Congo, Republic of the]]></string>
+	<string name="__Cook Islands"><![CDATA[Cook Islands]]></string>
+	<string name="__Costa Rica"><![CDATA[Costa Rica]]></string>
+	<string name="__Cote d'Ivoire"><![CDATA[Cote d'Ivoire]]></string>
+	<string name="__Croatia"><![CDATA[Croatia]]></string>
+	<string name="__Croatian"><![CDATA[Croatian]]></string>
+	<string name="__Cuba"><![CDATA[Cuba]]></string>
+	<string name="__Cyprus"><![CDATA[Cyprus]]></string>
+	<string name="__Czech Republic"><![CDATA[Czech Republic]]></string>
+	<string name="__Danish"><![CDATA[Danish]]></string>
+	<string name="__Denmark"><![CDATA[Denmark]]></string>
+	<string name="__Djibouti"><![CDATA[Djibouti]]></string>
+	<string name="__Dominica"><![CDATA[Dominica]]></string>
+	<string name="__Dominican Republic"><![CDATA[Dominican Republic]]></string>
+	<string name="__Dutch"><![CDATA[Dutch]]></string>
+	<string name="__East Timor"><![CDATA[East Timor]]></string>
+	<string name="__Ecuador"><![CDATA[Ecuador]]></string>
+	<string name="__Egypt"><![CDATA[Egypt]]></string>
+	<string name="__El Salvador"><![CDATA[El Salvador]]></string>
+	<string name="__English"><![CDATA[English]]></string>
+	<string name="__Equatorial Guinea"><![CDATA[Equatorial Guinea]]></string>
+	<string name="__Eritrea"><![CDATA[Eritrea]]></string>
+	<string name="__Esperanto"><![CDATA[Esperanto]]></string>
+	<string name="__Estonia"><![CDATA[Estonia]]></string>
+	<string name="__Estonian"><![CDATA[Estonian]]></string>
+	<string name="__Ethiopia"><![CDATA[Ethiopia]]></string>
+	<string name="__Falkland Islands (Islas Malvinas)"><![CDATA[Falkland Islands (Islas Malvinas)]]></string>
+	<string name="__Faroe Islands"><![CDATA[Faroe Islands]]></string>
+	<string name="__Fiji"><![CDATA[Fiji]]></string>
+	<string name="__Finland"><![CDATA[Finland]]></string>
+	<string name="__Finnish"><![CDATA[Finnish]]></string>
+	<string name="__France"><![CDATA[France]]></string>
+	<string name="__French"><![CDATA[French]]></string>
+	<string name="__French Guiana"><![CDATA[French Guiana]]></string>
+	<string name="__French Polynesia"><![CDATA[French Polynesia]]></string>
+	<string name="__French Southern and Antarctic Lands"><![CDATA[French Southern and Antarctic Lands]]></string>
+	<string name="__Gabon"><![CDATA[Gabon]]></string>
+	<string name="__Georgia"><![CDATA[Georgia]]></string>
+	<string name="__German"><![CDATA[German]]></string>
+	<string name="__Germany"><![CDATA[Germany]]></string>
+	<string name="__Ghana"><![CDATA[Ghana]]></string>
+	<string name="__Gibraltar"><![CDATA[Gibraltar]]></string>
+	<string name="__Greece"><![CDATA[Greece]]></string>
+	<string name="__Greek"><![CDATA[Greek]]></string>
+	<string name="__Greenland"><![CDATA[Greenland]]></string>
+	<string name="__Grenada"><![CDATA[Grenada]]></string>
+	<string name="__Guadeloupe"><![CDATA[Guadeloupe]]></string>
+	<string name="__Guam"><![CDATA[Guam]]></string>
+	<string name="__Guatemala"><![CDATA[Guatemala]]></string>
+	<string name="__Guernsey"><![CDATA[Guernsey]]></string>
+	<string name="__Guinea"><![CDATA[Guinea]]></string>
+	<string name="__Guinea-Bissau"><![CDATA[Guinea-Bissau]]></string>
+	<string name="__Gujrati"><![CDATA[Gujrati]]></string>
+	<string name="__Guyana"><![CDATA[Guyana]]></string>
+	<string name="__Haiti"><![CDATA[Haiti]]></string>
+	<string name="__Heard Island and McDonald Islands"><![CDATA[Heard Island and McDonald Islands]]></string>
+	<string name="__Hebrew"><![CDATA[Hebrew]]></string>
+	<string name="__Hindi"><![CDATA[Hindi]]></string>
+	<string name="__Holy See (Vatican City)"><![CDATA[Holy See (Vatican City)]]></string>
+	<string name="__Honduras"><![CDATA[Honduras]]></string>
+	<string name="__Hong Kong (SAR)"><![CDATA[Hong Kong (SAR)]]></string>
+	<string name="__Hungarian"><![CDATA[Hungarian]]></string>
+	<string name="__Hungary"><![CDATA[Hungary]]></string>
+	<string name="__Iceland"><![CDATA[Iceland]]></string>
+	<string name="__Icelandic"><![CDATA[Icelandic]]></string>
+	<string name="__India"><![CDATA[India]]></string>
+	<string name="__Indonesia"><![CDATA[Indonesia]]></string>
+	<string name="__Indonesian"><![CDATA[Indonesian]]></string>
+	<string name="__Iran"><![CDATA[Iran]]></string>
+	<string name="__Iraq"><![CDATA[Iraq]]></string>
+	<string name="__Ireland"><![CDATA[Ireland]]></string>
+	<string name="__Isle_of_Man"><![CDATA[Isle of Man]]></string>
+	<string name="__Israel"><![CDATA[Israel]]></string>
+	<string name="__Italian"><![CDATA[Italian]]></string>
+	<string name="__Italy"><![CDATA[Italy]]></string>
+	<string name="__Jamaica"><![CDATA[Jamaica]]></string>
+	<string name="__Japan"><![CDATA[Japan]]></string>
+	<string name="__Japanese"><![CDATA[Japanese]]></string>
+	<string name="__Jersey"><![CDATA[Jersey]]></string>
+	<string name="__Jordan"><![CDATA[Jordan]]></string>
+	<string name="__Kazakhstan"><![CDATA[Kazakhstan]]></string>
+	<string name="__Kenya"><![CDATA[Kenya]]></string>
+	<string name="__Kiribati"><![CDATA[Kiribati]]></string>
+	<string name="__Korea, North"><![CDATA[Korea, North]]></string>
+	<string name="__Korea, South"><![CDATA[Korea, South]]></string>
+	<string name="__Korean"><![CDATA[Korean]]></string>
+	<string name="__Kuwait"><![CDATA[Kuwait]]></string>
+	<string name="__Kyrgyzstan"><![CDATA[Kyrgyzstan]]></string>
+	<string name="__Laos"><![CDATA[Laos]]></string>
+	<string name="__Latvia"><![CDATA[Latvia]]></string>
+	<string name="__Latvian"><![CDATA[Latvian]]></string>
+	<string name="__Lebanon"><![CDATA[Lebanon]]></string>
+	<string name="__Lesotho"><![CDATA[Lesotho]]></string>
+	<string name="__Liberia"><![CDATA[Liberia]]></string>
+	<string name="__Libya"><![CDATA[Libya]]></string>
+	<string name="__Liechtenstein"><![CDATA[Liechtenstein]]></string>
+	<string name="__Lithuania"><![CDATA[Lithuania]]></string>
+	<string name="__Lithuanian"><![CDATA[Lithuanian]]></string>
+	<string name="__Luxembourg"><![CDATA[Luxembourg]]></string>
+	<string name="__Macao"><![CDATA[Macao]]></string>
+	<string name="__Macedonia, The Former Yugoslav Republic of"><![CDATA[Macedonia, The Former Yugoslav Republic of]]></string>
+	<string name="__Madagascar"><![CDATA[Madagascar]]></string>
+	<string name="__Malawi"><![CDATA[Malawi]]></string>
+	<string name="__Malay"><![CDATA[Malay]]></string>
+	<string name="__Malaysia"><![CDATA[Malaysia]]></string>
+	<string name="__Maldives"><![CDATA[Maldives]]></string>
+	<string name="__Mali"><![CDATA[Mali]]></string>
+	<string name="__Malta"><![CDATA[Malta]]></string>
+	<string name="__Mandarin"><![CDATA[Mandarin]]></string>
+	<string name="__Marathi"><![CDATA[Marathi]]></string>
+	<string name="__Marshall Islands"><![CDATA[Marshall Islands]]></string>
+	<string name="__Martinique"><![CDATA[Martinique]]></string>
+	<string name="__Mauritania"><![CDATA[Mauritania]]></string>
+	<string name="__Mauritius"><![CDATA[Mauritius]]></string>
+	<string name="__Mayotte"><![CDATA[Mayotte]]></string>
+	<string name="__Mexico"><![CDATA[Mexico]]></string>
+	<string name="__Micronesia, Federated States of"><![CDATA[Micronesia, Federated States of]]></string>
+	<string name="__Moldova"><![CDATA[Moldova]]></string>
+	<string name="__Moldovian"><![CDATA[Moldovian]]></string>
+	<string name="__Monaco"><![CDATA[Monaco]]></string>
+	<string name="__Mongolia"><![CDATA[Mongolia]]></string>
+	<string name="__Montenegro"><![CDATA[Montenegro]]></string>
+	<string name="__Montserrat"><![CDATA[Montserrat]]></string>
+	<string name="__Morocco"><![CDATA[Morocco]]></string>
+	<string name="__Mozambique"><![CDATA[Mozambique]]></string>
+	<string name="__Namibia"><![CDATA[Namibia]]></string>
+	<string name="__Nauru"><![CDATA[Nauru]]></string>
+	<string name="__Nepal"><![CDATA[Nepal]]></string>
+	<string name="__Nepalese"><![CDATA[Nepalese]]></string>
+	<string name="__Netherlands"><![CDATA[Netherlands]]></string>
+	<string name="__Netherlands Antilles"><![CDATA[Netherlands Antilles]]></string>
+	<string name="__New Caledonia"><![CDATA[New Caledonia]]></string>
+	<string name="__New Zealand"><![CDATA[New Zealand]]></string>
+	<string name="__Nicaragua"><![CDATA[Nicaragua]]></string>
+	<string name="__Niger"><![CDATA[Niger]]></string>
+	<string name="__Nigeria"><![CDATA[Nigeria]]></string>
+	<string name="__Niue"><![CDATA[Niue]]></string>
+	<string name="__Norfolk Island"><![CDATA[Norfolk Island]]></string>
+	<string name="__Northern Mariana Islands"><![CDATA[Northern Mariana Islands]]></string>
+	<string name="__Norway"><![CDATA[Norway]]></string>
+	<string name="__Norwegian"><![CDATA[Norwegian]]></string>
+	<string name="__Oman"><![CDATA[Oman]]></string>
+	<string name="__Pakistan"><![CDATA[Pakistan]]></string>
+	<string name="__Palau"><![CDATA[Palau]]></string>
+	<string name="__Palestinian Territory, Occupied"><![CDATA[Palestinian Territory, Occupied]]></string>
+	<string name="__Panama"><![CDATA[Panama]]></string>
+	<string name="__Papua New Guinea"><![CDATA[Papua New Guinea]]></string>
+	<string name="__Paraguay"><![CDATA[Paraguay]]></string>
+	<string name="__Persian"><![CDATA[Persian]]></string>
+	<string name="__Peru"><![CDATA[Peru]]></string>
+	<string name="__Philippines"><![CDATA[Philippines]]></string>
+	<string name="__Pitcairn Islands"><![CDATA[Pitcairn Islands]]></string>
+	<string name="__Poland"><![CDATA[Poland]]></string>
+	<string name="__Polish"><![CDATA[Polish]]></string>
+	<string name="__Portugal"><![CDATA[Portugal]]></string>
+	<string name="__Portuguese"><![CDATA[Portuguese]]></string>
+	<string name="__Puerto Rico"><![CDATA[Puerto Rico]]></string>
+	<string name="__Punjabi"><![CDATA[Punjabi]]></string>
+	<string name="__Qatar"><![CDATA[Qatar]]></string>
+	<string name="__Reunion"><![CDATA[Reunion]]></string>
+	<string name="__Romania"><![CDATA[Romania]]></string>
+	<string name="__Romanian"><![CDATA[Romanian]]></string>
+	<string name="__Russia"><![CDATA[Russia]]></string>
+	<string name="__Russian"><![CDATA[Russian]]></string>
+	<string name="__Rwanda"><![CDATA[Rwanda]]></string>
+	<string name="__Saint Helena"><![CDATA[Saint Helena]]></string>
+	<string name="__Saint Kitts and Nevis"><![CDATA[Saint Kitts and Nevis]]></string>
+	<string name="__Saint Lucia"><![CDATA[Saint Lucia]]></string>
+	<string name="__Saint Pierre and Miquelon"><![CDATA[Saint Pierre and Miquelon]]></string>
+	<string name="__Saint Vincent and the Grenadines"><![CDATA[Saint Vincent and the Grenadines]]></string>
+	<string name="__Saint_Barthelemy"><![CDATA[Saint Barthelemy]]></string>
+	<string name="__Saint_Martin_French_part"><![CDATA[Saint Martin (French part)]]></string>
+	<string name="__Samoa"><![CDATA[Samoa]]></string>
+	<string name="__San Marino"><![CDATA[San Marino]]></string>
+	<string name="__Sao Tome and Principe"><![CDATA[Sao Tome and Principe]]></string>
+	<string name="__Saudi Arabia"><![CDATA[Saudi Arabia]]></string>
+	<string name="__Senegal"><![CDATA[Senegal]]></string>
+	<string name="__Serbia"><![CDATA[Serbia]]></string>
+	<string name="__Serbian"><![CDATA[Serbian]]></string>
+	<string name="__Seychelles"><![CDATA[Seychelles]]></string>
+	<string name="__Sierra Leone"><![CDATA[Sierra Leone]]></string>
+	<string name="__Singapore"><![CDATA[Singapore]]></string>
+	<string name="__Slovakia"><![CDATA[Slovakia]]></string>
+	<string name="__Slovenia"><![CDATA[Slovenia]]></string>
+	<string name="__Solomon Islands"><![CDATA[Solomon Islands]]></string>
+	<string name="__Somalia"><![CDATA[Somalia]]></string>
+	<string name="__South Africa"><![CDATA[South Africa]]></string>
+	<string name="__South Georgia and the South Sandwich Islands"><![CDATA[South Georgia and the South Sandwich Islands]]></string>
+	<string name="__Spain"><![CDATA[Spain]]></string>
+	<string name="__Spanish"><![CDATA[Spanish]]></string>
+	<string name="__Sri Lanka"><![CDATA[Sri Lanka]]></string>
+	<string name="__Sudan"><![CDATA[Sudan]]></string>
+	<string name="__Suriname"><![CDATA[Suriname]]></string>
+	<string name="__Svalbard"><![CDATA[Svalbard]]></string>
+	<string name="__Swaziland"><![CDATA[Swaziland]]></string>
+	<string name="__Sweden"><![CDATA[Sweden]]></string>
+	<string name="__Swedish"><![CDATA[Swedish]]></string>
+	<string name="__Switzerland"><![CDATA[Switzerland]]></string>
+	<string name="__Syria"><![CDATA[Syria]]></string>
+	<string name="__Tagalog"><![CDATA[Tagalog]]></string>
+	<string name="__Taiwan"><![CDATA[Taiwan]]></string>
+	<string name="__Taiwanese"><![CDATA[Taiwanese]]></string>
+	<string name="__Tajikistan"><![CDATA[Tajikistan]]></string>
+	<string name="__Tamil"><![CDATA[Tamil]]></string>
+	<string name="__Tanzania"><![CDATA[Tanzania]]></string>
+	<string name="__Telugu"><![CDATA[Telugu]]></string>
+	<string name="__Thai"><![CDATA[Thai]]></string>
+	<string name="__Thailand"><![CDATA[Thailand]]></string>
+	<string name="__The Bahamas"><![CDATA[The Bahamas]]></string>
+	<string name="__The Gambia"><![CDATA[The Gambia]]></string>
+	<string name="__Togo"><![CDATA[Togo]]></string>
+	<string name="__Tokelau"><![CDATA[Tokelau]]></string>
+	<string name="__Tonga"><![CDATA[Tonga]]></string>
+	<string name="__Tongan"><![CDATA[Tongan]]></string>
+	<string name="__Trinidad and Tobago"><![CDATA[Trinidad and Tobago]]></string>
+	<string name="__Tunisia"><![CDATA[Tunisia]]></string>
+	<string name="__Turkey"><![CDATA[Turkey]]></string>
+	<string name="__Turkish"><![CDATA[Turkish]]></string>
+	<string name="__Turkmenistan"><![CDATA[Turkmenistan]]></string>
+	<string name="__Turks and Caicos Islands"><![CDATA[Turks and Caicos Islands]]></string>
+	<string name="__Tuvalu"><![CDATA[Tuvalu]]></string>
+	<string name="__Uganda"><![CDATA[Uganda]]></string>
+	<string name="__Ukraine"><![CDATA[Ukraine]]></string>
+	<string name="__Ukrainian"><![CDATA[Ukrainian]]></string>
+	<string name="__United Arab Emirates"><![CDATA[United Arab Emirates]]></string>
+	<string name="__United Kingdom"><![CDATA[United Kingdom]]></string>
+	<string name="__United States"><![CDATA[United States]]></string>
+	<string name="__United States Minor Outlying Islands"><![CDATA[United States Minor Outlying Islands]]></string>
+	<string name="__Urdu"><![CDATA[Urdu]]></string>
+	<string name="__Uruguay"><![CDATA[Uruguay]]></string>
+	<string name="__Uzbekistan"><![CDATA[Uzbekistan]]></string>
+	<string name="__Vanuatu"><![CDATA[Vanuatu]]></string>
+	<string name="__Venezuela"><![CDATA[Venezuela]]></string>
+	<string name="__Vietnam"><![CDATA[Vietnam]]></string>
+	<string name="__Vietnamese"><![CDATA[Vietnamese]]></string>
+	<string name="__Virgin Islands"><![CDATA[Virgin Islands]]></string>
+	<string name="__Visayan"><![CDATA[Visayan]]></string>
+	<string name="__Wallis and Futuna"><![CDATA[Wallis and Futuna]]></string>
+	<string name="__Western Sahara"><![CDATA[Western Sahara]]></string>
+	<string name="__Yemen"><![CDATA[Yemen]]></string>
+	<string name="__Zambia"><![CDATA[Zambia]]></string>
+	<string name="__Zimbabwe"><![CDATA[Zimbabwe]]></string>
+	<string name="_adm_act_err_failed_page_loading"><![CDATA[Cannot load the page]]></string>
+	<string name="_adm_action_cpt_checkout"><![CDATA[Checkout]]></string>
+	<string name="_adm_action_cpt_delete_all"><![CDATA[Delete All]]></string>
+	<string name="_adm_action_cpt_see_all_featured"><![CDATA[See All Featured]]></string>
+	<string name="_adm_action_cpt_see_all_languages"><![CDATA[See All Languages]]></string>
+	<string name="_adm_action_cpt_see_all_modules"><![CDATA[See All Modules]]></string>
+	<string name="_adm_action_cpt_see_all_templates"><![CDATA[See All Templates]]></string>
+	<string name="_adm_admtools_Audit"><![CDATA[Audit]]></string>
+	<string name="_adm_admtools_Current_level"><![CDATA[Current status]]></string>
+	<string name="_adm_admtools_Desired_level"><![CDATA[Desired status]]></string>
+	<string name="_adm_admtools_Executable"><![CDATA[Executable]]></string>
+	<string name="_adm_admtools_Non_Executable"><![CDATA[Not executable]]></string>
+	<string name="_adm_admtools_Non_Writable"><![CDATA[Not writable]]></string>
+	<string name="_adm_admtools_Not_Exists"><![CDATA[Not exists]]></string>
+	<string name="_adm_admtools_Path"><![CDATA[Path]]></string>
+	<string name="_adm_admtools_Permissions"><![CDATA[Permissions]]></string>
+	<string name="_adm_admtools_Writable"><![CDATA[Writable]]></string>
+	<string name="_adm_admtools_title"><![CDATA[Admin Tools]]></string>
+	<string name="_adm_block_cpt_checkout"><![CDATA[Checkout]]></string>
+	<string name="_adm_block_cpt_checkout_by_vendor_ccode"><![CDATA[Products from {0} ({1} {2})]]></string>
+	<string name="_adm_block_cpt_checkout_by_vendor_csign"><![CDATA[Products from {0} ({1}{2})]]></string>
+	<string name="_adm_block_cpt_downloaded_modules"><![CDATA[Modules]]></string>
+	<string name="_adm_block_cpt_downloaded_updates"><![CDATA[Updates]]></string>
+	<string name="_adm_block_cpt_featured"><![CDATA[Featured]]></string>
+	<string name="_adm_block_cpt_goodies"><![CDATA[Storefront]]></string>
+	<string name="_adm_block_cpt_languages"><![CDATA[Languages]]></string>
+	<string name="_adm_block_cpt_last_featured"><![CDATA[Latest Featured]]></string>
+	<string name="_adm_block_cpt_last_languages"><![CDATA[Latest Languages]]></string>
+	<string name="_adm_block_cpt_last_modules"><![CDATA[Latest Modules]]></string>
+	<string name="_adm_block_cpt_last_templates"><![CDATA[Latest Templates]]></string>
+	<string name="_adm_block_cpt_modules"><![CDATA[Modules]]></string>
+	<string name="_adm_block_cpt_modules_upload"><![CDATA[Add New Module]]></string>
+	<string name="_adm_block_cpt_purchases"><![CDATA[Purchases]]></string>
+	<string name="_adm_block_cpt_space"><![CDATA[Space Usage]]></string>
+	<string name="_adm_block_cpt_templates"><![CDATA[Templates]]></string>
+	<string name="_adm_block_cpt_updates"><![CDATA[Updates]]></string>
+	<string name="_adm_block_cpt_versions"><![CDATA[Versions]]></string>
+	<string name="_adm_bp_btn_add_block"><![CDATA[Add Blocks]]></string>
+	<string name="_adm_bp_btn_block_add"><![CDATA[Add to Page]]></string>
+	<string name="_adm_bp_btn_block_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_bp_btn_block_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_bp_btn_block_save"><![CDATA[Save]]></string>
+	<string name="_adm_bp_btn_create_new"><![CDATA[Add New Page]]></string>
+	<string name="_adm_bp_btn_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_bp_btn_page_apply"><![CDATA[Apply]]></string>
+	<string name="_adm_bp_btn_page_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_bp_btn_page_create"><![CDATA[Create]]></string>
+	<string name="_adm_bp_btn_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_bp_btn_view_page"><![CDATA[View Page]]></string>
+	<string name="_adm_bp_cpt_type_custom"><![CDATA[Custom]]></string>
+	<string name="_adm_bp_cpt_type_modules"><![CDATA[Modules]]></string>
+	<string name="_adm_bp_cpt_type_system"><![CDATA[System]]></string>
+	<string name="_adm_bp_dsc_block_content_image_file"><![CDATA[The image will be displayed in block]]></string>
+	<string name="_adm_bp_dsc_block_content_lang"><![CDATA[Enter language key here]]></string>
+	<string name="_adm_bp_dsc_block_content_raw"><![CDATA[Enter HTML content here]]></string>
+	<string name="_adm_bp_dsc_block_content_rss_length"><![CDATA[Enter a number of displayed items here]]></string>
+	<string name="_adm_bp_dsc_block_content_rss_url"><![CDATA[Enter URL to RSS resource here]]></string>
+	<string name="_adm_bp_dsc_block_title"><![CDATA[Short name for the block, visible in block header.]]></string>
+	<string name="_adm_bp_dsc_block_visible_for_levels"><![CDATA[Select user levels that can see this block]]></string>
+	<string name="_adm_bp_dsc_page_cache_lifetime"><![CDATA[Store page in cache for this number of seconds]]></string>
+	<string name="_adm_bp_dsc_page_meta_description"><![CDATA[Use 10-50 words to tell search engines what the page is about.]]></string>
+	<string name="_adm_bp_dsc_page_meta_keywords"><![CDATA[Use 5-10 keywords, separated by comma, associated with page content.]]></string>
+	<string name="_adm_bp_dsc_page_meta_robots"><![CDATA[Standard commands for search engine robots. Example: noindex, nofollow.]]></string>
+	<string name="_adm_bp_dsc_page_title"><![CDATA[Page title displayed in page header. Use at least 3 characters.]]></string>
+	<string name="_adm_bp_dsc_page_title_system"><![CDATA[Page name, displayed in studio only.]]></string>
+	<string name="_adm_bp_dsc_page_uri"><![CDATA[Page address used after 'youdomain.com/page/'. It must be unique and it can not be changed later.]]></string>
+	<string name="_adm_bp_dsc_page_url"><![CDATA[Page link to access the page.]]></string>
+	<string name="_adm_bp_dsc_page_visible_for_levels"><![CDATA[Select user levels that can see this page]]></string>
+	<string name="_adm_bp_err_block_added"><![CDATA[Cannot add block(s)]]></string>
+	<string name="_adm_bp_err_block_content_image_preview_delete"><![CDATA[Cannot delete image.]]></string>
+	<string name="_adm_bp_err_block_delete"><![CDATA[Cannot delete block]]></string>
+	<string name="_adm_bp_err_block_designbox"><![CDATA[Select a layout box for the block]]></string>
+	<string name="_adm_bp_err_block_edit"><![CDATA[Cannot update block]]></string>
+	<string name="_adm_bp_err_block_not_deletable"><![CDATA[The requested block cannot be deleted.]]></string>
+	<string name="_adm_bp_err_block_not_found"><![CDATA[The requested block cannot be found.]]></string>
+	<string name="_adm_bp_err_block_title"><![CDATA[Enter title, more then 3 characters]]></string>
+	<string name="_adm_bp_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_bp_err_nothing_changed"><![CDATA[Nothing was changed or an error occurred.]]></string>
+	<string name="_adm_bp_err_page_create"><![CDATA[Cannot create the page.]]></string>
+	<string name="_adm_bp_err_page_delete"><![CDATA[Cannot delete the page.]]></string>
+	<string name="_adm_bp_err_page_layout"><![CDATA[Please, select a page layout.]]></string>
+	<string name="_adm_bp_err_page_title"><![CDATA[A title with at least 3 characters is required.]]></string>
+	<string name="_adm_bp_err_page_title_system"><![CDATA[A name with at least 3 characters is required.]]></string>
+	<string name="_adm_bp_err_page_uri"><![CDATA[A unique URL with at least 3 characters is required.]]></string>
+	<string name="_adm_bp_err_page_visible_for_levels"><![CDATA[Visibility setting are determined by custom code or not applicable here.]]></string>
+	<string name="_adm_bp_err_save"><![CDATA[Cannot save]]></string>
+	<string name="_adm_bp_mi_page_cache"><![CDATA[Cache]]></string>
+	<string name="_adm_bp_mi_page_layout"><![CDATA[Layout]]></string>
+	<string name="_adm_bp_mi_page_options"><![CDATA[Options]]></string>
+	<string name="_adm_bp_mi_page_seo"><![CDATA[SEO]]></string>
+	<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_content_image_align"><![CDATA[Alignment]]></string>
+	<string name="_adm_bp_txt_block_content_image_align_center"><![CDATA[center]]></string>
+	<string name="_adm_bp_txt_block_content_image_align_empty"><![CDATA[Select alignment...]]></string>
+	<string name="_adm_bp_txt_block_content_image_align_left"><![CDATA[left]]></string>
+	<string name="_adm_bp_txt_block_content_image_align_right"><![CDATA[right]]></string>
+	<string name="_adm_bp_txt_block_content_image_file"><![CDATA[Upload New Image]]></string>
+	<string name="_adm_bp_txt_block_content_image_preview"><![CDATA[Current Image]]></string>
+	<string name="_adm_bp_txt_block_content_lang"><![CDATA[Content]]></string>
+	<string name="_adm_bp_txt_block_content_menu"><![CDATA[Menu]]></string>
+	<string name="_adm_bp_txt_block_content_menu_empty"><![CDATA[Select menu...]]></string>
+	<string name="_adm_bp_txt_block_content_raw"><![CDATA[Content]]></string>
+	<string name="_adm_bp_txt_block_content_rss_length"><![CDATA[Length]]></string>
+	<string name="_adm_bp_txt_block_content_rss_url"><![CDATA[URL]]></string>
+	<string name="_adm_bp_txt_block_content_service_method"><![CDATA[Method]]></string>
+	<string name="_adm_bp_txt_block_content_service_module"><![CDATA[Module]]></string>
+	<string name="_adm_bp_txt_block_designbox"><![CDATA[Block Layout]]></string>
+	<string name="_adm_bp_txt_block_designbox_empty"><![CDATA[Select layout...]]></string>
+	<string name="_adm_bp_txt_block_selected"><![CDATA[blocks selected]]></string>
+	<string name="_adm_bp_txt_block_title"><![CDATA[Title]]></string>
+	<string name="_adm_bp_txt_block_visible_for"><![CDATA[Visible For]]></string>
+	<string name="_adm_bp_txt_block_visible_for_all"><![CDATA[Anyone]]></string>
+	<string name="_adm_bp_txt_block_visible_for_levels"><![CDATA[Select Levels]]></string>
+	<string name="_adm_bp_txt_block_visible_for_selected"><![CDATA[Selected levels]]></string>
+	<string name="_adm_bp_txt_create_popup"><![CDATA[Create New Page]]></string>
+	<string name="_adm_bp_txt_edit_block_popup"><![CDATA[Edit "{0}" Block]]></string>
+	<string name="_adm_bp_txt_new_block_popup"><![CDATA[Add New Block]]></string>
+	<string name="_adm_bp_txt_page_cache_lifetime"><![CDATA[Cache]]></string>
+	<string name="_adm_bp_txt_page_layout"><![CDATA[Layout]]></string>
+	<string name="_adm_bp_txt_page_layout_empty"><![CDATA[Select Layout...]]></string>
+	<string name="_adm_bp_txt_page_meta_description"><![CDATA[Page (Meta) Description]]></string>
+	<string name="_adm_bp_txt_page_meta_keywords"><![CDATA[Keywords]]></string>
+	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Meta Robots]]></string>
+	<string name="_adm_bp_txt_page_title"><![CDATA[Title]]></string>
+	<string name="_adm_bp_txt_page_title_system"><![CDATA[System Name]]></string>
+	<string name="_adm_bp_txt_page_uri"><![CDATA[URL]]></string>
+	<string name="_adm_bp_txt_page_url"><![CDATA[Link]]></string>
+	<string name="_adm_bp_txt_page_visible_for_levels"><![CDATA[Select Levels]]></string>
+	<string name="_adm_bp_txt_select_page"><![CDATA[Select Page...]]></string>
+	<string name="_adm_bp_txt_settings_popup"><![CDATA[Settings]]></string>
+	<string name="_adm_bp_txt_visible_for"><![CDATA[Visible for {0}]]></string>
+	<string name="_adm_bp_wrn_page_delete"><![CDATA[Are you sure you want to delete the page?]]></string>
+	<string name="_adm_btn_cancel_submit"><![CDATA[Cancel]]></string>
+	<string name="_adm_btn_delete_submit"><![CDATA[Delete]]></string>
+	<string name="_adm_btn_designer_submit"><![CDATA[Submit]]></string>
+	<string name="_adm_btn_download_submit"><![CDATA[Download]]></string>
+	<string name="_adm_btn_install_submit"><![CDATA[Install]]></string>
+	<string name="_adm_btn_installed_submit"><![CDATA[Installed]]></string>
+	<string name="_adm_btn_login_submit"><![CDATA[Enter Studio]]></string>
+	<string name="_adm_btn_purchase_submit"><![CDATA[Purchase]]></string>
+	<string name="_adm_btn_queued_submit"><![CDATA[Queued]]></string>
+	<string name="_adm_btn_settings_save"><![CDATA[Save]]></string>
+	<string name="_adm_dbd_btn_update"><![CDATA[Update]]></string>
+	<string name="_adm_dbd_txt_dolphin_n_available"><![CDATA[Dolphin {0} is available!]]></string>
+	<string name="_adm_dbd_txt_dolphin_on"><![CDATA[Dolphin U on]]></string>
+	<string name="_adm_dbd_txt_htools_status"><![CDATA[{0} - <b>{1}</b>]]></string>
+	<string name="_adm_dbd_txt_installed"><![CDATA[Installed:]]></string>
+	<string name="_adm_dbd_txt_version"><![CDATA[Version:]]></string>
+	<string name="_adm_dbd_msg_upgrade_started"><![CDATA[Site will be upgraded within a minute]]></string>
+	<string name="_adm_dbd_txt_su_database"><![CDATA[Database]]></string>
+	<string name="_adm_dbd_txt_su_system"><![CDATA[System]]></string>
+	<string name="_adm_dbd_txt_su_system_media"><![CDATA[System Media]]></string>
+	<string name="_adm_dbd_txt_c_clear_all"><![CDATA[Clear all caches]]></string>
+	<string name="_adm_dbd_txt_c_db"><![CDATA[DB]]></string>
+	<string name="_adm_dbd_txt_c_clear_db"><![CDATA[Clear DB cache]]></string>
+	<string name="_adm_dbd_txt_c_template"><![CDATA[Template]]></string>
+	<string name="_adm_dbd_txt_c_clear_template"><![CDATA[Clear Template cache]]></string>
+	<string name="_adm_dbd_txt_c_css"><![CDATA[CSS]]></string>
+	<string name="_adm_dbd_txt_c_clear_css"><![CDATA[Clear CSS cache]]></string>
+	<string name="_adm_dbd_txt_c_js"><![CDATA[JavaScript]]></string>
+	<string name="_adm_dbd_txt_c_clear_js"><![CDATA[Clear JavaScript cache]]></string>
+	<string name="_adm_dbd_err_c_clean_failed"><![CDATA[Failed to clean cache]]></string>
+	<string name="_adm_dbd_msg_c_clean_success"><![CDATA[Cache was successfully cleaned]]></string>
+	<string name="_adm_dbd_msg_c_all_disabled"><![CDATA[All caches are disabled]]></string>
+    <string name="_adm_dsn_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" template?</h3><p>Uninstalling "{0}" template will also delete all of its data. Do you want to continue?</p>]]></string>
+	<string name="_adm_dsg_btn_make_default"><![CDATA[Make Default]]></string>
+	<string name="_adm_dsg_dsc_alt_text"><![CDATA[Serves as "ALT" text for logo image. Used as a logo when no logo image is uploaded.]]></string>
+	<string name="_adm_dsg_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_dsg_err_deactivate_default"><![CDATA[You cannot deactivate template which was selected as Default]]></string>
+	<string name="_adm_dsg_err_last_active"><![CDATA[You need to have at least one active template.]]></string>
+	<string name="_adm_dsg_err_make_default"><![CDATA[Cannot make the template default.]]></string>
+	<string name="_adm_dsg_err_remove_old_icon"><![CDATA[Cannot remove current icon.]]></string>
+	<string name="_adm_dsg_err_remove_old_logo"><![CDATA[Cannot remove current logo image.]]></string>
+	<string name="_adm_dsg_err_save"><![CDATA[Cannot save: ]]></string>
+	<string name="_adm_dsg_scs_save"><![CDATA[The changes were successfully saved]]></string>
+	<string name="_adm_dsg_txt_alt_text"><![CDATA[Logo Text]]></string>
+	<string name="_adm_dsg_txt_default"><![CDATA[default]]></string>
+	<string name="_adm_dsg_txt_icon_apple"><![CDATA[Apple Touch Devices (152x152)]]></string>
+	<string name="_adm_dsg_txt_icon_facebook"><![CDATA[Facebook Share (100x100)]]></string>
+	<string name="_adm_dsg_txt_icon_favicon"><![CDATA[Favicon (16x16)]]></string>
+	<string name="_adm_dsg_txt_upload_icon"><![CDATA[Upload New Site Icon]]></string>
+	<string name="_adm_dsg_txt_upload_image"><![CDATA[Upload New Logo Image]]></string>
+	<string name="_adm_dsg_txt_upload_image_preview"><![CDATA[Current Logo Image]]></string>
+	<string name="_adm_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_err_form_view_iu_delete"><![CDATA[Cannot remove current image.]]></string>
+	<string name="_adm_err_form_view_iu_save"><![CDATA[Cannot save: ]]></string>
+	<string name="_adm_err_modules_already_disabled"><![CDATA[The module is already disabled.]]></string>
+	<string name="_adm_err_modules_already_enabled"><![CDATA[The module is already enabled.]]></string>
+	<string name="_adm_err_modules_already_installed"><![CDATA[The module was already installed.]]></string>
+	<string name="_adm_err_modules_already_uninstalled"><![CDATA[The module was already uninstalled.]]></string>
+	<string name="_adm_err_modules_cannot_add_to_cart"><![CDATA[Cannot add the product to shopping cart.]]></string>
+	<string name="_adm_err_modules_cannot_checkout_empty_vendor"><![CDATA[Cannot checkout. The vendor is unknown.]]></string>
+	<string name="_adm_err_modules_cannot_delete_from_cart"><![CDATA[Cannot delete the product(s) from shopping cart.]]></string>
+	<string name="_adm_err_modules_cannot_remove_package"><![CDATA[Cannot remove package.]]></string>
+	<string name="_adm_err_modules_module_not_found"><![CDATA[Module not found]]></string>
+	<string name="_adm_err_modules_module_not_match"><![CDATA[Update is not suitable for this module.]]></string>
+	<string name="_adm_err_modules_module_not_installed"><![CDATA[Module not installed]]></string>
+	<string name="_adm_err_modules_module_was_modified"><![CDATA[Module was modified]]></string>
+	<string name="_adm_err_modules_pending_uninstall"><![CDATA[Module uninstall was postponed. Module will be uninstalled automatically after all its files are deleted.]]></string>
+	<string name="_adm_err_modules_pending_uninstall_already"><![CDATA[Module is pending uninstall already.]]></string>
+	<string name="_adm_err_modules_process_action_failed"><![CDATA[An error occurred. Contact with module's vendor]]></string>
+	<string name="_adm_err_modules_wrong_dependency_disable"><![CDATA[Failed to disable. The module has the following dependent modules. You need to disable them first.]]></string>
+	<string name="_adm_err_modules_wrong_dependency_install"><![CDATA[The following modules should be installed first:]]></string>
+	<string name="_adm_err_modules_wrong_dependency_uninstall"><![CDATA[Failed to uninstall. The module has the following dependent modules. You need to uninstall them first.]]></string>
+	<string name="_adm_err_modules_wrong_mysql_query"><![CDATA[There are errors in the following MySQL queries:]]></string>
+	<string name="_adm_err_modules_wrong_mysql_query_msg"><![CDATA[Error: {0}]]></string>
+	<string name="_adm_err_modules_wrong_permissions_change"><![CDATA[Unable to change permissions automatically. You need to manually change them for the following files and folders and try again:]]></string>
+	<string name="_adm_err_modules_wrong_permissions_check"><![CDATA[You need to change permissions for the following files and folders:]]></string>
+	<string name="_adm_err_modules_wrong_permissions_msg"><![CDATA[{0} - {1}]]></string>
+	<string name="_adm_err_modules_wrong_version"><![CDATA[The module has incompatible version]]></string>
+	<string name="_adm_err_modules_wrong_version_script"><![CDATA[The module is not compatible with your version of Dolphin script]]></string>
+	<string name="_adm_err_modules_wrong_version_script_update"><![CDATA[The new version of {0} module isn't compatible with your version of Dolphin. Please upgrade Dolphin first (Dashboard > Version) and then try to upgrade the module.]]></string>
+	<string name="_adm_err_oauth_cannot_get_token"><![CDATA[Cannot connect to <b>BoonEx</b>. Please try again later.]]></string>
+	<string name="_adm_err_oauth_cannot_read_answer"><![CDATA[Cannot get a valid answer from <b>BoonEx</b>. Please try again later.]]></string>
+	<string name="_adm_err_oauth_empty_key_secret"><![CDATA[You need to enter Key and Secret provided by <b>BoonEx</b> in Settings -> General.]]></string>
+	<string name="_adm_err_operation_failed"><![CDATA[Operation failed. Please report.]]></string>
+	<string name="_adm_form_btn_displays_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_form_btn_displays_edit"><![CDATA[Edit display]]></string>
+	<string name="_adm_form_btn_displays_save"><![CDATA[Save]]></string>
+	<string name="_adm_form_btn_field_add"><![CDATA[Add]]></string>
+	<string name="_adm_form_btn_field_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_form_btn_field_delete"><![CDATA[Delete field]]></string>
+	<string name="_adm_form_btn_field_edit"><![CDATA[Edit field]]></string>
+	<string name="_adm_form_btn_field_save"><![CDATA[Save]]></string>
+	<string name="_adm_form_btn_fields_create"><![CDATA[Add New Field]]></string>
+	<string name="_adm_form_btn_fields_visible"><![CDATA[Visible For]]></string>
+	<string name="_adm_form_btn_forms_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_form_btn_forms_edit"><![CDATA[Edit form]]></string>
+	<string name="_adm_form_btn_forms_save"><![CDATA[Save]]></string>
+	<string name="_adm_form_btn_pre_lists_add"><![CDATA[Add]]></string>
+	<string name="_adm_form_btn_pre_lists_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_form_btn_pre_lists_create"><![CDATA[Add New List]]></string>
+	<string name="_adm_form_btn_pre_lists_delete"><![CDATA[Delete List]]></string>
+	<string name="_adm_form_btn_pre_lists_edit"><![CDATA[Edit List]]></string>
+	<string name="_adm_form_btn_pre_lists_save"><![CDATA[Save]]></string>
+	<string name="_adm_form_btn_pre_values_add"><![CDATA[Add]]></string>
+	<string name="_adm_form_btn_pre_values_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_form_btn_pre_values_create"><![CDATA[Add New Item]]></string>
+	<string name="_adm_form_btn_pre_values_delete"><![CDATA[Delete Item]]></string>
+	<string name="_adm_form_btn_pre_values_edit"><![CDATA[Edit Item]]></string>
+	<string name="_adm_form_dsc_displays_title"><![CDATA[Name of the form display mode. Displayed in Studio only.]]></string>
+	<string name="_adm_form_dsc_field_attrs_max"><![CDATA[Enter numeric value]]></string>
+	<string name="_adm_form_dsc_field_attrs_min"><![CDATA[Enter numeric value]]></string>
+	<string name="_adm_form_dsc_field_attrs_src"><![CDATA[Enter correct image URL]]></string>
+	<string name="_adm_form_dsc_field_attrs_step"><![CDATA[Enter numeric value]]></string>
+	<string name="_adm_form_dsc_field_caption"><![CDATA[Item name displayed on site]]></string>
+	<string name="_adm_form_dsc_field_caption_block_header"><![CDATA[Title for the group of fields]]></string>
+	<string name="_adm_form_dsc_field_caption_system"><![CDATA[Field name, displayed in Studio only.]]></string>
+	<string name="_adm_form_dsc_field_checker_error_captcha"><![CDATA[Error message to display if text doesn't match with text on the image]]></string>
+	<string name="_adm_form_dsc_field_checker_params_preg"><![CDATA[Use standard <a href="http://en.wikipedia.org/wiki/Regular_expression" target="_blank">regular expression</a>. Example: ^[A-Za-z0-9]{3,16}$]]></string>
+	<string name="_adm_form_dsc_field_collapsed"><![CDATA[Pack down the group of this field by default]]></string>
+	<string name="_adm_form_dsc_field_html"><![CDATA[Select type of HTML editor]]></string>
+	<string name="_adm_form_dsc_field_info"><![CDATA[Enter field description (optional)]]></string>
+	<string name="_adm_form_dsc_field_required"><![CDATA[Check it if the field should have value]]></string>
+	<string name="_adm_form_dsc_field_value_button"><![CDATA[Enter button title here]]></string>
+	<string name="_adm_form_dsc_field_value_checkbox"><![CDATA[Send this data if checkbox is checked and form is submitted]]></string>
+	<string name="_adm_form_dsc_field_value_reset"><![CDATA[Button title (this button type is used to reset the form to its default state)]]></string>
+	<string name="_adm_form_dsc_field_value_submit"><![CDATA[Button title (this button type is used to send in the form data)]]></string>
+	<string name="_adm_form_dsc_field_visible_for_levels"><![CDATA[Select user levels that can see this menu item]]></string>
+	<string name="_adm_form_dsc_forms_title"><![CDATA[Name of the form. Displayed in Studio only.]]></string>
+	<string name="_adm_form_dsc_pre_lists_title"><![CDATA[List Name for Studio use only]]></string>
+	<string name="_adm_form_dsc_pre_values_empty"><![CDATA[You can use it for items like "Please select..." which can't be submitted.]]></string>
+	<string name="_adm_form_dsc_pre_values_lkey"><![CDATA[Item name displayed on site]]></string>
+	<string name="_adm_form_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_form_err_displays_edit"><![CDATA[Cannot update display]]></string>
+	<string name="_adm_form_err_displays_title"><![CDATA[Enter title, more then 3 characters]]></string>
+	<string name="_adm_form_err_field_add"><![CDATA[Cannot add new field]]></string>
+	<string name="_adm_form_err_field_add_not_allowed"><![CDATA[Fields cannot be added in this form]]></string>
+	<string name="_adm_form_err_field_caption_system"><![CDATA[A name with at least 3 characters is required.]]></string>
+	<string name="_adm_form_err_field_checker_error"><![CDATA[You need to enter error message]]></string>
+	<string name="_adm_form_err_field_checker_func"><![CDATA[Check Function should be selected]]></string>
+	<string name="_adm_form_err_field_checker_params_length_max"><![CDATA[Enter Max Value, non-zero integer number]]></string>
+	<string name="_adm_form_err_field_checker_params_length_min"><![CDATA[Enter Min Value, non-zero integer number]]></string>
+	<string name="_adm_form_err_field_checker_params_preg"><![CDATA[Enter valid regular expression]]></string>
+	<string name="_adm_form_err_field_edit"><![CDATA[Cannot update field]]></string>
+	<string name="_adm_form_err_field_show_to"><![CDATA[Cannot update field]]></string>
+	<string name="_adm_form_err_field_value_doublerange"><![CDATA[Default value should be empty or looks like 12-23]]></string>
+	<string name="_adm_form_err_field_value_number"><![CDATA[Use numeric characters only]]></string>
+	<string name="_adm_form_err_field_values"><![CDATA[You need to select a data set from the list.]]></string>
+	<string name="_adm_form_err_forms_edit"><![CDATA[Cannot update form]]></string>
+	<string name="_adm_form_err_forms_title"><![CDATA[Enter name, more then 3 characters]]></string>
+	<string name="_adm_form_err_missing_params"><![CDATA[The required parameters are missing.]]></string>
+	<string name="_adm_form_err_pre_lists_create"><![CDATA[Cannot add list]]></string>
+	<string name="_adm_form_err_pre_lists_edit"><![CDATA[Cannot update list]]></string>
+	<string name="_adm_form_err_pre_lists_title"><![CDATA[Enter title, more then 3 characters]]></string>
+	<string name="_adm_form_err_pre_values_create"><![CDATA[Cannot add item]]></string>
+	<string name="_adm_form_err_pre_values_create_forbidden"><![CDATA[This list is already used. It's impossible to add non-numeric, or less than 1, or more than {0} values in it.]]></string>
+	<string name="_adm_form_err_pre_values_delete"><![CDATA[Cannot delete item]]></string>
+	<string name="_adm_form_err_pre_values_edit"><![CDATA[Cannot update item]]></string>
+	<string name="_adm_form_err_pre_values_lkey"><![CDATA[Enter title, more then 3 characters]]></string>
+	<string name="_adm_form_txt_all_modules"><![CDATA[All Modules]]></string>
+	<string name="_adm_form_txt_confirm_delete"><![CDATA[Are you sure you want to delete this field? It will be deleted from all Displays! You may just turn it off instead.]]></string>
+	<string name="_adm_form_txt_displays_edit_popup"><![CDATA[Edit "{0}" Display]]></string>
+	<string name="_adm_form_txt_displays_gl_fields"><![CDATA[Fields]]></string>
+	<string name="_adm_form_txt_displays_gl_form"><![CDATA[Form]]></string>
+	<string name="_adm_form_txt_displays_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_form_txt_displays_gl_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_displays_manage_fields"><![CDATA[Manage fields]]></string>
+	<string name="_adm_form_txt_displays_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_field_add_popup"><![CDATA[Add New Field]]></string>
+	<string name="_adm_form_txt_field_attrs_max"><![CDATA[Max Value]]></string>
+	<string name="_adm_form_txt_field_attrs_min"><![CDATA[Min Value]]></string>
+	<string name="_adm_form_txt_field_attrs_src"><![CDATA[Image Source]]></string>
+	<string name="_adm_form_txt_field_attrs_step"><![CDATA[Step]]></string>
+	<string name="_adm_form_txt_field_caption"><![CDATA[Title]]></string>
+	<string name="_adm_form_txt_field_caption_system"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_field_checked"><![CDATA[Checked by default]]></string>
+	<string name="_adm_form_txt_field_checked_switcher"><![CDATA[Enabled by default]]></string>
+	<string name="_adm_form_txt_field_checker_avail"><![CDATA[Data Availability (something must be entered) ]]></string>
+	<string name="_adm_form_txt_field_checker_captcha"><![CDATA[Captcha (check for correct security image text input)]]></string>
+	<string name="_adm_form_txt_field_checker_date"><![CDATA[Date (check for correct date format)]]></string>
+	<string name="_adm_form_txt_field_checker_date_time"><![CDATA[Date and Time (check for correct date and time format)]]></string>
+	<string name="_adm_form_txt_field_checker_email"><![CDATA[E-mail (correct email address format)]]></string>
+	<string name="_adm_form_txt_field_checker_empty"><![CDATA[Select...]]></string>
+	<string name="_adm_form_txt_field_checker_error"><![CDATA[Error message if check failed]]></string>
+	<string name="_adm_form_txt_field_checker_func"><![CDATA[Check for]]></string>
+	<string name="_adm_form_txt_field_checker_length"><![CDATA[Data Length (limit amount of characters)]]></string>
+	<string name="_adm_form_txt_field_checker_no_spam"><![CDATA[Spam-Free (check if input is SPAM-free)]]></string>
+	<string name="_adm_form_txt_field_checker_params_length_max"><![CDATA[Max Value]]></string>
+	<string name="_adm_form_txt_field_checker_params_length_min"><![CDATA[Min Value]]></string>
+	<string name="_adm_form_txt_field_checker_params_preg"><![CDATA[Expression]]></string>
+	<string name="_adm_form_txt_field_checker_preg"><![CDATA[Regular Expression (something specific must be entered)]]></string>
+	<string name="_adm_form_txt_field_collapsed"><![CDATA[Collapsed]]></string>
+	<string name="_adm_form_txt_field_edit_popup"><![CDATA[Edit "{0}" Field]]></string>
+	<string name="_adm_form_txt_field_html"><![CDATA[HTML Editor]]></string>
+	<string name="_adm_form_txt_field_html_full"><![CDATA[Full]]></string>
+	<string name="_adm_form_txt_field_html_mini"><![CDATA[Mini]]></string>
+	<string name="_adm_form_txt_field_html_none"><![CDATA[No Editor]]></string>
+	<string name="_adm_form_txt_field_html_standard"><![CDATA[Standard]]></string>
+	<string name="_adm_form_txt_field_info"><![CDATA[Description]]></string>
+	<string name="_adm_form_txt_field_module"><![CDATA[Module]]></string>
+	<string name="_adm_form_txt_field_object"><![CDATA[Form]]></string>
+	<string name="_adm_form_txt_field_required"><![CDATA[Mandatory]]></string>
+	<string name="_adm_form_txt_field_show_to_popup"><![CDATA[Show "{0}" form field to: ]]></string>
+	<string name="_adm_form_txt_field_type_block_header"><![CDATA[block header]]></string>
+	<string name="_adm_form_txt_field_type_button"><![CDATA[button]]></string>
+	<string name="_adm_form_txt_field_type_captcha"><![CDATA[captcha]]></string>
+	<string name="_adm_form_txt_field_type_checkbox"><![CDATA[checkbox]]></string>
+	<string name="_adm_form_txt_field_type_checkbox_set"><![CDATA[checkbox set]]></string>
+	<string name="_adm_form_txt_field_type_custom"><![CDATA[custom]]></string>
+	<string name="_adm_form_txt_field_type_datepicker"><![CDATA[date]]></string>
+	<string name="_adm_form_txt_field_type_datetime"><![CDATA[date time]]></string>
+	<string name="_adm_form_txt_field_type_display"><![CDATA[Type]]></string>
+	<string name="_adm_form_txt_field_type_doublerange"><![CDATA[double range slider]]></string>
+	<string name="_adm_form_txt_field_type_file"><![CDATA[file]]></string>
+	<string name="_adm_form_txt_field_type_files"><![CDATA[files]]></string>
+	<string name="_adm_form_txt_field_type_hidden"><![CDATA[hidden]]></string>
+	<string name="_adm_form_txt_field_type_image"><![CDATA[image]]></string>
+	<string name="_adm_form_txt_field_type_input_set"><![CDATA[input set]]></string>
+	<string name="_adm_form_txt_field_type_number"><![CDATA[number]]></string>
+	<string name="_adm_form_txt_field_type_password"><![CDATA[password]]></string>
+	<string name="_adm_form_txt_field_type_radio_set"><![CDATA[radio set]]></string>
+	<string name="_adm_form_txt_field_type_reset"><![CDATA[reset]]></string>
+	<string name="_adm_form_txt_field_type_select"><![CDATA[select]]></string>
+	<string name="_adm_form_txt_field_type_select_multiple"><![CDATA[select (multiple)]]></string>
+	<string name="_adm_form_txt_field_type_slider"><![CDATA[slider]]></string>
+	<string name="_adm_form_txt_field_type_submit"><![CDATA[submit]]></string>
+	<string name="_adm_form_txt_field_type_switcher"><![CDATA[switcher]]></string>
+	<string name="_adm_form_txt_field_type_text"><![CDATA[text]]></string>
+	<string name="_adm_form_txt_field_type_textarea"><![CDATA[textarea]]></string>
+	<string name="_adm_form_txt_field_type_value"><![CDATA[info]]></string>
+	<string name="_adm_form_txt_field_value_button"><![CDATA[Title]]></string>
+	<string name="_adm_form_txt_field_value_checkbox"><![CDATA[Value]]></string>
+	<string name="_adm_form_txt_field_value_custom_text"><![CDATA[Custom text]]></string>
+	<string name="_adm_form_txt_field_value_default"><![CDATA[Default value]]></string>
+	<string name="_adm_form_txt_field_value_select_value"><![CDATA[Select value...]]></string>
+	<string name="_adm_form_txt_field_values"><![CDATA[Values]]></string>
+	<string name="_adm_form_txt_field_values_manage"><![CDATA[Manage values]]></string>
+	<string name="_adm_form_txt_field_values_select_list"><![CDATA[Select list...]]></string>
+	<string name="_adm_form_txt_field_visible_for"><![CDATA[Visible For]]></string>
+	<string name="_adm_form_txt_field_visible_for_all"><![CDATA[Anyone]]></string>
+	<string name="_adm_form_txt_field_visible_for_levels"><![CDATA[Select Levels]]></string>
+	<string name="_adm_form_txt_field_visible_for_selected"><![CDATA[Selected levels]]></string>
+	<string name="_adm_form_txt_fields_caption_system"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_fields_manage_visibility"><![CDATA[Manage visibility settings]]></string>
+	<string name="_adm_form_txt_fields_module"><![CDATA[Module]]></string>
+	<string name="_adm_form_txt_fields_type"><![CDATA[Type]]></string>
+	<string name="_adm_form_txt_fields_visible"><![CDATA[Visible For]]></string>
+	<string name="_adm_form_txt_forms_edit_popup"><![CDATA[Edit "{0}" Form]]></string>
+	<string name="_adm_form_txt_forms_gl_displays"><![CDATA[Displays]]></string>
+	<string name="_adm_form_txt_forms_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_form_txt_forms_gl_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_forms_manage_displays"><![CDATA[Manage displays]]></string>
+	<string name="_adm_form_txt_forms_n_displays"><![CDATA[{0} displays]]></string>
+	<string name="_adm_form_txt_forms_n_fields"><![CDATA[{0} fields]]></string>
+	<string name="_adm_form_txt_forms_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_pre_lists_country"><![CDATA[Country]]></string>
+	<string name="_adm_form_txt_pre_lists_create_popup"><![CDATA[Add New List]]></string>
+	<string name="_adm_form_txt_pre_lists_edit_popup"><![CDATA[Edit "{0}" List]]></string>
+	<string name="_adm_form_txt_pre_lists_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_form_txt_pre_lists_gl_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_pre_lists_gl_use_for_sets"><![CDATA[Use For Sets]]></string>
+	<string name="_adm_form_txt_pre_lists_gl_values"><![CDATA[Values]]></string>
+	<string name="_adm_form_txt_pre_lists_language"><![CDATA[Language]]></string>
+	<string name="_adm_form_txt_pre_lists_manage_values"><![CDATA[Manage values]]></string>
+	<string name="_adm_form_txt_pre_lists_n_values"><![CDATA[{0} items]]></string>
+	<string name="_adm_form_txt_pre_lists_no"><![CDATA[No]]></string>
+	<string name="_adm_form_txt_pre_lists_sex"><![CDATA[Sex]]></string>
+	<string name="_adm_form_txt_pre_lists_title"><![CDATA[System Name]]></string>
+	<string name="_adm_form_txt_pre_lists_yes"><![CDATA[Yes]]></string>
+	<string name="_adm_form_txt_pre_values_create_popup"><![CDATA[Add New Item]]></string>
+	<string name="_adm_form_txt_pre_values_edit_popup"><![CDATA[Edit "{0}" Item]]></string>
+	<string name="_adm_form_txt_pre_values_empty"><![CDATA[Use empty value for this item]]></string>
+	<string name="_adm_form_txt_pre_values_gl_lkey"><![CDATA[Title]]></string>
+	<string name="_adm_form_txt_pre_values_lkey"><![CDATA[Title]]></string>
+	<string name="_adm_form_txt_select_display"><![CDATA[Select Display...]]></string>
+	<string name="_adm_form_txt_select_form"><![CDATA[Select Form...]]></string>
+	<string name="_adm_form_txt_select_list"><![CDATA[Select List...]]></string>
+	<string name="_adm_from_err_field_delete"><![CDATA[Cannot delete field]]></string>
+	<string name="_adm_from_err_pre_lists_delete"><![CDATA[Cannot delete list]]></string>
+	<string name="_adm_ipbl_Date_of_finish"><![CDATA[Expiration date]]></string>
+	<string name="_adm_ipbl_IP_Role"><![CDATA[IP Role]]></string>
+	<string name="_adm_ipbl_Stored_members_caption"><![CDATA[Stored Logged Members IPs]]></string>
+	<string name="_adm_ipbl_Type0_desc"><![CDATA[IP List Type is 0 : disabled]]></string>
+	<string name="_adm_ipbl_Type1_desc"><![CDATA[IP List Type is 1 : All IPs allowed except listed]]></string>
+	<string name="_adm_ipbl_Type2_desc"><![CDATA[IP List Type is 2 : All IPs blocked except listed]]></string>
+	<string name="_adm_ipbl_sample"><![CDATA[sample]]></string>
+    <string name="_adm_lang_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" language?</h3><p>Uninstalling "{0}" language will also delete all of its data. Do you want to continue?</p>]]></string>
+	<string name="_adm_lmi_cpt_actions"><![CDATA[Actions]]></string>
+	<string name="_adm_lmi_cpt_checkout"><![CDATA[Checkout {checkout_counter}]]></string>
+	<string name="_adm_lmi_cpt_displays"><![CDATA[Displays]]></string>
+	<string name="_adm_lmi_cpt_downloaded"><![CDATA[Downloaded]]></string>
+	<string name="_adm_lmi_cpt_etemplates"><![CDATA[Email Templates]]></string>
+	<string name="_adm_lmi_cpt_featured"><![CDATA[Featured]]></string>
+	<string name="_adm_lmi_cpt_fields"><![CDATA[Fields]]></string>
+	<string name="_adm_lmi_cpt_forms"><![CDATA[Forms]]></string>
+	<string name="_adm_lmi_cpt_general"><![CDATA[General]]></string>
+	<string name="_adm_lmi_cpt_goodies"><![CDATA[Storefront]]></string>
+	<string name="_adm_lmi_cpt_icon"><![CDATA[Site Icon]]></string>
+	<string name="_adm_lmi_cpt_items"><![CDATA[Items]]></string>
+	<string name="_adm_lmi_cpt_keys"><![CDATA[Keys]]></string>
+	<string name="_adm_lmi_cpt_levels"><![CDATA[Levels]]></string>
+	<string name="_adm_lmi_cpt_logo"><![CDATA[Logo]]></string>
+	<string name="_adm_lmi_cpt_menus"><![CDATA[Menus]]></string>
+	<string name="_adm_lmi_cpt_pre_lists"><![CDATA[Data Lists]]></string>
+	<string name="_adm_lmi_cpt_pre_values"><![CDATA[Data Items]]></string>
+	<string name="_adm_lmi_cpt_purchases"><![CDATA[Purchases]]></string>
+	<string name="_adm_lmi_cpt_sets"><![CDATA[Sets]]></string>
+	<string name="_adm_lmi_cpt_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_lmi_cpt_updates"><![CDATA[Updates]]></string>
+	<string name="_adm_mobile_page_homepage"><![CDATA[Homepage]]></string>
+	<string name="_adm_mobile_page_profile"><![CDATA[Profile]]></string>
+    <string name="_adm_mod_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" module?</h3><p>Uninstalling "{0}" module will also delete all of its data. Do you want to continue?</p>]]></string>
+	<string name="_adm_mod_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+    <string name="_adm_mod_err_only_admin_can_perform_operations_with_modules"><![CDATA[Only admin can perform operations with modules]]></string>
+	<string name="_adm_mod_err_process_operation_failed"><![CDATA[Cannot {0} module from "{1}" directory]]></string>
+	<string name="_adm_mod_msg_process_operation_scheduled"><![CDATA[Operation was scheduled and will be performed in a few minutes. Please wait.]]></string>	
+	<string name="_adm_msg_modules_success_added_to_cart"><![CDATA[The product was successfully added to shopping cart.]]></string>
+	<string name="_adm_msg_modules_success_checkouted"><![CDATA[The payment was successfully accepted and should be processed automatically in a few minutes. Then the purchased product(s) will be available in Store -> Purchases.<br />Note. If it doesn't happen for some reason, you need to contact with product's vendor and provide him with your payment's details. He'll be able to process payment manually if the payment was received.]]></string>
+	<string name="_adm_msg_modules_success_delete"><![CDATA[The package was deleted successfully]]></string>
+	<string name="_adm_msg_modules_success_disable"><![CDATA[The package was disabled successfully]]></string>
+	<string name="_adm_msg_modules_success_enable"><![CDATA[The package was enabled successfully]]></string>
+	<string name="_adm_msg_modules_success_install"><![CDATA[The package was installed successfully]]></string>
+	<string name="_adm_msg_modules_success_uninstall"><![CDATA[The package was uninstalled successfully]]></string>
+	<string name="_adm_msg_oauth_need_authorize"><![CDATA[You need to to login into your <b>BoonEx</b> account to get data. Click <a href="{0}">here</a> to login.]]></string>
+	<string name="_adm_nav_btn_current_icon_image_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_nav_btn_items_add"><![CDATA[Add]]></string>
+	<string name="_adm_nav_btn_items_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_nav_btn_items_delete"><![CDATA[Delete item]]></string>
+	<string name="_adm_nav_btn_items_done"><![CDATA[Done]]></string>
+	<string name="_adm_nav_btn_items_edit"><![CDATA[Edit item]]></string>
+	<string name="_adm_nav_btn_items_gl_create"><![CDATA[Add New Item]]></string>
+	<string name="_adm_nav_btn_items_gl_import"><![CDATA[Import Items]]></string>
+	<string name="_adm_nav_btn_items_gl_visible"><![CDATA[Visible For]]></string>
+	<string name="_adm_nav_btn_items_import"><![CDATA[Import item]]></string>
+	<string name="_adm_nav_btn_items_save"><![CDATA[Save]]></string>
+	<string name="_adm_nav_btn_menus_add"><![CDATA[Add]]></string>
+	<string name="_adm_nav_btn_menus_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_nav_btn_menus_create"><![CDATA[Add New Menu]]></string>
+	<string name="_adm_nav_btn_menus_delete"><![CDATA[Delete Menu]]></string>
+	<string name="_adm_nav_btn_menus_edit"><![CDATA[Edit Menu]]></string>
+	<string name="_adm_nav_btn_menus_save"><![CDATA[Save]]></string>
+	<string name="_adm_nav_btn_sets_add"><![CDATA[Add]]></string>
+	<string name="_adm_nav_btn_sets_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_nav_btn_sets_create"><![CDATA[Add New Set]]></string>
+	<string name="_adm_nav_btn_sets_delete"><![CDATA[Delete set]]></string>
+	<string name="_adm_nav_btn_sets_edit"><![CDATA[Edit set]]></string>
+	<string name="_adm_nav_dsc_items_icon"><![CDATA[You may use font icon here]]></string>
+	<string name="_adm_nav_dsc_items_icon_image"><![CDATA[or upload a small image to be displayed near the link.]]></string>
+	<string name="_adm_nav_dsc_items_icon_image_current"><![CDATA[No icon uploaded. Text is used in menu item.]]></string>
+	<string name="_adm_nav_dsc_items_link"><![CDATA[Enter the link URL]]></string>
+	<string name="_adm_nav_dsc_items_submenu"><![CDATA[Select if you want the link to have a submenu.]]></string>
+	<string name="_adm_nav_dsc_items_target"><![CDATA[Select if you want the link to open as a new page or within current page.]]></string>
+	<string name="_adm_nav_dsc_items_title"><![CDATA[Link name displayed in site menus. Use at least 3 characters.]]></string>
+	<string name="_adm_nav_dsc_items_title_system"><![CDATA[Item name, displayed in Studio only.]]></string>
+	<string name="_adm_nav_dsc_items_visible_for_levels"><![CDATA[Select user levels that can see this menu item]]></string>
+	<string name="_adm_nav_dsc_menus_set_name"><![CDATA[Assign a Set of menu Items]]></string>
+	<string name="_adm_nav_dsc_menus_set_title"><![CDATA[Descriptive name displayed in Studio only. Use at least 3 characters.]]></string>
+	<string name="_adm_nav_dsc_menus_style"><![CDATA[Select presentation style - the way this menu will be displayed on site]]></string>
+	<string name="_adm_nav_dsc_menus_title"><![CDATA[Descriptive name displayed in Studio only. Use at least 3 characters.]]></string>
+	<string name="_adm_nav_dsc_sets_title"><![CDATA[Descriptive name displayed in Studio only. Use at least 3 characters.]]></string>
+	<string name="_adm_nav_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_nav_err_items_create"><![CDATA[Cannot create item]]></string>
+	<string name="_adm_nav_err_items_delete"><![CDATA[Cannot delete item]]></string>
+	<string name="_adm_nav_err_items_edit"><![CDATA[Cannot update item]]></string>
+	<string name="_adm_nav_err_items_icon"><![CDATA[You need to enter font icon name here.]]></string>
+	<string name="_adm_nav_err_items_icon_image"><![CDATA[Cannot process image: ]]></string>
+	<string name="_adm_nav_err_items_icon_image_remove"><![CDATA[Cannot remove icon image: ]]></string>
+	<string name="_adm_nav_err_items_import"><![CDATA[Cannot import item(s)]]></string>
+	<string name="_adm_nav_err_items_link"><![CDATA[You need to enter item URL]]></string>
+	<string name="_adm_nav_err_items_show_to"><![CDATA[Cannot update item]]></string>
+	<string name="_adm_nav_err_items_title_system"><![CDATA[A name with at least 3 characters is required.]]></string>
+	<string name="_adm_nav_err_menus_create"><![CDATA[Cannot create menu]]></string>
+	<string name="_adm_nav_err_menus_delete"><![CDATA[Cannot delete menu]]></string>
+	<string name="_adm_nav_err_menus_edit"><![CDATA[Cannot update menu]]></string>
+	<string name="_adm_nav_err_menus_set_name"><![CDATA[Please, assign a Set.]]></string>
+	<string name="_adm_nav_err_menus_set_title"><![CDATA[A unique title with at least 3 characters is required.]]></string>
+	<string name="_adm_nav_err_menus_style"><![CDATA[Please, select a presentation style.]]></string>
+	<string name="_adm_nav_err_menus_title"><![CDATA[A title with at least 3 characters is required.]]></string>
+	<string name="_adm_nav_err_missing_params"><![CDATA[The required parameters are missing.]]></string>
+	<string name="_adm_nav_err_sets_create"><![CDATA[Cannot create set]]></string>
+	<string name="_adm_nav_err_sets_delete"><![CDATA[Cannot delete set]]></string>
+	<string name="_adm_nav_err_sets_delete_used"><![CDATA[Set can't be deleted because it is in use]]></string>
+	<string name="_adm_nav_err_sets_edit"><![CDATA[Cannot update set]]></string>
+	<string name="_adm_nav_err_sets_title"><![CDATA[A title with at least 3 characters is required.]]></string>
+	<string name="_adm_nav_txt_all_modules"><![CDATA[All Modules]]></string>
+	<string name="_adm_nav_txt_items_create_popup"><![CDATA[Add New Item]]></string>
+	<string name="_adm_nav_txt_items_edit_popup"><![CDATA[Edit {0} Item]]></string>
+	<string name="_adm_nav_txt_items_gl_icon"><![CDATA[Icon]]></string>
+	<string name="_adm_nav_txt_items_gl_link"><![CDATA[URL]]></string>
+	<string name="_adm_nav_txt_items_gl_link_custom"><![CDATA[Custom Action]]></string>
+	<string name="_adm_nav_txt_items_gl_link_menu"><![CDATA[Menu:]]></string>
+	<string name="_adm_nav_txt_items_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_nav_txt_items_gl_title_system"><![CDATA[System Name]]></string>
+	<string name="_adm_nav_txt_items_gl_visible"><![CDATA[Visible For]]></string>
+	<string name="_adm_nav_txt_items_icon"><![CDATA[Icon]]></string>
+	<string name="_adm_nav_txt_items_icon_image"><![CDATA[]]></string>
+	<string name="_adm_nav_txt_items_icon_image_new"><![CDATA[]]></string>
+	<string name="_adm_nav_txt_items_icon_image_old"><![CDATA[Current Icon]]></string>
+	<string name="_adm_nav_txt_items_import_popup"><![CDATA[Import Items]]></string>
+	<string name="_adm_nav_txt_items_link"><![CDATA[URL]]></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>
+	<string name="_adm_nav_txt_items_target"><![CDATA[Target]]></string>
+	<string name="_adm_nav_txt_items_target_blank"><![CDATA[New Page]]></string>
+	<string name="_adm_nav_txt_items_target_self"><![CDATA[Same Page]]></string>
+	<string name="_adm_nav_txt_items_title"><![CDATA[Title]]></string>
+	<string name="_adm_nav_txt_items_title_system"><![CDATA[System Name]]></string>
+	<string name="_adm_nav_txt_items_visible_for"><![CDATA[Visible For]]></string>
+	<string name="_adm_nav_txt_items_visible_for_all"><![CDATA[Anyone]]></string>
+	<string name="_adm_nav_txt_items_visible_for_levels"><![CDATA[Select Levels]]></string>
+	<string name="_adm_nav_txt_items_visible_for_selected"><![CDATA[Selected levels]]></string>
+	<string name="_adm_nav_txt_manage_items"><![CDATA[Manage items]]></string>
+	<string name="_adm_nav_txt_manage_visibility"><![CDATA[Manage visibility settings]]></string>
+	<string name="_adm_nav_txt_menus_create_popup"><![CDATA[Add New Menu]]></string>
+	<string name="_adm_nav_txt_menus_edit_popup"><![CDATA[Edit "{0}" Menu]]></string>
+	<string name="_adm_nav_txt_menus_gl_items"><![CDATA[Items]]></string>
+	<string name="_adm_nav_txt_menus_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_nav_txt_menus_gl_set_title"><![CDATA[Set]]></string>
+	<string name="_adm_nav_txt_menus_gl_template_title"><![CDATA[Style]]></string>
+	<string name="_adm_nav_txt_menus_gl_title"><![CDATA[System Name]]></string>
+	<string name="_adm_nav_txt_menus_set_name"><![CDATA[Set]]></string>
+	<string name="_adm_nav_txt_menus_set_name_new"><![CDATA[Create New]]></string>
+	<string name="_adm_nav_txt_menus_set_name_select"><![CDATA[Select Set...]]></string>
+	<string name="_adm_nav_txt_menus_set_title"><![CDATA[Set Title]]></string>
+	<string name="_adm_nav_txt_menus_style"><![CDATA[Style]]></string>
+	<string name="_adm_nav_txt_menus_style_select"><![CDATA[Select Style...]]></string>
+	<string name="_adm_nav_txt_menus_title"><![CDATA[System Name]]></string>
+	<string name="_adm_nav_txt_n_items"><![CDATA[{0} items]]></string>
+	<string name="_adm_nav_txt_select_set"><![CDATA[Select Set...]]></string>
+	<string name="_adm_nav_txt_sets_create_popup"><![CDATA[Add New Set]]></string>
+	<string name="_adm_nav_txt_sets_edit_popup"><![CDATA[Edit "{0}" Set]]></string>
+	<string name="_adm_nav_txt_sets_gl_items"><![CDATA[Items]]></string>
+	<string name="_adm_nav_txt_sets_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_nav_txt_sets_gl_title"><![CDATA[System Name]]></string>
+	<string name="_adm_nav_txt_sets_title"><![CDATA[System Name]]></string>
+	<string name="_adm_page_cpt_builder_forms"><![CDATA[Forms]]></string>
+	<string name="_adm_page_cpt_builder_menus"><![CDATA[Navigation]]></string>
+	<string name="_adm_page_cpt_builder_mobile"><![CDATA[Mobile Builder]]></string>
+	<string name="_adm_page_cpt_builder_pages"><![CDATA[Pages]]></string>
+	<string name="_adm_page_cpt_builder_permissions"><![CDATA[Permissions]]></string>
+	<string name="_adm_page_cpt_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_adm_page_cpt_designer"><![CDATA[Designer]]></string>
+	<string name="_adm_page_cpt_home"><![CDATA[Studio]]></string>
+	<string name="_adm_page_cpt_login"><![CDATA[Login]]></string>
+	<string name="_adm_page_cpt_polyglot"><![CDATA[Polyglot]]></string>
+	<string name="_adm_page_cpt_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_page_cpt_store"><![CDATA[Extensions]]></string>
+	<string name="_adm_pgt_btn_add_new_key"><![CDATA[Create New Key]]></string>
+	<string name="_adm_pgt_btn_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_pgt_btn_delete_title"><![CDATA[Delete key]]></string>
+	<string name="_adm_pgt_btn_edit_title"><![CDATA[Edit key]]></string>
+	<string name="_adm_pgt_btn_etemplates_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_pgt_btn_etemplates_gl_edit_title"><![CDATA[Edit template]]></string>
+	<string name="_adm_pgt_btn_etemplates_save"><![CDATA[Save]]></string>
+	<string name="_adm_pgt_btn_nkp_close"><![CDATA[Close]]></string>
+	<string name="_adm_pgt_btn_nkp_create"><![CDATA[Create]]></string>
+	<string name="_adm_pgt_btn_nkp_save"><![CDATA[Save]]></string>
+	<string name="_adm_pgt_dsc_etemplates_body"><![CDATA[Body of a message]]></string>
+	<string name="_adm_pgt_dsc_etemplates_name_system"><![CDATA[Name of the template. Displayed in Studio only.]]></string>
+	<string name="_adm_pgt_dsc_etemplates_subject"><![CDATA[Subject of a message]]></string>
+	<string name="_adm_pgt_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_pgt_err_cannot_recompile_lang"><![CDATA[Cannot recompile language(s).]]></string>
+	<string name="_adm_pgt_err_cannot_restore_lang"><![CDATA[Cannot restore language(s).]]></string>
+	<string name="_adm_pgt_err_create_key"><![CDATA[Cannot create key]]></string>
+	<string name="_adm_pgt_err_create_key_empty_fields"><![CDATA[You need to fill in the form.]]></string>
+	<string name="_adm_pgt_err_deactivate_default"><![CDATA[You cannot deactivate language which was selected as Default]]></string>
+	<string name="_adm_pgt_err_etemplates_body"><![CDATA[Enter body]]></string>
+	<string name="_adm_pgt_err_etemplates_edit"><![CDATA[Cannot update template]]></string>
+	<string name="_adm_pgt_err_etemplates_name_system"><![CDATA[Enter name, more then 3 characters]]></string>
+	<string name="_adm_pgt_err_etemplates_subject"><![CDATA[Enter subject]]></string>
+	<string name="_adm_pgt_err_last_active"><![CDATA[You need to have at least one active language.]]></string>
+	<string name="_adm_pgt_err_save"><![CDATA[Cannot save changes]]></string>
+	<string name="_adm_pgt_scs_recompiled"><![CDATA[Language(s) was successfully recompiled.]]></string>
+	<string name="_adm_pgt_scs_restored"><![CDATA[Language(s) was successfully restored.]]></string>
+	<string name="_adm_pgt_txt_all_modules"><![CDATA[All Modules]]></string>
+	<string name="_adm_pgt_txt_etemplates_body"><![CDATA[Body]]></string>
+	<string name="_adm_pgt_txt_etemplates_edit_popup"><![CDATA[Edit "{0}" Template]]></string>
+	<string name="_adm_pgt_txt_etemplates_gl_module"><![CDATA[Module]]></string>
+	<string name="_adm_pgt_txt_etemplates_gl_name_system"><![CDATA[System Title]]></string>
+	<string name="_adm_pgt_txt_etemplates_name_system"><![CDATA[System Name]]></string>
+	<string name="_adm_pgt_txt_etemplates_subject"><![CDATA[Subject]]></string>
+	<string name="_adm_pgt_txt_key"><![CDATA[Key]]></string>
+	<string name="_adm_pgt_txt_keyword"><![CDATA[Keyword...]]></string>
+	<string name="_adm_pgt_txt_languages"><![CDATA[Languages]]></string>
+	<string name="_adm_pgt_txt_module"><![CDATA[Module]]></string>
+	<string name="_adm_pgt_txt_nkp_add_popup"><![CDATA[Create New Key]]></string>
+	<string name="_adm_pgt_txt_nkp_edit_popup"><![CDATA[Edit "{0}" Key]]></string>
+	<string name="_adm_pgt_txt_nkp_key_name"><![CDATA[Key Name]]></string>
+	<string name="_adm_pgt_txt_nkp_module"><![CDATA[Module]]></string>
+	<string name="_adm_pgt_txt_text"><![CDATA[Text]]></string>
+	<string name="_adm_prm_btn_actions_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_prm_btn_actions_options"><![CDATA[Edit options]]></string>
+	<string name="_adm_prm_btn_actions_save"><![CDATA[Save]]></string>
+	<string name="_adm_prm_btn_add_level"><![CDATA[Add New Level]]></string>
+	<string name="_adm_prm_btn_add_price"><![CDATA[Add New Pricing Option]]></string>
+	<string name="_adm_prm_btn_level_add"><![CDATA[Add Level]]></string>
+	<string name="_adm_prm_btn_level_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_prm_btn_level_delete"><![CDATA[Delete level]]></string>
+	<string name="_adm_prm_btn_level_edit"><![CDATA[Edit level]]></string>
+	<string name="_adm_prm_btn_level_save"><![CDATA[Save]]></string>
+	<string name="_adm_prm_btn_price_add"><![CDATA[Add]]></string>
+	<string name="_adm_prm_btn_price_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_prm_btn_price_delete"><![CDATA[Delete pricing option]]></string>
+	<string name="_adm_prm_btn_price_edit"><![CDATA[Edit pricing option]]></string>
+	<string name="_adm_prm_btn_price_save"><![CDATA[Save]]></string>
+	<string name="_adm_prm_dsc_actions_avail"><![CDATA[Leave it blank if the action is always available]]></string>
+	<string name="_adm_prm_dsc_actions_number"><![CDATA[Leave it blank for unlimited actions]]></string>
+	<string name="_adm_prm_dsc_actions_reset"><![CDATA[In hours. Leave it blank if you don't want to reset counter]]></string>
+	<string name="_adm_prm_dsc_level_description"><![CDATA[Brief overview of terms and advantages of this level.]]></string>
+	<string name="_adm_prm_dsc_level_icon"><![CDATA[You may use font icon here]]></string>
+	<string name="_adm_prm_dsc_level_icon_image"><![CDATA[or upload an image.]]></string>
+	<string name="_adm_prm_dsc_level_name"><![CDATA[Short name for the membership level (i.e Premium, Gold, Newcomer, etc.)]]></string>
+	<string name="_adm_prm_dsc_level_quota_max_file_size"><![CDATA[Limit max file size for user with this level across all modules (0 - unlimited, other system limits may apply).]]></string>
+	<string name="_adm_prm_dsc_level_quota_number"><![CDATA[Limit  amount of files a user with this level can upload (0 - unlimited).]]></string>
+	<string name="_adm_prm_dsc_level_quota_size"><![CDATA[Limit how much space can be used by user with this level across all modules (0 - unlimited).]]></string>
+	<string name="_adm_prm_dsc_price_add_days"><![CDATA[Use 0 for life-time]]></string>
+	<string name="_adm_prm_err_level_create"><![CDATA[Cannot create membership level]]></string>
+	<string name="_adm_prm_err_level_delete"><![CDATA[Cannot delete membership level]]></string>
+	<string name="_adm_prm_err_level_edit"><![CDATA[Cannot update membership level]]></string>
+	<string name="_adm_prm_err_level_icon"><![CDATA[You need to enter font icon name here.]]></string>
+	<string name="_adm_prm_err_level_icon_image"><![CDATA[Cannot upload icon: ]]></string>
+	<string name="_adm_prm_err_level_icon_image_remove"><![CDATA[Cannot remove icon]]></string>
+	<string name="_adm_prm_err_level_id"><![CDATA[Membership levels limit is reached.]]></string>
+	<string name="_adm_prm_err_level_name"><![CDATA[You need to enter name(3, 100) for all languages]]></string>
+	<string name="_adm_prm_err_level_quota_max_file_size"><![CDATA[You need to enter a numeric value, leave 0 for unlimited]]></string>
+	<string name="_adm_prm_err_level_quota_number"><![CDATA[You need to enter a numeric value, leave 0 for unlimited]]></string>
+	<string name="_adm_prm_err_level_quota_size"><![CDATA[You need to enter a numeric value, leave 0 for unlimited]]></string>
+	<string name="_adm_prm_err_price_create"><![CDATA[Cannot create pricing option]]></string>
+	<string name="_adm_prm_err_price_duplicate"><![CDATA[The similar pricing option already exists for this level.]]></string>
+	<string name="_adm_prm_err_price_update"><![CDATA[Cannot update pricing option]]></string>
+	<string name="_adm_prm_txt_actions"><![CDATA[Actions]]></string>
+	<string name="_adm_prm_txt_actions_avail_end"><![CDATA[This action is available until]]></string>
+	<string name="_adm_prm_txt_actions_avail_start"><![CDATA[This action is available since]]></string>
+	<string name="_adm_prm_txt_actions_number"><![CDATA[Number of allowed actions]]></string>
+	<string name="_adm_prm_txt_actions_options_popup"><![CDATA[Edit "{0}" Action]]></string>
+	<string name="_adm_prm_txt_actions_reset"><![CDATA[Number of actions is reset every]]></string>
+	<string name="_adm_prm_txt_all_modules"><![CDATA[All Modules]]></string>
+	<string name="_adm_prm_txt_description"><![CDATA[Description]]></string>
+	<string name="_adm_prm_txt_enable"><![CDATA[Enable]]></string>
+	<string name="_adm_prm_txt_icon"><![CDATA[Icon]]></string>
+	<string name="_adm_prm_txt_level_account"><![CDATA[Account]]></string>
+	<string name="_adm_prm_txt_level_administrator"><![CDATA[Administrator]]></string>
+	<string name="_adm_prm_txt_level_create_popup"><![CDATA[Add New Level]]></string>
+	<string name="_adm_prm_txt_level_description"><![CDATA[Description]]></string>
+	<string name="_adm_prm_txt_level_edit_popup"><![CDATA[Edit "{0}" Level]]></string>
+	<string name="_adm_prm_txt_level_icon"><![CDATA[Icon]]></string>
+	<string name="_adm_prm_txt_level_icon_image"><![CDATA[]]></string>
+	<string name="_adm_prm_txt_level_icon_image_new"><![CDATA[]]></string>
+	<string name="_adm_prm_txt_level_icon_image_old"><![CDATA[Current Icon]]></string>
+	<string name="_adm_prm_txt_level_moderator"><![CDATA[Moderator]]></string>
+	<string name="_adm_prm_txt_level_name"><![CDATA[Title]]></string>
+	<string name="_adm_prm_txt_level_pending"><![CDATA[Pending]]></string>
+	<string name="_adm_prm_txt_level_premium"><![CDATA[Premium]]></string>
+	<string name="_adm_prm_txt_level_quota_max_file_size"><![CDATA[Max File Size Limit(Mb)]]></string>
+	<string name="_adm_prm_txt_level_quota_number"><![CDATA[Max Files Limit]]></string>
+	<string name="_adm_prm_txt_level_quota_size"><![CDATA[Storage Limit(Mb)]]></string>
+	<string name="_adm_prm_txt_level_standard"><![CDATA[Standard]]></string>
+	<string name="_adm_prm_txt_level_suspended"><![CDATA[Suspended]]></string>
+	<string name="_adm_prm_txt_level_unauthenticated"><![CDATA[Unauthenticated]]></string>
+	<string name="_adm_prm_txt_level_unconfirmed"><![CDATA[Unconfirmed]]></string>
+	<string name="_adm_prm_txt_manage_actions"><![CDATA[Manage actions]]></string>
+	<string name="_adm_prm_txt_max_file_size"><![CDATA[Max File Size]]></string>
+	<string name="_adm_prm_txt_max_files"><![CDATA[Max Files]]></string>
+	<string name="_adm_prm_txt_module"><![CDATA[Module]]></string>
+	<string name="_adm_prm_txt_n_actions"><![CDATA[{0} actions]]></string>
+	<string name="_adm_prm_txt_price"><![CDATA[Price]]></string>
+	<string name="_adm_prm_txt_price_add_days"><![CDATA[Number of days]]></string>
+	<string name="_adm_prm_txt_price_add_popup"><![CDATA[Add New Pricing Option]]></string>
+	<string name="_adm_prm_txt_price_add_price"><![CDATA[Price]]></string>
+	<string name="_adm_prm_txt_price_edit_popup"><![CDATA[Edit "{0} days" Pricing Option]]></string>
+	<string name="_adm_prm_txt_select_level"><![CDATA[Select Level]]></string>
+	<string name="_adm_prm_txt_storage"><![CDATA[Storage]]></string>
+	<string name="_adm_prm_txt_term"><![CDATA[Term]]></string>
+	<string name="_adm_prm_txt_title"><![CDATA[Title]]></string>
+	<string name="_adm_prm_txt_visibility_items_anyone"><![CDATA[Anyone]]></string>
+	<string name="_adm_prm_txt_visibility_items_n_user_levels"><![CDATA[{0} User Levels]]></string>
+	<string name="_adm_prm_txt_visibility_items_nobody"><![CDATA[Nobody]]></string>
+	<string name="_adm_reg_desciption"><![CDATA[A purchased license removes BoonEx ads from your site and upgrades your Unity account to "Advanced". For even more goodies and "Premium" membership <a href="https://www.boonex.com/paymentprovider/payment">go Prime</a>.]]></string>
+	<string name="_adm_reg_license"><![CDATA[License:]]></string>
+	<string name="_adm_reg_title"><![CDATA[<a href="https://www.boonex.com/paymentprovider/payment">Purchase a Dolphin License</a> and Register Your Site.]]></string>
+	<string name="_adm_scs_operation_done"><![CDATA[]]></string>
+	<string name="_adm_stg_cpt_category_account"><![CDATA[Account]]></string>
+	<string name="_adm_stg_cpt_category_cache"><![CDATA[Cache]]></string>
+	<string name="_adm_stg_cpt_category_general"><![CDATA[General]]></string>
+	<string name="_adm_stg_cpt_category_languages"><![CDATA[Languages]]></string>
+	<string name="_adm_stg_cpt_category_permalinks"><![CDATA[Permalinks]]></string>
+	<string name="_adm_stg_cpt_category_security"><![CDATA[Security]]></string>
+	<string name="_adm_stg_cpt_category_site_settings"><![CDATA[Site Settings]]></string>
+	<string name="_adm_stg_cpt_category_storage"><![CDATA[Storage]]></string>
+	<string name="_adm_stg_cpt_category_system"><![CDATA[System]]></string>
+	<string name="_adm_stg_cpt_category_templates"><![CDATA[Templates]]></string>
+	<string name="_adm_stg_cpt_option_currency_code"><![CDATA[Currency code (for checkout system)]]></string>
+	<string name="_adm_stg_err_option_currency_code"><![CDATA[Cannot be empty.]]></string>
+	<string name="_adm_stg_cpt_option_currency_sign"><![CDATA[Currency sign (for display purposes only)]]></string>
+	<string name="_adm_stg_err_option_currency_sign"><![CDATA[Cannot be empty.]]></string>
+	<string name="_adm_stg_cpt_option_enable_gd"><![CDATA[Use GD library for image processing]]></string>
+	<string name="_adm_stg_cpt_option_expire_notification_days"><![CDATA[Number of days before membership expiration to notify members ( -1 = after expiration )]]></string>
+	<string name="_adm_stg_cpt_option_expire_notify_once"><![CDATA[Notify members about membership expiration only once (every day otherwise)]]></string>
+	<string name="_adm_stg_cpt_option_lang_default"><![CDATA[Default Language]]></string>
+	<string name="_adm_stg_cpt_option_lang_subst_from_en"><![CDATA[Substitute (during compilation) missing translations with english ones]]></string>	
+	<string name="_adm_stg_cpt_option_permalinks_modules"><![CDATA[Enable friendly permalinks for Modules]]></string>
+	<string name="_adm_stg_cpt_option_permalinks_pages"><![CDATA[Enable friendly permalinks for Pages]]></string>
+	<string name="_adm_stg_cpt_option_site_email"><![CDATA[Email to receive critical site notifications]]></string>
+	<string name="_adm_stg_cpt_option_site_email_notify"><![CDATA[Email to send site messages from]]></string>
+	<string name="_adm_stg_cpt_option_site_title"><![CDATA[Site title]]></string>
+	<string name="_adm_stg_cpt_option_sys_account_autoapproval"><![CDATA[Automatic account activation after creation]]></string>
+	<string name="_adm_stg_cpt_option_sys_add_nofollow"><![CDATA[Add "nofollow" attribute for external links]]></string>
+	<string name="_adm_stg_cpt_option_sys_autoupdate_force_modified_files"><![CDATA[Force site and module auto-update, even if some files were modified]]></string>
+	<string name="_adm_stg_cpt_option_sys_autoupdate_modules"><![CDATA[Extensions auto-update]]></string>
+	<string name="_adm_stg_cpt_option_sys_autoupdate_system"><![CDATA[System files auto-update]]></string>
+	<string name="_adm_stg_cpt_option_sys_cache_memcache_host"><![CDATA[Memcached server host]]></string>
+	<string name="_adm_stg_cpt_option_sys_cache_memcache_port"><![CDATA[Memcached server port]]></string>
+	<string name="_adm_stg_cpt_option_sys_db_cache_enable"><![CDATA[Enable DB cache]]></string>
+	<string name="_adm_stg_cpt_option_sys_db_cache_engine"><![CDATA[DB cache engine (other than File option may require custom server setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_format_date"><![CDATA[Date Format]]></string>
+	<string name="_adm_stg_cpt_option_sys_format_datetime"><![CDATA[Datetime Format]]></string>
+	<string name="_adm_stg_cpt_option_sys_format_time"><![CDATA[Time Format]]></string>
+	<string name="_adm_stg_cpt_option_sys_format_timeago"><![CDATA[Use 'time ago' format for dates less than this number of seconds]]></string>
+	<string name="_adm_stg_cpt_option_sys_ftp_dir"><![CDATA[Path to Dolphin on FTP server]]></string>
+	<string name="_adm_stg_cpt_option_sys_ftp_login"><![CDATA[FTP server login]]></string>
+	<string name="_adm_stg_cpt_option_sys_ftp_password"><![CDATA[FTP server password]]></string>
+	<string name="_adm_stg_cpt_option_sys_oauth_key"><![CDATA[BoonEx account key]]></string>
+	<string name="_adm_stg_cpt_option_sys_oauth_secret"><![CDATA[BoonEx account secret]]></string>
+	<string name="_adm_stg_cpt_option_sys_page_cache_enable"><![CDATA[Enable Page cache]]></string>
+	<string name="_adm_stg_cpt_option_sys_page_cache_engine"><![CDATA[Page cache engine (other than File option may require custom server setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_pb_cache_enable"><![CDATA[Enable page blocks cache]]></string>
+	<string name="_adm_stg_cpt_option_sys_pb_cache_engine"><![CDATA[Page blocks cache engine (other than File option may require custom server setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_recaptcha_key_private"><![CDATA[reCAPTCHA private key]]></string>
+	<string name="_adm_stg_cpt_option_sys_recaptcha_key_public"><![CDATA[reCAPTCHA public key]]></string>
+	<string name="_adm_stg_cpt_option_sys_security_form_token_enable"><![CDATA[Enable CSRF token in forms]]></string>
+	<string name="_adm_stg_cpt_option_sys_security_form_token_lifetime"><![CDATA[CSRF token lifetime in seconds(0 - do not track time)]]></string>
+	<string name="_adm_stg_cpt_option_sys_security_impact_threshold_block"><![CDATA[Total security impact threshold to send report and block aggressor]]></string>
+	<string name="_adm_stg_cpt_option_sys_security_impact_threshold_log"><![CDATA[Total security impact threshold to send report]]></string>
+	<string name="_adm_stg_cpt_option_sys_storage_default"><![CDATA[Default storage engine (other than Local may require custom/additional setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_storage_s3_access_key"><![CDATA[AWS access key]]></string>
+	<string name="_adm_stg_cpt_option_sys_storage_s3_bucket"><![CDATA[AWS bucket]]></string>
+	<string name="_adm_stg_cpt_option_sys_storage_s3_domain"><![CDATA[AWS custom domain (require custom DNS setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_storage_s3_secret_key"><![CDATA[AWS secret key]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_compress_enable"><![CDATA[Enable compression for JS/CSS files(cache should be enabled)]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_css_enable"><![CDATA[Enable cache for CSS files]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_enable"><![CDATA[Enable cache for HTML files]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_engine"><![CDATA[Template cache engine (other than FileHtml option may require custom server setup)]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_js_enable"><![CDATA[Enable cache for JS files]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_page_width_max"><![CDATA[Max page width(in pixels)]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_page_width_min"><![CDATA[Min page width(in pixels)]]></string>
+	<string name="_adm_stg_cpt_option_template"><![CDATA[Default Template]]></string>
+	<string name="_adm_stg_err_option_template"><![CDATA[Template cannot be empty and must have a valid name.]]></string>
+	<string name="_adm_stg_cpt_option_use_like_operator"><![CDATA[Use operator LIKE for search (recommended for small content)]]></string>
+	<string name="_adm_stg_cpt_type_system"><![CDATA[System]]></string>
+	<string name="_adm_stg_scs_save"><![CDATA[Settings were successfully saved]]></string>
+	<string name="_adm_stg_err_save_error_message"><![CDATA[Error in '{0}': {1}]]></string>
+	<string name="_adm_str_cpt_files_file"><![CDATA[File]]></string>
+	<string name="_adm_str_cpt_files_version"><![CDATA[Version]]></string>
+	<string name="_adm_str_err_cannot_connect_to_ftp"><![CDATA[Cannot connect to FTP server. Please check FTP access details in Settings -> General.]]></string>
+	<string name="_adm_str_err_cannot_unzip_package"><![CDATA[Cannot unarchive ZIP package.]]></string>
+	<string name="_adm_str_err_cannot_write"><![CDATA[Cannot save downloaded file.]]></string>
+	<string name="_adm_str_err_destination_not_valid"><![CDATA[Destination FTP folder doesn't look like a valid Dolphin root folder.]]></string>
+	<string name="_adm_str_err_download_failed"><![CDATA[Download failed. Please report.]]></string>
+	<string name="_adm_str_err_files_copy_failed"><![CDATA[File transfer failed, please check write permissions.]]></string>
+	<string name="_adm_str_err_no_ftp_info"><![CDATA[FTP access info was not specified. You may enter it via Settings -> General.]]></string>
+	<string name="_adm_str_err_no_product_info"><![CDATA[Cannot load product info. Try again later.]]></string>
+	<string name="_adm_str_err_wrong_package_format"><![CDATA[Wrong package format.]]></string>
+	<string name="_adm_str_err_zip_not_available"><![CDATA[ZIP library is not available.]]></string>
+	<string name="_adm_str_msg_download_scheduled"><![CDATA[Download was scheduled. In a few minutes downloaded package will be available to install via Extensions -> Downloaded.]]></string>
+	<string name="_adm_str_msg_download_and_install_scheduled"><![CDATA[Download and subsequent installation were scheduled. It may take a few minutes.]]></string>
+	<string name="_adm_str_msg_download_successfully"><![CDATA[Download was successfully finished. You may install it via Extensions -> Downloaded.]]></string>
+	<string name="_adm_str_msg_download_and_install_successfully"><![CDATA[Download and subsequent installation were successfully finished.]]></string>
+	<string name="_adm_str_txt_discount_csign"><![CDATA[({0}{1} for Premium)]]></string>
+	<string name="_adm_str_txt_items_by"><![CDATA[item(s) by]]></string>
+	<string name="_adm_str_txt_price_csign"><![CDATA[{0}{1}]]></string>
+	<string name="_adm_str_txt_price_free"><![CDATA[Free]]></string>
+	<string name="_adm_str_txt_pv_category"><![CDATA[Category]]></string>
+	<string name="_adm_str_txt_pv_created"><![CDATA[Created]]></string>
+	<string name="_adm_str_txt_pv_description"><![CDATA[Description]]></string>
+	<string name="_adm_str_txt_pv_discount"><![CDATA[Discount]]></string>
+	<string name="_adm_str_txt_pv_discount_off_csign"><![CDATA[{0}% ({1}{2}) off for Premium]]></string>
+	<string name="_adm_str_txt_pv_price"><![CDATA[Price]]></string>
+	<string name="_adm_str_txt_pv_stats"><![CDATA[Stats]]></string>
+	<string name="_adm_str_txt_pv_stats_likes"><![CDATA[{0} likes]]></string>
+	<string name="_adm_str_txt_pv_stats_reviews"><![CDATA[{0} reviews]]></string>
+	<string name="_adm_str_txt_pv_stats_views"><![CDATA[{0} views]]></string>
+	<string name="_adm_str_txt_pv_tags"><![CDATA[Tags]]></string>
+	<string name="_adm_str_txt_pv_title"><![CDATA[Title]]></string>
+	<string name="_adm_str_txt_pv_updated"><![CDATA[Updated]]></string>
+	<string name="_adm_str_txt_pv_vendor"><![CDATA[Vendor]]></string>
+	<string name="_adm_str_txt_pv_version"><![CDATA[Version]]></string>
+	<string name="_adm_str_txt_pv_version_mask"><![CDATA[{0} ({1} is available)]]></string>
+	<string name="_adm_str_txt_update_from_to"><![CDATA[{0} - {1}]]></string>
+	<string name="_adm_tmi_cpt_edit"><![CDATA[Manage Launcher]]></string>
+	<string name="_adm_tmi_cpt_favorite"><![CDATA[Show Favorite Only]]></string>
+	<string name="_adm_tmi_cpt_logout"><![CDATA[Sign out]]></string>
+	<string name="_adm_tmi_cpt_site"><![CDATA[Go To Site]]></string>
+	<string name="_adm_txt_back_to_launcher"><![CDATA[Back to Launcher]]></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>
+	<string name="_adm_txt_form_view_iu_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_txt_form_view_iu_preview"><![CDATA[Current Image]]></string>
+	<string name="_adm_txt_form_view_iu_preview_empty"><![CDATA[No image uploaded.]]></string>
+	<string name="_adm_txt_form_view_missing"><![CDATA[missing]]></string>
+	<string name="_adm_txt_login_password"><![CDATA[password]]></string>
+	<string name="_adm_txt_login_username"><![CDATA[username]]></string>
+	<string name="_adm_txt_module_custom"><![CDATA[Custom]]></string>
+	<string name="_adm_txt_module_skeletons"><![CDATA[Skeletons]]></string>
+	<string name="_adm_txt_module_system"><![CDATA[System]]></string>
+	<string name="_adm_txt_modules_check_dependencies"><![CDATA[Check module dependencies:]]></string>
+	<string name="_adm_txt_modules_check_module_exists"><![CDATA[Check module for existence:]]></string>
+	<string name="_adm_txt_modules_check_module_matches"><![CDATA[Check module to match:]]></string>
+	<string name="_adm_txt_modules_check_module_hash"><![CDATA[Check module hash:]]></string>
+	<string name="_adm_txt_modules_check_module_version"><![CDATA[Check module version:]]></string>
+	<string name="_adm_txt_modules_check_script_version"><![CDATA[Check the Dolphin version for compatibility:]]></string>
+	<string name="_adm_txt_modules_clear_db_cache"><![CDATA[Clear database cache:]]></string>
+	<string name="_adm_txt_modules_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_txt_modules_disable"><![CDATA[Disable]]></string>
+	<string name="_adm_txt_modules_enable"><![CDATA[Enable]]></string>
+	<string name="_adm_txt_modules_executable"><![CDATA[Executable]]></string>
+	<string name="_adm_txt_modules_execute_sql"><![CDATA[Changing database:]]></string>
+	<string name="_adm_txt_modules_ftp_access"><![CDATA[FTP access]]></string>
+	<string name="_adm_txt_modules_install"><![CDATA[Install]]></string>
+	<string name="_adm_txt_modules_install_language"><![CDATA[Install language:]]></string>
+	<string name="_adm_txt_modules_login"><![CDATA[Login]]></string>
+	<string name="_adm_txt_modules_market"><![CDATA[BoonEx Market]]></string>
+	<string name="_adm_txt_modules_move_sources"><![CDATA[Move source files:]]></string>
+	<string name="_adm_txt_modules_operation_update"><![CDATA[Installation of update <b>{0}</b> from {1} up to {2}]]></string>
+	<string name="_adm_txt_modules_package_module"><![CDATA[Module]]></string>
+	<string name="_adm_txt_modules_package_to_upload"><![CDATA[Package to upload]]></string>
+	<string name="_adm_txt_modules_params_used"><![CDATA[A module with similar unique parameters is already installed.]]></string>
+	<string name="_adm_txt_modules_password"><![CDATA[Password]]></string>
+	<string name="_adm_txt_modules_path_to_dolphin"><![CDATA[Path to Dolphin's folder]]></string>
+	<string name="_adm_txt_modules_process_action_success"><![CDATA[Done]]></string>
+	<string name="_adm_txt_modules_process_deleted_profiles"><![CDATA[Process deleted profiles:]]></string>
+	<string name="_adm_txt_modules_process_failed"><![CDATA[Failed]]></string>
+	<string name="_adm_txt_modules_process_success"><![CDATA[Done]]></string>
+	<string name="_adm_txt_modules_recompile_alerts"><![CDATA[Recompiling alerts:]]></string>
+	<string name="_adm_txt_modules_recompile_browse"><![CDATA[Recompiling browse:]]></string>
+	<string name="_adm_txt_modules_recompile_comments"><![CDATA[Recompiling comments:]]></string>
+	<string name="_adm_txt_modules_recompile_global_paramaters"><![CDATA[Recompiling global parameters:]]></string>
+	<string name="_adm_txt_modules_recompile_injections"><![CDATA[Recompiling injections:]]></string>
+	<string name="_adm_txt_modules_recompile_menus"><![CDATA[Recompiling menus:]]></string>
+	<string name="_adm_txt_modules_recompile_member_actions"><![CDATA[Recompiling member actions:]]></string>
+	<string name="_adm_txt_modules_recompile_member_stats"><![CDATA[Recompiling member statistics:]]></string>
+	<string name="_adm_txt_modules_recompile_permalinks"><![CDATA[Recompiling permalinks:]]></string>
+	<string name="_adm_txt_modules_recompile_search"><![CDATA[Recompiling search:]]></string>
+	<string name="_adm_txt_modules_recompile_site_stats"><![CDATA[Recompiling site statistics:]]></string>
+	<string name="_adm_txt_modules_recompile_votes"><![CDATA[Recompiling votes:]]></string>
+	<string name="_adm_txt_modules_show_conclusion"><![CDATA[Conclusion from vendor:]]></string>
+	<string name="_adm_txt_modules_show_introduction"><![CDATA[Introduction from vendor:]]></string>
+	<string name="_adm_txt_modules_update_files"><![CDATA[Update files:]]></string>
+	<string name="_adm_txt_modules_update_relations"><![CDATA[Update relations:]]></string>
+	<string name="_adm_txt_modules_update_languages"><![CDATA[Update languages:]]></string>
+	<string name="_adm_txt_modules_update_latest"><![CDATA[You have the most current version.]]></string>
+	<string name="_adm_txt_modules_update_text"><![CDATA[New version {0} is available.]]></string>
+	<string name="_adm_txt_modules_updates"><![CDATA[Available Updates]]></string>
+	<string name="_adm_txt_modules_upload"><![CDATA[Add New Module]]></string>
+	<string name="_adm_txt_modules_writable"><![CDATA[Writable]]></string>
+	<string name="_adm_txt_pca_active"><![CDATA[Active]]></string>
+	<string name="_adm_txt_pca_favorite"><![CDATA[Favorite]]></string>
+	<string name="_adm_txt_remember_me"><![CDATA[Remember me]]></string>
+	<string name="_adm_txt_select_module"><![CDATA[Select Module...]]></string>
+	<string name="_adm_txt_show_help"><![CDATA[Help]]></string>
+	<string name="_adm_txt_show_help_content_empty"><![CDATA[Help is not available]]></string>
+	<string name="_adm_txt_uninstall"><![CDATA[Uninstall]]></string>
+	<string name="_adm_wgt_cpt_builder_forms"><![CDATA[Forms]]></string>
+	<string name="_adm_wgt_cpt_builder_menus"><![CDATA[Navigation]]></string>
+	<string name="_adm_wgt_cpt_builder_pages"><![CDATA[Pages]]></string>
+	<string name="_adm_wgt_cpt_builder_permissions"><![CDATA[Permissions]]></string>
+	<string name="_adm_wgt_cpt_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_adm_wgt_cpt_designer"><![CDATA[Designer]]></string>
+	<string name="_adm_wgt_cpt_polyglot"><![CDATA[Polyglot]]></string>
+	<string name="_adm_wgt_cpt_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_wgt_cpt_store"><![CDATA[Extensions]]></string>
+	<string name="_are you sure?"><![CDATA[Are you sure?]]></string>
+	<string name="_bottom_text"><![CDATA[2002-{0}. Product of <a class="bottom_text" href="http://www.boonex.com/">BoonEx Group</a>.]]></string>
+	<string name="_cmt_block_comments_title"><![CDATA[Comments ({0})]]></string>
+	<string name="_cmt_browse_all"><![CDATA[All]]></string>
+	<string name="_cmt_browse_friends"><![CDATA[Friends]]></string>
+	<string name="_cmt_browse_head"><![CDATA[Oldest]]></string>
+	<string name="_cmt_browse_popular"><![CDATA[Popular]]></string>
+	<string name="_cmt_browse_subscriptions"><![CDATA[Subscriptions]]></string>
+	<string name="_cmt_browse_tail"><![CDATA[Newest]]></string>
+	<string name="_cmt_display_flat"><![CDATA[Flat]]></string>
+	<string name="_cmt_display_threaded"><![CDATA[Threaded]]></string>
+	<string name="_cmt_err_cannot_perform_action"><![CDATA[Cannot perform action. Please report.]]></string>
+	<string name="_cmt_page_view_header"><![CDATA[Comment to {0}]]></string>
+	<string name="_cmt_page_view_title"><![CDATA[Comment to <a href="{0}">{1}</a>]]></string>
+	<string name="_cmt_view_attached_image"><![CDATA[View image]]></string>
+	<string name="_copyright"><![CDATA[&copy; {0} Company]]></string>
+	<string name="_delete"><![CDATA[delete]]></string>
+	<string name="_error occured"><![CDATA[Error occurred]]></string>
+	<string name="_from"><![CDATA[from]]></string>
+	<string name="_hidden_comment"><![CDATA[Comment by <b>{0}</b> is hidden.]]></string>
+	<string name="_in_reply_to"><![CDATA[to]]></string>
+	<string name="_item"><![CDATA[item]]></string>
+	<string name="_items"><![CDATA[items]]></string>
+	<string name="_member_banned"><![CDATA[Sorry, you've been banned]]></string>
+	<string name="_message_subject"><![CDATA[Message subject]]></string>
+	<string name="_mma_comments_edit_own"><![CDATA[comments edit own]]></string>
+	<string name="_mma_comments_post"><![CDATA[comments post]]></string>
+	<string name="_mma_comments_remove_own"><![CDATA[comments remove own]]></string>
+	<string name="_mma_comments_vote"><![CDATA[comments vote]]></string>
+	<string name="_mma_get_other_members_emails"><![CDATA[get other members emails]]></string>
+	<string name="_mma_send_greetings"><![CDATA[send greetings]]></string>
+	<string name="_mma_send_messages"><![CDATA[send messages]]></string>
+	<string name="_mma_view_profiles"><![CDATA[view profiles]]></string>
+	<string name="_mma_vote"><![CDATA[vote]]></string>
+	<string name="_month_next"><![CDATA[Next Month]]></string>
+	<string name="_month_prev"><![CDATA[Previous Month]]></string>
+	<string name="_no limit"><![CDATA[no limit]]></string>
+	<string name="_powered_by"><![CDATA[Powered by]]></string>
+	<string name="_see_more"><![CDATA[see more]]></string>
+	<string name="_show_replacement"><![CDATA[Show]]></string>
+	<string name="_sys_accept"><![CDATA[Accept]]></string>
+	<string name="_sys_access_denied_to_private_content"><![CDATA[Access denied. This is private content.]]></string>
+	<string name="_sys_actions"><![CDATA[Actions]]></string>
+	<string name="_sys_active"><![CDATA[Active]]></string>
+	<string name="_sys_acl_action_account"><![CDATA[You didn't created any profiles, so you can't '{1}'.]]></string>
+	<string name="_sys_acl_action_comments_edit_all"><![CDATA[Comments Edit All]]></string>
+	<string name="_sys_acl_action_comments_edit_own"><![CDATA[Comments Edit Own]]></string>
+	<string name="_sys_acl_action_comments_post"><![CDATA[Comments Post]]></string>
+	<string name="_sys_acl_action_comments_remove_all"><![CDATA[Comments Remove All]]></string>
+	<string name="_sys_acl_action_comments_remove_own"><![CDATA[Comments Remove Own]]></string>
+	<string name="_sys_acl_action_create_account"><![CDATA[Create Account]]></string>
+	<string name="_sys_acl_action_create_account_desc"><![CDATA[It make sense for guests only, you can temporary disable it or set limit by time for example.]]></string>
+	<string name="_sys_acl_action_delete_account"><![CDATA[Delete Account]]></string>
+	<string name="_sys_acl_action_delete_account_desc"><![CDATA[Delete account also deletes account's content.]]></string>
+	<string name="_sys_acl_action_every_period"><![CDATA[ every {4} hours]]></string>
+	<string name="_sys_acl_action_limit_reached"><![CDATA[You have reached your limit for now. Your current membership ({2}) allows you to {1} no more than {3} times]]></string>
+	<string name="_sys_acl_action_not_allowed"><![CDATA[Your current membership ({2}) doesn't allow you to '{1}'.]]></string>
+	<string name="_sys_acl_action_not_allowed_after"><![CDATA[Your current membership ({2}) stopped to allow you to '{1}' {5}.]]></string>
+	<string name="_sys_acl_action_not_allowed_before"><![CDATA[Your current membership ({2}) will allow you to '{1}' {6}.]]></string>
+	<string name="_sys_acl_action_pending"><![CDATA[You are currently not an active member. Please, ask the site <a href="mailto:{7}">administrator</a> to make you an active member so you would be able to <b>{1}</b>.]]></string>
+	<string name="_sys_acl_action_set_acl_level"><![CDATA[Set membership level]]></string>
+	<string name="_sys_acl_action_set_acl_level_desc"><![CDATA[Set membership level for profiles]]></string>
+	<string name="_sys_acl_action_suspended"><![CDATA[You can't '{1}' because your profile was suspended, if you don't know why - try to send message to <a href="mailto:{7}">administrator</a>.]]></string>
+	<string name="_sys_acl_action_unauthenticated"><![CDATA[Not logged in users can't '{1}'.]]></string>
+	<string name="_sys_acl_action_unconfirmed"><![CDATA[You didn't confirm your profile. Please check your email with profile activation link. Unconfirmed members can't <b>{1}</b>.]]></string>
+	<string name="_sys_acl_action_vote"><![CDATA[Vote]]></string>
+	<string name="_sys_add_friend"><![CDATA[Add friend]]></string>
+	<string name="_sys_adm_installed"><![CDATA[Installed]]></string>
+	<string name="_sys_admin_apply"><![CDATA[Apply]]></string>
+	<string name="_sys_admin_filter"><![CDATA[Filter:]]></string>
+	<string name="_sys_audit_cron_jobs"><![CDATA[Cron jobs]]></string>
+	<string name="_sys_audit_header_manual_audit"><![CDATA[Manual Server Audit]]></string>
+	<string name="_sys_audit_header_requirements"><![CDATA[Requirements]]></string>
+	<string name="_sys_audit_header_site_optimization"><![CDATA[Site optimization]]></string>
+	<string name="_sys_audit_header_site_setup"><![CDATA[Site setup]]></string>
+	<string name="_sys_audit_mail_sending"><![CDATA[Mail sending]]></string>
+	<string name="_sys_audit_msg_apache_module_fail"><![CDATA[you will need to install {0} for Apache]]></string>
+	<string name="_sys_audit_msg_apache_module_undef"><![CDATA[try to check manually: apachectl -M 2>&1 | grep {0}]]></string>
+	<string name="_sys_audit_msg_cron_jobs"><![CDATA[<pre class="code">{0}</pre> if you are unsure if output is correct then <a href="#manual_audit">manual server audit</a> may be required]]></string>
+	<string name="_sys_audit_msg_dolphin_optimization_fail"><![CDATA[please enable this cache in Dolphin Admin Panel -> Settings -> Advanced Settings]]></string>
+	<string name="_sys_audit_msg_dolphin_optimization_warn"><![CDATA[installing PHP accelerator will speed-up file cache]]></string>
+	<string name="_sys_audit_msg_dolphin_x_based_cache_engine"><![CDATA[ ({0} based cache engine)]]></string>
+	<string name="_sys_audit_msg_ffmpeg"><![CDATA[<pre class="code">{0}</pre>if you don't know if output is correct then <a href="#manual_audit">manual server audit</a> may be required.]]></string>
+	<string name="_sys_audit_msg_hardware_requirements"><![CDATA[Hardware requirements can not be determined automatically - <a href="#manual_audit">manual server audit</a> may be required.]]></string>
+	<string name="_sys_audit_msg_mail_send_failed"><![CDATA[mail send failed]]></string>
+	<string name="_sys_audit_msg_mail_sending"><![CDATA[<span id="bx-sys-adm-audit-test-email"><a href="javascript:void(0);" onclick="bx_sys_adm_audit_test_email()">click here</a> to send test email</span>]]></string>
+	<string name="_sys_audit_msg_mail_sent"><![CDATA[test mail was send, please check {0} mailbox]]></string>
+	<string name="_sys_audit_msg_manual_audit"><![CDATA[<p>
+Some things can not be determined automatically, manual server audit is required to check it. 
+If you don't know how to do it by yourself you can submit <a target="_blank" href="http://www.boonex.com/help/tickets">BoonEx Server Audit Request</a>.
+</p>]]></string>
+	<string name="_sys_audit_msg_must_be"><![CDATA[must be {0} {1}]]></string>
+	<string name="_sys_audit_msg_optimization_apache_module"><![CDATA[To apply this optimization you need to have <b>{0}</b> - {1}]]></string>
+	<string name="_sys_audit_msg_permissions"><![CDATA[please <a href="javascript:void(0);" onclick="switchAdmPage($('#main_menu1'));">click here</a> to find out if dolphin permissions are correct.]]></string>
+	<string name="_sys_audit_msg_php_accelerator_missing"><![CDATA[Dolphin can be much faster if you install some PHP accelerator]]></string>
+	<string name="_sys_audit_msg_php_setup_inefficient"><![CDATA[your PHP setup maybe very inefficient, <a href="javascript:void(0)" onclick="bx_sys_adm_audit_phpinfo()">please check it for sure</a> and try to switch to mod_php, apache dso module or FastCGI]]></string>
+	<string name="_sys_audit_msg_serverside_compression"><![CDATA[
+can be checked <a href="#manual_audit">manually</a> or in "Page Speed" tool build-in into browser.<br />
+If it is not enabled then please consider implement this optimization, since it improve perceived site speed and save the bandwidth, refer to <a href="http://www.boonex.com/trac/dolphin/wiki/HostingServerSetupRecommendations#Serversidecontentcompression">this tutorial</a> on how to do this.<br />{0}]]></string>
+	<string name="_sys_audit_msg_should_be"><![CDATA[should be {0} {1}]]></string>
+	<string name="_sys_audit_msg_userside_caching"><![CDATA[
+<a href="{0}">click here to check it in Google Page Speed</a><br />
+If it is not enabled then please consider implement this optimization, since it improve perceived site speed and save the bandwidth, refer to <a target="_blank" href="http://www.boonex.com/trac/dolphin/wiki/HostingServerSetupRecommendations#Usersidecachingforstaticcontent">this tutorial</a> on how to do this.<br />{1}]]></string>
+	<string name="_sys_audit_msg_value_checking_failed"><![CDATA[value checking failed]]></string>
+	<string name="_sys_audit_msg_version_is_incompatible"><![CDATA[your version is incompatible with Dolphin, must be at least {0}]]></string>
+	<string name="_sys_audit_msg_version_is_outdated"><![CDATA[your version is probably outdated, upgrade to the latest {0} maybe required]]></string>
+	<string name="_sys_audit_permissions"><![CDATA[Files and folders permissions]]></string>
+	<string name="_sys_audit_php_accelerator"><![CDATA[PHP accelerator]]></string>
+	<string name="_sys_audit_php_setup"><![CDATA[PHP setup]]></string>
+	<string name="_sys_audit_section_hardware"><![CDATA[Hardware]]></string>
+	<string name="_sys_audit_section_os"><![CDATA[OS]]></string>
+	<string name="_sys_audit_section_webserver"><![CDATA[Web-server]]></string>
+	<string name="_sys_audit_serverside_compression"><![CDATA[Server-side content compression]]></string>
+	<string name="_sys_audit_title_fail"><![CDATA[FAIL]]></string>
+	<string name="_sys_audit_title_ok"><![CDATA[OK]]></string>
+	<string name="_sys_audit_title_undef"><![CDATA[UNDEFINED]]></string>
+	<string name="_sys_audit_title_warn"><![CDATA[WARNING]]></string>
+	<string name="_sys_audit_userside_caching"><![CDATA[User-side caching for static content]]></string>
+	<string name="_sys_audit_version"><![CDATA[version]]></string>
+	<string name="_sys_audit_version_dolphin"><![CDATA[Dolphin version]]></string>
+	<string name="_sys_block_type_html"><![CDATA[html]]></string>
+	<string name="_sys_block_type_image"><![CDATA[image]]></string>
+	<string name="_sys_block_type_lang"><![CDATA[lang]]></string>
+	<string name="_sys_block_type_menu"><![CDATA[menu]]></string>
+	<string name="_sys_block_type_raw"><![CDATA[raw]]></string>
+	<string name="_sys_block_type_rss"><![CDATA[rss]]></string>
+	<string name="_sys_block_type_service"><![CDATA[service]]></string>
+	<string name="_sys_block_types_custom"><![CDATA[Custom]]></string>
+	<string name="_sys_block_types_skeletons"><![CDATA[Skeletons]]></string>
+	<string name="_sys_block_types_system"><![CDATA[System]]></string>
+	<string name="_sys_close"><![CDATA[Close]]></string>
+	<string name="_sys_conn_err_connection_already_exists"><![CDATA[Connection already exists]]></string>
+	<string name="_sys_conn_err_connection_does_not_exists"><![CDATA[Connection doesn't exist]]></string>
+	<string name="_sys_conn_err_connection_is_awaiting_confirmation"><![CDATA[Connection request is awaiting confirmation]]></string>
+	<string name="_sys_conn_err_input_data_is_not_defined"><![CDATA[Input data isn't defined]]></string>
+	<string name="_sys_conn_msg_success"><![CDATA[Operation has beed successfully completed]]></string>
+	<string name="_sys_currency"><![CDATA[{0}{1}]]></string>
+	<string name="_sys_designbox_0"><![CDATA[Content only]]></string>
+	<string name="_sys_designbox_1"><![CDATA[Content + title + background]]></string>
+	<string name="_sys_designbox_10"><![CDATA[Content only + padding]]></string>
+	<string name="_sys_designbox_11"><![CDATA[Content + title + background + padding]]></string>
+	<string name="_sys_designbox_13"><![CDATA[Content + background + padding]]></string>
+	<string name="_sys_designbox_2"><![CDATA[Empty box]]></string>
+	<string name="_sys_designbox_3"><![CDATA[Content + background]]></string>
+	<string name="_sys_et_txt_about_us"><![CDATA[About us]]></string>
+	<string name="_sys_et_txt_body_admin_email"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello,</p>
+<p>Administration of the <a href="{site_url}">{site_name}</a> is glad to inform you that</p>
+<p>=========================</p>
+<p style="color:#3B5C8E">{MessageText}</p>
+<p>=========================</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_comment_replied"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello,</p>
+<p>Your comment was replied. It reads:</p>
+<p>{reply_text}</p>
+<p>Please refer to comment page for more details: <a href="{comment_url}">My Comment</a></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_confirmation"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello!</p>
+<p>Please, click email confirmation link:</p>
+<p><a href="{conf_link}">{conf_link}</a></p>
+<p>Thank you.</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_delayed_module_uninstall"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Module: <b>{Module}</b></p>
+<p>Uninstaltion result: {Result}</p>
+<p>{Message}</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_forgot"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello!</p>
+<p>Please, follow the link below to reset your password:</p>
+<p><a href="{forgot_password_url}">{forgot_password_url}</a></p>
+<p>Thank you.</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_mem_changed"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello,</p>
+<p>Your membership level was changed to: <b>{membership_level}</b></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_mem_expiration"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello,</p>
+<p>We are notifying you that your {site_name} {membership_name} will expire in {expire_days} days (-1 means already expired).</p>
+<p>To renew your membership login to your {site_name} account at <a href="{site_url}member.php">{site_url}member.php</a> and go to <a href="{site_url}modules/?r=membership/index/">My Membership</a></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_password_reset"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello!</p>
+<p>Your new password is:</p>
+<p><b>{password}</b></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_profile_change_status_active"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello {profile_name},</p>
+<p>Your profile was reviewed and activated!</p>
+<p>Simply follow the link below to enjoy our services:<br />
+<a href="{site_url}member.php">{site_url}member.php</a></p>
+<p>Your e-mail used for registration: <span style="color:#FF6633">{account_email}</span></p>
+<p><b>Thank you for using our services!</b></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_profile_change_status_pending"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello {profile_name},</p>
+<p>Your profile is waiting for review, as soon as it is reviewed you will receive notification by email.</p>
+<p><b>Thank you for using our services.</b></p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_profile_change_status_suspended"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Hello {profile_name},</p>
+<p>Your profile was suspended.</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_pruning"><![CDATA[<bx_include_auto:_email_header.html />
+<p>{pruning_output}</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_upgrade_failed"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Upgrade failed due to the following error:</p>
+<p>{error_msg}</p>
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_upgrade_success"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Site was successfully upgraded to {new_version}.</p>
+{conclusion}
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_upgrade_modules_success"><![CDATA[<bx_include_auto:_email_header.html />
+<p>The following modules were successfully upgraded.</p>
+{conclusion}
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_bg_operation_failed"><![CDATA[<bx_include_auto:_email_header.html />
+<p>Background operation failed with the following message.</p>
+{conclusion}
+<bx_include_auto:_email_footer.html />]]></string>
+	<string name="_sys_et_txt_body_upgraded_module"><![CDATA[<b>{0}</b> module: up to {1} version.<br />]]></string>
+	<string name="_sys_et_txt_name_system_admin_email"><![CDATA[Message sending from the Admin Panel]]></string>
+	<string name="_sys_et_txt_name_system_comment_replied"><![CDATA[The letter is sent to members whose comment was replied]]></string>
+	<string name="_sys_et_txt_name_system_confirmation"><![CDATA[Profile e-mail confirmation message]]></string>
+	<string name="_sys_et_txt_name_system_delayed_module_uninstall"><![CDATA[Delayed module uninstall notification]]></string>
+	<string name="_sys_et_txt_name_system_forgot"><![CDATA[Reset password message]]></string>
+	<string name="_sys_et_txt_name_system_mem_changed"><![CDATA[The letter is sent to members whose membership level was changed]]></string>
+	<string name="_sys_et_txt_name_system_mem_expiration"><![CDATA[Membership expiration letter sent to members whose membership level expires]]></string>
+	<string name="_sys_et_txt_name_system_password_reset"><![CDATA[New password message]]></string>
+	<string name="_sys_et_txt_name_profile_change_status_active"><![CDATA[Profile status changed to active]]></string>
+	<string name="_sys_et_txt_name_profile_change_status_pending"><![CDATA[Profile status changed to pending]]></string>
+	<string name="_sys_et_txt_name_profile_change_status_suspended"><![CDATA[Profile status changed to suspended]]></string>
+	<string name="_sys_et_txt_name_system_pruning"><![CDATA[Pruning result]]></string>
+	<string name="_sys_et_txt_name_upgrade_failed"><![CDATA[Upgrade failed]]></string>
+	<string name="_sys_et_txt_name_upgrade_success"><![CDATA[Site upgrade success]]></string>
+	<string name="_sys_et_txt_name_upgrade_modules_success"><![CDATA[Modules upgrade success]]></string>
+	<string name="_sys_et_txt_name_bg_operation_failed"><![CDATA[Background operation failed]]></string>
+	<string name="_sys_et_txt_subject_admin_email"><![CDATA[Message from <SiteName> Admin: <MessageSubject>]]></string>
+	<string name="_sys_et_txt_subject_comment_replied"><![CDATA[Your comment was replied]]></string>
+	<string name="_sys_et_txt_subject_confirmation"><![CDATA[Confirm Your Email (ACTION REQUIRED)]]></string>
+	<string name="_sys_et_txt_subject_delayed_module_uninstall"><![CDATA[Delayed {Module} module uninstall: {Result}]]></string>
+	<string name="_sys_et_txt_subject_forgot"><![CDATA[Reset Your Password]]></string>
+	<string name="_sys_et_txt_subject_mem_changed"><![CDATA[Your membership level was changed]]></string>
+	<string name="_sys_et_txt_subject_mem_expiration"><![CDATA[Your membership is about to expire]]></string>
+	<string name="_sys_et_txt_subject_password_reset"><![CDATA[New Password]]></string>
+	<string name="_sys_et_txt_subject_profile_change_status_active"><![CDATA[Profile Activated]]></string>
+	<string name="_sys_et_txt_subject_profile_change_status_pending"><![CDATA[Profile Pending Review]]></string>
+	<string name="_sys_et_txt_subject_profile_change_status_suspended"><![CDATA[Profile was Suspended]]></string>
+	<string name="_sys_et_txt_subject_pruning"><![CDATA[{site_name} pruning result]]></string>
+	<string name="_sys_et_txt_subject_upgrade_failed"><![CDATA[{site_name} upgrade failed]]></string>
+	<string name="_sys_et_txt_subject_upgrade_success"><![CDATA[{site_name} upgrade success]]></string>
+	<string name="_sys_et_txt_subject_upgrade_modules_success"><![CDATA[Modules upgrade success]]></string>
+	<string name="_sys_et_txt_subject_bg_operation_failed"><![CDATA[Background operation failed]]></string>
+	<string name="_sys_et_txt_unsubscribe"><![CDATA[Unsubscribe]]></string>
+	<string name="_sys_form_account"><![CDATA[Account]]></string>
+	<string name="_sys_form_account_input_captcha"><![CDATA[Security Image]]></string>
+	<string name="_sys_form_account_input_captcha_error"><![CDATA[Security image input failed. Please, try to enter letters shown on the image again.]]></string>
+	<string name="_sys_form_account_input_delete_confirm"><![CDATA[I'm sure that I want to delete my account and my content.]]></string>
+	<string name="_sys_form_account_input_delete_confirm_error"><![CDATA[Please check this checkbox if you really want to delete your account and your content.]]></string>
+	<string name="_sys_form_account_input_delete_confirm_info"><![CDATA[This action can not be undone.]]></string>
+	<string name="_sys_form_account_input_email"><![CDATA[Email]]></string>
+	<string name="_sys_form_account_input_email_error"><![CDATA[Email is not valid]]></string>
+	<string name="_sys_form_account_input_email_uniq_error"><![CDATA[This email address is already registered. Please, use <a href="{0}">Forgot password</a> to restore access to your account.]]></string>
+	<string name="_sys_form_account_input_email_uniq_error_loggedin"><![CDATA[This email is already used by someone.]]></string>
+	<string name="_sys_form_account_input_name"><![CDATA[Account Name]]></string>
+	<string name="_sys_form_account_input_name_error"><![CDATA[This is a required field.]]></string>
+	<string name="_sys_form_account_input_password"><![CDATA[New Password]]></string>
+	<string name="_sys_form_account_input_password_confirm"><![CDATA[Confirm New Password]]></string>
+	<string name="_sys_form_account_input_password_confirm_error"><![CDATA[Password confirmation failed]]></string>
+	<string name="_sys_form_account_input_password_current"><![CDATA[Current Password]]></string>
+	<string name="_sys_form_account_input_password_current_error"><![CDATA[Current password isn't correct, please enter password you are using to login to this site.]]></string>
+	<string name="_sys_form_account_input_password_error"><![CDATA[Password must at least 6 characters long.]]></string>
+	<string name="_sys_form_account_input_receive_news"><![CDATA[Receive Newsletters]]></string>
+	<string name="_sys_form_account_input_receive_updates"><![CDATA[Receive Site Updates]]></string>
+	<string name="_sys_form_account_input_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_checkbox_value_off"><![CDATA[No]]></string>
+	<string name="_sys_form_checkbox_value_on"><![CDATA[Yes]]></string>
+	<string name="_sys_form_comment"><![CDATA[Comment]]></string>
+	<string name="_sys_form_comment_input_caption_system_action"><![CDATA[Action]]></string>
+	<string name="_sys_form_comment_input_caption_system_cmt_id"><![CDATA[Comment ID]]></string>
+	<string name="_sys_form_comment_input_caption_system_cmt_image"><![CDATA[Image]]></string>
+	<string name="_sys_form_comment_input_caption_system_cmt_parent_id"><![CDATA[Parent ID]]></string>
+	<string name="_sys_form_comment_input_caption_system_cmt_submit"><![CDATA[Post]]></string>
+	<string name="_sys_form_comment_input_caption_system_cmt_text"><![CDATA[Text]]></string>
+	<string name="_sys_form_comment_input_caption_system_id"><![CDATA[Object ID]]></string>
+	<string name="_sys_form_comment_input_caption_system_sys"><![CDATA[Object Type]]></string>
+	<string name="_sys_form_comment_input_submit"><![CDATA[Post]]></string>
+	<string name="_sys_form_confirm_email"><![CDATA[Email Confirmation]]></string>
+	<string name="_sys_form_confirm_email_input_caption_system_code"><![CDATA[Verification Code]]></string>
+	<string name="_sys_form_confirm_email_input_caption_system_do_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_confirm_email_input_code"><![CDATA[Verification Code]]></string>
+	<string name="_sys_form_confirm_email_input_code_error"><![CDATA[Verification code is invalid or expired, please login to your account and resend verification email.]]></string>
+	<string name="_sys_form_confirm_email_input_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_display_account_create"><![CDATA[Create Account]]></string>
+	<string name="_sys_form_display_account_settings_delete"><![CDATA[Delete Account]]></string>
+	<string name="_sys_form_display_account_settings_email"><![CDATA[Email Settings]]></string>
+	<string name="_sys_form_display_account_settings_info"><![CDATA[Edit Account]]></string>
+	<string name="_sys_form_display_account_settings_password"><![CDATA[Change Password]]></string>
+	<string name="_sys_form_display_comment_edit"><![CDATA[Comment From Edit]]></string>
+	<string name="_sys_form_display_comment_post"><![CDATA[Comment From Post]]></string>
+	<string name="_sys_form_display_confirm_email"><![CDATA[Email Confirmation]]></string>
+	<string name="_sys_form_display_forgot_password"><![CDATA[Forgot Password]]></string>
+	<string name="_sys_form_display_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_form_display_unsubscribe_news"><![CDATA[Unsubscribe From Newsletters]]></string>
+	<string name="_sys_form_display_unsubscribe_updates"><![CDATA[Unsubscribe From Updates]]></string>
+	<string name="_sys_form_forgot_password"><![CDATA[Forgot Password]]></string>
+	<string name="_sys_form_forgot_password_email_not_recognized"><![CDATA[This email doesn't belong to any account. Please make sure that it is typed correctly.]]></string>
+	<string name="_sys_form_forgot_password_input_caption_system_do_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_forgot_password_input_caption_system_email"><![CDATA[Email]]></string>
+	<string name="_sys_form_forgot_password_input_email"><![CDATA[Email]]></string>
+	<string name="_sys_form_forgot_password_input_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_input_sys_location"><![CDATA[Location]]></string>
+	<string name="_sys_form_input_location"><![CDATA[Location]]></string>
+	<string name="_sys_form_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_form_login_input_caption_system_captcha"><![CDATA[Captcha]]></string>
+	<string name="_sys_form_login_input_caption_system_delete_confirm"><![CDATA[Confirm Delete]]></string>
+	<string name="_sys_form_login_input_caption_system_do_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_login_input_caption_system_email"><![CDATA[Email]]></string>
+	<string name="_sys_form_login_input_caption_system_id"><![CDATA[ID]]></string>
+	<string name="_sys_form_login_input_caption_system_name"><![CDATA[Account Name]]></string>
+	<string name="_sys_form_login_input_caption_system_password"><![CDATA[Password]]></string>
+	<string name="_sys_form_login_input_caption_system_password_confirm"><![CDATA[Confirm Password]]></string>
+	<string name="_sys_form_login_input_caption_system_password_current"><![CDATA[Current Password]]></string>
+	<string name="_sys_form_login_input_caption_system_receive_news"><![CDATA[Receive News]]></string>
+	<string name="_sys_form_login_input_caption_system_receive_updates"><![CDATA[Receive Updates]]></string>
+	<string name="_sys_form_login_input_caption_system_relocate"><![CDATA[Relocate]]></string>
+	<string name="_sys_form_login_input_caption_system_remember_me"><![CDATA[Remember me]]></string>
+	<string name="_sys_form_login_input_caption_system_role"><![CDATA[Role]]></string>
+	<string name="_sys_form_login_input_caption_system_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_login_input_caption_system_submit_block"><![CDATA[Submit Block]]></string>
+	<string name="_sys_form_login_input_caption_system_submit_text"><![CDATA[Submit Text]]></string>
+	<string name="_sys_form_login_input_email"><![CDATA[Email]]></string>
+	<string name="_sys_form_login_input_password"><![CDATA[Password]]></string>
+	<string name="_sys_form_login_input_remember_me"><![CDATA[Remember me]]></string>
+	<string name="_sys_form_login_input_submit"><![CDATA[Sign in]]></string>
+	<string name="_sys_form_unsubscribe"><![CDATA[Unsubscribe]]></string>
+	<string name="_sys_form_unsubscribe_input_caption_system_code"><![CDATA[Security Code]]></string>
+	<string name="_sys_form_unsubscribe_input_caption_system_do_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_form_unsubscribe_input_caption_system_id"><![CDATA[Account ID]]></string>
+	<string name="_sys_form_unsubscribe_input_caption_system_receive_news"><![CDATA[Receive Newsletters]]></string>
+	<string name="_sys_form_unsubscribe_input_caption_system_receive_updates"><![CDATA[Receive Site Updates]]></string>
+	<string name="_sys_form_unsubscribe_input_receive_news"><![CDATA[Receive Newsletters]]></string>
+	<string name="_sys_form_unsubscribe_input_receive_updates"><![CDATA[Receive Site Updates]]></string>
+	<string name="_sys_form_unsubscribe_input_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_format_size_b"><![CDATA[{0} bytes]]></string>
+	<string name="_sys_format_size_gb"><![CDATA[{0} GB]]></string>
+	<string name="_sys_format_size_kb"><![CDATA[{0} KB]]></string>
+	<string name="_sys_format_size_mb"><![CDATA[{0} MB]]></string>
+	<string name="_sys_format_size_tb"><![CDATA[{0} TB]]></string>
+	<string name="_sys_grid_confirmation"><![CDATA[Are you sure?]]></string>
+	<string name="_sys_grid_delete_failed"><![CDATA[Delete failed]]></string>
+	<string name="_sys_grid_search"><![CDATA[Search...]]></string>
+	<string name="_sys_inst_conf_desc"><![CDATA[{0}{1}<br />Example: {2}]]></string>
+	<string name="_sys_inst_conf_desc_admin_email"><![CDATA[Admin user e-mail address.]]></string>
+	<string name="_sys_inst_conf_desc_admin_pwd"><![CDATA[Admin user password here.]]></string>
+	<string name="_sys_inst_conf_desc_admin_username"><![CDATA[Admin user name here.]]></string>
+	<string name="_sys_inst_conf_desc_db_host"><![CDATA[Your MySQL database host name here.]]></string>
+	<string name="_sys_inst_conf_desc_db_name"><![CDATA[Your MySQL database name here.]]></string>
+	<string name="_sys_inst_conf_desc_db_port"><![CDATA[Leave blank or specify custom MySQL database host port number.]]></string>
+	<string name="_sys_inst_conf_desc_db_pwd"><![CDATA[Your MySQL database password here.]]></string>
+	<string name="_sys_inst_conf_desc_db_sock"><![CDATA[Leave blank or specify MySQL database socket path.]]></string>
+	<string name="_sys_inst_conf_desc_db_user"><![CDATA[Your MySQL database user name with read/write access.]]></string>
+	<string name="_sys_inst_conf_desc_language"><![CDATA[Language to install by default.]]></string>
+	<string name="_sys_inst_conf_desc_oauth_key_secret"><![CDATA[<a target="_blank" href="http://www.boonex.com/oauth/get_consumer">Get BoonEx key&secret</a>]]></string>
+	<string name="_sys_inst_conf_desc_path_to_binary"><![CDATA[If '{0}' binary doesn't exist, you need to install <a target="_blank" href="http://www.imagemagick.org/">ImageMagick</a>.]]></string>
+	<string name="_sys_inst_conf_desc_root_dir"><![CDATA[Path to directory where Dolphin files are stored.]]></string>
+	<string name="_sys_inst_conf_desc_site_email"><![CDATA[Email to send site messages from.]]></string>
+	<string name="_sys_inst_conf_desc_site_title"><![CDATA[The name of your site.]]></string>
+	<string name="_sys_inst_conf_desc_site_url"><![CDATA[Your site URL here (slash at the end is required).]]></string>
+	<string name="_sys_inst_conf_desc_template"><![CDATA[Template to install by default.]]></string>
+	<string name="_sys_inst_conf_error"><![CDATA[Please, input valid data here.]]></string>
+	<string name="_sys_inst_conf_field_admin_email"><![CDATA[Admin e-mail]]></string>
+	<string name="_sys_inst_conf_field_admin_pwd"><![CDATA[Admin password]]></string>
+	<string name="_sys_inst_conf_field_admin_username"><![CDATA[Admin user name]]></string>
+	<string name="_sys_inst_conf_field_db_host"><![CDATA[Database host name]]></string>
+	<string name="_sys_inst_conf_field_db_name"><![CDATA[Database name]]></string>
+	<string name="_sys_inst_conf_field_db_port"><![CDATA[Database host port number]]></string>
+	<string name="_sys_inst_conf_field_db_pwd"><![CDATA[Database password]]></string>
+	<string name="_sys_inst_conf_field_db_sock"><![CDATA[Database socket path]]></string>
+	<string name="_sys_inst_conf_field_db_user"><![CDATA[Database user]]></string>
+	<string name="_sys_inst_conf_field_language"><![CDATA[Language]]></string>
+	<string name="_sys_inst_conf_field_oauth_key"><![CDATA[BoonEx key]]></string>
+	<string name="_sys_inst_conf_field_oauth_secret"><![CDATA[BoonEx secret]]></string>
+	<string name="_sys_inst_conf_field_path_to_binary"><![CDATA[Path to '{0}' binary]]></string>
+	<string name="_sys_inst_conf_field_root_dir"><![CDATA[Site directory]]></string>
+	<string name="_sys_inst_conf_field_site_email"><![CDATA[Site e-mail]]></string>
+	<string name="_sys_inst_conf_field_site_title"><![CDATA[Site title]]></string>
+	<string name="_sys_inst_conf_field_site_url"><![CDATA[Site URL]]></string>
+	<string name="_sys_inst_conf_field_template"><![CDATA[Template]]></string>
+	<string name="_sys_inst_conf_found"><![CDATA[<span style="color:green">Found</span>]]></string>
+	<string name="_sys_inst_conf_no_example"><![CDATA[no example]]></string>
+	<string name="_sys_inst_conf_not_found"><![CDATA[<span style="color:red">Not found</span>]]></string>
+	<string name="_sys_inst_conf_section_db_config"><![CDATA[DB config]]></string>
+	<string name="_sys_inst_conf_section_link_with_market"><![CDATA[Link with BoonEx market]]></string>
+	<string name="_sys_inst_conf_section_modules"><![CDATA[Modules]]></string>
+	<string name="_sys_inst_conf_section_paths"><![CDATA[Site paths]]></string>
+	<string name="_sys_inst_conf_section_site_info"><![CDATA[Site info]]></string>
+	<string name="_sys_inst_continue"><![CDATA[Continue]]></string>
+	<string name="_sys_inst_finish"><![CDATA[Installation has been successfully completed]]></string>
+	<string name="_sys_inst_help_finish"><![CDATA[Help with cron jobs]]></string>
+	<string name="_sys_inst_help_permissions"><![CDATA[Setting permissions help]]></string>
+	<string name="_sys_inst_help_site_config"><![CDATA[Creating database help]]></string>
+	<string name="_sys_inst_hosting_fails"><![CDATA[Your hosting doesn't meet minimal requirements:]]></string>
+	<string name="_sys_inst_hosting_warnings"><![CDATA[Your hosting setup has some warnings, for the complete report go to <a href="?action=audit">server audit page</a>.]]></string>
+	<string name="_sys_inst_msg_admin_account_not_found"><![CDATA[Admin account wasn't found by email - {0}]]></string>
+	<string name="_sys_inst_msg_db_err_connect"><![CDATA[Database connect failed]]></string>
+	<string name="_sys_inst_msg_db_err_select"><![CDATA[Database select failed]]></string>
+	<string name="_sys_inst_msg_file_read_failed"><![CDATA[File read failed: {0}]]></string>
+	<string name="_sys_inst_msg_file_write_failed"><![CDATA[File write failed: {0}]]></string>
+	<string name="_sys_inst_msg_finish"><![CDATA[But some additional manual steps are required:]]></string>
+	<string name="_sys_inst_msg_finish_cron_jobs"><![CDATA[Setup the following cron jobs command:]]></string>
+	<string name="_sys_inst_msg_finish_delete_install_folder"><![CDATA[Remove <b>/install/</b> folder from Dolphin root folder.]]></string>
+	<string name="_sys_inst_msg_finish_goto_studio"><![CDATA[<a href="{0}studio/">Go to Studio</a> to add additional modules and customize the site.]]></string>
+	<string name="_sys_inst_msg_form_error"><![CDATA[Please fix form errors.]]></string>
+	<string name="_sys_inst_msg_module_error"><![CDATA[{0} - {1}]]></string>
+	<string name="_sys_inst_msg_permissions_wrong"><![CDATA[Some files or folders rights aren't correct, please set necessary permissions then click "Continue".]]></string>
+	<string name="_sys_inst_msg_remove_install"><![CDATA[Please, remove INSTALL directory from your server and reload this page to activate your site.<br />After deletion you can safely go <a href="../studio/">to the site Studio</a> to add additional modules and customize the site.]]></string>
+	<string name="_sys_inst_msg_script_isnt_installed"><![CDATA[Script isn't installed]]></string>
+	<string name="_sys_inst_refresh"><![CDATA[Refresh]]></string>
+	<string name="_sys_inst_server_audit"><![CDATA[Server audit]]></string>
+	<string name="_sys_inst_site_config"><![CDATA[Site configuration]]></string>
+	<string name="_sys_inst_start_installation"><![CDATA[Start installation]]></string>
+	<string name="_sys_inst_title"><![CDATA[Dolphin U {0} Installation]]></string>
+	<string name="_sys_layout_1_column"><![CDATA[1 column]]></string>
+	<string name="_sys_layout_2_columns"><![CDATA[2 columns]]></string>
+	<string name="_sys_layout_3_columns"><![CDATA[3 columns]]></string>
+	<string name="_sys_layout_bar_left"><![CDATA[With left bar]]></string>
+	<string name="_sys_layout_bar_right"><![CDATA[With right bar]]></string>
+	<string name="_sys_layout_bottom_area_2_columns"><![CDATA[Bottom area with 2 columns at top]]></string>
+	<string name="_sys_layout_top_area_2_columns"><![CDATA[Top area with 2 columns]]></string>
+	<string name="_sys_layout_top_area_3_columns"><![CDATA[Top area with 3 columns]]></string>
+	<string name="_sys_layout_top_area_bar_left"><![CDATA[Top area with left bar]]></string>
+	<string name="_sys_layout_top_area_bar_right"><![CDATA[Top area with right bar]]></string>
+	<string name="_sys_layout_topbottom_area_2_columns"><![CDATA[Top&bottom areas with 2 columns in the middle]]></string>
+	<string name="_sys_loading"><![CDATA[Loading...]]></string>
+	<string name="_sys_location_country"><![CDATA[<i class="sys-icon location-arrow"></i> {0}]]></string>
+	<string name="_sys_location_country_city"><![CDATA[<i class="sys-icon location-arrow"></i> {1}, {0}]]></string>
+	<string name="_sys_location_determining"><![CDATA[Determining location...]]></string>
+	<string name="_sys_location_geolocation_not_supported_by_browser"><![CDATA[Geolocation is not supported by this browser]]></string>
+	<string name="_sys_location_undefined"><![CDATA[No location]]></string>
+	<string name="_sys_menu_item_title_about"><![CDATA[About]]></string>
+	<string name="_sys_menu_item_title_switch_language"><![CDATA[Language]]></string>
+	<string name="_sys_menu_item_title_switch_language_mask"><![CDATA[{1} {0}]]></string>
+	<string name="_sys_menu_item_title_switch_template"><![CDATA[Design]]></string>
+	<string name="_sys_menu_item_title_switch_template_mask"><![CDATA[{0} ({1})]]></string>
+	<string name="_sys_menu_item_title_account_menu"><![CDATA[{member_display_name}]]></string>
+	<string name="_sys_menu_item_title_account_profile_context"><![CDATA[Profiles]]></string>
+	<string name="_sys_menu_item_title_account_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_sys_menu_item_title_account_dashboard_administration"><![CDATA[Administration]]></string>
+	<string name="_sys_menu_item_title_account_settings"><![CDATA[Settings]]></string>
+	<string name="_sys_menu_item_title_account_settings_delete"><![CDATA[Delete]]></string>
+	<string name="_sys_menu_item_title_account_settings_email"><![CDATA[Email]]></string>
+	<string name="_sys_menu_item_title_account_settings_info"><![CDATA[Account]]></string>
+	<string name="_sys_menu_item_title_account_settings_pwd"><![CDATA[Password]]></string>
+	<string name="_sys_menu_item_title_add_content"><![CDATA[Add...]]></string>
+	<string name="_sys_menu_item_title_cmts_item_delete"><![CDATA[Delete]]></string>
+	<string name="_sys_menu_item_title_cmts_item_edit"><![CDATA[Edit]]></string>
+	<string name="_sys_menu_item_title_cmts_item_reply"><![CDATA[Reply]]></string>
+	<string name="_sys_menu_item_title_cmts_item_vote"><![CDATA[Vote]]></string>
+	<string name="_sys_menu_item_title_dashboard"><![CDATA[Dash]]></string>
+	<string name="_sys_menu_item_title_home"><![CDATA[Home]]></string>
+	<string name="_sys_menu_item_title_logout"><![CDATA[Sign out]]></string>
+	<string name="_sys_menu_item_title_more"><![CDATA[More]]></string>
+	<string name="_sys_menu_item_title_profile"><![CDATA[Profile]]></string>
+	<string name="_sys_menu_item_title_set_acl_level"><![CDATA[Set membership]]></string>
+	<string name="_sys_menu_item_title_system_about"><![CDATA[About]]></string>
+	<string name="_sys_menu_item_title_system_switch_language"><![CDATA[Language]]></string>
+	<string name="_sys_menu_item_title_system_switch_template"><![CDATA[Template]]></string>
+	<string name="_sys_menu_item_title_system_account_menu"><![CDATA[Account]]></string>
+	<string name="_sys_menu_item_title_system_account_profile_context"><![CDATA[Profiles]]></string>
+	<string name="_sys_menu_item_title_system_account_dashboard_administration"><![CDATA[Administration]]></string>
+	<string name="_sys_menu_item_title_system_account_settings"><![CDATA[Settings]]></string>
+	<string name="_sys_menu_item_title_system_account_settings_delete"><![CDATA[Delete]]></string>
+	<string name="_sys_menu_item_title_system_account_settings_email"><![CDATA[Email]]></string>
+	<string name="_sys_menu_item_title_system_account_settings_info"><![CDATA[Account]]></string>
+	<string name="_sys_menu_item_title_system_account_settings_pwd"><![CDATA[Password]]></string>
+	<string name="_sys_menu_item_title_system_add_content"><![CDATA[Add Content]]></string>
+	<string name="_sys_menu_item_title_system_cmts_item_delete"><![CDATA[Delete]]></string>
+	<string name="_sys_menu_item_title_system_cmts_item_edit"><![CDATA[Edit]]></string>
+	<string name="_sys_menu_item_title_system_cmts_item_reply"><![CDATA[Reply]]></string>
+	<string name="_sys_menu_item_title_system_cmts_item_vote"><![CDATA[Plus]]></string>
+	<string name="_sys_menu_item_title_system_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_sys_menu_item_title_system_home"><![CDATA[Home]]></string>
+	<string name="_sys_menu_item_title_system_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_menu_item_title_system_logout"><![CDATA[Sign out]]></string>
+	<string name="_sys_menu_item_title_system_main_menu"><![CDATA[Main Menu]]></string>
+	<string name="_sys_menu_item_title_system_more"><![CDATA[More]]></string>
+	<string name="_sys_menu_item_title_system_profile"><![CDATA[Profile]]></string>
+	<string name="_sys_menu_item_title_system_set_acl_level"><![CDATA[Set membership]]></string>
+	<string name="_sys_menu_set_title_account"><![CDATA[Account]]></string>
+	<string name="_sys_menu_set_title_account_dashboard"><![CDATA[Account Dashboard]]></string>
+	<string name="_sys_menu_set_title_account_dashboard_administration"><![CDATA[Account Dashboard Administration]]></string>
+	<string name="_sys_menu_set_title_account_settings"><![CDATA[Account Settings]]></string>
+	<string name="_sys_menu_set_title_account_settings_more"><![CDATA[Account Settings More]]></string>
+	<string name="_sys_menu_set_title_account_notifications"><![CDATA[Notifications]]></string>
+	<string name="_sys_menu_set_title_add_content"><![CDATA[Add Content]]></string>
+	<string name="_sys_menu_set_title_add_profile"><![CDATA[Add Profile]]></string>
+	<string name="_sys_menu_set_title_cmts_item_actions"><![CDATA[Comment Actions]]></string>
+	<string name="_sys_menu_set_title_cmts_item_manage"><![CDATA[Manage Comment]]></string>
+	<string name="_sys_menu_set_title_switch_language"><![CDATA[Switch Language]]></string>
+	<string name="_sys_menu_set_title_switch_template"><![CDATA[Switch Template]]></string>
+	<string name="_sys_menu_set_title_footer"><![CDATA[Footer]]></string>
+	<string name="_sys_menu_set_title_profile_create_links"><![CDATA[Create Profile Links]]></string>
+	<string name="_sys_menu_set_title_profile_stats"><![CDATA[Profile Stats]]></string>
+	<string name="_sys_menu_set_title_site"><![CDATA[Site]]></string>
+	<string name="_sys_menu_set_title_toolbar_member"><![CDATA[Toolbar Member]]></string>
+	<string name="_sys_menu_set_title_toolbar_site"><![CDATA[Toolbar Site]]></string>
+	<string name="_sys_menu_template_title_buttons_hor"><![CDATA[Horizontal Buttons]]></string>
+	<string name="_sys_menu_template_title_floating_blocks"><![CDATA[Floating Blocks]]></string>
+	<string name="_sys_menu_template_title_floating_blocks_big"><![CDATA[Floating Blocks Big]]></string>
+	<string name="_sys_menu_template_title_footer"><![CDATA[Footer Links]]></string>
+	<string name="_sys_menu_template_title_hor"><![CDATA[Horizontal Links]]></string>
+	<string name="_sys_menu_template_title_inline"><![CDATA[Inline]]></string>
+	<string name="_sys_menu_template_title_interactive_vertical"><![CDATA[Interactive Vertical Links]]></string>
+	<string name="_sys_menu_template_title_main"><![CDATA[Site Navigation]]></string>
+	<string name="_sys_menu_template_title_main_submenu"><![CDATA[Site Navigation Submenu]]></string>
+	<string name="_sys_menu_template_title_toolbar"><![CDATA[Toolbar Buttons]]></string>
+	<string name="_sys_menu_template_title_ver"><![CDATA[Vertical Links]]></string>
+	<string name="_sys_menu_template_title_ver_lite"><![CDATA[Vertical Links (lite)]]></string>
+	<string name="_sys_menu_template_title_account_popup"><![CDATA[Account popup]]></string>
+	<string name="_sys_menu_template_title_custom"><![CDATA[Custom menu items]]></string>
+	<string name="_sys_menu_title_account"><![CDATA[Account Menu]]></string>
+	<string name="_sys_menu_title_account_dashboard"><![CDATA[Account Dashboard Menu]]></string>
+	<string name="_sys_menu_title_account_dashboard_administration"><![CDATA[Account Dashboard Administration Menu]]></string>
+	<string name="_sys_menu_title_account_settings"><![CDATA[Account Settings Menu]]></string>
+	<string name="_sys_menu_title_account_settings_more"><![CDATA[Account Settings More Menu]]></string>
+	<string name="_sys_menu_title_add_content"><![CDATA[Add Content Menu]]></string>
+	<string name="_sys_menu_title_add_profile"><![CDATA[Add Profile Menu]]></string>
+	<string name="_sys_menu_title_cmts_item_actions"><![CDATA[Comment Actions]]></string>
+	<string name="_sys_menu_title_cmts_item_manage"><![CDATA[Manage Comment]]></string>
+	<string name="_sys_menu_title_extended"><![CDATA[Extended view]]></string>
+	<string name="_sys_menu_title_gallery"><![CDATA[Gallery view]]></string>
+	<string name="_sys_menu_title_footer"><![CDATA[Footer Links]]></string>
+	<string name="_sys_menu_title_main"><![CDATA[Site Navigation]]></string>
+	<string name="_sys_menu_title_profiles_create"><![CDATA[Create Profiles]]></string>
+	<string name="_sys_menu_title_profile_stats"><![CDATA[Profile Stats]]></string>
+	<string name="_sys_menu_title_rss"><![CDATA[RSS]]></string>
+	<string name="_sys_menu_title_submenu"><![CDATA[Site Submenu]]></string>
+	<string name="_sys_menu_title_toolbar_member"><![CDATA[Member Toolbar]]></string>
+	<string name="_sys_menu_title_toolbar_site"><![CDATA[Site Toolbar]]></string>
+	<string name="_sys_menu_title_switch_language"><![CDATA[Switch Language]]></string>
+	<string name="_sys_menu_title_switch_template"><![CDATA[Switch Template]]></string>
+	<string name="_sys_mobile_friends"><![CDATA[Friends]]></string>
+	<string name="_sys_mobile_info"><![CDATA[Info]]></string>
+	<string name="_sys_mobile_mail"><![CDATA[Messages]]></string>
+	<string name="_sys_mobile_profile_contact"><![CDATA[Contact]]></string>
+	<string name="_sys_mobile_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_sys_mobile_profile_info"><![CDATA[Profile Info]]></string>
+	<string name="_sys_mobile_search"><![CDATA[Search]]></string>
+	<string name="_sys_mobile_status"><![CDATA[Status]]></string>
+    <string name="_sys_name"><![CDATA[Name]]></string>
+    <string name="_sys_on"><![CDATA[on]]></string>
+    <string name="_sys_off"><![CDATA[off]]></string>
+	<string name="_sys_page_block_title_about"><![CDATA[About]]></string>
+	<string name="_sys_page_block_title_account_profile_switcher"><![CDATA[Use site as ...]]></string>
+	<string name="_sys_page_block_title_account_settings_delete"><![CDATA[Delete Account]]></string>
+	<string name="_sys_page_block_title_account_settings_email"><![CDATA[Email Settings]]></string>
+	<string name="_sys_page_block_title_account_settings_info"><![CDATA[Edit Account]]></string>
+	<string name="_sys_page_block_title_account_settings_menu"><![CDATA[Account Settings]]></string>
+	<string name="_sys_page_block_title_account_settings_pwd"><![CDATA[Change Password]]></string>
+	<string name="_sys_page_block_title_add_content"><![CDATA[Add Content]]></string>
+	<string name="_sys_page_block_title_confirm_email"><![CDATA[Email Confirmation]]></string>
+	<string name="_sys_page_block_title_create_account"><![CDATA[Create Account]]></string>
+	<string name="_sys_page_block_title_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_sys_page_block_title_forgot_password"><![CDATA[Forgot Password]]></string>
+	<string name="_sys_page_block_title_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_page_block_title_profile_stats"><![CDATA[Profile stats]]></string>
+	<string name="_sys_page_block_title_unsubscribe_news"><![CDATA[Unsubscribe From Site Newsletters]]></string>
+	<string name="_sys_page_block_title_unsubscribe_notifications"><![CDATA[Unsubscribe From Site Notifications]]></string>
+	<string name="_sys_page_block_title_std_dash_version"><![CDATA[Version]]></string>
+	<string name="_sys_page_block_title_std_dash_space"><![CDATA[Space Usage]]></string>
+	<string name="_sys_page_block_title_std_dash_host_tools"><![CDATA[Host Tools]]></string>
+	<string name="_sys_page_block_title_std_dash_cache"><![CDATA[Cache]]></string>
+	<string name="_sys_page_lang_block_about"><![CDATA[This site is powered by BoonEx Dolphin U. The rest is a mystery.]]></string>
+	<string name="_sys_page_title_about"><![CDATA[About]]></string>
+	<string name="_sys_page_title_account_profile_switcher"><![CDATA[Switch Profile]]></string>
+	<string name="_sys_page_title_account_settings_delete"><![CDATA[Delete Account]]></string>
+	<string name="_sys_page_title_account_settings_email"><![CDATA[Email Settings]]></string>
+	<string name="_sys_page_title_account_settings_info"><![CDATA[Edit Account]]></string>
+	<string name="_sys_page_title_account_settings_pwd"><![CDATA[Change Password]]></string>
+	<string name="_sys_page_title_add_content"><![CDATA[Add Content]]></string>
+	<string name="_sys_page_title_confirm_email"><![CDATA[Email Confirmation]]></string>
+	<string name="_sys_page_title_create_account"><![CDATA[Create Account]]></string>
+	<string name="_sys_page_title_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_sys_page_title_forgot_password"><![CDATA[Forgot Password]]></string>
+	<string name="_sys_page_title_home"><![CDATA[{site_title} :: Homepage]]></string>
+	<string name="_sys_page_title_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_page_title_system_about"><![CDATA[About]]></string>
+	<string name="_sys_page_title_system_account_profile_switcher"><![CDATA[Switch Profile]]></string>
+	<string name="_sys_page_title_system_account_settings_delete"><![CDATA[Delete Account]]></string>
+	<string name="_sys_page_title_system_account_settings_email"><![CDATA[Email Settings]]></string>
+	<string name="_sys_page_title_system_account_settings_info"><![CDATA[Edit Account]]></string>
+	<string name="_sys_page_title_system_account_settings_pwd"><![CDATA[Change Password]]></string>
+	<string name="_sys_page_title_system_add_content"><![CDATA[Add Content]]></string>
+	<string name="_sys_page_title_system_confirm_email"><![CDATA[Email Confirmation]]></string>
+	<string name="_sys_page_title_system_create_account"><![CDATA[Create Account]]></string>
+	<string name="_sys_page_title_system_dashboard"><![CDATA[Dashboard]]></string>
+	<string name="_sys_page_title_system_forgot_password"><![CDATA[Forgot Password]]></string>
+	<string name="_sys_page_title_system_home"><![CDATA[Homepage]]></string>
+	<string name="_sys_page_title_system_login"><![CDATA[Sign in]]></string>
+	<string name="_sys_page_title_system_unsubscribe_news"><![CDATA[Unsubscribe From Newsletters]]></string>
+	<string name="_sys_page_title_system_unsubscribe_notifications"><![CDATA[Unsubscribe From Notifications]]></string>
+	<string name="_sys_page_title_system_studio_dashboard"><![CDATA[Studio Dashboard]]></string>
+	<string name="_sys_page_title_unsubscribe_news"><![CDATA[Unsubscribe From Site Newsletters]]></string>
+	<string name="_sys_page_title_unsubscribe_notifications"><![CDATA[Unsubscribe From Site Notifications]]></string>
+	<string name="_sys_page_title_studio_dashboard"><![CDATA[Studio Dashboard]]></string>
+	<string name="_sys_paginate_info"><![CDATA[{0}-{1}]]></string>
+	<string name="_sys_paginate_view_all"><![CDATA[View All]]></string>
+	<string name="_sys_please_select"><![CDATA[Please select...]]></string>
+	<string name="_sys_private"><![CDATA[Private]]></string>
+    <string name="_sys_pruning_db"><![CDATA[<h3>Database pruning:</h3>
+        <ul>
+            <li><b>{0}</b> deleted expired memberhsip levels</li>
+            <li><b>{1}</b> deleted expired sessions</li>
+            <li><b>{2}</b> deleted expired views</li>
+            <li><b>{3}</b> deleted expired votes</li>
+            <li><b>{4}</b> deleted expired keys</li>
+            <li><b>{5}</b> deleted expired storage tokens</li>
+            <li><b>{6}</b> deleted outdated transcoded images</li>
+        </ul>]]></string>
+    <string name="_sys_pruning_files"><![CDATA[<h3>Files pruning:</h3>
+        <ul>
+            <li><b>{0}</b> total</li>
+            <li><b>{1}</b> deleted</li>
+        </ul>]]></string>
+	<string name="_sys_ps_group_title_friends"><![CDATA[Friends]]></string>
+	<string name="_sys_ps_group_title_me_only"><![CDATA[Me only]]></string>
+	<string name="_sys_ps_group_title_members"><![CDATA[Members]]></string>
+	<string name="_sys_ps_group_title_public"><![CDATA[Public]]></string>
+    <string name="_sys_read_more"><![CDATA[Continue reading "{0}"]]></string>
+	<string name="_sys_request_module_not_found_cpt"><![CDATA[Module was not found]]></string>
+	<string name="_sys_request_module_not_found_cnt"><![CDATA[Module({0}) was not found]]></string>
+	<string name="_sys_request_page_not_found_cpt"><![CDATA[Page was not found]]></string>
+	<string name="_sys_request_page_not_found_cnt"><![CDATA[Page({0}) was not found in module({1})]]></string>
+	<string name="_sys_request_method_not_found_cpt"><![CDATA[Method was not found]]></string>
+	<string name="_sys_request_method_not_found_cnt"><![CDATA[Method({0}) was not found in module({1})]]></string>
+	<string name="_sys_search_main_title"><![CDATA[Search Home]]></string>
+	<string name="_sys_select"><![CDATA[Select]]></string>
+	<string name="_sys_send"><![CDATA[Send]]></string>
+    <string name="_sys_search_placeholder"><![CDATA[Search...]]></string>
+    <string name="_sys_social_sharing_title_facebook"><![CDATA[Share in Facebook]]></string>
+    <string name="_sys_social_sharing_title_googleplus"><![CDATA[Share in Google Plus]]></string>
+    <string name="_sys_social_sharing_title_twitter"><![CDATA[Share in Twitter]]></string>
+    <string name="_sys_social_sharing_title_pinterest"><![CDATA[Share in Pinterest]]></string>
+	<string name="_sys_spam_detected"><![CDATA[Sorry, it looks like you are trying to submit spam]]></string>
+	<string name="_sys_spam_detected_contact"><![CDATA[Sorry, it looks like you are trying to submit spam, if you believe that it is not spam please submit false positive report here: {0}]]></string>
+	<string name="_sys_splash_btn_start"><![CDATA[Start]]></string>
+	<string name="_sys_splash_err_domain_incorrect"><![CDATA[Domain is essential. Please, fill in this field, for example, my-first-site.]]></string>
+	<string name="_sys_splash_err_domain_is_used"><![CDATA[The domain name is already used. Try to select another one.]]></string>
+	<string name="_sys_splash_err_service_not_available"><![CDATA[The service is currently not available. Try it later, please.]]></string>
+	<string name="_sys_splash_inp_placeholder"><![CDATA[site address]]></string>
+	<string name="_sys_splash_inp_postfix"><![CDATA[.online.me]]></string>
+	<string name="_sys_splash_slogan"><![CDATA[The easiest way to create your own social website.]]></string>
+	<string name="_sys_storage_err_db"><![CDATA[database error]]></string>
+	<string name="_sys_storage_err_engine_add"><![CDATA[error occurred]]></string>
+	<string name="_sys_storage_err_engine_get"><![CDATA[error occurred]]></string>
+	<string name="_sys_storage_err_file_not_found"><![CDATA[file not found]]></string>
+	<string name="_sys_storage_err_file_too_big"><![CDATA[file is too big]]></string>
+	<string name="_sys_storage_err_filesystem_perm"><![CDATA[permissions error]]></string>
+	<string name="_sys_storage_err_no_file"><![CDATA[no file to upload]]></string>
+	<string name="_sys_storage_err_no_input_method"><![CDATA[so such input method available]]></string>
+	<string name="_sys_storage_err_object_quota_exceeded"><![CDATA[quota exceeded]]></string>
+	<string name="_sys_storage_err_permission_denied"><![CDATA[permission denied]]></string>
+	<string name="_sys_storage_err_site_quota_exceeded"><![CDATA[quota exceeded]]></string>
+	<string name="_sys_storage_err_unlink"><![CDATA[file deletion failed]]></string>
+	<string name="_sys_storage_err_user_quota_exceeded"><![CDATA[user quota exceeded]]></string>
+	<string name="_sys_storage_err_wrong_ext"><![CDATA[wrong file extension]]></string>
+	<string name="_sys_storage_invalid_file"><![CDATA[file is invalid]]></string>
+	<string name="_sys_storage_restriction_ext_all_allowed"><![CDATA[Wow, files of all types are allowed!]]></string>
+	<string name="_sys_storage_restriction_ext_all_denied"><![CDATA[Sorry, adding all file types is currently restricted.]]></string>
+	<string name="_sys_storage_restriction_ext_allowed"><![CDATA[Please, upload only files of these types: {0}]]></string>
+	<string name="_sys_storage_restriction_ext_denied"><![CDATA[You may upload any types of files except for {0}]]></string>
+	<string name="_sys_storage_restriction_size"><![CDATA[Maximum file size limit is {0}]]></string>
+	<string name="_sys_switch_profile"><![CDATA[Switch profile]]></string>
+	<string name="_sys_submit"><![CDATA[Submit]]></string>
+	<string name="_sys_txt_access_denied"><![CDATA[Access denied]]></string>
+	<string name="_sys_txt_account_pending"><![CDATA[Your account is pending approval, please wait until it is activated.]]></string>
+	<string name="_sys_txt_account_profile_context_change_suggestion"><![CDATA[This is your profile, you can <a href="{0}">change your current profile</a> to this profile]]></string>
+	<string name="_sys_txt_account_profile_context_changed_success"><![CDATA[Current profile has been successfully changed to: <b>{0}</b>]]></string>
+	<string name="_sys_txt_account_suspended"><![CDATA[Your account is suspended.]]></string>
+	<string name="_sys_txt_account_unconfirmed"><![CDATA[Your email address is unconfirmed. Please, check your email ({1}) for a confirmation letter and click email confirmation link. Can't find the letter? Check your SPAM folder or <a href="{0}">send the verification letter again</a>.]]></string>
+	<string name="_sys_txt_account_profile_system"><![CDATA[You have no profiles created, so you can't perform any actions on the site, please <a href="{0}">create  profile</a>.]]></string>
+	<string name="_sys_txt_captcha_not_available"><![CDATA[CAPTCHA not available]]></string>
+    <string name="_sys_txt_change_image"><![CDATA[Change Picture]]></string>
+	<string name="_sys_txt_cmt_loading"><![CDATA[Loading...]]></string>
+	<string name="_sys_txt_confirm_email_already_confirmed"><![CDATA[Your email address is already confirmed.]]></string>
+	<string name="_sys_txt_confirm_email_desc"><![CDATA[Please enter confirmation code which was sent to your email address, or just click confirmation link in the same email message.]]></string>
+	<string name="_sys_txt_confirm_email_error_occured"><![CDATA[Error occurred, please try to login to your account and resend verification email.]]></string>
+	<string name="_sys_txt_confirm_email_sent"><![CDATA[Email verification letter was sent, please check your inbox.]]></string>
+	<string name="_sys_txt_confirm_email_sent_failed"><![CDATA[Error occurred, please report error to site administrator.]]></string>
+	<string name="_sys_txt_confirm_email_success"><![CDATA[You email address was successfully confirmed.]]></string>
+    <string name="_sys_txt_current_picture"><![CDATA[Current Picture]]></string>
+	<string name="_sys_txt_data_successfully_submitted"><![CDATA[Done]]></string>
+    <string name="_sys_txt_delete"><![CDATA[Delete]]></string>
+    <string name="_sys_txt_discard"><![CDATA[Discard]]></string>
+	<string name="_sys_txt_empty"><![CDATA[Empty]]></string>
+	<string name="_sys_txt_error_account_creation"><![CDATA[Account creation failed]]></string>
+	<string name="_sys_txt_error_account_delete"><![CDATA[Account delete failed]]></string>
+	<string name="_sys_txt_error_account_is_not_defined"><![CDATA[Account is not defined]]></string>
+	<string name="_sys_txt_error_account_update"><![CDATA[Account update failed]]></string>
+
+	<string name="_sys_txt_error_entry_creation"><![CDATA[Entry creation error]]></string>
+	<string name="_sys_txt_error_entry_delete"><![CDATA[Entry delete failed]]></string>
+	<string name="_sys_txt_error_entry_is_not_defined"><![CDATA[Requested resource doesn't exist]]></string>
+	<string name="_sys_txt_error_entry_update"><![CDATA[Entry update failed]]></string>
+	<string name="_sys_txt_error_occured"><![CDATA[Error Occurred]]></string>
+
+	<string name="_sys_txt_forgot_pasword"><![CDATA[Forgot password?]]></string>
+	<string name="_sys_txt_forgot_pasword_check_email"><![CDATA[Email was sent, please follow instructions in the email message.]]></string>
+	<string name="_sys_txt_forgot_pasword_desc"><![CDATA[Enter your account email address to get a password-reset link.]]></string>
+	<string name="_sys_txt_forgot_pasword_email_send_failed"><![CDATA[Email send failed, please try again later.]]></string>
+	<string name="_sys_txt_forgot_pasword_error_occured"><![CDATA[Error occurred, please report error to the site administrator.]]></string>
+
+    <string name="_sys_txt_form_entry_input_picture_delete"><![CDATA[Delete]]></string>
+    <string name="_sys_txt_form_entry_input_picture_insert"><![CDATA[Insert to Post]]></string>
+	<string name="_sys_txt_form_entry_input_picture_pic_url"><![CDATA[Attachment URL:]]></string>
+    <string name="_sys_txt_form_entry_input_picture_use_as_thumb"><![CDATA[Use as Thumbnail]]></string>
+	<string name="_sys_txt_form_submission_error"><![CDATA[Incorrect info. Please, check your inputs and try to submit again.]]></string>
+
+	<string name="_sys_txt_login_description"><![CDATA[Not a member yet? <a href="{0}">Join now!</a>]]></string>
+	<string name="_sys_txt_login_error"><![CDATA[Entered email or password is incorrect. Please try again.]]></string>
+	<string name="_sys_txt_login_invalid_role"><![CDATA[Access denied]]></string>
+    <string name="_sys_txt_new_picture"><![CDATA[New Picture]]></string>
+    <string name="_sys_txt_no_picture_uploaded"><![CDATA[No picture uploaded]]></string>
+    <string name="_sys_txt_n_friends"><![CDATA[{0} friends]]></string>
+    <string name="_sys_txt_n_mutual_friends"><![CDATA[{0} mutual friends]]></string>
+    <string name="_sys_txt_one_mutual_friend"><![CDATA[<a href="{0}">{1}</a> mutual friend]]></string>
+	<string name="_sys_txt_reset_pasword_email_send_failed"><![CDATA[Your new password is <b>{0}</b>, please make sure to save it somewhere because we wasn't able to send it to your email. You can change it to any other password after first login.]]></string>
+	<string name="_sys_txt_reset_pasword_email_sent"><![CDATA[Your new password - <b>{0}</b> - was sent to your email. You can change it once you login to your account.]]></string>
+	<string name="_sys_txt_reset_pasword_error_occured"><![CDATA[Error occurred, please <a href="{0}">try again</a>.]]></string>
+	<string name="_sys_txt_unsubscribe_email_settings_update_success"><![CDATA[Your email preferences has been successfully updated.]]></string>
+	<string name="_sys_txt_unsubscribe_error_occured"><![CDATA[Error occurred, please login to your account and update email references there or contact site administrator to unsubscribe you manually.]]></string>
+	<string name="_sys_txt_unsubscribe_info"><![CDATA[Update email preferences for <b>{0}</b>]]></string>
+	<string name="_sys_txt_unsubscribe_wrong_link"><![CDATA[Unsubscribe link is wrong.]]></string>
+	<string name="_sys_upgrade_conclusion"><![CDATA[<h3>Important info:</h3><p>{0}</p>]]></string>
+	<string name="_sys_upgrade_db_and_files_versions_different"><![CDATA[Database and files versions are different, probably previous patch wasn't applied correctly.]]></string>
+	<string name="_sys_upgrade_files_checksum_failed"><![CDATA[Can't apply upgrade because the following files were modified: {0}]]></string>
+	<string name="_sys_upgrade_files_checksum_failed_too_many"><![CDATA[Can't apply upgrade because too many files({0}%) were modified]]></string>
+	<string name="_sys_upgrade_get_version_info_failed"><![CDATA[Get version info failed, please check internet connection on the web-server or web-server firewall]]></string>
+	<string name="_sys_upgrade_patch_checksum_failed"><![CDATA[Downloaded patch file checksum is invalid]]></string>
+	<string name="_sys_upgrade_patch_download_failed"><![CDATA[Patch download failed, or downloaded file can't be saved]]></string>
+	<string name="_sys_upgrade_patch_invalid"><![CDATA[Invalid patch, it can't be applied to your version or incorrect files structure in the patch.]]></string>
+	<string name="_sys_upgrade_patch_unpack_failed"><![CDATA[Patch unpack failed]]></string>
+	<string name="_sys_uploader_close"><![CDATA[Close]]></string>
+	<string name="_sys_uploader_confirm_close_popup"><![CDATA[Oh no! Are you sure? This may discard uploading files, seriously.]]></string>
+	<string name="_sys_uploader_confirm_leaving_page"><![CDATA[Upload is in progress! Stay cool and don't close this page, or it will cut off half-way.]]></string>
+	<string name="_sys_uploader_err_msg"><![CDATA[Oops! An error occurred with {0} file: {1}]]></string>
+	<string name="_sys_uploader_html5_button_name"><![CDATA[Multiple Upload]]></string>
+	<string name="_sys_uploader_html5_drop_area"><![CDATA[Drag and Drop files here to upload]]></string>
+	<string name="_sys_uploader_html5_shoose_file"><![CDATA[Select a file]]></string>
+	<string name="_sys_uploader_html5_title"><![CDATA[Multiple Upload]]></string>
+	<string name="_sys_uploader_simple_attach_one_more_file"><![CDATA[+ Add more files]]></string>
+	<string name="_sys_uploader_simple_button_name"><![CDATA[Simple Upload]]></string>
+	<string name="_sys_uploader_simple_submit_button"><![CDATA[Upload]]></string>
+	<string name="_sys_uploader_simple_title"><![CDATA[Simple Upload]]></string>
+	<string name="_sys_uploader_upload_canceled"><![CDATA[Too bad. Upload canceled.]]></string>
+	<string name="_sys_edit_profile"><![CDATA[Edit profile]]></string>    
+	<string name="_sys_warn"><![CDATA[warning]]></string>
+	<string name="_sys_x_days"><![CDATA[{0} days]]></string>
+	<string name="_to"><![CDATA[to]]></string>
+	<string name="_top"><![CDATA[Top]]></string>
+	<string name="_uknown"><![CDATA[unknown]]></string>
+	<string name="_undefined"><![CDATA[undefined]]></string>
+	<string name="_vote_do_like"><![CDATA[Thank you]]></string>
+	<string name="_vote_do_unlike"><![CDATA[No thank you]]></string>
+	<string name="_vote_do_like_by"><![CDATA[Thanked by]]></string>
+	<string name="_vote_err_duplicate_vote"><![CDATA[Duplicate vote]]></string>
+	<string name="_week_fri"><![CDATA[Friday]]></string>
+	<string name="_week_mon"><![CDATA[Monday]]></string>
+	<string name="_week_sat"><![CDATA[Saturday]]></string>
+	<string name="_week_sun"><![CDATA[Sunday]]></string>
+	<string name="_week_thu"><![CDATA[Thursday]]></string>
+	<string name="_week_tue"><![CDATA[Tuesday]]></string>
+	<string name="_week_wed"><![CDATA[Wednesday]]></string>
+</resources>

+ 71 - 0
modules/boonex/english/updates/8.0.4_8.0.5/source/install/config.php

@@ -0,0 +1,71 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    English English language
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_LANGUAGE,
+    'name' => 'bx_en',
+    'title' => 'English',
+    'note' => 'Language file',
+    'version' => '8.0.5',
+    'vendor' => 'Boonex',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/english/',
+    'home_uri' => 'en',
+
+    'db_prefix' => 'bx_eng_',
+    'class_prefix' => 'BxEng',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx English',
+
+    /**
+     * Installation/Uninstallation Section.
+     * NOTE. The sequence of actions is critical. Don't change the order.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'install_language' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'uninstall' => array (
+        'update_languages' => 1,
+        'execute_sql' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 46 - 0
modules/boonex/lagoon/updates/8.0.0_8.0.1/install/config.php

@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Lagoon',
+    'version_from' => '8.0.0',
+	'version_to' => '8.0.1',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0.A7'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/lagoon/updates/update_8.0.0_8.0.1/',
+	'home_uri' => 'lagoon_update_800_801',
+
+	'module_dir' => 'boonex/lagoon/',
+	'module_uri' => 'lagoon',
+
+    'db_prefix' => 'bx_lagoon_',
+    'class_prefix' => 'BxLagoon',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx Lagoon',
+);

+ 15 - 0
modules/boonex/lagoon/updates/8.0.0_8.0.1/install/installer.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+bx_import('BxDolStudioUpdater');
+
+class BxLagoonUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 23 - 0
modules/boonex/lagoon/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplCmtsForm.php

@@ -0,0 +1,23 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    DolphinCore Dolphin Core
+ * @{
+ */
+
+bx_import('BxBaseCmtsForm');
+
+/**
+ * @see BxBaseCmtsForm
+ */
+class BxTemplCmtsForm extends BxBaseCmtsForm
+{
+    public function __construct($aInfo, $oTemplate = false)
+    {
+        parent::__construct($aInfo, $oTemplate);
+    }
+}
+
+/** @} */

+ 68 - 0
modules/boonex/lagoon/updates/8.0.0_8.0.1/source/install/config.php

@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Uni Uni template
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_TEMPLATE,
+    'name' => 'bx_lagoon',
+    'title' => 'Lagoon',
+    'note' => 'Design template',
+    'version' => '8.0.1',
+    'vendor' => 'Boonex',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/lagoon/',
+    'home_uri' => 'lagoon',
+
+    'db_prefix' => 'bx_lagoon_',
+    'class_prefix' => 'BxLagoon',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx Lagoon',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 53 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/install/config.php

@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Ocean',
+    'version_from' => '8.0.0',
+	'version_to' => '8.0.1',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0.A7'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/ocean/updates/update_8.0.0_8.0.1/',
+	'home_uri' => 'ocean_update_800_801',
+
+	'module_dir' => 'boonex/ocean/',
+	'module_uri' => 'ocean',
+
+    'db_prefix' => 'bx_ocean_',
+    'class_prefix' => 'BxOcean',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx Ocean',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(
+    	'data/template/system/menu_toolbar.html',
+    ),
+);

+ 15 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/install/installer.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+bx_import('BxDolStudioUpdater');
+
+class BxOceanUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 8 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_convos/css/main.css

@@ -0,0 +1,8 @@
+@import url(../../../../../convos/template/css/main.css);
+
+.bx-base-text-author,
+.bx-cnv-collaborators,
+.bx-menu-btns-hor.bx-menu-object-bx_convos_view {
+	padding: 20px;
+  	padding: 1.25rem;
+}

+ 6 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_notifications/css/view.css

@@ -0,0 +1,6 @@
+@import url(../../../../../notifications/template/css/view.css);
+
+/*--- Event Style ---*/
+.bx-ntfs-content-profile {
+	font-weight: bold;
+}

+ 12 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_posts/css/main.css

@@ -0,0 +1,12 @@
+@import url(../../../../../posts/template/css/main.css);
+
+.bx-base-text-author,
+.bx-menu-btns-hor.bx-menu-object-bx_posts_my,
+.bx-menu-btns-hor.bx-menu-object-bx_posts_view {
+	padding: 20px;
+  	padding: 1.25rem;
+}
+
+.bx-base-text-unit-author {
+	font-weight: bold;
+}

+ 43 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/bx_timeline/css/view.css

@@ -0,0 +1,43 @@
+@import url(../../../../../timeline/template/css/view.css);
+
+/*+++ Item Menu +++*/
+.bx-tl-item-menu  .bx-tl-item-menu-button,
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions li {
+	padding: 5px 10px;
+
+	border: 1px solid #b9e2f6;
+	border-radius: 3px;
+	-moz-border-radius: 3px;
+	-webkit-border-radius: 3px;
+
+	background-color: #fff;
+}
+
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions .sys-icon.comment:before {
+  content: "\f0e5";
+}
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions .sys-icon.share:before {
+  content: "\f045";
+}
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions .sys-icon.thumbs-up:before {
+  content: "\f087";
+}
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions .sys-icon.thumbs-down:before {
+  content: "\f088";
+}
+
+/*+++ Item Owner +++*/
+div.bx-tl-owner-name {
+	font-weight: bold;
+	font-size: 20px;
+	font-size: 1.25rem;
+}
+div.bx-tl-item-info {
+	margin-top: 5px;
+	margin-top: 0.3125rem;
+}
+
+/*+++ Item Text +++*/
+div.bx-tl-title {
+	font-weight: bold;
+}

+ 6 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/dashboard.css

@@ -0,0 +1,6 @@
+@import url(../../../../../../../studio/template/css/dashboard.css);
+
+/*--- Background ---*/
+div.bx-std-page-bg {
+	background-image: url(../images/bx-std-bg-columns.png);
+}

+ 21 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/general.css

@@ -0,0 +1,21 @@
+@import url(../../../../../../../studio/template/css/general.css);
+
+/**
+ * Dual Column page
+ */
+div.bx-std-page-caption {
+	background-image: none;
+	background: -webkit-linear-gradient(#2aaadc, #0079a9);
+	background: -o-linear-gradient(#2aaadc, #0079a9);
+	background: -moz-linear-gradient(#2aaadc, #0079a9);
+	background: linear-gradient(#2aaadc, #0079a9);
+  	border-bottom: 1px solid #4c4c4c;
+	box-shadow: 0px 1px 3px #888;
+}
+
+/**
+ * Page Menu (Left Side)
+ */
+div.bx-menu-tab-active {
+	background-color: #b9e2f6;
+}

+ 5 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/css/launcher.css

@@ -0,0 +1,5 @@
+@import url(../../../../../../../studio/template/css/launcher.css);
+
+body.bx-std-bg {
+    background-color: #0084b4;
+}

+ 27 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/studio/scripts/BxTemplStudioConfig.php

@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    DolphinView Dolphin Studio Representation classes
+ * @ingroup     DolphinStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+bx_import('BxBaseStudioConfig');
+
+class BxTemplStudioConfig extends BxBaseStudioConfig
+{
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->_aConfig['aLessConfig'] = array_merge($this->_aConfig['aLessConfig'], array(
+        	'bx-color-page' => '#f3f3f8',
+        	'bx-border-color-layout' => '#b9e2f6',
+        ));
+    }
+}
+
+/** @} */

+ 82 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/_header.html

@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="__lang__">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=__page_charset__" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
+    <title>__page_header__</title>
+    <base href="<bx_url_root />" />
+
+    __meta_info__
+    __page_robots__
+
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+
+    <bx_include_css />
+    <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,600' rel='stylesheet' type='text/css' />
+
+    __dol_images__
+    __dol_lang__
+    __dol_options__
+
+    <bx_include_js />
+    <script type="text/javascript" language="javascript">
+
+        var sUrlRoot = '<bx_url_root />';
+
+        var aSpinnerOpts = {
+            lines: 7, // The number of lines to draw
+            length: 0, // The length of each line
+            width: 8, // The line thickness
+            radius: 7, // The radius of the inner circle
+            corners: 1, // Corner roundness (0..1)
+            rotate: 0, // The rotation offset
+            direction: 1, // 1: clockwise, -1: counterclockwise
+            color: '#3a8686', // #rgb or #rrggbb or array of colors
+            speed: 1, // Rounds per second
+            trail: 60, // Afterglow percentage
+            shadow: false, // Whether to render a shadow
+            hwaccel: false, // Whether to use hardware acceleration
+            className: 'bx-sys-spinner', // The CSS class to assign to the spinner
+            zIndex: 2e9, // The z-index (defaults to 2000000000)
+            top: '10px', // Top position relative to parent in px
+            left: '10px' // Left position relative to parent in px
+        };
+
+        var aSpinnerSmallOpts = $.extend({}, aSpinnerOpts, {
+            lines: 6,
+            width: 6,
+            radius: 4,
+            color: '#333',
+            top: 'auto',
+            left: 'auto'
+        }); 
+
+        $(document).ready(function () {
+            bx_time('__lang__');
+
+            $('#bx-toolbar').css({opacity: 0.9});
+
+            $('.sys-icon-a').each(function () {
+                var e = $(this);
+                var m = new Marka(e.get(0)), r = e.attr('data-rotate'), c = e.attr('data-color');
+                m.set(e.attr('data-icon')).rotate(r ? r : 'up').color(c ? c : '#29789c');
+            });
+        });
+
+        (function(w) {
+            var dpr = (w.devicePixelRatio === undefined ? 1 : w.devicePixelRatio);
+            if ($.cookie('devicePixelRatio') == dpr || dpr < 2)
+                return;
+            $.cookie('devicePixelRatio', dpr, {expires: 365, path: '/'});
+            window.location.reload();
+        })(window);
+
+    </script>
+    __extra_js__
+
+    <bx_injection:injection_head />
+
+</head>
+
+<body class="bx-def-font bx-def-color-bg-page" <bx_injection:injection_body /> >
+    <bx_injection:injection_header />    

+ 72 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/_sub_header.html

@@ -0,0 +1,72 @@
+<bx_include_auto:_header.html />
+
+<div class="bx-main">
+
+	<bx_injection:top />
+	
+	<div id="bx-toolbar" class="bx-def-z-index-nav bx-def-shadow">
+	
+	    <div class="bx-def-centered bx-def-padding-sec-left bx-def-padding-sec-right bx-def-page-width">
+	
+	        <div id="bx-toolbar-content" class="bx-clearfix">
+	
+	            <div id="bx-menu-toolbar-1-container">
+	                <bx_menu:sys_toolbar_site />
+	            </div>
+
+	            <div id="bx-logo-container">
+	
+	                <bx_injection:injection_logo_before />
+	                    __main_logo__
+	                <bx_injection:injection_logo_after />
+	
+	            </div>
+	
+	            <div id="bx-menu-toolbar-2-container">
+	                <bx_menu:sys_toolbar_member />
+	            </div>
+	
+	        </div>
+	
+	    </div>
+	
+	</div>
+
+	<bx_injection:injection_between_logo_top_menu />
+	
+	<div id="bx-menu-main-bar-wrapper">
+	
+	    <div id="bx-menu-main-bar" class="bx-def-color-bg-sec">
+	
+	        <div class="bx-def-centered bx-def-padding-sec-leftright bx-def-page-width">
+	
+	            <bx_injection:injection_top_menu_before />
+	
+	            <div id="bx-menu-main-container">
+	                <div id="bx-menu-main-container-scroller"> 
+	                    <bx_menu:sys_site_submenu />
+	                </div>
+	            </div>
+	
+	            <bx_injection:injection_top_menu_after />
+	
+	        </div>
+	
+	    </div>
+	
+	</div>
+	
+	
+	<bx_injection:injection_between_content_menu />
+	
+	<div id="bx-content-wrapper" class="bx-def-padding-topbottom">
+	
+		__informer__
+	
+		<div class="bx-page-wrapper bx-def-centered bx-def-padding-sec-leftright bx-def-page-width">
+		
+		    <div id="bx-content-container" class="bx-def-padding-sec-leftright">
+		
+		        <bx_injection:injection_content_before />
+		
+		        <div id="bx-content-main" class="">

+ 5 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/cmts.css

@@ -0,0 +1,5 @@
+@import url(../../../../../../../template/css/cmts.css);
+
+div.cmt-head div.cmt-username {
+	font-weight: bold;
+}

+ 13 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/default.less

@@ -0,0 +1,13 @@
+@import url(../../../../../../../template/css/default.less);
+
+/* image/thumbnail/gallery default styles */
+.bx-def-ava,
+.bx-def-thumb,
+.bx-def-icon {
+    .radius(@bx-round-corners-radius);
+    overflow:hidden;
+}
+
+.bx-def-unit-info-title {
+	font-weight: bold;
+}

+ 5 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/informer.css

@@ -0,0 +1,5 @@
+@import url(../../../../../../../template/css/informer.css);
+
+.bx-informer-msg {
+	border: 2px solid #ffffff;
+}

+ 34 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/css/menu.css

@@ -0,0 +1,34 @@
+@import url(../../../../../../../template/css/menu.css);
+
+/* --------------- menu header */
+#bx-menu-main-container-scroller {
+	text-align: center;
+}
+
+/* --------------- toolbar menu */
+ul.bx-menu-toolbar li a {
+    min-width: 64px;
+    min-width: 4rem;
+    height: 64px;
+    height: 4rem;
+
+    line-height: 64px;
+    line-height: 4rem;
+}
+
+ul.bx-menu-toolbar li a img {
+	margin-top: 8px;
+    margin-top: 0.5rem;
+}
+
+.bx-menu-toolbar-item-title {
+	font-weight: bold;
+}
+.bx-menu-toolbar-item-addon {
+	background-color: #008fb8;
+}
+
+/* --------------- account popup menu */
+.bx-menu-account-popup-profile {
+	font-weight: bold;
+}

+ 23 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplCmtsForm.php

@@ -0,0 +1,23 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    DolphinCore Dolphin Core
+ * @{
+ */
+
+bx_import('BxBaseCmtsForm');
+
+/**
+ * @see BxBaseCmtsForm
+ */
+class BxTemplCmtsForm extends BxBaseCmtsForm
+{
+    public function __construct($aInfo, $oTemplate = false)
+    {
+        parent::__construct($aInfo, $oTemplate);
+    }
+}
+
+/** @} */

+ 44 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/data/template/system/scripts/BxTemplConfig.php

@@ -0,0 +1,44 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    DolphinCore Dolphin Core
+ * @{
+ */
+
+bx_import('BxBaseConfig');
+
+class BxTemplConfig extends BxBaseConfig
+{
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->_aConfig['aLessConfig'] = array_merge($this->_aConfig['aLessConfig'], array(
+        	'bx-font-family' => '"Source Sans Pro", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif',
+        
+        	'bx-color-page' => '#b9e2f6',
+        	'bx-color-block' => '#fff',
+        	'bx-color-box' => '#daf8ff',
+        	'bx-color-sec' => '#fff',
+        	'bx-color-hl' => 'rgba(202, 242, 252, 0.2)',
+        	'bx-color-active' => 'rgba(202, 242, 252, 0.4)',
+
+        	'bx-border-color' => '#00a0ce',
+        ));
+
+        bx_import('BxDolTemplate');
+        $sCode = BxDolTemplate::getInstance()->getCode();
+        $sStaticImages = BX_DOL_URL_ROOT . 'templates/tmpl_' . $sCode . '/images/';
+
+        bx_import('BxDolConfig');
+        $oSysConfig = BxDolConfig::getInstance();
+        $oSysConfig->set('url_static', 'images', $sStaticImages);
+        $oSysConfig->set('url_static', 'icons', $sStaticImages . 'icons/');
+
+        $oSysConfig->set('path_static', 'css', BX_DIRECTORY_PATH_ROOT . 'templates/tmpl_' . $sCode . '/css/');
+    }
+}
+
+/** @} */

+ 68 - 0
modules/boonex/ocean/updates/8.0.0_8.0.1/source/install/config.php

@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Alt Alt template
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_TEMPLATE,
+    'name' => 'bx_ocean',
+    'title' => 'Ocean',
+    'note' => 'Design template',
+    'version' => '8.0.1',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/ocean/',
+    'home_uri' => 'ocean',
+
+    'db_prefix' => 'bx_ocean_',
+    'class_prefix' => 'BxOcean',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx Ocean',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'recompile_global_paramaters' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 53 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/install/config.php

@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'title' => 'Timeline',
+    'version_from' => '8.0.2',
+	'version_to' => '8.0.3',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '8.0.0.A7'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/timeline/updates/update_8.0.2_8.0.3/',
+	'home_uri' => 'timeline_update_802_803',
+
+	'module_dir' => 'boonex/timeline/',
+	'module_uri' => 'timeline',
+
+    'db_prefix' => 'bx_timeline_',
+    'class_prefix' => 'BxTimeline',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 1,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Timeline',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(
+    	'classes/BxTimelineMenuItem.php',
+    ),
+);

+ 15 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/install/installer.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ */
+
+bx_import('BxDolStudioUpdater');
+
+class BxTimelineUpdater extends BxDolStudioUpdater
+{
+    function __construct($aConfig)
+	{
+        parent::__construct($aConfig);
+    }
+}

+ 4 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/install/langs/en.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_del name="_bx_timeline_menu_item_title_item_vote"><![CDATA[Plus]]></string_del>
+</resources>

+ 8 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/install/sql/enable.sql

@@ -0,0 +1,8 @@
+UPDATE `sys_objects_menu` SET `override_class_name`='BxTimelineMenuItemManage', `override_class_file`='modules/boonex/timeline/classes/BxTimelineMenuItemManage.php' WHERE `object`='bx_timeline_menu_item_manage' LIMIT 1;
+UPDATE `sys_objects_menu` SET `override_class_name`='BxTimelineMenuItemActions', `override_class_file`='modules/boonex/timeline/classes/BxTimelineMenuItemActions.php' WHERE `object`='bx_timeline_menu_item_actions' LIMIT 1;
+
+UPDATE `sys_menu_items` SET `editable`=1 WHERE `set_name`='bx_timeline_menu_item_actions' AND `module`='bx_timeline' AND `name`='item-comment' LIMIT 1;
+UPDATE `sys_menu_items` SET `title`='', `onclick`='', `target`='', `icon`='', `addon`='', `editable`=0 WHERE `set_name`='bx_timeline_menu_item_actions' AND `module`='bx_timeline' AND `name`='item-vote' LIMIT 1;
+UPDATE `sys_menu_items` SET `editable`=1 WHERE `set_name`='bx_timeline_menu_item_actions' AND `module`='bx_timeline' AND `name`='item-share' LIMIT 1;
+
+UPDATE `sys_objects_vote` SET `IsUndo`=0 WHERE `Name`='bx_timeline';

+ 362 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineDb.php

@@ -0,0 +1,362 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxBaseModNotificationsDb');
+
+class BxTimelineDb extends BxBaseModNotificationsDb
+{
+    protected $_sTablesShareTrack;
+
+    /*
+     * Constructor.
+     */
+    function __construct(&$oConfig)
+    {
+        parent::__construct($oConfig);
+        $this->_sTableSharesTrack = $this->_sPrefix . 'shares_track';
+    }
+
+    public function getMaxDuration($aParams)
+    {
+        $aParams['browse'] = 'last';
+        if(isset($aParams['timeline']))
+            unset($aParams['timeline']);
+
+        $aEvent = $this->getEvents($aParams);
+        if(empty($aEvent) || !is_array($aEvent))
+            return 0;
+
+        $iNowYear = date('Y', time());
+        return (int)$aEvent['year'] < $iNowYear ? (int)$aEvent['year'] : 0;
+    }
+
+    //--- Share related methods ---//
+    public function insertShareTrack($iEventId, $iAuthorId, $sAuthorIp, $iSharedId)
+    {
+        $iNow = time();
+        $iAuthorNip = ip2long($sAuthorIp);
+        $sQuery = $this->prepare("INSERT INTO `{$this->_sTableSharesTrack}` SET `event_id` = ?, `author_id` = ?, `author_nip` = ?, `shared_id` = ?, `date` = ?", $iEventId, $iAuthorId, $iAuthorNip, $iSharedId, $iNow);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function deleteShareTrack($iEventId)
+    {
+        $sQuery = $this->prepare("DELETE FROM `{$this->_sTableSharesTrack}` WHERE `event_id` = ?", $iEventId);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function updateShareCounter($iId, $iCounter, $iIncrement = 1)
+    {
+        return (int)$this->updateEvent(array('shares' => (int)$iCounter + $iIncrement), array('id' => $iId)) > 0;
+    }
+
+    public function getShared($sType, $sAction, $iObjectId)
+    {
+    	$bSystem = $this->_oConfig->isSystem($sType, $sAction);
+
+        if($bSystem)
+            $aParams = array('browse' => 'descriptor', 'type' => $sType, 'action' => $sAction, 'object_id' => $iObjectId);
+        else
+            $aParams = array('browse' => 'id', 'value' => $iObjectId);
+
+		$aShared = $this->getEvents($aParams);
+		if($bSystem && (empty($aShared) || !is_array($aShared))) {
+			$iId = $this->insertEvent(array(
+				'owner_id' => 0,
+				'type' => $sType,
+				'action' => $sAction,
+				'object_id' => $iObjectId,
+				'object_privacy_view' => $this->_oConfig->getPrivacyViewDefault(),
+				'content' => '',
+				'title' => '',
+				'description' => '',
+				'hidden' => 1
+			));
+
+			$aShared = $this->getEvents(array('browse' => 'id', 'value' => $iId));
+		}
+
+        return $aShared;
+    }
+
+    function getSharedBy($iSharedId)
+    {
+        $sQuery = $this->prepare("SELECT `author_id` FROM `{$this->_sTableSharesTrack}` WHERE `shared_id`=?", $iSharedId);
+        return $this->getColumn($sQuery);
+    }
+
+    //--- Photo uploader related methods ---//
+    public function savePhoto($iEventId, $iPhId)
+    {
+        $sQuery = $this->prepare("INSERT INTO `" . $this->_sPrefix . "photos2events` SET `event_id`=?, `photo_id`=?", $iEventId, $iPhId);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function deletePhotos($iEventId)
+    {
+        $sQuery = $this->prepare("DELETE FROM `" . $this->_sPrefix . "photos2events` WHERE `event_id` = ?", $iEventId);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function getPhotos($iEventId, $iOffset = 0)
+    {
+        $sLimitAddon = '';
+        if($iOffset != 0)
+            $sLimitAddon = $this->prepare(" OFFSET ?", $iOffset);
+
+        $sQuery = $this->prepare("SELECT
+                 `tpe`.`photo_id` AS `id`
+            FROM `" . $this->_sPrefix . "photos2events` AS `tpe`
+            LEFT JOIN `" . $this->_sPrefix . "photos` AS `tp` ON `tpe`.`photo_id` = `tp`.`id`
+            WHERE `tpe`.`event_id` = ?" . $sLimitAddon, $iEventId);
+
+        return $this->getColumn($sQuery);
+    }
+
+    //--- Link attach related methods ---//
+    public function getUnusedLinks($iUserId, $iLinkId = 0)
+    {
+        $sMethod = 'getAll';
+
+        $sWhereAddon = '';
+        if(!empty($iLinkId)) {
+            $sMethod = 'getRow';
+            $sWhereAddon = $this->prepare(" AND `tl`.`id`=?", $iLinkId);
+        }
+
+        $sQuery = $this->prepare("SELECT
+                `tl`.`id` AS `id`,
+                `tl`.`profile_id` AS `profile_id`,
+                `tl`.`url` AS `url`,
+                `tl`.`title` AS `title`,
+                `tl`.`text` AS `text`,
+                `tl`.`added` AS `added`
+            FROM `" . $this->_sPrefix . "links` AS `tl`
+            LEFT JOIN `" . $this->_sPrefix . "links2events` AS `tle` ON `tl`.`id`=`tle`.`link_id`
+            WHERE `tl`.`profile_id`=? AND ISNULL(`tle`.`event_id`)" . $sWhereAddon . "
+            ORDER BY `tl`.`added` DESC", $iUserId);
+
+        return $this->$sMethod($sQuery);
+    }
+
+    public function deleteUnusedLinks($iUserId, $iLinkId = 0)
+    {
+        $sWhereAddon = '';
+        if(!empty($iLinkId))
+            $sWhereAddon = $this->prepare(" AND `id`=?", $iLinkId);
+
+        $sQuery = $this->prepare("DELETE FROM `" . $this->_sPrefix . "links` WHERE `profile_id`=?" . $sWhereAddon, $iUserId);
+        return $this->query($sQuery);
+    }
+
+    public function saveLink($iEventId, $iLinkId)
+    {
+        $sQuery = $this->prepare("INSERT INTO `" . $this->_sPrefix . "links2events` SET `event_id`=?, `link_id`=?", $iEventId, $iLinkId);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function deleteLinks($iEventId)
+    {
+        $sQuery = $this->prepare("DELETE FROM `tl`, `tle` USING `" . $this->_sPrefix . "links` AS `tl` LEFT JOIN `" . $this->_sPrefix . "links2events` AS `tle` ON `tl`.`id`=`tle`.`link_id` WHERE `tle`.`event_id` = ?", $iEventId);
+        return (int)$this->query($sQuery) > 0;
+    }
+
+    public function getLinks($iEventId)
+    {
+        $sQuery = $this->prepare("SELECT
+                `tl`.`id` AS `id`,
+                `tl`.`profile_id` AS `profile_id`,
+                `tl`.`url` AS `url`,
+                `tl`.`title` AS `title`,
+                `tl`.`text` AS `text`,
+                `tl`.`added` AS `added`
+            FROM `" . $this->_sPrefix . "links` AS `tl`
+            LEFT JOIN `" . $this->_sPrefix . "links2events` AS `tle` ON `tl`.`id`=`tle`.`link_id`
+            WHERE `tle`.`event_id`=?", $iEventId);
+
+        return $this->getAll($sQuery);
+    }
+
+    protected function _getFilterAddon($iOwnerId, $sFilter)
+    {
+        switch($sFilter) {
+            case BX_TIMELINE_FILTER_OWNER:
+                $sFilterAddon = " AND `{$this->_sTable}`.`action`='' AND `{$this->_sTable}`.`object_id`='" . $iOwnerId . "' ";
+                break;
+            case BX_TIMELINE_FILTER_OTHER:
+                $sFilterAddon = " AND `{$this->_sTable}`.`action`='' AND `{$this->_sTable}`.`object_id`<>'" . $iOwnerId . "' ";
+                break;
+            case BX_TIMELINE_FILTER_ALL:
+            default:
+                $sFilterAddon = "";
+        }
+        return $sFilterAddon;
+    }
+
+    protected function _getSqlPartsEvents($aParams)
+    {
+    	$sMethod = 'getAll';
+        $sSelectClause = $sJoinClause = $sWhereClause = $sOrderClause = $sLimitClause = "";
+
+        switch($aParams['browse']) {
+        	case 'owner_id':
+        		$sWhereClause = $this->prepare("AND `{$this->_sTable}`.`owner_id`=? ", $aParams['value']);
+        		break;
+
+        	case 'common_by_object':
+        		$sCommonPostPrefix = $this->_oConfig->getPrefix('common_post');
+        		$sWhereClause = $this->prepare("AND SUBSTRING(`{$this->_sTable}`.`type`, 1, " . strlen($sCommonPostPrefix) . ")='" . $sCommonPostPrefix . "' AND `{$this->_sTable}`.`object_id`=? ", $aParams['value']);
+        		break;
+
+            case 'descriptor':
+                $sMethod = 'getRow';
+                $sWhereClause = "";
+
+                if(isset($aParams['type']))
+                	$sWhereClause .= $this->prepare("AND `{$this->_sTable}`.`type`=? ", $aParams['type']);
+				if(isset($aParams['action']))
+					$sWhereClause .= $this->prepare("AND `{$this->_sTable}`.`action`=? ", $aParams['action']);
+				if(isset($aParams['object_id']))
+					$sWhereClause .= $this->prepare("AND `{$this->_sTable}`.`object_id`=? ", $aParams['object_id']);
+
+				$sLimitClause = "LIMIT 1";
+                break;
+
+            case 'shared_by_descriptor':
+            	$sWhereClause = "";
+
+            	if(isset($aParams['type']))
+                	$sWhereClause .= "AND `{$this->_sTable}`.`content` LIKE '%" . $this->escape($aParams['type']) . "%'";
+
+                if(isset($aParams['action']))
+                	$sWhereClause .= "AND `{$this->_sTable}`.`content` LIKE '%" . $this->escape($aParams['action']) . "%'";
+                break;
+
+            default:
+            	list($sMethod, $sSelectClause, $sJoinClause, $sWhereClause, $sOrderClause, $sLimitClause) = parent::_getSqlPartsEvents($aParams);
+        }
+
+		$sSelectClause .= "YEAR(FROM_UNIXTIME(`{$this->_sTable}`.`date`)) AS `year`, ";
+
+        return array($sMethod, $sSelectClause, $sJoinClause, $sWhereClause, $sOrderClause, $sLimitClause);
+    }
+
+    protected function _getSqlPartsEventsList($aParams)
+    {
+    	$sJoinClause = $sWhereClause = "";
+
+		if(isset($aParams['active']))
+        	$sWhereClause .= $this->prepare("AND `{$this->_sTable}`.`active`=? ", (int)$aParams['active']);
+
+		//--- Apply filter
+        if(isset($aParams['filter']))
+        	$sWhereClause .= $this->_getFilterAddon($aParams['owner_id'], $aParams['filter']);
+
+		//--- Apply timeline
+        if(isset($aParams['timeline']) && !empty($aParams['timeline'])) {
+        	$iYear = (int)$aParams['timeline'];
+            $sWhereClause .= $this->prepare("AND `date`<=? ", mktime(23, 59, 59, 12, 31, $iYear));
+		}
+
+		//--- Apply modules or handlers filter
+        $sWhereModuleFilter = '';
+        if(!empty($aParams['modules']) && is_array($aParams['modules']))
+        	$sWhereModuleFilter = "AND `" . $this->_sTable . "`.`type` IN (" . $this->implode_escape($aParams['modules']) . ") ";
+
+		if($sWhereModuleFilter == '') {
+        	$aHidden = $this->_oConfig->getHandlersHidden();
+			$sWhereModuleFilter = !empty($aHidden) && is_array($aHidden) ? "AND `" . $this->_sTableHandlers . "`.`id` NOT IN (" . $this->implode_escape($aHidden) . ") " : "";
+		}
+
+		if($sWhereModuleFilter != '')
+			$sWhereClause .= $sWhereModuleFilter;
+
+		//--- Check type
+		switch($aParams['type']) {
+			case BX_BASE_MOD_NTFS_TYPE_OWNER:
+				if(empty($aParams['owner_id']))
+					break;
+
+				$sWhereClause .= $this->prepare("AND `{$this->_sTable}`.`owner_id`=? ", $aParams['owner_id']);
+				break;
+
+			case BX_BASE_MOD_NTFS_TYPE_CONNECTIONS:
+				if(empty($aParams['owner_id']))
+					break;
+
+				bx_import('BxDolConnection');
+				$oConnection = BxDolConnection::getObjectInstance($this->_oConfig->getObject('conn_subscriptions'));
+
+				$aQueryParts = $oConnection->getConnectedContentAsSQLParts($this->_sPrefix . "events", 'owner_id', $aParams['owner_id']);
+				$sJoinClause .= ' ' . $aQueryParts['join'];
+
+				$iUserId = bx_get_logged_profile_id();
+				$sCommonPostPrefix = $this->_oConfig->getPrefix('common_post');
+
+				$sWhereClause .= "AND IF(SUBSTRING(`{$this->_sTable}`.`type`, 1, " . strlen($sCommonPostPrefix) . ") = '" . $sCommonPostPrefix . "', `{$this->_sTable}`.`object_id` <> " . $iUserId . ", 1) ";
+				break;
+
+			case BX_BASE_MOD_NTFS_TYPE_PUBLIC:
+				$sCommonPostPrefix = $this->_oConfig->getPrefix('common_post');
+				$sWhereClause .= "AND SUBSTRING(`{$this->_sTable}`.`type`, 1, " . strlen($sCommonPostPrefix) . ") <> '" . $sCommonPostPrefix . "' ";
+				break;
+		}
+
+		return array($sJoinClause, $sWhereClause);
+    }
+
+    function updateSimilarObject($iId, &$oAlert, $sDuration = 'day')
+    {
+        $sType = $oAlert->sUnit;
+        $sAction = $oAlert->sAction;
+
+        //Check handler
+        $aHandler = $this->_oConfig->getHandlers($sType . '_' . $sAction);
+        if(empty($aHandler) || !is_array($aHandler) || (int)$aHandler['groupable'] != 1)
+            return false;
+
+        //Check content's extra values
+        if(isset($aHandler['group_by']) && !empty($aHandler['group_by']) && (!isset($oAlert->aExtras[$aHandler['group_by']]) || empty($oAlert->aExtras[$aHandler['group_by']])))
+            return false;
+
+        $sWhereClause = "";
+        switch($sDuration) {
+            case 'day':
+                $iDayStart  = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
+                $iDayEnd  = mktime(23, 59, 59, date('m'), date('d'), date('Y'));
+                $sWhereClause .= "AND `date`>" . $iDayStart . " AND `date`<" . $iDayEnd . " ";
+                break;
+        }
+
+        if(isset($aHandler['group_by']))
+            $sWhereClause .= "AND `content` LIKE '%" . $oAlert->aExtras[$aHandler['group_by']] . "%' ";
+
+        $sSql = "UPDATE `{$this->_sTable}`
+            SET
+                `object_id`=CONCAT(`object_id`, '," . $oAlert->iObject . "'),
+                `title`='',
+                `description`='',
+                `date`=UNIX_TIMESTAMP()
+            WHERE
+                `id`<>'" . $iId . "' AND
+                `owner_id`='" . $oAlert->iSender . "' AND
+                `type`='" . $sType . "' AND
+                `action`='" . $sAction . "' " . $sWhereClause;
+        $mixedResult = $this->query($sSql);
+
+        if((int)$mixedResult > 0)
+            $this->deleteEvent(array('id' => $iId));
+
+        return $mixedResult;
+    }
+}
+
+/** @} */

+ 174 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineMenuItemActions.php

@@ -0,0 +1,174 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxTemplMenu');
+
+/**
+ * 'Item' menu.
+ */
+class BxTimelineMenuItemActions extends BxTemplMenu
+{
+    protected $_aEvent;
+    protected $_oModule;
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        parent::__construct($aObject, $oTemplate);
+
+        $this->_oModule = BxDolModule::getInstance('bx_timeline');
+
+        $this->addMarkers(array(
+            'js_object_view' => $this->_oModule->_oConfig->getJsObject('view'),
+        ));
+    }
+
+    public function setEvent($aEvent)
+    {
+        if(empty($aEvent) || !is_array($aEvent))
+            return;
+
+        $this->_aEvent = $aEvent;
+
+        $iCommentsObject = 0;
+        $sCommentsSystem = $sCommentsOnclick = '';
+        if(isset($aEvent['comments']) && is_array($aEvent['comments']) && isset($aEvent['comments']['system'])) {
+            $sCommentsSystem = $aEvent['comments']['system'];
+            $iCommentsObject = $aEvent['comments']['object_id'];
+            $sCommentsOnclick = $this->_oModule->_oConfig->getJsObject('view') . ".commentItem(this, '" . $sCommentsSystem . "', " . $iCommentsObject . ")";
+        }
+
+        $iOwnerId = $this->_oModule->getUserId(); //--- in whose timeline the content will be shared
+        $sShareType = $sReshareType = $aEvent['type'];
+        $sShareAction = $sReshareAction = $aEvent['action'];
+
+        if($this->_oModule->_oConfig->isSystem($sShareType, $sShareAction))
+            $iShareObject = $iReshareObject = $aEvent['object_id'];
+        else {
+            $iShareObject = $iReshareObject = $aEvent['id'];
+
+            $sCommonPrefix = $this->_oModule->_oConfig->getPrefix('common_post');
+            if(str_replace($sCommonPrefix, '', $sShareType) == BX_TIMELINE_PARSE_TYPE_SHARE) {
+                $sReshareType = $aEvent['content']['type'];
+                $sReshareAction = $aEvent['content']['action'];
+                $iReshareObject = $aEvent['content']['object_id'];
+            }
+        }
+
+        $this->addMarkers(array(
+            'content_id' => $aEvent['id'],
+
+            'comment_system' => $sCommentsSystem,
+            'comment_object' => $iCommentsObject,
+            'comment_onclick' => $sCommentsOnclick,
+
+            'share_type' => $sShareType,
+            'share_action' => $sShareAction,
+            'share_object' => $iShareObject,
+            'share_onclick' => $this->_oModule->serviceGetShareJsClick($iOwnerId, $sReshareType, $sReshareAction, $iReshareObject),
+        ));
+    }
+
+    public function isVisible()
+    {
+    	if(!isset($this->_aObject['menu_items']))
+			$this->_aObject['menu_items'] = $this->_oQuery->getMenuItems();
+
+    	$bVisible = false;
+    	foreach ($this->_aObject['menu_items'] as $a) {
+    		if((isset($a['active']) && !$a['active']) || (isset($a['visible_for_levels']) && !$this->_isVisible($a)))
+				continue;
+			
+			$bVisible = true;
+			break;
+    	}
+
+    	return $bVisible;
+    }
+
+    protected function _getMenuItem ($aItem)
+    {
+    	if (isset($aItem['active']) && !$aItem['active'])
+			return false;
+
+		if (isset($aItem['visible_for_levels']) && !$this->_isVisible($aItem))
+        	return false;
+
+    	$sMethod = '_getMenuItem' . str_replace(' ', '', ucwords(str_replace('-', ' ', $aItem['name'])));
+
+    	if(!method_exists($this, $sMethod)) {
+    		$aItem = parent::_getMenuItem($aItem);
+    		if($aItem === false)
+    			return false;
+
+			$sItem = $this->_oModule->_oTemplate->parseHtmlByName('menu_item.html', $aItem);
+    	}
+    	else
+    		$sItem = $this->$sMethod($aItem);
+
+    	if(empty($sItem))
+    		return false;
+
+		return array(
+			'class' => $this->_isSelected($aItem) ? 'bx-menu-tab-active' : '',
+			'item' => $sItem
+		);
+    }
+
+    protected function _getMenuItemItemVote($aItem)
+    {
+        if(!isset($this->_aEvent['votes']) || !is_array($this->_aEvent['votes']) || !isset($this->_aEvent['votes']['system'])) 
+        	return false;
+
+		$sVotesSystem = $this->_aEvent['votes']['system'];
+		$iVotesObject = $this->_aEvent['votes']['object_id'];
+    	return $this->_oModule->getVoteObject($sVotesSystem, $iVotesObject)->getElementInline();
+    }
+
+    /**
+     * Check if menu items is visible.
+     * @param $a menu item array
+     * @return boolean
+     */
+    protected function _isVisible ($a)
+    {
+        if(!parent::_isVisible($a))
+            return false;
+
+        $sCheckFuncName = '';
+        $aCheckFuncParams = array();
+        switch ($a['name']) {
+            case 'item-comment':
+                $sCheckFuncName = 'isAllowedComment';
+                if(!empty($this->_aEvent))
+                    $aCheckFuncParams = array($this->_aEvent);
+                break;
+
+            case 'item-vote':
+                $sCheckFuncName = 'isAllowedVote';
+                if(!empty($this->_aEvent))
+                    $aCheckFuncParams = array($this->_aEvent);
+                break;
+
+            case 'item-share':
+                $sCheckFuncName = 'isAllowedShare';
+                if(!empty($this->_aEvent))
+                    $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;
+    }
+}
+
+/** @} */

+ 89 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineMenuItemManage.php

@@ -0,0 +1,89 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxTemplMenu');
+
+/**
+ * 'Item' menu.
+ */
+class BxTimelineMenuItemManage extends BxTemplMenu
+{
+    protected $_aEvent;
+    protected $_oModule;
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        parent::__construct($aObject, $oTemplate);
+
+        $this->_oModule = BxDolModule::getInstance('bx_timeline');
+
+        $this->addMarkers(array(
+            'js_object_view' => $this->_oModule->_oConfig->getJsObject('view'),
+        ));
+    }
+
+    public function setEvent($aEvent)
+    {
+        if(empty($aEvent) || !is_array($aEvent))
+            return;
+
+        $this->_aEvent = $aEvent;
+
+        $this->addMarkers(array(
+            'content_id' => $aEvent['id'],
+        ));
+    }
+
+    public function isVisible()
+    {
+    	if(!isset($this->_aObject['menu_items']))
+			$this->_aObject['menu_items'] = $this->_oQuery->getMenuItems();
+
+    	$bVisible = false;
+    	foreach ($this->_aObject['menu_items'] as $a) {
+    		if((isset($a['active']) && !$a['active']) || (isset($a['visible_for_levels']) && !$this->_isVisible($a)))
+				continue;
+			
+			$bVisible = true;
+			break;
+    	}
+
+    	return $bVisible;
+    }
+
+    /**
+     * Check if menu items is visible.
+     * @param $a menu item array
+     * @return boolean
+     */
+    protected function _isVisible ($a)
+    {
+        if(!parent::_isVisible($a))
+            return false;
+
+        $sCheckFuncName = '';
+        $aCheckFuncParams = array();
+        switch ($a['name']) {
+            case 'item-delete':
+                $sCheckFuncName = 'isAllowedDelete';
+                if(!empty($this->_aEvent))
+                    $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;
+    }
+}
+
+/** @} */

+ 859 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineModule.php

@@ -0,0 +1,859 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxDolAcl');
+bx_import('BxBaseModNotificationsModule');
+
+define('BX_TIMELINE_TYPE_ITEM', 'view_item');
+define('BX_TIMELINE_TYPE_DEFAULT', BX_BASE_MOD_NTFS_TYPE_OWNER);
+
+define('BX_TIMELINE_FILTER_ALL', 'all');
+define('BX_TIMELINE_FILTER_OWNER', 'owner');
+define('BX_TIMELINE_FILTER_OTHER', 'other');
+
+define('BX_TIMELINE_PARSE_TYPE_POST', 'post');
+define('BX_TIMELINE_PARSE_TYPE_SHARE', 'share');
+define('BX_TIMELINE_PARSE_TYPE_DEFAULT', BX_TIMELINE_PARSE_TYPE_POST);
+
+class BxTimelineModule extends BxBaseModNotificationsModule
+{
+    protected $_sJsPostObject;
+    protected $_sJsViewObject;
+    protected $_aPostElements;
+    protected $_sJsOutlineObject;
+
+    protected $_sDividerTemplate;
+    protected $_sBalloonTemplate;
+    protected $_sCmtPostTemplate;
+    protected $_sCmtViewTemplate;
+    protected $_sCmtTemplate;
+
+    /**
+     * Constructor
+     */
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+    }
+
+    /**
+     * ACTION METHODS
+     */
+    public function actionPost()
+    {
+        $sType = bx_process_input($_POST['type']);
+        $sMethod = 'getForm' . ucfirst($sType);
+        if(!method_exists($this, $sMethod)) {
+            $this->_echoResultJson(array());
+            return;
+        }
+
+        $this->_iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+
+        $mixedAllowed = $this->isAllowedPost(true);
+        if($mixedAllowed !== true) {
+            $this->_echoResultJson(array('msg' => strip_tags($mixedAllowed)));
+            return;
+        }
+
+        $aResult = $this->$sMethod();
+        $this->_echoResultJson($aResult);
+    }
+
+    function actionDelete()
+    {
+        $this->_iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+
+        $iId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        $aEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iId));
+
+        $mixedAllowed = $this->isAllowedDelete($aEvent, true);
+        if($mixedAllowed !== true) {
+            $this->_echoResultJson(array('code' => 1, 'msg' => strip_tags($mixedAllowed)));
+            return;
+        }
+
+        if(!$this->deleteEvent($aEvent))
+        	$this->_echoResultJson(array('code' => 2));
+        else 
+        	$this->_echoResultJson(array('code' => 0, 'id' => $iId));
+    }
+
+    public function actionShare()
+    {
+        $iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+        $aContent = array(
+            'type' => bx_process_input(bx_get('type'), BX_DATA_TEXT),
+            'action' => bx_process_input(bx_get('action'), BX_DATA_TEXT),
+            'object_id' => bx_process_input(bx_get('object_id'), BX_DATA_INT),
+        );
+
+        $aShared = $this->_oDb->getShared($aContent['type'], $aContent['action'], $aContent['object_id']);
+        if(empty($aShared) || !is_array($aShared)) {
+            $this->_echoResultJson(array('code' => 1, 'msg' => _t('_bx_timeline_txt_err_cannot_share')));
+            return;
+        }
+
+        $mixedAllowed = $this->isAllowedShare($aShared, true);
+        if($mixedAllowed !== true) {
+            $this->_echoResultJson(array('code' => 2, 'msg' => strip_tags($mixedAllowed)));
+            return;
+        }
+
+        $iId = $this->_oDb->insertEvent(array(
+            'owner_id' => $iOwnerId,
+            'type' => $this->_oConfig->getPrefix('common_post') . 'share',
+            'action' => '',
+            'object_id' => $this->getUserId(),
+            'object_privacy_view' => $this->_oConfig->getPrivacyViewDefault(),
+            'content' => serialize($aContent),
+            'title' => '',
+            'description' => ''
+        ));
+
+        if(empty($iId)) {
+	        $this->_echoResultJson(array('code' => 3, 'msg' => _t('_bx_timeline_txt_err_cannot_share')));        
+	        return;
+        }
+
+        $this->onShare($iId, $aShared);
+
+        $aShared = $this->_oDb->getShared($aContent['type'], $aContent['action'], $aContent['object_id']);
+		$sCounter = $this->_oTemplate->getShareCounter($aShared);
+
+		$this->_echoResultJson(array(
+			'code' => 0, 
+			'msg' => _t('_bx_timeline_txt_msg_success_share'), 
+			'count' => $aShared['shares'], 
+			'counter' => $sCounter
+		));
+    }
+
+    function actionGetPost()
+    {
+        $this->_oConfig->setJsMode(true);
+        $this->_iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+
+        $iEvent = bx_process_input(bx_get('id'), BX_DATA_INT);
+        $aEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iEvent));
+
+        $this->_echoResultJson(array('item' => $this->_oTemplate->getPost($aEvent, array('type' => 'owner', 'owner_id' => $this->_iOwnerId))));
+    }
+
+    function actionGetPosts()
+    {
+        $this->_oConfig->setJsMode(true);
+
+        $aParams = $this->_prepareParamsGet();
+        list($sItems, $sLoadMore, $sBack) = $this->_oTemplate->getPosts($aParams);
+
+        $this->_echoResultJson(array('items' => $sItems, 'load_more' => $sLoadMore, 'back' => $sBack));
+    }
+
+    public function actionGetPostForm($sType)
+    {
+        $this->_iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+
+        $sMethod = 'getForm' . ucfirst($sType);
+        if(!method_exists($this, $sMethod)) {
+            $this->_echoResultJson(array());
+            return;
+        }
+        $aResult = $this->$sMethod();
+
+        $this->_echoResultJson($aResult);
+    }
+
+    public function actionGetComments()
+    {
+        $this->_iOwnerId = bx_process_input(bx_get('owner_id'), BX_DATA_INT);
+
+        $sSystem = bx_process_input(bx_get('system'), BX_DATA_TEXT);
+        $iId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        $sComments = $this->_oTemplate->getComments($sSystem, $iId);
+
+        $this->_echoResultJson(array('content' => $sComments));
+    }
+
+    public function actionGetManageMenuPopup()
+    {
+        $iItemId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if(!$iItemId)
+            return;
+
+        echo $this->getManageMenuObject($iItemId)->getCode();
+    }
+
+    public function actionAddAttachLink()
+    {
+        $aResult = $this->getFormAttachLink();
+
+        $this->_echoResultJson($aResult);
+    }
+
+    public function actionDeleteAttachLink()
+    {
+        $iLinkId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if(empty($iLinkId)) {
+            $this->_echoResultJson(array());
+            return;
+        }
+
+        $aResult = array();
+        if($this->_oDb->deleteUnusedLinks($this->getUserId(), $iLinkId))
+            $aResult = array('code' => 0);
+        else
+            $aResult = array('code' => 1, 'msg' => _t('_bx_timeline_form_post_input_link_err_delete'));
+
+        $this->_echoResultJson($aResult);
+    }
+
+    public function actionGetAttachLinkForm()
+    {
+        echo $this->_oTemplate->getAttachLinkForm();
+    }
+
+    public function actionGetSharedBy()
+    {
+        $iSharedId = bx_process_input(bx_get('id'), BX_DATA_INT);
+
+        echo $this->_oTemplate->getSharedBy($iSharedId);
+    }
+
+    function actionRss($iOwnerId)
+    {
+        list($sUserName) = $this->getUserInfo($iOwnerId);
+
+        $sRssCaption = _t('_bx_timeline_txt_rss_caption', $sUserName);
+        $sRssLink = $this->_oConfig->getViewUrl($iOwnerId);
+
+        $aParams = $this->_prepareParams('owner', $iOwnerId, 0, $this->_oConfig->getRssLength(), '', array(), 0);
+        $aEvents = $this->_oDb->getEvents($aParams);
+
+        $aRssData = array();
+        foreach($aEvents as $aEvent) {
+            if(empty($aEvent['title'])) continue;
+
+            $aRssData[$aEvent['id']] = array(
+               'UnitID' => $aEvent['id'],
+               'UnitTitle' => $aEvent['title'],
+               'UnitLink' => $this->_oConfig->getItemViewUrl($aEvent),
+               'UnitDesc' => $aEvent['description'],
+               'UnitDateTimeUTS' => $aEvent['date'],
+            );
+        }
+
+        bx_import('BxDolRssFactory');
+        $oRss = new BxDolRssFactory();
+
+        header('Content-Type: application/xml; charset=utf-8');
+        echo $oRss->GenRssByData($aRssData, $sRssCaption, $sRssLink);
+    }
+
+    /**
+     * SERVICE METHODS
+     * 
+     * Get Post block for a separate page.
+     */
+    public function serviceGetBlockPost($sProfileModule = 'bx_persons', $iProfileId = 0)
+    {
+        return $this->serviceGetBlockPostProfile($sProfileModule, $iProfileId);
+    }
+
+    public function serviceGetBlockPostProfile($sProfileModule = 'bx_persons', $iProfileId = 0)
+    {
+        if(empty($iProfileId) && !empty($sProfileModule) && bx_get('id') !== false) {
+            $oProfile = BxDolProfile::getInstanceByContentAndType(bx_process_input(bx_get('id'), BX_DATA_INT), $sProfileModule);
+            if(!empty($oProfile))
+                $iProfileId = $oProfile->id();
+        }
+
+        if(!$iProfileId)
+            return array();
+
+        $this->_iOwnerId = $iProfileId;
+
+        if($this->isAllowedPost() !== true)
+            return array();
+
+        return array(
+            'content' => $this->_oTemplate->getPostBlock($this->_iOwnerId)
+        );
+    }
+
+    /*
+     * Get View block for a separate page. Will return a block with "Empty" message if nothing found.
+     */
+    public function serviceGetBlockView($sProfileModule = 'bx_persons', $iProfileId = 0)
+    {
+        $aBlock = $this->serviceGetBlockViewProfile($sProfileModule, $iProfileId);
+        if(!empty($aBlock))
+            return $aBlock;
+
+        return array('content' => MsgBox(_t('_bx_timeline_txt_msg_no_results')));
+    }
+
+    public function serviceGetBlockViewProfile($sProfileModule = 'bx_persons', $iProfileId = 0, $iStart = -1, $iPerPage = -1, $sFilter = '', $aModules = array(), $iTimeline = -1)
+    {
+        if(empty($iProfileId) && !empty($sProfileModule) && bx_get('id') !== false) {
+            $oProfile = BxDolProfile::getInstanceByContentAndType(bx_process_input(bx_get('id'), BX_DATA_INT), $sProfileModule);
+            if(!empty($oProfile))
+                $iProfileId = $oProfile->id();
+        }
+
+        if (!$iProfileId)
+            return array();
+
+        $sJsObject = $this->_oConfig->getJsObject('view');
+        $aParams = $this->_prepareParams(BX_BASE_MOD_NTFS_TYPE_OWNER, $iProfileId, $iStart, $iPerPage, $sFilter, $aModules, $iTimeline);
+        $aParams['per_page'] = (int)$iPerPage > 0 ? $iPerPage : $this->_oConfig->getPerPage('profile');
+
+        $this->_iOwnerId = $aParams['owner_id'];
+        list($sUserName, $sUserUrl) = $this->getUserInfo($aParams['owner_id']);
+
+        $aMenu = array(
+            array('id' => 'timeline-view-all', 'name' => 'timeline-view-all', 'class' => '', 'link' => 'javascript:void(0)', 'onclick' => 'javascript:' . $sJsObject . '.changeFilter(this)', 'target' => '_self', 'title' => _t('_bx_timeline_menu_item_view_all'), 'active' => 1),
+            array('id' => 'timeline-view-owner', 'name' => 'timeline-view-owner', 'class' => '', 'link' => 'javascript:void(0)', 'onclick' => 'javascript:' . $sJsObject . '.changeFilter(this)', 'target' => '_self', 'title' => _t('_bx_timeline_menu_item_view_owner', $sUserName)),
+            array('id' => 'timeline-view-other', 'name' => 'timeline-view-other', 'class' => '', 'link' => 'javascript:void(0)', 'onclick' => 'javascript:' . $sJsObject . '.changeFilter(this)', 'target' => '_self', 'title' => _t('_bx_timeline_menu_item_view_other')),
+            array('id' => 'timeline-get-rss', 'name' => 'timeline-get-rss', 'class' => '', 'link' => BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'rss/' . $iProfileId . '/', 'target' => '_blank', 'title' => _t('_bx_timeline_menu_item_get_rss')),
+        );
+
+        bx_import('BxTemplMenuInteractive');
+        $oMenu = new BxTemplMenuInteractive(array('template' => 'menu_interactive_vertical.html', 'menu_id'=> 'timeline-view-all', 'menu_items' => $aMenu));
+        $oMenu->setSelected('', 'timeline-view-all');
+
+        $sContent = $this->_oTemplate->getViewBlock($aParams);
+        return array('content' => $sContent, 'menu' => $oMenu);
+    }
+
+    public function serviceGetBlockViewAccount($iProfileId = 0, $iStart = -1, $iPerPage = -1, $iTimeline = -1, $sFilter = '', $aModules = array())
+    {
+        $aParams = $this->_prepareParams(BX_BASE_MOD_NTFS_TYPE_CONNECTIONS, $iProfileId, $iStart, $iPerPage, $sFilter, $aModules, $iTimeline);
+        $aParams['per_page'] = (int)$iPerPage > 0 ? $iPerPage : $this->_oConfig->getPerPage('account');
+
+        $this->_iOwnerId = $aParams['owner_id'];
+
+        $sContent = $this->_oTemplate->getViewBlock($aParams);
+        return array('content' => $sContent);
+    }
+
+	public function serviceGetBlockViewHome($iProfileId = 0, $iStart = -1, $iPerPage = -1, $iTimeline = -1, $sFilter = '', $aModules = array())
+    {
+        $aParams = $this->_prepareParams(BX_BASE_MOD_NTFS_TYPE_PUBLIC, $iProfileId, $iStart, $iPerPage, $sFilter, $aModules, $iTimeline);
+        $aParams['per_page'] = (int)$iPerPage > 0 ? $iPerPage : $this->_oConfig->getPerPage('home');
+
+        $this->_iOwnerId = $aParams['owner_id'];
+
+        $sContent = $this->_oTemplate->getViewBlock($aParams);
+        return array('content' => $sContent);
+    }
+
+    public function serviceGetBlockItem()
+    {
+        $iItemId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if(!$iItemId)
+            return array();
+
+        return array('content' => $this->_oTemplate->getItemBlock($iItemId));
+    }
+
+    public function serviceGetShareElementBlock($iOwnerId, $sType, $sAction, $iObjectId, $aParams = array())
+    {
+    	if(!$this->isEnabled())
+    		return '';
+
+        $aParams = array_merge($this->_oConfig->getShareDefaults(), $aParams);
+        return $this->_oTemplate->getShareElement($iOwnerId, $sType, $sAction, $iObjectId, $aParams);
+    }
+
+    public function serviceGetShareCounter($sType, $sAction, $iObjectId)
+    {
+    	if(!$this->isEnabled())
+    		return '';
+
+		$aShared = $this->_oDb->getShared($sType, $sAction, $iObjectId);
+
+        return $this->_oTemplate->getShareCounter($aShared);
+    }
+
+    public function serviceGetShareJsScript()
+    {
+    	if(!$this->isEnabled())
+    		return '';
+
+        return $this->_oTemplate->getShareJsScript();
+    }
+
+    public function serviceGetShareJsClick($iOwnerId, $sType, $sAction, $iObjectId)
+    {
+    	if(!$this->isEnabled())
+    		return '';
+
+        return $this->_oTemplate->getShareJsClick($iOwnerId, $sType, $sAction, $iObjectId);
+    }
+
+    public function serviceGetMenuItemAddonComment($sSystem, $iObjectId)
+    {
+        if(empty($sSystem) || empty($iObjectId))
+            return '';
+
+        $oCmts = $this->getCmtsObject($sSystem, $iObjectId);
+        if($oCmts === false)
+            return '';
+
+        $iCounter = (int)$oCmts->getCommentsCount();
+        return  $this->_oTemplate->parseHtmlByName('bx_a.html', array(
+            'href' => 'javascript:void(0)',
+            'title' => _t('_bx_timeline_menu_item_title_item_comment'),
+            'bx_repeat:attrs' => array(
+                array('key' => 'onclick', 'value' => "javascript:" . $this->_oConfig->getJsObject('view') . ".commentItem(this, '" . $sSystem . "', " . $iObjectId . ")")
+            ),
+            'content' => $iCounter > 0 ? $iCounter : ''
+        ));
+    }
+
+    public function serviceGetMenuItemAddonShare($sType, $sAction, $iObjectId)
+    {
+        if(empty($sType) || empty($iObjectId))
+            return '';
+
+        return $this->serviceGetShareCounter($sType, $sAction, $iObjectId);
+    }
+
+    public function serviceGetSettingsCheckerHelper()
+    {
+        bx_import('FormCheckerHelper', $this->_aModule);
+        return 'BxTimelineFormCheckerHelper';
+    }
+
+    /*
+     * COMMON METHODS
+     */
+    public function deleteEvent($aEvent)
+    {
+    	if(empty($aEvent) || !is_array($aEvent) || !$this->_oDb->deleteEvent(array('id' => (int)$aEvent['id'])))
+            return false;
+
+        $this->onDelete($aEvent);
+        return true;
+    }
+
+    public function getFormAttachLink()
+    {
+        $iUserId = $this->getUserId();
+
+        bx_import('BxDolForm');
+        $oForm = BxDolForm::getObjectInstance('mod_tml_attach_link', 'mod_tml_attach_link_add');
+        $oForm->aFormAttrs['action'] = BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'add_attach_link/';
+        $oForm->aInputs['url']['checker']['params']['preg'] = $this->_oConfig->getPregPattern('url');
+
+        $oForm->initChecker();
+        if($oForm->isSubmittedAndValid()) {
+            $sLink = $oForm->getCleanValue('url');
+            $sLinkContent = bx_file_get_contents($sLink);
+
+            $aMatch = array();
+            preg_match($this->_oConfig->getPregPattern('meta_title'), $sLinkContent, $aMatch);
+            $sLinkTitle = $aMatch ? $aMatch[1] : '';
+
+            preg_match($this->_oConfig->getPregPattern('meta_description'), $sLinkContent, $aMatch);
+            $sLinkDescription = $aMatch ? $aMatch[1] : '';
+
+            $iId = (int)$oForm->insert(array('profile_id' => $iUserId, 'title' => $sLinkTitle, 'text' => $sLinkDescription, 'added' => time()));
+            if(!empty($iId))
+                return array('item' => $this->_oTemplate->getAttachLinkItem($iUserId, $iId));
+
+            return array('msg' => _t('_adm_nav_err_menus_create'));
+        }
+
+        return array('form' => $oForm->getCode(), 'form_id' => $oForm->id);
+    }
+
+    public function getFormPost()
+    {
+        $iUserId = $this->getUserId();
+
+        bx_import('BxDolForm');
+        $oForm = BxDolForm::getObjectInstance('mod_tml_post', 'mod_tml_post_add');
+        $oForm->aFormAttrs['action'] = BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'post/';
+        $oForm->aInputs['owner_id']['value'] = $this->_iOwnerId;
+
+        if(isset($oForm->aInputs['link']))
+            $oForm->aInputs['link']['content'] = $this->_oTemplate->getAttachLinkField($iUserId);
+
+        if(isset($oForm->aInputs['photo'])) {
+            $aFormNested = array(
+                'params' =>array(
+                    'nested_form_template' => 'uploader_nfw.html'
+                ),
+                'inputs' => array(),
+            );
+
+            bx_import('BxDolFormNested');
+            $oFormNested = new BxDolFormNested('photo', $aFormNested, 'do_submit', $this->_oTemplate);
+
+            $oForm->aInputs['photo']['storage_object'] = $this->_oConfig->getObject('storage');
+            $oForm->aInputs['photo']['images_transcoder'] = $this->_oConfig->getObject('transcoder_preview');
+            $oForm->aInputs['photo']['uploaders'] = $this->_oConfig->getUploaders('image');
+            $oForm->aInputs['photo']['upload_buttons_titles'] = array('Simple' => 'camera');
+            $oForm->aInputs['photo']['multiple'] = true;
+            $oForm->aInputs['photo']['ghost_template'] = $oFormNested;
+        }
+
+        $oForm->initChecker();
+        if($oForm->isSubmittedAndValid()) {
+            list($sUserName) = $this->getUserInfo($iUserId);
+
+            $sType = $oForm->getCleanValue('type');
+            $sType = $this->_oConfig->getPrefix('common_post') . $sType;
+            BxDolForm::setSubmittedValue('type', $sType, $oForm->aFormAttrs['method']);
+
+            $aContent = array();
+
+            //--- Process Text ---//
+            $sText = $oForm->getCleanValue('text');
+            unset($oForm->aInputs['text']);
+
+            $aContent['text'] = $this->_prepareTextForSave($sText);
+
+            //--- Process Link ---//
+            $aLinkIds = $oForm->getCleanValue('link');
+            unset($oForm->aInputs['link']);
+
+            //--- Process Photos ---//
+            $aPhotoIds = $oForm->getCleanValue('photo');
+            unset($oForm->aInputs['photo']);
+
+            $sTitle = _t('_bx_timeline_txt_user_added_sample', $sUserName, _t('_bx_timeline_txt_sample'));
+            $sDescription = !empty($aContent['text']) ? $aContent['text'] : '';
+
+            $iId = $oForm->insert(array(
+                'object_id' => $iUserId,
+                'object_privacy_view' => $this->_oConfig->getPrivacyViewDefault(),
+                'content' => serialize($aContent),
+                'title' => $sTitle,
+                'description' => $sDescription,
+                'date' => time()
+            ));
+
+            if(!empty($iId)) {
+                if(!empty($aLinkIds) && is_array($aLinkIds))
+                    foreach($aLinkIds as $iLinkId)
+                        $this->_oDb->saveLink($iId, $iLinkId);
+
+                if(!empty($aPhotoIds) && is_array($aPhotoIds)) {
+                    bx_import('BxDolStorage');
+                    $oStorage = BxDolStorage::getObjectInstance($this->_oConfig->getObject('storage'));
+
+                    foreach($aPhotoIds as $iPhotoId)
+                        if($this->_oDb->savePhoto($iId, $iPhotoId))
+                            $oStorage->afterUploadCleanup($iPhotoId, $iUserId);
+                }
+
+                $this->onPost($iId);
+
+                return array('id' => $iId);
+            }
+
+            return array('msg' => _t('_bx_timeline_txt_err_cannot_perform_action'));
+        }
+
+        return array('form' => $oForm->getCode(), 'form_id' => $oForm->id);
+    }
+
+    public function getCmtsObject($sSystem, $iId)
+    {
+        if(empty($sSystem) || (int)$iId == 0)
+            return false;
+
+        bx_import('BxDolCmts');
+        $oCmts = BxDolCmts::getObjectInstance($sSystem, $iId);
+        if(!$oCmts->isEnabled())
+            return false;
+
+        return $oCmts;
+    }
+
+    public function getVoteObject($sSystem, $iId)
+    {
+        if(empty($sSystem) || (int)$iId == 0)
+            return false;
+
+        bx_import('BxDolVote');
+        $oVote = BxDolVote::getObjectInstance($sSystem, $iId);
+        if(!$oVote->isEnabled())
+            return false;
+
+        return $oVote;
+    }
+
+    public function getManageMenuObject($mixedEvent)
+    {
+    	if(!is_array($mixedEvent))
+    		$mixedEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => (int)$mixedEvent));
+
+        bx_import('BxDolMenu');
+        $oMenu = BxDolMenu::getObjectInstance($this->_oConfig->getObject('menu_item_manage'));
+        $oMenu->setEvent($mixedEvent);
+        return $oMenu;
+    }
+
+    //--- Check permissions methods ---//
+    public function isAllowedPost($bPerform = false)
+    {
+        if(isAdmin())
+            return true;
+
+        $iUserId = $this->getUserId();
+        if($this->_iOwnerId == $this->getUserId())
+            return true;
+
+        $aCheckResult = checkActionModule($iUserId, 'post', $this->getName(), $bPerform);
+        return $aCheckResult[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED ? $aCheckResult[CHECK_ACTION_MESSAGE] : true;
+    }
+
+    public function isAllowedDelete($aEvent, $bPerform = false)
+    {
+        if(isAdmin())
+            return true;
+
+        $iUserId = (int)$this->getUserId();
+        if((int)$aEvent['owner_id'] == $iUserId && $this->_oConfig->isAllowDelete())
+           return true;
+
+        $aCheckResult = checkActionModule($iUserId, 'delete', $this->getName(), $bPerform);
+        return $aCheckResult[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED ? $aCheckResult[CHECK_ACTION_MESSAGE] : true;
+    }
+
+    public function isAllowedComment($aEvent, $bPerform = false)
+    {
+        $mixedComments = $this->getCommentsData($aEvent['comments']);
+        if($mixedComments === false)
+            return false;
+
+        list($sSystem, $iObjectId) = $mixedComments;
+        $oCmts = $this->getCmtsObject($sSystem, $iObjectId);
+        $oCmts->addCssJs();
+
+        $iUserId = (int)$this->getUserId();
+        if($iUserId == 0)
+            return false;
+
+        if(isAdmin())
+            return true;
+
+        return $oCmts->isPostReplyAllowed($bPerform);
+    }
+
+    public function isAllowedVote($aEvent, $bPerform = false)
+    {
+        $mixedVotes = $this->getVotesData($aEvent['votes']);
+        if($mixedVotes === false)
+            return false;
+
+        list($sSystem, $iObjectId) = $mixedVotes;
+        $oVote = $this->getVoteObject($sSystem, $iObjectId);
+        $oVote->addCssJs();
+
+        $iUserId = (int)$this->getUserId();
+        if($iUserId == 0)
+            return false;
+
+        if(isAdmin())
+            return true;
+
+        return $oVote->isAllowedVote($bPerform);
+    }
+
+    public function isAllowedShare($aEvent, $bPerform = false)
+    {
+        if(isAdmin())
+            return true;
+
+        $iUserId = (int)$this->getUserId();
+        if($iUserId == 0)
+            return false;
+
+        $aCheckResult = checkActionModule($iUserId, 'share', $this->getName(), $bPerform);
+        return $aCheckResult[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED ? $aCheckResult[CHECK_ACTION_MESSAGE] : true;
+    }
+
+    public function onPost($iId)
+    {
+        $aEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iId));
+
+        if($this->_oConfig->isSystem($aEvent['type'], $aEvent['action'])) {
+            $sPostType = 'system';
+            $iSenderId = $aEvent['owner_id'];
+        } else {
+            $sPostType = 'common';
+            $iSenderId = $aEvent['object_id'];
+        }
+
+        //--- Event -> Post for Alerts Engine ---//
+        bx_import('BxDolAlerts');
+        $oAlert = new BxDolAlerts($this->_oConfig->getObject('alert'), 'post_' . $sPostType, $iId, $iSenderId);
+        $oAlert->alert();
+        //--- Event -> Post for Alerts Engine ---//
+    }
+
+    public function onShare($iId, $aShared = array())
+    {
+        $aEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iId));
+
+        if(empty($aShared)) {
+            $aContent = unserialize($aEvent['content']);
+
+            $aShared = $this->_oDb->getShared($aContent['type'], $aContent['action'], $aContent['object_id']);
+            if(empty($aShared) || !is_array($aShared))
+                return;
+        }
+
+        $iUserId = $this->getUserId();
+        $this->_oDb->insertShareTrack($aEvent['id'], $iUserId, $this->getUserIp(), $aShared['id']);
+        $this->_oDb->updateShareCounter($aShared['id'], $aShared['shares']);
+
+        //--- Timeline -> Update for Alerts Engine ---//
+        bx_import('BxDolAlerts');
+        $oAlert = new BxDolAlerts($this->_oConfig->getObject('alert'), 'share', $aShared['id'], $iUserId);
+        $oAlert->alert();
+        //--- Timeline -> Update for Alerts Engine ---//
+    }
+
+    public function onDelete($aEvent)
+    {
+    	$sCommonPostPrefix = $this->_oConfig->getPrefix('common_post');
+
+    	//--- Delete attached photos and links when common event was deleted.
+    	if($aEvent['type'] == $sCommonPostPrefix . BX_TIMELINE_PARSE_TYPE_POST) {
+	        $aPhotos = $this->_oDb->getPhotos($aEvent['id']);
+	        if(!empty($aPhotos) && is_array($aPhotos)) {
+	            bx_import('BxDolStorage');
+	            $oStorage = BxDolStorage::getObjectInstance($this->_oConfig->getObject('storage'));
+	
+	            foreach($aPhotos as $iPhotoId)
+	                $oStorage->deleteFile($iPhotoId);
+	
+	            $this->_oDb->deletePhotos($aEvent['id']);
+	        }
+	
+	        $this->_oDb->deleteLinks($aEvent['id']);
+    	}
+
+    	//--- Update parent event when share event was deleted.
+        if($aEvent['type'] == $sCommonPostPrefix . BX_TIMELINE_PARSE_TYPE_SHARE) {
+            $this->_oDb->deleteShareTrack($aEvent['id']);
+
+            $aContent = unserialize($aEvent['content']);
+            $aShared = $this->_oDb->getShared($aContent['type'], $aContent['action'], $aContent['object_id']);
+            if(!empty($aShared) && is_array($aShared))
+                $this->_oDb->updateShareCounter($aShared['id'], $aShared['shares'], -1);
+        }
+
+        //--- Find and delete share events when parent event was deleted.
+        $bSystem = $this->_oConfig->isSystem($aEvent['type'], $aEvent['action']);
+	    $aShareEvents = $this->_oDb->getEvents(array('browse' => 'shared_by_descriptor', 'type' => $aEvent['type']));
+		foreach($aShareEvents as $aShareEvent) {
+			$aContent = unserialize($aShareEvent['content']);
+			if(isset($aContent['type']) && $aContent['type'] == $aEvent['type'] && isset($aContent['object_id']) && (($bSystem && (int)$aContent['object_id'] == (int)$aEvent['object_id']) || (!$bSystem  && (int)$aContent['object_id'] == (int)$aEvent['id'])))
+				$this->_oDb->deleteEvent(array('id' => (int)$aShareEvent['id']));
+		}
+
+        //--- Event -> Delete for Alerts Engine ---//
+        bx_import('BxDolAlerts');
+        $oAlert = new BxDolAlerts($this->_oConfig->getObject('alert'), 'delete', $aEvent['id'], $this->getUserId());
+        $oAlert->alert();
+        //--- Event -> Delete for Alerts Engine ---//
+    }
+
+    public function getVotesData(&$aVotes)
+    {
+        if(empty($aVotes) || !is_array($aVotes))
+            return false;
+
+        $sSystem = isset($aVotes['system']) ? $aVotes['system'] : '';
+        $iObjectId = isset($aVotes['object_id']) ? (int)$aVotes['object_id'] : 0;
+        $iCount = isset($aVotes['count']) ? (int)$aVotes['count'] : 0;
+        if($sSystem == '' || $iObjectId == 0)
+            return false;
+
+        return array($sSystem, $iObjectId, $iCount);
+    }
+
+    public function getCommentsData(&$aComments)
+    {
+        if(empty($aComments) || !is_array($aComments))
+            return false;
+
+        $sSystem = isset($aComments['system']) ? $aComments['system'] : '';
+        $iObjectId = isset($aComments['object_id']) ? (int)$aComments['object_id'] : 0;
+        $iCount = isset($aComments['count']) ? (int)$aComments['count'] : 0;
+        if($sSystem == '' || $iObjectId == 0 || ($iCount == 0 && !isLogged()))
+            return false;
+
+        return array($sSystem, $iObjectId, $iCount);
+    }
+
+    protected function _prepareParams($sType, $iOwnerId, $iStart, $iPerPage, $sFilter, $aModules, $iTimeline)
+    {
+        $aParams = array();
+        $aParams['browse'] = 'list';
+        $aParams['type'] = !empty($sType) ? $sType : BX_TIMELINE_TYPE_DEFAULT;
+        $aParams['owner_id'] = (int)$iOwnerId != 0 ? $iOwnerId : $this->getUserId();
+        $aParams['start'] = (int)$iStart > 0 ? $iStart : 0;
+        $aParams['per_page'] = (int)$iPerPage > 0 ? $iPerPage : $this->_oConfig->getPerPage();
+        $aParams['filter'] = !empty($sFilter) ? $sFilter : BX_TIMELINE_FILTER_ALL;
+        $aParams['modules'] = is_array($aModules) && !empty($aModules) ? $aModules : array();
+        $aParams['timeline'] = (int)$iTimeline > 0 ? $iTimeline : 0;
+        $aParams['active'] = 1;
+        $aParams['hidden'] = 0;
+
+        return $aParams;
+    }
+
+    protected function _prepareParamsGet()
+    {
+        $aParams = array();
+        $aParams['browse'] = 'list';
+
+        $sType = bx_get('type');
+        $aParams['type'] = $sType !== false ? bx_process_input($sType, BX_DATA_TEXT) : BX_TIMELINE_TYPE_DEFAULT;
+
+        $aParams['owner_id'] = $sType !== false ? bx_process_input(bx_get('owner_id'), BX_DATA_INT) : $this->getUserId();
+
+        $iStart = bx_get('start');
+        $aParams['start'] = $iStart !== false ? bx_process_input($iStart, BX_DATA_INT) : 0;
+
+        $iPerPage = bx_get('per_page');
+        $aParams['per_page'] = $iPerPage !== false ? bx_process_input($iPerPage, BX_DATA_INT) : $this->_oConfig->getPerPage();
+
+        $sFilter = bx_get('filter');
+        $aParams['filter'] = $sFilter !== false ? bx_process_input($sFilter, BX_DATA_TEXT) : BX_TIMELINE_FILTER_ALL;
+
+        $aModules = bx_get('modules');
+        $aParams['modules'] = $aModules !== false ? bx_process_input($aModules, BX_DATA_TEXT) : array();
+
+        $iTimeline = bx_get('timeline');
+        $aParams['timeline'] = $iTimeline !== false ? bx_process_input($iTimeline, BX_DATA_INT) : 0;
+
+        $aParams['active'] = 1;
+        $aParams['hidden'] = 0;
+
+        return $aParams;
+    }
+
+    protected function _prepareTextForSave($s)
+    {
+        return bx_process_input($s, BX_DATA_TEXT_MULTILINE);
+    }
+}
+
+/** @} */

+ 880 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/classes/BxTimelineTemplate.php

@@ -0,0 +1,880 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+bx_import('BxBaseModNotificationsTemplate');
+
+class BxTimelineTemplate extends BxBaseModNotificationsTemplate
+{
+    function __construct(&$oConfig, &$oDb)
+    {
+        parent::__construct($oConfig, $oDb);
+    }
+
+    public function getCssJs()
+    {
+    	parent::getCssJs();
+
+        $this->addCss(array(
+            'jquery-ui/jquery-ui.css',
+            'post.css',
+            'share.css',
+        ));
+        $this->addJs(array(
+            'jquery-ui/jquery-ui.custom.min.js',
+            'jquery.form.min.js',
+            'jquery.ba-resize.min.js',
+            'masonry.pkgd.min.js',
+            'post.js',
+            'share.js',
+        ));
+    }
+
+    public function getPostBlock($iOwnerId)
+    {
+        $aForm = $this->getModule()->getFormPost();
+
+        return $this->parseHtmlByName('block_post.html', array (
+            'style_prefix' => $this->_oConfig->getPrefix('style'),
+            'js_object' => $this->_oConfig->getJsObject('post'),
+            'js_content' => $this->getJsCode('post', array(
+                'owner_id' => $iOwnerId
+            )),
+            'form' => $aForm['form']
+        ));
+    }
+
+    public function getViewBlock($aParams)
+    {
+        list($sContent, $sLoadMore, $sBack) = $this->getPosts($aParams);
+
+        return $this->parseHtmlByName('block_view.html', array(
+            'style_prefix' => $this->_oConfig->getPrefix('style'),
+        	'html_id' => $this->_oConfig->getHtmlIds('view', 'main'),
+            'back' => $sBack,
+            'content' => $sContent,
+            'load_more' =>  $sLoadMore,
+        	'view_image_popup' => $this->_getImagePopup(),
+            'js_content' => $this->getJsCode('view', array(
+                'type' => $aParams['type'],
+                'owner_id' => $aParams['owner_id'],
+                'start' => $aParams['start'],
+                'per_page' => $aParams['per_page'],
+                'filter' => $aParams['filter'],
+                'modules' => $aParams['modules'],
+                'timeline' => $aParams['timeline'],
+            )) . $this->getJsCode('share')
+        ));
+    }
+
+    public function getItemBlock($iId)
+    {
+        $aEvent = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $iId));
+        if(empty($aEvent))
+            return '';
+
+        $sContent = $this->getJsCode('view');
+        $sContent .= $this->getPost($aEvent, array('type' => BX_TIMELINE_TYPE_ITEM));
+        $sContent .= $this->_getImagePopup();
+
+        return $sContent;
+    }
+
+    public function getPost(&$aEvent, $aBrowseParams = array())
+    {
+        $aResult = $this->_oConfig->isSystem($aEvent['type'], $aEvent['action']) ? $this->_getSystemData($aEvent) : $this->_getCommonData($aEvent);
+        if(empty($aResult) || empty($aResult['owner_id']) || empty($aResult['content']))
+            return '';
+
+        list($sUserName) = $this->getModule()->getUserInfo($aResult['owner_id']);
+
+        if(empty($aEvent['title']) || empty($aEvent['description'])) {
+            $sTitle = !empty($aResult['title']) ? $aResult['title'] : '';
+            if($sTitle == '') {
+                $sSample = !empty($aResult['content']['sample']) ? $aResult['content']['sample'] : '_bx_timeline_txt_sample';
+                $sTitle = _t('_bx_timeline_txt_user_added_sample', $sUserName, _t($sSample));
+            }
+
+            $sDescription = !empty($aResult['description']) ? $aResult['description'] : '';
+            if($sDescription == '' && !empty($aResult['content']['text']))
+                $sDescription = $aResult['content']['text'];
+
+            $this->_oDb->updateEvent(array(
+                'title' => bx_process_input(strip_tags($sTitle)),
+                'description' => bx_process_input(strip_tags($sDescription))
+            ), array('id' => $aEvent['id']));
+        }
+
+        $aEvent['object_owner_id'] = $aResult['owner_id'];
+        $aEvent['content'] = $aResult['content'];
+        $aEvent['votes'] = $aResult['votes'];
+        $aEvent['comments'] = $aResult['comments'];
+
+        $sType = !empty($aResult['content_type']) ? $aResult['content_type'] : BX_TIMELINE_PARSE_TYPE_DEFAULT;
+        return $this->_getPost($sType, $aEvent, $aBrowseParams);
+    }
+
+    public function getPosts($aParams)
+    {
+        $iStart = $aParams['start'];
+        $iPerPage = $aParams['per_page'];
+
+        $aParamsDb = $aParams;
+
+        //--- Check for Previous
+        $bPrevious = false;
+        if($iStart - 1 >= 0) {
+            $aParamsDb['start'] -= 1;
+            $aParamsDb['per_page'] += 1;
+            $bPrevious = true;
+        }
+
+        //--- Check for Next
+        $aParamsDb['per_page'] += 1;
+        $aEvents = $this->_oDb->getEvents($aParamsDb);
+
+        //--- Check for Previous
+        if($bPrevious)
+            $aEvent = array_shift($aEvents);
+
+        //--- Check for Next
+        $bNext = false;
+        if(count($aEvents) > $iPerPage) {
+            $aEvent = array_pop($aEvents);
+            $bNext = true;
+        }
+
+        $iEvents = count($aEvents);
+        $sContent = $this->getEmpty($iEvents <= 0);
+
+        foreach($aEvents as $aEvent) {
+            $sEvent = $this->getPost($aEvent, $aParams);
+            if(empty($sEvent))
+                continue;
+
+            $sContent .= $sEvent;
+        }
+
+        $iYearSel = (int)$aParams['timeline'];
+        $iYearMin = $this->_oDb->getMaxDuration($aParams);
+
+        $sBack = $this->getBack($iYearSel);
+        $sLoadMore = $this->getLoadMore($iStart, $iPerPage, $bNext, $iYearSel, $iYearMin, $iEvents > 0);
+        return array($sContent, $sLoadMore, $sBack);
+    }
+
+    public function getEmpty($bVisible)
+    {
+        return $this->parseHtmlByName('empty.html', array(
+            'style_prefix' => $this->_oConfig->getPrefix('style'),
+            'visible' => $bVisible ? 'block' : 'none',
+            'content' => MsgBox(_t('_bx_timeline_txt_msg_no_results'))
+        ));
+    }
+
+    public function getBack($iYearSel)
+    {
+        if($iYearSel == 0)
+            return '';
+
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('view');
+
+        $iYearNow = date('Y', time());
+        return $this->parseHtmlByName('back.html', array(
+            'style_prefix' => $sStylePrefix,
+            'href' => 'javascript:void(0)',
+            'title' => _t('_bx_timeline_txt_jump_to_n_year', $iYearNow),
+            'bx_repeat:attrs' => array(
+                array('key' => 'onclick', 'value' => 'javascript:' . $sJsObject . '.changeTimeline(this, 0)')
+            ),
+            'content' => _t('_bx_timeline_txt_jump_to_recent')
+        ));
+    }
+
+    public function getLoadMore($iStart, $iPerPage, $bEnabled, $iYearSel, $iYearMin, $bVisible = true)
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('view');
+
+        $sYears = '';
+        if(!empty($iYearMin)) {
+            $iYearMax = date('Y', time()) - 1;
+            for($i = $iYearMax; $i >= $iYearMin; $i--)
+                $sYears .= ($i != $iYearSel ? $this->parseHtmlByName('bx_a.html', array(
+                    'href' => 'javascript:void(0)',
+                    'title' => _t('_bx_timeline_txt_jump_to_n_year', $i),
+                    'bx_repeat:attrs' => array(
+                        array('key' => 'onclick', 'value' => 'javascript:' . $sJsObject . '.changeTimeline(this, ' . $i . ')')
+                    ),
+                    'content' => $i
+                )) : $i) . ', ';
+
+            $sYears = substr($sYears, 0, -2);
+        }
+
+        $aTmplVars = array(
+            'style_prefix' => $sStylePrefix,
+            'visible' => $bEnabled && $bVisible ? 'block' : 'none',
+            'bx_if:is_disabled' => array(
+                'condition' => !$bEnabled,
+                'content' => array()
+            ),
+            'bx_if:show_on_click' => array(
+                'condition' => $bEnabled,
+                'content' => array(
+                    'on_click' => 'javascript:' . $sJsObject . '.changePage(this, ' . ($iStart + $iPerPage) . ', ' . $iPerPage . ')'
+                )
+            ),
+            'bx_if:show_jump_to' => array(
+                'condition' => !empty($sYears),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'years' => $sYears
+                )
+            )
+        );
+        return $this->parseHtmlByName('load_more.html', $aTmplVars);
+    }
+
+    public function getComments($sSystem, $iId)
+    {
+        $oModule = $this->getModule();
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+
+        $oCmts = $oModule->getCmtsObject($sSystem, $iId);
+        if($oCmts === false)
+            return '';
+
+        $aComments = $oCmts->getCommentsBlock(0, 0, false);
+        return $this->parseHtmlByName('comments.html', array(
+            'style_prefix' => $sStylePrefix,
+            'id' => $iId,
+            'content' => $aComments['content']
+        ));
+    }
+
+    public function getShareElement($iOwnerId, $sType, $sAction, $iObjectId, $aParams = array())
+    {
+        $aShared = $this->_oDb->getShared($sType, $sAction, $iObjectId);
+        if(empty($aShared) || !is_array($aShared))
+            return '';
+
+        if($this->getModule()->isAllowedShare($aShared) !== true)
+            return '';
+
+        $bShowDoShareAsButtonSmall = isset($aParams['show_do_share_as_button_small']) && $aParams['show_do_share_as_button_small'] == true;
+        $bShowDoShareAsButton = !$bShowDoShareAsButtonSmall && isset($aParams['show_do_share_as_button']) && $aParams['show_do_share_as_button'] == true;
+
+        $bShowDoShareIcon = isset($aParams['show_do_share_icon']) && $aParams['show_do_share_icon'] == true;
+        $bShowDoShareLabel = isset($aParams['show_do_share_label']) && $aParams['show_do_share_label'] == true;
+        $bShowCounter = isset($aParams['show_counter']) && $aParams['show_counter'] === true;
+
+        $sDoShare = '';
+        if($bShowDoShareIcon)
+            $sDoShare .= $this->parseHtmlByName('bx_icon.html', array('name' => 'share'));
+
+        if($bShowDoShareLabel)
+            $sDoShare .= ($sDoShare != '' ? ' ' : '') . _t('_bx_timeline_txt_do_share');
+
+        $sDoShare = $this->parseHtmlByName('bx_a.html', array(
+            'href' => 'javascript:void(0)',
+            'title' => _t('_bx_timeline_txt_do_share'),
+            'bx_repeat:attrs' => array(
+                array('key' => 'class', 'value' => ($bShowDoShareAsButton ? 'bx-btn' : '') . ($bShowDoShareAsButtonSmall ? 'bx-btn bx-btn-small' : '')),
+                array('key' => 'onclick', 'value' => $this->getShareJsClick($iOwnerId, $sType, $sAction, $iObjectId))
+            ),
+            'content' => $sDoShare
+        ));
+
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sStylePrefixShare = $sStylePrefix . '-share-';
+        return $this->parseHtmlByName('share_element_block.html', array(
+            'style_prefix' => $sStylePrefix,
+            'html_id' => $this->_oConfig->getHtmlIds('share', 'main') . $aShared['id'],
+            'class' => ($bShowDoShareAsButton ? $sStylePrefixShare . 'button' : '') . ($bShowDoShareAsButtonSmall ? $sStylePrefixShare . 'button-small' : ''),
+            'count' => $aShared['shares'],
+            'do_share' => $sDoShare,
+            'bx_if:show_counter' => array(
+                'condition' => $bShowCounter,
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+        			'bx_if:show_hidden' => array(
+        				'condition' => (int)$aShared['shares'] == 0,
+        				'content' => array()
+        			),
+                    'counter' => $this->getShareCounter($aShared)
+                )
+            ),
+            'script' => $this->getShareJsScript()
+        ));
+    }
+
+    public function getShareCounter($aEvent)
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('share');
+
+        return $this->parseHtmlByName('share_counter.html', array(
+            'href' => 'javascript:void(0)',
+            'title' => _t('_bx_timeline_txt_shared_by'),
+            'bx_repeat:attrs' => array(
+                array('key' => 'id', 'value' => $this->_oConfig->getHtmlIds('share', 'counter') . $aEvent['id']),
+                array('key' => 'class', 'value' => $sStylePrefix . '-counter'),
+                array('key' => 'onclick', 'value' => 'javascript:' . $sJsObject . '.toggleByPopup(this, ' . $aEvent['id'] . ')')
+            ),
+            'content' => !empty($aEvent['shares']) && (int)$aEvent['shares'] > 0 ? $aEvent['shares'] : ''
+        ));
+    }
+
+    public function getSharedBy($iId)
+    {
+        $aTmplUsers = array();
+        $oModule = $this->getModule();
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+
+        $aUserIds = $this->_oDb->getSharedBy($iId);
+        foreach($aUserIds as $iUserId) {
+            list($sUserName, $sUserUrl, $sUserIcon, $sUserUnit) = $oModule->getUserInfo($iUserId);
+            $aTmplUsers[] = array(
+                'style_prefix' => $sStylePrefix,
+                'user_unit' => $sUserUnit
+            );
+        }
+
+        if(empty($aTmplUsers))
+            $aTmplUsers = MsgBox(_t('_Empty'));
+
+        return $this->parseHtmlByName('share_by_list.html', array(
+            'style_prefix' => $sStylePrefix,
+            'bx_repeat:list' => $aTmplUsers
+        ));
+    }
+
+    public function getShareJsScript()
+    {
+        $this->addCss(array('share.css'));
+        $this->addJs(array('main.js', 'share.js'));
+
+        return $this->getJsCode('share');
+    }
+
+    public function getShareJsClick($iOwnerId, $sType, $sAction, $iObjectId)
+    {
+        $sJsObject = $this->_oConfig->getJsObject('share');
+        $sFormat = "%s.shareItem(this, %d, '%s', '%s', %d);";
+
+        $iOwnerId = !empty($iOwnerId) ? (int)$iOwnerId : $this->getModule()->getUserId(); //--- in whose timeline the content will be shared
+        return sprintf($sFormat, $sJsObject, $iOwnerId, $sType, $sAction, (int)$iObjectId);
+    }
+
+    public function getAttachLinkForm()
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('post');
+
+        $aForm = $this->getModule()->getFormAttachLink();
+
+        return $this->parseHtmlByName('attach_link_form.html', array(
+            'style_prefix' => $sStylePrefix,
+            'js_object' => $sJsObject,
+            'form_id' => $aForm['form_id'],
+            'form' => $aForm['form'],
+        ));
+    }
+
+    public function getAttachLinkField($iUserId)
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+
+        $aLinks = $this->_oDb->getUnusedLinks($iUserId);
+
+        $sLinks = '';
+        foreach($aLinks as $aLink)
+            $sLinks .= $this->getAttachLinkItem($iUserId, $aLink);
+
+        return $this->parsePageByName('attach_link_form_field.html', array(
+            'html_id' => $this->_oConfig->getHtmlIds('post', 'attach_link_form_field'),
+            'style_prefix' => $sStylePrefix,
+            'links' => $sLinks
+        ));
+    }
+
+    public function getAttachLinkItem($iUserId, $mixedLink)
+    {
+        $aLink = is_array($mixedLink) ? $mixedLink : $this->_oDb->getUnusedLinks($iUserId, (int)$mixedLink);
+        if(empty($aLink) || !is_array($aLink))
+            return '';
+
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('post');
+        $sLinkIdPrefix = $this->_oConfig->getHtmlIds('post', 'attach_link_item');
+
+        return $this->parsePageByName('attach_link_item.html', array(
+            'html_id' => $sLinkIdPrefix . $aLink['id'],
+            'style_prefix' => $sStylePrefix,
+            'js_object' => $sJsObject,
+            'id' => $aLink['id'],
+            'url' => $aLink['url'],
+            'title' => $aLink['title'],
+        ));
+    }
+
+    protected function _getPost($sType, $aEvent, $aBrowseParams = array())
+    {
+        $oModule = $this->getModule();
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('view');
+
+        list($sAuthorName, $sAuthorUrl, $sAuthorIcon) = $oModule->getUserInfo($aEvent['object_owner_id']);
+        $bAuthorIcon = !empty($sAuthorIcon);
+
+        $aTmplVarsMenuItemActions = $this->_getTmplVarsMenuItemActions($aEvent, $aBrowseParams);
+
+        $aTmplVarsTimelineOwner = array();
+        if(isset($aBrowseParams['type']) && $aBrowseParams['type'] == BX_BASE_MOD_NTFS_TYPE_CONNECTIONS)
+            $aTmplVarsTimelineOwner = $this->_getTmplVarsTimelineOwner($aEvent);
+
+        $bBrowseItem = isset($aBrowseParams['type']) && $aBrowseParams['type'] == BX_TIMELINE_TYPE_ITEM;
+
+        $aTmplVars = array (
+            'style_prefix' => $sStylePrefix,
+            'js_object' => $sJsObject,
+        	'html_id' => $this->_oConfig->getHtmlIds('view', 'item') . $aEvent['id'],
+            'class' => $bBrowseItem ? 'bx-tl-view-sizer' : 'bx-tl-grid-sizer',
+            'bx_if:show_menu_item_manage' => array(
+                'condition' => $oModule->getManageMenuObject($aEvent)->isVisible(),
+                'content' => array(
+        			'style_prefix' => $sStylePrefix,
+		            'js_object' => $sJsObject,
+		        	'id' => $aEvent['id'],
+        		)
+            ),
+            'bx_if:show_icon' => array(
+                'condition' => $bAuthorIcon,
+                'content' => array(
+                    'author_icon' => $sAuthorIcon
+                )
+            ),
+            'bx_if:show_icon_empty' => array(
+                'condition' => !$bAuthorIcon,
+                'content' => array()
+            ),
+            'item_owner_url' => $sAuthorUrl,
+            'item_owner_name' => $sAuthorName,
+            'bx_if:show_timeline_owner' => array(
+                'condition' => !empty($aTmplVarsTimelineOwner),
+                'content' => $aTmplVarsTimelineOwner
+            ),
+            'item_view_url' => $this->_oConfig->getItemViewUrl($aEvent),
+            'item_date' => bx_time_js($aEvent['date']),
+            'content' => is_string($aEvent['content']) ? $aEvent['content'] : $this->_getContent($sType, $aEvent['content'], $aBrowseParams),
+            'bx_if:show_menu_item_actions' => array(
+                'condition' => !empty($aTmplVarsMenuItemActions),
+                'content' => $aTmplVarsMenuItemActions
+            ),
+            'comments' => $bBrowseItem ? $this->_getComments($aEvent['comments']) : '',
+            'votes' => $this->_getVotes($aEvent['votes'])
+        );
+
+        return $this->parseHtmlByName('item.html', $aTmplVars);
+    }
+
+    protected function _getContent($sType, $aContent, $aBrowseParams = array())
+    {
+        $sMethod = '_getTmplVarsContent' . ucfirst($sType);
+        if(!method_exists($this, $sMethod))
+            return '';
+
+		$aTmplVars = $this->$sMethod($aContent, $aBrowseParams);
+		return $this->parseHtmlByName('type_' . $sType . '.html', $aTmplVars);
+    }
+
+    protected function _getComments($aComments)
+    {
+        $mixedComments = $this->getModule()->getCommentsData($aComments);
+        if($mixedComments === false)
+            return '';
+
+        list($sSystem, $iObjectId, $iCount) = $mixedComments;
+        return $this->getComments($sSystem, $iObjectId);
+    }
+
+    protected function _getVotes($aVotes)
+    {
+        $oModule = $this->getModule();
+
+        $mixedVotes = $oModule->getVotesData($aVotes);
+        if($mixedVotes === false)
+            return '';
+
+        list($sSystem, $iObjectId, $iCount) = $mixedVotes;
+        $oVote = $oModule->getVoteObject($sSystem, $iObjectId);
+        if($oVote === false)
+            return '';
+
+        return $oVote->getJsScript();
+    }
+
+    protected function _getImagePopup()
+    {
+        $sViewImagePopupId = $this->_oConfig->getHtmlIds('view', 'photo_popup');
+        $sViewImagePopupContent = $this->parseHtmlByName('popup_image.html', array(
+    		'image_url' => ''
+    	));
+
+    	bx_import('BxTemplFunctions');
+    	return BxTemplFunctions::getInstance()->transBox($sViewImagePopupId, $sViewImagePopupContent, true);
+    }
+
+    protected function _getTmplVarsMenuItemActions(&$aEvent)
+    {
+        bx_import('BxDolMenu');
+        $oMenu = BxDolMenu::getObjectInstance($this->_oConfig->getObject('menu_item_actions'));
+        $oMenu->setEvent($aEvent);
+
+        $sMenu = $oMenu->getCode();
+        if(empty($sMenu))
+            return array();
+
+        return array(
+            'style_prefix' => $this->_oConfig->getPrefix('style'),
+            'js_object' => $this->_oConfig->getJsObject('view'),
+            'menu_item_actions' => $sMenu
+        );
+    }
+
+    protected function _getTmplVarsTimelineOwner(&$aEvent)
+    {
+        $oModule = $this->getModule();
+
+        $aTmplVarsTimelineOwner = array();
+        if((int)$aEvent['owner_id'] != (int)$aEvent['object_owner_id']) {
+            list($sTimelineAuthorName, $sTimelineAuthorUrl) = $oModule->getUserInfo($aEvent['owner_id']);
+
+            $aTmplVarsTimelineOwner = array(
+                'owner_url' => $sTimelineAuthorUrl,
+                'owner_username' => $sTimelineAuthorName,
+            );
+        }
+
+        return $aTmplVarsTimelineOwner;
+    }
+
+    protected function _getTmplVarsContentPost($aContent, $aBrowseParams = array())
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObject('view');
+
+        //--- Process Text ---//
+        $sUrl = isset($aContent['url']) ? bx_html_attribute($aContent['url']) : '';
+        $sTitle = $sTitleAttr = '';
+        if(isset($aContent['title'])) {
+            $sTitle = bx_process_output($aContent['title']);
+            $sTitleAttr = bx_html_attribute($aContent['title']);
+        }
+
+        if(!empty($sUrl) && !empty($sTitle))
+            $sTitle = $this->parseHtmlByName('bx_a.html', array(
+                'href' => $sUrl,
+                'title' => $sTitleAttr,
+                'bx_repeat:attrs' => array(
+                    array('key' => 'class', 'value' => $sStylePrefix . '-title')
+                ),
+                'content' => $sTitle
+            ));
+
+        $sText = isset($aContent['text']) ? strip_tags($aContent['text'], '<p><br>') : '';
+        $sTextMore = '';
+
+        $iMaxLength = $this->_oConfig->getCharsDisplayMax();
+        if(strlen($sText) > $iMaxLength) {
+            $iLength = strpos($sText, ' ', $iMaxLength);
+
+            $sTextMore = trim(substr($sText, $iLength));
+            $sText = trim(substr($sText, 0, $iLength));
+        }
+
+        $sText = $this->_prepareTextForOutput($sText);
+        $sTextMore = $this->_prepareTextForOutput($sTextMore);
+
+        //--- Process Links ---//
+        $aTmplVarsLinks = array();
+        if(!empty($aContent['links']))
+            foreach($aContent['links'] as $aLink)
+                $aTmplVarsLinks[] = array(
+                    'style_prefix' => $sStylePrefix,
+                    'url' => $aLink['url'],
+                    'title' => $aLink['title'],
+                    'bx_if:show_text' => array(
+                        'condition' => !empty($aLink['text']),
+                        'content' => array(
+                            'style_prefix' => $sStylePrefix,
+                            'text' => $aLink['text']
+                        )
+                    )
+                );
+
+        //--- Process Photos ---//
+        $aTmplVarsImages = array();
+        if(!empty($aContent['images'])) {
+            $bBrowseItem = isset($aBrowseParams['type']) && $aBrowseParams['type'] == BX_TIMELINE_TYPE_ITEM;
+
+            foreach($aContent['images'] as $aImage) {
+                $sImage = '';
+                if(!empty($aImage['src']))
+                    $sImage = $this->parseHtmlByName('bx_img.html', array(
+                        'src' => $bBrowseItem && !empty($aImage['src_orig']) ? $aImage['src_orig'] : $aImage['src'],
+                        'bx_repeat:attrs' => array(
+                            array('key' => 'class', 'value' => $sStylePrefix . '-item-image')
+                        )
+                    ));
+
+                if(!empty($sImage) && (isset($aImage['url']) || isset($aImage['onclick']))) {
+                    $aAttrs = array();
+                    if(isset($aImage['onclick']))
+                        $aAttrs[] = array('key' => 'onclick', 'value' => $aImage['onclick']);
+
+                    $sImage = $this->parseHtmlByName('bx_a.html', array(
+                        'href' => isset($aImage['url']) ? $aImage['url'] : 'javascript:void(0)',
+                        'title' => '',
+                        'bx_repeat:attrs' => $aAttrs,
+                        'content' => $sImage
+                    ));
+                }
+
+                $aTmplVarsImages[] = array(
+                    'style_prefix' => $sStylePrefix,
+                    'image' => $sImage
+                );
+            }
+        }
+
+        return array(
+            'style_prefix' => $sStylePrefix,
+            'bx_if:show_title' => array(
+                'condition' => !empty($sTitle),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'title' => $sTitle,
+                )
+            ),
+            'bx_if:show_content' => array(
+                'condition' => !empty($sText),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'item_content' => $sText,
+                    'bx_if:show_more' => array(
+                        'condition' => !empty($sTextMore),
+                        'content' => array(
+                            'style_prefix' => $sStylePrefix,
+                            'js_object' => $sJsObject,
+                            'item_content_more' => $sTextMore
+                        )
+                    ),
+                )
+            ),
+            'bx_if:show_links' => array(
+                'condition' => !empty($aTmplVarsLinks),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'bx_repeat:links' => $aTmplVarsLinks
+                )
+            ),
+            'bx_if:show_images' => array(
+                'condition' => !empty($aTmplVarsImages),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'bx_repeat:images' => $aTmplVarsImages
+                )
+            )
+        );
+    }
+
+    protected function _getTmplVarsContentShare($aContent, $aBrowseParams = array())
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+
+        $sOwnerLink = $this->parseHtmlByName('bx_a.html', array(
+            'href' => $aContent['owner_url'],
+            'title' => '',
+            'bx_repeat:attrs' => array(),
+            'content' => $aContent['owner_name']
+        ));
+
+        $sSample = _t($aContent['sample']);
+        $sSampleLink = empty($aContent['url']) ? $sSample : $this->parseHtmlByName('bx_a.html', array(
+            'href' => $aContent['url'],
+            'title' => '',
+            'bx_repeat:attrs' => array(),
+            'content' => $sSample
+        ));
+
+        $sTitle = _t('_bx_timeline_txt_shared', $sOwnerLink, $sSampleLink);
+        $sText = $this->_getContent($aContent['parse_type'], $aContent);
+
+        return array(
+            'bx_if:show_title' => array(
+                'condition' => !empty($sTitle),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'title' => $sTitle,
+                )
+            ),
+            'bx_if:show_content' => array(
+                'condition' => !empty($sText),
+                'content' => array(
+                    'style_prefix' => $sStylePrefix,
+                    'content' => $sText,
+                )
+            )
+        );
+    }
+
+    protected function _getSystemData(&$aEvent)
+    {
+        $sHandler = $aEvent['type'] . '_' . $aEvent['action'];
+        if(!$this->_oConfig->isHandler($sHandler))
+            return '';
+
+        $aHandler = $this->_oConfig->getHandlers($sHandler);
+        if(!empty($aHandler['module_name']) && !empty($aHandler['module_class']) && !empty($aHandler['module_method'])) {
+        	$aEvent['js_mode'] = $this->_oConfig->getJsMode();
+            return BxDolService::call($aHandler['module_name'], $aHandler['module_method'], array($aEvent), $aHandler['module_class']);
+        }
+
+		$sMethod = 'display' . bx_gen_method_name($aHandler['alert_unit'] . '_' . $aHandler['alert_action']);
+		if(!method_exists($this, $sMethod))
+        	return '';
+
+		return $this->$sMethod($aEvent);
+    }
+
+    protected function _getCommonData(&$aEvent)
+    {
+        $oModule = $this->getModule();
+        $sJsObject = $this->_oConfig->getJsObject('view');
+        $sPrefix = $this->_oConfig->getPrefix('common_post');
+        $sType = str_replace($sPrefix, '', $aEvent['type']);
+
+        $aResult = array(
+            'owner_id' => $aEvent['object_id'],
+            'content_type' => $sType,
+            'content' => array(
+                'sample' => '_bx_timeline_txt_sample',
+                'url' => $this->_oConfig->getItemViewUrl($aEvent)
+            ), //a string to display or array to parse default template before displaying.
+            'votes' => '',
+            'comments' => '',
+            'title' => '', //may be empty.
+            'description' => '' //may be empty.
+        );
+
+        switch($sType) {
+            case BX_TIMELINE_PARSE_TYPE_POST:
+                if(!empty($aEvent['content']))
+                    $aResult['content'] = array_merge($aResult['content'], unserialize($aEvent['content']));
+
+                $aLinks = $this->_oDb->getLinks($aEvent['id']);
+                if(!empty($aLinks) && is_array($aLinks))
+                    foreach($aLinks as $aLink)
+                        $aResult['content']['links'][] = array(
+                            'url' => $aLink['url'],
+                            'title' => $aLink['title'],
+                            'text' => $aLink['text']
+                        );
+
+                $aPhotos = $this->_oDb->getPhotos($aEvent['id']);
+                if(!empty($aPhotos) && is_array($aPhotos)) {
+                    bx_import('BxDolStorage');
+                    $oStorage = BxDolStorage::getObjectInstance($this->_oConfig->getObject('storage'));
+
+                    bx_import('BxDolImageTranscoder');
+                    $oTranscoder = BxDolImageTranscoder::getObjectInstance($this->_oConfig->getObject('transcoder_view'));
+
+                    foreach($aPhotos as $iPhotoId) {
+                        $iPhotoIndex = array_search($iPhotoId, $aPhotos);
+                        $sPhotoSrcOrig = $oStorage->getFileUrlById($iPhotoId);
+
+                        $aResult['content']['images'][] = array(
+                            'src' => $oTranscoder->getImageUrl($iPhotoId),
+                            'src_orig' => $sPhotoSrcOrig,
+                            'title' => '',
+                            'onclick' => $sJsObject . '.showPhoto(this, \'' . $sPhotoSrcOrig . '\')'
+                        );
+                    }
+                }
+                break;
+
+            case BX_TIMELINE_PARSE_TYPE_SHARE:
+                if(empty($aEvent['content']))
+                    return array();
+
+                $aContent = unserialize($aEvent['content']);
+
+                if(!$this->_oConfig->isSystem($aContent['type'] , $aContent['action'])) {
+                    $aShared = $this->_oDb->getEvents(array('browse' => 'id', 'value' => $aContent['object_id']));
+                    $aShared = $this->_getCommonData($aShared);
+                } 
+                else
+                	$aShared = $this->_getSystemData($aContent);
+
+				if(empty($aShared) || !is_array($aShared))
+					return array();
+
+                $aResult['content'] = array_merge($aContent, $aShared['content']);
+                $aResult['content']['parse_type'] = !empty($aShared['content_type']) ? $aShared['content_type'] : BX_TIMELINE_PARSE_TYPE_DEFAULT;
+                $aResult['content']['owner_id'] = $aShared['owner_id'];
+                list($aResult['content']['owner_name'], $aResult['content']['owner_url']) = $oModule->getUserInfo($aShared['owner_id']);
+
+                list($sUserName) = $oModule->getUserInfo($aEvent['object_id']);
+                $sSample = !empty($aResult['content']['sample']) ? $aResult['content']['sample'] : '_bx_timeline_txt_sample';
+
+                $aResult['title'] = _t('_bx_timeline_txt_user_shared_sample', $sUserName, $aResult['content']['owner_name'], _t($sSample));
+                $aResult['description'] = '';
+                break;
+        }
+
+        $sSystem = $this->_oConfig->getObject('vote');
+        if($oModule->getVoteObject($sSystem, $aEvent['id']) !== false)
+            $aResult['votes'] = array(
+                'system' => $sSystem,
+                'object_id' => $aEvent['id'],
+                'count' => $aEvent['votes']
+            );
+
+        $sSystem = $this->_oConfig->getObject('comment');
+        if($oModule->getCmtsObject($sSystem, $aEvent['id']) !== false)
+            $aResult['comments'] = array(
+                'system' => $sSystem,
+                'object_id' => $aEvent['id'],
+                'count' => $aEvent['comments']
+            );
+
+        return $aResult;
+    }
+
+    protected function _prepareTextForOutput($s)
+    {
+        $sHttp = '';
+        $sPattern = $this->_oConfig->getPregPattern('url');
+
+        $aMatches = array();
+        if(preg_match($sPattern, $s, $aMatches) && empty($aMatches[1]))
+            $sHttp = 'http://';
+
+        $s = bx_process_output($s, BX_DATA_TEXT_MULTILINE);
+        $s = preg_replace($sPattern, '<a href="' . $sHttp . '$0" target="_blank">$0</a>', $s);
+
+        return $s;
+    }
+}
+
+/** @} */

+ 75 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/config.php

@@ -0,0 +1,75 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_timeline',
+    'title' => 'Timeline',
+    'note' => 'Timeline module.',
+    'version' => '8.0.3',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/timeline/',
+    'home_uri' => 'timeline',
+
+    'db_prefix' => 'bx_timeline_',
+    'class_prefix' => 'BxTimeline',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Timeline',
+
+    /**
+     * 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,
+        'recompile_permalinks' => 1,
+        'recompile_alerts' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'recompile_permalinks' => 1,
+        'recompile_alerts' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 105 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/langs/en.xml

@@ -0,0 +1,105 @@
+<?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[Timelines' Comments]]></string>
+
+	<string name="_bx_timeline_option_enable_delete"><![CDATA[Allow Timeline owner to remove items]]></string>
+	<string name="_bx_timeline_option_events_per_page_profile"><![CDATA[Number of events are displayed on Profile page]]></string>
+	<string name="_bx_timeline_option_events_per_page_account"><![CDATA[Number of events are displayed on Account page]]></string>
+	<string name="_bx_timeline_option_events_per_page_home"><![CDATA[Number of events are displayed on Home page]]></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 in Timeline]]></string>
+	<string name="_bx_timeline_option_chars_display_max"><![CDATA[Max number of displayed character in text post]]></string>
+	<string name="_bx_timeline_option_err_chars_display_max"><![CDATA[Enter the number which should be greater then 150.]]></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_input_sys_owner_id"><![CDATA[Owner ID]]></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_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[Content]]></string>
+	<string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
+	<string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Add Photo]]></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_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_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_acl_action_post"><![CDATA[Post]]></string>
+	<string name="_bx_timeline_acl_action_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_timeline_acl_action_vote"><![CDATA[Vote]]></string>
+	<string name="_bx_timeline_acl_action_share"><![CDATA[Share]]></string>
+
+	<string name="_bx_timeline_page_title_sys_view"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_title_view"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_title_sys_item"><![CDATA[Timeline Item]]></string>
+	<string name="_bx_timeline_page_title_item"><![CDATA[Timeline Item]]></string>
+	<string name="_bx_timeline_page_title_sys_account"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_title_account"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_post"><![CDATA[Post to Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_view"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Post to Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_item"><![CDATA[Item]]></string>
+	<string name="_bx_timeline_page_block_title_view_account"><![CDATA[Subscriptions Timeline]]></string>
+	<string name="_bx_timeline_page_block_title_view_home"><![CDATA[Outline]]></string>
+	<string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Timelines' Comments]]></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_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_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_timeline_menu_item_title_item_delete"><![CDATA[Delete]]></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_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_vote"><![CDATA[Vote]]></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_timeline"><![CDATA[Timeline]]></string>
+    <string name="_bx_timeline_menu_item_title_timeline"><![CDATA[Timeline]]></string>
+
+	<string name="_bx_timeline_alert_module_timeline_common_post"><![CDATA[Timeline (post)]]></string>
+	<string name="_bx_timeline_alert_module_timeline_common_share"><![CDATA[Timeline (share)]]></string>
+	<string name="_bx_timeline_alert_action_added"><![CDATA[add]]></string>
+
+	<string name="_bx_timeline_txt_msg_no_results"><![CDATA[Empty]]></string>
+	<string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Cannot perform action. Please report.]]></string>
+
+	<string name="_bx_timeline_txt_load_more"><![CDATA[Load More]]></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_rss_caption"><![CDATA[{0}'s timeline]]></string>
+	<string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} added {1}]]></string>
+	<string name="_bx_timeline_txt_user_shared_sample"><![CDATA[{0} shared {1}'s {2}]]></string>
+	<string name="_bx_timeline_txt_sample"><![CDATA[post]]></string>
+	<string name="_bx_timeline_txt_sample_comment_single"><![CDATA[post's comment]]></string>
+
+	<string name="_bx_timeline_txt_do_share"><![CDATA[Share]]></string>
+	<string name="_bx_timeline_txt_shared"><![CDATA[Shared {0}'s {1}.]]></string>
+	<string name="_bx_timeline_txt_shared_by"><![CDATA[Shared by]]></string>
+	<string name="_bx_timeline_txt_err_cannot_share"><![CDATA[Cannot share. Please report.]]></string>
+	<string name="_bx_timeline_txt_msg_success_share"><![CDATA[]]></string>	
+</resources>

+ 151 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/install/sql/enable.sql

@@ -0,0 +1,151 @@
+-- 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, '', ''),
+('bx_timeline_item', '_bx_timeline_page_title_sys_item', '_bx_timeline_page_title_item', 'bx_timeline', 5, 2147483647, 1, 'timeline-item', 'page.php?i=timeline-item', '', '', '', 0, 1, 0, '', '');
+
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_timeline_view', 1, 'bx_timeline', '_bx_timeline_page_block_title_post', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:14:"get_block_post";}', 0, 0, 1),
+('bx_timeline_view', 1, 'bx_timeline', '_bx_timeline_page_block_title_view', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:14:"get_block_view";}', 0, 0, 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);
+
+SET @iPBCellProfile = 4;
+SET @iPBOrderProfile = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object`='bx_persons_view_profile' AND `cell_id` = @iPBCellProfile LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_post_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_profile";}', 0, 0, @iPBOrderProfile + 1),
+('bx_persons_view_profile', @iPBCellProfile, 'bx_timeline', '_bx_timeline_page_block_title_view_profile', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_profile";}', 0, 0, @iPBOrderProfile + 2);
+
+SET @iPBCellDashboard = 1;
+SET @iPBOrderDashboard = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'bx_persons_view_profile' AND `cell_id` = @iPBCellProfile LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_view_account', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, @iPBOrderDashboard + 1);
+
+SET @iPBCellHome = 1;
+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`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_view_home', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_view_home";}', 0, 1, @iPBOrderHome + 1);
+
+
+-- MENU: Item Manage (Delete)
+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', 6, 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-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, 0);
+
+-- MENU: Item Actions (Comment, Plus)
+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`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('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', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_menu_item_addon_comment";s:6:"params";a:2:{i:0;s:16:"{comment_system}";i:1;s:16:"{comment_object}";}}', '', 2147483647, 1, 0, 1, 1),
+('bx_timeline_menu_item_actions', 'bx_timeline', 'item-vote', '_bx_timeline_menu_item_title_system_item_vote', '', 'javascript:void(0)', '', '', '', '', '', 2147483647, 1, 0, 0, 2),
+('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)', 'javascript:{share_onclick}', '_self', 'share', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:25:"get_menu_item_addon_share";s:6:"params";a:3:{i:0;s:12:"{share_type}";i:1;s:14:"{share_action}";i:2;s:14:"{share_object}";}}', '', 2147483647, 1, 0, 1, 3);
+
+
+-- 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-mi.png', IF(ISNULL(@iTypeOrder), 1, @iTypeOrder + 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_timeline', '_bx_timeline', 1);
+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_delete', 'on', @iCategId, '_bx_timeline_option_enable_delete', 'checkbox', '', '', '', '', 1),
+('bx_timeline_events_per_page_profile', '10', @iCategId, '_bx_timeline_option_events_per_page_profile', 'digit', '', '', '', '', 2),
+('bx_timeline_events_per_page_account', '20', @iCategId, '_bx_timeline_option_events_per_page_account', 'digit', '', '', '', '', 3),
+('bx_timeline_events_per_page_home', '20', @iCategId, '_bx_timeline_option_events_per_page_home', 'digit', '', '', '', '', 4),
+('bx_timeline_rss_length', '5', @iCategId, '_bx_timeline_option_rss_length', 'digit', '', '', '', '', 5),
+('bx_timeline_events_hide', '', @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),
+('bx_timeline_chars_display_max', '300', @iCategId, '_bx_timeline_option_chars_display_max', 'digit', 'GreaterThan', 'a:1:{s:3:"min";i:150;}', '_bx_timeline_option_err_chars_display_max', '', 7);
+
+
+-- 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', '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', 'share', NULL, '_bx_timeline_acl_action_share', '', 1, 3);
+SET @iIdActionShare = 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),
+
+-- delete
+(@iModerator, @iIdActionDelete),
+(@iAdministrator, @iIdActionDelete),
+
+-- vote
+(@iStandard, @iIdActionVote),
+(@iModerator, @iIdActionVote),
+(@iAdministrator, @iIdActionVote),
+(@iPremium, @iIdActionVote),
+
+-- share
+(@iStandard, @iIdActionShare),
+(@iModerator, @iIdActionShare),
+(@iAdministrator, @iIdActionShare),
+(@iPremium, @iIdActionShare);
+
+
+-- 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
+('profile', 'delete', @iHandler);
+
+
+-- COMMENTS
+INSERT INTO `sys_objects_cmts` (`Name`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Nl2br`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES
+('bx_timeline', 'bx_timeline_comments', 1, 5000, 1000, 1, 5, 3, 'tail', 1, 'bottom', 1, 1, 0, -3, 1, 'cmt', 'page.php?i=timeline-item&id={object_id}', '', 'bx_timeline_events', 'id', 'title', 'comments', 'BxTimelineCmts', 'modules/boonex/timeline/classes/BxTimelineCmts.php');
+
+
+-- VOTES
+INSERT INTO `sys_objects_vote`(`Name`, `TableMain`, `TableTrack`, `PostTimeout`, `MinValue`, `MaxValue`, `IsUndo`, `IsOn`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldRate`, `TriggerFieldRateCount`, `ClassName`, `ClassFile`) VALUES 
+('bx_timeline', 'bx_timeline_votes', 'bx_timeline_votes_track', '604800', '1', '1', '0', '1', 'bx_timeline_events', 'id', 'rate', 'votes', 'BxTimelineVote', 'modules/boonex/timeline/classes/BxTimelineVote.php');
+
+
+-- SEARCH
+INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `ClassName`, `ClassPath`) VALUES
+('bx_timeline_cmts', '_bx_timeline_cmts', 'BxTimelineCmtsSearchResult', 'modules/boonex/timeline/classes/BxTimelineCmtsSearchResult.php');
+
+
+-- MODULES' CONNECTIONS
+INSERT INTO `sys_modules_relations` (`module`, `on_install`, `on_uninstall`, `on_enable`, `on_disable`) VALUES
+('bx_timeline', '', 'delete_module_events', 'add_handlers', 'delete_handlers');

+ 89 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/main.js

@@ -0,0 +1,89 @@
+function BxTimelineMain() {
+	this.sIdPost = '#bx-timeline-post';
+
+	this.sIdView = '#bx-timeline';
+	this.sIdItem = '#bx-timeline-item-';
+
+	this.sSP = 'bx-tl';
+	this.sClassMasonry = this.sSP + '-masonry';
+	this.sClassItems = this.sSP + '-items';
+	this.sClassItem = this.sSP + '-item';
+	this.sClassItemComments = this.sSP + '-item-comments-holder';
+}
+
+BxTimelineMain.prototype.isMasonry = function() {
+	return $(this.sIdView + ' .' + this.sClassItems).hasClass(this.sClassMasonry);
+};
+
+BxTimelineMain.prototype.isMasonryEmpty = function() {
+	return $(this.sIdView + ' .' + this.sClassItems + ' .' + this.sClassItem).length == 0;
+};
+
+BxTimelineMain.prototype.initMasonry = function() {
+	var oItems = $(this.sIdView + ' .' + this.sClassItems);
+
+	if(oItems.find('.' + this.sClassItem).length > 0) {
+		oItems.addClass(this.sClassMasonry).masonry({
+		  itemSelector: '.' + this.sClassItem,
+		  columnWidth: '.' + this.sSP + '-grid-sizer'
+		});
+	}
+};
+
+BxTimelineMain.prototype.destroyMasonry = function() {
+	$(this.sIdView + ' .' + this.sClassItems).removeClass(this.sClassMasonry).masonry('destroy');
+};
+
+BxTimelineMain.prototype.appendMasonry = function(oItems) {
+	var $this = this;
+	var oItems = $(oItems);
+	oItems.find('img.' + this.sSP + '-item-image').load(function() {
+		$this.reloadMasonry();
+	});
+	$(this.sIdView + ' .' + this.sClassItems).append(oItems).masonry('appended', oItems);
+};
+
+BxTimelineMain.prototype.prependMasonry = function(oItems) {
+	var $this = this;
+	var oItems = $(oItems);
+	oItems.find('img.' + this.sSP + '-item-image').load(function() {
+		$this.reloadMasonry();
+	});
+	$(this.sIdView + ' .' + this.sClassItems).prepend(oItems).masonry('prepended', oItems);
+};
+
+BxTimelineMain.prototype.reloadMasonry = function() {
+	$(this.sIdView + ' .' + this.sClassItems).masonry('reloadItems').masonry('layout');
+};
+
+BxTimelineMain.prototype.loadingInButton = function(e, bShow) {
+	if($(e).length)
+		bx_loading_btn($(e), bShow);
+	else
+		bx_loading($('body'), bShow);	
+};
+
+BxTimelineMain.prototype.loadingInItem = function(e, bShow) {
+	var oParent = $(e).length ? $(e).parents('.' + this.sClassItem + ':first') : $('body'); 
+	bx_loading(oParent, bShow);
+};
+
+BxTimelineMain.prototype.loadingInBlock = function(e, bShow) {
+	var oParent = $(e).length ? $(e).parents('.bx-db-container:first') : $('body'); 
+	bx_loading(oParent, bShow);
+};
+
+BxTimelineMain.prototype.loadingInPopup = function(e, bShow) {
+	var oParent = $(e).length ? $(e).parents('.bx-popup-content:first') : $('body'); 
+	bx_loading(oParent, bShow);
+};
+
+BxTimelineMain.prototype._loading = function(e, bShow) {
+	var oParent = $(e).length ? $(e) : $('body'); 
+	bx_loading(oParent, bShow);
+};
+
+BxTimelineMain.prototype._getDefaultData = function () {
+	var oDate = new Date();
+    return jQuery.extend({}, this._oRequestParams, {_t:oDate.getTime()});
+};

+ 204 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/post.js

@@ -0,0 +1,204 @@
+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._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+
+    var $this = this;
+    $(document).ready(function () {
+    	$($this.sIdPost + ' form').each(function() {
+    		var sId = $(this).attr('id');
+    		$this.initFormPost(sId);
+    	});
+	});
+}
+
+BxTimelinePost.prototype = new BxTimelineMain();
+
+BxTimelinePost.prototype.initFormPost = function(sFormId)
+{
+	var $this = this;
+	var oForm = $('#' + sFormId);
+
+	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.beforeFormPostSubmit = function(oForm)
+{
+	this.loadingInButton($(oForm).children().find(':submit'), true);
+};
+
+BxTimelinePost.prototype.afterFormPostSubmit = function (oForm, oData)
+{
+	this.loadingInButton($(oForm).children().find(':submit'), false);
+
+	if(oData && oData.msg != undefined)
+        alert(oData.msg);
+
+	if(oData && oData.id != undefined) {
+		var iId = parseInt(oData.id);
+        if(iId <= 0) 
+        	return;
+
+        this._getPost(oForm, iId);
+        this._getForm(oForm, $(oForm).find("input[name = 'type']").val());
+
+        return;
+	}
+
+	if(oData && oData.form != undefined && oData.form_id != undefined) {
+		$('#' + oData.form_id).replaceWith(oData.form);
+		this.initFormPost(oData.form_id);
+
+		return;
+	}
+};
+
+BxTimelinePost.prototype.initFormAttachLink = function(sFormId)
+{
+	var $this = this;
+	var oForm = $('#' + sFormId);
+
+	oForm.ajaxForm({
+        dataType: "json",
+        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)
+{
+	this.loadingInButton($(oForm).children().find(':submit'), false);
+
+	if(oData && oData.msg != undefined)
+        alert(oData.msg);
+
+	if(oData && oData.item != undefined) {
+		$('#' + this._aHtmlIds['attach_link_popup']).dolPopupHide();
+
+		if(!$.trim(oData.item).length)
+			return;
+
+		var oItem = $(oData.item).hide();
+		$('#' + this._aHtmlIds['attach_link_form_field']).prepend(oItem).find('#' + oItem.attr('id')).bx_anim('show', this._sAnimationEffect, this._sAnimationSpeed);
+
+        return;
+	}
+
+	if(oData && oData.form != undefined && oData.form_id != undefined) {
+		$('#' + oData.form_id).replaceWith(oData.form);
+		this.initFormPost(oData.form_id);
+
+		return;
+	}
+};
+
+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) {
+        	bx_loading(oAttachLink, false);
+
+        	if(oData && oData.msg != undefined)
+                alert(oData.msg);
+
+        	if(oData && oData.code != undefined && oData.code == 0) {
+        		oAttachLink.bx_anim('hide', $this._sAnimationEffect, $this._sAnimationSpeed, function() {
+        			$(this).remove;
+        		});
+        	}
+        },
+        'json'
+    );
+
+	return false;
+};
+
+BxTimelinePost.prototype.showAttachLink = function(oLink) {
+	var oData = this._getDefaultData();    
+
+    $(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
+	});
+
+	return false;
+};
+
+BxTimelinePost.prototype._getForm = function(oElement, sType) {
+    var $this = this;
+    var oData = this._getDefaultData();
+
+    jQuery.post (
+	    this._sActionsUrl + 'get_post_form/' + sType + '/',
+	    oData,
+	    function(oData) {
+            if(oData && oData.form != undefined && oData.form_id != undefined) {
+                $('#' + oData.form_id).replaceWith(oData.form);
+                $this.initFormPost(oData.form_id);
+            }
+	    },
+	    'json'
+	);
+};
+
+BxTimelinePost.prototype._getPost = function(oElement, iPostId) {
+    var $this = this;
+    var oData = this._getDefaultData();
+    oData['id'] = iPostId;
+
+    var oView = $(this.sIdView);
+    this.loadingInBlock(oView, true);
+
+    jQuery.post (
+        this._sActionsUrl + 'get_post/',
+        oData,
+        function(oData) {
+        	$this.loadingInBlock(oView, false);
+
+        	if($.trim(oData.item).length) {
+        		if(!oView.find('.' + $this.sSP + '-load-more').is(':visible'))
+        			oView.find('.' + $this.sSP + '-load-more').show();
+
+        		if(oView.find('.' + $this.sSP + '-empty').is(':visible'))
+        			oView.find('.' + $this.sSP + '-empty').hide();
+
+        		if(!$this.isMasonry())
+        			$this.initMasonry();
+
+        		$this.prependMasonry($(oData.item).bxTime());
+        	}
+        },
+        'json'
+    );
+};

+ 56 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/share.js

@@ -0,0 +1,56 @@
+function BxTimelineShare(oOptions) {
+	this._sActionsUri = oOptions.sActionUri;
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oTimelineShare' : oOptions.sObjName;
+    this._iOwnerId = oOptions.iOwnerId == undefined ? 0 : oOptions.iOwnerId;
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'slide' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+}
+
+BxTimelineShare.prototype = new BxTimelineMain();
+
+BxTimelineShare.prototype.shareItem = function(oLink, iOwnerId, sType, sAction, iId) {
+	var $this = this;
+	var oDate = new Date();
+	var oParams = {
+		owner_id: iOwnerId,
+		type: sType,
+		action: sAction,
+		object_id: iId,
+		_t: oDate.getTime()	
+	};
+
+	this.loadingInItem(oLink, true);
+
+	jQuery.post(
+        this._sActionsUrl + 'share/',
+        oParams,
+        function(oData) {
+        	$this.loadingInItem(oLink, false);
+
+        	if(oData && oData.msg != undefined && oData.msg.length > 0)
+                alert(oData.msg);
+
+        	if(oData && oData.counter != undefined) {
+        		var sCounter = $(oData.counter).attr('id');
+        		$('#' + sCounter).replaceWith(oData.counter);
+        		$('#' + sCounter).parents('.' + $this.sSP + '-share-counter-holder:first').bx_anim(oData.count > 0 ? 'show' : 'hide');
+        	}
+        },
+        'json'
+    );
+};
+
+BxTimelineShare.prototype.toggleByPopup = function(oLink, iId) {
+    var oData = this._getDefaultData();
+    oData['id'] = iId;
+
+	$(oLink).dolPopupAjax({
+		id: this._aHtmlIds['by_popup'] + iId, 
+		url: bx_append_url_params(this._sActionsUri + 'get_shared_by/', oData)
+	});
+
+	return false;
+};

+ 196 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/js/view.js

@@ -0,0 +1,196 @@
+function BxTimelineView(oOptions) {
+	this._sActionsUri = oOptions.sActionUri;
+    this._sActionsUrl = oOptions.sActionUrl;
+    this._sObjName = oOptions.sObjName == undefined ? 'oTimelineView' : oOptions.sObjName;
+    this._iOwnerId = oOptions.iOwnerId == undefined ? 0 : oOptions.iOwnerId;
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'slide' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+
+    var $this = this;
+    $(document).ready(function() {
+    	$this.initMasonry();
+    	$('.bx-tl-item').resize(function() {
+    		$this.reloadMasonry();
+    	});
+    	$('img.bx-tl-item-image').load(function() {
+    		$this.reloadMasonry();
+    	});
+    });
+}
+
+BxTimelineView.prototype = new BxTimelineMain();
+
+BxTimelineView.prototype.changePage = function(oElement, iStart, iPerPage) {
+	this._oRequestParams.start = iStart;
+    this._oRequestParams.per_page = iPerPage;
+
+    this._getPosts(oElement, 'page');
+};
+
+BxTimelineView.prototype.changeFilter = function(oLink) {
+    var sId = $(oLink).attr('id');
+
+    this._oRequestParams.start = 0;
+    this._oRequestParams.filter = sId.substr(sId.lastIndexOf('-') + 1, sId.length);
+
+    this._getPosts(oLink, 'filter');
+};
+
+BxTimelineView.prototype.changeTimeline = function(oLink, iYear) {
+	this._oRequestParams.start = 0;
+    this._oRequestParams.timeline = iYear;
+
+	this._getPosts(oLink, 'timeline');
+};
+
+BxTimelineView.prototype.deletePost = function(oLink, iId) {
+    var $this = this;
+    var oView = $(this.sIdView);
+    var oData = this._getDefaultData();
+    oData['id'] = iId;
+
+    this.loadingInBlock(oLink, true);
+
+    $.post(
+        this._sActionsUrl + 'delete/',
+        oData,
+        function(oData) {
+        	$this.loadingInBlock(oLink, false);
+
+        	if(oData && oData.msg != undefined)
+                alert(oData.msg);
+
+            if(oData && oData.code == 0)
+            	$(oLink).parents('.bx-popup-applied:first:visible').dolPopupHide();
+
+                $($this.sIdItem + oData.id).bx_anim('hide', $this._sAnimationEffect, $this._iAnimationSpeed, function() {
+                    $(this).remove();
+
+                    if(oView.find('.bx-tl-item').length != 0) {
+                    	$this.reloadMasonry();
+                    	return;
+                    } 
+
+                    $this.destroyMasonry();
+                    oView.find('.bx-tl-load-more').hide();
+                    oView.find('.bx-tl-empty').show();
+                });                        
+        },
+        'json'
+    );
+};
+
+BxTimelineView.prototype.showMoreContent = function(oLink) {
+	$(oLink).parent('span').next('span').show().prev('span').remove();
+	this.reloadMasonry();
+};
+
+BxTimelineView.prototype.showManageMenu = function(oLink, iId) {
+	var oData = this._getDefaultData();    
+    oData['id'] = iId;
+
+    $(this.sIdView).dolPopupAjax({
+		id: this._aHtmlIds['menu_popup'] + iId,
+		url: bx_append_url_params(this._sActionsUri + 'get_manage_menu_popup/', oData),
+		pointer:{
+			el:$(oLink)
+		}
+	});
+
+	return false;
+};
+
+BxTimelineView.prototype.showPhoto = function(oLink, sUrl) {
+	$('#' + this._aHtmlIds['photo_popup']).dolPopupImage(sUrl, $(oLink).parent());
+};
+
+BxTimelineView.prototype.commentItem = function(oLink, sSystem, iId) {
+	var $this = this;
+
+    var oData = this._getDefaultData();
+    oData['system'] = sSystem;    
+    oData['id'] = iId;
+
+    var oComments = $(oLink).parents('.' + this.sClassItem + ':first').find('.' + this.sClassItemComments);
+    if(oComments.children().length > 0) {
+    	oComments.bx_anim('toggle', this._sAnimationEffect, this._iAnimationSpeed);
+    	return;
+    }
+
+    if(oLink)
+    	this.loadingInItem(oLink, true);
+
+    jQuery.get (
+        this._sActionsUrl + 'get_comments',
+        oData,
+        function(oData) {
+        	if(oLink)
+        		$this.loadingInItem(oLink, false);
+
+        	if(!oData.content)
+        		return;
+
+        	oComments.html($(oData.content).hide()).children(':hidden').bxTime().bx_anim('show', $this._sAnimationEffect, $this._iAnimationSpeed);
+        },
+        'json'
+    );
+};
+
+BxTimelineView.prototype._getPosts = function(oElement, sAction) {
+    var $this = this;
+    var oView = $(this.sIdView);
+
+	switch(sAction) {
+		case 'page':
+			this.loadingInButton(oElement, true);
+			break;
+
+		default:
+			this.loadingInBlock(oElement, true);
+			break;
+	}
+
+    jQuery.get(
+        this._sActionsUrl + 'get_posts/',
+        this._getDefaultData(),
+        function(oData) {
+        	if(oData && oData.items != undefined) {
+        		var sItems = $.trim(oData.items);
+
+	        	switch(sAction) { 
+	        		case 'page':
+	        			$this.loadingInButton(oElement, false);
+	        			$this.appendMasonry($(sItems).bxTime());
+			            break;
+
+	        		default:
+	        			$this.loadingInBlock(oElement, false);
+
+	        			oView.find('.' + $this.sClassItems).bx_anim('hide', $this._sAnimationEffect, $this._iAnimationSpeed, function() {
+			                $(this).html(sItems).show().bxTime();
+
+			                if($this.isMasonryEmpty()) {
+			                	$this.destroyMasonry();
+			                	return;
+			                }
+
+			                if($this.isMasonry())
+			                	$this.reloadMasonry();
+			        		else
+			        			$this.initMasonry();
+			            });
+		            	break;
+	            }
+        	}
+
+        	if(oData && oData.load_more != undefined)
+        		oView.find('.' + $this.sSP + '-load-more-holder').html($.trim(oData.load_more));
+
+        	if(oData && oData.back != undefined)
+        		oView.find('.' + $this.sSP + '-back-holder').html($.trim(oData.back));
+        },
+        'json'
+    );
+};

+ 5 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/template/menu_item.html

@@ -0,0 +1,5 @@
+<a href="__link__" target="__target__" onclick="__onclick__" title="__title__">
+	<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+	<bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+</a>
+<bx_if:addon>__addon__</bx_if:addon>

+ 7 - 0
modules/boonex/timeline/updates/8.0.2_8.0.3/source/template/share_element_block.html

@@ -0,0 +1,7 @@
+<div id="__html_id__" class="__style_prefix__-share __class__ bx-def-margin-left-auto bx-clearfix" bx_share_data_count="__count__">
+	<div class="__style_prefix__-share-element-holder">__do_share__</div>
+	<bx_if:show_counter>
+		<div class="__style_prefix__-share-counter-holder bx-def-margin-sec-left"<bx_if:show_hidden> style="display:none"</bx_if:show_hidden>>__counter__</div>
+	</bx_if:show_counter>
+</div>
+__script__