AntonLV 10 лет назад
Родитель
Сommit
9facda8f55

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

@@ -42,6 +42,7 @@ class BxForumConfig extends BxBaseModTextConfig
             'FIELD_TITLE' => 'title',
             'FIELD_TEXT' => 'text',
             'FIELD_TEXT_ID' => 'discussion-text',
+        	'FIELD_CATEGORY' => 'cat',
             'FIELD_ALLOW_VIEW_TO' => 'allow_view_to',
             'FIELD_PHOTO' => 'attachments',
             'FIELD_THUMB' => '',
@@ -84,6 +85,7 @@ class BxForumConfig extends BxBaseModTextConfig
             'OBJECT_VIDEOS_TRANSCODERS' => array(),
             'OBJECT_VIEWS' => 'bx_forum',
             'OBJECT_VOTES' => '',
+        	'OBJECT_CATEGORY' => 'bx_forum_cats',
             'OBJECT_COMMENTS' => 'bx_forum',
         	'OBJECT_METATAGS' => 'bx_forum',
             'OBJECT_PRIVACY_VIEW' => 'bx_forum_allow_view_to',

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

@@ -144,6 +144,19 @@ class BxForumModule extends BxBaseModTextModule
         return true;
     }
 
+    public function serviceEntityBreadcrumb ($iContentId = 0)
+    {
+    	if (!$iContentId)
+            $iContentId = bx_process_input(bx_get('id'), BX_DATA_INT);
+        if (!$iContentId)
+            return false;
+        $aContentInfo = $this->_oDb->getContentInfoById($iContentId);
+        if (!$aContentInfo)
+            return false;
+
+		return $this->_oTemplate->entryBreadcrumb($aContentInfo);
+    }
+
     /**
      * Entry collaborators block
      */

+ 22 - 1
modules/boonex/forum/classes/BxForumTemplate.php

@@ -23,7 +23,28 @@ class BxForumTemplate extends BxBaseModTextTemplate
         parent::__construct($oConfig, $oDb);
     }
 
