AntonLV 9 лет назад
Родитель
Сommit
12df12406a

+ 2 - 0
modules/boonex/forum/classes/BxForumConfig.php

@@ -84,6 +84,7 @@ class BxForumConfig extends BxBaseModTextConfig
             // objects
             'OBJECT_GRID' => 'bx_forum',
         	'OBJECT_GRID_FAVORITE' => 'bx_forum_favorite',
+            'OBJECT_GRID_FEATURE' => 'bx_forum_feature',
         	'OBJECT_GRID_ADMINISTRATION' => 'bx_forum_administration',
         	'OBJECT_GRID_COMMON' => 'bx_forum_common',
         	'OBJECT_GRID_CATEGORIES' => 'bx_forum_categories',
@@ -96,6 +97,7 @@ class BxForumConfig extends BxBaseModTextConfig
             'OBJECT_VIEWS' => 'bx_forum',
             'OBJECT_VOTES' => 'bx_forum',
         	'OBJECT_FAVORITES' => 'bx_forum',
+        	'OBJECT_FEATURED' => 'bx_forum',
         	'OBJECT_CATEGORY' => 'bx_forum_cats',
             'OBJECT_COMMENTS' => 'bx_forum',
         	'OBJECT_METATAGS' => 'bx_forum',

+ 11 - 5
modules/boonex/forum/classes/BxForumGrid.php

@@ -15,6 +15,7 @@ class BxForumGrid extends BxTemplGrid
 {
     protected $_oModule;
     protected $_aParams;
+    protected $_sDefaultSource; 
 
     public function __construct ($aOptions, $oTemplate = false)
     {
@@ -23,7 +24,9 @@ class BxForumGrid extends BxTemplGrid
         $this->_oModule = BxDolModule::getInstance('bx_forum');
 
         $this->_aOptions['paginate_per_page'] = (int)$this->_oModule->_oDb->getParam('bx_forum_per_page_browse');
+
         $this->_sDefaultSortingOrder = 'DESC';
+        $this->_sDefaultSource = $this->_aOptions['source'];
 
 	    $sParams = bx_get('params');
         if(!empty($sParams)) {
@@ -47,6 +50,10 @@ class BxForumGrid extends BxTemplGrid
 	    		case 'category':
 	                $sField = 'added';
 	                break;
+
+                case 'featured':
+					$sField = 'featured';
+	                break;
 	
 				case 'updated':
 					$sField = 'changed';
@@ -158,7 +165,7 @@ class BxForumGrid extends BxTemplGrid
 				$sWhereClause .= " AND " . $sWhereClauseBrowse;
 		}
 
-		$this->_aOptions['source'] = sprintf($this->_aOptions['source'], $sJoinClause, $sWhereClause);
+		$this->_aOptions['source'] = sprintf($this->_sDefaultSource, $sJoinClause, $sWhereClause);
 		return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }
 
@@ -238,10 +245,6 @@ class BxForumGrid extends BxTemplGrid
             $sField = "`" . $aCnd['tbl'] . "`." . $sField;
 
 		switch($aCnd['opr']) {
-			case '=':
-				$sResult .= $sField . " = " . $this->_oModule->_oDb->escape($aCnd['val']);
-				break;
-
 			case 'IN':
 				if(empty($aCnd['val']) || !is_array($aCnd['val']))
 					break;
@@ -252,6 +255,9 @@ class BxForumGrid extends BxTemplGrid
 			case 'LIKE':
 				$sResult .= $sField . " LIKE " . $this->_oModule->_oDb->escape('%' . $aCnd['val'] . '%');
 				break;
+
+			default:
+			    $sResult .= $sField . " " . $aCnd['opr'] . " " . $this->_oModule->_oDb->escape($aCnd['val']);
 		}
 
 		return $sResult;

+ 16 - 0
modules/boonex/forum/classes/BxForumModule.php

@@ -94,6 +94,22 @@ class BxForumModule extends BxBaseModTextModule
 		return $this->_serviceBrowseTable(array('type' => $sType), $bShowHeader);
     }
 
