Просмотр исходного кода

Ticket #4300 - Add "Summary" to Posts.

AntonLV 2 лет назад
Родитель
Сommit
55d3bd627c

+ 9 - 1
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -3966,12 +3966,15 @@ class BxBaseModGeneralModule extends BxDolModule
             else if(isset($CNF['FIELD_TEXT']) && isset($aContentInfo[$CNF['FIELD_TEXT']]))
                 $sTitle = strmaxtextlen($aContentInfo[$CNF['FIELD_TEXT']], 20, '...');
 
+            $sAbstract = isset($CNF['FIELD_ABSTRACT']) && isset($aContentInfo[$CNF['FIELD_ABSTRACT']]) ? $aContentInfo[$CNF['FIELD_ABSTRACT']] : '';
+
             $sText = isset($CNF['FIELD_TEXT']) && isset($aContentInfo[$CNF['FIELD_TEXT']]) ? $aContentInfo[$CNF['FIELD_TEXT']] : '';
             $sText = BxTemplFunctions::getInstance()->getStringWithLimitedLength(strip_tags($sText), 240);
 
             return [
                 'url' => $sUrl,
                 'title' => $sTitle,
+                'abstract' => $sAbstract,
                 'text' => $sText,
                 'images' => $aImages
             ];
@@ -3993,7 +3996,12 @@ class BxBaseModGeneralModule extends BxDolModule
             $sTitle = strmaxtextlen($aContentInfo[$CNF['FIELD_TEXT']], 20, '...');
 
         //--- Text
-        $sText = isset($CNF['FIELD_TEXT']) && isset($aContentInfo[$CNF['FIELD_TEXT']]) ? $aContentInfo[$CNF['FIELD_TEXT']] : '';
+        $sText = '';
+        if(isset($CNF['FIELD_ABSTRACT']) && isset($aContentInfo[$CNF['FIELD_ABSTRACT']]))
+            $sText = $aContentInfo[$CNF['FIELD_ABSTRACT']];
+        if(empty($sText) && isset($CNF['FIELD_TEXT']) && isset($aContentInfo[$CNF['FIELD_TEXT']]))
+            $sText = $aContentInfo[$CNF['FIELD_TEXT']];
+
         if(!empty($CNF['OBJECT_METATAGS']) && is_string($sText)) {
             $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS']);
             $sText = $oMetatags->metaParse($aContentInfo[$CNF['FIELD_ID']], $sText);

+ 26 - 1
modules/base/general/classes/BxBaseModGeneralTemplate.php

@@ -132,6 +132,20 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
         return $sResult;
     }
 