-    public function entryParticipants ($aContentInfo, $iMaxVisible = 2, $sFloat = 'left')
+    public function entryBreadcrumb($aContentInfo)
+    {
+        $CNF = &BxDolModule::getInstance($this->MODULE)->_oConfig->CNF;
+
+        $oPermalink = BxDolPermalinks::getInstance();
+        $oCategory = BxDolCategory::getObjectInstance($CNF['OBJECT_CATEGORY']);
+
+        $aTmplVarsItems = array(array(
+        	'url' => $oCategory->getCategoryUrl($aContentInfo[$CNF['FIELD_CATEGORY']]),
+        	'title' => $oCategory->getCategoryTitle($aContentInfo[$CNF['FIELD_CATEGORY']])
+        ), array(
+        	'url' => $oPermalink->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . $aContentInfo[$CNF['FIELD_ID']]),
+        	'title' => $aContentInfo[$CNF['FIELD_TITLE']]
+        ));
+
+    	return $this->parseHtmlByName('breadcrumb.html', array(
+    		'url_home' => BX_DOL_URL_ROOT . $oPermalink->permalink($CNF['URL_HOME']),
+    		'bx_repeat:items' => $aTmplVarsItems
+    	));
+    }
+
+    public function entryParticipants($aContentInfo, $iMaxVisible = 2, $sFloat = 'left')
     {
         $oModule = BxDolModule::getInstance($this->MODULE);
         $CNF = &$oModule->_oConfig->CNF;

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

@@ -60,6 +60,7 @@
 	<string name="_bx_forum_page_block_title_entry_text"><![CDATA[Text]]></string>
     <string name="_bx_forum_page_block_title_entry_author"><![CDATA[Author]]></string>
     <string name="_bx_forum_page_block_title_entry_actions"><![CDATA[Actions]]></string>
+    <string name="_bx_forum_page_block_title_entry_breadcrumb"><![CDATA[Breadcrumb]]></string>
     <string name="_bx_forum_page_block_title_entry_comments"><![CDATA[Replies ({0})]]></string>
     <string name="_bx_forum_page_block_title_entry_participants"><![CDATA[Participants]]></string>
     <string name="_bx_forum_page_title_browse"><![CDATA[Forum]]></string>

+ 3 - 2
modules/boonex/forum/install/sql/enable.sql

@@ -45,9 +45,10 @@ INSERT INTO `sys_objects_page`(`object`, `uri`, `title_system`, `title`, `module
 ('bx_forum_view_entry', 'view-discussion', '_bx_forum_page_title_sys_view_entry', '_bx_forum_page_title_view_entry', @sName, 10, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxForumPageEntry', 'modules/boonex/forum/classes/BxForumPageEntry.php');
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
-('bx_forum_view_entry', 4, @sName, '_bx_forum_page_block_title_entry_text', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:17:"entity_text_block";}', 0, 0, 1, 0),
-('bx_forum_view_entry', 3, @sName, '_bx_forum_page_block_title_entry_participants', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:19:"entity_participants";}', 0, 0, 1, 0),
+('bx_forum_view_entry', 1, @sName, '_bx_forum_page_block_title_entry_breadcrumb', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:17:"entity_breadcrumb";}', 0, 0, 1, 0),
 ('bx_forum_view_entry', 2, @sName, '_bx_forum_page_block_title_entry_author', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:13:"entity_author";}', 0, 0, 1, 0),
+('bx_forum_view_entry', 3, @sName, '_bx_forum_page_block_title_entry_participants', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:19:"entity_participants";}', 0, 0, 1, 0),
+('bx_forum_view_entry', 4, @sName, '_bx_forum_page_block_title_entry_text', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:17:"entity_text_block";}', 0, 0, 1, 0),
 ('bx_forum_view_entry', 4, @sName, '_bx_forum_page_block_title_entry_attachments', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:18:"entity_attachments";}', 0, 0, 1, 1),
 ('bx_forum_view_entry', 4, @sName, '_bx_forum_page_block_title_entry_comments', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:8:"bx_forum";s:6:"method";s:15:"entity_comments";}', 0, 0, 1, 2);
 

+ 6 - 0
modules/boonex/forum/template/breadcrumb.html

@@ -0,0 +1,6 @@
+<div class="bx-forum-breadcrumb">
+	<a href="__url_home__"><bx_text:_bx_forum /></a>
+	<bx_repeat:items>
+		<i class="sys-icon chevron-right bx-def-margin-sec-leftright"></i><a href="__url__">__title__</a>
+	</bx_repeat:items>
+</div>

+ 10 - 0
modules/boonex/forum/template/css/main.css

@@ -1,5 +1,15 @@
 @import url(../../../../base/text/template/css/main.css);
 
+/*-- Breadcrumb --*/
+div.bx-forum-breadcrumb a,
+div.bx-forum-breadcrumb i {
+	display: inline-block;
+	vertical-align: middle;
+
+	height: 1.4rem;
+	line-height: 1.4rem;
+}
+
 /*-- Participants --*/
 .bx-forum-participants {
     white-space:nowrap;

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

@@ -60,6 +60,7 @@
 	<string name="_bx_forum_page_block_title_entry_text"><![CDATA[Текст]]></string>
     <string name="_bx_forum_page_block_title_entry_author"><![CDATA[Автор]]></string>
     <string name="_bx_forum_page_block_title_entry_actions"><![CDATA[Действия]]></string>
+    <string name="_bx_forum_page_block_title_entry_breadcrumb"><![CDATA["Хлебные крошки"]]></string>
     <string name="_bx_forum_page_block_title_entry_comments"><![CDATA[Ответов ({0})]]></string>
     <string name="_bx_forum_page_block_title_entry_participants"><![CDATA[Участники]]></string>
     <string name="_bx_forum_page_title_browse"><![CDATA[Форум]]></string>

+ 9 - 0
template/scripts/BxBaseCategory.php

@@ -25,6 +25,15 @@ class BxBaseCategory extends BxDolCategory
             $this->_oTemplate = BxDolTemplate::getInstance();
     }
 
+    public function getCategoryTitle($sValue)
+    {
+    	$a = BxDolForm::getDataItems($this->_aObject['list_name']);
+        if (!$a || !isset($a[$sValue]))
+            return '';
+
+		return $a[$sValue];
+    }
+
     public function getCategoryUrl($sValue)
     {
         $sUrl = BX_DOL_URL_ROOT . 'searchKeyword.php?cat=' . rawurlencode($this->getObjectName()) . '&keyword=' . rawurlencode($sValue);