+    public function serviceBrowseFeatured($sUnitView = false, $bEmptyMessage = true, $bAjaxPaginate = true, $bShowHeader = true)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+    	$sType = 'featured';
+
+    	if($sUnitView != 'table')
+        	return $this->_serviceBrowse($sType, $sUnitView ? array('unit_view' => $sUnitView) : false, BX_DB_PADDING_DEF, $bEmptyMessage, $bAjaxPaginate);
+
+		return $this->_serviceBrowseTable(array(
+			'grid' => $CNF['OBJECT_GRID_FEATURE'],
+			'type' => $sType, 
+			'where' => array('fld' => 'featured', 'val' => 0, 'opr' => '<>')
+		), $bShowHeader);
+    }
+
 	public function serviceBrowseTop($sUnitView = false, $bEmptyMessage = true, $bAjaxPaginate = true)
     {
     	$sType = 'top';

+ 12 - 0
modules/boonex/forum/classes/BxForumSearchResult.php

@@ -26,6 +26,7 @@ class BxForumSearchResult extends BxBaseModTextSearchResult
             'restriction' => array(
                 'author' => array('value' => '', 'field' => 'author', 'operator' => '='),
         		'category' => array('value' => '', 'field' => 'cat', 'operator' => '='),
+        		'featured' => array('value' => '', 'field' => 'featured', 'operator' => '<>'),
         		'status' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
             ),
             'paginate' => array('perPage' => getParam('bx_forum_per_page_browse'), 'start' => 0),
@@ -108,6 +109,14 @@ class BxForumSearchResult extends BxBaseModTextSearchResult
                 $this->aCurrent['sorting'] = 'latest';
                 break;
 
+            case 'featured':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_HOME']);
+                $this->aCurrent['title'] = _t('_bx_forum_page_title_browse_featured');
+                $this->aCurrent['restriction']['featured']['value'] = '0';
+                $this->aCurrent['rss']['link'] = 'modules/?r=forum/rss/' . $sMode;
+                $this->aCurrent['sorting'] = 'featured';
+                break;
+
             case 'top':
                 $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_TOP']);
                 $this->aCurrent['title'] = _t('_bx_forum_page_title_browse_top');
@@ -152,6 +161,9 @@ class BxForumSearchResult extends BxBaseModTextSearchResult
         switch ($this->aCurrent['sorting']) {
             case 'last':
                 $aSql['order'] = ' ORDER BY `bx_forum_discussions`.`added` DESC';
+                break;
+            case 'featured':
+                $aSql['order'] = ' ORDER BY `bx_forum_discussions`.`featured` DESC';
                 break;
 			case 'updated':
                 $aSql['order'] = ' ORDER BY `bx_forum_discussions`.`changed` DESC';

+ 2 - 0
modules/boonex/forum/install/langs/en.xml

@@ -81,6 +81,7 @@
     <string name="_bx_forum_page_title_browse"><![CDATA[Forum]]></string>
 	<string name="_bx_forum_page_title_search_results"><![CDATA[Discussions matching "{0}"]]></string>
 	<string name="_bx_forum_page_title_browse_by_author"><![CDATA[Discussions of {display_name}]]></string>
+	<string name="_bx_forum_page_title_browse_featured"><![CDATA[Featured]]></string>
 	<string name="_bx_forum_page_title_browse_by_category"><![CDATA[Discussions by {category_name}]]></string>
 	<string name="_bx_forum_page_title_browse_new"><![CDATA[New]]></string>
     <string name="_bx_forum_page_title_browse_latest"><![CDATA[Latest]]></string>
@@ -89,6 +90,7 @@
     <string name="_bx_forum_page_title_browse_updated"><![CDATA[Latest]]></string>
     <string name="_bx_forum_page_title_sys_home"><![CDATA[Discussions Home]]></string>
     <string name="_bx_forum_page_title_home"><![CDATA[Discussions]]></string>
+    <string name="_bx_forum_page_block_title_featured_entries_view_extended"><![CDATA[Featured]]></string>
     <string name="_bx_forum_page_title_sys_entries_new"><![CDATA[New]]></string>
     <string name="_bx_forum_page_title_entries_new"><![CDATA[New]]></string>
     <string name="_bx_forum_page_title_sys_entries_top"><![CDATA[Top]]></string>

+ 7 - 3
modules/boonex/forum/install/sql/disable.sql

@@ -21,9 +21,9 @@ DELETE FROM `sys_menu_items` WHERE `module` = @sName OR `set_name` IN('bx_forum_
 
 
 -- GRID
-DELETE FROM `sys_objects_grid` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
-DELETE FROM `sys_grid_fields` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
-DELETE FROM `sys_grid_actions` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
+DELETE FROM `sys_objects_grid` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_feature', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
+DELETE FROM `sys_grid_fields` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_feature', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
+DELETE FROM `sys_grid_actions` WHERE `object` IN (@sName, 'bx_forum_favorite', 'bx_forum_feature', 'bx_forum_administration', 'bx_forum_common', 'bx_forum_categories');
 
 
 -- ACL
@@ -67,6 +67,10 @@ DELETE FROM `sys_objects_vote` WHERE `Name` = @sName;
 DELETE FROM `sys_objects_favorite` WHERE `Name` = @sName;
 
 
+-- FEATURED
+DELETE FROM `sys_objects_feature` WHERE `name` = @sName;
+
+
 -- ALERTS
 SET @iHandler := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = @sName LIMIT 1);
 DELETE FROM `sys_alerts` WHERE `handler_id` = @iHandler;

+ 15 - 4
modules/boonex/forum/install/sql/enable.sql

@@ -119,8 +119,9 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 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_forum_home', 'discussions-home', '_bx_forum_page_title_sys_home', '_bx_forum_page_title_home', @sName, 2, 2147483647, 1, 'page.php?i=discussions-home', '', '', '', 0, 1, 0, 'BxForumPageBrowse', 'modules/boonex/forum/classes/BxForumPageBrowse.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_forum_home', 1, @sName, '', '_bx_forum_page_block_title_latest_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:8:"bx_forum";s:6:"method";s:13:"browse_latest";s:6:"params";a:1:{i:0;s:5:"table";}}', 0, 1, 1, 0),
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('bx_forum_home', 1, @sName, '', '_bx_forum_page_block_title_featured_entries_view_extended', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:8:"bx_forum";s:6:"method";s:15:"browse_featured";s:6:"params";a:4:{i:0;s:5:"table";i:1;b:1;i:2;b:1;i:3;b:0;}}', 0, 1, 1, 0),
+('bx_forum_home', 1, @sName, '', '_bx_forum_page_block_title_latest_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:8:"bx_forum";s:6:"method";s:13:"browse_latest";s:6:"params";a:1:{i:0;s:5:"table";}}', 0, 1, 1, 1),
 ('bx_forum_home', 2, @sName, '', '_bx_forum_page_block_title_cats', 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:13:"bx_forum_cats";i:1;a:1:{s:10:"show_empty";b:1;}}s:5:"class";s:20:"TemplServiceCategory";}', 0, 1, 1, 0),
 ('bx_forum_home', 2, @sName, '', '_bx_forum_page_block_title_popular_keywords', 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:8:"bx_forum";i:1;s:8:"bx_forum";}s:5:"class";s:20:"TemplServiceMetatags";}', 0, 1, 1, 1);
 
