فهرست منبع

Ticket #5298 - Resources module.

AntonLV 10 ماه پیش
والد
کامیت
5095330ca9

+ 1 - 0
modules/boonex/resources/classes/BxResourcesConfig.php

@@ -77,6 +77,7 @@ class BxResourcesConfig extends BxBaseModTextConfig
 
             // page URIs
             'URI_VIEW_ENTRY' => 'view-resource',
+            'URI_AUTHOR_ENTRIES' => 'resources-author',
             'URI_ENTRIES_BY_CONTEXT' => 'resources-context',
             'URI_ADD_ENTRY' => 'create-resource',
             'URI_EDIT_ENTRY' => 'edit-resource',

+ 25 - 12
modules/boonex/resources/classes/BxResourcesGridCommon.php

@@ -11,32 +11,45 @@
 
 class BxResourcesGridCommon extends BxBaseModTextGridCommon
 {
-    protected $_sFilter3Name;
-    protected $_sFilter3Value;
-    protected $_aFilter3Values;
+    protected $_aCategories;
+
+    protected $_iContextPid;
 
     public function __construct ($aOptions, $oTemplate = false)
     {
     	$this->MODULE = 'bx_resources';
+
         parent::__construct ($aOptions, $oTemplate);
 
-        $this->_initFilter(3, $this->_oModule->getContexts());
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $this->_aCategories = BxDolFormQuery::getDataItems($CNF['OBJECT_CATEGORY']);
+
+        if(($iContextPid = bx_get('context_pid')) !== false) 
+            $this->setContextPid($iContextPid);
+    }
+
+    public function setContextPid($iContextPid)
+    {
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        $this->_iContextPid = (int)$iContextPid;
+        $this->_aQueryAppend['context_pid'] = $this->_iContextPid;   
     }
 
-    protected function _getFilterControls()
+    protected function _getCellCat($mixedValue, $sKey, $aField, $aRow)
     {
-        $sContent = $this->_getFilterSelectOne($this->_sFilter3Name, $this->_sFilter3Value, $this->_aFilter3Values);
-        return $sContent . parent::_getFilterControls();
+        $CNF = &$this->_oModule->_oConfig->CNF;
+
+        return parent::_getCellDefault($this->_aCategories[$aRow[$CNF['FIELD_CATEGORY']]] ?? '', $sKey, $aField, $aRow);
     }
 
     protected function _getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
     {
-        $this->_parseFilterValue($sFilter);
-
-        if(!empty($this->_sFilter3Value))
-            $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tp`.`type`=?", $this->_sFilter3Value);
+        if($this->_iContextPid)
+            $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND ABS(`allow_view_to`)=?", $this->_iContextPid);
 
-        return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
+        return $this->__getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
 }
 

+ 9 - 13
modules/boonex/resources/classes/BxResourcesModule.php

@@ -136,19 +136,6 @@ class BxResourcesModule extends BxBaseModTextModule
         }
     }
 
-    public function serviceManageTools($sType = 'common')
-    {
-        $CNF = &$this->_oConfig->CNF;
-
-        $mixedResults = '';
-        if(!($mixedResults = parent::serviceManageTools($sType)))
-            return $mixedResults;
-
-        return array_merge(parent::serviceManageTools($sType), [
-            'menu' => BxDolMenu::getObjectInstance($CNF['OBJECT_MENU_MANAGE_TOOLS_SUBMENU'])
-        ]);
-    }
-
     public function serviceCheckAllowedManageInContext($iContextPid)
     {
         if(!$this->isAllowManageByContext($iContextPid))
@@ -202,6 +189,15 @@ class BxResourcesModule extends BxBaseModTextModule
         return parent::serviceCheckAllowedCommentsView($iContentId, $sObjectComments);
     }
 
+    public function serviceBrowseContextByCategory($iProfileId = 0, $mixedCategory = false)
+    {
+        $aParams = [];
+        if($mixedCategory)
+            $aParams['category'] = $mixedCategory;
+
+        return parent::serviceBrowseContext($iProfileId, $aParams);
+    }
+
     public function serviceBrowseResources($iContextId = 0, $aParams = [])
     {
         if(!$iContextId)

+ 7 - 1
modules/boonex/resources/classes/BxResourcesSearchResult.php

@@ -24,6 +24,7 @@ class BxResourcesSearchResult extends BxBaseModTextSearchResult
             'searchFields' => array(),
             'restriction' => array(
                 'author' => array('value' => '', 'field' => 'author', 'operator' => '='),
+                'cat' => array('value' => '', 'field' => 'cat', 'operator' => '='),
                 'status' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
                 'statusAdmin' => array('value' => 'active', 'field' => 'status_admin', 'operator' => '='),
             ),
@@ -63,8 +64,13 @@ class BxResourcesSearchResult extends BxBaseModTextSearchResult
                 break;
 
             case 'context':
-                if(!$this->_updateCurrentForContext($sMode, $aParams, $oProfileAuthor))
+                if(!$this->_updateCurrentForContext($sMode, $aParams, $oProfileAuthor)) {
                     $this->isError = true;
+                    break;
+                }
+
+                if(($sCategory = $aParams['category'] ?? false))
+                    $this->aCurrent['restriction']['cat']['value'] = $sCategory;
                 break;
 
             case '': // search results

+ 5 - 0
modules/boonex/resources/classes/BxResourcesTemplate.php

@@ -54,6 +54,8 @@ class BxResourcesTemplate extends BxBaseModTextTemplate
         if($aTmplVars['bx_if:no_thumb']['condition'])
             $aTmplVars['bx_if:no_thumb']['condition'] = false;
 
+        $aTmplVars['content_url_attrs'] = bx_convert_array2attrs(['target' => '_blank']);
+
         return $aTmplVars;
     }
 
@@ -81,6 +83,8 @@ class BxResourcesTemplate extends BxBaseModTextTemplate
         $sJsObject = $this->_oConfig->getJsObject('main');
         $oPermalinks = BxDolPermalinks::getInstance();
 
+        $aCategories = BxDolFormQuery::getDataItems($CNF['OBJECT_CATEGORY']);
+
         $oModule = $this->getModule();
         $bAllowAdd = $oModule->isAllowAdd($iContextId);
         $bAllowManage = $oModule->isAllowManageByContext($iContextId);
@@ -99,6 +103,7 @@ class BxResourcesTemplate extends BxBaseModTextTemplate
                     'js_object' => $sJsObject,
                     'id' => $aResource[$CNF['FIELD_ID']],
                     'title' => $this->getUnitLink($aResource),
+                    'category' => $aCategories[$aResource[$CNF['FIELD_CATEGORY']]] ?? '',
                     'created' => bx_time_js($aResource[$CNF['FIELD_ADDED']]),
                     'badges' => $oModule->serviceGetBadges($aResource[$CNF['FIELD_ID']], true),
                     'url' => bx_absolute_url($oPermalinks->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $aResource[$CNF['FIELD_ID']])),

+ 4 - 6
modules/boonex/resources/install/langs/en.xml

@@ -176,22 +176,20 @@
     <!-- Grids -->
     <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Any Audience]]></string>
-    <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter3"><![CDATA[All Modules]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_hidden"><![CDATA[Hidden]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
     <string name="_bx_resources_grid_column_title_adm_active"><![CDATA[Active]]></string>
     <string name="_bx_resources_grid_column_title_adm_title"><![CDATA[Title]]></string>
-    <string name="_bx_resources_grid_column_title_adm_context_module"><![CDATA[Module]]></string>
-    <string name="_bx_resources_grid_action_title_adm_audit_content"><![CDATA[Audit actions]]></string>
+    <string name="_bx_resources_grid_column_title_adm_cat"><![CDATA[Category]]></string>
     <string name="_bx_resources_grid_column_title_adm_added"><![CDATA[Added]]></string>
     <string name="_bx_resources_grid_column_title_adm_author"><![CDATA[Author]]></string>>
-    <string name="_bx_resources_grid_action_title_adm_add"><![CDATA[Add]]></string>
+    <string name="_bx_resources_grid_column_title_adm_status_admin"><![CDATA[Moderation]]></string>
+    <string name="_bx_resources_grid_action_title_adm_audit_content"><![CDATA[Audit actions]]></string>
+    <string name="_bx_resources_grid_action_title_adm_clear_reports"><![CDATA[Сlear reports]]></string>
     <string name="_bx_resources_grid_action_title_adm_edit"><![CDATA[Edit]]></string>
     <string name="_bx_resources_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
-    <string name="_bx_resources_grid_action_title_adm_clear_reports"><![CDATA[Сlear reports]]></string>
     <string name="_bx_resources_grid_action_title_adm_more_actions"><![CDATA[More Actions]]></string>
-    <string name="_bx_resources_grid_column_title_adm_status_admin"><![CDATA[Moderation]]></string>
     <string name="_bx_resources_grid_action_err_delete"><![CDATA[Cannot delete the selected resource(s).]]></string>
     <string name="_bx_resources_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
 

+ 1 - 1
modules/boonex/resources/install/sql/disable.sql

@@ -8,7 +8,7 @@ DELETE FROM `sys_options_types` WHERE `id` = @iTypeId;
 
 -- PAGES
 DELETE FROM `sys_objects_page` WHERE `module` = 'bx_resources';
-DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_resources' OR `object` IN('bx_resources_create_entry', 'bx_resources_edit_entry', 'bx_resources_delete_entry', 'bx_resources_view_entry', 'bx_resources_view_entry_comments', 'bx_resources_context', 'bx_resources_manage', 'bx_resources_administration');
+DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_resources' OR `object` IN('bx_resources_create_entry', 'bx_resources_edit_entry', 'bx_resources_delete_entry', 'bx_resources_view_entry', 'bx_resources_view_entry_comments', 'bx_resources_author', 'bx_resources_context', 'bx_resources_manage', 'bx_resources_administration');
 
 -- MENU
 DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_resources';

+ 19 - 8
modules/boonex/resources/install/sql/enable.sql

@@ -67,6 +67,13 @@ INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `lay
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
 ('bx_resources_view_entry_comments', 1, 'bx_resources', '_bx_resources_page_block_title_sys_entry_comments', '_bx_resources_page_block_title_entry_comments_link', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:12:"bx_resources";s:6:"method";s:15:"entity_comments";}', 0, 0, 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_resources_author', 'resources-author', '_bx_resources_page_title_sys_entries_of_author', '_bx_resources_page_title_entries_of_author', 'bx_resources', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxResourcesPageAuthor', 'modules/boonex/resources/classes/BxResourcesPageAuthor.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_resources_author', 1, 'bx_resources', '_bx_resources_page_block_title_sys_entries_of_author', '_bx_resources_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:12:"bx_resources";s:6:"method";s:16:"browse_resources";}', 0, 0, 1, 1);
+
 -- PAGE: entries in context
 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_resources_context', 'resources-context', '_bx_resources_page_title_sys_entries_in_context', '_bx_resources_page_title_entries_in_context', 'bx_resources', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxResourcesPageAuthor', 'modules/boonex/resources/classes/BxResourcesPageAuthor.php');