+    public function getAbstract($aData, $mixedProcessOutput = BX_DATA_TEXT)
+    {
+        $CNF = &$this->getModule()->_oConfig->CNF;
+
+        if(!isset($CNF['FIELD_ABSTRACT']) || !isset($aData[$CNF['FIELD_ABSTRACT']]))
+            return '';
+
+        $sResult = $aData[$CNF['FIELD_ABSTRACT']];
+        if($mixedProcessOutput !== false && !empty($sResult))
+            $sResult = bx_process_output($sResult, (int)$mixedProcessOutput);
+
+        return $sResult;
+    }
+
     public function getText($aData, $mixedProcessOutput = BX_DATA_HTML)
     {
         $CNF = &$this->getModule()->_oConfig->CNF;
@@ -148,6 +162,10 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
 
     protected function getSummary($aData, $sTitle = '', $sText = '', $sUrl = '')
     {
+        $sAbstract = $this->getAbstract($aData);
+        if(!empty($sAbstract))
+            return $sAbstract;
+
         $CNF = &$this->getModule()->_oConfig->CNF;
         if(empty($CNF['PARAM_CHARS_SUMMARY']))
             return '';
@@ -200,8 +218,15 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
 
         $aVars = $aData;
         $aVars['entry_title'] = $this->getTitle($aData);
+        $aVars['entry_abstract'] = $this->getAbstract($aData);
+        $aVars['bx_if:show_entry_abstract'] = [
+            'condition' => !empty($aVars['entry_abstract']),
+            'content' => [
+                'entry_abstract' => $aVars['entry_abstract']
+            ]
+        ];
         $aVars['entry_text'] = $this->getText($aData);
-		$aVars['badges'] = $this->getModule()->serviceGetBadges($aData[$CNF['FIELD_ID']]);
+        $aVars['badges'] = $this->getModule()->serviceGetBadges($aData[$CNF['FIELD_ID']]);
         if (!empty($CNF['OBJECT_METATAGS'])) {
             $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS']);
 

+ 4 - 1
modules/base/text/template/entry-text.html

@@ -13,7 +13,10 @@
             <h1>__entry_title__</h1>
             <div class="bx-base-bages-container absolute flex -translate-y-5/4">__badges__</div>
         </div>
-        <div class="bx-base-text-text ">__entry_text__</div>
+        <bx_if:show_entry_abstract>
+            <div class="bx-base-text-abstract mb-3 md:mb-4 lg:mb-6 text-gray-600 dark:text-gray-400 text-lg">__entry_abstract__</div>
+        </bx_if:show_entry_abstract>
+        <div class="bx-base-text-text">__entry_text__</div>
     </div>
     <bx_if:show_links>
         <div class="__style_prefix__-item-links">

+ 1 - 0
modules/boonex/posts/classes/BxPostsConfig.php

@@ -37,6 +37,7 @@ class BxPostsConfig extends BxBaseModTextConfig
             'FIELD_CHANGED' => 'changed',
             'FIELD_PUBLISHED' => 'published',
             'FIELD_TITLE' => 'title',
+            'FIELD_ABSTRACT' => 'abstract',
             'FIELD_TEXT' => 'text',
             'FIELD_TEXT_ID' => 'post-text',
             'FIELD_CATEGORY' => 'cat',

+ 4 - 4
modules/boonex/posts/classes/BxPostsSearchResult.php

@@ -21,13 +21,13 @@ class BxPostsSearchResult extends BxBaseModTextSearchResult
             'object_metatags' => 'bx_posts',
             'title' => _t('_bx_posts_page_title_browse'),
             'table' => 'bx_posts_posts',
-            'ownFields' => array('id', 'title', 'text', 'thumb', 'thumb_data', 'author', 'added'),
+            'ownFields' => array('id', 'title', 'abstract', 'text', 'thumb', 'thumb_data', 'author', 'added'),
             'searchFields' => array(),
             'restriction' => array(
                 'author' => array('value' => '', 'field' => 'author', 'operator' => '='),
-        		'featured' => array('value' => '', 'field' => 'featured', 'operator' => '<>'),
-        		'status' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
-        		'statusAdmin' => array('value' => 'active', 'field' => 'status_admin', 'operator' => '='),
+                'featured' => array('value' => '', 'field' => 'featured', 'operator' => '<>'),
+                'status' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
+                'statusAdmin' => array('value' => 'active', 'field' => 'status_admin', 'operator' => '='),
             ),
             'paginate' => array('perPage' => getParam('bx_posts_per_page_browse'), 'start' => 0),
             'sorting' => 'last',

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

@@ -34,6 +34,8 @@
     <string name="_bx_posts_form_entry_input_sys_multicat"><![CDATA[Categories]]></string>
     <string name="_bx_posts_form_entry_input_multicat"><![CDATA[Categories]]></string>
     <string name="_bx_posts_form_entry_input_multicat_err"><![CDATA[Please select category]]></string>
+    <string name="_bx_posts_form_entry_input_sys_abstract"><![CDATA[Summary]]></string>
+    <string name="_bx_posts_form_entry_input_abstract"><![CDATA[Summary]]></string>
     <string name="_bx_posts_form_entry_input_sys_text"><![CDATA[Text]]></string>
     <string name="_bx_posts_form_entry_input_text"><![CDATA[Text]]></string>
     <string name="_bx_posts_form_entry_input_text_err"><![CDATA[Text field can't be empty]]></string>

+ 34 - 30
modules/boonex/posts/install/sql/install.sql

@@ -10,6 +10,7 @@ CREATE TABLE IF NOT EXISTS `bx_posts_posts` (
   `title` varchar(255) NOT NULL,
   `cat` int(11) NOT NULL,
   `multicat` text NOT NULL,
+  `abstract` text NOT NULL,
   `text` mediumtext NOT NULL,
   `labels` text NOT NULL,
   `location` text NOT NULL,
@@ -506,6 +507,7 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_posts', 'bx_posts', 'sounds', 'a:1:{i:0;s:21:"bx_posts_sounds_html5";}', 'a:1:{s:21:"bx_posts_sounds_html5";s:25:"_sys_uploader_html5_title";}', 0, 'files', '_bx_posts_form_entry_input_sys_sounds', '_bx_posts_form_entry_input_sounds', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_posts', 'bx_posts', 'files', 'a:1:{i:0;s:20:"bx_posts_files_html5";}', 'a:1:{s:20:"bx_posts_files_html5";s:25:"_sys_uploader_html5_title";}', 0, 'files', '_bx_posts_form_entry_input_sys_files', '_bx_posts_form_entry_input_files', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_posts', 'bx_posts', 'polls', '', '', 0, 'custom', '_bx_posts_form_entry_input_sys_polls', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_posts', 'bx_posts', 'abstract', '', '', 0, 'textarea', '_bx_posts_form_entry_input_sys_abstract', '_bx_posts_form_entry_input_abstract', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
 ('bx_posts', 'bx_posts', 'text', '', '', 0, 'textarea', '_bx_posts_form_entry_input_sys_text', '_bx_posts_form_entry_input_text', '', 1, 0, 2, '', '', '', 'Avail', '', '_bx_posts_form_entry_input_text_err', 'XssHtml', '', 1, 0),
 ('bx_posts', 'bx_posts', 'title', '', '', 0, 'text', '_bx_posts_form_entry_input_sys_title', '_bx_posts_form_entry_input_title', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_posts_form_entry_input_title_err', 'Xss', '', 1, 0),
 ('bx_posts', 'bx_posts', 'cat', '', '#!bx_posts_cats', 0, 'select', '_bx_posts_form_entry_input_sys_cat', '_bx_posts_form_entry_input_cat', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_posts_form_entry_input_cat_err', 'Xss', '', 1, 0),
@@ -524,21 +526,22 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_posts_entry_add', 'delete_confirm', 2147483647, 0, 1),
 ('bx_posts_entry_add', 'title', 2147483647, 1, 2),
 ('bx_posts_entry_add', 'cat', 2147483647, 1, 3),
-('bx_posts_entry_add', 'text', 2147483647, 1, 4),
-('bx_posts_entry_add', 'attachments', 2147483647, 1, 5),
-('bx_posts_entry_add', 'link', 2147483647, 1, 6),
-('bx_posts_entry_add', 'pictures', 2147483647, 1, 7),
-('bx_posts_entry_add', 'videos', 2147483647, 1, 8),
-('bx_posts_entry_add', 'sounds', 2147483647, 1, 9),
-('bx_posts_entry_add', 'files', 2147483647, 1, 10),
-('bx_posts_entry_add', 'polls', 2147483647, 1, 11),
-('bx_posts_entry_add', 'covers', 2147483647, 1, 12),
-('bx_posts_entry_add', 'allow_view_to', 2147483647, 1, 13),
-('bx_posts_entry_add', 'cf', 2147483647, 1, 14),
-('bx_posts_entry_add', 'location', 2147483647, 1, 15),
-('bx_posts_entry_add', 'published', 192, 0, 16),
-('bx_posts_entry_add', 'allow_comments', 192, 1, 17),
-('bx_posts_entry_add', 'do_publish', 2147483647, 1, 18),
+('bx_posts_entry_add', 'abstract', 2147483647, 1, 4),
+('bx_posts_entry_add', 'text', 2147483647, 1, 5),
+('bx_posts_entry_add', 'attachments', 2147483647, 1, 6),
+('bx_posts_entry_add', 'link', 2147483647, 1, 7),
+('bx_posts_entry_add', 'pictures', 2147483647, 1, 8),
+('bx_posts_entry_add', 'videos', 2147483647, 1, 9),
+('bx_posts_entry_add', 'sounds', 2147483647, 1, 10),
+('bx_posts_entry_add', 'files', 2147483647, 1, 11),
+('bx_posts_entry_add', 'polls', 2147483647, 1, 12),
+('bx_posts_entry_add', 'covers', 2147483647, 1, 13),
+('bx_posts_entry_add', 'allow_view_to', 2147483647, 1, 14),
+('bx_posts_entry_add', 'cf', 2147483647, 1, 15),
+('bx_posts_entry_add', 'location', 2147483647, 1, 16),
+('bx_posts_entry_add', 'published', 192, 0, 17),
+('bx_posts_entry_add', 'allow_comments', 192, 1, 18),
+('bx_posts_entry_add', 'do_publish', 2147483647, 1, 19),
 
 ('bx_posts_entry_delete', 'delete_confirm', 2147483647, 1, 1),
 ('bx_posts_entry_delete', 'do_submit', 2147483647, 1, 2),
@@ -547,21 +550,22 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_posts_entry_edit', 'delete_confirm', 2147483647, 0, 2),
 ('bx_posts_entry_edit', 'title', 2147483647, 1, 3),
 ('bx_posts_entry_edit', 'cat', 2147483647, 1, 4),
-('bx_posts_entry_edit', 'text', 2147483647, 1, 5),
-('bx_posts_entry_edit', 'attachments', 2147483647, 1, 6),
-('bx_posts_entry_edit', 'link', 2147483647, 1, 7),
-('bx_posts_entry_edit', 'pictures', 2147483647, 1, 8),
-('bx_posts_entry_edit', 'videos', 2147483647, 1, 9),
-('bx_posts_entry_edit', 'sounds', 2147483647, 1, 10),
-('bx_posts_entry_edit', 'files', 2147483647, 1, 11),
-('bx_posts_entry_edit', 'polls', 2147483647, 1, 12),
-('bx_posts_entry_edit', 'covers', 2147483647, 1, 13),
-('bx_posts_entry_edit', 'allow_view_to', 2147483647, 1, 14),
-('bx_posts_entry_edit', 'cf', 2147483647, 1, 15),
-('bx_posts_entry_edit', 'location', 2147483647, 1, 16),
-('bx_posts_entry_edit', 'allow_comments', 192, 1, 17),
-('bx_posts_entry_edit', 'published', 192, 0, 18),
-('bx_posts_entry_edit', 'do_submit', 2147483647, 1, 19),
+('bx_posts_entry_edit', 'abstract', 2147483647, 1, 5),
+('bx_posts_entry_edit', 'text', 2147483647, 1, 6),
+('bx_posts_entry_edit', 'attachments', 2147483647, 1, 7),
+('bx_posts_entry_edit', 'link', 2147483647, 1, 8),
+('bx_posts_entry_edit', 'pictures', 2147483647, 1, 9),
+('bx_posts_entry_edit', 'videos', 2147483647, 1, 10),
+('bx_posts_entry_edit', 'sounds', 2147483647, 1, 11),
+('bx_posts_entry_edit', 'files', 2147483647, 1, 12),
+('bx_posts_entry_edit', 'polls', 2147483647, 1, 13),
+('bx_posts_entry_edit', 'covers', 2147483647, 1, 14),
+('bx_posts_entry_edit', 'allow_view_to', 2147483647, 1, 15),
+('bx_posts_entry_edit', 'cf', 2147483647, 1, 16),
+('bx_posts_entry_edit', 'location', 2147483647, 1, 17),
+('bx_posts_entry_edit', 'allow_comments', 192, 1, 18),
+('bx_posts_entry_edit', 'published', 192, 0, 19),
+('bx_posts_entry_edit', 'do_submit', 2147483647, 1, 20),
 
 ('bx_posts_entry_view', 'cat', 2147483647, 1, 1),
 ('bx_posts_entry_view', 'added', 2147483647, 1, 2),

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

@@ -34,6 +34,8 @@
     <string name="_bx_posts_form_entry_input_sys_multicat"><![CDATA[Категории]]></string>
     <string name="_bx_posts_form_entry_input_multicat"><![CDATA[Категории]]></string>
     <string name="_bx_posts_form_entry_input_multicat_err"><![CDATA[Нужно обязательно выбрать категории]]></string>
+    <string name="_bx_posts_form_entry_input_sys_abstract"><![CDATA[Сводка]]></string>
+    <string name="_bx_posts_form_entry_input_abstract"><![CDATA[Сводка]]></string>
     <string name="_bx_posts_form_entry_input_sys_text"><![CDATA[Текст]]></string>
     <string name="_bx_posts_form_entry_input_text"><![CDATA[Текст]]></string>
     <string name="_bx_posts_form_entry_input_text_err"><![CDATA[Поле для Текста не может быть пустым]]></string>