@@ -265,7 +266,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- GRIDS: main
 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
 (@sName, 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` AS `cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'title,text,cmt_text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php'),
-('bx_forum_favorite', 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` AS `cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'title,text,cmt_text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php');
+('bx_forum_favorite', 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` AS `cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'title,text,cmt_text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php'),
+('bx_forum_feature', 'Sql', 'SELECT `bx_forum_discussions`.*, `bx_forum_cmts`.`cmt_text` AS `cmt_text` FROM `bx_forum_discussions` LEFT JOIN `bx_forum_cmts` ON (`bx_forum_cmts`.`cmt_id` = `bx_forum_discussions`.`lr_comment_id`) %s WHERE 1 %s', 'bx_forum_discussions', 'id', 'lr_timestamp', '', 10, NULL, 'start', '', 'title,text,cmt_text', 'auto', '', 2147483647, 'BxForumGrid', 'modules/boonex/forum/classes/BxForumGrid.php');
 
 INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
 (@sName, 'author', '', '10%', '', 1),
@@ -274,7 +276,11 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `or
 
 ('bx_forum_favorite', 'author', '', '10%', '', 1),
 ('bx_forum_favorite', 'lr_timestamp', '', '85%', '', 2),
-('bx_forum_favorite', 'comments', '', '5%', '', 3);
+('bx_forum_favorite', 'comments', '', '5%', '', 3),
+
+('bx_forum_feature', 'author', '', '10%', '', 1),
+('bx_forum_feature', 'lr_timestamp', '', '85%', '', 2),
+('bx_forum_feature', 'comments', '', '5%', '', 3);
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 (@sName, 'independent', 'add', '_bx_forum_grid_action_title_add', '', 0, 1);
@@ -447,6 +453,11 @@ INSERT INTO `sys_objects_favorite` (`name`, `table_track`, `is_on`, `is_undo`, `
 (@sName, 'bx_forum_favorites_track', '1', '1', '1', 'page.php?i=view-discussion&id={object_id}', 'bx_forum_discussions', 'id', 'author', 'favorites', '', '');
 
 