@@ -91,12 +98,17 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 -- PAGES: add page block to profiles modules (trigger* page objects are processed separately upon modules enable/disable)
 SET @iPBCellProfile = 0;
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`, `active`) VALUES
-('trigger_page_profile_view_entry', @iPBCellProfile, 'bx_resources', '_bx_resources_page_block_title_sys_entries_of_author', '_bx_resources_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:12:"bx_resources";s:6:"method";s:13:"browse_author";s:6:"params";a:2:{i:0;s:12:"{profile_id}";i:1;a:2:{s:8:"per_page";s:25:"bx_posts_per_page_profile";s:13:"empty_message";b:0;}}}', 0, 0, 0, 1);
+('trigger_page_profile_view_entry', @iPBCellProfile, 'bx_resources', '_bx_resources_page_block_title_sys_entries_of_author', '_bx_resources_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:12:"bx_resources";s:6:"method";s:14:"browse_context";s:6:"params";a:2:{i:0;s:12:"{profile_id}";i:1;a:2:{s:8:"per_page";s:25:"bx_posts_per_page_profile";s:13:"empty_message";b:0;}}}', 0, 0, 0, 1);
 
 SET @iPBCellContext = 0;
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`, `active`) VALUES
 ('trigger_page_group_view_entry', @iPBCellContext, 'bx_resources', '_bx_resources_page_block_title_sys_entries_in_context', '_bx_resources_page_block_title_entries_in_context', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:12:"bx_resources";s:6:"method";s:14:"browse_context";s:6:"params";a:2:{i:0;s:12:"{profile_id}";i:1;a:2:{s:8:"per_page";s:25:"bx_posts_per_page_profile";s:13:"empty_message";b:0;}}}', 0, 0, 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`, `order`) VALUES 
