Przeglądaj źródła

Merge branch 'master' of https://github.com/boonex/dolphin

Conflicts:
	modules/boonex/russian/data/langs/bx_organizations/ru.xml
AntonLV 11 lat temu
rodzic
commit
9129aeb0ae

+ 125 - 0
inc/classes/BxDolCategory.php

@@ -0,0 +1,125 @@
+<?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
+ * @{
+ */
+
+/**
+ * @page objects
+ * @section category Category
+ * @ref BxDolCategory
+ */
+
+/**
+ * Category object, it can make regular form lists to act as categories by making it clickable and display search results with all contents with the same category.
+ * Also it provides services to list all categories with number if items in each category.
+ *
+ * @section editor_create Creating the Category object:
+ *
+ *
+ * Add record to 'sys_objects_category' table:
+ *
+ * - object: name of the category object, in the format: vendor prefix, underscore, module prefix, underscore, internal identifier or nothing; 
+ * - search_object: associated search object to display search results in 
+ * - form_object: form object which displays this category, so category will be transformed to the clickable url
+ * - list_name: form list name which values are used to populate categories from
+ * - table: table where category value is stores
+ * - field: table field name where category value is stored
+ * - join: custom SQL JOIN to use when getting number of items in the particular category (filter inactive items here)
+ * - where: custom SQL WHERE to use when getting number of items in the particular category (filter inactive items here)
+ * - override_class_name: user defined class name which is derived from 'Templ' class.
+ * - override_class_file: the location of the user defined class, leave it empty if class is located in system folders.
+ *
+ */
+class BxDolCategory extends BxDol implements iBxDolFactoryObject
+{
+    protected $_sObject;
+    protected $_aObject;
+
+    /**
+     * Constructor
+     * @param $aObject array of editor options
+     */
+    public function __construct($aObject)
+    {
+        parent::__construct();
+
+        $this->_sObject = $aObject['object'];
+        $this->_aObject = $aObject;
+    }
+
+    /**
+     * Get category object instance by object name
+     * @param $sObject object name
+     * @return object instance or false on error
+     */
+    static public function getObjectInstance($sObject = false)
+    {
+        if (isset($GLOBALS['bxDolClasses']['BxDolCategory!'.$sObject]))
+            return $GLOBALS['bxDolClasses']['BxDolCategory!'.$sObject];
+
+        $aObject = BxDolCategoryQuery::getCategoryObject($sObject);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        $sClass = 'BxTemplCategory';
+        if (!empty($aObject['override_class_name']))
+            $sClass = $aObject['override_class_name'];
+        if (!empty($aObject['override_class_file']))
+            require_once(BX_DIRECTORY_PATH_ROOT . $aObject['override_class_file']);
+
+        $o = new $sClass($aObject);
+
+        return ($GLOBALS['bxDolClasses']['BxDolCategory!'.$sObject] = $o);
+    }
+
+    /**
+     * Get category object instance by form object and list name
+     * @param $sObjectForm form object name
+     * @patam $sListName list name
+     * @return object instance or false on error
+     */
+    static public function getObjectInstanceByFormAndList($sObjectForm, $sListName)
+    {
+        $aObject = BxDolCategoryQuery::getCategoryObjectByFormAndList($sObjectForm, $sListName);
+        return self::getObjectInstance($aObject['object']);
+    }
+
+    /**
+     * Get object name 
+     */
+    public function getObjectName()
+    {
+        return $this->_sObject;
+    }
+
+    /**
+     * Set condition for search results object for category object
+     * @param $oSearchResult search results object
+     * @param $mixedCategory category
+     */
+    public function setSearchCondition($oSearchResult, $mixedCategory)
+    {
+        $oSearchResult->aCurrent['restriction']['category_' . $this->_sObject] = array(
+            'value' => $mixedCategory,
+            'field' => $this->_aObject['field'],
+            'operator' => '=',
+            'table' => $this->_aObject['table'],
+        );
+    }
+
+    /**
+     * Get number of items in the specified category
+     * @param $sCategoryValue category value
+     * @return number
+     */
+    public function getItemsNum($sCategoryValue)
+    {
+        return BxDolCategoryQuery::getItemsNumInCategory ($this->_aObject, $sCategoryValue);
+    }
+}
+
+/** @} */

+ 54 - 0
inc/classes/BxDolCategoryQuery.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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * Database queries for category objects.
+ * @see BxDolCategory
+ */
+class BxDolCategoryQuery extends BxDolDb
+{
+    protected $_aObject;
+
+    public function __construct($aObject)
+    {
+        parent::__construct();
+        $this->_aObject = $aObject;
+    }
+
+    static public function getCategoryObject ($sObject)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_category` WHERE `object` = ?", $sObject);
+        $aObject = $oDb->getRow($sQuery);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        return $aObject;
+    }
+
+    static public function getCategoryObjectByFormAndList ($sObjectForm, $sListName)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_category` WHERE `form_object` = ? AND `list_name` = ?", $sObjectForm, $sListName);
+        $aObject = $oDb->getRow($sQuery);
+        if (!$aObject || !is_array($aObject))
+            return false;
+
+        return $aObject;
+    }
+
+    static public function getItemsNumInCategory ($aObject, $sCategoryValue)
+    {
+        $oDb = BxDolDb::getInstance();
+        $sQuery = $oDb->prepare("SELECT COUNT(*) FROM `" . $aObject['table'] . "` " . $aObject['join'] . " WHERE `" . $aObject['field'] . "` = ? " . $aObject['where'], $sCategoryValue);
+        return $oDb->getOne($sQuery);
+    }
+}
+
+/** @} */

+ 1 - 0
inc/classes/BxDolFormQuery.php