+-- FEATURED
+INSERT INTO `sys_objects_feature` (`name`, `is_on`, `is_undo`, `base_url`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_flag`, `class_name`, `class_file`) VALUES 
+(@sName, '1', '1', 'page.php?i=view-discussion&id={object_id}', 'bx_forum_discussions', 'id', 'author', 'featured', '', '');
+
+
 -- ALERTS
 INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
 (@sName, 'BxForumAlertsResponse', 'modules/boonex/forum/classes/BxForumAlertsResponse.php', '');

+ 1 - 0
modules/boonex/forum/install/sql/install.sql

@@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS `bx_forum_discussions` (
   `favorites` int(11) NOT NULL default '0',
   `comments` int(11) NOT NULL default '0',
   `reports` int(11) NOT NULL default '0',
+  `featured` int(11) NOT NULL default '0',
   `stick` tinyint(4) NOT NULL DEFAULT '0',
   `lock` tinyint(4) NOT NULL DEFAULT '0',
   `allow_view_to` int(11) NOT NULL DEFAULT '3',

+ 2 - 0
modules/boonex/russian/data/langs/bx_forum/ru.xml

@@ -81,6 +81,7 @@
     <string name="_bx_forum_page_title_browse"><![CDATA[Форум]]></string>
 	<string name="_bx_forum_page_title_search_results"><![CDATA[Обсуждения, соответствующие "{0}"]]></string>
 	<string name="_bx_forum_page_title_browse_by_author"><![CDATA[Обсуждения {display_name}]]></string>
+	<string name="_bx_forum_page_title_browse_featured"><![CDATA[Продвинутые]]></string>
 	<string name="_bx_forum_page_title_browse_by_category"><![CDATA[Обсуждения в {category_name}]]></string>
 	<string name="_bx_forum_page_title_browse_new"><![CDATA[Новые]]></string>
     <string name="_bx_forum_page_title_browse_latest"><![CDATA[Недавние]]></string>
@@ -89,6 +90,7 @@
     <string name="_bx_forum_page_title_browse_updated"><![CDATA[Обновлённые]]></string>
     <string name="_bx_forum_page_title_sys_home"><![CDATA[Обсуждения - Домой]]></string>
     <string name="_bx_forum_page_title_home"><![CDATA[Обсуждения]]></string>
+    <string name="_bx_forum_page_block_title_featured_entries_view_extended"><![CDATA[Продвинутые Обсуждения]]></string>
     <string name="_bx_forum_page_title_sys_entries_new"><![CDATA[Новые Обсуждения]]></string>
     <string name="_bx_forum_page_title_entries_new"><![CDATA[Новые Обсуждения]]></string>
     <string name="_bx_forum_page_title_sys_entries_top"><![CDATA[ТОП Обсуждений]]></string>