+('', 0, 'bx_resources', '', '_bx_resources_page_block_title_entries_in_context_by_category', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:12:"bx_resources";s:6:"method";s:26:"browse_context_by_category";s:6:"params";a:2:{i:0;s:12:"{profile_id}";i:1;i:1;}}', 0, 1, IFNULL(@iBlockOrder, 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 
@@ -259,16 +271,15 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_resources_administration', 'checkbox', '_sys_select', '2%', 0, 0, '', 1),
 ('bx_resources_administration', 'switcher', '_bx_resources_grid_column_title_adm_active', '8%', 0, 0, '', 2),
 ('bx_resources_administration', 'reports', '_sys_txt_reports_title', '5%', 0, 0, '', 3),
-('bx_resources_administration', 'context_module', '_bx_resources_grid_column_title_adm_context_module', '10%', 0, 0, '', 4),
-('bx_resources_administration', 'title', '_bx_resources_grid_column_title_adm_title', '25%', 0, 25, '', 5),
-('bx_resources_administration', 'added', '_bx_resources_grid_column_title_adm_added', '10%', 1, 25, '', 6),
-('bx_resources_administration', 'author', '_bx_resources_grid_column_title_adm_author', '20%', 0, 25, '', 7),
-('bx_resources_administration', 'actions', '', '20%', 0, 0, '', 8),
+('bx_resources_administration', 'title', '_bx_resources_grid_column_title_adm_title', '35%', 0, 25, '', 4),
+('bx_resources_administration', 'added', '_bx_resources_grid_column_title_adm_added', '10%', 1, 25, '', 5),
+('bx_resources_administration', 'author', '_bx_resources_grid_column_title_adm_author', '20%', 0, 25, '', 6),
+('bx_resources_administration', 'actions', '', '20%', 0, 0, '', 7),
 
 ('bx_resources_common', 'checkbox', '_sys_select', '2%', 0, 0, '', 1),
 ('bx_resources_common', 'switcher', '_bx_resources_grid_column_title_adm_active', '8%', 0, 0, '', 2),
