Explorar el Código

Modules' updates.

AntonLV hace 11 años
padre
commit
7c3c576c77
Se han modificado 100 ficheros con 9668 adiciones y 0 borrados
  1. 51 0
      modules/boonex/accounts/updates/8.0.1_8.0.2/install/config.php
  2. 13 0
      modules/boonex/accounts/updates/8.0.1_8.0.2/install/installer.php
  3. 83 0
      modules/boonex/accounts/updates/8.0.1_8.0.2/source/classes/BxAccntConfig.php
  4. 70 0
      modules/boonex/accounts/updates/8.0.1_8.0.2/source/classes/BxAccntSearchResult.php
  5. 72 0
      modules/boonex/accounts/updates/8.0.1_8.0.2/source/install/config.php
  6. 51 0
      modules/boonex/albums/updates/8.0.0_8.0.1/install/config.php
  7. 13 0
      modules/boonex/albums/updates/8.0.0_8.0.1/install/installer.php
  8. 38 0
      modules/boonex/albums/updates/8.0.0_8.0.1/install/langs/en.xml
  9. 55 0
      modules/boonex/albums/updates/8.0.0_8.0.1/install/sql/enable.sql
  10. 11 0
      modules/boonex/albums/updates/8.0.0_8.0.1/install/sql/install.sql
  11. 145 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsConfig.php
  12. 70 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsDb.php
  13. 93 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsFormEntry.php
  14. 24 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsMenuViewActions.php
  15. 195 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsModule.php
  16. 36 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsPageEntry.php
  17. 113 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsPageMedia.php
  18. 144 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResult.php
  19. 183 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResultMedia.php
  20. 25 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResultMediaCamera.php
  21. 384 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsTemplate.php
  22. 122 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/config.php
  23. 175 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/langs/en.xml
  24. 43 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/disable.sql
  25. 386 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/enable.sql
  26. 309 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/install.sql
  27. 39 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/uninstall.sql
  28. 3 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/comments-item.html
  29. 98 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/css/main.css
  30. 3 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/entry-all-actions.html
  31. 6 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/entry-text.html
  32. 3 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-exif-value.html
  33. 3 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-exif.html
  34. 30 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-view.html
  35. 15 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit.html
  36. 17 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit_media.html
  37. 3 0
      modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit_media_live_search.html
  38. 51 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/install/config.php
  39. 13 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/install/installer.php
  40. 10 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/install/sql/enable.sql
  41. 54 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/source/classes/BxAntispamAkismet.php
  42. 103 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/source/classes/BxAntispamStopForumSpam.php
  43. 68 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/source/install/config.php
  44. 205 0
      modules/boonex/antispam/updates/8.0.3_8.0.4/source/install/sql/enable.sql
  45. 51 0
      modules/boonex/contact/updates/8.0.3_8.0.4/install/config.php
  46. 13 0
      modules/boonex/contact/updates/8.0.3_8.0.4/install/installer.php
  47. 5 0
      modules/boonex/contact/updates/8.0.3_8.0.4/install/langs/en.xml
  48. 127 0
      modules/boonex/contact/updates/8.0.3_8.0.4/source/classes/BxContactModule.php
  49. 72 0
      modules/boonex/contact/updates/8.0.3_8.0.4/source/install/config.php
  50. 46 0
      modules/boonex/contact/updates/8.0.3_8.0.4/source/install/langs/en.xml
  51. 51 0
      modules/boonex/convos/updates/8.0.5_8.0.6/install/config.php
  52. 13 0
      modules/boonex/convos/updates/8.0.5_8.0.6/install/installer.php
  53. 7 0
      modules/boonex/convos/updates/8.0.5_8.0.6/install/langs/en.xml
  54. 6 0
      modules/boonex/convos/updates/8.0.5_8.0.6/install/sql/enable.sql
  55. 94 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvConfig.php
  56. 24 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvMenuViewActions.php
  57. 330 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvModule.php
  58. 43 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvPageEntry.php
  59. 249 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvTemplate.php
  60. 103 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/install/config.php
  61. 110 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/install/langs/en.xml
  62. 195 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/install/sql/enable.sql
  63. 3 0
      modules/boonex/convos/updates/8.0.5_8.0.6/source/template/entry-all-actions.html
  64. 46 0
      modules/boonex/developer/updates/8.0.6_8.0.7/install/config.php
  65. 13 0
      modules/boonex/developer/updates/8.0.6_8.0.7/install/installer.php
  66. 423 0
      modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevBuilderPage.php
  67. 285 0
      modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevFormsField.php
  68. 97 0
      modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevFunctions.php
  69. 69 0
      modules/boonex/developer/updates/8.0.6_8.0.7/source/install/config.php
  70. 13 0
      modules/boonex/developer/updates/8.0.6_8.0.7/source/template/bp_block_panel_top.html
  71. 54 0
      modules/boonex/english/updates/8.0.9_8.0.10/install/config.php
  72. 15 0
      modules/boonex/english/updates/8.0.9_8.0.10/install/installer.php
  73. 50 0
      modules/boonex/english/updates/8.0.9_8.0.10/install/langs/en.xml
  74. 2105 0
      modules/boonex/english/updates/8.0.9_8.0.10/source/data/langs/system/en.xml
  75. 71 0
      modules/boonex/english/updates/8.0.9_8.0.10/source/install/config.php
  76. 51 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/install/config.php
  77. 13 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/install/installer.php
  78. 120 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/studio/scripts/BxTemplStudioFormsField.php
  79. 17 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplCategory.php
  80. 17 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplMenuHomepage.php
  81. 17 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplServiceCategory.php
  82. 68 0
      modules/boonex/lagoon/updates/8.0.5_8.0.6/source/install/config.php
  83. 51 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/install/config.php
  84. 13 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/install/installer.php
  85. 59 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/bx_timeline/css/view.less
  86. 120 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/studio/scripts/BxTemplStudioFormsField.php
  87. 95 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/_header.html
  88. 43 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/_sub_footer.html
  89. 60 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/css/general.css
  90. 50 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/css/menu.css
  91. 17 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplCategory.php
  92. 17 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplMenuHomepage.php
  93. 17 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplServiceCategory.php
  94. 68 0
      modules/boonex/ocean/updates/8.0.5_8.0.6/source/install/config.php
  95. 51 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/install/config.php
  96. 13 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/install/installer.php
  97. 30 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/install/langs/en.xml
  98. 71 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/install/sql/enable.sql
  99. 154 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/source/classes/BxOrgsConfig.php
  100. 25 0
      modules/boonex/organizations/updates/8.0.5_8.0.6/source/classes/BxOrgsMenuViewActions.php

+ 51 - 0
modules/boonex/accounts/updates/8.0.1_8.0.2/install/config.php

@@ -0,0 +1,51 @@
+<?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' => 'Accounts Manager',
+    'version_from' => '8.0.1',
+	'version_to' => '8.0.2',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/accounts/updates/update_8.0.1_8.0.2/',
+	'home_uri' => 'accounts_update_801_802',
+
+	'module_dir' => 'boonex/accounts/',
+	'module_uri' => 'accounts',
+
+    'db_prefix' => 'bx_accnt_',
+    'class_prefix' => 'BxAccnt',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Accounts',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/accounts/updates/8.0.1_8.0.2/install/installer.php

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

+ 83 - 0
modules/boonex/accounts/updates/8.0.1_8.0.2/source/classes/BxAccntConfig.php

@@ -0,0 +1,83 @@
+<?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    Accounts Accounts
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+class BxAccntConfig extends BxBaseModGeneralConfig
+{
+    protected $_oDb;
+    protected $_aHtmlIds;
+
+    /**
+     * Constructor
+     */
+    public function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $this->CNF = array (
+        	// page URIs
+        	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=accounts-administration',
+
+	        // objects
+	        'OBJECT_MENU_MANAGE_TOOLS' => 'bx_accounts_menu_manage_tools', //manage menu in content administration tools
+        	'OBJECT_GRID_ADMINISTRATION' => 'bx_accounts_administration',
+        	'OBJECT_GRID_MODERATION' => 'bx_accounts_moderation',
+
+        	// some language keys
+            'T' => array (
+        		'grid_action_err_delete' => '_bx_accnt_grid_action_err_delete',
+        		'grid_action_err_perform' => '_bx_accnt_grid_action_err_perform',
+            	'filter_item_active' => '_bx_accnt_grid_filter_item_title_adm_active',
+            	'filter_item_pending' => '_bx_accnt_grid_filter_item_title_adm_pending',
+            	'filter_item_suspended' => '_bx_accnt_grid_filter_item_title_adm_suspended',
+            	'filter_item_select_one_filter1' => '_bx_accnt_grid_filter_item_title_adm_select_one_filter1',
+        	)
+        );
+
+        $this->_aObjects = array(
+        	'alert' => $this->_sName,
+        );
+
+        $this->_aJsClass = array(
+        	'manage_tools' => 'BxAccntManageTools'
+        );
+
+        $this->_aJsObjects = array(
+        	'manage_tools' => 'oBxAccntManageTools'
+        );
+
+        $this->_aGridObjects = array(
+        	'moderation' => $this->CNF['OBJECT_GRID_MODERATION'],
+        	'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+        	
+        );
+
+        $sHtmlPrefix = str_replace('_', '-', $this->_sName);
+        $this->_aHtmlIds = array(
+        	'profile' => $sHtmlPrefix . '-profile-',
+        	'profile_more_popup' => $sHtmlPrefix . '-profile-more-popup-',
+        );
+    }
+
+    public function init(&$oDb)
+    {
+        $this->_oDb = &$oDb;
+    }
+
+	public function getHtmlIds($sKey = '')
+    {
+        if(empty($sKey))
+            return $this->_aHtmlIds;
+
+        return isset($this->_aHtmlIds[$sKey]) ? $this->_aHtmlIds[$sKey] : '';
+    }
+}
+
+/** @} */

+ 70 - 0
modules/boonex/accounts/updates/8.0.1_8.0.2/source/classes/BxAccntSearchResult.php

@@ -0,0 +1,70 @@
+<?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    Persons Persons
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxAccntSearchResult extends BxBaseModGeneralSearchResult
+{
+    function __construct($sMode = '', $aParams = false)
+    {
+        parent::__construct($sMode, $aParams);
+
+        $this->aCurrent =  array(
+            'name' => 'bx_accounts',
+            'module_name' => 'bx_accounts',
+            'object_metatags' => '',
+            'title' => _t('_bx_accnt_page_title_browse'),
+            'table' => 'sys_accounts',
+            'tableSearch' => 'sys_accounts',
+            'ownFields' => array(),
+            'searchFields' => array('name', 'email'),
+            'restriction' => array(
+                'confirmed' => array('value' => '', 'field' => 'email_confirmed', 'operator' => '='),
+        		'unconfirmed' => array('value' => '', 'field' => 'email_confirmed', 'operator' => '<>'),
+            ),
+            'join' => array (),
+            'paginate' => array('perPage' => 20, 'start' => 0),
+            'sorting' => 'none',
+            'rss' => array(
+                'title' => '',
+                'link' => '',
+                'image' => '',
+                'profile' => 0,
+                'fields' => array (
+                    'Guid' => 'link',
+                    'Link' => 'link',
+                    'Title' => 'fullname',
+                    'DateTimeUTS' => 'added',
+                    'Desc' => 'fullname',
+                    'Picture' => 'picture',
+                ),
+            ),
+            'ident' => 'id'
+        );
+
+        $this->sFilterName = 'bx_accounts_filter';
+        $this->oModule = $this->getMain();
+
+        switch ($sMode) {
+            case '': // search results
+                $this->sBrowseUrl = BX_DOL_SEARCH_KEYWORD_PAGE;
+                $this->aCurrent['title'] = _t('_bx_accnt');
+                $this->aCurrent['paginate']['perPage'] = 5;
+                unset($this->aCurrent['rss']);
+                break;
+
+            default:
+                $this->isError = true;
+        }
+
+        parent::__construct();
+    }
+}
+
+/** @} */

+ 72 - 0
modules/boonex/accounts/updates/8.0.1_8.0.2/source/install/config.php

@@ -0,0 +1,72 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Accounts Accounts
+ * @ingroup     DolphinModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_accounts',
+    'title' => 'Accounts Manager',
+    'note' => 'Accounts Manager module.',
+    'version' => '8.0.2',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+    
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/accounts/',
+    'home_uri' => 'accounts',
+
+    'db_prefix' => 'bx_accnt_',
+    'class_prefix' => 'BxAccnt',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Accounts',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 51 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/install/config.php

@@ -0,0 +1,51 @@
+<?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' => 'Albums',
+    'version_from' => '8.0.0',
+	'version_to' => '8.0.1',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/albums/updates/update_8.0.0_8.0.1/',
+	'home_uri' => 'albums_update_800_801',
+
+	'module_dir' => 'boonex/albums/',
+	'module_uri' => 'albums',
+
+    'db_prefix' => 'bx_albums_',
+    'class_prefix' => 'BxAlbums',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 1,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Albums',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/install/installer.php

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

+ 38 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/install/langs/en.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_bx_albums_page_block_title_entry_view_media_exif"><![CDATA[EXIF]]></string_add>
+	<string_add name="_bx_albums_page_title_browse_updated"><![CDATA[Updated Albums]]></string_add>
+	<string_add name="_bx_albums_page_block_title_entry_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string_add>
+	<string_add name="_bx_albums_page_title_sys_entries_updated"><![CDATA[Updated Albums]]></string_add>
+    <string_add name="_bx_albums_page_title_entries_updated"><![CDATA[Updated Albums]]></string_add>
+	<string_add name="_bx_albums_page_block_title_updated_entries"><![CDATA[Updated Albums]]></string_add>
+	<string_add name="_bx_albums_page_block_title_sys_entries_of_author"><![CDATA[Albums of author]]></string_add>
+	<string_add name="_bx_albums_page_block_title_popular_keywords_albums"><![CDATA[Popular Albums Hashtags]]></string_add>
+	<string_add name="_bx_albums_page_block_title_popular_keywords_media"><![CDATA[Popular Media Hashtags]]></string_add>
+	<string_add name="_bx_albums_page_block_title_popular_keywords_media_camera"><![CDATA[Popular Cameras]]></string_add>
+	<string_add name="_bx_albums_menu_title_view_entry_popup"><![CDATA[Album Popup Actions]]></string_add>
+	<string_add name="_bx_albums_menu_item_title_system_entries_updated"><![CDATA[Updated Albums]]></string_add>
+    <string_add name="_bx_albums_menu_item_title_entries_updated"><![CDATA[Updated Albums]]></string_add>
+	<string_add name="_bx_albums_txt_all_entries_by"><![CDATA[<a href="{0}">All Albums by {1} ({2})</a>]]></string_add>
+	<string_add name="_bx_albums_txt_media_single"><![CDATA[image]]></string_add>
+    <string_add name="_bx_albums_txt_media_comment_single"><![CDATA[image's comment]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_camera"><![CDATA[Camera]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_focal_length"><![CDATA[Focal length]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_focal_length_value"><![CDATA[{0}mm]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_aperture"><![CDATA[Aperture]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_shutter_speed"><![CDATA[Exposure time]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_shutter_speed_value"><![CDATA[{0}s]]></string_add>
+	<string_add name="_bx_albums_txt_media_album_iso"><![CDATA[ISO]]></string_add>
+
+	<string_upd name="_bx_albums_page_title_view_entry_comments"><![CDATA[Comments to {title}]]></string_upd>
+	<string_upd name="_bx_albums_page_block_title_entries_of_author"><![CDATA[Albums by <a href="{profile_link}">{display_name}</a>]]></string_upd>   
+	<string_upd name="_bx_albums_menu_set_title_view_entry"><![CDATA[Album Actions]]></string_upd>
+	<string_upd name="_bx_albums_menu_title_view_entry"><![CDATA[Album Actions]]></string_upd>
+	<string_upd name="_bx_albums_menu_item_title_system_entries_manage"><![CDATA[Manage Albums]]></string_upd>
+    <string_upd name="_bx_albums_menu_item_title_entries_manage"><![CDATA[Manage Albums]]></string_upd>
+	<string_upd name="_bx_albums_menu_item_title_view_entry_submenu_comments"><![CDATA[Album Comments]]></string_upd>
+	<string_upd name="_bx_albums_txt_media_album_link"><![CDATA[<a href="{0}">{1}</a> album by <a href="{2}">{3}</a>]]></string_upd>
+
+	<string_del name="_bx_albums_menu_item_title_system_entries_public" />
+    <string_del name="_bx_albums_menu_item_title_entries_public" />
+</resources>

+ 55 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/install/sql/enable.sql

@@ -0,0 +1,55 @@
+-- PAGES
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_albums_view_entry' AND `title`='_bx_albums_page_block_title_entry_location';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_view_entry', 4, 'bx_albums', '_bx_albums_page_block_title_entry_location', 3, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:13:\"locations_map\";s:6:\"params\";a:2:{i:0;s:9:\"bx_albums\";i:1;s:4:\"{id}\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 0, 0, 1, 2);
+
+UPDATE `sys_objects_page` SET `layout_id`='10' WHERE `object`='bx_albums_view_media';
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_albums_view_media' AND `title`='_bx_albums_page_block_title_entry_view_media_exif';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_view_media', 4, 'bx_albums', '', '_bx_albums_page_block_title_entry_view_media_exif', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:10:\"media_exif\";}', 0, 0, 1, 1);
+
+UPDATE `sys_pages_blocks` SET `title_system`='_bx_albums_page_block_title_entry_comments', `title`='_bx_albums_page_block_title_entry_comments_link', `designbox_id`='11' WHERE `object`='bx_albums_view_entry_comments' AND `title`='_bx_albums_page_block_title_entry_comments';
+
+DELETE FROM `sys_objects_page` WHERE `object`='bx_albums_updated';
+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_albums_updated', '_bx_albums_page_title_sys_entries_updated', '_bx_albums_page_title_entries_updated', 'bx_albums', 5, 2147483647, 1, 'albums-updated', 'page.php?i=albums-updated', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_albums_updated';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_updated', 1, 'bx_albums', '_bx_albums_page_block_title_updated_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_albums";s:6:"method";s:14:"browse_updated";s:6:"params";a:3:{s:9:"unit_view";s:8:"extended";s:13:"empty_message";b:1;s:13:"ajax_paginate";b:0;}}', 0, 1, 1);
+
+UPDATE `sys_pages_blocks` SET `designbox_id`='13', `active`='1' WHERE `object`='bx_albums_author' AND `title`='_bx_albums_page_block_title_entries_actions';
+UPDATE `sys_pages_blocks` SET `title_system`='_bx_albums_page_block_title_sys_entries_of_author', `active`='1' WHERE `object`='bx_albums_author' AND `title`='_bx_albums_page_block_title_entries_of_author';
+
+UPDATE `sys_objects_page` SET `layout_id`='2' WHERE `object`='bx_albums_home';
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_albums_home' AND `title` IN ('_bx_albums_page_block_title_popular_keywords_albums', '_bx_albums_page_block_title_popular_keywords_media', '_bx_albums_page_block_title_popular_keywords_media_camera');
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_albums', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:9:\"bx_albums\";i:1;s:9:\"bx_albums\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 0),
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:15:\"bx_albums_media\";i:1;s:15:\"bx_albums_media\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 1),
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media_camera', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:22:\"bx_albums_media_camera\";i:1;s:22:\"bx_albums_media_camera\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 2);
+
+UPDATE `sys_pages_blocks` SET `active`='0' WHERE `object`='sys_home' AND `title`='_bx_albums_page_block_title_recent_entries';
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='' AND `title` IN ('_bx_albums_page_block_title_popular_keywords_albums', '_bx_albums_page_block_title_popular_keywords_media', '_bx_albums_page_block_title_popular_keywords_media_camera');
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_albums', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:9:"bx_albums";i:1;s:9:"bx_albums";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 2),
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:15:"bx_albums_media";i:1;s:15:"bx_albums_media";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 3),
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media_camera', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:22:"bx_albums_media_camera";i:1;s:22:"bx_albums_media_camera";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 4);
+
+
+-- SEARCH
+UPDATE `sys_objects_search` SET `GlobalSearch`='1' WHERE `ObjectName` IN ('bx_albums', 'bx_albums_cmts', 'bx_albums_media', 'bx_albums_media_cmts');
+
+DELETE FROM `sys_objects_search` WHERE `ObjectName`='bx_albums_media_camera';
+SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
+INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `GlobalSearch`, `ClassName`, `ClassPath`) VALUES
+('bx_albums_media_camera', '_bx_albums_media', @iSearchOrder + 1, 0, 'BxAlbumsSearchResultMediaCamera', 'modules/boonex/albums/classes/BxAlbumsSearchResultMediaCamera.php');
+
+
+-- METATAGS
+DELETE FROM `sys_objects_metatags` WHERE `object`='bx_albums_media_camera';
+INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums_media_camera', 'bx_albums_meta_keywords_media_camera', '', '', '', '');

+ 11 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/install/sql/install.sql

@@ -0,0 +1,11 @@
+ALTER TABLE `bx_albums_files2albums` ADD `exif` text NOT NULL;
+
+CREATE TABLE IF NOT EXISTS `bx_albums_meta_keywords_media_camera` (
+  `object_id` int(10) unsigned NOT NULL,
+  `keyword` varchar(255) NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `keyword` (`keyword`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+UPDATE `sys_transcoder_filters` SET `filter_params`='a:1:{s:1:"h";s:3:"180";}' WHERE `transcoder_object`='bx_albums_browse';
+UPDATE `sys_transcoder_filters` SET `filter_params`='a:2:{s:1:"h";s:3:"180";s:10:"force_type";s:3:"jpg";}' WHERE `transcoder_object`='bx_albums_video_poster_browse'; 

+ 145 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsConfig.php

@@ -0,0 +1,145 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxAlbumsConfig extends BxBaseModTextConfig
+{
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $aMenuItems2Methods = array (
+            'edit-album' => 'checkAllowedEdit',
+            'delete-album' => 'checkAllowedDelete',
+        );
+
+        $this->CNF = array (
+
+            // module icon
+            'ICON' => 'picture-o col-blue1',
+
+            // database tables
+            'TABLE_ENTRIES' => $aModule['db_prefix'] . 'albums',
+            'TABLE_FILES2ENTRIES' => $aModule['db_prefix'] . 'files2albums',
+            'TABLE_FILES' => $aModule['db_prefix'] . 'files',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => 'author',
+            'FIELD_ADDED' => 'added',
+            'FIELD_CHANGED' => 'changed',
+            'FIELD_TITLE' => 'title',
+            'FIELD_TEXT' => 'text',
+            'FIELD_TEXT_ID' => 'album-desc',
+            'FIELD_ALLOW_VIEW_TO' => 'allow_view_to',
+            'FIELD_PHOTO' => 'pictures',
+            'FIELD_THUMB' => 'thumb',
+            'FIELD_COMMENTS' => 'comments',
+            'FIELD_LOCATION_PREFIX' => 'location',
+            'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
+
+            // page URIs
+            'URI_VIEW_ENTRY' => 'view-album',
+            'URI_VIEW_MEDIA' => 'view-album-media',
+            'URI_AUTHOR_ENTRIES' => 'albums-author',
+            'URI_ADD_ENTRY' => 'create-album',
+        	'URI_EDIT_ENTRY' => 'edit-album',
+        	'URI_MANAGE_COMMON' => 'albums-manage',
+
+            'URL_HOME' => 'page.php?i=albums-home',
+            'URL_POPULAR' => 'page.php?i=albums-popular',
+            'URL_UPDATED' => 'page.php?i=albums-updated',
+            'URL_POPULAR_MEDIA' => 'page.php?i=albums-popular-media',
+            'URL_RECENT_MEDIA' => 'page.php?i=albums-recent-media', // TODO: add page
+        	'URL_MANAGE_COMMON' => 'page.php?i=albums-manage',
+        	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=albums-administration',
+
+            // some params
+            'PARAM_CHARS_SUMMARY' => 'bx_albums_summary_chars',
+            'PARAM_CHARS_SUMMARY_PLAIN' => 'bx_albums_plain_summary_chars',
+            'PARAM_NUM_RSS' => 'bx_albums_rss_num',
+
+            // objects
+            'OBJECT_STORAGE' => 'bx_albums_files',
+            'OBJECT_IMAGES_TRANSCODER_PREVIEW' => 'bx_albums_proxy_preview',
+            'OBJECT_IMAGES_TRANSCODER_GALLERY' => '',
+            'OBJECT_IMAGES_TRANSCODER_BIG' => 'bx_albums_big',
+            'OBJECT_VIDEOS_TRANSCODERS' => array('poster' => 'bx_albums_video_poster_big', 'poster_preview' => 'bx_albums_video_poster_preview', 'mp4' => 'bx_albums_video_mp4', 'webm' => 'bx_albums_video_webm'),
+            'OBJECT_VIDEO_TRANSCODER_HEIGHT' => '480px',
+            'OBJECT_TRANSCODER_BROWSE' => 'bx_albums_proxy_browse',
+            'OBJECT_VIEWS' => 'bx_albums',
+            'OBJECT_VIEWS_MEDIA' => 'bx_albums_media',
+            'OBJECT_VOTES' => 'bx_albums',
+            'OBJECT_VOTES_MEDIA' => 'bx_albums_media',
+            'OBJECT_METATAGS' => 'bx_albums',
+            'OBJECT_METATAGS_MEDIA' => 'bx_albums_media',
+            'OBJECT_METATAGS_MEDIA_CAMERA' => 'bx_albums_media_camera',
+            'OBJECT_COMMENTS' => 'bx_albums',
+            'OBJECT_COMMENTS_MEDIA' => 'bx_albums_media',
+            'OBJECT_PRIVACY_VIEW' => 'bx_albums_allow_view_to',
+            'OBJECT_FORM_ENTRY' => 'bx_albums',
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW' => 'bx_albums_entry_view',
+            'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_albums_entry_add',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => 'bx_albums_entry_edit',
+            'OBJECT_FORM_ENTRY_DISPLAY_DELETE' => 'bx_albums_entry_delete',
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY' => 'bx_albums_view', // actions menu on view entry page
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY_POPUP' => 'bx_albums_view_popup', // actions menu popup on view entry page
+            'OBJECT_MENU_ACTIONS_MY_ENTRIES' => 'bx_albums_my', // actions menu on my entries page
+            'OBJECT_MENU_SUBMENU' => 'bx_albums_submenu', // main module submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY' => 'bx_albums_view_submenu', // view entry submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_MAIN_SELECTION' => 'albums-home', // first item in view entry submenu from main module submenu
+            'OBJECT_MENU_MANAGE_TOOLS' => 'bx_albums_menu_manage_tools', //manage menu in content administration tools
+            'OBJECT_GRID_ADMINISTRATION' => 'bx_albums_administration',
+        	'OBJECT_GRID_COMMON' => 'bx_albums_common',
+        	'OBJECT_UPLOADERS' => array('bx_albums_simple', 'bx_albums_html5'),
+
+            // menu items which visibility depends on custom visibility checking
+            'MENU_ITEM_TO_METHOD' => array (
+                'bx_albums_my' => array (
+                    'create-album' => 'checkAllowedAdd',
+                ),
+                'bx_albums_view' => $aMenuItems2Methods,
+                'bx_albums_view_popup' => $aMenuItems2Methods,
+            ),
+
+            // some language keys
+            'T' => array (
+                'txt_sample_single' => '_bx_albums_txt_sample_single',
+            	'txt_sample_comment_single' => '_bx_albums_txt_sample_comment_single',
+                'txt_media_single' => '_bx_albums_txt_media_single',
+                'txt_media_comment_single' => '_bx_albums_txt_media_comment_single',
+            	'grid_action_err_delete' => '_bx_albums_grid_action_err_delete',
+            	'grid_txt_account_manager' => '_bx_albums_grid_txt_account_manager',
+				'filter_item_active' => '_bx_albums_grid_filter_item_title_adm_active',
+            	'filter_item_hidden' => '_bx_albums_grid_filter_item_title_adm_hidden',
+            	'filter_item_select_one_filter1' => '_bx_albums_grid_filter_item_title_adm_select_one_filter1',
+            	'menu_item_manage_my' => '_bx_albums_menu_item_title_manage_my',
+            	'menu_item_manage_all' => '_bx_albums_menu_item_title_manage_all',
+                'txt_all_entries_by' => '_bx_albums_txt_all_entries_by',
+            ),
+        );
+
+        $this->_aJsClass = array(
+        	'manage_tools' => 'BxAlbumsManageTools'
+        );
+
+        $this->_aJsObjects = array(
+        	'manage_tools' => 'oBxAlbumsManageTools'
+        );
+
+        $this->_aGridObjects = array(
+        	'common' => $this->CNF['OBJECT_GRID_COMMON'],
+        	'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+        	
+        );
+    }
+}
+
+/** @} */

+ 70 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsDb.php

@@ -0,0 +1,70 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/*
+ * Module database queries
+ */
+class BxAlbumsDb extends BxBaseModTextDb
+{
+    function __construct(&$oConfig)
+    {
+        parent::__construct($oConfig);
+    }
+
+    public function associateFileWithContent($iContentId, $iFileId, $sTitle, $sData = '', $sExif = '')
+    {
+        $sQuery = $this->prepare ("SELECT MAX(`order`) FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` WHERE `content_id` = ?", $iContentId);
+        $iOrder = 1 + (int)$this->getOne($sQuery);
+        
+        $sQuery = $this->prepare ("INSERT INTO `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` SET `content_id` = ?, `file_id` = ?, `title` = ?, `data` = ?, `exif` = ?, `order` = ? ON DUPLICATE KEY UPDATE `title` = ?, `data` = ?, `exif` = ?", $iContentId, $iFileId, $sTitle, $sData, $sExif, $iOrder, $sTitle, $sData, $sExif);
+        return $this->res($sQuery);
+    }
+
+    public function deassociateFileWithContent($iContentId, $iFileId)
+    {
+        $sWhere = '';
+        if ($iContentId)
+            $sWhere .= $this->prepare (" AND `content_id` = ? ", $iContentId);
+
+        if ($iFileId)
+            $sWhere .= $this->prepare (" AND `file_id` = ? ", $iFileId);
+
+        $sQuery = "DELETE FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` WHERE 1 ";
+        return $this->query($sQuery . $sWhere);
+    }
+
+    public function getFileTitle($iFileId)
+    {
+        $sQuery = $this->prepare ("SELECT `title` FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` WHERE `file_id` = ?", $iFileId);
+        return $this->getOne($sQuery);
+    }
+
+    public function getMediaInfoById($iMediaId)
+    {
+        $sQuery = $this->prepare ("SELECT `f2e`.*, `f`.`added` FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` AS `f2e` INNER JOIN `" . $this->_oConfig->CNF['TABLE_FILES'] . "` AS `f` ON (`f`.`id` = `f2e`.`file_id`) INNER JOIN `" . $this->_oConfig->CNF['TABLE_ENTRIES'] . "` AS `e` ON (`e`.`id` = `f2e`.`content_id`) WHERE `f2e`.`id` = ?", $iMediaId);
+        return $this->getRow($sQuery);
+    }
+
+    public function getMediaInfoSimpleByFileId($iFileId)
+    {
+        $sQuery = $this->prepare ("SELECT * FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` WHERE `file_id` = ?", $iFileId);
+        return $this->getRow($sQuery);
+    }
+
+    public function getMediaListByContentId($iContentId)
+    {
+        $sQuery = $this->prepare ("SELECT * FROM `" . $this->_oConfig->CNF['TABLE_FILES2ENTRIES'] . "` WHERE `content_id` = ? ORDER BY `order`", $iContentId);
+        return $this->getAll($sQuery);
+    }
+
+}
+
+/** @} */

+ 93 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsFormEntry.php

@@ -0,0 +1,93 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Create/Edit entry form
+ */
+class BxAlbumsFormEntry extends BxBaseModTextFormEntry
+{
+    public function __construct($aInfo, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_albums';
+        parent::__construct($aInfo, $oTemplate);
+    }
+
+    protected function _associalFileWithContent($oStorage, $iFileId, $iProfileId, $iContentId)
+    {
+        parent::_associalFileWithContent($oStorage, $iFileId, $iProfileId, $iContentId);
+
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $sData = '';
+        $sExif = '';
+        $aExif = false;
+        $aFile = $oStorage->getFile($iFileId);
+        if (0 == strncmp('image/', $aFile['mime_type'], 6)) {
+            $oImageReize = BxDolImageResize::getInstance();
+
+            $oTranscoder = BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_IMAGES_TRANSCODER_BIG']);            
+            $a = $oImageReize->getImageSize($oTranscoder->getFileUrl($iFileId));
+            $sData = isset($a['w']) && isset($a['h']) ? $a['w'] . 'x' . $a['h'] : '';
+
+            if ($aExif = $oImageReize->getExifInfo($oStorage->getFileUrlById($iFileId))) {
+                $a = array('Make', 'Model', 'FocalLength', 'ShutterSpeedValue', 'ExposureTime', 'ISOSpeedRatings', 'Orientation', 'Artist', 'Copyright', 'Flash', 'WhiteBalance', 'DateTimeOriginal', 'DateTimeDigitized', 'ExifVersion', 'COMPUTED', 'GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude', 'GPSTimeStamp', 'GPSImgDirectionRef', 'GPSImgDirection', 'GPSDateStamp');
+                $aExifFiltered = array();
+                foreach ($a as $sIndex)
+                    if (isset($aExif[$sIndex]))
+                        $aExifFiltered[$sIndex] = $aExif[$sIndex];
+                $sExif = serialize($aExifFiltered);
+            }
+        }
+        
+        if (false === $this->_oModule->_oDb->associateFileWithContent ($iContentId, $iFileId, $this->getCleanValue('title-' . $iFileId), $sData, $sExif))
+            return;
+
+        $aMediaInfo = $this->_oModule->_oDb->getMediaInfoSimpleByFileId($iFileId);
+
+        if ($aMediaInfo && !empty($CNF['OBJECT_METATAGS_MEDIA'])) {            
+            $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA']);
+            if ($oMetatags->keywordsIsEnabled())
+                $oMetatags->keywordsAdd($aMediaInfo['id'], $aMediaInfo['title']);
+        }
+
+        if ($aMediaInfo && isset($aExif['Make']) && !empty($CNF['OBJECT_METATAGS_MEDIA_CAMERA'])) {
+            $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA_CAMERA']);
+            if ($oMetatags->keywordsIsEnabled())
+                $oMetatags->keywordsAddOne($aMediaInfo['id'], $oMetatags->keywordsCameraModel($aExif));
+        }
+    }
+
+    function _deleteFile ($iFileId)
+    {
+        if (!($bRet = parent::_deleteFile ($iFileId)))
+            return false;
+
+        $this->_oModule->serviceDeleteFileAssociations ($iFileId);
+
+        return true;
+    }
+
+    function delete ($iContentId, $aContentInfo = array())
+    {
+        if (!($bRet = parent::delete ($iContentId, $aContentInfo)))
+            return $bRet;
+
+        if (!($aMediaList = $this->_oModule->_oDb->getMediaListByContentId($iContentId)))
+            return $bRet;
+
+        foreach ($aMediaList as $aMediaInfo)
+            $this->_oModule->serviceDeleteFileAssociations($aMediaInfo['file_id']);
+
+        return $bRet;
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsMenuViewActions.php

@@ -0,0 +1,24 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Actions popup menu.
+ */
+class BxAlbumsMenuViewActions extends BxBaseModTextMenuViewActions
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_albums';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 195 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsModule.php

@@ -0,0 +1,195 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+bx_import('BxDolAcl');
+
+/**
+ * Albums module
+ */
+class BxAlbumsModule extends BxBaseModTextModule
+{
+    protected $_aContexts = array('popular', 'public', 'author');
+
+    function __construct(&$aModule)
+    {
+        parent::__construct($aModule);
+    }
+
+    public function serviceDeleteFileAssociations($iFileId)
+    {        
+        $CNF = &$this->_oConfig->CNF;
+
+        if (!($aMediaInfo = $this->_oDb->getMediaInfoSimpleByFileId($iFileId))) // file is already deleted
+            return true; 
+    
+        if (!$this->_oDb->deassociateFileWithContent(0, $iFileId))
+            return false;
+
+        if (!empty($CNF['OBJECT_VIEWS_MEDIA'])) {
+            $o = BxDolView::getObjectInstance($CNF['OBJECT_VIEWS_MEDIA'], $aMediaInfo['id']);
+            if ($o) $o->onObjectDelete();
+        }
+
+        if (!empty($CNF['OBJECT_VOTES_MEDIA'])) {
+            $o = BxDolVote::getObjectInstance($CNF['OBJECT_VOTES_MEDIA'], $aMediaInfo['id']);
+            if ($o) $o->onObjectDelete();
+        }
+
+        if (!empty($CNF['OBJECT_COMMENTS_MEDIA'])) {
+            $o = BxDolCmts::getObjectInstance($CNF['OBJECT_COMMENTS_MEDIA'], $aMediaInfo['id']);
+            if ($o) $o->onObjectDelete();
+        }
+
+        if (!empty($CNF['OBJECT_METATAGS_MEDIA'])) {
+            $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA']);
+            $oMetatags->onDeleteContent($aMediaInfo['id']);
+        }
+
+        if (!empty($CNF['OBJECT_METATAGS_MEDIA_CAMERA'])) {
+            $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA_CAMERA']);
+            $oMetatags->onDeleteContent($aMediaInfo['id']);
+        }
+
+        return true;
+    }
+
+    public function serviceMediaExif ($iMediaId = 0)
+    {
+        return $this->_serviceTemplateFunc ('mediaExif', $iMediaId, 'getMediaInfoById');
+    }
+
+    public function serviceMediaComments ($iMediaId = 0)
+    {
+        return $this->_entityComments($this->_oConfig->CNF['OBJECT_COMMENTS_MEDIA'], $iMediaId);
+    }
+
+    public function serviceMediaAuthor ($iMediaId = 0)
+    {
+        return $this->_serviceTemplateFunc ('mediaAuthor', $iMediaId, 'getMediaInfoById');
+    }
+
+    public function serviceMediaSocialSharing ($iMediaId = 0, $bEnableCommentsBtn = false, $bEnableSocialSharing = true)
+    {
+        if (!$iMediaId)
+            $iMediaId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if (!$iMediaId)
+            return false;
+        $aMediaInfo = $this->_oDb->getMediaInfoById($iMediaId);
+        if (!$aMediaInfo)
+            return false;
+
+        $CNF = &$this->_oConfig->CNF;
+
+        return $this->_entitySocialSharing ($iMediaId, 0, $aMediaInfo['file_id'], $aMediaInfo['title'], false, $CNF['OBJECT_IMAGES_TRANSCODER_BIG'], $CNF['OBJECT_VOTES_MEDIA'], $CNF['URI_VIEW_MEDIA'], $bEnableCommentsBtn ? $CNF['OBJECT_COMMENTS_MEDIA'] : '', $bEnableSocialSharing);
+    }
+
+    public function serviceMediaView ($iMediaId = 0, $mixedContext = false)
+    {
+        if (!$iMediaId)
+            $iMediaId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if (!$iMediaId)
+            return false;
+
+        if (!$mixedContext) {
+            $mixedContext = bx_process_input(bx_get('context'));
+            if (!in_array($mixedContext, $this->_aContexts)) // when no context specified, it is assumed that it is an album context
+                $mixedContext = bx_process_input($mixedContext, BX_DATA_INT); // numeric context is reserved for future use
+        }
+
+        return $this->_oTemplate->entryMediaView ($iMediaId, $mixedContext);
+    }
+
+    public function checkAllowedSetThumb ()
+    {
+        return CHECK_ACTION_RESULT_NOT_ALLOWED;
+    }
+
+    public function serviceBrowseRecentMedia ($sUnitView = false, $bDisplayEmptyMsg = true, $bAjaxPaginate = true)
+    {
+        return $this->_serviceBrowse ('recent', array('unit_view' => $sUnitView), BX_DB_PADDING_DEF, $bDisplayEmptyMsg, $bAjaxPaginate, 'SearchResultMedia');
+    }
+
+    public function serviceBrowsePopularMedia ($sUnitView = false, $bDisplayEmptyMsg = true, $bAjaxPaginate = true)
+    {
+        return $this->_serviceBrowse ('popular', array('unit_view' => $sUnitView), BX_DB_PADDING_DEF, $bDisplayEmptyMsg, $bAjaxPaginate, 'SearchResultMedia');
+    }
+
+    public function actionGetSiblingMedia($iMediaId, $mixedContext)
+    {
+        $aSiblings = false;
+        $sErrorMsg = false;
+        if (!($aMediaInfo = $this->_oDb->getMediaInfoById((int)$iMediaId))) 
+            $sErrorMsg = _t('_sys_txt_error_occured');
+
+        if (empty($sErrorMsg) && !($aContentInfo = $this->_oDb->getContentInfoById($aMediaInfo['content_id'])))
+            $sErrorMsg = _t('_sys_txt_error_occured');
+
+        if (empty($sErrorMsg) && (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->checkAllowedView($aContentInfo))))
+            $sErrorMsg = $sMsg;
+
+        if (empty($sErrorMsg)) {
+            $aSiblings = array (
+                'next' => $this->_oTemplate->getNextPrevMedia($aMediaInfo, true, $mixedContext),
+                'prev' => $this->_oTemplate->getNextPrevMedia($aMediaInfo, false, $mixedContext),
+            );
+        }
+    
+        $a = $sErrorMsg ? array('error' => $sErrorMsg) : array('next' => $aSiblings['next'], 'prev' => $aSiblings['prev']);
+
+        $s = json_encode($a);
+
+        header('Content-type: text/html; charset=utf-8');
+        echo $s;
+    }
+
+    public function actionRssMedia ()
+    {
+        $aArgs = func_get_args();
+        $this->_rss($aArgs, 'SearchResultMedia');
+    }
+
+    protected function _buildRssParams($sMode, $aArgs)
+    {        
+        if ($aParams = parent::_buildRssParams($sMode, $aArgs))
+            return $aParams;
+
+        $sMode = bx_process_input($sMode);
+        switch ($sMode) {
+            case 'album':
+                $aParams = array('album_id' => isset($aArgs[0]) ? (int)$aArgs[0] : '');
+                break;
+        }
+
+        return $aParams;
+    }
+
+    protected function _getImagesForTimelinePost($aEvent, $aContentInfo, $sUrl)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        if (!($aMediaList = $this->_oDb->getMediaListByContentId($aContentInfo[$CNF['FIELD_ID']])))
+            return array();
+
+        $oTranscoder = BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_IMAGES_TRANSCODER_PREVIEW']);
+        $aMediaList = array_slice($aMediaList, 0, 5);
+        $aOutput = array();
+        foreach ($aMediaList as $aMedia) {
+            $aOutput[] = array (
+                'url' => $this->_oTemplate->getViewMediaUrl($CNF, $aMedia['id']), 
+                'src' => $oTranscoder->getFileUrl($aMedia['file_id']),
+            );
+        }
+
+        return $aOutput;
+    }
+}
+
+/** @} */

+ 36 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsPageEntry.php

@@ -0,0 +1,36 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Entry create/edit pages
+ */
+class BxAlbumsPageEntry extends BxBaseModTextPageEntry
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_albums';
+        parent::__construct($aObject, $oTemplate);
+    }
+
+    protected function _getThumbForMetaObject ()
+    {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        if (!($aMediaList = $this->_oModule->_oDb->getMediaListByContentId($this->_aContentInfo[$CNF['FIELD_ID']])))
+            return false;
+
+        $aMedia = array_shift($aMediaList);
+
+        return array('id' => $aMedia['file_id'], 'object' => $CNF['OBJECT_STORAGE']);
+    }
+}
+
+/** @} */