@@ -116,6 +116,7 @@ class BxDolFormQuery extends BxDolDb
 
 
             if (!empty($a['values'])) {
             if (!empty($a['values'])) {
                 if (0 == strncmp(BX_DATA_LISTS_KEY_PREFIX, $a['values'], 2)) {
                 if (0 == strncmp(BX_DATA_LISTS_KEY_PREFIX, $a['values'], 2)) {
+                    $aInput['values_list_name'] = trim($a['values'], BX_DATA_LISTS_KEY_PREFIX . ' ');
                     $aInput['values'] = self::getDataItems(trim($a['values'], BX_DATA_LISTS_KEY_PREFIX . ' '), isset(self::$TYPES_SET[$aInput['type']]));
                     $aInput['values'] = self::getDataItems(trim($a['values'], BX_DATA_LISTS_KEY_PREFIX . ' '), isset(self::$TYPES_SET[$aInput['type']]));
                 } else {
                 } else {
                     $aInput['values'] = unserialize($a['values']);
                     $aInput['values'] = unserialize($a['values']);

+ 18 - 0
inc/classes/BxDolSearch.php

@@ -48,6 +48,7 @@ class BxDolSearch extends BxDol
 
 
     protected $_bLiveSearch = false;
     protected $_bLiveSearch = false;
     protected $_sMetaType = '';
     protected $_sMetaType = '';
+    protected $_sCategoryObject = '';
 
 
     /**
     /**
      * Constructor
      * Constructor
@@ -99,6 +100,7 @@ class BxDolSearch extends BxDol
             $oEx->setId($aValue['id']);
             $oEx->setId($aValue['id']);
             $oEx->setLiveSearch($this->_bLiveSearch);
             $oEx->setLiveSearch($this->_bLiveSearch);
             $oEx->setMetaType($this->_sMetaType);
             $oEx->setMetaType($this->_sMetaType);
+            $oEx->setCategoryObject($this->_sCategoryObject);
             $oEx->setCenterContentUnitSelector(false);
             $oEx->setCenterContentUnitSelector(false);
             $sCode .= $oEx->processing();
             $sCode .= $oEx->processing();
         }
         }
@@ -133,6 +135,10 @@ class BxDolSearch extends BxDol
             $this->_sMetaType = $s;
             $this->_sMetaType = $s;
     }
     }
 
 
+    public function setCategoryObject($s)
+    {
+        $this->_sCategoryObject = $s;
+    }
 }
 }
 
 
 /*
 /*
@@ -255,6 +261,7 @@ class BxDolSearchResult implements iBxDolReplaceable
 
 
     protected $_bLiveSearch = false;
     protected $_bLiveSearch = false;
     protected $_sMetaType = '';
     protected $_sMetaType = '';
+    protected $_sCategoryObject = '';
 
 
     protected $_aMarkers = array (); ///< markers to replace somewhere, usually title and browse url (defined in custom class)
     protected $_aMarkers = array (); ///< markers to replace somewhere, usually title and browse url (defined in custom class)
 
 
@@ -293,6 +300,11 @@ class BxDolSearchResult implements iBxDolReplaceable
         $this->_sMetaType = $s;
         $this->_sMetaType = $s;
     }
     }
 
 
+    public function setCategoryObject($s)
+    {
+        $this->_sCategoryObject = $s;
+    }
+
     /**
     /**
      * Display empty message if there is no content, custom empty message can be used.
      * Display empty message if there is no content, custom empty message can be used.
      * @param $b - boolan value to enable or disable 'empty' message
      * @param $b - boolan value to enable or disable 'empty' message
@@ -613,6 +625,12 @@ class BxDolSearchResult implements iBxDolReplaceable
             }
             }
         }
         }
 
 
+        // category
+        if ($this->_sCategoryObject && $o = BxDolCategory::getObjectInstance($this->_sCategoryObject)) {
+            unset($this->aCurrent['restriction']['keyword']);
+            $o->setSearchCondition($this, $sKeyword);
+        }
+
         $this->setPaginate();
         $this->setPaginate();
         $iNum = $this->getNum();
         $iNum = $this->getNum();
         if ($iNum > 0) {
         if ($iNum > 0) {

+ 20 - 1
install/sql/system.sql

@@ -5,7 +5,7 @@
 -- --------------------------------------------------------
 -- --------------------------------------------------------
 
 
 SET NAMES 'utf8';
 SET NAMES 'utf8';
-DROP TABLE IF EXISTS `sys_keys`, `sys_objects_editor`, `sys_objects_captcha`, `sys_objects_social_sharing`, `sys_objects_cmts`, `sys_cmts_images`, `sys_cmts_images_preview`, `sys_cmts_images2entries`, `sys_cmts_ids`, `sys_cmts_meta_keywords`, `sys_cmts_votes`, `sys_cmts_votes_track`, `sys_email_templates`, `sys_options`, sys_options_types, `sys_options_categories`, `sys_localization_categories`, `sys_localization_keys`, `sys_localization_languages`, `sys_localization_strings`, `sys_acl_actions`, `sys_acl_actions_track`, `sys_acl_matrix`, `sys_acl_levels`, `sys_sessions`, `sys_acl_levels_members`, `sys_objects_rss`, `sys_objects_search`, `sys_stat_site`, `sys_alerts`, `sys_alerts_handlers`, `sys_injections`, `sys_injections_admin`, `sys_modules`, `sys_modules_file_tracks`, `sys_modules_relations`, `sys_permalinks`, `sys_objects_privacy`, `sys_privacy_defaults`, `sys_privacy_groups`, `sys_objects_auths`, `sys_objects_vote`, `sys_objects_view`, `sys_cron_jobs`, `sys_objects_storage`, `sys_objects_uploader`, `sys_storage_user_quotas`, `sys_storage_tokens`, `sys_storage_ghosts`, `sys_storage_deletions`, `sys_storage_mime_types`, `sys_objects_transcoder`, `sys_transcoder_images_files`, `sys_transcoder_videos_files`, `sys_transcoder_filters`, `sys_transcoder_queue`, `sys_transcoder_queue_files`, `sys_accounts`, `sys_profiles`, `sys_objects_form`, `sys_form_displays`, `sys_form_inputs`, `sys_form_display_inputs`, `sys_form_pre_lists`, `sys_form_pre_values`, `sys_menu_templates`, `sys_objects_menu`, `sys_menu_sets`, `sys_menu_items`, `sys_objects_grid`, `sys_grid_fields`, `sys_grid_actions`, `sys_objects_connection`, `sys_profiles_conn_subscriptions`, `sys_profiles_conn_friends`, `sys_objects_page`, `sys_pages_layouts`, `sys_pages_design_boxes`, `sys_pages_blocks`, `sys_objects_metatags`, `sys_objects_live_updates`, `sys_images`, `sys_images_custom`, `sys_std_pages`, `sys_std_widgets`, `sys_std_pages_widgets`;
+DROP TABLE IF EXISTS `sys_keys`, `sys_objects_editor`, `sys_objects_captcha`, `sys_objects_social_sharing`, `sys_objects_cmts`, `sys_cmts_images`, `sys_cmts_images_preview`, `sys_cmts_images2entries`, `sys_cmts_ids`, `sys_cmts_meta_keywords`, `sys_cmts_votes`, `sys_cmts_votes_track`, `sys_email_templates`, `sys_options`, sys_options_types, `sys_options_categories`, `sys_localization_categories`, `sys_localization_keys`, `sys_localization_languages`, `sys_localization_strings`, `sys_acl_actions`, `sys_acl_actions_track`, `sys_acl_matrix`, `sys_acl_levels`, `sys_sessions`, `sys_acl_levels_members`, `sys_objects_rss`, `sys_objects_search`, `sys_stat_site`, `sys_alerts`, `sys_alerts_handlers`, `sys_injections`, `sys_injections_admin`, `sys_modules`, `sys_modules_file_tracks`, `sys_modules_relations`, `sys_permalinks`, `sys_objects_privacy`, `sys_privacy_defaults`, `sys_privacy_groups`, `sys_objects_auths`, `sys_objects_vote`, `sys_objects_view`, `sys_cron_jobs`, `sys_objects_storage`, `sys_objects_uploader`, `sys_storage_user_quotas`, `sys_storage_tokens`, `sys_storage_ghosts`, `sys_storage_deletions`, `sys_storage_mime_types`, `sys_objects_transcoder`, `sys_transcoder_images_files`, `sys_transcoder_videos_files`, `sys_transcoder_filters`, `sys_transcoder_queue`, `sys_transcoder_queue_files`, `sys_accounts`, `sys_profiles`, `sys_objects_form`, `sys_form_displays`, `sys_form_inputs`, `sys_form_display_inputs`, `sys_form_pre_lists`, `sys_form_pre_values`, `sys_menu_templates`, `sys_objects_menu`, `sys_menu_sets`, `sys_menu_items`, `sys_objects_grid`, `sys_grid_fields`, `sys_grid_actions`, `sys_objects_connection`, `sys_profiles_conn_subscriptions`, `sys_profiles_conn_friends`, `sys_objects_page`, `sys_pages_layouts`, `sys_pages_design_boxes`, `sys_pages_blocks`, `sys_objects_metatags`, `sys_objects_category`, `sys_objects_live_updates`, `sys_images`, `sys_images_custom`, `sys_std_pages`, `sys_std_widgets`, `sys_std_pages_widgets`;
 
 
 ALTER DATABASE DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
 ALTER DATABASE DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
 
 
@@ -3284,6 +3284,25 @@ INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations
 
 
 -- --------------------------------------------------------
 -- --------------------------------------------------------
 
 
+CREATE TABLE `sys_objects_category` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `object` varchar(64) NOT NULL,
+  `search_object` varchar(64) NOT NULL,
+  `form_object` varchar(64) NOT NULL,
+  `list_name` varchar(255) NOT NULL,
+  `table` varchar(255) NOT NULL,
+  `field` varchar(255) NOT NULL,
+  `join` varchar(255) NOT NULL,
+  `where` varchar(255) NOT NULL,
+  `override_class_name` varchar(255) NOT NULL,
+  `override_class_file` varchar(255) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `object` (`object`),
+  UNIQUE KEY `form_object` (`form_object`,`list_name`)
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
 --
 --
 -- Table structure for table `sys_objects_live_updates`
 -- Table structure for table `sys_objects_live_updates`
 --
 --

+ 17 - 0
modules/boonex/lagoon/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/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
+{
+}
+
+/** @} */

+ 17 - 0
modules/boonex/ocean/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/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
+{
+}
+
+/** @} */

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

@@ -78,6 +78,7 @@
 	<string name="_bx_orgs_page_block_title_system_manage"><![CDATA[Manage Own Organizations]]></string>
 	<string name="_bx_orgs_page_block_title_system_manage"><![CDATA[Manage Own Organizations]]></string>
 	<string name="_bx_orgs_page_block_title_system_manage_administration"><![CDATA[Manage All Organizations]]></string>
 	<string name="_bx_orgs_page_block_title_system_manage_administration"><![CDATA[Manage All Organizations]]></string>
 	<string name="_bx_orgs_page_block_title_manage"><![CDATA[Manage Organizations]]></string>
 	<string name="_bx_orgs_page_block_title_manage"><![CDATA[Manage Organizations]]></string>
+    <string name="_bx_orgs_page_block_title_categories"><![CDATA[Organization categories]]></string>
 
 
     <string name="_bx_orgs_menu_title_submenu"><![CDATA[Organizations Submenu]]></string>
     <string name="_bx_orgs_menu_title_submenu"><![CDATA[Organizations Submenu]]></string>
     <string name="_bx_orgs_menu_set_title_submenu"><![CDATA[Organizations Submenu]]></string>
     <string name="_bx_orgs_menu_set_title_submenu"><![CDATA[Organizations Submenu]]></string>

+ 3 - 0
modules/boonex/organizations/install/sql/disable.sql

@@ -28,6 +28,9 @@ DELETE FROM `sys_objects_view` WHERE `Name` = 'bx_organizations';
 -- METATAGS
 -- METATAGS
 DELETE FROM `sys_objects_metatags` WHERE `object` = 'bx_organizations';
 DELETE FROM `sys_objects_metatags` WHERE `object` = 'bx_organizations';
 
 
+-- CATEGORY
+DELETE FROM `sys_objects_category` WHERE `object` = 'bx_organizations_cats';
+
 -- SEARCH
 -- SEARCH
 DELETE FROM `sys_objects_search` WHERE `ObjectName` = 'bx_organizations';
 DELETE FROM `sys_objects_search` WHERE `ObjectName` = 'bx_organizations';
 
 

+ 10 - 0
modules/boonex/organizations/install/sql/enable.sql

@@ -104,6 +104,12 @@ SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = 'sys
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
 ('sys_home', 1, 'bx_organizations', '_bx_orgs_page_block_title_latest_profiles', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:16:"bx_organizations";s:6:"method";s:22:"browse_recent_profiles";}', 1, 0, IFNULL(@iBlockOrder, 0) + 1);
 ('sys_home', 1, 'bx_organizations', '_bx_orgs_page_block_title_latest_profiles', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:16:"bx_organizations";s:6:"method";s:22:"browse_recent_profiles";}', 1, 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_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
 -- MENU
 
 
 -- MENU: add to site menu
 -- MENU: add to site menu
@@ -274,6 +280,10 @@ INSERT INTO `sys_objects_view` (`name`, `table_track`, `period`, `is_on`, `trigg
 INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
 INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
 ('bx_organizations', 'bx_organizations_meta_keywords', '', '', '', '');
 ('bx_organizations', 'bx_organizations_meta_keywords', '', '', '', '');
 
 
+-- CATEGORY
+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''', '', '');
+
 -- SEARCH
 -- SEARCH
 SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
 SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
 INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `ClassName`, `ClassPath`) VALUES
 INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `ClassName`, `ClassPath`) VALUES

+ 200 - 199
modules/boonex/russian/data/langs/bx_organizations/ru.xml

@@ -1,199 +1,200 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources name="ru" flag="ru" title="Russian">
-
-	<string name="_bx_orgs"><![CDATA[Организации]]></string>
-
-	<string name="_bx_orgs_option_autoapproval"><![CDATA[Автоматически активировать все организации после создания]]></string>
-	<string name="_bx_orgs_option_default_acl_level"><![CDATA[Уровень, назначаемый созданному профилю организации по умолчанию]]></string>
-	<string name="_bx_orgs_option_num_connections_quick"><![CDATA[Число элементов в блоке друзей]]></string>
-	<string name="_bx_orgs_option_num_rss"><![CDATA[Число элементов в ленте RSS]]></string>
-
-	<string name="_bx_orgs_form_profile"><![CDATA[Организации]]></string>
-	<string name="_bx_orgs_form_profile_display_add"><![CDATA[Добавить организацию]]></string>
-	<string name="_bx_orgs_form_profile_display_edit"><![CDATA[Редактировать организацию]]></string>
-	<string name="_bx_orgs_form_profile_display_edit_cover"><![CDATA[Редактировать обложку]]></string>
-	<string name="_bx_orgs_form_profile_display_delete"><![CDATA[Удалить организацию]]></string>
-	<string name="_bx_orgs_form_profile_display_view"><![CDATA[Просмотреть организацию]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_do_submit"><![CDATA[Выполнить]]></string>
-    <string name="_bx_orgs_form_profile_input_sys_org_name"><![CDATA[Название организации]]></string>
-    <string name="_bx_orgs_form_profile_input_org_name"><![CDATA[Название организации]]></string>
-    <string name="_bx_orgs_form_profile_input_org_name_err"><![CDATA[Эта информация необходима. Пожалуйста, заполните это поле.]]></string>
-    <string name="_bx_orgs_form_profile_input_sys_org_desc"><![CDATA[Описание]]></string>
-    <string name="_bx_orgs_form_profile_input_org_desc"><![CDATA[Описание]]></string>
-    <string name="_bx_orgs_form_profile_input_sys_org_cat"><![CDATA[Категория]]></string>
-	<string name="_bx_orgs_form_profile_input_org_cat"><![CDATA[Категория]]></string>
-    <string name="_bx_orgs_form_profile_input_org_cat_err"><![CDATA[Поле категории необходимо]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_picture"><![CDATA[Картинка профиля]]></string>
-	<string name="_bx_orgs_form_profile_input_picture"><![CDATA[Загрузить новую картинку профиля]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_picture_preview"><![CDATA[Предпросмотр картинки профиля]]></string>
-	<string name="_bx_orgs_form_profile_input_picture_preview"><![CDATA[Текущая картинка профиля]]></string>
-	<string name="_bx_orgs_form_profile_input_picture_err"><![CDATA[Необходима картинка профиля.]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_cover"><![CDATA[Картинка обложки]]></string>
-	<string name="_bx_orgs_form_profile_input_cover"><![CDATA[Загрузить новую картинку обложки]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_cover_preview"><![CDATA[Предпросмотр картинки обложки]]></string>
-	<string name="_bx_orgs_form_profile_input_cover_preview"><![CDATA[Текущая картинка обложки]]></string>
-	<string name="_bx_orgs_form_profile_input_sys_delete_confirm"><![CDATA[Удалить подтверждение]]></string>
-	<string name="_bx_orgs_form_profile_input_delete_confirm"><![CDATA[Я уверен, что хочу удалить этот профиль]]></string>
-	<string name="_bx_orgs_form_profile_input_delete_confirm_info"><![CDATA[Это действие не может быть отменено.]]></string>
-	<string name="_bx_orgs_form_profile_input_delete_confirm_error"><![CDATA[Пожалуйста, отметьте этот флажок, если действительно хотите удалить свой профиль.]]></string>
-
-	<string name="_bx_orgs_acl_action_create_profile"><![CDATA[Создать профиль организации]]></string>
-	<string name="_bx_orgs_acl_action_delete_profile"><![CDATA[Удалить профиль организации]]></string>
-	<string name="_bx_orgs_acl_action_view_profile"><![CDATA[Просмотреть профиль организации]]></string>
-	<string name="_bx_orgs_acl_action_edit_any_profile"><![CDATA[Редактировать профиль любой организации]]></string>
-
-	<string name="_bx_orgs_page_title_sys_create_profile"><![CDATA[Создать профиль организации]]></string>
-	<string name="_bx_orgs_page_title_create_profile"><![CDATA[Создать профиль организации]]></string>
-	<string name="_bx_orgs_page_title_sys_edit_profile"><![CDATA[Редактировать профиль организации]]></string>
-	<string name="_bx_orgs_page_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
-	<string name="_bx_orgs_page_title_sys_edit_profile_cover"><![CDATA[Редактировать обложку профиля]]></string>
-	<string name="_bx_orgs_page_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
-	<string name="_bx_orgs_page_title_sys_delete_profile"><![CDATA[Удалить профиль организации]]></string>
-	<string name="_bx_orgs_page_title_delete_profile"><![CDATA[Удалить профиль]]></string>
-	<string name="_bx_orgs_page_title_sys_view_profile"><![CDATA[Просмотреть профиль организации]]></string>
-	<string name="_bx_orgs_page_title_view_profile"><![CDATA[{display_name}]]></string>
-	<string name="_bx_orgs_page_title_browse"><![CDATA[Организации]]></string>
-	<string name="_bx_orgs_page_title_browse_recent"><![CDATA[Организации]]></string>
-	<string name="_bx_orgs_page_title_browse_connections"><![CDATA[{0} связей]]></string>
-	<string name="_bx_orgs_page_title_browse_connections_mutual"><![CDATA[{0} и {1} обоюдных связей]]></string>
-	<string name="_bx_orgs_page_title_sys_profile_friends"><![CDATA[Друзья]]></string>
-	<string name="_bx_orgs_page_title_profile_friends"><![CDATA[Друзья]]></string>
-	<string name="_bx_orgs_page_title_sys_profile_info"><![CDATA[Инфо профиля]]></string>
-	<string name="_bx_orgs_page_title_profile_info"><![CDATA[Инфо о {display_name}]]></string>
-	<string name="_bx_orgs_page_title_sys_home"><![CDATA[Организации - Домой]]></string>
-	<string name="_bx_orgs_page_title_home"><![CDATA[Организации]]></string>
-	<string name="_bx_orgs_page_title_sys_manage"><![CDATA[Управление собственными организациями]]></string>
-		<string name="_bx_orgs_page_title_sys_manage_administration"><![CDATA[Управление всеми организациями]]></string>
-	<string name="_bx_orgs_page_title_manage"><![CDATA[Управление организациями]]></string>
-
-	<string name="_bx_orgs_page_block_title_create_profile"><![CDATA[Создать профиль организации]]></string>
-	<string name="_bx_orgs_page_block_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
-	<string name="_bx_orgs_page_block_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
-	<string name="_bx_orgs_page_block_title_delete_profile"><![CDATA[Удалить профиль]]></string>
-	<string name="_bx_orgs_page_block_title_profile_info"><![CDATA[Инфо]]></string>
-	<string name="_bx_orgs_page_block_title_profile_friends"><![CDATA[Друзья]]></string>
-	<string name="_bx_orgs_page_block_title_profile_cover"><![CDATA[Обложка профиля]]></string>
-	<string name="_bx_orgs_page_block_title_profile_actions"><![CDATA[Действия]]></string>
-	<string name="_bx_orgs_page_block_title_latest_profiles"><![CDATA[Недавние организации]]></string>
-	<string name="_bx_orgs_page_block_title_system_manage"><![CDATA[Управление собственными организациями]]></string>
-	<string name="_bx_orgs_page_block_title_system_manage_administration"><![CDATA[Управление всеми организациями]]></string>
-	<string name="_bx_orgs_page_block_title_manage"><![CDATA[Управление организациями]]></string>
-
-    <string name="_bx_orgs_menu_title_submenu"><![CDATA[Организации - Подменю]]></string>
-    <string name="_bx_orgs_menu_set_title_submenu"><![CDATA[Организации - Подменю]]></string>
-    <string name="_bx_orgs_menu_set_title_view_profile_actions"><![CDATA[Организации - Действия]]></string>
-    <string name="_bx_orgs_menu_title_view_profile_actions"><![CDATA[Организации - Действия]]></string>
-    <string name="_bx_orgs_menu_set_title_view_profile_actions_more"><![CDATA[Организации - Дополнительные Действия]]></string>
-    <string name="_bx_orgs_menu_title_view_profile_actions_more"><![CDATA[Организации - Дополнительные Действия]]></string>
-    <string name="_bx_orgs_menu_set_title_view_profile_submenu"><![CDATA[Просмотреть подменю организаций]]></string>
-    <string name="_bx_orgs_menu_title_view_profile_submenu"><![CDATA[Просмотреть подменю организаций]]></string>
-	<string name="_bx_orgs_menu_set_title_manage_tools"><![CDATA[Управление подменю инструментов]]></string>
-    <string name="_bx_orgs_menu_title_manage_tools"><![CDATA[Управление подменю инструментов]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
-    <string name="_bx_orgs_menu_item_title_delete"><![CDATA[Удалить]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
-    <string name="_bx_orgs_menu_item_title_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
-    <string name="_bx_orgs_menu_item_title_system_edit_profile"><![CDATA[Редактировать организацию]]></string>
-    <string name="_bx_orgs_menu_item_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete_profile"><![CDATA[Удалить организацию]]></string>
-    <string name="_bx_orgs_menu_item_title_delete_profile"><![CDATA[Удалить профиль]]></string>
-    <string name="_bx_orgs_menu_item_title_system_delete_account"><![CDATA[Удалить аккаунт]]></string>
-    <string name="_bx_orgs_menu_item_title_delete_account"><![CDATA[Удалить аккаунт]]></string>
-    <string name="_bx_orgs_menu_item_title_system_profile_type"><![CDATA[Организация]]></string>
-    <string name="_bx_orgs_menu_item_title_profile_type"><![CDATA[Организация]]></string>
-    <string name="_bx_orgs_menu_item_title_system_create_profile"><![CDATA[Создать организацию]]></string>
-    <string name="_bx_orgs_menu_item_title_create_profile"><![CDATA[Создать организацию]]></string>
-    <string name="_bx_orgs_menu_item_title_system_view_profile_friends"><![CDATA[Друзья]]></string>
-    <string name="_bx_orgs_menu_item_title_view_profile_friends"><![CDATA[Друзья]]></string>
-    <string name="_bx_orgs_menu_item_title_system_view_profile_info"><![CDATA[Инфо]]></string>
-    <string name="_bx_orgs_menu_item_title_view_profile_info"><![CDATA[Инфо]]></string>
-    <string name="_bx_orgs_menu_item_title_system_view_profile_view"><![CDATA[Организация]]></string>
-    <string name="_bx_orgs_menu_item_title_view_profile_view"><![CDATA[Организация]]></string>
-    <string name="_bx_orgs_menu_item_title_system_befriend"><![CDATA[Добавить друга]]></string>
-    <string name="_bx_orgs_menu_item_title_befriend"><![CDATA[Добавить друга]]></string>
-    <string name="_bx_orgs_menu_item_title_befriend_sent"><![CDATA[Добавить друга (запрошено)]]></string>
-    <string name="_bx_orgs_menu_item_title_befriend_confirm"><![CDATA[Принять запрос о дружбе]]></string>
-    <string name="_bx_orgs_menu_item_title_system_unfriend"><![CDATA[Перестать дружить]]></string>
-    <string name="_bx_orgs_menu_item_title_unfriend"><![CDATA[Перестать дружить]]></string>
-    <string name="_bx_orgs_menu_item_title_unfriend_cancel_request"><![CDATA[Отменить запрос о дружбе]]></string>
-    <string name="_bx_orgs_menu_item_title_unfriend_reject_request"><![CDATA[Отвергнуть запрос о дружбе]]></string>
-    <string name="_bx_orgs_menu_item_title_system_subscribe"><![CDATA[Подписаться]]></string>
-    <string name="_bx_orgs_menu_item_title_subscribe"><![CDATA[Подписаться]]></string>
-    <string name="_bx_orgs_menu_item_title_system_unsubscribe"><![CDATA[Отписаться]]></string>
-    <string name="_bx_orgs_menu_item_title_unsubscribe"><![CDATA[Отписаться]]></string>
-    <string name="_bx_orgs_menu_item_title_system_more_actions"><![CDATA[Дополнительные действия]]></string>
-    <string name="_bx_orgs_menu_item_title_more_actions"><![CDATA[]]></string>
-    <string name="_bx_orgs_menu_item_title_system_friends"><![CDATA[Друзья]]></string>
-    <string name="_bx_orgs_menu_item_title_friends"><![CDATA[Друзья]]></string>
-    <string name="_bx_orgs_menu_item_title_system_friend_requests"><![CDATA[Число запросов дружбы]]></string>
-    <string name="_bx_orgs_menu_item_title_friend_requests"><![CDATA[{addon} запросов дружбы]]></string>
-    <string name="_bx_orgs_menu_item_title_system_manage_my_organizations"><![CDATA[Мои организации]]></string>
-    <string name="_bx_orgs_menu_item_title_manage_my_organizations"><![CDATA[{addon} организаций]]></string>
-    <string name="_bx_orgs_menu_item_title_system_entries_public"><![CDATA[Публичные]]></string>
-    <string name="_bx_orgs_menu_item_title_entries_public"><![CDATA[Публичные]]></string>
-    <string name="_bx_orgs_menu_item_title_system_entries_manage"><![CDATA[Управление]]></string>
-    <string name="_bx_orgs_menu_item_title_entries_manage"><![CDATA[Управление]]></string>
-    <string name="_bx_orgs_menu_item_title_system_entries_home"><![CDATA[Организации]]></string>
-    <string name="_bx_orgs_menu_item_title_entries_home"><![CDATA[Организации]]></string>
-    <string name="_bx_orgs_menu_item_title_system_admt_organizations"><![CDATA[Организации]]></string>
-	<string name="_bx_orgs_menu_item_title_admt_organizations"><![CDATA[Организации - {addon} неодобрено]]></string>
-	<string name="_bx_orgs_menu_item_title_manage_my"><![CDATA[Мои организации]]></string>
-	<string name="_bx_orgs_menu_item_title_manage_all"><![CDATA[Все организации]]></string>
-
-	<string name="_bx_orgs_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
-	<string name="_bx_orgs_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
-	<string name="_bx_orgs_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
-	<string name="_bx_orgs_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
-	<string name="_bx_orgs_grid_column_title_adm_active"><![CDATA[Активные]]></string>
-    <string name="_bx_orgs_grid_column_title_adm_org_name"><![CDATA[Название]]></string>
-    <string name="_bx_orgs_grid_column_title_adm_last_online"><![CDATA[Последнее посещение]]></string>
-    <string name="_bx_orgs_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_set_acl_level"><![CDATA[Назначить членство]]></string>
-    <string name="_bx_orgs_grid_action_title_adm_more_actions"><![CDATA[Дополнительные действия]]></string>
-	<string name="_bx_orgs_grid_action_err_delete"><![CDATA[Невозможно удалить выбранную(ные) организацию(ции).]]></string>
-	<string name="_bx_orgs_grid_txt_account_manager"><![CDATA[Перенаправить в Управление аккаунтом.]]></string>
-
-    <string name="_bx_orgs_txt_account_pending"><![CDATA[Этот профиль ожидает одобрения. Пожалуйста, дождитесь его активации.]]></string>
-    <string name="_bx_orgs_txt_account_suspended"><![CDATA[Этот профиль заблокирован.]]></string>
-
-    <string name="_bx_orgs_pre_lists_cats"><![CDATA[Категории организаций]]></string>
-    <string name="_bx_orgs_cat_Agriculture"><![CDATA[Сельское хозяйство]]></string>
-    <string name="_bx_orgs_cat_Financial"><![CDATA[Финансы]]></string>
-    <string name="_bx_orgs_cat_Biotech"><![CDATA[Биотехнологии]]></string>
-    <string name="_bx_orgs_cat_Cause"><![CDATA[Дело]]></string>
-    <string name="_bx_orgs_cat_Chemical"><![CDATA[Химия]]></string>
-    <string name="_bx_orgs_cat_Religious"><![CDATA[Религия]]></string>
-    <string name="_bx_orgs_cat_Community"><![CDATA[Общество]]></string>
-    <string name="_bx_orgs_cat_Company"><![CDATA[Компания]]></string>
-    <string name="_bx_orgs_cat_Entertainment"><![CDATA[Развлечения]]></string>
-    <string name="_bx_orgs_cat_Technology"><![CDATA[Технологии]]></string>
-    <string name="_bx_orgs_cat_Consulting"><![CDATA[Консультации]]></string>
-    <string name="_bx_orgs_cat_Education"><![CDATA[Образование]]></string>
-    <string name="_bx_orgs_cat_Energy"><![CDATA[Энергетика]]></string>
-    <string name="_bx_orgs_cat_Engineering"><![CDATA[Инженерия]]></string>
-    <string name="_bx_orgs_cat_Food"><![CDATA[Питание]]></string>
-    <string name="_bx_orgs_cat_Government"><![CDATA[Правительство]]></string>
-    <string name="_bx_orgs_cat_Health"><![CDATA[Здоровье]]></string>
-    <string name="_bx_orgs_cat_Medical"><![CDATA[Медицина]]></string>
-    <string name="_bx_orgs_cat_Industrial"><![CDATA[Промышленность]]></string>
-    <string name="_bx_orgs_cat_Insurance"><![CDATA[Страхование]]></string>
-    <string name="_bx_orgs_cat_Internet"><![CDATA[Интернет]]></string>
-    <string name="_bx_orgs_cat_Software"><![CDATA[Программное обеспечение]]></string>
-    <string name="_bx_orgs_cat_Legal"><![CDATA[Право]]></string>
-    <string name="_bx_orgs_cat_Media"><![CDATA[СМИ]]></string>
-    <string name="_bx_orgs_cat_School"><![CDATA[Школа]]></string>
-    <string name="_bx_orgs_cat_NGO"><![CDATA[НПО]]></string>
-    <string name="_bx_orgs_cat_NPO"><![CDATA[NPO]]></string>
-    <string name="_bx_orgs_cat_Political"><![CDATA[Политика]]></string>
-    <string name="_bx_orgs_cat_Retail"><![CDATA[Торговля]]></string>
-    <string name="_bx_orgs_cat_Small_Business"><![CDATA[Малый бизнес]]></string>
-    <string name="_bx_orgs_cat_Telecommunication"><![CDATA[Телекоммуникации]]></string>
-    <string name="_bx_orgs_cat_Transport"><![CDATA[Транспорт]]></string>
-    <string name="_bx_orgs_cat_Travel"><![CDATA[Путешествия]]></string>
-    <string name="_bx_orgs_cat_University"><![CDATA[Преподавание]]></string>
-    <string name="_bx_orgs_cat_Other"><![CDATA[Другое]]></string>
-
-    <string name="_bx_orgs_txt_sample_single"><![CDATA[Организация]]></string>
-</resources>
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="ru" flag="ru" title="Russian">
+
+	<string name="_bx_orgs"><![CDATA[Организации]]></string>
+
+	<string name="_bx_orgs_option_autoapproval"><![CDATA[Автоматически активировать все организации после создания]]></string>
+	<string name="_bx_orgs_option_default_acl_level"><![CDATA[Уровень, назначаемый созданному профилю организации по умолчанию]]></string>
+	<string name="_bx_orgs_option_num_connections_quick"><![CDATA[Число элементов в блоке друзей]]></string>
+	<string name="_bx_orgs_option_num_rss"><![CDATA[Число элементов в ленте RSS]]></string>
+
+	<string name="_bx_orgs_form_profile"><![CDATA[Организации]]></string>
+	<string name="_bx_orgs_form_profile_display_add"><![CDATA[Добавить организацию]]></string>
+	<string name="_bx_orgs_form_profile_display_edit"><![CDATA[Редактировать организацию]]></string>
+	<string name="_bx_orgs_form_profile_display_edit_cover"><![CDATA[Редактировать обложку]]></string>
+	<string name="_bx_orgs_form_profile_display_delete"><![CDATA[Удалить организацию]]></string>
+	<string name="_bx_orgs_form_profile_display_view"><![CDATA[Просмотреть организацию]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_do_submit"><![CDATA[Выполнить]]></string>
+    <string name="_bx_orgs_form_profile_input_sys_org_name"><![CDATA[Название организации]]></string>
+    <string name="_bx_orgs_form_profile_input_org_name"><![CDATA[Название организации]]></string>
+    <string name="_bx_orgs_form_profile_input_org_name_err"><![CDATA[Эта информация необходима. Пожалуйста, заполните это поле.]]></string>
+    <string name="_bx_orgs_form_profile_input_sys_org_desc"><![CDATA[Описание]]></string>
+    <string name="_bx_orgs_form_profile_input_org_desc"><![CDATA[Описание]]></string>
+    <string name="_bx_orgs_form_profile_input_sys_org_cat"><![CDATA[Категория]]></string>
+	<string name="_bx_orgs_form_profile_input_org_cat"><![CDATA[Категория]]></string>
+    <string name="_bx_orgs_form_profile_input_org_cat_err"><![CDATA[Поле категории необходимо]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_picture"><![CDATA[Картинка профиля]]></string>
+	<string name="_bx_orgs_form_profile_input_picture"><![CDATA[Загрузить новую картинку профиля]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_picture_preview"><![CDATA[Предпросмотр картинки профиля]]></string>
+	<string name="_bx_orgs_form_profile_input_picture_preview"><![CDATA[Текущая картинка профиля]]></string>
+	<string name="_bx_orgs_form_profile_input_picture_err"><![CDATA[Необходима картинка профиля.]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_cover"><![CDATA[Картинка обложки]]></string>
+	<string name="_bx_orgs_form_profile_input_cover"><![CDATA[Загрузить новую картинку обложки]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_cover_preview"><![CDATA[Предпросмотр картинки обложки]]></string>
+	<string name="_bx_orgs_form_profile_input_cover_preview"><![CDATA[Текущая картинка обложки]]></string>
+	<string name="_bx_orgs_form_profile_input_sys_delete_confirm"><![CDATA[Удалить подтверждение]]></string>
+	<string name="_bx_orgs_form_profile_input_delete_confirm"><![CDATA[Я уверен, что хочу удалить этот профиль]]></string>
+	<string name="_bx_orgs_form_profile_input_delete_confirm_info"><![CDATA[Это действие не может быть отменено.]]></string>
+	<string name="_bx_orgs_form_profile_input_delete_confirm_error"><![CDATA[Пожалуйста, отметьте этот флажок, если действительно хотите удалить свой профиль.]]></string>
+
+	<string name="_bx_orgs_acl_action_create_profile"><![CDATA[Создать профиль организации]]></string>
+	<string name="_bx_orgs_acl_action_delete_profile"><![CDATA[Удалить профиль организации]]></string>
+	<string name="_bx_orgs_acl_action_view_profile"><![CDATA[Просмотреть профиль организации]]></string>
+	<string name="_bx_orgs_acl_action_edit_any_profile"><![CDATA[Редактировать профиль любой организации]]></string>
+
+	<string name="_bx_orgs_page_title_sys_create_profile"><![CDATA[Создать профиль организации]]></string>
+	<string name="_bx_orgs_page_title_create_profile"><![CDATA[Создать профиль организации]]></string>
+	<string name="_bx_orgs_page_title_sys_edit_profile"><![CDATA[Редактировать профиль организации]]></string>
+	<string name="_bx_orgs_page_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
+	<string name="_bx_orgs_page_title_sys_edit_profile_cover"><![CDATA[Редактировать обложку профиля]]></string>
+	<string name="_bx_orgs_page_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
+	<string name="_bx_orgs_page_title_sys_delete_profile"><![CDATA[Удалить профиль организации]]></string>
+	<string name="_bx_orgs_page_title_delete_profile"><![CDATA[Удалить профиль]]></string>
+	<string name="_bx_orgs_page_title_sys_view_profile"><![CDATA[Просмотреть профиль организации]]></string>
+	<string name="_bx_orgs_page_title_view_profile"><![CDATA[{display_name}]]></string>
+	<string name="_bx_orgs_page_title_browse"><![CDATA[Организации]]></string>
+	<string name="_bx_orgs_page_title_browse_recent"><![CDATA[Организации]]></string>
+	<string name="_bx_orgs_page_title_browse_connections"><![CDATA[{0} связей]]></string>
+	<string name="_bx_orgs_page_title_browse_connections_mutual"><![CDATA[{0} и {1} обоюдных связей]]></string>
+	<string name="_bx_orgs_page_title_sys_profile_friends"><![CDATA[Друзья]]></string>
+	<string name="_bx_orgs_page_title_profile_friends"><![CDATA[Друзья]]></string>
+	<string name="_bx_orgs_page_title_sys_profile_info"><![CDATA[Инфо профиля]]></string>
+	<string name="_bx_orgs_page_title_profile_info"><![CDATA[Инфо о {display_name}]]></string>
+	<string name="_bx_orgs_page_title_sys_home"><![CDATA[Организации - Домой]]></string>
+	<string name="_bx_orgs_page_title_home"><![CDATA[Организации]]></string>
+	<string name="_bx_orgs_page_title_sys_manage"><![CDATA[Управление собственными организациями]]></string>
+	<string name="_bx_orgs_page_title_sys_manage_administration"><![CDATA[Управление всеми организациями]]></string>
+	<string name="_bx_orgs_page_title_manage"><![CDATA[Управление организациями]]></string>
+    <string name="_bx_orgs_page_block_title_categories"><![CDATA[Категории организаций]]></string>
+
+	<string name="_bx_orgs_page_block_title_create_profile"><![CDATA[Создать профиль организации]]></string>
+	<string name="_bx_orgs_page_block_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
+	<string name="_bx_orgs_page_block_title_edit_profile_cover"><![CDATA[Редактировать обложку]]></string>
+	<string name="_bx_orgs_page_block_title_delete_profile"><![CDATA[Удалить профиль]]></string>
+	<string name="_bx_orgs_page_block_title_profile_info"><![CDATA[Инфо]]></string>
+	<string name="_bx_orgs_page_block_title_profile_friends"><![CDATA[Друзья]]></string>
+	<string name="_bx_orgs_page_block_title_profile_cover"><![CDATA[Обложка профиля]]></string>
+	<string name="_bx_orgs_page_block_title_profile_actions"><![CDATA[Действия]]></string>
+	<string name="_bx_orgs_page_block_title_latest_profiles"><![CDATA[Недавние организации]]></string>
+	<string name="_bx_orgs_page_block_title_system_manage"><![CDATA[Управление собственными организациями]]></string>
+	<string name="_bx_orgs_page_block_title_system_manage_administration"><![CDATA[Управление всеми организациями]]></string>
+	<string name="_bx_orgs_page_block_title_manage"><![CDATA[Управление организациями]]></string>
+
+    <string name="_bx_orgs_menu_title_submenu"><![CDATA[Организации - Подменю]]></string>
+    <string name="_bx_orgs_menu_set_title_submenu"><![CDATA[Организации - Подменю]]></string>
+    <string name="_bx_orgs_menu_set_title_view_profile_actions"><![CDATA[Организации - Действия]]></string>
+    <string name="_bx_orgs_menu_title_view_profile_actions"><![CDATA[Организации - Действия]]></string>
+    <string name="_bx_orgs_menu_set_title_view_profile_actions_more"><![CDATA[Организации - Дополнительные Действия]]></string>
+    <string name="_bx_orgs_menu_title_view_profile_actions_more"><![CDATA[Организации - Дополнительные Действия]]></string>
+    <string name="_bx_orgs_menu_set_title_view_profile_submenu"><![CDATA[Просмотреть подменю организаций]]></string>
+    <string name="_bx_orgs_menu_title_view_profile_submenu"><![CDATA[Просмотреть подменю организаций]]></string>
+	<string name="_bx_orgs_menu_set_title_manage_tools"><![CDATA[Управление подменю инструментов]]></string>
+    <string name="_bx_orgs_menu_title_manage_tools"><![CDATA[Управление подменю инструментов]]></string>
+    <string name="_bx_orgs_menu_item_title_system_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_orgs_menu_item_title_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_orgs_menu_item_title_system_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_orgs_menu_item_title_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_orgs_menu_item_title_system_edit_profile"><![CDATA[Редактировать организацию]]></string>
+    <string name="_bx_orgs_menu_item_title_edit_profile"><![CDATA[Редактировать профиль]]></string>
+    <string name="_bx_orgs_menu_item_title_system_delete_profile"><![CDATA[Удалить организацию]]></string>
+    <string name="_bx_orgs_menu_item_title_delete_profile"><![CDATA[Удалить профиль]]></string>
+    <string name="_bx_orgs_menu_item_title_system_delete_account"><![CDATA[Удалить аккаунт]]></string>
+    <string name="_bx_orgs_menu_item_title_delete_account"><![CDATA[Удалить аккаунт]]></string>
+    <string name="_bx_orgs_menu_item_title_system_profile_type"><![CDATA[Организация]]></string>
+    <string name="_bx_orgs_menu_item_title_profile_type"><![CDATA[Организация]]></string>
+    <string name="_bx_orgs_menu_item_title_system_create_profile"><![CDATA[Создать организацию]]></string>
+    <string name="_bx_orgs_menu_item_title_create_profile"><![CDATA[Создать организацию]]></string>
+    <string name="_bx_orgs_menu_item_title_system_view_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_orgs_menu_item_title_view_profile_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_orgs_menu_item_title_system_view_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_orgs_menu_item_title_view_profile_info"><![CDATA[Инфо]]></string>
+    <string name="_bx_orgs_menu_item_title_system_view_profile_view"><![CDATA[Организация]]></string>
+    <string name="_bx_orgs_menu_item_title_view_profile_view"><![CDATA[Организация]]></string>
+    <string name="_bx_orgs_menu_item_title_system_befriend"><![CDATA[Добавить друга]]></string>
+    <string name="_bx_orgs_menu_item_title_befriend"><![CDATA[Добавить друга]]></string>
+    <string name="_bx_orgs_menu_item_title_befriend_sent"><![CDATA[Добавить друга (запрошено)]]></string>
+    <string name="_bx_orgs_menu_item_title_befriend_confirm"><![CDATA[Принять запрос о дружбе]]></string>
+    <string name="_bx_orgs_menu_item_title_system_unfriend"><![CDATA[Перестать дружить]]></string>
+    <string name="_bx_orgs_menu_item_title_unfriend"><![CDATA[Перестать дружить]]></string>
+    <string name="_bx_orgs_menu_item_title_unfriend_cancel_request"><![CDATA[Отменить запрос о дружбе]]></string>
+    <string name="_bx_orgs_menu_item_title_unfriend_reject_request"><![CDATA[Отвергнуть запрос о дружбе]]></string>
+    <string name="_bx_orgs_menu_item_title_system_subscribe"><![CDATA[Подписаться]]></string>
+    <string name="_bx_orgs_menu_item_title_subscribe"><![CDATA[Подписаться]]></string>
+    <string name="_bx_orgs_menu_item_title_system_unsubscribe"><![CDATA[Отписаться]]></string>
+    <string name="_bx_orgs_menu_item_title_unsubscribe"><![CDATA[Отписаться]]></string>
+    <string name="_bx_orgs_menu_item_title_system_more_actions"><![CDATA[Дополнительные действия]]></string>
+    <string name="_bx_orgs_menu_item_title_more_actions"><![CDATA[]]></string>
+    <string name="_bx_orgs_menu_item_title_system_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_orgs_menu_item_title_friends"><![CDATA[Друзья]]></string>
+    <string name="_bx_orgs_menu_item_title_system_friend_requests"><![CDATA[Число запросов дружбы]]></string>
+    <string name="_bx_orgs_menu_item_title_friend_requests"><![CDATA[{addon} запросов дружбы]]></string>
+    <string name="_bx_orgs_menu_item_title_system_manage_my_organizations"><![CDATA[Мои организации]]></string>
+    <string name="_bx_orgs_menu_item_title_manage_my_organizations"><![CDATA[{addon} организаций]]></string>
+    <string name="_bx_orgs_menu_item_title_system_entries_public"><![CDATA[Публичные]]></string>
+    <string name="_bx_orgs_menu_item_title_entries_public"><![CDATA[Публичные]]></string>
+    <string name="_bx_orgs_menu_item_title_system_entries_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_orgs_menu_item_title_entries_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_orgs_menu_item_title_system_entries_home"><![CDATA[Организации]]></string>
+    <string name="_bx_orgs_menu_item_title_entries_home"><![CDATA[Организации]]></string>
+    <string name="_bx_orgs_menu_item_title_system_admt_organizations"><![CDATA[Организации]]></string>
+	<string name="_bx_orgs_menu_item_title_admt_organizations"><![CDATA[Организации - {addon} неодобрено]]></string>
+	<string name="_bx_orgs_menu_item_title_manage_my"><![CDATA[Мои организации]]></string>
+	<string name="_bx_orgs_menu_item_title_manage_all"><![CDATA[Все организации]]></string>
+
+	<string name="_bx_orgs_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
+	<string name="_bx_orgs_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
+	<string name="_bx_orgs_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
+	<string name="_bx_orgs_grid_filter_item_title_adm_suspended"><![CDATA[Заблокированные]]></string>
+	<string name="_bx_orgs_grid_column_title_adm_active"><![CDATA[Активные]]></string>
+    <string name="_bx_orgs_grid_column_title_adm_org_name"><![CDATA[Название]]></string>
+    <string name="_bx_orgs_grid_column_title_adm_last_online"><![CDATA[Последнее посещение]]></string>
+    <string name="_bx_orgs_grid_column_title_adm_account"><![CDATA[Аккаунт]]></string>
+    <string name="_bx_orgs_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
+    <string name="_bx_orgs_grid_action_title_adm_delete_with_content"><![CDATA[Удалить вместе с содержимым]]></string>
+    <string name="_bx_orgs_grid_action_title_adm_set_acl_level"><![CDATA[Назначить членство]]></string>
+    <string name="_bx_orgs_grid_action_title_adm_more_actions"><![CDATA[Дополнительные действия]]></string>
+	<string name="_bx_orgs_grid_action_err_delete"><![CDATA[Невозможно удалить выбранную(ные) организацию(ции).]]></string>
+	<string name="_bx_orgs_grid_txt_account_manager"><![CDATA[Перенаправить в Управление аккаунтом.]]></string>
+
+    <string name="_bx_orgs_txt_account_pending"><![CDATA[Этот профиль ожидает одобрения. Пожалуйста, дождитесь его активации.]]></string>
+    <string name="_bx_orgs_txt_account_suspended"><![CDATA[Этот профиль заблокирован.]]></string>
+
+    <string name="_bx_orgs_pre_lists_cats"><![CDATA[Категории организаций]]></string>
+    <string name="_bx_orgs_cat_Agriculture"><![CDATA[Сельское хозяйство]]></string>
+    <string name="_bx_orgs_cat_Financial"><![CDATA[Финансы]]></string>
+    <string name="_bx_orgs_cat_Biotech"><![CDATA[Биотехнологии]]></string>
+    <string name="_bx_orgs_cat_Cause"><![CDATA[Дело]]></string>
+    <string name="_bx_orgs_cat_Chemical"><![CDATA[Химия]]></string>
+    <string name="_bx_orgs_cat_Religious"><![CDATA[Религия]]></string>
+    <string name="_bx_orgs_cat_Community"><![CDATA[Общество]]></string>
+    <string name="_bx_orgs_cat_Company"><![CDATA[Компания]]></string>
+    <string name="_bx_orgs_cat_Entertainment"><![CDATA[Развлечения]]></string>
+    <string name="_bx_orgs_cat_Technology"><![CDATA[Технологии]]></string>
+    <string name="_bx_orgs_cat_Consulting"><![CDATA[Консультации]]></string>
+    <string name="_bx_orgs_cat_Education"><![CDATA[Образование]]></string>
+    <string name="_bx_orgs_cat_Energy"><![CDATA[Энергетика]]></string>
+    <string name="_bx_orgs_cat_Engineering"><![CDATA[Инженерия]]></string>
+    <string name="_bx_orgs_cat_Food"><![CDATA[Питание]]></string>
+    <string name="_bx_orgs_cat_Government"><![CDATA[Правительство]]></string>
+    <string name="_bx_orgs_cat_Health"><![CDATA[Здоровье]]></string>
+    <string name="_bx_orgs_cat_Medical"><![CDATA[Медицина]]></string>
+    <string name="_bx_orgs_cat_Industrial"><![CDATA[Промышленность]]></string>
+    <string name="_bx_orgs_cat_Insurance"><![CDATA[Страхование]]></string>
+    <string name="_bx_orgs_cat_Internet"><![CDATA[Интернет]]></string>
+    <string name="_bx_orgs_cat_Software"><![CDATA[Программное обеспечение]]></string>
+    <string name="_bx_orgs_cat_Legal"><![CDATA[Право]]></string>
+    <string name="_bx_orgs_cat_Media"><![CDATA[СМИ]]></string>
+    <string name="_bx_orgs_cat_School"><![CDATA[Школа]]></string>
+    <string name="_bx_orgs_cat_NGO"><![CDATA[НПО]]></string>
+    <string name="_bx_orgs_cat_NPO"><![CDATA[NPO]]></string>
+    <string name="_bx_orgs_cat_Political"><![CDATA[Политика]]></string>
+    <string name="_bx_orgs_cat_Retail"><![CDATA[Торговля]]></string>
+    <string name="_bx_orgs_cat_Small_Business"><![CDATA[Малый бизнес]]></string>
+    <string name="_bx_orgs_cat_Telecommunication"><![CDATA[Телекоммуникации]]></string>
+    <string name="_bx_orgs_cat_Transport"><![CDATA[Транспорт]]></string>
+    <string name="_bx_orgs_cat_Travel"><![CDATA[Путешествия]]></string>
+    <string name="_bx_orgs_cat_University"><![CDATA[Преподавание]]></string>
+    <string name="_bx_orgs_cat_Other"><![CDATA[Другое]]></string>
+
+    <string name="_bx_orgs_txt_sample_single"><![CDATA[Организация]]></string>
+</resources>

+ 1 - 0
searchKeyword.php

@@ -13,6 +13,7 @@ require_once(BX_DIRECTORY_PATH_INC . "design.inc.php");
 $oSearch = new BxTemplSearch(bx_get('section'));
 $oSearch = new BxTemplSearch(bx_get('section'));
 $oSearch->setLiveSearch(bx_get('live_search') ? 1 : 0);
 $oSearch->setLiveSearch(bx_get('live_search') ? 1 : 0);
 $oSearch->setMetaType(bx_process_input(bx_get('type')));
 $oSearch->setMetaType(bx_process_input(bx_get('type')));
+$oSearch->setCategoryObject(bx_process_input(bx_get('cat')));
 
 
 $sCode = '';
 $sCode = '';
 if (bx_get('keyword')) {
 if (bx_get('keyword')) {

+ 1 - 0
searchKeywordContent.php

@@ -15,6 +15,7 @@ bx_import('BxDolLanguages');
 $o = new BxDolSearch(bx_get('section'));
 $o = new BxDolSearch(bx_get('section'));
 $o->setLiveSearch(bx_get('live_search') ? 1 : 0);
 $o->setLiveSearch(bx_get('live_search') ? 1 : 0);
 $o->setMetaType(bx_process_input(bx_get('type')));
 $o->setMetaType(bx_process_input(bx_get('type')));
+$o->setCategoryObject(bx_process_input(bx_get('cat')));
 
 
 $s = $o->response();
 $s = $o->response();
 if (!$s)
 if (!$s)

+ 5 - 0
template/category_list.html

@@ -0,0 +1,5 @@
+<div class="bx-category-list">
+    <bx_repeat:cats>
+        <div class="bx-category-list-item"><a href="__url__">__name__</a> (__num__)</div>
+    </bx_repeat:cats>
+</div>

+ 78 - 0
template/scripts/BxBaseCategory.php

@@ -0,0 +1,78 @@
+<?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
+ * @{
+ */
+
+/**
+ * Category objects representation.
+ * @see BxDolCategory
+ */
+class BxBaseCategory extends BxDolCategory
+{
+    protected $_oTemplate;
+
+    public function __construct ($aObject, $oTemplate = null)
+    {
+        parent::__construct ($aObject);
+
+        if ($oTemplate)
+            $this->_oTemplate = $oTemplate;
+        else
+            $this->_oTemplate = BxDolTemplate::getInstance();
+    }
+
+    public function getCategoryUrl($sName, $sValue)
+    {
+        $sUrl = BX_DOL_URL_ROOT . 'searchKeyword.php?cat=' . rawurlencode($this->getObjectName()) . '&keyword=' . rawurlencode($sValue);
+        if ($this->_aObject['search_object'])
+            $sUrl .= '&section[]=' . rawurlencode($this->_aObject['search_object']);
+        return $sUrl;
+    }
+
+    /**
+     * Get link to list all items with the same category
+     * @param $sName category title
+     * @param $sValue category value
+     * @return category name wrapped with A tag
+     */
+    public function getCategoryLink($sName, $sValue)
+    {
+        $sUrl = $this->getCategoryUrl($sName, $sValue);
+        return '<a class="bx-category-link" href="' . $sUrl . '">' . $sName . '</a>';
+    }
+
+    /**
+     * Get all categories list
+     * @param $bDisplayEmptyCats display categories with no items, true by default
+     * @return categories list html
+     */
+    public function getCategoriesList($bDisplayEmptyCats = true)
+    {
+        $a = BxDolForm::getDataItems($this->_aObject['list_name']);
+        if (!$a)
+            return '';
+
+        $aVars = array('bx_repeat:cats' => array());
+        foreach ($a as $sValue => $sName) {
+            if (!$sValue)
+                continue;
+            $iNum = $this->getItemsNum($sValue);
+            if (!$bDisplayEmptyCats && !$iNum)
+                continue;
+            $aVars['bx_repeat:cats'][] = array(
+                'url' => $this->getCategoryUrl($sName, $sValue),
+                'name' => $sName,
+                'value' => $sValue,
+                'num' => $iNum,
+            );
+        }
+
+        return $this->_oTemplate->parseHtmlByName('category_list.html', $aVars);
+    }
+}
+
+/** @} */

+ 9 - 1
template/scripts/BxBaseFormView.php

@@ -306,7 +306,7 @@ EOS;
 
 
             case 'select':
             case 'select':
             case 'radio_set':
             case 'radio_set':
-                $sValue = isset($aInput['value']) && isset($aInput['values'][$aInput['value']]) ? $aInput['values'][$aInput['value']] : null;
+                $sValue = $this->genViewRowValueForSelect($aInput);
             break;
             break;
 
 
             case 'datepicker':
             case 'datepicker':
@@ -349,6 +349,14 @@ EOS;
         return $sValue;
         return $sValue;
     }
     }
 
 
+    function genViewRowValueForSelect(&$aInput)
+    {
+        $s = isset($aInput['value']) && isset($aInput['values'][$aInput['value']]) ? $aInput['values'][$aInput['value']] : null;
+        if (isset($aInput['values_list_name'])  && ($oCategory = BxDolCategory::getObjectInstanceByFormAndList($this->aFormAttrs['name'], $aInput['values_list_name'])))
+            return $oCategory->getCategoryLink($s, $aInput['value']);
+        return $s;
+    }
+
     /**
     /**
      * Generate standard row
      * Generate standard row
      *
      *

+ 1 - 1
template/scripts/BxBaseSearch.php

@@ -25,7 +25,7 @@ class BxBaseSearch extends BxDolSearch
 
 
     public function getForm($iDesignBoxTemplate = BX_DB_PADDING_DEF, $sTitle = false)
     public function getForm($iDesignBoxTemplate = BX_DB_PADDING_DEF, $sTitle = false)
     {
     {
-        if ($this->_sMetaType)
+        if ($this->_sMetaType || $this->_sCategoryObject)
             return '';
             return '';
 
 
         if (false === $sTitle)
         if (false === $sTitle)

+ 24 - 0
template/scripts/BxBaseServiceCategory.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    TridentCore Trident Core
+ * @{
+ */
+
+/**
+ * Services for category objects functionality - @see BxDolCategory
+ */
+class BxBaseServiceCategory extends BxDol
+{
+    /**
+     * Get categories list
+     */
+    public function serviceCategoriesList ($sObject, $bDisplayEmptyCats = true)
+    {
+        return BxTemplCategory::getObjectInstance($sObject)->getCategoriesList($bDisplayEmptyCats);
+    }
+}
+
+/** @} */