-('bx_resources_common', 'title', '_bx_resources_grid_column_title_adm_title', '35%', 0, 35, '', 3),
-('bx_resources_common', 'context_module', '_bx_resources_grid_column_title_adm_context_module', '10%', 0, 0, '', 4),
+('bx_resources_common', 'title', '_bx_resources_grid_column_title_adm_title', '30%', 0, 35, '', 3),
+('bx_resources_common', 'cat', '_bx_resources_grid_column_title_adm_cat', '15%', 0, 0, '', 4),
 ('bx_resources_common', 'added', '_bx_resources_grid_column_title_adm_added', '10%', 1, 25, '', 5),
 ('bx_resources_common', 'status_admin', '_bx_resources_grid_column_title_adm_status_admin', '15%', 0, 16, '', 6),
 ('bx_resources_common', 'actions', '', '20%', 0, 0, '', 7);

+ 3 - 3
modules/boonex/resources/template/browse_entries.html

@@ -25,9 +25,9 @@
                     </div>
                 </div>
                 <bx_repeat:entries>
-                    <div class="bx-def-padding-sec  bx-def-border-bottom  bx-resources-entry">
-                        <a href="__url__" class="bx-resources-entry-name pr-2" title="__title__">__title__ </a>
-                        <span class="bx-entry-badge flex pr-2">__badges__</span>
+                    <div class="bx-resources-entry p-2 bx-def-border-bottom">
+                        <a class="bx-resources-e-title truncate" href="__url__" class="bx-resources-entry-name pr-2" title="__title__">__title__ </a>
+                        <span class="bx-resources-e-category pr-2">__category__</span>
                         <span class="bx-def-font-small bx-def-font-grayed pr-2">__created__</span>
                     </div>
                 </bx_repeat:entries>