+ 113 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsPageMedia.php

@@ -0,0 +1,113 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+bx_import('BxDolAcl');
+
+/**
+ * Entry create/edit pages
+ */
+class BxAlbumsPageMedia extends BxTemplPage
+{
+    protected $MODULE;
+    protected $_oModule;
+    protected $_aAlbumInfo = false;
+    protected $_aMediaInfo = false;
+    protected $_mixedContext = false;
+
+    public function __construct($aObject, $oTemplate = false)
+    {        
+        parent::__construct($aObject, $oTemplate);
+        $this->MODULE = 'bx_albums';
+        $this->_oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $iMediaId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if ($iMediaId)
+            $this->_aMediaInfo = $this->_oModule->_oDb->getMediaInfoById($iMediaId);
+
+        if ($this->_aMediaInfo)
+            $this->_aAlbumInfo = $this->_oModule->_oDb->getContentInfoById($this->_aMediaInfo['content_id']);
+
+        if ($this->_aAlbumInfo) {
+            $this->addMarkers(array_merge($this->_aAlbumInfo, $this->_aMediaInfo)); // every field can be used as marker
+            $this->addMarkers(array(
+                'title' => !empty($this->_aMediaInfo['title']) ? $this->_aMediaInfo['title'] : _t('_bx_albums_txt_media_title_alt', $this->_aAlbumInfo[$CNF['FIELD_TITLE']]),
+            ));
+
+            $sTitle = isset($this->_aAlbumInfo[$CNF['FIELD_TITLE']]) ? $this->_aAlbumInfo[$CNF['FIELD_TITLE']] : strmaxtextlen($this->_aAlbumInfo[$CNF['FIELD_TEXT']], 20, '...');
+            $sUrl = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $this->_aAlbumInfo[$CNF['FIELD_ID']]);
+
+            // select view entry submenu
+            $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
+            $oMenuSubmenu->setObjectSubmenu($CNF['OBJECT_MENU_SUBMENU_VIEW_ENTRY'], array (
+                'title' => $sTitle,
+                'link' => $sUrl,
+                'icon' => $CNF['ICON'],
+            ));
+        }
+    }
+
+    public function getCode ()
+    {
+        // check if content exists
+        if (!$this->_aAlbumInfo || !$this->_aMediaInfo) { // if entry is not found - display standard "404 page not found" page
+            $this->_oTemplate->displayPageNotFound();
+            exit;
+        }
+
+        // permissions check 
+        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->_oModule->checkAllowedView($this->_aAlbumInfo))) {
+            $this->_oTemplate->displayAccessDenied($sMsg);
+            exit;
+        }
+        $this->_oModule->checkAllowedView($this->_aAlbumInfo, true);
+
+        // count views
+        $CNF = &$this->_oModule->_oConfig->CNF;
+        if (!empty($CNF['OBJECT_VIEWS_MEDIA']))
+            BxDolView::getObjectInstance($CNF['OBJECT_VIEWS_MEDIA'], $this->_aMediaInfo['id'])->doView();
+
+        // add content metatags
+        if (!empty($CNF['OBJECT_METATAGS_MEDIA'])) {
+            $o = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA']);
+            if ($o) {
+                $aThumb = false;
+                if (!empty($this->_aMediaInfo['file_id']) && !empty($CNF['OBJECT_IMAGES_TRANSCODER_BIG']))
+                    $aThumb = array('id' => $this->_aMediaInfo['file_id'], 'transcoder' => $CNF['OBJECT_IMAGES_TRANSCODER_BIG']);
+                $o->metaAdd($this->_aMediaInfo['id'], $aThumb);
+            }
+        }
+
+        $aVars = array();
+        $this->_oTemplate->addInjection ('injection_footer', 'text', $this->_oModule->_oTemplate->parseHtmlByName('photoswipe.html', $aVars));
+
+        return parent::getCode ();
+    }
+
+    protected function _addJsCss()
+    {
+        parent::_addJsCss();
+
+        $this->_oModule->_oTemplate->addCss(array(
+            BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/|photoswipe.css',
+            BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/default-skin/|default-skin.css',
+        ));
+
+        $this->_oModule->_oTemplate->addJs(array(
+            'media_view.js',
+            'history.js',
+            'photo-swipe/photoswipe.min.js',
+            'photo-swipe/photoswipe-ui-default.min.js',
+        ));
+    }
+}
+
+/** @} */

+ 144 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResult.php

@@ -0,0 +1,144 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxAlbumsSearchResult extends BxBaseModTextSearchResult
+{
+    function __construct($sMode = '', $aParams = array())
+    {
+        $this->aUnitViews = array('extended' => 'unit.html');
+    
+        if (empty($aParams['unit_view']))
+            $aParams['unit_view'] = 'extended';
+
+        parent::__construct($sMode, $aParams);
+
+        $this->aCurrent = array(
+            'name' => 'bx_albums',
+            'module_name' => 'bx_albums',
+            'object_metatags' => 'bx_albums',
+            'title' => _t('_bx_albums_page_title_browse'),
+            'table' => 'bx_albums_albums',
+            'ownFields' => array('id', 'title', 'text', 'thumb', 'author', 'added'),
+            'searchFields' => array('title', 'text'),
+            'restriction' => array(
+                'author' => array('value' => '', 'field' => 'author', 'operator' => '='),
+        		'status' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
+            ),
+            'paginate' => array('perPage' => getParam('bx_albums_per_page_browse'), 'start' => 0),
+            'sorting' => 'last',
+            'rss' => array(
+                'title' => '',
+                'link' => '',
+                'image' => '',
+                'profile' => 0,
+                'fields' => array (
+                    'Guid' => 'link',
+                    'Link' => 'link',
+                    'Title' => 'title',
+                    'DateTimeUTS' => 'added',
+                    'Desc' => 'text',
+                ),
+            ),
+            'ident' => 'id',
+        );
+
+        $this->sFilterName = 'bx_albums_filter';
+        $this->oModule = $this->getMain();
+
+        $oProfileAuthor = null;
+
+        $CNF = &$this->oModule->_oConfig->CNF;
+
+        switch ($sMode) {
+
+            case 'author':
+                $oProfileAuthor = BxDolProfile::getInstance((int)$aParams['author']);
+                if (!$oProfileAuthor) {
+                    $this->isError = true;
+                    break;
+                }
+
+                $this->aCurrent['restriction']['author']['value'] = $oProfileAuthor->id();
+
+                $this->sBrowseUrl = 'page.php?i=' . $CNF['URI_AUTHOR_ENTRIES'] . '&profile_id={profile_id}';
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_by_author');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode . '/' . $oProfileAuthor->id();
+                break;
+
+            case 'public':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_HOME']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_recent');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode;
+                break;
+
+            case 'popular':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_POPULAR']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_popular');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode;
+                $this->aCurrent['sorting'] = 'popular';
+                break;
+
+            case 'updated':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_UPDATED']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_updated');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode;
+                $this->aCurrent['sorting'] = 'updated';
+                break;
+
+            case '': // search results
+                $this->sBrowseUrl = BX_DOL_SEARCH_KEYWORD_PAGE;
+                $this->aCurrent['title'] = _t('_bx_albums');
+                $this->aCurrent['paginate']['perPage'] = 3;
+                unset($this->aCurrent['rss']);
+                break;
+
+            default:
+                $sMode = '';
+                $this->isError = true;
+        }
+
+        $this->processReplaceableMarkers($oProfileAuthor);
+
+        $this->addConditionsForPrivateContent($CNF, $oProfileAuthor);
+    }
+
+    function displayResultBlock ()
+    {
+        $s = parent::displayResultBlock ();
+        $s = '<div class="bx-albums-wrapper ' . ('unit_gallery.html' == $this->sUnitTemplate ? 'bx-def-margin-neg bx-clearfix' : '') . '">' . $s . '</div>';
+        return $s;
+    }
+
+    function getAlterOrder()
+    {
+        $aSql = array();
+        switch ($this->aCurrent['sorting']) {
+            case 'last':
+                $aSql['order'] = ' ORDER BY `bx_albums_albums`.`added` DESC';
+                break;
+            case 'updated':
+                $aSql['order'] = ' ORDER BY `bx_albums_albums`.`changed` DESC';
+                break;
+            case 'popular':
+                $aSql['order'] = ' ORDER BY `bx_albums_albums`.`views` DESC';
+                break;
+        }
+
+        return $aSql;
+    }
+
+    function getDesignBoxMenu ()
+    {
+        return BxBaseModGeneralSearchResult::getDesignBoxMenu ();
+    }
+}
+
+/** @} */

+ 183 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResultMedia.php

@@ -0,0 +1,183 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
+{
+    protected $sOrderDirection = 'DESC';
+
+    function __construct($sMode = '', $aParams = array())
+    {
+        $this->sCenterContentUnitSelector = '.bx-albums-unit-size';
+
+        $this->aUnitViews = array('gallery' => 'unit_media.html');
+
+        $this->sUnitTemplateLiveSearch = 'unit_media_live_search.html';
+    
+        if (empty($aParams['unit_view']))
+            $aParams['unit_view'] = 'gallery';
+
+        parent::__construct($sMode, $aParams);
+
+        $this->aCurrent = array(
+            'name' => 'bx_albums_media',
+            'module_name' => 'bx_albums',
+            'object_metatags' => 'bx_albums_media',
+            'title' => _t('_bx_albums_media'),
+            'table' => 'bx_albums_files2albums',
+            'ownFields' => array('id', 'title', 'data', 'content_id', 'file_id', 'order', 'views'),
+            'searchFields' => array('title'),
+            'restriction_sql' => '',
+            'restriction' => array(
+                'author' => array('value' => '', 'field' => 'author', 'operator' => '='),
+                'album' => array('value' => '', 'field' => 'content_id', 'operator' => '='),
+            ),
+            'join' => array(
+                'albums' => array(
+                    'type' => 'INNER',
+                    'table' => 'bx_albums_albums',
+                    'mainField' => 'content_id',
+                    'onField' => 'id',
+                    'joinFields' => array(),
+                ),
+                'files' => array(
+                    'type' => 'INNER',
+                    'table' => 'bx_albums_files',
+                    'table_alias' => 'f',
+                    'mainField' => 'file_id',
+                    'onField' => 'id',
+                    'joinFields' => array('added'),
+                ),
+            ),
+            'paginate' => array('perPage' => getParam('bx_albums_per_page_browse'), 'start' => 0),
+            'sorting' => 'last',
+            'rss' => array(
+                'title' => '',
+                'link' => '',
+                'image' => '',
+                'profile' => 0,
+                'fields' => array (
+                    'Guid' => 'link',
+                    'Link' => 'link',
+                    'Title' => 'title',
+                    'DateTimeUTS' => 'added',
+                    'Desc' => 'title',
+                ),
+            ),
+            'ident' => 'id',
+        );
+
+        $this->sFilterName = 'bx_albums_filter';
+        $this->oModule = $this->getMain();
+
+        $oProfileAuthor = null;
+
+        $CNF = &$this->oModule->_oConfig->CNF;
+
+        switch ($sMode) {
+            case 'album':
+                $this->aCurrent['restriction']['album']['value'] = (int)$aParams['album_id'];
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . (int)$aParams['album_id']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_media_in_album');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss_media/' . $sMode . '/' . (int)$aParams['album_id'];
+                $this->aCurrent['sorting'] = 'order';
+                $this->sOrderDirection = 'ASC';
+                break;
+
+            case 'recent':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_RECENT_MEDIA']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_recent_media');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss_media/' . $sMode; 
+                $this->aCurrent['sorting'] = 'last';
+                break;
+
+            case 'popular':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_POPULAR_MEDIA']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_popular_media');
+                $this->aCurrent['rss']['link'] = BxDolPermalinks::getInstance()->permalink('modules/?r=albums/rss_media/' . $sMode);
+                $this->aCurrent['sorting'] = 'popular';
+                break;
+
+            case '': // search results
+                $this->sBrowseUrl = BX_DOL_SEARCH_KEYWORD_PAGE;
+                $this->aCurrent['paginate']['perPage'] = 3;
+                unset($this->aCurrent['rss']);
+                break;
+
+            default:
+                $sMode = '';
+                $this->isError = true;
+        }
+
+        $this->sBrowseUrl = $this->_replaceMarkers($this->sBrowseUrl);
+        $this->aCurrent['title'] = $this->_replaceMarkers($this->aCurrent['title']);
+
+        $this->addConditionsForPrivateContent($CNF, $oProfileAuthor);
+    }
+
+    function getAlterOrder()
+    {
+        $aSql = array();
+        switch ($this->aCurrent['sorting']) {
+            case 'order':
+                $aSql['order'] = " ORDER BY `{$this->aCurrent['table']}`.`order` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection} ";
+                break;
+            case 'last':
+                $aSql['order'] = " ORDER BY `f`.`added` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection} ";
+                break;
+            case 'popular':
+                $aSql['order'] = " ORDER BY `{$this->aCurrent['table']}`.`views` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection}";
+                break;
+        }
+        return $aSql;
+    }
+
+    public function getNextPrevItem($aMediaInfo, $isNext)
+    {
+        $sOper = $isNext ? '<' : '>';
+
+        $this->sOrderDirection = $isNext ? 'DESC' : 'ASC';
+        $this->aCurrent['paginate']['perPage'] = 1;
+        $this->aCurrent['restriction']['next_prev2'] = array('value' => $aMediaInfo['id'], 'field' => 'id', 'operator' => '!=');
+
+        switch ($this->aCurrent['sorting']) {
+            case 'order':
+                $this->sOrderDirection = $isNext ? 'ASC' : 'DESC';
+                $sOper = $isNext ? '>' : '<';
+                $this->aCurrent['restriction_sql'] = " AND (`{$this->aCurrent['table']}`.`order` {$sOper} {$aMediaInfo['order']} OR (`{$this->aCurrent['table']}`.`order` = {$aMediaInfo['order']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
+                break;
+            case 'last':
+                $this->aCurrent['restriction_sql'] = " AND (`f`.`added` {$sOper} {$aMediaInfo['added']} OR (`f`.`added` = {$aMediaInfo['added']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
+                break;
+            case 'popular':
+                $this->aCurrent['restriction_sql'] = " AND (`{$this->aCurrent['table']}`.`views` {$sOper} {$aMediaInfo['views']} OR (`{$this->aCurrent['table']}`.`views` = {$aMediaInfo['views']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
+                break;
+        }
+
+        $aData = $this->getSearchData();
+        if (count($aData) > 0)
+            return array_shift($aData);
+
+        return false;
+    }
+
+    function getRssUnitLink (&$a)
+    {
+        return BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $this->oModule->_oConfig->CNF['URI_VIEW_MEDIA'] . '&id=' . $a['id']);
+    }
+
+    function displaySearchUnit ($aData)
+    {
+        $oMain = $this->getMain();
+        return $oMain->_oTemplate->unit($aData, $this->bProcessPrivateContent, $this->_bLiveSearch ? $this->sUnitTemplateLiveSearch : $this->sUnitTemplate, $this->aUnitParams);
+    }
+}
+
+/** @} */

+ 25 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsSearchResultMediaCamera.php

@@ -0,0 +1,25 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+bx_import('SearchResultMedia', 'bx_albums');
+
+class BxAlbumsSearchResultMediaCamera extends BxAlbumsSearchResultMedia
+{
+
+    function __construct($sMode = '', $aParams = array())
+    {
+        parent::__construct($sMode, $aParams);
+        $this->aCurrent['name'] = 'bx_albums_media_camera';
+        $this->aCurrent['object_metatags'] = 'bx_albums_media_camera';
+    }
+}
+
+/** @} */

+ 384 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/classes/BxAlbumsTemplate.php

@@ -0,0 +1,384 @@
+<?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    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/*
+ * Module representation.
+ */
+class BxAlbumsTemplate extends BxBaseModTextTemplate
+{
+    /**
+     * Constructor
+     */
+    function __construct(&$oConfig, &$oDb)
+    {
+        $this->MODULE = 'bx_albums';
+        parent::__construct($oConfig, $oDb);
+    }
+
+    function unit ($aData, $isCheckPrivateContent = true, $sTemplateName = 'unit.html', $aParams = array())
+    {
+        if ('unit_media.html' == $sTemplateName || 'unit_media_live_search.html' == $sTemplateName)
+            return $this->unitMedia($aData, $isCheckPrivateContent, $sTemplateName, $aParams);
+
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        if ($s = $this->checkPrivacy ($aData, $isCheckPrivateContent, $oModule))
+            return $s;
+
+        // get entry url        
+        $sUrl = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $aData[$CNF['FIELD_ID']]);
+
+        $oProfile = BxDolProfile::getInstance($aData[$CNF['FIELD_AUTHOR']]);
+        if (!$oProfile) 
+            $oProfile = BxDolProfileUndefined::getInstance();
+
+        $oTranscoder = BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_TRANSCODER_BROWSE']);
+
+        $aBrowseUnits = array ();
+        $aMediaList = $oModule->_oDb->getMediaListByContentId($aData[$CNF['FIELD_ID']]);
+        foreach ($aMediaList as $k => $a) {
+            $aBrowseUnits[] = array (
+                'img_url' => $oTranscoder->getFileUrl($a['file_id']),
+                'url' => $this->getViewMediaUrl($CNF, $a['id']),
+                'title_attr' => bx_html_attribute($a['title']),
+            );
+        }
+
+        // generate html
+        $aVars = array (
+            'id' => $aData[$CNF['FIELD_ID']],
+            'content_url' => $sUrl,
+            'title' => bx_process_output($aData[$CNF['FIELD_TITLE']]),
+            'author' => $oProfile->getDisplayName(),
+            'author_url' => $oProfile->getUrl(),
+            'entry_posting_date' => bx_time_js($aData[$CNF['FIELD_ADDED']], BX_FORMAT_DATE),
+            'module_name' => _t($CNF['T']['txt_sample_single']),
+            'ts' => $aData[$CNF['FIELD_ADDED']],
+            'bx_repeat:browse' => $aBrowseUnits,
+
+            'bx_if:thumb' => array (
+                'condition' => $aBrowseUnits,
+                'content' => array (
+                    'title' => bx_process_output($aData[$CNF['FIELD_TITLE']]),
+                    'summary_attr' => '',
+                    'content_url' => $sUrl,
+                    'thumb_url' => $aBrowseUnits ? $aBrowseUnits[0]['img_url'] : '',
+                    'gallery_url' => '',
+                    'strecher' => '',
+                ),
+            ),
+            'bx_if:no_thumb' => array (
+                'condition' => !$aBrowseUnits,
+                'content' => array (
+                    'content_url' => $sUrl,
+                    'summary_plain' => '',
+                    'strecher' => '',
+                ),
+            ),
+
+        );
+
+        return $this->parseHtmlByName($sTemplateName, $aVars);
+    }
+
+    function unitMedia ($aData, $isCheckPrivateContent = true, $sTemplateName = 'unit.html', $aParams = array())
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        if (!($aMediaInfo = $oModule->_oDb->getMediaInfoById($aData['id'])))
+            return '';
+
+        $oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE']);
+        if (!($aFile = $oStorage->getFile($aMediaInfo['file_id'])))
+            return '';
+
+        $aVars = $this->mediaVars($aMediaInfo, $CNF['OBJECT_IMAGES_TRANSCODER_PREVIEW'], $CNF['OBJECT_VIDEOS_TRANSCODERS']['poster_preview'], $aParams);
+    
+        $aVarsTmp = $aVars['bx_if:image']['condition'] ? $aVars['bx_if:image']['content'] : $aVars['bx_if:video']['content'];
+
+        $aVars = array_merge($aVars, array (
+            'title' => $this->getMediaTitle($aData),
+            'module_name' => _t($CNF['T']['txt_media_single']),
+            'content_url' => $aVarsTmp['url'],
+            'ts' => $aFile['added'],
+            'actions' => $oModule->serviceMediaSocialSharing($aData['id'], true, false),
+            'bx_if:thumb' => array (
+                'condition' => $aData['file_id'],
+                'content' => array (
+                    'title' => bx_process_output($aData['title']),
+                    'summary_attr' => '',
+                    'content_url' => $aVarsTmp['url'],
+                    'thumb_url' => $aVarsTmp['url_img'],
+                    'gallery_url' => '',
+                    'strecher' => '',
+                ),
+            ),
+            'bx_if:no_thumb' => array (
+                'condition' => false,
+                'content' => array (),
+            ),
+
+        ));
+
+        return $this->parseHtmlByName($sTemplateName, $aVars);
+    }
+
+    function entryMediaView ($iMediaId, $mixedContext = false)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        if (!($aMediaInfo = $oModule->_oDb->getMediaInfoById($iMediaId)))
+            return '';
+
+        if (!($aAlbumInfo = $oModule->_oDb->getContentInfoById($aMediaInfo['content_id'])))
+            return '';        
+
+        $sUrlAlbum = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $aAlbumInfo[$CNF['FIELD_ID']]);
+         
+        $sText = $this->getMediaTitle($aMediaInfo);
+
+        $iProfileId = $aAlbumInfo[$CNF['FIELD_AUTHOR']];
+        $oProfile = BxDolProfile::getInstance($iProfileId);
+        if (!$oProfile) 
+            $oProfile = BxDolProfileUndefined::getInstance();
+
+        $aVars = array(
+            'title' => $sText,
+            'album' => _t('_bx_albums_txt_media_album_link', $sUrlAlbum,  bx_process_output($aAlbumInfo[$CNF['FIELD_TITLE']]), $oProfile->getUrl(), $oProfile->getDisplayName()),
+        );
+
+        $aNextPrev = array (
+            'next' => $this->getNextPrevMedia($aMediaInfo, true, $mixedContext),
+            'prev' => $this->getNextPrevMedia($aMediaInfo, false, $mixedContext),
+        );
+
+        foreach ($aNextPrev as $k => $a) {
+            $aVars['bx_if:' . $k] = array (
+                'condition' => $a,
+                'content' => $a,
+            );
+            $aVars['bx_if:' . $k . '-na'] = array (
+                'condition' => !$a,
+                'content' => array(),
+            );
+        }
+
+        $aVars = array_merge($aVars, $this->mediaVars($aMediaInfo, $CNF['OBJECT_IMAGES_TRANSCODER_BIG'], $CNF['OBJECT_VIDEOS_TRANSCODERS']['poster'], array('context' => $mixedContext)));
+
+        return $this->parseHtmlByName('media-view.html', $aVars);
+    }
+
+    protected function mediaVars ($aMediaInfo, $sImageTranscoder = false, $sVideoPosterTranscoder = false, $aParams = array())
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        $oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE']);
+        $oTranscoder = BxDolTranscoderImage::getObjectInstance($sImageTranscoder);
+        $aTranscodersVideo = false;
+
+        if ($CNF['OBJECT_VIDEOS_TRANSCODERS'])
+            $aTranscodersVideo = array (
+                'poster' => BxDolTranscoderImage::getObjectInstance($sVideoPosterTranscoder),
+                'mp4' => BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_VIDEOS_TRANSCODERS']['mp4']),
+                'webm' => BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_VIDEOS_TRANSCODERS']['webm']),
+            );
+        
+        $aFileInfo = $oStorage->getFile ($aMediaInfo['file_id']);
+        if (!$aFileInfo)
+            return '';
+
+        $isImage = 0 == strncmp('image/', $aFileInfo['mime_type'], 6); // preview for images, transcoder object for preview must be defined
+        $isVideo = $aTranscodersVideo && (0 == strncmp('video/', $aFileInfo['mime_type'], 6)); // preview for videos, transcoder object for video must be defined
+
+        $sMediaTitle = bx_process_output($aMediaInfo['title']);
+        $sMediaTitleAttr = bx_html_attribute($aMediaInfo['title']);
+        $mixedContext = isset($aParams['context']) ? $aParams['context'] : '';
+        $sUrl = $this->getViewMediaUrl($CNF, $aMediaInfo['id'], $mixedContext);
+        $aSize = $aMediaInfo['data'] ? explode('x', $aMediaInfo['data']) : array(0, 0);
+
+        $aVars = array(
+            'bx_if:image' => array (
+                'condition' => $isImage,
+                'content' => array (
+                    'title_attr' => $sMediaTitleAttr,
+                    'title' => $sMediaTitle,
+                    'url' => $sUrl,
+                    'url_img' => $oTranscoder ? $oTranscoder->getFileUrl($aFileInfo['id']) : $oStorage->getFileUrlById($aFileInfo['id']),
+                    'media_id' => $aMediaInfo['id'],
+                    'w' => $aSize[0],
+                    'h' => $aSize[1],
+                    'context' => $mixedContext,
+                ),
+            ),
+            'bx_if:video' => array (
+                'condition' => $isVideo,
+                'content' => array (
+                    'title_attr' => $sMediaTitleAttr,
+                    'title' => $sMediaTitle,
+                    'url' => $sUrl,
+                    'url_img' => $isVideo ? $aTranscodersVideo['poster']->getFileUrl($aMediaInfo['file_id']) : '',
+                    'video' => $isVideo && $aTranscodersVideo ? BxTemplFunctions::getInstance()->videoPlayer(
+                        $aTranscodersVideo['poster']->getFileUrl($aMediaInfo['file_id']), 
+                        $aTranscodersVideo['mp4']->getFileUrl($aMediaInfo['file_id']), 
+                        $aTranscodersVideo['webm']->getFileUrl($aMediaInfo['file_id']),
+                        false, 'max-height:' . $CNF['OBJECT_VIDEO_TRANSCODER_HEIGHT']
+                    ) : '',
+                ),
+            ),
+        );
+
+        return $aVars;
+    }
+
+    public function getViewMediaUrl($CNF, $iMediaId, $sContext = '')
+    {
+        return BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_MEDIA'] . '&id=' . $iMediaId . (!empty($sContext) ? '&context=' . $sContext : ''));
+    }
+
+    public function getNextPrevMedia($aMediaInfo, $isNext, $sContext, $aParamsSearchResult = array())
+    {
+        if (!$sContext) {
+            $sContext = 'album';
+            $aParamsSearchResult = array('album_id' => $aMediaInfo['content_id']);
+        }
+
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        bx_import('SearchResultMedia', $oModule->_aModule);
+        $sClass = $oModule->_aModule['class_prefix'] . 'SearchResultMedia';
+        $o = new $sClass($sContext, $aParamsSearchResult);
+        if ($o->isError)
+            return false;
+
+        $o->setUnitParams(array('context' => $sContext));
+
+        $a = $o->getNextPrevItem($aMediaInfo, $isNext);
+    
+        if ($a) {
+
+            $aVars = $this->mediaVars($a, $CNF['OBJECT_IMAGES_TRANSCODER_BIG'], $CNF['OBJECT_VIDEOS_TRANSCODERS']['poster'], array('context' => $sContext));
+            $aMedia = $aVars['bx_if:image']['condition'] ? $aVars['bx_if:image']['content'] : $aVars['bx_if:video']['content'];
+
+            $a['url'] = $aMedia['url'];
+            $a['url_img'] = $aMedia['url_img'];
+            $a['title_attr'] = $aMedia['title_attr'];
+            $a['title_js_string'] = bx_js_string($aMedia['title']);
+            $a['w'] = $aVars['bx_if:image']['condition'] ? $aVars['bx_if:image']['content']['w'] : 0;
+            $a['h'] = $aVars['bx_if:image']['condition'] ? $aVars['bx_if:image']['content']['h'] : 0;
+            $a['html'] = $aVars['bx_if:video']['condition'] ? '<div class="pswp__video">' . $aVars['bx_if:video']['content']['video'] . '</div>': 0;
+        }
+
+        return $a;
+    }
+
+    function entryAttachments ($aData)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        return $oModule->_serviceBrowse ('album', array('unit_view' => 'gallery', 'album_id' => $aData[$CNF['FIELD_ID']]), BX_DB_PADDING_DEF, true, true, 'SearchResultMedia');
+    }
+
+    function mediaAuthor ($aMediaInfo, $iProfileId = false, $sFuncAuthorDesc = '', $sTemplateName = '') 
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        if (!($aAlbumInfo = $oModule->_oDb->getContentInfoById($aMediaInfo['content_id'])))
+            return '';
+
+        return $this->entryAuthor ($aMediaInfo, $aAlbumInfo[$CNF['FIELD_AUTHOR']], 'getMediaDesc');
+    }
+
+    function getMediaDesc ($aData)
+    {
+        return _t('_sys_txt_n_by', bx_time_js($aData['added'], BX_FORMAT_DATE));
+    }
+
+    function getMediaTitle ($aMediaInfo)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+         
+        $sText = bx_process_output($aMediaInfo['title']);
+        if (!empty($CNF['OBJECT_METATAGS_MEDIA'])) {
+            $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA']);
+    
+            if ($oMetatags->keywordsIsEnabled())
+                $sText = $oMetatags->keywordsParse($aMediaInfo['id'], $sText);
+        }
+
+        return $sText;
+    }
+
+    function mediaExif ($aMediaInfo, $iProfileId = false, $sFuncAuthorDesc = '', $sTemplateName = 'media-exif.html') 
+    {
+        if (!$aMediaInfo['exif'])
+            return '';
+
+        $a = unserialize($aMediaInfo['exif']);
+
+        $s = '';
+        if (isset($a['Make'])) {
+            $oModule = BxDolModule::getInstance($this->MODULE);
+            $CNF = &$oModule->_oConfig->CNF;
+
+            $sCamera = BxDolMetatags::keywordsCameraModel($a);
+            if (!empty($CNF['OBJECT_METATAGS_MEDIA_CAMERA'])) {
+                $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA_CAMERA']);
+                if ($oMetatags->keywordsIsEnabled()) {
+                    $sCamera = $oMetatags->keywordsParseOne($aMediaInfo['id'], $sCamera);
+                }
+            }       
+            $s .= $this->parseHtmlByName('media-exif-value.html', array(
+                'key' => _t('_bx_albums_txt_media_album_camera'), 
+                'val' => $sCamera,
+            ));
+        }
+
+        if (isset($a['FocalLength']))
+            $s .= $this->parseHtmlByName('media-exif-value.html', array(
+                'key' => _t('_bx_albums_txt_media_album_focal_length'),
+                'val' => _t('_bx_albums_txt_media_album_focal_length_value', $a['FocalLength']),
+            ));
+
+        if (isset($a['COMPUTED']['ApertureFNumber']))
+            $s .= $this->parseHtmlByName('media-exif-value.html', array(
+                'key' => _t('_bx_albums_txt_media_album_aperture'),
+                'val' => $a['COMPUTED']['ApertureFNumber'],
+            ));
+
+        if (isset($a['ExposureTime']))
+            $s .= $this->parseHtmlByName('media-exif-value.html', array(
+                'key' => _t('_bx_albums_txt_media_album_shutter_speed'),
+                'val' => _t('_bx_albums_txt_media_album_shutter_speed_value', $a['ExposureTime']),
+            ));
+
+        if (isset($a['ISOSpeedRatings']))
+            $s .= $this->parseHtmlByName('media-exif-value.html', array(
+                'key' => _t('_bx_albums_txt_media_album_iso'),
+                'val' => $a['ISOSpeedRatings'],
+            ));
+
+        if (empty($s))
+            return '';
+
+        return $this->parseHtmlByName($sTemplateName, array('content' => $s));
+    }
+
+}
+
+/** @} */

+ 122 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/config.php

@@ -0,0 +1,122 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Albums Albums
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_albums',
+    'title' => 'Albums',
+    'note' => 'Photos & videos',
+    'version' => '8.0.1',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/albums/',
+    'home_uri' => 'albums',
+
+    'db_prefix' => 'bx_albums_',
+    'class_prefix' => 'BxAlbums',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Albums',
+
+    /**
+     * Menu triggers.
+     */
+    'menu_triggers' => array(
+    	'trigger_profile_view_submenu'
+    ),
+
+    /**
+     * Storages.
+     */
+    'storages' => array(
+    	'bx_albums_files'
+    ),
+
+    /**
+     * Transcoders.
+     */
+    'transcoders' => array(
+		'bx_albums_preview',
+        'bx_albums_browse',
+        'bx_albums_big',
+        'bx_albums_video_poster_browse',
+        'bx_albums_video_poster_preview',
+        'bx_albums_video_poster_big',
+        'bx_albums_video_mp4',
+        'bx_albums_video_webm',
+    ),
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+    	'process_storages' => 1,
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    	'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+    	'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable_success' => array(
+    	'process_menu_triggers' => 1,
+    	'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+    	'update_relations' => 1,
+    	'unregister_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable_failed' => array (
+    	'register_transcoders' => 1,
+    	'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+    /**
+     * Connections Section
+     */
+    'relations' => array(
+    	'bx_timeline',
+    	'bx_notifications'
+    ),
+
+);
+
+/** @} */

+ 175 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/langs/en.xml