+ 6 - 9
modules/boonex/resources/template/css/main.css

@@ -20,19 +20,16 @@
 /*--- Resource ---*/
 .bx-resources-entry {
     display: flex;
-    justify-content: space-between;
     align-items: center
 }
-.bx-resources-entry .bx-badges-list {
-    display: inline-block;
-}
-.bx-resources-entry .bx-resources-entry-name {
+.bx-resources-entry .bx-resources-e-title {
+    flex: 2 1 0%;
     max-width: 50%;
     white-space: nowrap;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    display: inline-block;
+}
+.bx-resources-entry .bx-resources-e-category {
+    flex-grow: 1;
 }
 .bx-media-desktop .bx-resources-form-cnt {
-    width: 800px;
+    width: 50rem;
 }

+ 4 - 6
modules/boonex/russian/data/langs/bx_resources/ru.xml

@@ -176,22 +176,20 @@
     <!-- Grids -->
     <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter2"><![CDATA[Любая аудитория]]></string>
-    <string name="_bx_resources_grid_filter_item_title_adm_select_one_filter3"><![CDATA[Все модули]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_hidden"><![CDATA[Спрятанные]]></string>
     <string name="_bx_resources_grid_filter_item_title_adm_pending"><![CDATA[В ожидании]]></string>
     <string name="_bx_resources_grid_column_title_adm_active"><![CDATA[Активные]]></string>
     <string name="_bx_resources_grid_column_title_adm_title"><![CDATA[Заголовок]]></string>
-    <string name="_bx_resources_grid_column_title_adm_context_module"><![CDATA[Модуль]]></string>
-    <string name="_bx_resources_grid_action_title_adm_audit_content"><![CDATA[Аудит действий]]></string>
+    <string name="_bx_resources_grid_column_title_adm_cat"><![CDATA[Категория]]></string>
     <string name="_bx_resources_grid_column_title_adm_added"><![CDATA[Добавленные]]></string>
     <string name="_bx_resources_grid_column_title_adm_author"><![CDATA[Автор]]></string>
+    <string name="_bx_resources_grid_column_title_adm_status_admin"><![CDATA[Модерация]]></string>
+    <string name="_bx_resources_grid_action_title_adm_audit_content"><![CDATA[Аудит действий]]></string>
+    <string name="_bx_resources_grid_action_title_adm_clear_reports"><![CDATA[Очистить жалобы]]></string>
     <string name="_bx_resources_grid_action_title_adm_edit"><![CDATA[Редактировать]]></string>
     <string name="_bx_resources_grid_action_title_adm_delete"><![CDATA[Удалить]]></string>
     <string name="_bx_resources_grid_action_title_adm_more_actions"><![CDATA[Дополнительные действия]]></string>
-    <string name="_bx_resources_grid_action_title_adm_audit_content"><![CDATA[Аудит действий]]></string>
-    <string name="_bx_resources_grid_action_title_adm_clear_reports"><![CDATA[Очистить жалобы]]></string>
-    <string name="_bx_resources_grid_column_title_adm_status_admin"><![CDATA[Модерация]]></string>
     <string name="_bx_resources_grid_action_err_delete"><![CDATA[Невозможно удалить выбранную(ные) публикацию(ции).]]></string>
     <string name="_bx_resources_grid_txt_account_manager"><![CDATA[Перенаправить в Управление аккаунтом.]]></string>