@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+
+	<string name="_bx_albums"><![CDATA[Albums]]></string>
+	<string name="_bx_albums_cmts"><![CDATA[Albums' Comments]]></string>
+	<string name="_bx_albums_media"><![CDATA[Images]]></string>
+	<string name="_bx_albums_media_cmts"><![CDATA[Images' Comments]]></string>
+
+	<string name="_bx_albums_option_summary_chars"><![CDATA[Number of characters in auto-cropped album summary]]></string>
+	<string name="_bx_albums_option_plain_summary_chars"><![CDATA[Number of characters in plain album description when album hasn't thumb]]></string>
+	<string name="_bx_albums_option_per_page_browse"><![CDATA[Number of items per page]]></string>
+	<string name="_bx_albums_option_rss_num"><![CDATA[Number of items in RSS feed]]></string>
+
+	<string name="_bx_albums_form_entry"><![CDATA[Albums]]></string>
+	<string name="_bx_albums_form_entry_display_add"><![CDATA[Add Album]]></string>
+	<string name="_bx_albums_form_entry_display_edit"><![CDATA[Edit Album]]></string>
+	<string name="_bx_albums_form_entry_display_delete"><![CDATA[Delete Album]]></string>
+	<string name="_bx_albums_form_entry_display_view"><![CDATA[View Album]]></string>
+	<string name="_bx_albums_form_entry_input_sys_do_submit"><![CDATA[Submit]]></string>
+	<string name="_bx_albums_form_entry_input_do_submit"><![CDATA[Submit]]></string>
+	<string name="_bx_albums_form_entry_input_sys_title"><![CDATA[Caption]]></string>
+	<string name="_bx_albums_form_entry_input_title"><![CDATA[Caption]]></string>
+	<string name="_bx_albums_form_entry_input_title_err"><![CDATA[Caption is essential. Please, fill in this field]]></string>
+	<string name="_bx_albums_form_entry_input_sys_text"><![CDATA[Album Description]]></string>
+	<string name="_bx_albums_form_entry_input_text"><![CDATA[Album Description]]></string>
+	<string name="_bx_albums_form_entry_input_sys_delete_confirm"><![CDATA[Delete confirmation]]></string>
+	<string name="_bx_albums_form_entry_input_delete_confirm"><![CDATA[I am sure I want to delete this album]]></string>
+	<string name="_bx_albums_form_entry_input_delete_confirm_info"><![CDATA[This action can not be undone]]></string>
+	<string name="_bx_albums_form_entry_input_delete_confirm_error"><![CDATA[Please check this checkbox if you really want to delete the album]]></string>
+	<string name="_bx_albums_form_entry_input_sys_pictures"><![CDATA[Pictures]]></string>
+	<string name="_bx_albums_form_entry_input_pictures"><![CDATA[Pictures]]></string>
+    <string name="_bx_albums_form_entry_input_sys_allow_view_to"><![CDATA[Visibility]]></string>
+    <string name="_bx_albums_form_entry_input_allow_view_to"><![CDATA[Visibility]]></string>
+	<string name="_bx_albums_form_entry_file_title"><![CDATA[Caption]]></string>
+
+	<string name="_bx_albums_acl_action_create_entry"><![CDATA[Create Album]]></string>
+	<string name="_bx_albums_acl_action_delete_entry"><![CDATA[Delete Album]]></string>
+	<string name="_bx_albums_acl_action_view_entry"><![CDATA[View Album]]></string>
+	<string name="_bx_albums_acl_action_set_thumb"><![CDATA[Set Album Cover]]></string>
+	<string name="_bx_albums_acl_action_edit_any_entry"><![CDATA[Edit Any Album]]></string>
+
+	<string name="_bx_albums_page_title_sys_create_entry"><![CDATA[New Album]]></string>
+	<string name="_bx_albums_page_title_create_entry"><![CDATA[New Album]]></string>
+	<string name="_bx_albums_page_block_title_create_entry"><![CDATA[New Album]]></string>
+	<string name="_bx_albums_page_title_sys_edit_entry"><![CDATA[Edit Album]]></string>
+	<string name="_bx_albums_page_title_edit_entry"><![CDATA[Edit Album]]></string>
+	<string name="_bx_albums_page_block_title_edit_entry"><![CDATA[Edit Album]]></string>
+    <string name="_bx_albums_page_title_sys_delete_entry"><![CDATA[Delete Album]]></string>
+    <string name="_bx_albums_page_title_delete_entry"><![CDATA[Delete Album]]></string>
+    <string name="_bx_albums_page_block_title_delete_entry"><![CDATA[Delete Album]]></string>
+	<string name="_bx_albums_page_title_sys_view_entry"><![CDATA[View Album]]></string>
+	<string name="_bx_albums_page_title_view_entry"><![CDATA[{title}]]></string>
+	<string name="_bx_albums_page_title_sys_view_media"><![CDATA[View Image]]></string>
+	<string name="_bx_albums_page_title_view_media"><![CDATA[{title}]]></string>
+	<string name="_bx_albums_page_block_title_entry_view_media"><![CDATA[View Image]]></string>
+	<string name="_bx_albums_page_block_title_entry_view_media_exif"><![CDATA[EXIF]]></string>
+	<string name="_bx_albums_page_block_title_entry_attachments"><![CDATA[Attachments]]></string>
+	<string name="_bx_albums_page_block_title_entry_text"><![CDATA[Album Description]]></string>
+	<string name="_bx_albums_page_title_browse"><![CDATA[Albums]]></string>
+	<string name="_bx_albums_page_title_search_results"><![CDATA[Albums matching "{0}"]]></string>
+	<string name="_bx_albums_page_title_browse_by_author"><![CDATA[{display_name}'s Albums]]></string>
+    <string name="_bx_albums_page_title_browse_recent"><![CDATA[Recent Albums]]></string>
+    <string name="_bx_albums_page_title_browse_popular"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_page_title_browse_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_page_title_browse_recent_media"><![CDATA[Recent Images]]></string>
+    <string name="_bx_albums_page_title_browse_media_in_album"><![CDATA[Images]]></string>
+    <string name="_bx_albums_page_title_browse_updated"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_page_title_sys_home"><![CDATA[Albums Home]]></string>
+    <string name="_bx_albums_page_title_home"><![CDATA[Albums]]></string>
+    <string name="_bx_albums_page_block_title_recent_entries"><![CDATA[Recent Albums]]></string>
+    <string name="_bx_albums_page_block_title_entry_social_sharing"><![CDATA[Share]]></string>
+    <string name="_bx_albums_page_block_title_entry_author"><![CDATA[Author]]></string>
+    <string name="_bx_albums_page_block_title_entry_actions"><![CDATA[Actions]]></string>
+    <string name="_bx_albums_page_block_title_entry_comments"><![CDATA[Comments]]></string>
+    <string name="_bx_albums_page_block_title_entry_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string>
+    <string name="_bx_albums_page_block_title_entry_location"><![CDATA[Location]]></string>
+    <string name="_bx_albums_page_title_sys_entries_popular"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_page_title_entries_popular"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_page_title_sys_entries_updated"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_page_title_entries_updated"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_page_title_sys_entries_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_page_title_entries_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_page_block_title_popular_entries"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_page_block_title_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_page_block_title_recent_media"><![CDATA[Recent Images]]></string>
+    <string name="_bx_albums_page_block_title_updated_entries"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_page_title_sys_view_entry_comments"><![CDATA[Album Comments]]></string>
+    <string name="_bx_albums_page_title_view_entry_comments"><![CDATA[Comments to {title}]]></string>
+    <string name="_bx_albums_page_title_sys_entries_of_author"><![CDATA[Albums of author]]></string>
+    <string name="_bx_albums_page_title_entries_of_author"><![CDATA[{display_name}'s albums]]></string>
+    <string name="_bx_albums_page_block_title_entries_of_author"><![CDATA[Albums by <a href="{profile_link}">{display_name}</a>]]></string>   
+    <string name="_bx_albums_page_block_title_sys_entries_of_author"><![CDATA[Albums of author]]></string>   
+    <string name="_bx_albums_page_block_title_entries_actions"><![CDATA[Albums actions]]></string>
+    <string name="_bx_albums_page_block_title_browse_cmts"><![CDATA[Albums' Comments]]></string>
+    <string name="_bx_albums_page_block_title_browse_cmts_media"><![CDATA[Images Comments]]></string>
+	<string name="_bx_albums_page_title_sys_manage"><![CDATA[Manage Own Albums]]></string>
+	<string name="_bx_albums_page_title_sys_manage_administration"><![CDATA[Manage All Albums]]></string>
+	<string name="_bx_albums_page_title_manage"><![CDATA[Manage Albums]]></string>
+	<string name="_bx_albums_page_block_title_system_manage"><![CDATA[Manage Own Albums]]></string>
+	<string name="_bx_albums_page_block_title_system_manage_administration"><![CDATA[Manage All Albums]]></string>
+	<string name="_bx_albums_page_block_title_manage"><![CDATA[Manage Albums]]></string>
+	<string name="_bx_albums_page_block_title_popular_keywords_albums"><![CDATA[Popular Albums Hashtags]]></string>
+	<string name="_bx_albums_page_block_title_popular_keywords_media"><![CDATA[Popular Media Hashtags]]></string>
+	<string name="_bx_albums_page_block_title_popular_keywords_media_camera"><![CDATA[Popular Cameras]]></string>
+
+    <string name="_bx_albums_menu_set_title_view_entry"><![CDATA[Album Actions]]></string>
+    <string name="_bx_albums_menu_title_view_entry"><![CDATA[Album Actions]]></string>
+    <string name="_bx_albums_menu_title_view_entry_popup"><![CDATA[Album Popup Actions]]></string>
+    <string name="_bx_albums_menu_title_submenu"><![CDATA[Albums Submenu]]></string>
+    <string name="_bx_albums_menu_set_title_submenu"><![CDATA[Albums Submenu]]></string>
+    <string name="_bx_albums_menu_item_title_system_create_entry"><![CDATA[New Album]]></string>
+    <string name="_bx_albums_menu_item_title_create_entry"><![CDATA[New Album]]></string>
+    <string name="_bx_albums_menu_item_title_system_edit_entry"><![CDATA[Edit Album]]></string>
+    <string name="_bx_albums_menu_item_title_edit_entry"><![CDATA[Edit Album]]></string>
+    <string name="_bx_albums_menu_item_title_system_delete_entry"><![CDATA[Delete Album]]></string>
+    <string name="_bx_albums_menu_item_title_delete_entry"><![CDATA[Delete Album]]></string>
+    <string name="_bx_albums_menu_item_title_system_view_entry"><![CDATA[View Album]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_home"><![CDATA[Albums]]></string>
+    <string name="_bx_albums_menu_item_title_entries_home"><![CDATA[Albums]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_recent"><![CDATA[Recent Albums]]></string>
+    <string name="_bx_albums_menu_item_title_entries_recent"><![CDATA[Recent Albums]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_manage"><![CDATA[Manage Albums]]></string>
+    <string name="_bx_albums_menu_item_title_entries_manage"><![CDATA[Manage Albums]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_popular"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_menu_item_title_entries_popular"><![CDATA[Popular Albums]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_updated"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_menu_item_title_entries_updated"><![CDATA[Updated Albums]]></string>
+    <string name="_bx_albums_menu_item_title_system_entries_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_menu_item_title_entries_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_menu_title_view_entry_submenu"><![CDATA[View Album Submenu]]></string>
+    <string name="_bx_albums_menu_set_title_view_entry_submenu"><![CDATA[View Album Submenu]]></string>
+    <string name="_bx_albums_menu_item_title_view_entry_submenu_entry"><![CDATA[Album]]></string>
+    <string name="_bx_albums_menu_item_title_view_entry_submenu_comments"><![CDATA[Album Comments]]></string>
+    <string name="_bx_albums_menu_item_title_system_view_entry_comments"><![CDATA[Album Comments]]></string>
+    <string name="_bx_albums_menu_item_title_system_view_entries_author"><![CDATA[Albums]]></string>
+    <string name="_bx_albums_menu_item_title_view_entries_author"><![CDATA[Albums]]></string>
+    <string name="_bx_albums_menu_title_entries_my"><![CDATA[My Albums Action Menu]]></string>
+    <string name="_bx_albums_menu_set_title_entries_my"><![CDATA[My Albums Menu]]></string>
+	<string name="_bx_albums_menu_item_title_system_manage_my_albums"><![CDATA[My albums]]></string>
+    <string name="_bx_albums_menu_item_title_manage_my_albums"><![CDATA[{addon} albums]]></string>
+    <string name="_bx_albums_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+    <string name="_bx_albums_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+	<string name="_bx_albums_menu_item_title_system_admt_albums"><![CDATA[Albums]]></string>
+	<string name="_bx_albums_menu_item_title_admt_albums"><![CDATA[Albums - {addon} hidden]]></string>
+	<string name="_bx_albums_menu_item_title_manage_my"><![CDATA[My Albums]]></string>
+	<string name="_bx_albums_menu_item_title_manage_all"><![CDATA[All Albums]]></string>
+
+	<string name="_bx_albums_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+	<string name="_bx_albums_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+	<string name="_bx_albums_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
+	<string name="_bx_albums_grid_column_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_albums_grid_column_title_adm_title"><![CDATA[Caption]]></string>
+    <string name="_bx_albums_grid_column_title_adm_added"><![CDATA[Added]]></string>
+    <string name="_bx_albums_grid_column_title_adm_author"><![CDATA[Author]]></string>
+    <string name="_bx_albums_grid_action_title_adm_edit"><![CDATA[Edit]]></string>
+    <string name="_bx_albums_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_albums_grid_action_title_adm_more_actions"><![CDATA[More Actions]]></string>
+    <string name="_bx_albums_grid_action_err_delete"><![CDATA[Cannot delete the selected album(s).]]></string>
+    <string name="_bx_albums_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
+
+    <string name="_bx_albums_txt_all_entries_by"><![CDATA[<a href="{0}">All Albums by {1} ({2})</a>]]></string>
+    <string name="_bx_albums_txt_sample_single"><![CDATA[album]]></string>
+    <string name="_bx_albums_txt_sample_comment_single"><![CDATA[album's comment]]></string>    
+    <string name="_bx_albums_txt_media_single"><![CDATA[image]]></string>
+    <string name="_bx_albums_txt_media_comment_single"><![CDATA[image's comment]]></string>
+	<string name="_bx_albums_txt_media_title_alt"><![CDATA[{0}'s media]]></string>
+	<string name="_bx_albums_txt_media_album_link"><![CDATA[<a href="{0}">{1}</a> album by <a href="{2}">{3}</a>]]></string>
+	<string name="_bx_albums_txt_media_album_camera"><![CDATA[Camera]]></string>
+	<string name="_bx_albums_txt_media_album_focal_length"><![CDATA[Focal length]]></string>
+	<string name="_bx_albums_txt_media_album_focal_length_value"><![CDATA[{0}mm]]></string>
+	<string name="_bx_albums_txt_media_album_aperture"><![CDATA[Aperture]]></string>
+	<string name="_bx_albums_txt_media_album_shutter_speed"><![CDATA[Exposure time]]></string>
+	<string name="_bx_albums_txt_media_album_shutter_speed_value"><![CDATA[{0}s]]></string>
+	<string name="_bx_albums_txt_media_album_iso"><![CDATA[ISO]]></string>
+</resources>

+ 43 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/disable.sql

@@ -0,0 +1,43 @@
+
+-- SETTINGS
+SET @iTypeId = (SELECT `ID` FROM `sys_options_types` WHERE `name` = 'bx_albums' LIMIT 1);
+SET @iCategId = (SELECT `ID` FROM `sys_options_categories` WHERE `type_id` = @iTypeId LIMIT 1);
+DELETE FROM `sys_options` WHERE `category_id` = @iCategId;
+DELETE FROM `sys_options_categories` WHERE `type_id` = @iTypeId;
+DELETE FROM `sys_options_types` WHERE `id` = @iTypeId;
+
+-- PAGES
+DELETE FROM `sys_objects_page` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_albums' OR `object` IN('bx_albums_create_entry', 'bx_albums_edit_entry', 'bx_albums_delete_entry', 'bx_albums_view_entry', 'bx_albums_view_entry_comments', 'bx_albums_home', 'bx_albums_popular', 'bx_albums_updated', 'bx_albums_author', 'bx_albums_view_media', 'bx_albums_popular_media');
+
+-- MENU
+DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_menu_items` WHERE `module` = 'bx_albums' OR `set_name` IN('bx_albums_view', 'bx_albums_submenu', 'bx_albums_view_submenu', 'bx_albums_my');
+
+-- PRIVACY 
+DELETE FROM `sys_objects_privacy` WHERE `object` = 'bx_albums_allow_view_to';
+
+-- ACL
+DELETE `sys_acl_actions`, `sys_acl_matrix` FROM `sys_acl_actions`, `sys_acl_matrix` WHERE `sys_acl_matrix`.`IDAction` = `sys_acl_actions`.`ID` AND `sys_acl_actions`.`Module` = 'bx_albums';
+DELETE FROM `sys_acl_actions` WHERE `Module` = 'bx_albums';
+
+-- SEARCH
+DELETE FROM `sys_objects_search` WHERE `ObjectName` IN ('bx_albums', 'bx_albums_cmts', 'bx_albums_media', 'bx_albums_media_camera', 'bx_albums_media_cmts');
+
+-- METATAGS
+DELETE FROM `sys_objects_metatags` WHERE `object` IN('bx_albums', 'bx_albums_media', 'bx_albums_media_camera');
+
+-- GRIDS
+DELETE FROM `sys_objects_grid` WHERE `object` IN ('bx_albums_administration', 'bx_albums_common');
+DELETE FROM `sys_grid_fields` WHERE `object` IN ('bx_albums_administration', 'bx_albums_common');
+DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_albums_administration', 'bx_albums_common');
+
+-- UPLOADERS
+DELETE FROM `sys_objects_uploader` WHERE `object` IN('bx_albums_simple', 'bx_albums_html5');
+
+-- ALERTS
+SET @iHandler := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_albums' LIMIT 1);
+DELETE FROM `sys_alerts` WHERE `handler_id` = @iHandler;
+DELETE FROM `sys_alerts_handlers` WHERE `id` = @iHandler;
+

+ 386 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/enable.sql

@@ -0,0 +1,386 @@
+
+-- 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_albums', '_bx_albums', 'bx_albums@modules/boonex/albums/|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_albums', '_bx_albums', 1);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `check`, `check_error`, `extra`, `order`) VALUES
+('bx_albums_summary_chars', '700', @iCategId, '_bx_albums_option_summary_chars', 'digit', '', '', '', 1),
+('bx_albums_plain_summary_chars', '200', @iCategId, '_bx_albums_option_plain_summary_chars', 'digit', '', '', '', 2),
+('bx_albums_per_page_browse', '12', @iCategId, '_bx_albums_option_per_page_browse', 'digit', '', '', '', 10),
+('bx_albums_rss_num', '10', @iCategId, '_bx_albums_option_rss_num', 'digit', '', '', '', 20);
+
+-- 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_albums_create_entry', '_bx_albums_page_title_sys_create_entry', '_bx_albums_page_title_create_entry', 'bx_albums', 5, 2147483647, 1, 'create-album', 'page.php?i=create-album', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_albums_create_entry', 1, 'bx_albums', '_bx_albums_page_block_title_create_entry', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:13:"entity_create";}', 0, 1, 1);
+
+
+-- PAGE: edit 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_albums_edit_entry', '_bx_albums_page_title_sys_edit_entry', '_bx_albums_page_title_edit_entry', 'bx_albums', 5, 2147483647, 1, 'edit-album', '', '', '', '', 0, 1, 0, 'BxAlbumsPageEntry', 'modules/boonex/albums/classes/BxAlbumsPageEntry.php');
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_albums_edit_entry', 1, 'bx_albums', '_bx_albums_page_block_title_edit_entry', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:11:"entity_edit";}', 0, 0, 0);
+
+
+-- PAGE: delete 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_albums_delete_entry', '_bx_albums_page_title_sys_delete_entry', '_bx_albums_page_title_delete_entry', 'bx_albums', 5, 2147483647, 1, 'delete-album', '', '', '', '', 0, 1, 0, 'BxAlbumsPageEntry', 'modules/boonex/albums/classes/BxAlbumsPageEntry.php');
+
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_albums_delete_entry', 1, 'bx_albums', '_bx_albums_page_block_title_delete_entry', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:13:"entity_delete";}', 0, 0, 0);
+
+
+-- PAGE: view 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_albums_view_entry', '_bx_albums_page_title_sys_view_entry', '_bx_albums_page_title_view_entry', 'bx_albums', 10, 2147483647, 1, 'view-album', '', '', '', '', 0, 1, 0, 'BxAlbumsPageEntry', 'modules/boonex/albums/classes/BxAlbumsPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_view_entry', 4, 'bx_albums', '_bx_albums_page_block_title_entry_text', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 1, 0),
+('bx_albums_view_entry', 4, 'bx_albums', '_bx_albums_page_block_title_entry_attachments', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:18:\"entity_attachments\";}', 0, 0, 1, 1),
+('bx_albums_view_entry', 4, 'bx_albums', '_bx_albums_page_block_title_entry_location', 3, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:13:\"locations_map\";s:6:\"params\";a:2:{i:0;s:9:\"bx_albums\";i:1;s:4:\"{id}\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 0, 0, 1, 2),
+('bx_albums_view_entry', 4, 'bx_albums', '_bx_albums_page_block_title_entry_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 1, 3),
+('bx_albums_view_entry', 1, 'bx_albums', '_bx_albums_page_block_title_entry_actions', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:14:\"entity_actions\";}', 0, 0, 1, 0),
+('bx_albums_view_entry', 2, 'bx_albums', '_bx_albums_page_block_title_entry_author', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:13:\"entity_author\";}', 0, 0, 1, 0),
+('bx_albums_view_entry', 3, 'bx_albums', '_bx_albums_page_block_title_entry_social_sharing', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:21:\"entity_social_sharing\";}', 0, 0, 1, 0);
+
+
+-- PAGE: view media
+
+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_albums_view_media', 'view-album-media', '_bx_albums_page_title_sys_view_media', '_bx_albums_page_title_view_media', 'bx_albums', 10, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxAlbumsPageMedia', 'modules/boonex/albums/classes/BxAlbumsPageMedia.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_view_media', 1, 'bx_albums', '', '_bx_albums_page_block_title_entry_view_media', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:10:\"media_view\";}', 0, 0, 1, 0),
+('bx_albums_view_media', 2, 'bx_albums', '', '_bx_albums_page_block_title_entry_author', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:12:\"media_author\";}', 0, 0, 1, 0),
+('bx_albums_view_media', 3, 'bx_albums', '', '_bx_albums_page_block_title_entry_social_sharing', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:20:\"media_social_sharing\";}', 0, 0, 1, 0),
+('bx_albums_view_media', 4, 'bx_albums', '', '_bx_albums_page_block_title_entry_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:14:\"media_comments\";}', 0, 0, 1, 0),
+('bx_albums_view_media', 4, 'bx_albums', '', '_bx_albums_page_block_title_entry_view_media_exif', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:10:\"media_exif\";}', 0, 0, 1, 1);
+
+
+-- PAGE: view entry comments
+
+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_albums_view_entry_comments', '_bx_albums_page_title_sys_view_entry_comments', '_bx_albums_page_title_view_entry_comments', 'bx_albums', 5, 2147483647, 1, 'view-album-comments', '', '', '', '', 0, 1, 0, 'BxAlbumsPageEntry', 'modules/boonex/albums/classes/BxAlbumsPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_view_entry_comments', 1, 'bx_albums', '_bx_albums_page_block_title_entry_comments', '_bx_albums_page_block_title_entry_comments_link', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 1);
+
+
+-- PAGE: popular albums
+
+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_albums_popular', '_bx_albums_page_title_sys_entries_popular', '_bx_albums_page_title_entries_popular', 'bx_albums', 5, 2147483647, 1, 'albums-popular', 'page.php?i=albums-popular', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_popular', 1, 'bx_albums', '_bx_albums_page_block_title_popular_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_albums";s:6:"method";s:14:"browse_popular";s:6:"params";a:3:{s:9:"unit_view";s:8:"extended";s:13:"empty_message";b:1;s:13:"ajax_paginate";b:0;}}', 0, 1, 1);
+
+-- PAGE: updated albums
+
+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_albums_updated', '_bx_albums_page_title_sys_entries_updated', '_bx_albums_page_title_entries_updated', 'bx_albums', 5, 2147483647, 1, 'albums-updated', 'page.php?i=albums-updated', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_updated', 1, 'bx_albums', '_bx_albums_page_block_title_updated_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_albums";s:6:"method";s:14:"browse_updated";s:6:"params";a:3:{s:9:"unit_view";s:8:"extended";s:13:"empty_message";b:1;s:13:"ajax_paginate";b:0;}}', 0, 1, 1);
+
+-- PAGE: popular media
+
+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_albums_popular_media', '_bx_albums_page_title_sys_entries_popular_media', '_bx_albums_page_title_entries_popular_media', 'bx_albums', 5, 2147483647, 1, 'albums-popular-media', 'page.php?i=albums-popular-media', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowseMedia', 'modules/boonex/albums/classes/BxAlbumsPageBrowseMedia.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_popular_media', 1, 'bx_albums', '_bx_albums_page_block_title_popular_media', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_albums";s:6:"method";s:20:"browse_popular_media";s:6:"params";a:3:{s:9:"unit_view";s:7:"gallery";s:13:"empty_message";b:1;s:13:"ajax_paginate";b:0;}}', 0, 1, 1);
+
+-- PAGE: entries of author
+
+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_albums_author', 'albums-author', '_bx_albums_page_title_sys_entries_of_author', '_bx_albums_page_title_entries_of_author', 'bx_albums', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxAlbumsPageAuthor', 'modules/boonex/albums/classes/BxAlbumsPageAuthor.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_author', 1, 'bx_albums', '', '_bx_albums_page_block_title_entries_actions', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:18:\"my_entries_actions\";}', 0, 0, 1, 0),
+('bx_albums_author', 1, 'bx_albums', '_bx_albums_page_block_title_sys_entries_of_author', '_bx_albums_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:13:\"browse_author\";}', 0, 0, 1, 1);
+
+-- PAGE: module home
+
+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_albums_home', 'albums-home', '_bx_albums_page_title_sys_home', '_bx_albums_page_title_home', 'bx_albums', 2, 2147483647, 1, 'page.php?i=albums-home', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_albums_home', 1, 'bx_albums', '', '_bx_albums_page_block_title_recent_entries', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:13:\"browse_public\";s:6:\"params\";a:3:{s:9:\"unit_view\";s:8:\"extended\";s:13:\"empty_message\";b:1;s:13:\"ajax_paginate\";b:0;}}', 0, 1, 1, 0),
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_albums', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:9:\"bx_albums\";i:1;s:9:\"bx_albums\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 0),
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:15:\"bx_albums_media\";i:1;s:15:\"bx_albums_media\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 1),
+('bx_albums_home', 2, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media_camera', 11, 2147483647, 'service', 'a:4:{s:6:\"module\";s:6:\"system\";s:6:\"method\";s:14:\"keywords_cloud\";s:6:\"params\";a:2:{i:0;s:22:\"bx_albums_media_camera\";i:1;s:22:\"bx_albums_media_camera\";}s:5:\"class\";s:20:\"TemplServiceMetatags\";}', 1, 0, 1, 2);
+
+-- PAGE: module manage own
+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_albums_manage', '_bx_albums_page_title_sys_manage', '_bx_albums_page_title_manage', 'bx_albums', 5, 2147483647, 1, 'albums-manage', 'page.php?i=albums-manage', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_manage', 1, 'bx_albums', '_bx_albums_page_block_title_system_manage', '_bx_albums_page_block_title_manage', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:12:\"manage_tools\";}}', 0, 1, 0);
+
+-- PAGE: module manage all
+INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_albums_administration', '_bx_albums_page_title_sys_manage_administration', '_bx_albums_page_title_manage', 'bx_albums', 5, 192, 1, 'albums-administration', 'page.php?i=albums-administration', '', '', '', 0, 1, 0, 'BxAlbumsPageBrowse', 'modules/boonex/albums/classes/BxAlbumsPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_albums_administration', 1, 'bx_albums', '_bx_albums_page_block_title_system_manage_administration', '_bx_albums_page_block_title_manage', 11, 192, 'service', 'a:3:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:12:\"manage_tools\";s:6:\"params\";a:1:{i:0;s:14:\"administration\";}}', 0, 1, 0);
+
+-- PAGE: add block to homepage
+
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = 'sys_home' AND `cell_id` = 1 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`, `active`, `order`) VALUES 
+('sys_home', 1, 'bx_albums', '_bx_albums_page_block_title_recent_entries', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_albums\";s:6:\"method\";s:13:\"browse_public\";}', 1, 0, 0, IFNULL(@iBlockOrder, 0) + 1);
+
+-- PAGE: service blocks
+
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_recent_media', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_albums";s:6:"method";s:20:"browse_popular_media";s:6:"params";a:3:{s:9:"unit_view";s:7:"gallery";s:13:"empty_message";b:1;s:13:"ajax_paginate";b:1;}}', 0, 1, 1, @iBlockOrder + 1),
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_albums', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:9:"bx_albums";i:1;s:9:"bx_albums";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 2),
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:15:"bx_albums_media";i:1;s:15:"bx_albums_media";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 3),
+('', 0, 'bx_albums', '', '_bx_albums_page_block_title_popular_keywords_media_camera', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:14:"keywords_cloud";s:6:"params";a:2:{i:0;s:22:"bx_albums_media_camera";i:1;s:22:"bx_albums_media_camera";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, @iBlockOrder + 4);
+
+
+-- MENU: add to site menu
+
+SET @iSiteMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_site' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_site', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'picture-o col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
+
+-- MENU: add to homepage menu
+
+SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_homepage', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'picture-o col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+
+-- MENU: add to "add content" menu
+
+SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_add_content_links', 'bx_albums', 'create-album', '_bx_albums_menu_item_title_system_create_entry', '_bx_albums_menu_item_title_create_entry', 'page.php?i=create-album', '', '', 'picture-o col-blue1', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+
+
+-- 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_albums_view', '_bx_albums_menu_title_view_entry', 'bx_albums_view', 'bx_albums', 9, 0, 1, 'BxAlbumsMenuView', 'modules/boonex/albums/classes/BxAlbumsMenuView.php'),
+('bx_albums_view_popup', '_bx_albums_menu_title_view_entry_popup', '', 'bx_albums', 16, 0, 1, 'BxAlbumsMenuViewActions', 'modules/boonex/albums/classes/BxAlbumsMenuViewActions.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_albums_view', 'bx_albums', '_bx_albums_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_albums_view', 'bx_albums', 'edit-album', '_bx_albums_menu_item_title_system_edit_entry', '_bx_albums_menu_item_title_edit_entry', 'page.php?i=edit-album&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 1),
+('bx_albums_view', 'bx_albums', 'delete-album', '_bx_albums_menu_item_title_system_delete_entry', '_bx_albums_menu_item_title_delete_entry', 'page.php?i=delete-album&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 2);
+
+
+-- MENU: actions menu for my entries
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_albums_my', '_bx_albums_menu_title_entries_my', 'bx_albums_my', 'bx_albums', 9, 0, 1, 'BxAlbumsMenu', 'modules/boonex/albums/classes/BxAlbumsMenu.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_albums_my', 'bx_albums', '_bx_albums_menu_set_title_entries_my', 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_albums_my', 'bx_albums', 'create-album', '_bx_albums_menu_item_title_system_create_entry', '_bx_albums_menu_item_title_create_entry', 'page.php?i=create-album', '', '', 'plus', '', 2147483647, 1, 0, 0);
+
+
+-- 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_albums_submenu', '_bx_albums_menu_title_submenu', 'bx_albums_submenu', 'bx_albums', 6, 0, 1, '', '');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_albums_submenu', 'bx_albums', '_bx_albums_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_albums_submenu', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_recent', '_bx_albums_menu_item_title_entries_recent', 'page.php?i=albums-home', '', '', '', '', 2147483647, 1, 1, 1),
+('bx_albums_submenu', 'bx_albums', 'albums-popular', '_bx_albums_menu_item_title_system_entries_popular', '_bx_albums_menu_item_title_entries_popular', 'page.php?i=albums-popular', '', '', '', '', 2147483647, 1, 1, 2),
+('bx_albums_submenu', 'bx_albums', 'albums-updated', '_bx_albums_menu_item_title_system_entries_updated', '_bx_albums_menu_item_title_entries_updated', 'page.php?i=albums-updated', '', '', '', '', 2147483647, 1, 1, 3),
+('bx_albums_submenu', 'bx_albums', 'albums-popular-media', '_bx_albums_menu_item_title_system_entries_popular_media', '_bx_albums_menu_item_title_entries_popular_media', 'page.php?i=albums-popular-media', '', '', '', '', 2147483647, 1, 1, 4),
+('bx_albums_submenu', 'bx_albums', 'albums-manage', '_bx_albums_menu_item_title_system_entries_manage', '_bx_albums_menu_item_title_entries_manage', 'page.php?i=albums-manage', '', '', '', '', 2147483646, 1, 1, 5);
+
+-- MENU: sub-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_albums_view_submenu', '_bx_albums_menu_title_view_entry_submenu', 'bx_albums_view_submenu', 'bx_albums', 6, 0, 1, 'BxAlbumsMenuView', 'modules/boonex/albums/classes/BxAlbumsMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_albums_view_submenu', 'bx_albums', '_bx_albums_menu_set_title_view_entry_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_albums_view_submenu', 'bx_albums', 'view-album', '_bx_albums_menu_item_title_system_view_entry', '_bx_albums_menu_item_title_view_entry_submenu_entry', 'page.php?i=view-album&id={content_id}', '', '', '', '', 2147483647, 1, 0, 1),
+('bx_albums_view_submenu', 'bx_albums', 'view-album-comments', '_bx_albums_menu_item_title_system_view_entry_comments', '_bx_albums_menu_item_title_view_entry_submenu_comments', 'page.php?i=view-album-comments&id={content_id}', '', '', '', '', 2147483647, 1, 0, 2);
+
+-- MENU: profile stats
+SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
+('sys_profile_stats', 'bx_albums', 'profile-stats-manage-albums', '_bx_albums_menu_item_title_system_manage_my_albums', '_bx_albums_menu_item_title_manage_my_albums', 'page.php?i=albums-manage', '', '_self', 'picture-o col-blue1', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:41:"get_menu_addon_manage_tools_profile_stats";}', '', 2147483646, 1, 0, @iNotifMenuOrder + 1);
+
+-- MENU: manage tools submenu
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_albums_menu_manage_tools', '_bx_albums_menu_title_manage_tools', 'bx_albums_menu_manage_tools', 'bx_albums', 6, 0, 1, 'BxAlbumsMenuManageTools', 'modules/boonex/albums/classes/BxAlbumsMenuManageTools.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_albums_menu_manage_tools', 'bx_albums', '_bx_albums_menu_set_title_manage_tools', 0);
+
+--INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+--('bx_albums_menu_manage_tools', 'bx_albums', 'delete-with-content', '_bx_albums_menu_item_title_system_delete_with_content', '_bx_albums_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'trash-o', '', 128, 1, 0, 0);
+
+-- MENU: dashboard manage tools
+SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_account_dashboard_manage_tools', 'bx_albums', 'albums-administration', '_bx_albums_menu_item_title_system_admt_albums', '_bx_albums_menu_item_title_admt_albums', 'page.php?i=albums-administration', '', '_self', '', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:27:"get_menu_addon_manage_tools";}', '', 192, 1, 0, @iManageMenuOrder + 1);
+
+-- MENU: add menu item to profiles modules (trigger* menu sets are processed separately upon modules enable/disable)
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('trigger_profile_view_submenu', 'bx_albums', 'albums-author', '_bx_albums_menu_item_title_system_view_entries_author', '_bx_albums_menu_item_title_view_entries_author', 'page.php?i=albums-author&profile_id={profile_id}', '', '', 'picture-o col-blue1', '', 2147483647, 1, 0, 0);
+
+
+-- PRIVACY 
+
+INSERT INTO `sys_objects_privacy` (`object`, `module`, `action`, `title`, `default_group`, `table`, `table_field_id`, `table_field_author`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums_allow_view_to', 'bx_albums', 'view', '_bx_albums_form_entry_input_allow_view_to', '3', 'bx_albums_albums', 'id', 'author', '', '');
+
+
+-- ACL
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_albums', 'create entry', NULL, '_bx_albums_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_albums', 'delete entry', NULL, '_bx_albums_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_albums', 'view entry', NULL, '_bx_albums_acl_action_view_entry', '', 1, 0);
+SET @iIdActionEntryView = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_albums', 'set thumb', NULL, '_bx_albums_acl_action_set_thumb', '', 1, 3);
+SET @iIdActionSetThumb = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_albums', 'edit any entry', NULL, '_bx_albums_acl_action_edit_any_entry', '', 1, 3);
+SET @iIdActionEntryEditAny = 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),
+
+-- set entry thumb
+(@iStandard, @iIdActionSetThumb),
+(@iModerator, @iIdActionSetThumb),
+(@iAdministrator, @iIdActionSetThumb),
+(@iPremium, @iIdActionSetThumb),
+
+-- edit any entry
+(@iModerator, @iIdActionEntryEditAny),
+(@iAdministrator, @iIdActionEntryEditAny);
+
+
+-- SEARCH
+SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
+INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `GlobalSearch`, `ClassName`, `ClassPath`) VALUES
+('bx_albums', '_bx_albums', @iSearchOrder + 1, 1, 'BxAlbumsSearchResult', 'modules/boonex/albums/classes/BxAlbumsSearchResult.php'),
+('bx_albums_cmts', '_bx_albums_cmts', @iSearchOrder + 2, 1, 'BxAlbumsCmtsSearchResult', 'modules/boonex/albums/classes/BxAlbumsCmtsSearchResult.php'),
+('bx_albums_media', '_bx_albums_media', @iSearchOrder + 3, 1, 'BxAlbumsSearchResultMedia', 'modules/boonex/albums/classes/BxAlbumsSearchResultMedia.php'),
+('bx_albums_media_cmts', '_bx_albums_media_cmts', @iSearchOrder + 4, 1, 'BxAlbumsCmtsSearchResultMedia', 'modules/boonex/albums/classes/BxAlbumsCmtsSearchResultMedia.php'),
+('bx_albums_media_camera', '_bx_albums_media', @iSearchOrder + 5, 0, 'BxAlbumsSearchResultMediaCamera', 'modules/boonex/albums/classes/BxAlbumsSearchResultMediaCamera.php');
+
+-- METATAGS
+INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums', 'bx_albums_meta_keywords', 'bx_albums_meta_locations', '', '', ''),
+('bx_albums_media', 'bx_albums_meta_keywords_media', '', '', '', ''),
+('bx_albums_media_camera', 'bx_albums_meta_keywords_media_camera', '', '', '', '');
+
+-- GRIDS: moderation tools
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums_administration', 'Sql', 'SELECT * FROM `bx_albums_albums` WHERE 1 ', 'bx_albums_albums', 'id', 'added', 'status', '', 20, NULL, 'start', '', 'title,text', '', 'like', '', '', 'BxAlbumsGridAdministration', 'modules/boonex/albums/classes/BxAlbumsGridAdministration.php'),
+('bx_albums_common', 'Sql', 'SELECT * FROM `bx_albums_albums` WHERE 1 ', 'bx_albums_albums', 'id', 'added', 'status', '', 20, NULL, 'start', '', 'title,text', '', 'like', '', '', 'BxAlbumsGridCommon', 'modules/boonex/albums/classes/BxAlbumsGridCommon.php');
+
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
+('bx_albums_administration', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
+('bx_albums_administration', 'switcher', '_bx_albums_grid_column_title_adm_active', '8%', 0, '', '', 2),
+('bx_albums_administration', 'title', '_bx_albums_grid_column_title_adm_title', '25%', 0, '', '', 3),
+('bx_albums_administration', 'added', '_bx_albums_grid_column_title_adm_added', '20%', 1, '25', '', 4),
+('bx_albums_administration', 'author', '_bx_albums_grid_column_title_adm_author', '25%', 0, '25', '', 5),
+('bx_albums_administration', 'actions', '', '20%', 0, '', '', 6),
+('bx_albums_common', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
+('bx_albums_common', 'switcher', '', '8%', 0, '', '', 2),
+('bx_albums_common', 'title', '_bx_albums_grid_column_title_adm_title', '40%', 0, '', '', 3),
+('bx_albums_common', 'added', '_bx_albums_grid_column_title_adm_added', '30%', 1, '25', '', 4),
+('bx_albums_common', 'actions', '', '20%', 0, '', '', 5);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
+('bx_albums_administration', 'bulk', 'delete', '_bx_albums_grid_action_title_adm_delete', '', 0, 1, 1),
+('bx_albums_administration', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_albums_administration', 'single', 'delete', '_bx_albums_grid_action_title_adm_delete', 'remove', 1, 1, 2),
+('bx_albums_administration', 'single', 'settings', '_bx_albums_grid_action_title_adm_more_actions', 'cog', 1, 0, 3),
+('bx_albums_common', 'bulk', 'delete', '_bx_albums_grid_action_title_adm_delete', '', 0, 1, 1),
+('bx_albums_common', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_albums_common', 'single', 'delete', '_bx_albums_grid_action_title_adm_delete', 'remove', 1, 1, 2),
+('bx_albums_common', 'single', 'settings', '_bx_albums_grid_action_title_adm_more_actions', 'cog', 1, 0, 3);
+
+-- UPLOADERS
+INSERT INTO `sys_objects_uploader` (`object`, `active`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums_simple', 1, 'BxAlbumsUploaderSimple', 'modules/boonex/albums/classes/BxAlbumsUploaderSimple.php'),
+('bx_albums_html5', 1, 'BxAlbumsUploaderHTML5', 'modules/boonex/albums/classes/BxAlbumsUploaderHTML5.php');
+
+-- ALERTS
+
+INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
+('bx_albums', 'BxAlbumsAlertsResponse', 'modules/boonex/albums/classes/BxAlbumsAlertsResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('bx_albums_files', 'file_deleted', @iHandler),
+('profile', 'delete', @iHandler);
+

+ 309 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/install.sql

@@ -0,0 +1,309 @@
+
+-- TABLE: entries
+
+CREATE TABLE IF NOT EXISTS `bx_albums_albums` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `author` int(10) unsigned NOT NULL,
+  `added` int(11) NOT NULL,
+  `changed` int(11) NOT NULL,
+  `thumb` int(11) NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `text` text NOT NULL,
+  `views` int(11) NOT NULL default '0',
+  `rate` float NOT NULL default '0',
+  `votes` int(11) NOT NULL default '0',
+  `comments` int(11) NOT NULL default '0',
+  `allow_view_to` int(11) NOT NULL DEFAULT '3',
+  `status` enum('active','hidden') NOT NULL DEFAULT 'active',
+  PRIMARY KEY (`id`),
+  FULLTEXT KEY `title_text` (`title`,`text`)
+);
+
+-- TABLE: storages & transcoders
+
+CREATE TABLE IF NOT EXISTS `bx_albums_files` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `profile_id` int(10) unsigned NOT NULL,
+  `remote_id` varchar(255) NOT NULL,
+  `path` varchar(255) NOT NULL,
+  `file_name` varchar(255) NOT NULL,
+  `mime_type` varchar(128) NOT NULL,
+  `ext` varchar(32) NOT NULL,
+  `size` int(11) NOT NULL,
+  `added` int(11) NOT NULL,
+  `modified` int(11) NOT NULL,
+  `private` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `remote_id` (`remote_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_albums_photos_resized` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `profile_id` int(10) unsigned NOT NULL,
+  `remote_id` varchar(255) NOT NULL,
+  `path` varchar(255) NOT NULL,
+  `file_name` varchar(255) NOT NULL,
+  `mime_type` varchar(128) NOT NULL,
+  `ext` varchar(32) NOT NULL,
+  `size` int(11) NOT NULL,
+  `added` int(11) NOT NULL,
+  `modified` int(11) NOT NULL,
+  `private` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `remote_id` (`remote_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_albums_files2albums` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `content_id` int(10) unsigned NOT NULL,
+  `file_id` int(11) NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `views` int(11) NOT NULL,
+  `rate` float NOT NULL,
+  `votes` int(11) NOT NULL,
+  `comments` int(11) NOT NULL,
+  `data` text NOT NULL,
+  `exif` text NOT NULL,
+  `order` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `file_content` (`file_id`,`content_id`),
+  KEY `content_id` (`content_id`)
+);
+
+-- TABLE: comments
+
+CREATE TABLE IF NOT EXISTS `bx_albums_cmts` (
+  `cmt_id` int(11) NOT NULL AUTO_INCREMENT,
+  `cmt_parent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_vparent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_object_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_author_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `cmt_level` int(11) NOT NULL DEFAULT '0',
+  `cmt_text` text NOT NULL,
+  `cmt_mood` tinyint(4) NOT NULL DEFAULT '0',
+  `cmt_rate` int(11) NOT NULL DEFAULT '0',
+  `cmt_rate_count` int(11) NOT NULL DEFAULT '0',
+  `cmt_time` int(11) unsigned NOT NULL DEFAULT '0',
+  `cmt_replies` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`cmt_id`),
+  KEY `cmt_object_id` (`cmt_object_id`,`cmt_parent_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_albums_cmts_media` (
+  `cmt_id` int(11) NOT NULL AUTO_INCREMENT,
+  `cmt_parent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_vparent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_object_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_author_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `cmt_level` int(11) NOT NULL DEFAULT '0',
+  `cmt_text` text NOT NULL,
+  `cmt_mood` tinyint(4) NOT NULL DEFAULT '0',
+  `cmt_rate` int(11) NOT NULL DEFAULT '0',
+  `cmt_rate_count` int(11) NOT NULL DEFAULT '0',
+  `cmt_time` int(11) unsigned NOT NULL DEFAULT '0',
+  `cmt_replies` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`cmt_id`),
+  KEY `cmt_object_id` (`cmt_object_id`,`cmt_parent_id`)
+);
+
+-- TABLE: votes
+
+CREATE TABLE IF NOT EXISTS `bx_albums_votes` (
+  `object_id` int(11) NOT NULL default '0',
+  `count` int(11) NOT NULL default '0',
+  `sum` int(11) NOT NULL default '0',
+  UNIQUE KEY `object_id` (`object_id`)
+) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `bx_albums_votes_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `author_nip` int(11) unsigned NOT NULL default '0',
+  `value` tinyint(4) NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `vote` (`object_id`, `author_nip`)
+) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `bx_albums_votes_media` (
+  `object_id` int(11) NOT NULL default '0',
+  `count` int(11) NOT NULL default '0',
+  `sum` int(11) NOT NULL default '0',
+  UNIQUE KEY `object_id` (`object_id`)
+) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `bx_albums_votes_media_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `author_nip` int(11) unsigned NOT NULL default '0',
+  `value` tinyint(4) NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `vote` (`object_id`, `author_nip`)
+) ENGINE=MYISAM DEFAULT CHARSET=utf8;
+
+-- TABLE: views
+
+CREATE TABLE `bx_albums_views_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `viewer_id` int(11) NOT NULL default '0',
+  `viewer_nip` int(11) unsigned NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `id` (`object_id`,`viewer_id`,`viewer_nip`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE `bx_albums_views_media_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `viewer_id` int(11) NOT NULL default '0',
+  `viewer_nip` int(11) unsigned NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `id` (`object_id`,`viewer_id`,`viewer_nip`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- TABLE: metas
+
+CREATE TABLE `bx_albums_meta_keywords` (
+  `object_id` int(10) unsigned NOT NULL,
+  `keyword` varchar(255) NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `keyword` (`keyword`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE `bx_albums_meta_keywords_media` (
+  `object_id` int(10) unsigned NOT NULL,
+  `keyword` varchar(255) NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `keyword` (`keyword`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE `bx_albums_meta_keywords_media_camera` (
+  `object_id` int(10) unsigned NOT NULL,
+  `keyword` varchar(255) NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `keyword` (`keyword`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+CREATE TABLE `bx_albums_meta_locations` (
+  `object_id` int(10) unsigned NOT NULL,
+  `lat` double NOT NULL,
+  `lng` double NOT NULL,
+  `country` varchar(2) NOT NULL,
+  `state` varchar(255) NOT NULL,
+  `city` varchar(255) NOT NULL,
+  `zip` varchar(255) NOT NULL,
+  PRIMARY KEY (`object_id`),
+  KEY `country_state_city` (`country`,`state`(8),`city`(8))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+
+-- STORAGES & TRANSCODERS
+
+INSERT INTO `sys_objects_storage` (`object`, `engine`, `params`, `token_life`, `cache_control`, `levels`, `table_files`, `ext_mode`, `ext_allow`, `ext_deny`, `quota_size`, `current_size`, `quota_number`, `current_number`, `max_file_size`, `ts`) VALUES
+('bx_albums_files', 'Local', '', 360, 2592000, 3, 'bx_albums_files', 'allow-deny', 'jpg,jpeg,jpe,gif,png,avi,flv,mpg,mpeg,wmv,mp4,m4v,mov,qt,divx,xvid,3gp,3g2,webm,mkv,ogv,ogg,rm,rmvb,asf,drc', '', 0, 0, 0, 0, 0, 0),
+('bx_albums_photos_resized', 'Local', '', 360, 2592000, 3, 'bx_albums_photos_resized', 'allow-deny', 'jpg,jpeg,jpe,gif,png,avi,flv,mpg,mpeg,wmv,mp4,m4v,mov,qt,divx,xvid,3gp,3g2,webm,mkv,ogv,ogg,rm,rmvb,asf,drc', '', 0, 0, 0, 0, 0, 0);
+
+INSERT INTO `sys_objects_transcoder` (`object`, `storage_object`, `source_type`, `source_params`, `private`, `atime_tracking`, `atime_pruning`, `ts`, `override_class_name`, `override_class_file`) VALUES
+('bx_albums_preview', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', '1', '2592000', '0', '', ''),
+('bx_albums_browse', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', '1', '2592000', '0', '', ''),
+('bx_albums_big', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', '1', '2592000', '0', '', ''),
+('bx_albums_video_poster_browse', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', 0, 0, 0, 'BxDolTranscoderVideo', ''),
+('bx_albums_video_poster_preview', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', 0, 0, 0, 'BxDolTranscoderVideo', ''),
+('bx_albums_video_poster_big', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', 0, 0, 0, 'BxDolTranscoderVideo', ''),
+('bx_albums_video_mp4', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', 0, 0, 0, 'BxDolTranscoderVideo', ''),
+('bx_albums_video_webm', 'bx_albums_photos_resized', 'Storage', 'a:1:{s:6:"object";s:15:"bx_albums_files";}', 'no', 0, 0, 0, 'BxDolTranscoderVideo', ''),
+('bx_albums_proxy_preview', 'bx_albums_photos_resized', 'Proxy', 'a:4:{s:6:"object";s:15:"bx_albums_files";s:5:"image";s:17:"bx_albums_preview";s:12:"video_poster";s:30:"bx_albums_video_poster_preview";s:5:"video";a:4:{i:0;s:19:"bx_albums_video_mp4";i:1;s:20:"bx_albums_video_webm";i:2;s:29:"bx_albums_video_poster_browse";i:3;s:26:"bx_albums_video_poster_big";}}', 'no', 0, 0, 0, 'BxDolTranscoderProxy', ''),
+('bx_albums_proxy_browse', 'bx_albums_photos_resized', 'Proxy', 'a:4:{s:6:"object";s:15:"bx_albums_files";s:5:"image";s:16:"bx_albums_browse";s:12:"video_poster";s:29:"bx_albums_video_poster_browse";s:5:"video";a:2:{i:0;s:19:"bx_albums_video_mp4";i:1;s:20:"bx_albums_video_webm";}}', 'no', 0, 0, 0, 'BxDolTranscoderProxy', '');
+
+INSERT INTO `sys_transcoder_filters` (`transcoder_object`, `filter`, `filter_params`, `order`) VALUES 
+('bx_albums_preview', 'Resize', 'a:3:{s:1:"w";s:3:"300";s:1:"h";s:3:"300";s:13:"square_resize";s:1:"1";}', '0'),
+('bx_albums_browse', 'Resize', 'a:1:{s:1:"h";s:3:"180";}', '0'),
+('bx_albums_big', 'Resize', 'a:2:{s:1:"w";s:4:"1280";s:1:"h";s:4:"1280";}', '0'),
+('bx_albums_video_poster_browse', 'Poster', 'a:2:{s:1:"h";s:3:"180";s:10:"force_type";s:3:"jpg";}', 0),
+('bx_albums_video_poster_preview', 'Poster', 'a:2:{s:1:"h";s:3:"480";s:10:"force_type";s:3:"jpg";}', 0),
+('bx_albums_video_poster_preview', 'Resize', 'a:3:{s:1:"w";s:3:"300";s:1:"h";s:3:"300";s:13:"square_resize";s:1:"1";}', 10),
+('bx_albums_video_poster_big', 'Poster', 'a:2:{s:1:"h";s:3:"480";s:10:"force_type";s:3:"jpg";}', 0),
+('bx_albums_video_mp4', 'Mp4', 'a:2:{s:1:"h";s:3:"480";s:10:"force_type";s:3:"mp4";}', 0),
+('bx_albums_video_webm', 'Webm', 'a:2:{s:1:"h";s:3:"480";s:10:"force_type";s:4:"webm";}', 0);
+
+
+
+-- FORMS
+
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_albums', 'bx_albums', '_bx_albums_form_entry', '', 'a:1:{s:7:\"enctype\";s:19:\"multipart/form-data\";}', 'bx_albums_albums', 'id', '', '', 'do_submit', '', 0, 1, 'BxAlbumsFormEntry', 'modules/boonex/albums/classes/BxAlbumsFormEntry.php');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_albums', 'bx_albums_entry_add', 'bx_albums', 0, '_bx_albums_form_entry_display_add'),
+('bx_albums', 'bx_albums_entry_edit', 'bx_albums', 0, '_bx_albums_form_entry_display_edit'),
+('bx_albums', 'bx_albums_entry_delete', 'bx_albums', 0, '_bx_albums_form_entry_display_delete'),
+('bx_albums', 'bx_albums_entry_view', 'bx_albums', 1, '_bx_albums_form_entry_display_view');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_albums', 'bx_albums', 'delete_confirm', 1, '', 0, 'checkbox', '_bx_albums_form_entry_input_sys_delete_confirm', '_bx_albums_form_entry_input_delete_confirm', '_bx_albums_form_entry_input_delete_confirm_info', 1, 0, 0, '', '', '', 'Avail', '', '_bx_albums_form_entry_input_delete_confirm_error', '', '', 1, 0),
+('bx_albums', 'bx_albums', 'do_submit', '_bx_albums_form_entry_input_do_submit', '', 0, 'submit', '_bx_albums_form_entry_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_albums', 'bx_albums', 'title', '', '', 0, 'text', '_bx_albums_form_entry_input_sys_title', '_bx_albums_form_entry_input_title', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_albums_form_entry_input_title_err', 'Xss', '', 1, 0),
+('bx_albums', 'bx_albums', 'text', '', '', 0, 'textarea', '_bx_albums_form_entry_input_sys_text', '_bx_albums_form_entry_input_text', '', 0, 0, 2, '', '', '', '', '', '', 'XssHtml', '', 1, 0),
+('bx_albums', 'bx_albums', 'pictures', '', '', 0, 'files', '_bx_albums_form_entry_input_sys_pictures', '_bx_albums_form_entry_input_pictures', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_albums', 'bx_albums', 'allow_view_to', '', '', 0, 'custom', '_bx_albums_form_entry_input_sys_allow_view_to', '_bx_albums_form_entry_input_allow_view_to', '', 1, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('bx_albums', 'bx_albums', 'location', '', '', 0, 'custom', '_sys_form_input_sys_location', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0);
+
+INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES
+('bx_albums_entry_add', 'delete_confirm', 2147483647, 0, 1),
+('bx_albums_entry_add', 'title', 2147483647, 1, 2),
+('bx_albums_entry_add', 'text', 2147483647, 1, 3),
+('bx_albums_entry_add', 'pictures', 2147483647, 1, 4),
+('bx_albums_entry_add', 'allow_view_to', 2147483647, 1, 5),
+('bx_albums_entry_add', 'location', 2147483647, 1, 6),
+('bx_albums_entry_add', 'do_submit', 2147483647, 1, 7),
+
+('bx_albums_entry_edit', 'delete_confirm', 2147483647, 0, 1),
+('bx_albums_entry_edit', 'title', 2147483647, 1, 2),
+('bx_albums_entry_edit', 'text', 2147483647, 1, 3),
+('bx_albums_entry_edit', 'pictures', 2147483647, 1, 4),
+('bx_albums_entry_edit', 'allow_view_to', 2147483647, 1, 5),
+('bx_albums_entry_edit', 'location', 2147483647, 1, 6),
+('bx_albums_entry_edit', 'do_submit', 2147483647, 1, 7),
+
+('bx_albums_entry_view', 'delete_confirm', 2147483647, 0, 0),
+('bx_albums_entry_view', 'allow_view_to', 2147483647, 0, 0),
+('bx_albums_entry_view', 'do_submit', 2147483647, 0, 0),
+('bx_albums_entry_view', 'text', 2147483647, 1, 0),
+('bx_albums_entry_view', 'title', 2147483647, 1, 0),
+('bx_albums_entry_view', 'pictures', 2147483647, 0, 0),
+
+('bx_albums_entry_delete', 'delete_confirm', 2147483647, 1, 1),
+('bx_albums_entry_delete', 'do_submit', 2147483647, 1, 2),
+('bx_albums_entry_delete', 'allow_view_to', 2147483647, 0, 0),
+('bx_albums_entry_delete', 'pictures', 2147483647, 0, 0),
+('bx_albums_entry_delete', 'text', 2147483647, 0, 0),
+('bx_albums_entry_delete', 'title', 2147483647, 0, 0);
+
+-- 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_albums', 'bx_albums_cmts', 1, 5000, 1000, 1, 5, 3, 'tail', 1, 'bottom', 1, 1, 1, -3, 1, 'cmt', 'page.php?i=view-album&id={object_id}', '', 'bx_albums_albums', 'id', 'title', 'comments', '', ''),
+('bx_albums_media', 'bx_albums_cmts_media', 1, 5000, 1000, 1, 5, 3, 'tail', 1, 'bottom', 1, 1, 1, -3, 1, 'cmt', 'page.php?i=view-album-media&id={object_id}', '', 'bx_albums_files2albums', 'id', 'title', 'comments', '', '');
+
+-- VOTES
+
+INSERT INTO `sys_objects_vote` (`Name`, `TableMain`, `TableTrack`, `PostTimeout`, `MinValue`, `MaxValue`, `IsUndo`, `IsOn`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldRate`, `TriggerFieldRateCount`, `ClassName`, `ClassFile`) VALUES 
+('bx_albums', 'bx_albums_votes', 'bx_albums_votes_track', '604800', '1', '1', '0', '1', 'bx_albums_albums', 'id', 'rate', 'votes', '', ''),
+('bx_albums_media', 'bx_albums_votes_media', 'bx_albums_votes_media_track', '604800', '1', '1', '0', '1', 'bx_albums_files2albums', 'id', 'rate', 'votes', '', '');
+
+-- 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_albums', 'bx_albums_views_track', '86400', '1', 'bx_albums_albums', 'id', 'views', '', ''),
+('bx_albums_media', 'bx_albums_views_media_track', '86400', '1', 'bx_albums_files2albums', 'id', 'views', '', '');
+
+-- STUDIO: page & widget
+
+INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
+(3, 'bx_albums', '_bx_albums', '_bx_albums', 'bx_albums@modules/boonex/albums/|std-pi.png');
+SET @iPageId = LAST_INSERT_ID();
+
+SET @iParentPageId = (SELECT `id` FROM `sys_std_pages` WHERE `name` = 'home');
+SET @iParentPageOrder = (SELECT MAX(`order`) FROM `sys_std_pages_widgets` WHERE `page_id` = @iParentPageId);
+INSERT INTO `sys_std_widgets` (`page_id`, `module`, `url`, `click`, `icon`, `caption`, `cnt_notices`, `cnt_actions`) VALUES
+(@iPageId, 'bx_albums', '{url_studio}module.php?name=bx_albums', '', 'bx_albums@modules/boonex/albums/|std-wi.png', '_bx_albums', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}');
+INSERT INTO `sys_std_pages_widgets` (`page_id`, `widget_id`, `order`) VALUES
+(@iParentPageId, LAST_INSERT_ID(), IF(ISNULL(@iParentPageOrder), 1, @iParentPageOrder + 1));
+

+ 39 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/install/sql/uninstall.sql

@@ -0,0 +1,39 @@
+
+-- TABLES
+
+DROP TABLE IF EXISTS `bx_albums_albums`, `bx_albums_files`, `bx_albums_photos_resized`, `bx_albums_files2albums`, `bx_albums_cmts`, `bx_albums_cmts_media`, `bx_albums_votes`, `bx_albums_votes_track`, `bx_albums_votes_media`, `bx_albums_votes_media_track`, `bx_albums_views_track`, `bx_albums_views_media_track`, `bx_albums_meta_keywords`, `bx_albums_meta_keywords_media`, `bx_albums_meta_keywords_media_camera`, `bx_albums_meta_locations`;
+
+-- STORAGES & TRANSCODERS
+
+DELETE FROM `sys_objects_storage` WHERE `object` = 'bx_albums_files' OR `object` = 'bx_albums_photos_resized';
+DELETE FROM `sys_storage_tokens` WHERE `object` = 'bx_albums_files' OR `object` = 'bx_albums_photos_resized';
+
+DELETE FROM `sys_objects_transcoder` WHERE `object` IN('bx_albums_preview', 'bx_albums_browse', 'bx_albums_big', 'bx_albums_video_poster_browse', 'bx_albums_video_poster_preview', 'bx_albums_video_poster_big', 'bx_albums_video_mp4', 'bx_albums_video_webm', 'bx_albums_proxy_preview', 'bx_albums_proxy_browse');
+DELETE FROM `sys_transcoder_filters` WHERE `transcoder_object` IN('bx_albums_preview', 'bx_albums_browse', 'bx_albums_big', 'bx_albums_video_poster_browse', 'bx_albums_video_poster_preview', 'bx_albums_video_poster_big', 'bx_albums_video_mp4', 'bx_albums_video_webm');
+DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` IN('bx_albums_preview', 'bx_albums_browse', 'bx_albums_big', 'bx_albums_video_poster_browse', 'bx_albums_video_poster_preview', 'bx_albums_video_poster_big', 'bx_albums_video_mp4', 'bx_albums_video_webm');
+
+-- FORMS
+
+DELETE FROM `sys_objects_form` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_form_displays` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_form_inputs` WHERE `module` = 'bx_albums';
+DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN ('bx_albums_entry_add', 'bx_albums_entry_edit', 'bx_albums_entry_view', 'bx_albums_entry_delete');
+
+-- COMMENTS
+
+DELETE FROM `sys_objects_cmts` WHERE `Name` = 'bx_albums' OR `Name` = 'bx_albums_media';
+
+-- VOTES
+
+DELETE FROM `sys_objects_vote` WHERE `Name` = 'bx_albums' OR `Name` = 'bx_albums_media';
+
+-- VIEWS
+
+DELETE FROM `sys_objects_view` WHERE `Name` = 'bx_albums' OR `Name` = 'bx_albums_media';
+
+-- STUDIO: page & widget
+
+DELETE FROM `tp`, `tw`, `tpw`
+USING `sys_std_pages` AS `tp`, `sys_std_widgets` AS `tw`, `sys_std_pages_widgets` AS `tpw`
+WHERE `tp`.`id` = `tw`.`page_id` AND `tw`.`id` = `tpw`.`widget_id` AND `tp`.`name` = 'bx_albums';
+

+ 3 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/comments-item.html

@@ -0,0 +1,3 @@
+
+<bx_include_base:../modules/base/text/template/comments-item.html />
+

+ 98 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/css/main.css

@@ -0,0 +1,98 @@
+
+@import url(../../../../base/text/template/css/main.css);
+
+.bx-albums-unit-size {
+    width: 18.75rem;
+    height: 18.75rem;
+    object-fit: cover;
+}
+.bx-albums-media-wrapper {
+    width: 18.75rem;
+}
+
+@media (max-width:520px) {
+    .bx-albums-unit-size {
+        width: 100%;
+        height: auto;
+    }
+    .bx-albums-media-wrapper {
+        width: 100%;
+    }
+}
+
+.bx-albums-media-caption,
+.bx-albums-media-actions {
+    white-space:nowrap;
+    overflow:hidden;
+    text-overflow:ellipsis;
+}
+
+.bx-albums-unit-images-cont {
+    height:11.25rem;
+    overflow:hidden;
+}
+
+.bx-albums-unit-images {
+    white-space:nowrap;
+    width:100%;
+    height:16rem;
+    overflow-y:hidden;
+    overflow-x:scroll;
+    -webkit-overflow-scrolling:touch;
+}
+
+.bx-albums-unit-images img {
+    display:inline-block;
+    margin-right:0.125rem;
+    height:11.25rem;
+}
+
+.bx-albums-media-file {
+    text-align:center;    
+}
+
+.bx-albums-media-file img,
+.bx-albums-media-file video {
+    max-width:100%;
+}
+
+.bx-albums-media-title {
+    position:relative;
+    padding-right:6rem;
+}
+
+.bx-albums-media-title h1, 
+.bx-albums-media-title h2, 
+.bx-albums-media-title p {
+    margin:0;
+}
+
+.bx-albums-media-controls {
+    position:absolute;
+    top:0;
+    right:0;
+}
+
+.pswp__caption .pswp__caption__center {
+    text-align: center;
+}
+
+.pswp__video {
+    position:absolute;
+    text-align: center;
+    top:0;
+    bottom:0;
+    left:0;
+    right:0;
+}
+
+.pswp__video:before {
+  content: "";
+  display: inline-block;
+  vertical-align: middle;
+  height: 100%;
+}
+
+.pswp__video video {
+    vertical-align: middle;    
+}

+ 3 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/entry-all-actions.html

@@ -0,0 +1,3 @@
+
+<bx_include_base:../modules/base/text/template/entry-all-actions.html />
+

+ 6 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/entry-text.html

@@ -0,0 +1,6 @@
+
+<div class="bx-base-text-entity-content bx-def-constraint-list bx-def-constraint-pre bx-def-constraint-object bx-def-constraint-iframe bx-def-constraint-img">
+    <h1>__title__</h1>
+    __text__
+</div>
+

+ 3 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-exif-value.html

@@ -0,0 +1,3 @@
+
+    <b>__key__</b>: __val__ <br />
+

+ 3 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-exif.html

@@ -0,0 +1,3 @@
+<div class="bx-albums-media-exif">
+    __content__
+</div>

+ 30 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/media-view.html

@@ -0,0 +1,30 @@
+<div class="bx-albums-media-view">
+    <div class="bx-albums-media-title bx-def-margin-sec-bottom">
+        <h2>__album__</h2>
+        <p>__title__</p>
+        <div class="bx-albums-media-controls bx-btn-group">
+            <bx_if:prev>
+                <a class="bx-btn" onclick="bx_albums_reload_page('__url__', '__title_js_string__'); return false;" href="__url__" title="__title_attr__"><i class="sys-icon angle-double-left"></i></a>
+            </bx_if:prev>
+            <bx_if:prev-na>
+                <a class="bx-btn bx-btn-disabled" href="javascript:void(0);"><i class="sys-icon angle-double-left"></i></a>
+            </bx_if:prev-na>
+            <bx_if:next>
+                <a class="bx-btn" onclick="bx_albums_reload_page('__url__', '__title_js_string__'); return false;" href="__url__" title="__title_attr__"><i class="sys-icon angle-double-right"></i></a>
+            </bx_if:next>
+            <bx_if:next-na>
+                <a class="bx-btn bx-btn-disabled" href="javascript:void(0);"><i class="sys-icon angle-double-right"></i></a>
+            </bx_if:next-na>
+        </div>
+    </div>
+    <div class="bx-albums-media-file">
+        <bx_if:image>
+            <a href="javascript:void(0);"  onclick="bx_albums_open_gallery(event || window.event, this, '__context__')" data-media-id="__media_id__" data-url="__url__" data-src="__url_img__" data-w="__w__" data-h="__h__" data-title="__title_attr__">
+                <img src="__url_img__" alt="__title_attr__" />
+            </a>
+        </bx_if:image>
+        <bx_if:video>
+            __video__
+        </bx_if:video>
+    </div>
+</div>

+ 15 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit.html

@@ -0,0 +1,15 @@
+
+<div class="bx-base-text-unit bx-base-text-unit-ext bx-def-margin-bottom">
+    <h2 class="bx-def-padding-sec-top"><a href="__content_url__">__title__</a></h2>
+    <div class="bx-base-text-unit-info">
+        <span class="bx-def-font-grayed">__entry_posting_date__</span>
+        <span class="bx-base-text-unit-info-div bx-def-font-grayed">&#183;</span>
+        <a class="bx-base-text-unit-author" href="__author_url__">__author__</a>
+    </div>
+    <div class="bx-albums-unit-images-cont bx-def-margin-sec-top bx-def-margin-sec-bottom">
+        <div class="bx-albums-unit-images bx-clearfix">
+            <bx_repeat:browse><a title="__title_attr__" href="__url__"><img alt="__title_attr__" src="__img_url__" /></a></bx_repeat:browse>
+        </div> 
+    </div> 
+</div>
+

+ 17 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit_media.html

@@ -0,0 +1,17 @@
+
+<div class="bx-albums-media-wrapper bx-def-color-bg-box bx-def-margin-thd-right bx-def-margin-thd-bottom" style="float:left;">
+    <div class="bx-albums-unit-size">
+        <bx_if:image>
+            <a href="__url__" title="__title_attr__">
+                <img class="bx-albums-unit-size" src="__url_img__" alt="__title_attr__" />
+            </a>
+        </bx_if:image>
+        <bx_if:video>
+            <a href="__url__" title="__title_attr__">
+                <img class="bx-albums-unit-size" src="__url_img__" alt="__title_attr__" />
+            </a>
+        </bx_if:video>
+    </div>
+    <div class="bx-albums-media-caption bx-def-margin-sec-topbottom bx-def-margin-leftright">__title__</div>
+    <div class="bx-albums-media-actions bx-def-margin-sec-bottom bx-def-margin-leftright">__actions__</div>
+</div>

+ 3 - 0
modules/boonex/albums/updates/8.0.0_8.0.1/source/template/unit_media_live_search.html

@@ -0,0 +1,3 @@
+
+<bx_include_base:../modules/base/text/template/unit_live_search.html />
+

+ 51 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/install/config.php

@@ -0,0 +1,51 @@
+<?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' => 'Antispam',
+    'version_from' => '8.0.3',
+	'version_to' => '8.0.4',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/antispam/updates/update_8.0.3_8.0.4/',
+	'home_uri' => 'antispam_update_803_804',
+
+	'module_dir' => 'boonex/antispam/',
+	'module_uri' => 'antispam',
+
+    'db_prefix' => 'bx_antispam_',
+    'class_prefix' => 'BxAntispam',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 0,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Antispam',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/install/installer.php

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

+ 10 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/install/sql/enable.sql

@@ -0,0 +1,10 @@
+-- PAGES
+UPDATE `sys_objects_page` SET `visible_for_levels`='128' WHERE `object`='bx_antispam_dnsbl';
+UPDATE `sys_objects_page` SET `visible_for_levels`='128' WHERE `object`='bx_antispam_ip_table';
+UPDATE `sys_objects_page` SET `visible_for_levels`='192' WHERE `object`='bx_antispam_block_log';
+
+
+-- GRIDS
+UPDATE `sys_objects_grid` SET `visible_for_levels`='128' WHERE `object`='bx_antispam_grid_dnsbl';
+UPDATE `sys_objects_grid` SET `visible_for_levels`='128' WHERE `object`='bx_antispam_grid_ip_table';
+UPDATE `sys_objects_grid` SET `visible_for_levels`='192' WHERE `object`='bx_antispam_grid_block_log';

+ 54 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/source/classes/BxAntispamAkismet.php

@@ -0,0 +1,54 @@
+<?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    Antispam Antispam
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Spam detection based on the message content and logged in user info - http://akismet.com
+ */
+class BxAntispamAkismet extends BxDol
+{
+    protected $oAkismet = null;
+
+    public function __construct($iProfileID = 0)
+    {
+        parent::__construct();
+        $sKey = getParam('bx_antispam_akismet_api_key');
+        if ($sKey) {
+            require_once (BX_DIRECTORY_PATH_PLUGINS . 'akismet/Akismet.class.php');
+            $this->oAkismet = new Akismet(BX_DOL_URL_ROOT, $sKey);
+            $aProfile = getProfileInfo($iProfileID);
+            if ($aProfile) {
+                $this->oAkismet->setCommentAuthor($aProfile['NickName']);
+                $this->oAkismet->setCommentAuthorEmail($aProfile['Email']);
+                $this->oAkismet->setCommentAuthorURL(getProfileLink($aProfile['ID']));
+            }
+        }
+    }
+
+    public function isSpam ($s, $sPermalink = false)
+    {
+        if (!$this->oAkismet)
+            return false;
+
+        $this->oAkismet->setCommentContent($s);
+        if ($sPermalink)
+            $this->oAkismet->setPermalink($sPermalink);
+
+        return $this->oAkismet->isCommentSpam();
+    }
+
+    public function onPositiveDetection ($sExtraData = '')
+    {
+        $o = bx_instance('BxAntispamDNSBlacklists', array(), 'bx_antispam');
+        $o->onPositiveDetection (getVisitorIP(), $sExtraData, 'akismet');
+    }
+}
+
+/** @} */

+ 103 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/source/classes/BxAntispamStopForumSpam.php

@@ -0,0 +1,103 @@
+<?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    Antispam Antispam
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Spam detection based on email and ip powered by StopForumSpam service - http://www.stopforumspam.com/
+ */
+class BxAntispamStopForumSpam extends BxDol
+{
+    protected $_aKeys = array (
+        'ip' => 1,
+        'email' => 1,
+        'username' => 1,
+    );
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Check if user is spammer
+     * @param $aValues - array with keys: ip, email, username
+     * @param $sDesc - desctiption, for example: join
+     * @return true - on positive detection, false - on error or no spammer detection
+     */
+    public function isSpammer ($aValues, $sDesc)
+    {
+        if (!getParam('bx_antispam_stopforumspam_enable'))
+            return false;
+
+        if (!$aValues || !is_array($aValues))
+            return false;
+
+        $aRequestParams = array ('f' => 'json');
+        foreach ($this->_aKeys as $k => $b)
+            if (isset($aValues[$k]))
+                $aRequestParams[$k] = rawurlencode($aValues[$k]);
+
+        $s = bx_file_get_contents('http://www.stopforumspam.com/api', $aRequestParams);
+        if (!$s)
+            return false;
+
+        $aResult = json_decode($s, true);
+        if (null === $aResult || !$aResult['success'])
+            return false;
+
+        foreach ($this->_aKeys as $k => $b) {
+            if (isset($aResult[$k]) && $aResult[$k]['appears']) {
+                $this->onPositiveDetection($sDesc);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Submit spammer
+     * @param @aValues - array with keys: ip, email, username
+     * @return false - on error, or true - on success
+     */
+    public function submitSpammer ($aValues, $sEvidences = false)
+    {
+        if (!getParam('bx_antispam_stopforumspam_enable'))
+            return false;
+
+        $sKey = getParam('bx_antispam_stopforumspam_api_key');
+        if (!$sKey)
+            return false;
+
+        $sData = 'api_key=' . $sKey . '&evidence=' . ($sEvidences ? rawurlencode($sEvidences) : 'spammer');
+        foreach ($this->_aKeys as $k => $b)
+            if (isset($aValues[$k]))
+                $sData .= '&' . ('ip' == $k ? 'ip_addr' : $k) . '=' . rawurlencode($aValues[$k]);
+
+        $fp = fsockopen("www.stopforumspam.com", 80);
+        fputs($fp, "POST /add.php HTTP/1.1\n" );
+        fputs($fp, "Host: www.stopforumspam.com\n" );
+        fputs($fp, "Content-type: application/x-www-form-urlencoded\n" );
+        fputs($fp, "Content-length: " . strlen($sData) . "\n" );
+        fputs($fp, "Connection: close\n\n" );
+        fputs($fp, $sData);
+        fclose($fp);
+
+        return true;
+    }
+
+    public function onPositiveDetection ($sExtraData = '')
+    {
+        $o = bx_instance('BxAntispamDNSBlacklists', array(), 'bx_antispam');
+        $o->onPositiveDetection (getVisitorIP(false), $sExtraData, 'stopforumspam');
+    }
+}
+
+/** @} */

+ 68 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/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    Antispam Antispam
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_antispam',
+    'title' => 'Antispam',
+    'note' => 'Antispam tools',
+    'version' => '8.0.4',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/antispam/',
+    'home_uri' => 'antispam',
+
+    'db_prefix' => 'bx_antispam_',
+    'class_prefix' => 'BxAntispam',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Antispam',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 205 - 0
modules/boonex/antispam/updates/8.0.3_8.0.4/source/install/sql/enable.sql

@@ -0,0 +1,205 @@
+
+-- 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_antispam', '_bx_antispam_adm_stg_cpt_type', 'bx_antispam@modules/boonex/antispam/|std-mi.png', IF(NOT ISNULL(@iTypeOrder), @iTypeOrder + 1, 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_antispam_general', '_bx_antispam_adm_stg_cpt_category_general', 1);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'bx_antispam_block', '_bx_antispam_option_block', '', 'checkbox', '', '', '', 10),
+(@iCategoryId, 'bx_antispam_report', '_bx_antispam_option_report', 'on', 'checkbox', '', '', '', 20);
+
+
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_antispam_ip_table', '_bx_antispam_adm_stg_cpt_category_ip_table', 2);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'bx_antispam_ip_list_type', '_bx_antispam_option_ip_list_type', '0', 'select', 'a:3:{s:6:"module";s:11:"bx_antispam";s:6:"method";s:13:"config_values";s:6:"params";a:1:{i:0;s:8:"ip_table";}}', '', '', 10);
+
+
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_antispam_dnsbl', '_bx_antispam_adm_stg_cpt_category_dnsbl', 3);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'bx_antispam_dnsbl_enable', '_bx_antispam_option_dnsbl_enable', 'on', 'checkbox', '', '', '', 10),
+(@iCategoryId, 'bx_antispam_dnsbl_behaviour_login', '_bx_antispam_option_dnsbl_behaviour_login', 'block', 'select', 'a:3:{s:6:"module";s:11:"bx_antispam";s:6:"method";s:13:"config_values";s:6:"params";a:1:{i:0;s:11:"dnsbl_login";}}', '', '', 20),
+(@iCategoryId, 'bx_antispam_dnsbl_behaviour_join', '_bx_antispam_option_dnsbl_behaviour_join', 'approval', 'select', 'a:3:{s:6:"module";s:11:"bx_antispam";s:6:"method";s:13:"config_values";s:6:"params";a:1:{i:0;s:10:"dnsbl_join";}}', '', '', 30),
+(@iCategoryId, 'bx_antispam_uridnsbl_enable', '_bx_antispam_option_uridnsbl_enable', 'on', 'checkbox', '', '', '', 40);
+
+
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_antispam_akismet', '_bx_antispam_adm_stg_cpt_category_akismet', 4);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'bx_antispam_akismet_enable', '_bx_antispam_option_akismet_enable', '', 'checkbox', '', '', '', 10),
+(@iCategoryId, 'bx_antispam_akismet_api_key', '_bx_antispam_option_akismet_api_key', '', 'digit', '', '', '', 20);
+
+
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order` )  
+VALUES (@iTypeId, 'bx_antispam_stopforumspam', '_bx_antispam_adm_stg_cpt_category_stopforumspam', 5);
+SET @iCategoryId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+(@iCategoryId, 'bx_antispam_stopforumspam_enable', '_bx_antispam_option_stopforumspam_enable', 'on', 'checkbox', '', '', '', 10),
+(@iCategoryId, 'bx_antispam_stopforumspam_api_key', '_bx_antispam_option_stopforumspam_api_key', '', 'digit', '', '', '', 20);
+
+
+-- page: DNSBL list
+
+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_antispam_dnsbl', 'antispam-dnsbl-list', '_bx_antispam_page_title_sys_dnsbl_list', '_bx_antispam_page_title_dnsbl_list', 'bx_antispam', 5, 128, 1, 'page.php?i=antispam-dnsbl-list', '', '', '', 0, 1, 0, 'BxAntispamPage', 'modules/boonex/antispam/classes/BxAntispamPage.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_antispam_dnsbl', 1, 'bx_antispam', '_bx_antispam_page_block_title_dnsbl_list', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_antispam\";s:6:\"method\";s:10:\"dnsbl_list\";}', 0, 1, 1, 1);
+
+-- page: ip table
+
+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_antispam_ip_table', 'antispam-ip-table', '_bx_antispam_page_title_sys_ip_table', '_bx_antispam_page_title_ip_table', 'bx_antispam', 5, 128, 1, 'page.php?i=antispam-ip-table', '', '', '', 0, 1, 0, 'BxAntispamPage', 'modules/boonex/antispam/classes/BxAntispamPage.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_antispam_ip_table', 1, 'bx_antispam', '_bx_antispam_page_block_title_ip_table', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_antispam\";s:6:\"method\";s:8:\"ip_table\";}', 0, 1, 1, 1);
+
+-- page: block log
+
+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_antispam_block_log', 'antispam-block-log', '_bx_antispam_page_title_sys_block_log', '_bx_antispam_page_title_block_log', 'bx_antispam', 5, 192, 1, 'page.php?i=antispam-block-log', '', '', '', 0, 1, 0, 'BxAntispamPage', 'modules/boonex/antispam/classes/BxAntispamPage.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_antispam_block_log', 1, 'bx_antispam', '_bx_antispam_page_block_title_block_log', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_antispam\";s:6:\"method\";s:9:\"block_log\";}', 0, 1, 1, 1);
+
+-- grid: DNSBL
+
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
+('bx_antispam_grid_dnsbl', 'Sql', 'SELECT `id`, `chain`, `zonedomain`, `postvresp`, `url`, `recheck`, `comment`, `added`, `active` FROM `bx_antispam_dnsbl_rules`', 'bx_antispam_dnsbl_rules', 'id', 'added', 'active', '', 16, NULL, 'start', '', 'chain,zonedomain,url,recheck', 'comment', 'auto', 'chain,zonedomain', 'comment', 128, 'BxAntispamGridDNSBL', 'modules/boonex/antispam/classes/BxAntispamGridDNSBL.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
+('bx_antispam_grid_dnsbl', 'switcher', '_sys_active', '10%', 0, 0, '', 1),
+('bx_antispam_grid_dnsbl', 'chain', '_bx_antispam_field_chain', '15%', 0, 0, '', 2),
+('bx_antispam_grid_dnsbl', 'zonedomain', '_bx_antispam_field_zonedomain', '15%', 0, 0, '', 3),
+('bx_antispam_grid_dnsbl', 'comment', '_bx_antispam_field_note', '55%', 0, 0, '', 4),
+('bx_antispam_grid_dnsbl', 'actions', '_sys_actions', '5%', 0, 0, '', 5);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
+('bx_antispam_grid_dnsbl', 'independent', 'log', '_bx_antispam_grid_action_log', '', 0, 1),
+('bx_antispam_grid_dnsbl', 'independent', 'recheck', '_bx_antispam_grid_action_recheck', '', 0, 2),
+('bx_antispam_grid_dnsbl', 'independent', 'add', '_bx_antispam_grid_action_add', '', 0, 3),
+('bx_antispam_grid_dnsbl', 'independent', 'help', '_bx_antispam_grid_action_help', '', 0, 4),
+('bx_antispam_grid_dnsbl', 'single', 'delete', '', 'remove',  1, 1);
+
+-- grid: ip table
+
+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_antispam_grid_ip_table', 'Sql', 'SELECT `ID`, `From`, `To`, `Type`, `LastDT`, `Desc` FROM `bx_antispam_ip_table`', 'bx_antispam_ip_table', 'ID', '', '', 10, NULL, 'start', '', 'From,To,Desc', 'auto', 'From,To,Type,LastDT,Desc', 128, 'BxAntispamGridIpTable', 'modules/boonex/antispam/classes/BxAntispamGridIpTable.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
+('bx_antispam_grid_ip_table', 'checkbox', '_sys_select', '2%', '', 1),
+('bx_antispam_grid_ip_table', 'From', '_bx_antispam_field_ip_from', '15%', '', 2),
+('bx_antispam_grid_ip_table', 'To', '_bx_antispam_field_ip_to', '15%', '', 3),
+('bx_antispam_grid_ip_table', 'Type', '_bx_antispam_field_action', '15%', '', 4),
+('bx_antispam_grid_ip_table', 'LastDT', '_bx_antispam_field_expiration', '15%', '', 5),
+('bx_antispam_grid_ip_table', 'Desc', '_bx_antispam_field_note', '26%', '', 6),
+('bx_antispam_grid_ip_table', 'actions', '_sys_actions', '12%', '', 7);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
+('bx_antispam_grid_ip_table', 'bulk', 'delete', '_bx_antispam_grid_action_delete', '', 1, 1),
+('bx_antispam_grid_ip_table', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_antispam_grid_ip_table', 'single', 'delete', '', 'remove',  1, 2),
+('bx_antispam_grid_ip_table', 'independent', 'add', '_bx_antispam_grid_action_add', '', 0, 1);
+
+-- grid: block log
+
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
+('bx_antispam_grid_block_log', 'Sql', 'SELECT `id`, `ip`, `profile_id`, `type`, `extra`, `added` FROM `bx_antispam_block_log`', 'bx_antispam_block_log', 'id', 'id', '', '', 8, NULL, 'start', '', 'type,extra', '', 'auto', 'ip,profile_id,type,extra,added', '', 192, 'BxAntispamGridBlockLog', 'modules/boonex/antispam/classes/BxAntispamGridBlockLog.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
+('bx_antispam_grid_block_log', 'ip', '_bx_antispam_field_ip', '20%', 0, 0, '', 1),
+('bx_antispam_grid_block_log', 'profile_id', '_bx_antispam_field_profile_id', '20%', 0, 0, '', 2),
+('bx_antispam_grid_block_log', 'type', '_bx_antispam_field_type', '15%', 0, 0, '', 3),
+('bx_antispam_grid_block_log', 'extra', '_bx_antispam_field_note', '15%', 0, 8, '', 4),
+('bx_antispam_grid_block_log', 'added', '_bx_antispam_field_when', '30%', 0, 0, '', 5);
+
+-- data list: ip table actions
+
+INSERT INTO `sys_form_pre_lists`(`module`, `key`, `title`, `use_for_sets`) VALUES 
+('bx_antispam', 'bx_antispam_ip_table_actions', '_bx_antispam_data_list_ip_table_actions', 0);
+
+INSERT INTO `sys_form_pre_values`(`Key`, `Value`, `LKey`, `LKey2`, `Order`) VALUES 
+('bx_antispam_ip_table_actions', 'allow', '_bx_antispam_ip_allow', '', 0),
+('bx_antispam_ip_table_actions', 'deny', '_bx_antispam_ip_deny', '', 0);
+
+-- form: IP table add/edit
+
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_antispam_ip_table_form', 'bx_antispam', '_bx_antispam_form_ip_table', 'grid.php?o={grid_object}&a={grid_action}', '', 'bx_antispam_ip_table', 'ID', '', '', 'bx_antispam_ip_table_submit', '', 0, 1, '', '');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_antispam_ip_table_form', 'bx_antispam_ip_table_form_add', 'bx_antispam', 0, '_bx_antispam_form_ip_table_add'),
+('bx_antispam_ip_table_form', 'bx_antispam_ip_table_form_edit', 'bx_antispam', 0, '_bx_antispam_form_ip_table_edit');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_antispam_ip_table_form', 'bx_antispam', 'ID', '', '', 0, 'hidden', '_bx_antispam_field_id', '', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'From', '', '', 0, 'text', '_bx_antispam_field_ip_from', '_bx_antispam_field_ip_from', '', 1, 0, 0, '', '', '', 'preg', 'a:1:{s:4:\"preg\";s:20:\"#\\d+\\.\\d+\\.\\d+\\.\\d+#\";}', '_bx_antispam_field_ip_err_msg', 'Xss', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'To', '', '', 0, 'text', '_bx_antispam_field_ip_to', '_bx_antispam_field_ip_to', '', 1, 0, 0, '', '', '', 'preg', 'a:1:{s:4:\"preg\";s:20:\"#\\d+\\.\\d+\\.\\d+\\.\\d+#\";}', '_bx_antispam_field_ip_err_msg', 'Xss', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'Type', 'allow', '#!bx_antispam_ip_table_actions', 0, 'select', '_bx_antispam_field_action', '_bx_antispam_field_action', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'LastDT', '', '', 0, 'datetime', '_bx_antispam_field_expiration', '_bx_antispam_field_expiration', '', 1, 0, 0, '', '', '', 'date_time', '', '_bx_antispam_field_expiration_err_msg', 'DateTime', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'Desc', '', '', 0, 'text', '_bx_antispam_field_note', '_bx_antispam_field_note', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'bx_antispam_ip_table_submit', '_sys_submit', '', 0, 'submit', '_sys_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'close', '_sys_close', '', 0, 'reset', '_sys_close', '', '', 0, 0, 0, 'a:2:{s:7:\"onclick\";s:46:\"$(\'.bx-popup-applied:visible\').dolPopupHide();\";s:5:\"class\";s:22:\"bx-def-margin-sec-left\";}', '', '', '', '', '', '', '', 1, 0),
+('bx_antispam_ip_table_form', 'bx_antispam', 'buttons', '', 'bx_antispam_ip_table_submit,close', 0, 'input_set', '_bx_antispam_form_buttons', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
+
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_antispam_ip_table_form_add', 'ID', 2147483647, 0, 0),
+('bx_antispam_ip_table_form_add', 'From', 2147483647, 1, 1),
+('bx_antispam_ip_table_form_add', 'To', 2147483647, 1, 2),
+('bx_antispam_ip_table_form_add', 'Type', 2147483647, 1, 3),
+('bx_antispam_ip_table_form_add', 'LastDT', 2147483647, 1, 4),
+('bx_antispam_ip_table_form_add', 'Desc', 2147483647, 1, 5),
+('bx_antispam_ip_table_form_add', 'bx_antispam_ip_table_submit', 2147483647, 1, 6),
+('bx_antispam_ip_table_form_add', 'close', 2147483647, 1, 7),
+('bx_antispam_ip_table_form_add', 'buttons', 2147483647, 1, 8),
+('bx_antispam_ip_table_form_edit', 'ID', 2147483647, 1, 0),
+('bx_antispam_ip_table_form_edit', 'From', 2147483647, 1, 1),
+('bx_antispam_ip_table_form_edit', 'To', 2147483647, 1, 2),
+('bx_antispam_ip_table_form_edit', 'Type', 2147483647, 1, 3),
+('bx_antispam_ip_table_form_edit', 'LastDT', 2147483647, 1, 4),
+('bx_antispam_ip_table_form_edit', 'Desc', 2147483647, 1, 5),
+('bx_antispam_ip_table_form_edit', 'bx_antispam_ip_table_submit', 2147483647, 1, 6),
+('bx_antispam_ip_table_form_edit', 'close', 2147483647, 1, 7),
+('bx_antispam_ip_table_form_edit', 'buttons', 2147483647, 1, 8);
+
+-- alerts
+
+INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
+('bx_antispam', 'BxAntispamAlertsResponse', 'modules/boonex/antispam/classes/BxAntispamAlertsResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('account', 'check_login', @iHandler),
+('account', 'check_join', @iHandler),
+('system', 'check_spam', @iHandler);
+
+-- email templates
+
+INSERT INTO `sys_email_templates` (`Module`, `NameSystem`, `Name`, `Subject`, `Body`) VALUES
+('bx_antispam', '_bx_antispam_spam_report_name', 'bx_antispam_spam_report', '_bx_antispam_spam_report_subject', '_bx_antispam_spam_report_body');
+
+-- cron
+
+INSERT INTO `sys_cron_jobs` (`name`, `time`, `class`, `file`, `service_call`) VALUES
+('bx_antispam_pruning', '0 0 * * *', 'BxAntispamCronPruning', 'modules/boonex/antispam/classes/BxAntispamCronPruning.php', '');
+

+ 51 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/install/config.php

@@ -0,0 +1,51 @@
+<?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' => 'Contact',
+    'version_from' => '8.0.3',
+	'version_to' => '8.0.4',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/contact/updates/update_8.0.3_8.0.4/',
+	'home_uri' => 'contact_update_803_804',
+
+	'module_dir' => 'boonex/contact/',
+	'module_uri' => 'contact',
+
+    'db_prefix' => 'bx_contact_',
+    'class_prefix' => 'BxContact',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 0,
+        'update_files' => 1,
+        'update_languages' => 1,
+		'clear_db_cache' => 0,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Contact',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/install/installer.php

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

+ 5 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/install/langs/en.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_upd name="_bx_contact_menu_item_title_system_contact"><![CDATA[Contact]]></string_upd>
+    <string_upd name="_bx_contact_menu_item_title_contact"><![CDATA[Contact]]></string_upd>
+</resources>

+ 127 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/source/classes/BxContactModule.php

@@ -0,0 +1,127 @@
+<?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    Contact Contact
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+bx_import('BxDolAcl');
+
+class BxContactModule extends BxDolModule
+{
+    /**
+     * Constructor
+     */
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $this->_oConfig->init($this->_oDb);
+    }
+
+    /**
+     * SERVICE METHODS
+     */
+    public function serviceGetBlockForm()
+    {
+        $aDefaultFields = array('name', 'email', 'subject', 'body', 'do_submit');
+
+        $mixedAllowed = $this->isAllowedContact();
+        if($mixedAllowed !== true)
+            return array(
+                'content' => MsgBox($mixedAllowed)
+            );
+
+        $sResult = '';
+
+        $oForm = BxDolForm::getObjectInstance($this->_oConfig->getObject('form_contact'), $this->_oConfig->getObject('form_display_contact_send'), $this->_oTemplate);
+
+        $oForm->initChecker();
+        if($oForm->isSubmittedAndValid()) {
+            $iId = $oForm->insert(array(
+                'uri' => $oForm->generateUri(),
+                'date' => time()
+            ));
+
+            if($iId !== false) {
+                $sCustomFields = '';
+                $aCustomFields = array();
+                foreach($oForm->aInputs as $aInput) {
+                    if(in_array($aInput['name'], $aDefaultFields))
+                        continue;
+
+                    $aCustomFields[$aInput['name']] = bx_process_output($oForm->getCleanValue($aInput['name']));
+                    $sCustomFields .= $aInput['caption'] . ': ' . $aCustomFields[$aInput['name']] . '<br />';
+                }
+
+                $aTemplateKeys = array(
+                    'SenderName' => bx_process_output($oForm->getCleanValue('name')),
+                    'SenderEmail' => bx_process_output($oForm->getCleanValue('email')),
+                    'MessageSubject' => bx_process_output($oForm->getCleanValue('subject')),
+                    'MessageBody' => bx_process_output(nl2br($oForm->getCleanValue('body')), BX_DATA_TEXT_MULTILINE),
+                    'CustomFields' => $sCustomFields,
+                );
+                $aTemplateKeys = array_merge($aTemplateKeys, $aCustomFields);
+
+                $aMessage = BxDolEmailTemplates::getInstance()->parseTemplate('bx_contact_contact_form_message', $aTemplateKeys);
+
+                $sResult = '';
+                $sRecipientEmail = $this->_oConfig->getEmail();
+                if(sendMail($sRecipientEmail, $aMessage['Subject'], $aMessage['Body'], 0, array(), BX_EMAIL_SYSTEM)) {
+                    $this->onContact();
+
+                    $sResult = '_ADM_PROFILE_SEND_MSG';
+                } else
+                    $sResult = '_Email sent failed';
+
+                $sResult = MsgBox(_t($sResult));
+            }
+        }
+
+        return array(
+            'content' => $sResult . $oForm->getCode()
+        );
+    }
+
+    public function serviceGetContactPageUrl()
+    {
+        //if (true !== $this->isAllowedContact())
+        //    return false;
+
+        return BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=contact');
+    }
+
+    /*
+     * COMMON METHODS
+     */
+    public function getUserId()
+    {
+        return isLogged() ? bx_get_logged_profile_id() : 0;
+    }
+
+    protected function onContact()
+    {
+        $iUserId = $this->getUserId();
+
+        $this->isAllowedContact(true);
+
+        //--- Event -> Contact for Alerts Engine ---//
+        $oAlert = new BxDolAlerts($this->_oConfig->getObject('alert'), 'contact', 0, $iUserId);
+        $oAlert->alert();
+        //--- Event -> Contact for Alerts Engine ---//
+    }
+
+    protected function isAllowedContact($bPerform = false)
+    {
+        $iUserId = $this->getUserId();
+
+        $aCheckResult = checkActionModule($iUserId, 'contact', $this->getName(), $bPerform);
+        return $aCheckResult[CHECK_ACTION_RESULT] != CHECK_ACTION_RESULT_ALLOWED ? $aCheckResult[CHECK_ACTION_MESSAGE] : true;
+    }
+}
+
+/** @} */

+ 72 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/source/install/config.php

@@ -0,0 +1,72 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Contact Contact
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_contact',
+    'title' => 'Contact',
+    'note' => 'Contact module.',
+    'version' => '8.0.4',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+    
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/contact/',
+    'home_uri' => 'contact',
+
+    'db_prefix' => 'bx_contact_',
+    'class_prefix' => 'BxContact',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Contact',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 46 - 0
modules/boonex/contact/updates/8.0.3_8.0.4/source/install/langs/en.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+
+	<string name="_bx_contact"><![CDATA[Contact]]></string>
+
+	<string name="_bx_contact_form_contact"><![CDATA[Contact]]></string>
+	<string name="_bx_contact_form_contact_display_send"><![CDATA[Send]]></string>
+	<string name="_bx_contact_form_contact_input_sys_name"><![CDATA[Your Name]]></string>
+	<string name="_bx_contact_form_contact_input_name"><![CDATA[Your Name]]></string>
+	<string name="_bx_contact_form_contact_input_name_err"><![CDATA[You need to type your name here.]]></string>
+	<string name="_bx_contact_form_contact_input_sys_email"><![CDATA[Your email]]></string>
+	<string name="_bx_contact_form_contact_input_email"><![CDATA[Your email]]></string>
+	<string name="_bx_contact_form_contact_input_email_err"><![CDATA[You need to type the correct email here.]]></string>
+	<string name="_bx_contact_form_contact_input_sys_subject"><![CDATA[Message subject]]></string>
+	<string name="_bx_contact_form_contact_input_subject"><![CDATA[Message subject]]></string>
+	<string name="_bx_contact_form_contact_input_subject_err"><![CDATA[You need to type message's subject here.]]></string>
+	<string name="_bx_contact_form_contact_input_sys_body"><![CDATA[Message text]]></string>
+	<string name="_bx_contact_form_contact_input_body"><![CDATA[Message text]]></string>
+	<string name="_bx_contact_form_contact_input_body_err"><![CDATA[You need to type message's body here.]]></string>
+	<string name="_bx_contact_form_contact_input_sys_captcha"><![CDATA[Captcha]]></string>
+	<string name="_bx_contact_form_contact_input_captcha"><![CDATA[Security Image]]></string>
+	<string name="_bx_contact_form_contact_input_captcha_err"><![CDATA[Security image input failed. Please, try again.]]></string>
+	<string name="_bx_contact_form_contact_input_sys_do_submit"><![CDATA[Send]]></string>
+	<string name="_bx_contact_form_contact_input_do_submit"><![CDATA[Send]]></string>
+
+	<string name="_bx_contact_page_title_sys_contact"><![CDATA[Contact Us]]></string>
+	<string name="_bx_contact_page_title_contact"><![CDATA[Contact Us]]></string>
+	<string name="_bx_contact_page_block_title_form"><![CDATA[Contact Us]]></string>
+
+    <string name="_bx_contact_menu_item_title_system_contact"><![CDATA[Contact]]></string>
+    <string name="_bx_contact_menu_item_title_contact"><![CDATA[Contact]]></string>
+
+	<string name="_bx_contact_option_email"><![CDATA[Email address to receive messages (if empty, site's email will be used)]]></string>
+
+	<string name="_bx_contact_acl_action_contact"><![CDATA[Contact]]></string>
+
+	<string name="_bx_contact_et_contact_form_message"><![CDATA[Contact form message.]]></string>
+	<string name="_bx_contact_et_contact_form_message_subject"><![CDATA[Contact form message.]]></string>
+	<string name="_bx_contact_et_contact_form_message_body"><![CDATA[<bx_include_auto:_email_header.html />
+<p><b>Dear Administrator</b>,</p>
+<p>You were contacted by <u>{SenderName}</u> with email <u>{SenderEmail}</u></p>
+<hr />
+<p><b>{MessageSubject}</b></p>
+<p>{MessageBody}</p>
+<bx_include_auto:_email_footer.html />]]></string>
+</resources>

+ 51 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/install/config.php

@@ -0,0 +1,51 @@
+<?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.5',
+	'version_to' => '8.0.6',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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.5_8.0.6/',
+	'home_uri' => 'convos_update_805_806',
+
+	'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' => 1,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Conversations',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/install/installer.php

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

+ 7 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/install/langs/en.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_bx_cnv_menu_title_view_entry_popup"><![CDATA[Conversation Popup Actions]]></string_add>
+
+	<string_upd name="_bx_cnv_menu_set_title_view_entry"><![CDATA[Conversation Actions]]></string_upd>
+	<string_upd name="_bx_cnv_menu_title_view_entry"><![CDATA[Conversation Actions]]></string_upd>
+</resources>

+ 6 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/install/sql/enable.sql

@@ -0,0 +1,6 @@
+-- MENU
+DELETE FROM `sys_objects_menu` WHERE `object`='bx_convos_view_popup';
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_convos_view_popup', '_bx_cnv_menu_title_view_entry_popup', '', 'bx_convos', 16, 0, 1, 'BxCnvMenuViewActions', 'modules/boonex/convos/classes/BxCnvMenuViewActions.php');
+
+UPDATE `sys_menu_items` SET `icon`='envelope', `visible_for_levels`='2147483646' WHERE `set_name`='trigger_profile_view_actions' AND `name`='convos-compose';

+ 94 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvConfig.php

@@ -0,0 +1,94 @@
+<?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     TridentModules
+ *
+ * @{
+ */
+
+class BxCnvConfig extends BxBaseModTextConfig
+{
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $aMenuItems2Methods = array (
+            'delete-convos' => 'checkAllowedDelete',
+            'mark-unread-convo' => 'checkAllowedView',
+        );
+
+        $this->CNF = array (
+
+            // module icon
+            'ICON' => 'comments col-red1',
+
+            // database tables
+            'TABLE_ENTRIES' => $aModule['db_prefix'] . 'conversations',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => 'author',
+            'FIELD_ADDED' => 'added',
+            'FIELD_CHANGED' => 'changed',
+            'FIELD_TITLE' => '',
+            'FIELD_TEXT' => 'text',
+            'FIELD_TEXT_ID' => 'convo-text',
+            'FIELD_ALLOW_VIEW_TO' => '',
+            'FIELD_PHOTO' => 'attachments',
+            'FIELD_THUMB' => '',
+            'FIELD_COMMENTS' => 'comments',
+
+            // page URIs
+            'URI_VIEW_ENTRY' => 'view-convo',
+            'URI_AUTHOR_ENTRIES' => 'convos',
+            'URI_ADD_ENTRY' => 'start-convo',
+
+            'URL_HOME' => 'modules/?r=convos/folder/1',
+
+            // some params
+            'PARAM_CHARS_SUMMARY' => '',
+            'PARAM_CHARS_SUMMARY_PLAIN' => '',
+            'PARAM_NUM_RSS' => '',
+
+            // objects
+            'OBJECT_GRID' => 'bx_convos',
+            'OBJECT_STORAGE' => 'bx_convos_files',
+            'OBJECT_IMAGES_TRANSCODER_PREVIEW' => 'bx_convos_preview',
+            'OBJECT_IMAGES_TRANSCODER_GALLERY' => '',
+            'OBJECT_VIDEOS_TRANSCODERS' => array(),
+            'OBJECT_VIEWS' => 'bx_convos',
+            'OBJECT_VOTES' => '',
+            'OBJECT_COMMENTS' => 'bx_convos',
+            'OBJECT_PRIVACY_VIEW' => '',
+            'OBJECT_FORM_ENTRY' => 'bx_convos',
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW' => 'bx_convos_entry_view',
+            'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_convos_entry_add',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => '',
+            'OBJECT_FORM_ENTRY_DISPLAY_DELETE' => 'bx_convos_entry_delete',
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY' => 'bx_convos_view', // actions menu on view entry page
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY_POPUP' => 'bx_convos_view_popup', // actions menu popup on view entry page
+            'OBJECT_MENU_ACTIONS_MY_ENTRIES' => 'bx_convos_my', // actions menu on my entries page
+            'OBJECT_MENU_SUBMENU' => 'bx_convos_submenu', // main module submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY' => '', // view entry submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_MAIN_SELECTION' => 'convos', // first item in view entry submenu from main module submenu
+            'OBJECT_UPLOADERS' => array('sys_simple', 'sys_html5'),
+
+            // menu items which visibility depends on custom visibility checking
+            'MENU_ITEM_TO_METHOD' => array (
+                'bx_convos_view' => $aMenuItems2Methods,
+                'bx_convos_view_popup' => $aMenuItems2Methods,
+            ),
+
+            // some language keys
+            'T' => array (
+                'txt_sample_single' => '_bx_cnv_txt_sample_single',
+            ),
+        );
+
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvMenuViewActions.php

@@ -0,0 +1,24 @@
+<?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     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Actions popup menu.
+ */
+class BxCnvMenuViewActions extends BxBaseModTextMenuViewActions
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_convos';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 330 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvModule.php

@@ -0,0 +1,330 @@
+<?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     TridentModules
+ *
+ * @{
+ */
+
+define('BX_CNV_FOLDER_INBOX', 1);
+define('BX_CNV_FOLDER_DRAFTS', 2);
+define('BX_CNV_FOLDER_SPAM', 3);
+define('BX_CNV_FOLDER_TRASH', 4);
+
+/**
+ * Conversations module
+ */
+class BxCnvModule extends BxBaseModTextModule
+{
+    function __construct(&$aModule)
+    {
+        parent::__construct($aModule);
+    }
+
+    public function sortCollaborators ($aCollaborators, $iProfileIdLastComment, $iProfileIdAuthor, $iProfileIdCurrent = 0)
+    {
+        if (!$iProfileIdCurrent)
+            $iProfileIdCurrent = bx_get_logged_profile_id();
+
+        $aMoveUp = array($iProfileIdCurrent, $iProfileIdLastComment, $iProfileIdAuthor);
+
+        asort($aCollaborators, SORT_NUMERIC);
+
+        foreach ($aMoveUp as $iProfileId) {
+            if (!isset($aCollaborators[$iProfileId]))
+                continue;
+
+            $a = array($iProfileId => $aCollaborators[$iProfileId]);
+            unset($aCollaborators[$iProfileId]);
+            $aCollaborators = $a + $aCollaborators;
+        }
+
+        return $aCollaborators;
+    }
+
+    public function setModuleSubmenu ($iCurrentFolderId = 0)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $aMapFolderId2MenuName = array (
+            BX_CNV_FOLDER_INBOX => 'convos-folder-inbox',
+            BX_CNV_FOLDER_DRAFTS => 'convos-drafts',
+            BX_CNV_FOLDER_SPAM => 'convos-spam',
+            BX_CNV_FOLDER_TRASH => 'convos-trash',
+        );
+
+        $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
+        if (!$oMenuSubmenu)
+            return;
+
+        $oMenuSubmenu->setObjectSubmenu($CNF['OBJECT_MENU_SUBMENU'], array (
+            'title' => _t('_bx_cnv'),
+            'link' => BX_DOL_URL_ROOT . $CNF['URL_HOME'],
+            'icon' => '',
+        ));
+
+        $oMenuModule = BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_SUBMENU']);
+        if ($oMenuModule && isset($aMapFolderId2MenuName[$iCurrentFolderId]))
+            $oMenuModule->setSelected($this->_aModule['name'], $aMapFolderId2MenuName[$iCurrentFolderId]);
+    }
+
+    /**
+     * Mark conversation as unread for the current user
+     * @return error string on error, or empty string on success
+     */
+    public function markUnread ($iContentId)
+    {
+        $aContentInfo = $this->_oDb->getContentInfoById($iContentId);
+        if (!$aContentInfo)
+            return _t('_sys_request_page_not_found_cpt');
+
+        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->checkAllowedView($aContentInfo)))
+            return $sMsg;
+
+        if (!$this->_oDb->updateReadComments(bx_get_logged_profile_id(), (int)$iContentId, -1))
+            return _t('_error occured');
+
+        return '';
+    }
+
+    /**
+     * Delete conversation for current user by content id, before deletetion it checks user permission to delete convos
+     * @return error string on error, or empty string on success
+     */
+    public function deleteConvo ($iContentId)
+    {
+        $aContentInfo = $this->_oDb->getContentInfoById($iContentId);
+        if (!$aContentInfo)
+            return _t('_sys_request_page_not_found_cpt');
+
+        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->checkAllowedDelete($aContentInfo)))
+            return $sMsg;
+
+        if (!$this->_oDb->moveConvo((int)$iContentId, bx_get_logged_profile_id(), BX_CNV_FOLDER_TRASH))
+            return _t('_error occured');
+
+        return '';
+    }
+
+    /**
+     * Delete whole conversation for all users by content id
+     * @return error string on error, or empty string on success
+     */
+    public function deleteConvoForever ($iContentId)
+    {
+        if (!$this->_oDb->deleteConvo((int)$iContentId))
+            return _t('_error occured');
+
+        return '';
+    }
+
+    public function actionMarkUnread($iContentId)
+    {
+        header('Content-Type:text/plain; charset=utf-8');
+
+        if ($s = $this->markUnread ($iContentId)) {
+            echo $s;
+            exit;
+        }
+
+        echo BX_DOL_URL_ROOT . $this->_oConfig->CNF['URL_HOME'];
+        exit;
+    }
+
+    public function actionDelete($iContentId)
+    {
+        header('Content-Type:text/plain; charset=utf-8');
+
+        if ($s = $this->deleteConvo ($iContentId)) {
+            echo $s;
+            exit;
+        }
+
+        echo BX_DOL_URL_ROOT . $this->_oConfig->CNF['URL_HOME'];
+        exit;
+    }
+
+    /**
+     * Display convos in folder
+     */
+    public function actionFolder ($iFolderId)
+    {
+        $oTemplate = BxDolTemplate::getInstance();
+
+        $aFolder = $this->_oDb->getFolder((int)$iFolderId);
+        $oPage = BxDolPage::getObjectInstance('bx_convos_home');
+
+        if (!$aFolder || !$oPage) {
+            $this->_oTemplate->displayPageNotFound();
+            exit;
+        }
+
+        // add replaceable markers
+        $oPage->addMarkers(array(
+            'folder_id' => (int)$iFolderId,
+            'folder' => _t($aFolder['name']),
+        ));
+
+        $s = $oPage->getCode();
+
+        $this->_oTemplate = BxDolTemplate::getInstance();
+        $this->_oTemplate->setPageNameIndex (BX_PAGE_DEFAULT);
+        $this->_oTemplate->setPageContent ('page_main_code', $s);
+        $this->_oTemplate->getPageCode();
+    }
+
+    /**
+     * Get possible recipients for start conversation form
+     */
+    public function actionAjaxGetRecipients ()
+    {
+        $sTerm = bx_get('term');
+
+        $a = BxDolService::call('system', 'profiles_search', array($sTerm), 'TemplServiceProfiles');
+
+        header('Content-Type:text/javascript; charset=utf-8');
+        echo(json_encode($a));
+    }
+
+    public function serviceConversationsInFolder ($iFolderId = BX_CNV_FOLDER_INBOX)
+    {
+        $oGrid = BxDolGrid::getObjectInstance($this->_oConfig->CNF['OBJECT_GRID']);
+        if (!$oGrid)
+            return false;
+
+        $aFolder = $this->_oDb->getFolder((int)$iFolderId);
+        if (!$aFolder)
+            return false;
+
+        $this->setModuleSubmenu ((int)$iFolderId);
+
+        // TODO: incorporate markers into custom class, so replace will work in search and so on
+        $oGrid->addMarkers(array(
+            'folder_id' => (int)$iFolderId,
+            'profile_id' => bx_get_logged_profile_id(),
+        ));
+
+        return $oGrid->getCode();
+    }
+
+    public function serviceMessagesPreviews ($iProfileId = 0)
+    {
+        if (!$iProfileId)
+            $iProfileId = bx_get_logged_profile_id();
+
+        $a = $this->_oDb->getMessagesPreviews($iProfileId, 0, (int)getParam('bx_convos_preview_messages_num'));
+
+        return $this->_oTemplate->getMessagesPreviews($a);
+    }
+
+    /**
+     * Get number of unread messages for spme profile
+     * @param $iProfileId - profile to get unread messages for, if omitted then currently logged is profile is used
+     * @return integer
+     */
+    public function serviceGetUnreadMessagesNum ($iProfileId = 0)
+    {
+        if (!$iProfileId)
+            $iProfileId = bx_get_logged_profile_id();
+
+        return $this->_oDb->getUnreadMessagesNum((int)$iProfileId);
+    }
+
+    /**
+     * Update last comment time and author
+     */
+    public function serviceTriggerCommentPost ($iContentId, $iProfileId, $iCommentId, $iTimestamp = 0)
+    {
+        if (!(int)$iContentId)
+            return false;
+        $aContentInfo = $this->_oDb->getContentInfoById((int)$iContentId);
+        if (!$aContentInfo)
+            return false;
+
+        if (!$iTimestamp)
+            $iTimestamp = time();
+
+        if ($iProfileId == bx_get_logged_profile_id())
+            $this->_oDb->updateReadComments($iProfileId, $aContentInfo[$this->_oConfig->CNF['FIELD_ID']], $aContentInfo[$this->_oConfig->CNF['FIELD_COMMENTS']]);
+
+        return $this->_oDb->updateLastCommentTimeProfile((int)$iContentId, (int)$iProfileId, (int)$iCommentId, $iTimestamp);
+    }
+
+    /**
+     * Entry collaborators block
+     */
+    public function serviceEntityCollaborators ($iContentId = 0)
+    {
+        if (!$iContentId)
+            $iContentId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if (!$iContentId)
+            return false;
+        $aContentInfo = $this->_oDb->getContentInfoById($iContentId);
+        if (!$aContentInfo)
+            return false;
+
+        return $this->_oTemplate->entryCollaborators ($aContentInfo, 5, 'right');
+    }
+
+    /**
+     * No social sharing for private conversations
+     */
+    public function serviceEntitySocialSharing ($iContentId = 0)
+    {
+        return '';
+    }
+
+    /**
+     * No moderators for personal convos
+     */
+    protected function _isModerator ($isPerformAction = false)
+    {
+        return false;
+    }
+
+    /**
+     * No thumbs for convos
+     */
+    public function checkAllowedSetThumb ()
+    {
+        return _t('_sys_txt_access_denied');
+    }
+
+    /**
+     * Conversations can be deleted by author and/or collaborators only.
+     * Admins can't delete conversations, since it's designed for participant only, it's moved to trash actually, also it's private content.
+     */
+    public function checkAllowedDelete (&$aDataEntry, $isPerformAction = false)
+    {
+        if ($aDataEntry[$this->_oConfig->CNF['FIELD_AUTHOR']] == $this->_iProfileId || $this->isCollaborator($aDataEntry, bx_get_logged_profile_id()))
+            return CHECK_ACTION_RESULT_ALLOWED;
+
+        if ($this->_isModerator($isPerformAction))
+            return _t('_sys_txt_access_denied');
+
+        return parent::checkAllowedDelete ($aDataEntry, $isPerformAction);
+    }
+
+    /**
+     * Only collaborators can view convo
+     */
+    public function checkAllowedView ($aDataEntry, $isPerformAction = false)
+    {
+        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = parent::checkAllowedView ($aDataEntry, $isPerformAction)))
+            return $sMsg;
+
+        return $this->isCollaborator($aDataEntry, bx_get_logged_profile_id()) ? CHECK_ACTION_RESULT_ALLOWED : _t('_sys_txt_access_denied');
+    }
+
+
+    protected function isCollaborator($aDataEntry, $iProfileId)
+    {
+        $aCollaborators = $this->_oDb->getCollaborators($aDataEntry[$this->_oConfig->CNF['FIELD_ID']]);
+        return isset($aCollaborators[$iProfileId]);
+    }
+}
+
+/** @} */

+ 43 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvPageEntry.php

@@ -0,0 +1,43 @@
+<?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     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Entry create/edit pages
+ */
+class BxCnvPageEntry extends BxBaseModTextPageEntry
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_convos';
+        parent::__construct($aObject, $oTemplate);
+
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $this->_oModule->_oDb->updateReadComments(bx_get_logged_profile_id(), $this->_aContentInfo[$CNF['FIELD_ID']], $this->_aContentInfo[$CNF['FIELD_COMMENTS']]);
+
+        $iFolder = $this->_oModule->_oDb->getConversationFolder($this->_aContentInfo[$CNF['FIELD_ID']], bx_get_logged_profile_id());
+        if (BX_CNV_FOLDER_DRAFTS == $iFolder) { // if draft is opened - redirect to compose page
+            $sUrl = BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_ADD_ENTRY']);
+            $sUrl = bx_append_url_params($sUrl, array(
+                'draft_id' => $this->_aContentInfo[$CNF['FIELD_ID']],
+            ));
+            header('Location: ' . BX_DOL_URL_ROOT . $sUrl);
+            exit;
+        }
+
+        //$this->_oModule->setModuleSubmenu ($iFolder);
+
+        $this->_oModule->_oTemplate->addJs('main.js');
+        $this->_oModule->_oTemplate->addCss(array('main-media-tablet.css', 'main-media-desktop.css'));
+    }
+}
+
+/** @} */

+ 249 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/classes/BxCnvTemplate.php

@@ -0,0 +1,249 @@
+<?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     TridentModules
+ *
+ * @{
+ */
+
+/*
+ * Module representation.
+ */
+class BxCnvTemplate extends BxBaseModTextTemplate
+{
+    /**
+     * Constructor
+     */
+    function __construct(&$oConfig, &$oDb)
+    {
+        $this->MODULE = 'bx_convos';
+        parent::__construct($oConfig, $oDb);
+    }
+
+    public function entryCollaborators ($aContentInfo, $iMaxVisible = 2, $sFloat = 'left')
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        $CNF = &$oModule->_oConfig->CNF;
+
+        $aCollaborators = $this->_oDb->getCollaborators($aContentInfo[$CNF['FIELD_ID']]);
+        //unset($aCollaborators[$aContentInfo[$CNF['FIELD_AUTHOR']]]);
+
+        // sort collaborators: first - current user, second - last replier, third - author, all others sorted by max number of posts
+        $aCollaborators = $oModule->sortCollaborators($aCollaborators, $aContentInfo['last_reply_profile_id'], $aContentInfo[$CNF['FIELD_AUTHOR']]);
+        $iCollaboratorsNum = count($aCollaborators);
+
+        // prepare template variables
+        $aVarsPopup = array (
+            'float' => 'none',
+            'bx_repeat:collaborators' => array(),
+            'bx_if:collaborators_more' => array(
+                'condition' => false,
+                'content' => array(),
+            ),
+        );
+        $aVars = array (
+            'float' => $sFloat,
+            'bx_repeat:collaborators' => array(),
+            'bx_if:collaborators_more' => array(
+                'condition' => $iCollaboratorsNum > $iMaxVisible,
+                'content' => array(
+                    'popup' => '',
+                    'title_more' => _t('_bx_cnv_more', $iCollaboratorsNum - $iMaxVisible),
+                    'float' => $sFloat,
+                    'id' => $this->MODULE . '-popup-' . $aContentInfo[$CNF['FIELD_ID']],
+                ),
+            ),
+        );
+        $i = 0;
+        foreach ($aCollaborators as $iProfileId => $iReadComments) {
+            $oProfile = BxDolProfile::getInstance($iProfileId);
+            if (!$oProfile)
+                continue;
+
+            $sInfo = '';
+            if ($aContentInfo[$CNF['FIELD_AUTHOR']] == $iProfileId)
+                $sInfo = _t('_bx_cnv_collaborator_author');
+            if ($aContentInfo['last_reply_profile_id'] == $iProfileId)
+                $sInfo .= ', ' . _t('_bx_cnv_collaborator_last_replier');
+            $sInfo = trim($sInfo, ', ');
+            $sInfo = $sInfo ? _t('_bx_cnv_collaborator_info', $oProfile->getDisplayName(), $sInfo) : $oProfile->getDisplayName();
+
+            $aCollaborator = array (
+                'id' => $oProfile->id(),
+                'url' => $oProfile->getUrl(),
+                'thumb_url' => $oProfile->getThumb(),
+                'title' => $oProfile->getDisplayName(),
+                'title_attr' =>  bx_html_attribute($sInfo),
+                'float' => $sFloat,
+                'class' => $aContentInfo[$CNF['FIELD_AUTHOR']] == $iProfileId ? 'bx-cnv-collaborator-author' : '',
+                'bx_if:last_replier' => array (
+                    'condition' => ($aContentInfo['last_reply_profile_id'] == $iProfileId),
+                    'content' => array (
+                        'id' => $oProfile->id(),
+                    ),
+                ),
+                'bx_if:author'  => array (
+                    'condition' => $aContentInfo[$CNF['FIELD_AUTHOR']] == $iProfileId,
+                    'content' => array (
+                        'id' => $oProfile->id(),
+                    ),
+                ),
+            );
+
+            if ($i < $iMaxVisible)
+                $aVars['bx_repeat:collaborators'][] = $aCollaborator;
+            if ($i >= $iMaxVisible)
+                $aVarsPopup['bx_repeat:collaborators'][] = $aCollaborator;
+
+            ++$i;
+        }
+
+        if ($aVarsPopup['bx_repeat:collaborators']) {
+            $aVars['bx_if:collaborators_more']['content']['popup'] = BxTemplFunctions::getInstance()->transBox('', '<div class="bx-def-padding">' . $this->parseHtmlByName('collaborators.html', $aVarsPopup) . '</div>');
+        }
+
+        return $this->parseHtmlByName('collaborators.html', $aVars);
+    }
+
+    function getAuthorDesc ($aData)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+        if ($aData['last_reply_timestamp'] == $aData[$oModule->_oConfig->CNF['FIELD_ADDED']])
+            return bx_time_js($aData[$oModule->_oConfig->CNF['FIELD_ADDED']], BX_FORMAT_DATE);
+
+        return _t('_bx_cnv_author_desc', bx_time_js($aData[$oModule->_oConfig->CNF['FIELD_ADDED']], BX_FORMAT_DATE), bx_time_js($aData['last_reply_timestamp'], BX_FORMAT_DATE));
+    }
+
+    function getMessageLabel ($r, $oProfileLast = null)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+
+        if (!$oProfileLast) {
+            $oProfileLast = BxDolProfile::getInstance($r['last_reply_profile_id']);
+            if (!$oProfileLast)
+                $oProfileLast = BxDolProfileUndefined::getInstance();
+        }
+
+        if (!isset($r['unread_messages']))
+            $r['unread_messages'] = $r['comments'] - $r['read_comments'];
+
+        $bReadByAll = true;
+        $aCollaborators = $oModule->_oDb->getCollaborators($r['id']);
+        foreach ($aCollaborators as $iReadComments) {
+            if ($r['comments'] - $iReadComments) {
+                $bReadByAll = false;
+                break;
+            }
+        }
+
+        if (!isset($r['unread_messages']))
+            $r['unread_messages'] = $r['comments'] - $r['read_comments'];
+
+        $aVars = array (
+            'bx_if:unread_messages' => array (
+                'condition' => $r['unread_messages'] > 0,
+                'content' => array (
+                    'unread_messages' => $r['unread_messages'],
+                ),
+            ),
+            'bx_if:viewer_is_last_replier' => array (
+                'condition' => !$bReadByAll && $oProfileLast->id() == bx_get_logged_profile_id(),
+                'content' => array (),
+            ),
+            'bx_if:is_read_by_all' => array (
+                'condition' => $bReadByAll,
+                'content' => array (),
+            ),
+        );
+
+        return $this->parseHtmlByName('message_label.html', $aVars);
+    }
+
+    function getMessagesPreviews ($a)
+    {
+        if (empty($a))
+            return MsgBox(_t('_Empty'));
+
+        $oModule = BxDolModule::getInstance($this->MODULE);
+
+        $aVars = array(
+            'see_all_url' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink($oModule->_oConfig->CNF['URL_HOME']),
+            'bx_repeat:messages' => array(),
+        );
+        foreach ($a as $r) {
+
+            $oProfileAuthor = BxDolProfile::getInstance($r['author']);
+            if (!$oProfileAuthor)
+                $oProfileAuthor = BxDolProfileUndefined::getInstance();
+
+            $oProfileLast = BxDolProfile::getInstance($r['last_reply_profile_id']);
+            if (!$oProfileLast)
+                $oProfileLast = BxDolProfileUndefined::getInstance();
+
+            $sText = strmaxtextlen($r['text'], 90);
+            $sTextCmt = strmaxtextlen($r['cmt_text'], 50);
+
+            $aVars['bx_repeat:messages'][] = array (
+                'id' => $r['id'],
+                'url' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $oModule->_oConfig->CNF['URI_VIEW_ENTRY'] . '&id=' . $r['id']),
+                'text' => $sText ? $sText : $oProfileAuthor->getDisplayName(),
+                'cmt_text' => $sTextCmt,
+                'unread_messages' => $r['unread_messages'],
+                'last_reply_time_and_replier' => _t('_bx_cnv_x_date_by_x_replier', bx_time_js($r['last_reply_timestamp'], BX_FORMAT_DATE), $oProfileLast->getDisplayName()),
+                'font_weight' => $r['unread_messages'] > 0 ? 'bold' : 'normal',
+                'label' => $this->getMessageLabel($r, $oProfileLast),
+
+                'author_id' => $oProfileAuthor->id(),
+                'author_url' => $oProfileAuthor->getUrl(),
+                'author_title' => $oProfileAuthor->getDisplayName(),
+                'author_title_attr' => bx_html_attribute($oProfileAuthor->getDisplayName()),
+                'author_thumb_url' => $oProfileAuthor->getThumb(),
+
+                'last_replier_id' => $oProfileLast->id(),
+                'last_replier_url' => $oProfileLast->getUrl(),
+                'last_replier_title' => $oProfileLast->getDisplayName(),
+                'last_replier_title_attr' => bx_html_attribute($oProfileLast->getDisplayName()),
+                'last_replier_thumb_url' => $oProfileLast->getThumb(),
+            );
+        }
+        return $this->parseHtmlByName('messages_previews.html', $aVars);
+    }
+
+    function entryMessagePreviewInGrid ($r)
+    {
+        $oModule = BxDolModule::getInstance($this->MODULE);
+
+        $oProfileLast = BxDolProfile::getInstance($r['last_reply_profile_id']);
+        if (!$oProfileLast)
+            $oProfileLast = BxDolProfileUndefined::getInstance();
+
+        $sText = strmaxtextlen($r['text'], 100);
+        $sTextCmt = strmaxtextlen($r['cmt_text'], 100);
+
+        if (!isset($r['unread_messages']))
+            $r['unread_messages'] = $r['comments'] - $r['read_comments'];
+
+        $aVars = array (
+            'url' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $oModule->_oConfig->CNF['URI_VIEW_ENTRY'] . '&id=' . $r['id']),
+            'text' => $sText,
+            'cmt_text' => $sTextCmt,
+            'last_reply_time_and_replier' => _t('_bx_cnv_x_date_by_x_replier', bx_time_js($r['last_reply_timestamp'], BX_FORMAT_DATE), $oProfileLast->getDisplayName()),
+            'bx_if:unread_messages' => array (
+                'condition' => $r['unread_messages'] > 0,
+                'content' => array (),
+            ),
+        );
+        $aVars['bx_if:unread_messages2'] = $aVars['bx_if:unread_messages'];
+        return $this->parseHtmlByName('message_preview_in_grid.html', $aVars);
+    }
+
+    function getAuthorAddon ($aData, $oProfile)
+    {
+        return '';
+    }
+}
+
+/** @} */

+ 103 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/install/config.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Convos Convos
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_convos',
+    'title' => 'Conversations',
+    'note' => 'Conversations module.',
+    'version' => '8.0.6',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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',
+
+    /**
+     * Menu triggers.
+     */
+    'menu_triggers' => array(
+    	'trigger_profile_view_actions'
+    ),
+
+    /**
+     * Storages.
+     */
+    'storages' => array(
+    	'bx_convos_files'
+    ),
+
+	/**
+     * Transcoders.
+     */
+    'transcoders' => array(
+		'bx_convos_preview'
+    ),
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+    	'process_storages' => 1,
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+	'enable_success' => array(
+    	'process_menu_triggers' => 1,
+    	'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+    	'unregister_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable_failed' => array (
+    	'register_transcoders' => 1,
+    	'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 110 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/install/langs/en.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+
+	<string name="_bx_cnv"><![CDATA[Conversations]]></string>
+
+	<string name="_bx_cnv_option_preview_messages_num"><![CDATA[Number of preview messages]]></string>
+
+	<string name="_bx_cnv_form_entry"><![CDATA[Conversations]]></string>
+	<string name="_bx_cnv_form_entry_display_add"><![CDATA[New conversation]]></string>
+	<string name="_bx_cnv_form_entry_display_delete"><![CDATA[Delete conversation]]></string>
+	<string name="_bx_cnv_form_entry_display_view"><![CDATA[View conversation]]></string>
+	<string name="_bx_cnv_form_entry_input_sys_do_submit"><![CDATA[Submit]]></string>
+	<string name="_bx_cnv_form_entry_input_do_submit"><![CDATA[Submit]]></string>
+	<string name="_bx_cnv_form_entry_input_sys_text"><![CDATA[Text]]></string>
+	<string name="_bx_cnv_form_entry_input_text"><![CDATA[Text]]></string>
+	<string name="_bx_cnv_form_entry_input_text_err"><![CDATA[Text field can't be empty]]></string>
+	<string name="_bx_cnv_form_entry_input_sys_delete_confirm"><![CDATA[Delete confirmation]]></string>
+	<string name="_bx_cnv_form_entry_input_delete_confirm"><![CDATA[I am sure I want to delete this conversation]]></string>
+	<string name="_bx_cnv_form_entry_input_delete_confirm_info"><![CDATA[This action can not be undone]]></string>
+	<string name="_bx_cnv_form_entry_input_delete_confirm_error"><![CDATA[Please check this checkbox if you really want to delete the conversation]]></string>
+	<string name="_bx_cnv_form_entry_input_sys_attachments"><![CDATA[Attachments]]></string>
+	<string name="_bx_cnv_form_entry_input_attachments"><![CDATA[Attachments]]></string>
+    <string name="_bx_cnv_form_entry_input_recipients"><![CDATA[Recipients]]></string>
+    <string name="_bx_cnv_form_entry_input_sys_recipients"><![CDATA[Recipients]]></string>
+    <string name="_bx_cnv_form_entry_input_recipients_err"><![CDATA[Recipients is mandatory]]></string>
+    <string name="_bx_cnv_form_entry_input_recipients_placeholder"><![CDATA[Type name here...]]></string>
+    <string name="_bx_cnv_form_entry_input_sys_submit_text"><![CDATA[Draft status]]></string>
+    <string name="_bx_cnv_form_entry_input_sys_submit_block"><![CDATA[Submit block]]></string>
+
+	<string name="_bx_cnv_acl_action_create_entry"><![CDATA[New conversation]]></string>
+	<string name="_bx_cnv_acl_action_delete_entry"><![CDATA[Delete conversation]]></string>
+	<string name="_bx_cnv_acl_action_view_entry"><![CDATA[View conversation]]></string>
+
+	<string name="_bx_cnv_page_title_sys_create_entry"><![CDATA[New conversation]]></string>
+	<string name="_bx_cnv_page_title_create_entry"><![CDATA[New conversation]]></string>
+	<string name="_bx_cnv_page_block_title_create_entry"><![CDATA[New conversation]]></string>
+	<string name="_bx_cnv_page_title_sys_view_entry"><![CDATA[View converstion]]></string>
+	<string name="_bx_cnv_page_title_view_entry"><![CDATA[{title}]]></string>
+	<string name="_bx_cnv_page_block_title_entry_attachments"><![CDATA[Attachments]]></string>
+	<string name="_bx_cnv_page_block_title_entry_text"><![CDATA[Text]]></string>
+    <string name="_bx_cnv_page_block_title_entry_author"><![CDATA[Author]]></string>
+    <string name="_bx_cnv_page_block_title_entry_actions"><![CDATA[Actions]]></string>
+    <string name="_bx_cnv_page_block_title_entry_comments"><![CDATA[Replies ({0})]]></string>
+    <string name="_bx_cnv_page_block_title_entry_collaborators"><![CDATA[Participants]]></string>
+    <string name="_bx_cnv_page_title_sys_folder"><![CDATA[Conversations in folder]]></string>
+    <string name="_bx_cnv_page_title_folder"><![CDATA[Folder: {folder}]]></string>
+    <string name="_bx_cnv_page_block_title_folder"><![CDATA[Folder: {folder}]]></string>
+    <string name="_bx_cnv_page_block_title_convos"><![CDATA[Conversations]]></string>
+
+    <string name="_bx_cnv_menu_set_title_view_entry"><![CDATA[Conversation Actions]]></string>
+    <string name="_bx_cnv_menu_title_view_entry"><![CDATA[Conversation Actions]]></string>
+    <string name="_bx_cnv_menu_title_view_entry_popup"><![CDATA[Conversation Popup Actions]]></string>
+    <string name="_bx_cnv_menu_title_submenu"><![CDATA[Conversations Submenu]]></string>
+    <string name="_bx_cnv_menu_set_title_submenu"><![CDATA[Conversations Submenu]]></string>
+    <string name="_bx_cnv_menu_title_folders_more"><![CDATA[Conversations folders]]></string>
+    <string name="_bx_cnv_menu_set_title_submenu"><![CDATA[Conversations folders]]></string>
+    <string name="_bx_cnv_menu_set_title_folders_more"><![CDATA[More folders]]></string>
+    <string name="_bx_cnv_menu_item_title_system_message"><![CDATA[Message]]></string>
+    <string name="_bx_cnv_menu_item_title_message"><![CDATA[Message]]></string>
+    <string name="_bx_cnv_menu_item_title_system_mark_unread_entry"><![CDATA[Mark as unread]]></string>
+    <string name="_bx_cnv_menu_item_title_mark_unread_entry"><![CDATA[Mark as unread]]></string>
+
+
+    <string name="_bx_cnv_menu_item_title_system_delete_entry"><![CDATA[Delete conversation]]></string>
+    <string name="_bx_cnv_menu_item_title_delete_entry"><![CDATA[Delete conversation]]></string>
+    <string name="_bx_cnv_menu_item_title_system_folder_inbox"><![CDATA[Inbox]]></string>
+    <string name="_bx_cnv_menu_item_title_folder_inbox"><![CDATA[Inbox]]></string>
+    <string name="_bx_cnv_menu_item_title_system_folder_drafts"><![CDATA[Drafts]]></string>
+    <string name="_bx_cnv_menu_item_title_folder_drafts"><![CDATA[Drafts]]></string>
+    <string name="_bx_cnv_menu_item_title_system_folder_spam"><![CDATA[Spam]]></string>
+    <string name="_bx_cnv_menu_item_title_folder_spam"><![CDATA[Spam]]></string>
+    <string name="_bx_cnv_menu_item_title_system_folder_trash"><![CDATA[Trash]]></string>
+    <string name="_bx_cnv_menu_item_title_folder_trash"><![CDATA[Trash]]></string>
+    <string name="_bx_cnv_menu_item_title_system_folder_more"><![CDATA[More]]></string>
+    <string name="_bx_cnv_menu_item_title_folder_more"><![CDATA[More]]></string>
+    <string name="_bx_cnv_menu_item_title_system_convos"><![CDATA[Conversations]]></string>
+    <string name="_bx_cnv_menu_item_title_convos"><![CDATA[Conversations]]></string>
+    <string name="_bx_cnv_menu_item_title_system_unread_messages"><![CDATA[Unread messages number]]></string>
+    <string name="_bx_cnv_menu_item_title_unread_messages"><![CDATA[{addon} unread messages]]></string>
+
+    <string name="_bx_cnv_txt_sample_single"><![CDATA[conversation]]></string>
+
+    <string name="_bx_cnv_folder_inbox"><![CDATA[Inbox]]></string>
+    <string name="_bx_cnv_folder_drafts"><![CDATA[Drafts]]></string>
+    <string name="_bx_cnv_folder_spam"><![CDATA[Spam]]></string>
+    <string name="_bx_cnv_folder_trash"><![CDATA[Trash]]></string>
+
+    <string name="_bx_cnv_field_comments"><![CDATA[#]]></string>
+    <string name="_bx_cnv_field_preview"><![CDATA[Preview]]></string>
+    <string name="_bx_cnv_field_collaborators"><![CDATA[Participants]]></string>
+
+    <string name="_bx_cnv_grid_action_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_cnv_grid_action_compose"><![CDATA[New conversation]]></string>
+
+    <string name="_bx_cnv_collaborator_info"><![CDATA[{0} ({1})]]></string>
+    <string name="_bx_cnv_collaborator_author"><![CDATA[author]]></string>
+    <string name="_bx_cnv_collaborator_last_replier"><![CDATA[last replier]]></string>
+    <string name="_bx_cnv_more"><![CDATA[{0} more]]></string>
+
+    <string name="_bx_cnv_author_desc"><![CDATA[{0} (updated {1})]]></string>
+    <string name="_bx_cnv_x_date_by_x_replier"><![CDATA[{0} by {1}]]></string>
+
+    <string name="_bx_cnv_read_by_all"><![CDATA[Read by all]]></string>
+    <string name="_bx_cnv_see_all"><![CDATA[See all conversations...]]></string>
+    <string name="_bx_cnv_you_are_last_replier"><![CDATA[You are last replier]]></string>
+
+    <string name="_bx_cnv_draft_saving_error"><![CDATA[Draft saving error!]]></string>
+    <string name="_bx_cnv_draft_saved_success"><![CDATA[Draft saved.]]></string>
+
+</resources>

+ 195 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/install/sql/enable.sql

@@ -0,0 +1,195 @@
+
+-- 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', 13, 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', 13, 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', 13, 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'),
+('bx_convos_view_popup', '_bx_cnv_menu_title_view_entry_popup', '', 'bx_convos', 16, 0, 1, 'BxCnvMenuViewActions', 'modules/boonex/convos/classes/BxCnvMenuViewActions.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}', '', '', 'envelope', '', 2147483646, 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, 1, -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),
+('profile', 'delete', @iHandler);
+

+ 3 - 0
modules/boonex/convos/updates/8.0.5_8.0.6/source/template/entry-all-actions.html

@@ -0,0 +1,3 @@
+
+<bx_include_base:../modules/base/text/template/entry-all-actions.html />
+

+ 46 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/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' => 'Developer',
+    'version_from' => '8.0.6',
+	'version_to' => '8.0.7',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/developer/updates/update_8.0.6_8.0.7/',
+	'home_uri' => 'developer_update_806_807',
+
+	'module_dir' => 'boonex/developer/',
+	'module_uri' => 'developer',
+
+    'db_prefix' => 'bx_dev_',
+    'class_prefix' => 'BxDev',
+
+    /**
+     * 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 Developer',
+);

+ 13 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/install/installer.php

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

+ 423 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevBuilderPage.php

@@ -0,0 +1,423 @@
+<?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    Developer Developer
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxDevBuilderPage extends BxTemplStudioBuilderPage
+{
+    protected $sActionPageExport = 'page_export';
+
+    protected $oModule;
+    protected $aParams;
+
+    function __construct($aParams)
+    {
+        parent::__construct(isset($aParams['type']) ? $aParams['type'] : '',  isset($aParams['page']) ? $aParams['page'] : '');
+
+        $this->aParams = $aParams;
+        $this->sBaseUrl = $this->aParams['url'];
+        $this->sTypeUrl = $this->sBaseUrl . '&bp_type=%s';
+        $this->sPageUrl = $this->sTypeUrl . '&bp_page=%s';
+
+        $this->oModule = BxDolModule::getInstance('bx_developer');
+
+        $this->oModule->_oTemplate->addStudioCss(array('builder_page.css'));
+    }
+
+    function getBlockPanelTop($aBlock)
+    {
+         return BxBaseStudioPage::getBlockPanelTop(
+            array('panel_top' => $this->oModule->_oTemplate->parseHtmlByName('bp_block_panel_top.html', $this->_getTmplVarsBlockPanelTop()))
+        );
+    }
+
+    protected function actionPageCreate()
+    {
+    	$sFormObject = $this->oModule->_oConfig->getObject('form_bp_page');
+        $sFormDisplay = $this->oModule->_oConfig->getObject('form_display_bp_page_add');
+
+        $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
+        $oForm->aFormAttrs['action'] = sprintf($this->sPageUrl, $this->sType, $this->sPage) . '&bp_action=' . $this->sActionPageCreate;
+        $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_bp_txt_select_module')), BxDolStudioUtils::getModules());
+
+        $oForm->aInputs['layout_id']['values'] = array(
+            array('key' => '', 'value' => _t('_bx_dev_bp_txt_page_layout_id_select'))
+        );
+
+        $aLayouts = array();
+        $this->oDb->getLayouts(array('type' => 'all'), $aLayouts, false);
+        foreach($aLayouts as $aLayout)
+            $oForm->aInputs['layout_id']['values'][] = array('key' => $aLayout['id'], 'value' => _t($aLayout['title']));
+
+        $oForm->initChecker();
+        if($oForm->isSubmittedAndValid()) {
+            $sObject = $oForm->getCleanValue('object');
+            $sModule = $oForm->getCleanValue('module');
+
+            if(($iId = (int)$oForm->insert()) != 0)
+                return array('eval' => $this->getPageJsObject() . '.onCreatePage(\'' . $sModule . '\', \'' . $sObject . '\')');
+            else
+                return array('msg' => _t('_bx_dev_bp_err_page_create'));
+        }
+
+        $sContent = BxTemplStudioFunctions::getInstance()->popupBox($this->aHtmlIds['add_popup_id'], _t('_bx_dev_bp_txt_page_create_popup'), $this->oModule->_oTemplate->parseHtmlByName('bp_add_page.html', array(
+            'form_id' => $oForm->aFormAttrs['id'],
+            'form' => $oForm->getCode(true)
+        )));
+
+        return array('popup' => $sContent);
+    }
+
+    protected function actionPageExport()
+    {
+        $sContentInsert = $sContentDelete = "";
+
+        $aPage = array();
+        $this->oDb->getPages(array('type' => 'by_object', 'value' => $this->sPage), $aPage, false);
+        if(empty($aPage) || !is_array($aPage))
+            return array();
+
+        $sContentInsert .= ($this->oModule->_oDb->getQueryInsert('sys_objects_page', array($aPage), "Dumping data for '" . $aPage['object'] . "' page"));
+        $sContentDelete .= ($this->oModule->_oDb->getQueryDelete('sys_objects_page', 'object', array($aPage), "Deleting data for '" . $aPage['object'] . "' page"));
+
+        $aBlocks = array();
+        $this->oDb->getBlocks(array('type' => 'by_object', 'value' => $aPage['object']), $aBlocks, false);
+        $sContentInsert .= $this->oModule->_oDb->getQueryInsert('sys_pages_blocks', $aBlocks, false, array('id', 'name'));
+        $sContentDelete .= $this->oModule->_oDb->getQueryDelete('sys_pages_blocks', 'object', array($aPage), false);
+
+        $aForm = array(
+            'form_attrs' => array(),
+            'inputs' => array (
+                'insert' => array(
+                    'type' => 'textarea',
+                    'name' => 'insert',
+                    'caption' => _t('_bx_dev_bp_txt_page_export_insert'),
+                    'value' => $sContentInsert,
+                ),
+                'delete' => array(
+                    'type' => 'textarea',
+                    'name' => 'delete',
+                    'caption' => _t('_bx_dev_bp_txt_page_export_delete'),
+                    'value' => $sContentDelete,
+                ),
+                'done' => array (
+                    'type' => 'button',
+                    'name' => 'done',
+                    'value' => _t('_bx_dev_bp_btn_page_done'),
+                    'attrs' => array(
+                        'onclick' => "$('.bx-popup-applied:visible').dolPopupHide()",
+                    ),
+                )
+            )
+        );
+        $oForm = new BxTemplStudioFormView($aForm);
+
+        $sContent = BxTemplStudioFunctions::getInstance()->popupBox('bx-dev-bp-page-export-popup', _t('_bx_dev_bp_txt_page_export_popup', _t($aPage['title'])), $this->oModule->_oTemplate->parseHtmlByName('bp_export.html', array(
+            'content' => $oForm->getCode()
+        )));
+
+        return array('popup' => $sContent);
+    }
+
+    protected function actionBlockEdit()
+    {
+    	$sFormObject = $this->oModule->_oConfig->getObject('form_bp_block');
+        $sFormDisplay = $this->oModule->_oConfig->getObject('form_display_bp_block_edit');
+        
+        $iId = (int)bx_get('id');
+        if(!$iId)
+            return array();
+
+        $aBlock = array();
+        $this->oDb->getBlocks(array('type' => 'by_id', 'value' => $iId), $aBlock, false);
+        if(empty($aBlock) || !is_array($aBlock))
+            return array('msg' => _t('_bx_dev_bp_err_block_not_found'));
+
+        $oForm = BxDolForm::getObjectInstance($sFormObject, $sFormDisplay, $this->oModule->_oTemplate);
+
+        $this->onLoadBlock($oForm, $aBlock);
+
+        $oForm->initChecker($aBlock);
+        if($oForm->isSubmittedAndValid()) {
+            $this->onSaveBlock($oForm, $aBlock);
+
+            if($oForm->update($iId) !== false)
+                return array('eval' => $this->getPageJsObject() . '.onEditBlock(oData)');
+            else
+                return array('msg' => _t('_bx_dev_bp_err_block_edit'));
+        }
+
+        $sContent = BxTemplStudioFunctions::getInstance()->popupBox($this->aHtmlIds['edit_block_popup_id'], _t('_bx_dev_bp_txt_block_edit_popup', _t($aBlock['title'])), $this->oModule->_oTemplate->parseHtmlByName('bp_add_block.html', array(
+            'form_id' => $oForm->aFormAttrs['id'],
+            'form' => $oForm->getCode(true)
+        )));
+
+        return array('popup' => $sContent);
+    }
+
+    protected function actionBlockDelete()
+    {
+        $sJsObject = $this->getPageJsObject();
+        $iId = (int)bx_get('id');
+
+        $aBlock = array();
+        $this->oDb->getBlocks(array('type' => 'by_id', 'value' => $iId), $aBlock, false);
+        if(empty($aBlock) || !is_array($aBlock))
+            return array('msg' => _t('_bx_dev_bp_err_block_not_found'));
+
+        if(!$this->oDb->deleteBlocks(array('type' => 'by_id', 'value' => $iId)))
+            return array('msg' => _t('_bx_dev_bp_err_block_delete'));
+
+        $this->onBlockDelete($aBlock);
+        return array('eval' => $sJsObject . '.onDeleteBlock(' . $iId . ', oData)');
+    }
+
+    protected function getSettingsOptions($aPage = array(), $bCreate = true, $bInputsOnly = false)
+    {
+        $aForm = array(
+            'form_attrs' => array(
+                'id' => 'adm-bp-settings-seo',
+            ),
+            'params' => array (
+                'remove_form' => '1',
+                'csrf' => array(
+                    'disable' => true
+                )
+            ),
+            'inputs' => array(
+                'object'  => array(
+                    'type' => 'text',
+                    'name' => 'object',
+                    'caption' => _t('_bx_dev_bp_txt_page_object'),
+                    'info' => '',
+                    'value' => $this->aPageRebuild['object'],
+                    'required' => '',
+                    'attrs' => array(
+                        'disabled' => 'disabled'
+                    ),
+                )
+            )
+        );
+
+        $aForm['inputs'] += parent::getSettingsOptions($aPage, $bCreate, true);
+
+        $aForm['inputs']['title_system']['type'] = 'text';
+        $aForm['inputs']['title_system']['caption'] = _t('_bx_dev_bp_txt_page_title_system');
+        $aForm['inputs']['title']['type'] = 'text';
+
+        $aUri = array(
+            'uri'  => array(
+                'type' => 'text',
+                'name' => 'uri',
+                'caption' => _t('_bx_dev_bp_txt_page_uri'),
+                'info' => '',
+                'value' => $this->aPageRebuild['uri'],
+                'required' => '',
+                'db' => array (
+                    'pass' => 'Xss',
+                ),
+            )
+        );
+        $aForm['inputs'] = bx_array_insert_before($aUri, $aForm['inputs'], 'url');
+
+        $aForm['inputs']['url']['caption'] = _t('_bx_dev_bp_txt_page_url');
+        $aForm['inputs']['url']['value'] = isset($aPage['url']) ? $aPage['url'] : '';
+        $aForm['inputs']['url']['db'] = array (
+            'pass' => 'Xss',
+        );
+        unset($aForm['inputs']['url']['attrs']['disabled']);
+
+        $aForm['inputs']['deletable'] = array(
+            'type' => 'switcher',
+            'name' => 'deletable',
+            'caption' => _t('_bx_dev_bp_txt_page_deletable'),
+            'info' => '',
+            'value' => '1',
+            'checked' => (int)$this->aPageRebuild['deletable'] == 1,
+            'required' => '',
+            'db' => array (
+                'pass' => 'Int',
+            )
+        );
+        $aForm['inputs']['override_class_name'] = array(
+            'type' => 'text',
+            'name' => 'override_class_name',
+            'caption' => _t('_bx_dev_bp_txt_page_override_class_name'),
+            'info' => '',
+            'value' => $this->aPageRebuild['override_class_name'],
+            'required' => '0',
+            'db' => array (
+                'pass' => 'Xss',
+            )
+        );
+        $aForm['inputs']['override_class_file'] = array(
+            'type' => 'text',
+            'name' => 'override_class_file',
+            'caption' => _t('_bx_dev_bp_txt_page_override_class_file'),
+            'info' => '',
+            'value' => $this->aPageRebuild['override_class_file'],
+            'required' => '0',
+            'db' => array (
+                'pass' => 'Xss',
+            )
+        );
+
+        if($bInputsOnly)
+            return $aForm['inputs'];
+
+        $oForm = new BxTemplStudioFormView($aForm);
+        return $oForm->getCode();
+    }
+
+    protected function getSettingsCache($aPage = array(), $bCreate = true, $bInputsOnly = false)
+    {
+        $aForm = array(
+            'form_attrs' => array(
+                'id' => 'adm-bp-settings-cache',
+            ),
+            'params' => array (
+                'remove_form' => '1',
+                'csrf' => array(
+                    'disable' => true
+                )
+            ),
+            'inputs' => parent::getSettingsCache($aPage, $bCreate, true)
+        );
+
+        unset($aForm['inputs']['cache_lifetime']['attrs']);
+
+        $aForm['inputs']['cache_editable'] = array(
+            'type' => 'switcher',
+            'name' => 'cache_editable',
+            'caption' => _t('_bx_dev_bp_txt_page_cache_editable'),
+            'info' => '',
+            'value' => '1',
+            'checked' => (int)$this->aPageRebuild['cache_editable'] == 1,
+            'required' => '',
+            'db' => array (
+                'pass' => 'Int',
+            )
+        );
+
+        if($bInputsOnly)
+            return $aForm['inputs'];
+
+        $oForm = new BxTemplStudioFormView($aForm);
+        return $oForm->getCode();
+    }
+
+    protected function getBlockModule($aBlock)
+    {
+        return $this->aPageRebuild['module'];
+    }
+
+    protected function getBlockContent($aBlock)
+    {
+        $aFields = array();
+
+        switch($aBlock['type']) {
+            case BX_DOL_STUDIO_BP_BLOCK_SERVICE:
+                $aFields = array(
+                    'content' => array(
+                        'type' => 'textarea',
+                        'name' => 'content',
+                        'caption' => _t('_bx_dev_bp_txt_block_content_service'),
+                        'info' => '',
+                        'value' => $aBlock['content'],
+                        'required' => '0',
+                        'db' => array (
+                            'pass' => 'Xss',
+                        ),
+                    )
+                );
+                break;
+
+            default:
+                $aFields = parent::getBlockContent($aBlock);
+                break;
+        }
+
+        return $aFields;
+    }
+
+    protected function getBlocks($sModule)
+    {
+        $aBlocks = parent::getBlocks($sModule);
+
+        if($sModule == BX_DOL_STUDIO_BP_SKELETONS) {
+            $aBlock = array();
+            $this->oDb->getBlocks(array('type' => 'skeleton_by_type', 'value' => 'service'), $aBlock, false);
+            if(!empty($aBlock) && is_array($aBlock))
+                $aBlocks[] = $aBlock;
+        }
+
+        return $aBlocks;
+    }
+
+    protected function onLoadBlock(&$oForm, &$aBlock)
+    {
+        $oForm->aFormAttrs['action'] = sprintf($this->sPageUrl, $this->sType, $this->sPage) . '&bp_action=' . $this->sActionBlockEdit;
+        $oForm->aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_bp_txt_select_module')), BxDolStudioUtils::getModules());
+
+        $aDBoxes = array();
+        $this->oDb->getDesignBoxes(array('type' => 'ordered'), $aDBoxes, false);
+        foreach($aDBoxes as $aDBox)
+            $oForm->aInputs['designbox_id']['values'][] = array('key' => $this->sSelectKeyPrefix . $aDBox['id'], 'value' => _t($aDBox['title']));
+
+        $oForm->aInputs['visible_for']['value'] = $aBlock['visible_for_levels'] == BX_DOL_INT_MAX ? BX_DOL_STUDIO_VISIBLE_ALL : BX_DOL_STUDIO_VISIBLE_SELECTED;
+        $oForm->aInputs['visible_for']['values'] = array(
+            array('key' => BX_DOL_STUDIO_VISIBLE_ALL, 'value' => _t('_bx_dev_bp_txt_block_visible_for_all')),
+            array('key' => BX_DOL_STUDIO_VISIBLE_SELECTED, 'value' => _t('_bx_dev_bp_txt_block_visible_for_selected')),
+        );
+        $oForm->aInputs['visible_for']['attrs']['onchange'] = $this->getPageJsObject() . '.onChangeVisibleFor(this)';
+
+        $oForm->aInputs['visible_for_levels']['tr_attrs']['style'] = $aBlock['visible_for_levels'] == BX_DOL_INT_MAX ? 'display:none' : '';
+        BxDolStudioUtils::getVisibilityValues($aBlock['visible_for_levels'], $oForm->aInputs['visible_for_levels']['values'], $oForm->aInputs['visible_for_levels']['value']);
+        $aBlock['visible_for_levels'] = $oForm->aInputs['visible_for_levels']['value'];
+
+        $oForm->aInputs = $this->addInArray($oForm->aInputs, 'visible_for_levels', $this->getBlockContent($aBlock));
+
+        $oForm->aInputs['controls'][0]['value'] = _t('_bx_dev_bp_btn_block_save');
+        $oForm->aInputs['controls'][2]['attrs']['onclick'] = $this->getPageJsObject() . ".deleteBlock(" . $aBlock['id'] . ")";
+
+        if($aBlock['type'] == BX_DOL_STUDIO_BP_BLOCK_SERVICE)
+            $aBlock['content'] = BxDevFunctions::unserializeString($aBlock['content']);
+
+        if((int)$aBlock['designbox_id'] != 0)
+            $aBlock['designbox_id'] = $this->sSelectKeyPrefix . $aBlock['designbox_id'];
+    }
+
+    protected function onSaveBlock(&$oForm, &$aBlock)
+    {
+        parent::onSaveBlock($oForm, $aBlock);
+
+        if($aBlock['type'] == BX_DOL_STUDIO_BP_BLOCK_SERVICE && isset($oForm->aInputs['content'])) {
+            $sValue = $oForm->getCleanValue('content');
+            $sValue = BxDevFunctions::serializeString($sValue);
+            BxDolForm::setSubmittedValue('content', $sValue, $oForm->aFormAttrs['method']);
+        }
+    }
+
+    protected function _getTmplVarsBlockPanelTopActions()
+    {
+        $sJsObject = $this->getPageJsObject();
+
+        $oPermalinks = BxDolPermalinks::getInstance();
+
+        return array(
+            'js_object' => $sJsObject,
+            'url_view' => BX_DOL_URL_ROOT . $oPermalinks->permalink($this->aPageRebuild['url']),
+            'action_page_export' => $this->sActionPageExport,
+            'action_page_edit' => $this->sActionPageEdit,
+            'action_block_create' => $this->sActionBlockCreate,
+        );
+    }
+}
+
+/** @} */

+ 285 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevFormsField.php

@@ -0,0 +1,285 @@
+<?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    Developer Developer
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+require_once('BxDevFunctions.php');
+
+class BxDevFormsField extends BxTemplStudioFormsField
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+    }
+}
+
+class BxDevFormsFieldBlockHeader extends BxTemplStudioFormsFieldBlockHeader
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldValue extends BxTemplStudioFormsFieldValue
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldText extends BxTemplStudioFormsFieldText
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldPassword extends BxTemplStudioFormsFieldPassword
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldTextarea extends BxTemplStudioFormsFieldTextarea
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldNumber extends BxTemplStudioFormsFieldNumber
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldDatepicker extends BxTemplStudioFormsFieldDatepicker
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldDatetime extends BxTemplStudioFormsFieldDatetime
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldCheckbox extends BxTemplStudioFormsFieldCheckbox
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+
+        $this->aForm['inputs']['value']['type'] = 'text';
+    }
+}
+
+class BxDevFormsFieldSwitcher extends BxTemplStudioFormsFieldSwitcher
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+
+        $this->aForm['inputs']['value']['type'] = 'text';
+    }
+}
+
+class BxDevFormsFieldFile extends BxTemplStudioFormsFieldFile
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldFiles extends BxTemplStudioFormsFieldFiles
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldSlider extends BxTemplStudioFormsFieldSlider
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldDoublerange extends BxTemplStudioFormsFieldDoublerange
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldHidden extends BxTemplStudioFormsFieldHidden
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldButton extends BxTemplStudioFormsFieldButton
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldReset extends BxTemplStudioFormsFieldReset
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldSubmit extends BxTemplStudioFormsFieldSubmit
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldImage extends BxTemplStudioFormsFieldImage
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldSelect extends BxTemplStudioFormsFieldSelect
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldSelectMultiple extends BxTemplStudioFormsFieldSelectMultiple
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldCheckboxSet extends BxTemplStudioFormsFieldCheckboxSet
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldRadioSet extends BxTemplStudioFormsFieldRadioSet
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldCustom extends BxTemplStudioFormsFieldCustom
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldInputSet extends BxTemplStudioFormsFieldInputSet
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+
+class BxDevFormsFieldCaptcha extends BxTemplStudioFormsFieldCaptcha
+{
+    function __construct($aParams = array(), $aField = array())
+    {
+        parent::__construct($aParams, $aField);
+
+        BxDevFunctions::changeFormField($this->aParams, $this->aForm['inputs'], $this->oDb);
+    }
+}
+/** @} */

+ 97 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/source/classes/BxDevFunctions.php

@@ -0,0 +1,97 @@
+<?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    Developer Developer
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxDevFunctions
+{
+    function __construct() {}
+
+    /*
+     * Is needed to change fields in "Form's Field" creation form.
+     *
+     * @see BxDevFormsField
+     */
+    public static function changeFormField($aParams, &$aInputs, &$oDb)
+    {
+        $aInputs['module']['type'] = 'select';
+        $aInputs['module']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_module')), BxDolStudioUtils::getModules());
+        $aInputs['module']['value'] = $aParams['module'];
+
+        $aInputs['object']['type'] = 'select';
+        $aInputs['object']['value'] = $aParams['object'];
+        $aInputs['object']['values'] = array();
+
+    	$aForms = array();
+        $oDb->getForms(array('type' => 'by_module', 'value' => $aParams['module']), $aForms, false);
+        if(!empty($aForms) && is_array($aForms)) {
+	        foreach($aForms as $aForm)
+	            $aInputs['object']['values'][$aForm['object']] = _t($aForm['title']);
+
+	        asort($aInputs['object']['values']);
+        }
+        $aInputs['object']['values'] = array_merge(array('' => _t('_bx_dev_frm_txt_select_object')), $aInputs['object']['values']);
+
+        $aInputs['name']['type'] = 'text';
+
+        $sTrlTypePostfix = '_translatable';
+        $sTrlCheckFuncPostfix = 'Translatable';
+        foreach($aInputs as $sName => $aInput)
+            if(isset($aInput['type']) && stripos($aInput['type'], $sTrlTypePostfix) !== false) {
+                $aInputs[$sName]['type'] = str_ireplace($sTrlTypePostfix, '', $aInput['type']);
+
+                if(isset($aInput['checker']['func']) && stripos($aInput['checker']['func'], $sTrlCheckFuncPostfix) !== false)
+                    $aInputs[$sName]['checker']['func'] = str_ireplace($sTrlCheckFuncPostfix, '', $aInput['checker']['func']);
+            }
+    }
+
+    public static function serializeString($sValue)
+    {
+        if(empty($sValue))
+            return '';
+
+        $aValue = array();
+        @eval("\$aValue = " . $sValue . ";");
+        if(empty($aValue) || !is_array($aValue))
+            return '';
+
+        return serialize($aValue);
+    }
+
+    public static function unserializeString($sValue)
+    {
+        if(empty($sValue))
+            return '';
+
+        $aValue = @unserialize($sValue);
+        if(empty($aValue) || !is_array($aValue))
+            return '';
+
+        return var_export($aValue, true);
+    }
+
+    /**
+     * Add slashes before "'" and "\" characters that the value containing them can be used in export feature.
+     *
+     * @param  string  $sString       - the input string to add slashes
+     * @param  boolean $bDoubleEscape - whether the string needs to be two more escaped or not
+     * @return string  the slashed string
+     */
+    public static function dbAddSlashes($sString = '', $bDoubleEscape = false)
+    {
+        if ($bDoubleEscape)
+            $sString = str_replace('\\', '\\\\\\\\', $sString);
+        else
+            $sString = str_replace('\\', '\\\\', $sString);
+
+        return str_replace('\'', '\\\'', $sString);
+    }
+}
+
+/** @} */

+ 69 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/source/install/config.php

@@ -0,0 +1,69 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    Developer Developer
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_developer',
+    'title' => 'Developer',
+    'note' => 'Developer tools...',
+    'version' => '8.0.7',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/developer/',
+    'home_uri' => 'developer',
+
+    'db_prefix' => 'bx_dev_',
+    'class_prefix' => 'BxDev',
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'BoonEx Developer',
+
+    /**
+     * 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,
+    ),
+    'disable' => array(
+        'execute_sql' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 13 - 0
modules/boonex/developer/updates/8.0.6_8.0.7/source/template/bp_block_panel_top.html

@@ -0,0 +1,13 @@
+<div class="bx-std-pt-cnt bx-def-padding-bottom bx-clearfix">
+	<div class="bx-std-pt-pages">__selector__</div>
+	<div class="bx-std-pt-buttons">
+	    <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
+	    <bx_if:show_actions>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_export__')"><bx_text:_bx_dev_bp_btn_page_export /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
+	    </bx_if:show_actions>
+	</div>
+</div>

+ 54 - 0
modules/boonex/english/updates/8.0.9_8.0.10/install/config.php

@@ -0,0 +1,54 @@
+<?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.9',
+	'version_to' => '8.0.10',
+    '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.9_8.0.10/',
+	'home_uri' => 'en_update_809_8010',
+
+	'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',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(
+		'data/langs/system.xml'
+	),
+);

+ 15 - 0
modules/boonex/english/updates/8.0.9_8.0.10/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);
+    }
+}

+ 50 - 0
modules/boonex/english/updates/8.0.9_8.0.10/install/langs/en.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_adm_btn_checkout_submit"><![CDATA[Checkout]]></string_add>
+	<string_add name="_adm_dsg_dsc_cover_warning"><![CDATA[Note, that improper use of HTML may break the site layout.]]></string_add>
+	<string_add name="_adm_dsg_txt_cover_enabled"><![CDATA[Enable cover page]]></string_add>
+	<string_add name="_adm_form_txt_field_name"><![CDATA[Name]]></string_add>
+	<string_add name="_adm_lmi_cpt_cover"><![CDATA[Cover]]></string_add>
+	<string_add name="_adm_stg_cpt_option_sys_template_cache_minify_css_enable"><![CDATA[Enable lessening for CSS files (cache should be enabled)]]></string_add>
+	<string_add name="_adm_stg_cpt_option_sys_template_cache_minify_js_enable"><![CDATA[Enable lessening for JS files (cache should be enabled)]]></string_add>
+	<string_add name="_cmt_msg_login_required"><![CDATA[<a href="{0}">Login</a> or <a href="{1}">Join</a> to comment.]]></string_add>
+	<string_add name="_cmt_txt_link_show"><![CDATA[Show]]></string_add>
+	<string_add name="_cmt_txt_link_reply"><![CDATA[Reply]]></string_add>
+	<string_add name="_cmt_txt_or"><![CDATA[or]]></string_add>
+	<string_add name="_sys_et_txt_name_upgrade_modules_failed"><![CDATA[Modules upgrade failed]]></string_add>
+	<string_add name="_sys_menu_set_title_homepage"><![CDATA[Content modules]]></string_add>
+	<string_add name="_sys_menu_template_title_buttons_ver"><![CDATA[Vertical Buttons]]></string_add>
+	<string_add name="_sys_menu_title_account_notifications"><![CDATA[Notifications Items]]></string_add>
+	<string_add name="_sys_menu_title_account_popup"><![CDATA[Account Popup]]></string_add>
+	<string_add name="_sys_menu_title_homepage"><![CDATA[Homepage Menu]]></string_add>
+	<string_add name="_sys_menu_title_set_acl_level"><![CDATA[ACL Levels]]></string_add>
+	<string_add name="_sys_next"><![CDATA[Next]]></string_add>
+	<string_add name="_sys_page_block_title_homepage_menu"><![CDATA[Content modules menu]]></string_add>
+	<string_add name="_sys_txt_n_by"><![CDATA[{0} by]]></string_add>
+	<string_add name="_sys_txt_splash_btn_join"><![CDATA[Join Now]]></string_add>
+	<string_add name="_sys_txt_splash_slide01_title"><![CDATA[Connect with people that share your passion.]]></string_add>
+	<string_add name="_sys_txt_splash_slide01_desc"><![CDATA[Stories, ideas, photos, videos, questions, jokes, discussions, anything.<br />Follow inspiring people and inspire your followers.]]></string_add>
+	<string_add name="_sys_txt_splash_slide02_txt"><![CDATA["Pull up a chair. Take a taste.<br />Come join us. Life is so endlessly<br />delicious."]]></string_add>
+	<string_add name="_sys_txt_splash_slide03_txt"><![CDATA["The only way to have a friend is to be one."]]></string_add>
+	<string_add name="_sys_txt_splash_slide04_txt"><![CDATA[Already one of us?]]></string_add>
+	<string_add name="_sys_exit"><![CDATA[Exit]]></string_add>
+
+	<string_upd name="_adm_form_dsc_field_caption_system"><![CDATA[Field title, displayed in Studio only.]]></string_upd>
+	<string_upd name="_adm_form_txt_field_caption_system"><![CDATA[System Title]]></string_upd>
+	<string_upd 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 Apps -> Purchases. If it doesn't happen for some reason, please contact product's vendor with your payment details.]]></string_upd>
+	<string_upd name="_sys_menu_item_title_switch_template_mask"><![CDATA[{0}]]></string_upd>
+	<string_upd name="_sys_pruning_db"><![CDATA[<h3>Database pruning:</h3>
+        <ul>
+            <li><b>{0}</b> deleted expired membership 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_upd>
+
+	<string_del name="_bottom_text" />
+	<string_del name="_cmt_txt_n_new_comments" />
+	<string_del name="_cmt_txt_reload_page" />
+</resources>

+ 2105 - 0
modules/boonex/english/updates/8.0.9_8.0.10/source/data/langs/system/en.xml

@@ -0,0 +1,2105 @@
+<?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_bp_wrn_page_block_delete"><![CDATA[Are you sure you want to delete the block?]]></string>
+	<string name="_adm_btn_cancel_submit"><![CDATA[Cancel]]></string>
+	<string name="_adm_btn_checkout_submit"><![CDATA[Checkout]]></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_version_n_available"><![CDATA[Trident {0} is available!]]></string>
+	<string name="_adm_dbd_txt_script_on"><![CDATA[Trident 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_dsc_cover_warning"><![CDATA[Note, that improper use of HTML may break the site layout.]]></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_cover_enabled"><![CDATA[Enable cover page]]></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 Trident]]></string>
+	<string name="_adm_err_modules_wrong_version_script_update"><![CDATA[The new version of {0} module isn't compatible with your version of Trident. Please upgrade Trident first (Studio &gt; Dashboard &gt; 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 title, 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 Title]]></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_name"><![CDATA[Name]]></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_cover"><![CDATA[Cover]]></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 Apps -> Purchases. If it doesn't happen for some reason, please contact product's vendor with your payment details.]]></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[Apps]]></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_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[Apps 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 the script 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_site_logo_height"><![CDATA[Logo Height]]></string>
+	<string name="_adm_stg_cpt_option_sys_site_logo_width"><![CDATA[Logo Width]]></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_cache_minify_css_enable"><![CDATA[Enable lessening for CSS files (cache should be enabled)]]></string>
+	<string name="_adm_stg_cpt_option_sys_template_cache_minify_js_enable"><![CDATA[Enable lessening for JS files (cache should be enabled)]]></string>
+	<string name="_adm_stg_cpt_option_sys_transcoder_queue_storage"><![CDATA[Remote video transcoding]]></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 the script 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 Apps &gt; 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 Apps &gt; 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_extensions"><![CDATA[Add Apps]]></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 script 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_process_action_success"><![CDATA[Done]]></string>
+	<string name="_adm_txt_modules_process_connections"><![CDATA[Process connections:]]></string>
+	<string name="_adm_txt_modules_process_deleted_profiles"><![CDATA[Process deleted profiles:]]></string>
+	<string name="_adm_txt_modules_process_menu_triggers"><![CDATA[Process menu triggers:]]></string>
+	<string name="_adm_txt_modules_process_page_triggers"><![CDATA[Process page triggers:]]></string>
+	<string name="_adm_txt_modules_process_storages"><![CDATA[Process storages:]]></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_register_transcoders"><![CDATA[Register transcoders:]]></string>
+	<string name="_adm_txt_modules_unregister_transcoders"><![CDATA[Unregister transcoders:]]></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[Apps]]></string>
+	<string name="_are you sure?"><![CDATA[Are you sure?]]></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_msg_login_required"><![CDATA[<a href="{0}">Login</a> or <a href="{1}">Join</a> to comment.]]></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="_cmt_load_more_comments_head"><![CDATA[See newer comments...]]></string>
+	<string name="_cmt_load_more_comments_tail"><![CDATA[See older comments...]]></string>
+	<string name="_cmt_load_more_comments_popular"><![CDATA[See more comments...]]></string>
+	<string name="_cmt_load_more_replies_head"><![CDATA[See newer replies...]]></string>
+	<string name="_cmt_load_more_replies_tail"><![CDATA[See older replies...]]></string>
+	<string name="_cmt_load_more_replies_popular"><![CDATA[See more replies...]]></string>
+	<string name="_cmt_txt_link_show"><![CDATA[Show]]></string>
+	<string name="_cmt_txt_link_reply"><![CDATA[Reply]]></string>
+	<string name="_cmt_txt_or"><![CDATA[or]]></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[In reply to {0}]]></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_optimization_fail"><![CDATA[please enable this cache in Studio &gt; Settings &gt; Cache]]></string>
+	<string name="_sys_audit_msg_optimization_warn"><![CDATA[installing PHP accelerator will speed-up file cache]]></string>
+	<string name="_sys_audit_msg_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="oBxDolStudioDashboard.permissions()">click here</a> to find out if permissions are correct.]]></string>
+	<string name="_sys_audit_msg_php_accelerator_missing"><![CDATA[The script 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 Trident, 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_script"><![CDATA[Trident 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_modules_failed"><![CDATA[<bx_include_auto:_email_header.html />
+<p>The following errors appeared during modules upgrade:</p>
+<p>{conclusion}</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_modules_upgrade_success"><![CDATA[<b>{0}</b> module: up to {1} version.<br />]]></string>
+	<string name="_sys_et_txt_body_modules_upgrade_failed"><![CDATA[<b>{0}</b> module: {1}<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_modules_failed"><![CDATA[Modules 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_modules_failed"><![CDATA[Modules upgrade failed on {site_name}]]></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 on {site_name}]]></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 again.]]></string>
+	<string name="_sys_form_account_input_delete_confirm"><![CDATA[I'm sure that I want to delete the account with 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/key_and_secret">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 Trident 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 the script 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[Trident {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[Location off]]></string>
+	<string name="_sys_menu_item_title_about"><![CDATA[About]]></string>
+	<string name="_sys_menu_item_title_search"><![CDATA[Search]]></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}]]></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_studio"><![CDATA[Studio]]></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_search"><![CDATA[Search]]></string>
+	<string name="_sys_menu_item_title_system_set_acl_level"><![CDATA[Set membership]]></string>
+	<string name="_sys_menu_item_title_system_studio"><![CDATA[Studio]]></string>
+	<string name="_sys_menu_set_title_account"><![CDATA[Account]]></string>
+	<string name="_sys_menu_set_title_account_dashboard_manage_tools"><![CDATA[Account Dashboard Manage Tools]]></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_homepage"><![CDATA[Content modules]]></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_buttons_ver"><![CDATA[Vertical 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_notifications"><![CDATA[Account notifications]]></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_manage_tools"><![CDATA[Account Dashboard Manage Tools Menu]]></string>
+	<string name="_sys_menu_title_account_notifications"><![CDATA[Notifications Items]]></string>
+	<string name="_sys_menu_title_account_popup"><![CDATA[Account Popup]]></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_footer"><![CDATA[Footer Links]]></string>
+	<string name="_sys_menu_title_main"><![CDATA[Site Navigation]]></string>
+	<string name="_sys_menu_title_homepage"><![CDATA[Homepage Menu]]></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_set_acl_level"><![CDATA[ACL Levels]]></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_next"><![CDATA[Next]]></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_homepage_menu"><![CDATA[Content modules menu]]></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_manage_tools"><![CDATA[Manage]]></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 Trident. 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 membership 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_my_profiles"><![CDATA[<b>@</b> my profiles...</a>]]></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_by"><![CDATA[{0} by]]></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_splash_btn_join"><![CDATA[Join Now]]></string>
+	<string name="_sys_txt_splash_slide01_title"><![CDATA[Connect with people that share your passion.]]></string>
+	<string name="_sys_txt_splash_slide01_desc"><![CDATA[Stories, ideas, photos, videos, questions, jokes, discussions, anything.<br />Follow inspiring people and inspire your followers.]]></string>
+	<string name="_sys_txt_splash_slide02_txt"><![CDATA["Pull up a chair. Take a taste.<br />Come join us. Life is so endlessly<br />delicious."]]></string>
+	<string name="_sys_txt_splash_slide03_txt"><![CDATA["The only way to have a friend is to be one."]]></string>
+	<string name="_sys_txt_splash_slide04_txt"><![CDATA[Already one of us?]]></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_exit"><![CDATA[Exit]]></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.9_8.0.10/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     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_LANGUAGE,
+    'name' => 'bx_en',
+    'title' => 'English',
+    'note' => 'Language file',
+    'version' => '8.0.10',
+    '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,
+    	'clear_db_cache' => 1
+    ),
+    'uninstall' => array (
+        'update_languages' => 1,
+        'execute_sql' => 1,
+    	'clear_db_cache' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+);
+
+/** @} */

+ 51 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/install/config.php

@@ -0,0 +1,51 @@
+<?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.5',
+	'version_to' => '8.0.6',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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.5_8.0.6/',
+	'home_uri' => 'lagoon_update_805_806',
+
+	'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',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/install/installer.php

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

+ 120 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/studio/scripts/BxTemplStudioFormsField.php

@@ -0,0 +1,120 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioFormsField extends BxBaseStudioFormsField
+{
+}
+
+class BxTemplStudioFormsFieldBlockHeader extends BxBaseStudioFormsFieldBlockHeader
+{
+}
+
+class BxTemplStudioFormsFieldValue extends BxBaseStudioFormsFieldValue
+{
+}
+
+class BxTemplStudioFormsFieldText extends BxBaseStudioFormsFieldText
+{
+}
+
+class BxTemplStudioFormsFieldPassword extends BxBaseStudioFormsFieldPassword
+{
+}
+
+class BxTemplStudioFormsFieldTextarea extends BxBaseStudioFormsFieldTextarea
+{
+}
+
+class BxTemplStudioFormsFieldNumber extends BxBaseStudioFormsFieldNumber
+{
+}
+
+class BxTemplStudioFormsFieldDatepicker extends BxBaseStudioFormsFieldDatepicker
+{
+}
+
+class BxTemplStudioFormsFieldDatetime extends BxBaseStudioFormsFieldDatetime
+{
+}
+
+class BxTemplStudioFormsFieldCheckbox extends BxBaseStudioFormsFieldCheckbox
+{
+}
+
+class BxTemplStudioFormsFieldSwitcher extends BxBaseStudioFormsFieldSwitcher
+{
+}
+
+class BxTemplStudioFormsFieldFile extends BxBaseStudioFormsFieldFile
+{
+}
+
+class BxTemplStudioFormsFieldFiles extends BxBaseStudioFormsFieldFiles
+{
+}
+
+class BxTemplStudioFormsFieldSlider extends BxBaseStudioFormsFieldSlider
+{
+}
+
+class BxTemplStudioFormsFieldDoublerange extends BxBaseStudioFormsFieldDoublerange
+{
+}
+
+class BxTemplStudioFormsFieldHidden extends BxBaseStudioFormsFieldHidden
+{
+}
+
+class BxTemplStudioFormsFieldButton extends BxBaseStudioFormsFieldButton
+{
+}
+
+class BxTemplStudioFormsFieldReset extends BxBaseStudioFormsFieldReset
+{
+}
+
+class BxTemplStudioFormsFieldSubmit extends BxBaseStudioFormsFieldSubmit
+{
+}
+
+class BxTemplStudioFormsFieldImage extends BxBaseStudioFormsFieldImage
+{
+}
+
+class BxTemplStudioFormsFieldSelect extends BxBaseStudioFormsFieldSelect
+{
+}
+
+class BxTemplStudioFormsFieldSelectMultiple extends BxBaseStudioFormsFieldSelectMultiple
+{
+}
+
+class BxTemplStudioFormsFieldCheckboxSet extends BxBaseStudioFormsFieldCheckboxSet
+{
+}
+
+class BxTemplStudioFormsFieldRadioSet extends BxBaseStudioFormsFieldRadioSet
+{
+}
+
+class BxTemplStudioFormsFieldCustom extends BxBaseStudioFormsFieldCustom
+{
+}
+
+class BxTemplStudioFormsFieldInputSet extends BxBaseStudioFormsFieldInputSet
+{
+}
+
+class BxTemplStudioFormsFieldCaptcha extends BxBaseStudioFormsFieldCaptcha
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplCategory.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxDolCategory
+ */
+class BxTemplCategory extends BxBaseCategory
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplMenuHomepage.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxDolMenu
+ */
+class BxTemplMenuHomepage extends BxBaseMenuHomepage
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplServiceCategory.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxBaseServiceCategory
+ */
+class BxTemplServiceCategory extends BxBaseServiceCategory
+{
+}
+
+/** @} */

+ 68 - 0
modules/boonex/lagoon/updates/8.0.5_8.0.6/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     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_TEMPLATE,
+    'name' => 'bx_lagoon',
+    'title' => 'Lagoon',
+    'note' => 'Design template',
+    'version' => '8.0.6',
+    'vendor' => 'Boonex',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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,
+    	'clear_db_cache' => 1
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    	'clear_db_cache' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 51 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/install/config.php

@@ -0,0 +1,51 @@
+<?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.5',
+	'version_to' => '8.0.6',
+    'vendor' => 'BoonEx',
+
+	'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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.5_8.0.6/',
+	'home_uri' => 'ocean_update_805_806',
+
+	'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(),
+);

+ 13 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/install/installer.php

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

+ 59 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/bx_timeline/css/view.less

@@ -0,0 +1,59 @@
+@import (reference) '../../system/css/default.less';
+@import '../../../../../timeline/template/css/view.css';
+
+div.bx-tl-activity ul.bx-menu-object-bx_timeline_menu_item_actions {
+	.bx-def-margin-thd-leftright-neg;
+
+	.margin-top(-@bx-margin-thd);
+}
+
+div.bx-tl-activity ul.bx-menu-object-bx_timeline_menu_item_actions li  {
+	.bx-def-margin-thd;
+}
+
+/*+++ 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 li > a,
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions li > span,
+.bx-menu-hor.bx-menu-hor-inline.bx-menu-object-bx_timeline_menu_item_actions li > div {
+    margin:0;
+}
+
+.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 {
+
+}
+
+/*+++ Item Text +++*/
+div.bx-tl-title {
+	font-weight: bold;
+}

+ 120 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/studio/scripts/BxTemplStudioFormsField.php

@@ -0,0 +1,120 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioFormsField extends BxBaseStudioFormsField
+{
+}
+
+class BxTemplStudioFormsFieldBlockHeader extends BxBaseStudioFormsFieldBlockHeader
+{
+}
+
+class BxTemplStudioFormsFieldValue extends BxBaseStudioFormsFieldValue
+{
+}
+
+class BxTemplStudioFormsFieldText extends BxBaseStudioFormsFieldText
+{
+}
+
+class BxTemplStudioFormsFieldPassword extends BxBaseStudioFormsFieldPassword
+{
+}
+
+class BxTemplStudioFormsFieldTextarea extends BxBaseStudioFormsFieldTextarea
+{
+}
+
+class BxTemplStudioFormsFieldNumber extends BxBaseStudioFormsFieldNumber
+{
+}
+
+class BxTemplStudioFormsFieldDatepicker extends BxBaseStudioFormsFieldDatepicker
+{
+}
+
+class BxTemplStudioFormsFieldDatetime extends BxBaseStudioFormsFieldDatetime
+{
+}
+
+class BxTemplStudioFormsFieldCheckbox extends BxBaseStudioFormsFieldCheckbox
+{
+}
+
+class BxTemplStudioFormsFieldSwitcher extends BxBaseStudioFormsFieldSwitcher
+{
+}
+
+class BxTemplStudioFormsFieldFile extends BxBaseStudioFormsFieldFile
+{
+}
+
+class BxTemplStudioFormsFieldFiles extends BxBaseStudioFormsFieldFiles
+{
+}
+
+class BxTemplStudioFormsFieldSlider extends BxBaseStudioFormsFieldSlider
+{
+}
+
+class BxTemplStudioFormsFieldDoublerange extends BxBaseStudioFormsFieldDoublerange
+{
+}
+
+class BxTemplStudioFormsFieldHidden extends BxBaseStudioFormsFieldHidden
+{
+}
+
+class BxTemplStudioFormsFieldButton extends BxBaseStudioFormsFieldButton
+{
+}
+
+class BxTemplStudioFormsFieldReset extends BxBaseStudioFormsFieldReset
+{
+}
+
+class BxTemplStudioFormsFieldSubmit extends BxBaseStudioFormsFieldSubmit
+{
+}
+
+class BxTemplStudioFormsFieldImage extends BxBaseStudioFormsFieldImage
+{
+}
+
+class BxTemplStudioFormsFieldSelect extends BxBaseStudioFormsFieldSelect
+{
+}
+
+class BxTemplStudioFormsFieldSelectMultiple extends BxBaseStudioFormsFieldSelectMultiple
+{
+}
+
+class BxTemplStudioFormsFieldCheckboxSet extends BxBaseStudioFormsFieldCheckboxSet
+{
+}
+
+class BxTemplStudioFormsFieldRadioSet extends BxBaseStudioFormsFieldRadioSet
+{
+}
+
+class BxTemplStudioFormsFieldCustom extends BxBaseStudioFormsFieldCustom
+{
+}
+
+class BxTemplStudioFormsFieldInputSet extends BxBaseStudioFormsFieldInputSet
+{
+}
+
+class BxTemplStudioFormsFieldCaptcha extends BxBaseStudioFormsFieldCaptcha
+{
+}
+
+/** @} */

+ 95 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/_header.html

@@ -0,0 +1,95 @@
+<!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: '50%', // Top position relative to parent in px
+            left: '50%' // Left position relative to parent in px
+        };
+
+        var aSpinnerSmallOpts = $.extend({}, aSpinnerOpts, {
+            lines: 6,
+            width: 6,
+            radius: 4,
+            color: '#333',
+            top: '50%',
+            left: 'calc(100% - 20px)'
+        }); 
+
+        $(document).ready(function () {
+            bx_time('__lang__');            
+
+            bx_activate_anim_icons('#29789c');
+
+            $('#bx-toolbar').css({opacity: 0.9});
+
+            // hide toolbar on scrolldown, show - on scroll up
+            new Headroom($('#bx-toolbar').get(0), {
+                tolerance: {
+                  down: 10,
+                  up: 20
+                },
+                offset: 200,
+                classes: {
+                  initial: "bx-toolbar-anim",
+                  pinned: "bx-toolbar-reset",
+                  unpinned: "bx-toolbar-up"
+                },
+                onUnpin: function() {
+                    bx_menu_slide_close_all_opened();
+                }
+            }).init();
+        });
+
+        (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 />    

+ 43 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/_sub_footer.html

@@ -0,0 +1,43 @@
+		
+		                <bx_injection:injection_content_after />
+		
+		                <div class="bx-clear"></div>
+		
+		            <bx_injection:banner_bottom />
+		
+		        </div> <!-- #bx-content-main -->
+		
+		        <bx_injection:injection_between_content_footer />
+		
+		    </div> <!-- #bx-content-container -->
+		
+		</div>
+	
+	</div> <!-- #bx-content-wrapper -->
+	
+	<div id="bx-footer-wrapper">
+		<div class="bx-def-centered bx-def-padding-top bx-def-padding-sec-leftright bx-def-page-width">
+		
+		    <div id="bx-footer" class="bx-def-padding-sec-left bx-def-padding-sec-right bx-clearfix">
+		
+		        <bx_injection:injection_footer_before />
+		
+		        <div id="bx-menu-bottom">
+		            <bx_menu:sys_footer />
+		        </div>
+		
+		        <div id="bx-footer-copyright"><i title="__copyright_attr__" class="sys-icon copyright"></i></div>
+		
+		        <bx_injection:injection_footer_after />
+		
+		    </div>
+		
+		</div>
+	
+	</div>
+	
+	<bx_menu:sys_site_action />
+
+</div>
+
+<bx_include_auto:_footer.html />

+ 60 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/css/general.css

@@ -0,0 +1,60 @@
+@import url(../../../../../../../template/css/general.css);
+
+/* --------------- toolbar */
+#bx-toolbar {
+	height: 64px;
+    height: 4rem;
+
+	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;
+}
+#bx-logo-container {
+	height: 64px;
+    height: 4rem;
+
+	line-height: 64px;
+    line-height: 4rem;
+}
+
+/* --------------- menu bar */
+#bx-menu-main-bar-wrapper {
+    padding-top:64px;
+    padding-top:4rem;
+}
+
+/* --------------- content */
+#bx-content-wrapper {
+	padding-bottom: 120px;
+	padding-bottom: 7.5rem;
+
+	background-image: url(../images/bg-page.png);
+	background-repeat: repeat-x;
+	border-top: 1px solid #3498bf;
+}
+
+/* --------------- footer */
+#bx-footer-wrapper {
+	position: absolute;
+
+	width: 100%;
+	height: 100px;
+	height: 6.25rem;
+	bottom: 0;
+
+	background-color: #ffffff;
+	border-top: 1px solid #93b3c3;
+}
+
+/* --------------- menu bottom */
+#bx-menu-bottom,
+#bx-footer-copyright {
+	line-height: 24px;
+	line-height: 1.5rem;
+}
+#bx-menu-bottom {
+	float: left;
+}

+ 50 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/css/menu.css

@@ -0,0 +1,50 @@
+@import url(../../../../../../../template/css/menu.css);
+
+/* --------------- menu header */
+#bx-menu-main-container-scroller {
+	text-align: center;
+}
+
+/* --------------- main menu */
+.bx-menu-main li {
+    margin-top:0.0625rem;
+}
+
+/* --------------- 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;
+}
+
+ul.bx-menu-toolbar li a .sys-icon-a {
+    margin-top:1rem;
+}
+
+/* --------------- floating blocks menu */
+
+.bx-sliding-menu-fullheight {
+    height:calc(100% - 4rem);
+}
+
+.bx-menu-account-popup-profile-switcher-link b {
+    vertical-align:baseline;
+}
+
+/* --------------- account popup menu */
+.bx-menu-account-popup-profile {
+	font-weight: bold;
+}

+ 17 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplCategory.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxDolCategory
+ */
+class BxTemplCategory extends BxBaseCategory
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplMenuHomepage.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxDolMenu
+ */
+class BxTemplMenuHomepage extends BxBaseMenuHomepage
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/source/data/template/system/scripts/BxTemplServiceCategory.php

@@ -0,0 +1,17 @@
+<?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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * @see BxBaseServiceCategory
+ */
+class BxTemplServiceCategory extends BxBaseServiceCategory
+{
+}
+
+/** @} */

+ 68 - 0
modules/boonex/ocean/updates/8.0.5_8.0.6/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     TridentModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_TEMPLATE,
+    'name' => 'bx_ocean',
+    'title' => 'Ocean',
+    'note' => 'Design template',
+    'version' => '8.0.6',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.boonex.com/?section={module_name}',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * '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,
+    	'clear_db_cache' => 1
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    	'clear_db_cache' => 1
+    ),
+    'enable' => array(
+        'execute_sql' => 1
+    ),
+    'disable' => array(
+        'execute_sql' => 1
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 51 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/install/config.php

@@ -0,0 +1,51 @@
+<?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' => 'Organizations',
+    'version_from' => '8.0.5',
+	'version_to' => '8.0.6',
+    'vendor' => 'BoonEx',
+
+    'compatible_with' => array(
+        '8.0.0-B1'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/organizations/updates/update_8.0.5_8.0.6/',
+	'home_uri' => 'orgs_update_805_806',
+
+	'module_dir' => 'boonex/organizations/',
+	'module_uri' => 'orgs',
+
+    'db_prefix' => 'bx_organizations_',
+    'class_prefix' => 'BxOrgs',
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+		'execute_sql' => 1,
+        'update_files' => 1,
+        'update_languages' => 1,
+		'clear_db_cache' => 1,
+    ),
+
+	/**
+     * Category for language keys.
+     */
+    'language_category' => 'Organizations',
+
+	/**
+     * Files Section
+     */
+    'delete_files' => array(),
+);

+ 13 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/install/installer.php

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

+ 30 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/install/langs/en.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string_add name="_bx_orgs_page_title_browse_active"><![CDATA[Recently Active Organizations]]></string_add>
+	<string_add name="_bx_orgs_page_title_sys_recent"><![CDATA[Recently Added Organizations]]></string_add>
+	<string_add name="_bx_orgs_page_title_recent"><![CDATA[Recently Added Organizations]]></string_add>
+	<string_add name="_bx_orgs_page_title_sys_active"><![CDATA[Recently Active People]]></string_add>
+	<string_add name="_bx_orgs_page_title_active"><![CDATA[Recently Active People]]></string_add>
+	<string_add name="_bx_orgs_page_block_title_profile_info_link"><![CDATA[About <a href="{profile_link}">{display_name}</a>]]></string_add>
+	<string_add name="_bx_orgs_page_block_title_system_profile_info"><![CDATA[Info]]></string_add>
+	<string_add name="_bx_orgs_page_block_title_profile_friends_link"><![CDATA[Friends of <a href="{profile_link}">{display_name}</a>]]></string_add>
+	<string_add name="_bx_orgs_page_block_title_system_profile_friends"><![CDATA[Friends]]></string_add>
+	<string_add name="_bx_orgs_page_block_title_active_profiles"><![CDATA[Recently Active Organizations]]></string_add>
+    <string_add name="_bx_orgs_page_block_title_categories"><![CDATA[Organization categories]]></string_add>
+	<string_add name="_bx_orgs_menu_title_view_profile_actions_popup"><![CDATA[Organization Popup Actions]]></string_add>
+	<string_add name="_bx_orgs_menu_title_view_profile_submenu_cover"><![CDATA[Organization Cover Submenu]]></string_add>
+	<string_add name="_bx_orgs_menu_item_title_system_entries_recent"><![CDATA[Recent Organizations]]></string_add>
+    <string_add name="_bx_orgs_menu_item_title_entries_recent"><![CDATA[Recent Organizations]]></string_add>
+	<string_add name="_bx_orgs_menu_item_title_system_entries_active"><![CDATA[Active Organizations]]></string_add>
+	<string_add name="_bx_orgs_menu_item_title_entries_active"><![CDATA[Active Organizations]]></string_add>
+
+	<string_upd name="_bx_orgs_page_title_browse_recent"><![CDATA[Recently Added Organizations]]></string_upd>
+	<string_upd name="_bx_orgs_page_block_title_latest_profiles"><![CDATA[Recently Added Organizations]]></string_upd>
+	<string_upd name="_bx_orgs_menu_item_title_system_entries_manage"><![CDATA[Manage Organizations]]></string_upd>
+    <string_upd name="_bx_orgs_menu_item_title_entries_manage"><![CDATA[Manage Organizations]]></string_upd>
+
+	<string_del name="_bx_orgs_page_title_sys_home" />
+	<string_del name="_bx_orgs_page_title_home" />
+	<string_del name="_bx_orgs_menu_item_title_system_entries_public" />
+    <string_del name="_bx_orgs_menu_item_title_entries_public" />
+</resources>

+ 71 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/install/sql/enable.sql

@@ -0,0 +1,71 @@
+-- PAGES
+UPDATE `sys_pages_blocks` SET `active`='1' WHERE `object`='bx_organizations_view_profile' AND `title` IN ('_bx_orgs_page_block_title_profile_actions', '_bx_orgs_page_block_title_profile_cover', '_bx_orgs_page_block_title_profile_info', '_bx_orgs_page_block_title_profile_friends');
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_organizations_profile_info' AND `title`='_bx_orgs_page_block_title_profile_cover';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_organizations_profile_info', 1, 'bx_organizations', '', '_bx_orgs_page_block_title_profile_cover', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:16:\"bx_organizations\";s:6:\"method\";s:13:\"profile_cover\";}', 0, 0, 1, 0);
+
+UPDATE `sys_pages_blocks` SET `title_system`='_bx_orgs_page_block_title_system_profile_info', `title`='_bx_orgs_page_block_title_profile_info_link', `active`='1' WHERE `object`='bx_organizations_profile_info' AND `title`='_bx_orgs_page_block_title_profile_info';
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_organizations_profile_friends' AND `title`='_bx_orgs_page_block_title_profile_cover';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_organizations_profile_friends', 1, 'bx_organizations', '', '_bx_orgs_page_block_title_profile_cover', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:16:\"bx_organizations\";s:6:\"method\";s:13:\"profile_cover\";}', 0, 0, 1, 0);
+
+UPDATE `sys_pages_blocks` SET `title_system`='_bx_orgs_page_block_title_system_profile_friends', `title`='_bx_orgs_page_block_title_profile_friends_link', `active`='1' WHERE `object`='bx_organizations_profile_friends' AND `title`='_bx_orgs_page_block_title_profile_friends';
+
+UPDATE `sys_objects_page` SET `title_system`='_bx_orgs_page_title_sys_recent', `title`='_bx_orgs_page_title_recent' WHERE `object`='bx_organizations_home';
+
+DELETE FROM `sys_objects_page` WHERE `object`='bx_organizations_active';
+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_organizations_active', '_bx_orgs_page_title_sys_active', '_bx_orgs_page_title_active', 'bx_organizations', 5, 2147483647, 1, 'organizations-active', 'page.php?i=organizations-active', '', '', '', 0, 1, 0, 'BxOrgsPageBrowse', 'modules/boonex/organizations/classes/BxOrgsPageBrowse.php');
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='bx_organizations_active';
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_organizations_active', 1, 'bx_organizations', '_bx_orgs_page_block_title_active_profiles', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:16:\"bx_organizations\";s:6:\"method\";s:22:\"browse_active_profiles\";s:6:"params";a:1:{i:0;b:1;}}', 0, 1, 0);
+
+UPDATE `sys_pages_blocks` SET `active`='0' WHERE `object`='sys_home' AND `title`='_bx_orgs_page_block_title_latest_profiles';
+
+DELETE FROM `sys_pages_blocks` WHERE `object`='' AND `title`='_bx_orgs_page_block_title_categories';
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('', 0, 'bx_organizations', '', '_bx_orgs_page_block_title_categories', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:15:"categories_list";s:6:"params";a:2:{i:0;s:21:"bx_organizations_cats";i:1;b:1;}s:5:"class";s:20:"TemplServiceCategory";}', 1, 1, 1, IFNULL(@iBlockOrder, 0) + 1);
+
+
+-- MENU
+DELETE FROM `sys_menu_items` WHERE `set_name`='sys_homepage' AND `name`='organizations-home';
+SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_homepage', 'bx_organizations', 'organizations-home', '_bx_orgs_menu_item_title_system_entries_home', '_bx_orgs_menu_item_title_entries_home', 'page.php?i=organizations-home', '', '', 'briefcase col-red2', 'bx_organizations_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+
+DELETE FROM `sys_objects_menu` WHERE `object`='bx_organizations_view_actions_popup';
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_organizations_view_actions_popup', '_bx_orgs_menu_title_view_profile_actions_popup', '', 'bx_organizations', 16, 0, 1, 'BxOrgsMenuViewActions', 'modules/boonex/organizations/classes/BxOrgsMenuViewActions.php');
+
+UPDATE `sys_menu_items` SET `icon`='user-plus' WHERE `set_name`='bx_organizations_view_actions' AND `name`='profile-friend-add';
+UPDATE `sys_menu_items` SET `order`='30' WHERE `set_name`='bx_organizations_view_actions' AND `name`='profile-set-acl-level';
+
+UPDATE `sys_menu_items` SET `icon`='user-times' WHERE `set_name`='bx_organizations_view_actions_more' AND `name`='profile-friend-remove';
+
+UPDATE `sys_objects_menu` SET `template_id`='6' WHERE `object`='bx_organizations_submenu';
+
+UPDATE `sys_menu_items` SET `title_system`='_bx_orgs_menu_item_title_system_entries_recent', `title`='_bx_orgs_menu_item_title_entries_recent' WHERE `set_name`='bx_organizations_submenu' AND `name`='organizations-home';
+
+DELETE FROM `sys_menu_items` WHERE `set_name`='bx_organizations_submenu' AND `name`='organizations-active';
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('bx_organizations_submenu', 'bx_organizations', 'organizations-active', '_bx_orgs_menu_item_title_system_entries_active', '_bx_orgs_menu_item_title_entries_active', 'page.php?i=organizations-active', '', '', '', '', 2147483647, 1, 1, 2);
+
+UPDATE `sys_objects_menu` SET `template_id`='6' WHERE `object`='bx_organizations_view_submenu';
+
+DELETE FROM `sys_objects_menu` WHERE `object`='bx_organizations_view_submenu_cover';
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_organizations_view_submenu_cover', '_bx_orgs_menu_title_view_profile_submenu_cover', 'bx_organizations_view_submenu', 'bx_organizations', 7, 0, 1, 'BxOrgsMenuView', 'modules/boonex/organizations/classes/BxOrgsMenuView.php');
+
+UPDATE `sys_menu_items` SET `icon`='briefcase col-red2' WHERE `set_name`='bx_organizations_view_submenu' AND `name`='view-organization-profile';
+UPDATE `sys_menu_items` SET `icon`='info-circle col-gray' WHERE `set_name`='bx_organizations_view_submenu' AND `name`='organization-profile-info';
+UPDATE `sys_menu_items` SET `icon`='group col-blue3' WHERE `set_name`='bx_organizations_view_submenu' AND `name`='organization-profile-friends';
+
+
+-- CATEGORY
+DELETE FROM `sys_objects_category` WHERE `object`='bx_organizations_cats';
+INSERT INTO `sys_objects_category` (`object`, `search_object`, `form_object`, `list_name`, `table`, `field`, `join`, `where`, `override_class_name`, `override_class_file`) VALUES
+('bx_organizations_cats', 'bx_organizations', 'bx_organization', 'bx_organizations_cats', 'bx_organizations_data', 'org_cat', 'INNER JOIN `sys_profiles` ON (`sys_profiles`.`content_id` = `bx_organizations_data`.`id` AND `sys_profiles`.`type` = ''bx_organizations'')', 'AND `sys_profiles`.`status` = ''active''', '', '');

+ 154 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/source/classes/BxOrgsConfig.php

@@ -0,0 +1,154 @@
+<?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    Organizations Organizations
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxOrgsConfig extends BxBaseModProfileConfig
+{
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $aMenuItems2Methods = array (
+            'view-organization-profile' => 'checkAllowedView',
+            'edit-organization-profile' => 'checkAllowedEdit',
+            'delete-organization-profile' => 'checkAllowedDelete',
+            'profile-friend-add' => 'checkAllowedFriendAdd',
+            'profile-friend-remove' => 'checkAllowedFriendRemove',
+            'profile-subscribe-add' => 'checkAllowedSubscribeAdd',
+            'profile-subscribe-remove' => 'checkAllowedSubscribeRemove',
+            'profile-actions-more' => 'checkAllowedViewMoreMenu',
+            'profile-set-acl-level' => 'checkAllowedSetMembership',
+        );
+
+        $this->CNF = array (
+
+            // module icon
+            'ICON' => 'briefcase col-red2',
+
+            // database tables
+            'TABLE_ENTRIES' => $aModule['db_prefix'] . 'data',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => 'author',
+            'FIELD_ADDED' => 'added',
+            'FIELD_CHANGED' => 'changed',
+            'FIELD_NAME' => 'org_name',
+            'FIELD_PICTURE' => 'picture',
+            'FIELD_PICTURE_PREVIEW' => 'picture_preview',
+            'FIELD_COVER' => 'cover',
+            'FIELD_COVER_PREVIEW' => 'cover_preview',
+            'FIELDS_QUICK_SEARCH' => array('org_name'),
+            'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
+
+            // page URIs
+            'URI_VIEW_ENTRY' => 'view-organization-profile',
+            'URI_EDIT_ENTRY' => 'edit-organization-profile',
+            'URI_EDIT_COVER' => 'edit-organization-cover',
+        	'URI_MANAGE_COMMON' => 'organizations-manage',
+
+            'URL_HOME' => 'page.php?i=organizations-home',
+        	'URL_MANAGE_COMMON' => 'page.php?i=organizations-manage',
+        	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=organizations-administration',
+
+            // some params
+            'PARAM_AUTOAPPROVAL' => 'bx_organizations_autoapproval',
+            'PARAM_DEFAULT_ACL_LEVEL' => 'bx_organizations_default_acl_level',
+            'PARAM_NUM_RSS' => 'bx_organizations_num_rss',
+            'PARAM_NUM_CONNECTIONS_QUICK' => 'bx_organizations_num_connections_quick',
+
+            // objects
+            'OBJECT_STORAGE' => 'bx_organizations_pics',
+            'OBJECT_STORAGE_COVER' => 'bx_organizations_pics',
+            'OBJECT_IMAGES_TRANSCODER_THUMB' => 'bx_organizations_thumb',
+            'OBJECT_IMAGES_TRANSCODER_ICON' => 'bx_organizations_icon',
+            'OBJECT_IMAGES_TRANSCODER_AVATAR' => 'bx_organizations_avatar',
+            'OBJECT_IMAGES_TRANSCODER_PICTURE' => 'bx_organizations_picture',
+            'OBJECT_IMAGES_TRANSCODER_COVER' => 'bx_organizations_cover',
+            'OBJECT_IMAGES_TRANSCODER_COVER_THUMB' => 'bx_organizations_cover_thumb',
+            'OBJECT_VIEWS' => 'bx_organizations',
+            'OBJECT_METATAGS' => 'bx_organizations',
+            'OBJECT_FORM_ENTRY' => 'bx_organization',
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW' => 'bx_organization_view',
+            'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_organization_add',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => 'bx_organization_edit',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT_COVER' => 'bx_organization_edit_cover',
+            'OBJECT_FORM_ENTRY_DISPLAY_DELETE' => 'bx_organization_delete',
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY' => 'bx_organizations_view_actions', // actions menu on view entry page
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE' => 'bx_organizations_view_actions_more', // actions menu on view entry page for "more" popup
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY_POPUP' => 'bx_organizations_view_actions_popup', // actions menu popup on view entry page
+            'OBJECT_MENU_SUBMENU' => 'bx_organizations_submenu', // main module submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY' => 'bx_organizations_view_submenu',  // view entry submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_COVER' => 'bx_organizations_view_submenu_cover',  // view entry submenu displayed in cover
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_MAIN_SELECTION' => 'organizations-home', // first item in view entry submenu from main module submenu
+            'OBJECT_MENU_MANAGE_TOOLS' => 'bx_organizations_menu_manage_tools', //manage menu in content administration tools
+            'OBJECT_PAGE_VIEW_ENTRY' => 'bx_organizations_view_profile',
+            'OBJECT_GRID_ADMINISTRATION' => 'bx_organizations_administration',
+        	'OBJECT_GRID_COMMON' => 'bx_organizations_common',
+
+        	'TRIGGER_PAGE_VIEW_ENTRY' => 'trigger_page_organizations_view_entry',
+
+            // menu items which visibility depends on custom visibility checking
+            'MENU_ITEM_TO_METHOD' => array (
+                'bx_organizations_view_actions' => $aMenuItems2Methods,
+                'bx_organizations_view_actions_more' => $aMenuItems2Methods,
+                'bx_organizations_view_actions_popup' => $aMenuItems2Methods,
+            ),
+
+            // informer messages
+            'INFORMERS' => array (
+                'status' => array (
+                    'name' => 'bx-organizations-status-not-active',
+                    'map' => array (
+                        BX_PROFILE_STATUS_PENDING => '_bx_orgs_txt_account_pending',
+                        BX_PROFILE_STATUS_SUSPENDED => '_bx_orgs_txt_account_suspended',
+                    ),
+                ),
+            ),
+
+            // some language keys
+            'T' => array (
+                'txt_sample_single' => '_bx_orgs_txt_sample_single',
+                'menu_item_title_befriend_sent' => '_bx_orgs_menu_item_title_befriend_sent',
+                'menu_item_title_unfriend_cancel_request' => '_bx_orgs_menu_item_title_unfriend_cancel_request',
+                'menu_item_title_befriend_confirm' => '_bx_orgs_menu_item_title_befriend_confirm',
+                'menu_item_title_unfriend_reject_request' => '_bx_orgs_menu_item_title_unfriend_reject_request',
+                'menu_item_title_befriend' => '_bx_orgs_menu_item_title_befriend',
+                'menu_item_title_unfriend' => '_bx_orgs_menu_item_title_unfriend',
+            	'grid_action_err_delete' => '_bx_orgs_grid_action_err_delete',
+            	'grid_txt_account_manager' => '_bx_orgs_grid_txt_account_manager',
+				'filter_item_active' => '_bx_orgs_grid_filter_item_title_adm_active',
+            	'filter_item_pending' => '_bx_orgs_grid_filter_item_title_adm_pending',
+            	'filter_item_suspended' => '_bx_orgs_grid_filter_item_title_adm_suspended',
+            	'filter_item_select_one_filter1' => '_bx_orgs_grid_filter_item_title_adm_select_one_filter1',
+            	'menu_item_manage_my' => '_bx_orgs_menu_item_title_manage_my',
+            	'menu_item_manage_all' => '_bx_orgs_menu_item_title_manage_all',
+            ),
+
+        );
+
+        $this->_aJsClass = array(
+        	'manage_tools' => 'BxOrgsManageTools'
+        );
+
+        $this->_aJsObjects = array(
+        	'manage_tools' => 'oBxOrgsManageTools'
+        );
+
+        $this->_aGridObjects = array(
+        	'common' => $this->CNF['OBJECT_GRID_COMMON'],
+        	'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+        	
+        );
+    }
+
+}
+
+/** @} */

+ 25 - 0
modules/boonex/organizations/updates/8.0.5_8.0.6/source/classes/BxOrgsMenuViewActions.php

@@ -0,0 +1,25 @@
+<?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    Organizations Organizations
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+/**
+ * Actions popup menu.
+ */
+class BxOrgsMenuViewActions extends BxBaseModProfileMenuViewActions
+{
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_organizations';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio