]> git.mxchange.org Git - friendica.git/commitdiff
Use full text search
authorMichael <heluecht@pirati.ca>
Thu, 21 Sep 2023 23:27:05 +0000 (23:27 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 21 Sep 2023 23:27:05 +0000 (23:27 +0000)
database.sql
doc/database/db_post-engagement.md
src/Content/Text/BBCode.php
src/Model/Post/Engagement.php
src/Module/Conversation/Timeline.php
src/Module/Settings/Channels.php
static/dbstructure.config.php
view/lang/C/messages.po
view/templates/settings/channels.tpl
view/templates/settings/display.tpl

index 8598f6fe602cf7504241ed256677e85bb7a21422..25f94cac85bbe11cca9a411e0eba4d13487396ad 100644 (file)
@@ -1327,6 +1327,7 @@ CREATE TABLE IF NOT EXISTS `post-engagement` (
        `contact-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Person, organisation, news, community, relay',
        `media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio',
        `language` varbinary(128) COMMENT 'Language information about this post',
+       `searchtext` mediumtext COMMENT 'Simplified text for the full text search',
        `created` datetime COMMENT '',
        `restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network',
        `comments` mediumint unsigned COMMENT 'Number of comments',
@@ -1334,6 +1335,7 @@ CREATE TABLE IF NOT EXISTS `post-engagement` (
         PRIMARY KEY(`uri-id`),
         INDEX `owner-id` (`owner-id`),
         INDEX `created` (`created`),
+        FULLTEXT INDEX `searchtext` (`searchtext`),
        FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
        FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Engagement data per post';
index 19cb64d54fb58f7a3e155447d2bff7eebafdb27b..edca447f3d4ddbbdded372007ef692cd8fd6ffa7 100644 (file)
@@ -13,6 +13,7 @@ Fields
 | contact-type | Person, organisation, news, community, relay                          | tinyint            | NO   |     | 0       |       |
 | media-type   | Type of media in a bit array (1 = image, 2 = video, 4 = audio         | tinyint            | NO   |     | 0       |       |
 | language     | Language information about this post                                  | varbinary(128)     | YES  |     | NULL    |       |
+| searchtext   | Simplified text for the full text search                              | mediumtext         | YES  |     | NULL    |       |
 | created      |                                                                       | datetime           | YES  |     | NULL    |       |
 | restricted   | If true, this post is either unlisted or not from a federated network | boolean            | NO   |     | 0       |       |
 | comments     | Number of comments                                                    | mediumint unsigned | YES  |     | NULL    |       |
@@ -21,11 +22,12 @@ Fields
 Indexes
 ------------
 
-| Name     | Fields   |
-| -------- | -------- |
-| PRIMARY  | uri-id   |
-| owner-id | owner-id |
-| created  | created  |
+| Name       | Fields               |
+| ---------- | -------------------- |
+| PRIMARY    | uri-id               |
+| owner-id   | owner-id             |
+| created    | created              |
+| searchtext | FULLTEXT, searchtext |
 
 Foreign Keys
 ------------
index ab7300da18b5c3e4f35b4bed9745374aee45bde5..a981f97d2804c4678152b640f43d01af595c6de9 100644 (file)
@@ -230,6 +230,7 @@ class BBCode
        {
                DI::profiler()->startRecording('rendering');
                // Remove pictures in advance to avoid unneeded proxy calls
+               $text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", ' ', $text);
                $text = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", ' $2 ', $text);
                $text = preg_replace("/\[img.*?\[\/img\]/ism", ' ', $text);
 
index 80f1247a656b89ef6e95139f5248f6d436c5ee48..3df364b90779597a1fa3e5c7e737d3abe414f903 100644 (file)
@@ -21,6 +21,7 @@
 
 namespace Friendica\Model\Post;
 
+use Friendica\Content\Text\BBCode;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\Database;
@@ -52,7 +53,7 @@ class Engagement
                        return;
                }
 
-               $parent = Post::selectFirst(['created', 'owner-id', 'uid', 'private', 'contact-contact-type', 'language'], ['uri-id' => $item['parent-uri-id']]);
+               $parent = Post::selectFirst(['uri-id', 'created', 'owner-id', 'uid', 'private', 'contact-contact-type', 'language', 'title', 'content-warning', 'body'], ['uri-id' => $item['parent-uri-id']]);
 
                if ($parent['created'] < DateTimeFormat::utc('now - ' . DI::config()->get('channel', 'engagement_hours') . ' hour')) {
                        Logger::debug('Post is too old', ['uri-id' => $item['uri-id'], 'parent-uri-id' => $item['parent-uri-id'], 'created' => $parent['created']]);
@@ -87,6 +88,7 @@ class Engagement
                        'contact-type' => $parent['contact-contact-type'],
                        'media-type'   => $mediatype,
                        'language'     => $parent['language'],
+                       'searchtext'   => self::getSearchText($parent),
                        'created'      => $parent['created'],
                        'restricted'   => !in_array($item['network'], Protocol::FEDERATED) || ($parent['private'] != Item::PUBLIC),
                        'comments'     => DBA::count('post', ['parent-uri-id' => $item['parent-uri-id'], 'gravity' => Item::GRAVITY_COMMENT]),
@@ -104,6 +106,20 @@ class Engagement
                Logger::debug('Engagement stored', ['fields' => $engagement, 'ret' => $ret]);
        }
 
+       private static function getSearchText(array $item): string
+       {
+               $body = $item['title'] . "\n" . $item['content-warning'] . "\n" . $item['body'] . "\n";
+               $body = Post\Media::addAttachmentsToBody($item['uri-id'], $body);
+               $text = BBCode::toPlaintext($body, false);
+
+               do {
+                       $oldtext = $text;
+                       $text = str_replace(['  ', "\n", "\r"], ' ', $text);
+               } while ($oldtext != $text);
+
+               return $text;
+       }
+
        private static function getMediaType(int $uri_id): int
        {
                $media = Post\Media::getByURIId($uri_id);
index 9c53634ea8825315cfa8884b742278a61c77a729..44149d1ecc0edb18752b9232359bdc6f51342618 100644 (file)
@@ -376,8 +376,7 @@ class Timeline extends BaseModule
                $condition = [];
 
                if (!empty($channel->fullTextSearch)) {
-                       $first     = $this->database->selectFirst('post-engagement', ['uri-id']);
-                       $condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `post-content` WHERE `uri-id` >= ? AND MATCH (`title`, `content-warning`, `body`) AGAINST (? IN BOOLEAN MODE))", $first['uri-id'], $channel->fullTextSearch]);
+                       $condition = DBA::mergeConditions($condition, ["MATCH (`searchtext`) AGAINST (? IN BOOLEAN MODE)", $channel->fullTextSearch]);
                }
 
                if (!empty($channel->includeTags)) {
index 490d9f9ab3ae9f055d44a7784fd6047430030d41..ca9e8d168667f6539242d9dbc0bf9ae2978cb77a 100644 (file)
@@ -69,7 +69,7 @@ class Channels extends BaseSettings
                                'uid'              => $uid,
                                'include-tags'     => $this->cleanTags($request['new_include_tags']),
                                'exclude-tags'     => $this->cleanTags($request['new_exclude_tags']),
-                               'full-text-search' => null, // Currently not supported for performance reasons
+                               'full-text-search' => $this->cleanTags($request['new_text_search']),
                                'media-type'       => ($request['new_image'] ? 1 : 0) | ($request['new_video'] ? 2 : 0) | ($request['new_audio'] ? 4 : 0),
                        ]);
                        $saved = $this->channel->save($channel);
@@ -92,7 +92,7 @@ class Channels extends BaseSettings
                                'uid'              => $uid,
                                'include-tags'     => $this->cleanTags($request['include_tags'][$id]),
                                'exclude-tags'     => $this->cleanTags($request['exclude_tags'][$id]),
-                               'full-text-search' => null, // Currently not supported for performance reasons
+                               'full-text-search' => $this->cleanTags($request['text_search'][$id]),
                                'media-type'       => ($request['image'][$id] ? 1 : 0) | ($request['video'][$id] ? 2 : 0) | ($request['audio'][$id] ? 4 : 0),
                        ]);
                        $saved = $this->channel->save($channel);
@@ -119,6 +119,7 @@ class Channels extends BaseSettings
                                'access_key'   => ["access_key[$channel->code]", $this->t("Access Key"), $channel->accessKey],
                                'include_tags' => ["include_tags[$channel->code]", $this->t("Include Tags"), $channel->includeTags],
                                'exclude_tags' => ["exclude_tags[$channel->code]", $this->t("Exclude Tags"), $channel->excludeTags],
+                               'text_search'  => ["text_search[$channel->code]", $this->t("Full Text Search"), $channel->fullTextSearch],
                                'image'        => ["image[$channel->code]", $this->t("Images"), $channel->mediaType & 1],
                                'video'        => ["video[$channel->code]", $this->t("Videos"), $channel->mediaType & 2],
                                'audio'        => ["audio[$channel->code]", $this->t("Audio"), $channel->mediaType & 4],
@@ -133,6 +134,7 @@ class Channels extends BaseSettings
                        'access_key'   => ["new_access_key", $this->t("Access Key"), '', $this->t('When you want to access this channel via an access key, you can define it here. Pay attentioon to not use an already used one.')],
                        'include_tags' => ["new_include_tags", $this->t("Include Tags"), '', $this->t('Comma separated list of tags. A post will be used when it contains any of the listed tags.')],
                        'exclude_tags' => ["new_exclude_tags", $this->t("Exclude Tags"), '', $this->t('Comma separated list of tags. If a post contain any of these tags, then it will not be part of nthis channel.')],
+                       'text_search'  => ["new_text_search", $this->t("Full Text Search"), '', $this->t('Search terms for the body.')],
                        'image'        => ['new_image', $this->t("Images"), false, $this->t("Check to display images in the channel.")],
                        'video'        => ["new_video", $this->t("Videos"), false, $this->t("Check to display videos in the channel.")],
                        'audio'        => ["new_audio", $this->t("Audio"), false, $this->t("Check to display audio in the channel.")],
index e918a44913896e1a2771fa5d0dce1ec9f25c23e8..22c399736c23dbea3920f89a381969baf12e284d 100644 (file)
@@ -1350,6 +1350,7 @@ return [
                        "contact-type" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => "Person, organisation, news, community, relay"],
                        "media-type" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => "Type of media in a bit array (1 = image, 2 = video, 4 = audio"],
                        "language" => ["type" => "varbinary(128)", "comment" => "Language information about this post"],
+                       "searchtext" => ["type" => "mediumtext", "comment" => "Simplified text for the full text search"],
                        "created" => ["type" => "datetime", "comment" => ""],
                        "restricted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "If true, this post is either unlisted or not from a federated network"],
                        "comments" => ["type" => "mediumint unsigned", "comment" => "Number of comments"],
@@ -1359,6 +1360,7 @@ return [
                        "PRIMARY" => ["uri-id"],
                        "owner-id" => ["owner-id"],
                        "created" => ["created"],
+                       "searchtext" => ["FULLTEXT", "searchtext"],
                ]
        ],
        "post-history" => [
index 12f4b91404ae8bc24bac4be88271b110ad1908d3..b35273d544ba0ed8ebee5c22ce36cf501ea21a09 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 2023.09-dev\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-21 06:47+0000\n"
+"POT-Creation-Date: 2023-09-21 23:26+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -70,7 +70,7 @@ msgstr ""
 #: src/Module/Settings/Account.php:50 src/Module/Settings/Account.php:408
 #: src/Module/Settings/Channels.php:55 src/Module/Settings/Channels.php:111
 #: src/Module/Settings/Delegation.php:41 src/Module/Settings/Delegation.php:71
-#: src/Module/Settings/Display.php:73 src/Module/Settings/Display.php:160
+#: src/Module/Settings/Display.php:73 src/Module/Settings/Display.php:176
 #: src/Module/Settings/Profile/Photo/Crop.php:165
 #: src/Module/Settings/Profile/Photo/Index.php:111
 #: src/Module/Settings/RemoveMe.php:117 src/Module/Settings/UserExport.php:80
@@ -385,7 +385,7 @@ msgstr ""
 
 #: mod/notes.php:57 src/Content/Text/HTML.php:859
 #: src/Module/Admin/Storage.php:142 src/Module/Filer/SaveTag.php:74
-#: src/Module/Post/Edit.php:129 src/Module/Settings/Channels.php:144
+#: src/Module/Post/Edit.php:129 src/Module/Settings/Channels.php:146
 msgid "Save"
 msgstr ""
 
@@ -1548,7 +1548,7 @@ msgid "Posts from accounts that are followed by accounts that you follow"
 msgstr ""
 
 #: src/Content/Conversation/Factory/Timeline.php:85
-#: src/Module/Settings/Channels.php:122 src/Module/Settings/Channels.php:136
+#: src/Module/Settings/Channels.php:123 src/Module/Settings/Channels.php:138
 msgid "Images"
 msgstr ""
 
@@ -1557,7 +1557,7 @@ msgid "Posts with images"
 msgstr ""
 
 #: src/Content/Conversation/Factory/Timeline.php:86
-#: src/Module/Settings/Channels.php:124 src/Module/Settings/Channels.php:138
+#: src/Module/Settings/Channels.php:125 src/Module/Settings/Channels.php:140
 msgid "Audio"
 msgstr ""
 
@@ -1566,7 +1566,7 @@ msgid "Posts with audio"
 msgstr ""
 
 #: src/Content/Conversation/Factory/Timeline.php:87
-#: src/Module/Settings/Channels.php:123 src/Module/Settings/Channels.php:137
+#: src/Module/Settings/Channels.php:124 src/Module/Settings/Channels.php:139
 msgid "Videos"
 msgstr ""
 
@@ -1931,7 +1931,7 @@ msgstr ""
 #: src/Content/Nav.php:233 src/Content/Nav.php:293
 #: src/Module/BaseProfile.php:85 src/Module/BaseProfile.php:88
 #: src/Module/BaseProfile.php:96 src/Module/BaseProfile.php:99
-#: src/Module/Settings/Display.php:267 view/theme/frio/theme.php:236
+#: src/Module/Settings/Display.php:294 view/theme/frio/theme.php:236
 #: view/theme/frio/theme.php:240
 msgid "Calendar"
 msgstr ""
@@ -2174,39 +2174,39 @@ msgstr ""
 msgid "last"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:696 src/Content/Text/BBCode.php:1636
-#: src/Content/Text/BBCode.php:1637
+#: src/Content/Text/BBCode.php:697 src/Content/Text/BBCode.php:1637
+#: src/Content/Text/BBCode.php:1638
 msgid "Image/photo"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:914
+#: src/Content/Text/BBCode.php:915
 #, php-format
 msgid ""
 "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:939 src/Model/Item.php:3745
+#: src/Content/Text/BBCode.php:940 src/Model/Item.php:3745
 #: src/Model/Item.php:3751 src/Model/Item.php:3752
 msgid "Link to source"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1543 src/Content/Text/HTML.php:904
+#: src/Content/Text/BBCode.php:1544 src/Content/Text/HTML.php:904
 msgid "Click to open/close"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1576
+#: src/Content/Text/BBCode.php:1577
 msgid "$1 wrote:"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1641 src/Content/Text/BBCode.php:1642
+#: src/Content/Text/BBCode.php:1642 src/Content/Text/BBCode.php:1643
 msgid "Encrypted content"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1901
+#: src/Content/Text/BBCode.php:1902
 msgid "Invalid source protocol"
 msgstr ""
 
-#: src/Content/Text/BBCode.php:1920
+#: src/Content/Text/BBCode.php:1921
 msgid "Invalid link protocol"
 msgstr ""
 
@@ -2366,8 +2366,8 @@ msgstr ""
 msgid "All"
 msgstr ""
 
-#: src/Content/Widget.php:577 src/Module/BaseSettings.php:125
-#: src/Module/Settings/Channels.php:140 src/Module/Settings/Display.php:266
+#: src/Content/Widget.php:585 src/Module/BaseSettings.php:125
+#: src/Module/Settings/Channels.php:142 src/Module/Settings/Display.php:293
 msgid "Channels"
 msgstr ""
 
@@ -2826,37 +2826,37 @@ msgid "Could not connect to database."
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:430
-#: src/Module/Settings/Display.php:235
+#: src/Module/Settings/Display.php:262
 msgid "Monday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:431
-#: src/Module/Settings/Display.php:236
+#: src/Module/Settings/Display.php:263
 msgid "Tuesday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:432
-#: src/Module/Settings/Display.php:237
+#: src/Module/Settings/Display.php:264
 msgid "Wednesday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:433
-#: src/Module/Settings/Display.php:238
+#: src/Module/Settings/Display.php:265
 msgid "Thursday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:434
-#: src/Module/Settings/Display.php:239
+#: src/Module/Settings/Display.php:266
 msgid "Friday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:435
-#: src/Module/Settings/Display.php:240
+#: src/Module/Settings/Display.php:267
 msgid "Saturday"
 msgstr ""
 
 #: src/Core/L10n.php:476 src/Model/Event.php:429
-#: src/Module/Settings/Display.php:234
+#: src/Module/Settings/Display.php:261
 msgid "Sunday"
 msgstr ""
 
@@ -3301,17 +3301,17 @@ msgid "today"
 msgstr ""
 
 #: src/Model/Event.php:463 src/Module/Calendar/Show.php:129
-#: src/Module/Settings/Display.php:245 src/Util/Temporal.php:353
+#: src/Module/Settings/Display.php:272 src/Util/Temporal.php:353
 msgid "month"
 msgstr ""
 
 #: src/Model/Event.php:464 src/Module/Calendar/Show.php:130
-#: src/Module/Settings/Display.php:246 src/Util/Temporal.php:354
+#: src/Module/Settings/Display.php:273 src/Util/Temporal.php:354
 msgid "week"
 msgstr ""
 
 #: src/Model/Event.php:465 src/Module/Calendar/Show.php:131
-#: src/Module/Settings/Display.php:247 src/Util/Temporal.php:355
+#: src/Module/Settings/Display.php:274 src/Util/Temporal.php:355
 msgid "day"
 msgstr ""
 
@@ -3884,7 +3884,7 @@ msgid "Disable"
 msgstr ""
 
 #: src/Module/Admin/Addons/Details.php:91
-#: src/Module/Admin/Themes/Details.php:49
+#: src/Module/Admin/Themes/Details.php:49 src/Module/Settings/Display.php:316
 msgid "Enable"
 msgstr ""
 
@@ -3934,7 +3934,7 @@ msgstr ""
 #: src/Module/Settings/Account.php:561 src/Module/Settings/Addons.php:78
 #: src/Module/Settings/Connectors.php:160
 #: src/Module/Settings/Connectors.php:246
-#: src/Module/Settings/Delegation.php:171 src/Module/Settings/Display.php:260
+#: src/Module/Settings/Delegation.php:171 src/Module/Settings/Display.php:287
 #: src/Module/Settings/Features.php:76
 msgid "Save Settings"
 msgstr ""
@@ -4295,11 +4295,11 @@ msgstr ""
 msgid "%s is no valid input for maximum image size"
 msgstr ""
 
-#: src/Module/Admin/Site.php:313 src/Module/Settings/Display.php:178
+#: src/Module/Admin/Site.php:313 src/Module/Settings/Display.php:194
 msgid "No special theme for mobile devices"
 msgstr ""
 
-#: src/Module/Admin/Site.php:330 src/Module/Settings/Display.php:188
+#: src/Module/Admin/Site.php:330 src/Module/Settings/Display.php:204
 #, php-format
 msgid "%s - (Experimental)"
 msgstr ""
@@ -5847,7 +5847,7 @@ msgstr ""
 #: src/Module/Moderation/Blocklist/Server/Index.php:116
 #: src/Module/Moderation/Item/Delete.php:67 src/Module/Register.php:148
 #: src/Module/Security/TwoFactor/Verify.php:101
-#: src/Module/Settings/Channels.php:117 src/Module/Settings/Channels.php:131
+#: src/Module/Settings/Channels.php:117 src/Module/Settings/Channels.php:132
 #: src/Module/Settings/TwoFactor/Index.php:140
 #: src/Module/Settings/TwoFactor/Verify.php:155
 msgid "Required"
@@ -5909,7 +5909,7 @@ msgstr ""
 msgid "Create New Event"
 msgstr ""
 
-#: src/Module/Calendar/Show.php:132 src/Module/Settings/Display.php:248
+#: src/Module/Calendar/Show.php:132 src/Module/Settings/Display.php:275
 msgid "list"
 msgstr ""
 
@@ -5943,7 +5943,7 @@ msgid "Contact not found."
 msgstr ""
 
 #: src/Module/Circle.php:102 src/Module/Contact/Contacts.php:66
-#: src/Module/Conversation/Network.php:233
+#: src/Module/Conversation/Network.php:224
 msgid "Invalid contact."
 msgstr ""
 
@@ -6729,16 +6729,16 @@ msgstr ""
 msgid "Not available."
 msgstr ""
 
-#: src/Module/Conversation/Network.php:219
+#: src/Module/Conversation/Network.php:210
 msgid "No such circle"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:223
+#: src/Module/Conversation/Network.php:214
 #, php-format
 msgid "Circle: %s"
 msgstr ""
 
-#: src/Module/Conversation/Network.php:317
+#: src/Module/Conversation/Network.php:308
 msgid "Network feed not available."
 msgstr ""
 
@@ -7119,7 +7119,7 @@ msgstr ""
 #: src/Module/Friendica.php:102
 #: src/Module/Moderation/Blocklist/Server/Index.php:87
 #: src/Module/Moderation/Blocklist/Server/Index.php:111
-#: src/Module/Settings/Channels.php:147
+#: src/Module/Settings/Channels.php:149
 msgid "Reason for the block"
 msgstr ""
 
@@ -7867,7 +7867,7 @@ msgstr ""
 
 #: src/Module/Moderation/Blocklist/Server/Index.php:86
 #: src/Module/Moderation/Blocklist/Server/Index.php:110
-#: src/Module/Settings/Channels.php:146
+#: src/Module/Settings/Channels.php:148
 msgid "Blocked server domain pattern"
 msgstr ""
 
@@ -9909,94 +9909,104 @@ msgstr ""
 msgid "No Addon settings configured"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:117 src/Module/Settings/Channels.php:131
+#: src/Module/Settings/Channels.php:117 src/Module/Settings/Channels.php:132
+#: src/Module/Settings/Display.php:314
 msgid "Label"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:118 src/Module/Settings/Channels.php:132
+#: src/Module/Settings/Channels.php:118 src/Module/Settings/Channels.php:133
+#: src/Module/Settings/Display.php:315
 #: src/Module/Settings/TwoFactor/AppSpecific.php:134
 msgid "Description"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:119 src/Module/Settings/Channels.php:133
+#: src/Module/Settings/Channels.php:119 src/Module/Settings/Channels.php:134
 msgid "Access Key"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:120 src/Module/Settings/Channels.php:134
+#: src/Module/Settings/Channels.php:120 src/Module/Settings/Channels.php:135
 msgid "Include Tags"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:121 src/Module/Settings/Channels.php:135
+#: src/Module/Settings/Channels.php:121 src/Module/Settings/Channels.php:136
 msgid "Exclude Tags"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:125
+#: src/Module/Settings/Channels.php:122 src/Module/Settings/Channels.php:137
+msgid "Full Text Search"
+msgstr ""
+
+#: src/Module/Settings/Channels.php:126
 msgid "Delete channel"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:125
+#: src/Module/Settings/Channels.php:126
 msgid "Check to delete this entry from the channel list"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:131
+#: src/Module/Settings/Channels.php:132
 msgid "Short name for the channel. It is displayed on the channels widget."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:132
+#: src/Module/Settings/Channels.php:133
 msgid "This should describe the content of the channel in a few word."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:133
+#: src/Module/Settings/Channels.php:134
 msgid ""
 "When you want to access this channel via an access key, you can define it "
 "here. Pay attentioon to not use an already used one."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:134
+#: src/Module/Settings/Channels.php:135
 msgid ""
 "Comma separated list of tags. A post will be used when it contains any of "
 "the listed tags."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:135
+#: src/Module/Settings/Channels.php:136
 msgid ""
 "Comma separated list of tags. If a post contain any of these tags, then it "
 "will not be part of nthis channel."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:136
+#: src/Module/Settings/Channels.php:137
+msgid "Search terms for the body."
+msgstr ""
+
+#: src/Module/Settings/Channels.php:138
 msgid "Check to display images in the channel."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:137
+#: src/Module/Settings/Channels.php:139
 msgid "Check to display videos in the channel."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:138
+#: src/Module/Settings/Channels.php:140
 msgid "Check to display audio in the channel."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:141
+#: src/Module/Settings/Channels.php:143
 msgid "This page can be used to define your own channels."
 msgstr ""
 
-#: src/Module/Settings/Channels.php:142
+#: src/Module/Settings/Channels.php:144
 msgid "Add new entry to the channel list"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:143 src/Module/Settings/Delegation.php:181
+#: src/Module/Settings/Channels.php:145 src/Module/Settings/Delegation.php:181
 msgid "Add"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:145
+#: src/Module/Settings/Channels.php:147
 msgid "Current Entries in the channel list"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:148
+#: src/Module/Settings/Channels.php:150
 msgid "Delete entry from the channel list"
 msgstr ""
 
-#: src/Module/Settings/Channels.php:149
+#: src/Module/Settings/Channels.php:151
 msgid "Delete entry from the channel list?"
 msgstr ""
 
@@ -10269,171 +10279,167 @@ msgstr ""
 msgid "No entries."
 msgstr ""
 
-#: src/Module/Settings/Display.php:146
+#: src/Module/Settings/Display.php:162
 msgid "The theme you chose isn't available."
 msgstr ""
 
-#: src/Module/Settings/Display.php:186
+#: src/Module/Settings/Display.php:202
 #, php-format
 msgid "%s - (Unsupported)"
 msgstr ""
 
-#: src/Module/Settings/Display.php:221
+#: src/Module/Settings/Display.php:237
 msgid "No preview"
 msgstr ""
 
-#: src/Module/Settings/Display.php:222
+#: src/Module/Settings/Display.php:238
 msgid "No image"
 msgstr ""
 
-#: src/Module/Settings/Display.php:223
+#: src/Module/Settings/Display.php:239
 msgid "Small Image"
 msgstr ""
 
-#: src/Module/Settings/Display.php:224
+#: src/Module/Settings/Display.php:240
 msgid "Large Image"
 msgstr ""
 
-#: src/Module/Settings/Display.php:259
+#: src/Module/Settings/Display.php:286
 msgid "Display Settings"
 msgstr ""
 
-#: src/Module/Settings/Display.php:261
+#: src/Module/Settings/Display.php:288
 msgid "General Theme Settings"
 msgstr ""
 
-#: src/Module/Settings/Display.php:262
+#: src/Module/Settings/Display.php:289
 msgid "Custom Theme Settings"
 msgstr ""
 
-#: src/Module/Settings/Display.php:263
+#: src/Module/Settings/Display.php:290
 msgid "Content Settings"
 msgstr ""
 
-#: src/Module/Settings/Display.php:264 view/theme/duepuntozero/config.php:86
+#: src/Module/Settings/Display.php:291 view/theme/duepuntozero/config.php:86
 #: view/theme/frio/config.php:172 view/theme/quattro/config.php:88
 #: view/theme/vier/config.php:136
 msgid "Theme settings"
 msgstr ""
 
-#: src/Module/Settings/Display.php:265
+#: src/Module/Settings/Display.php:292
 msgid "Timelines"
 msgstr ""
 
-#: src/Module/Settings/Display.php:272
+#: src/Module/Settings/Display.php:299
 msgid "Display Theme:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:273
+#: src/Module/Settings/Display.php:300
 msgid "Mobile Theme:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:276
+#: src/Module/Settings/Display.php:303
 msgid "Number of items to display per page:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:276 src/Module/Settings/Display.php:277
+#: src/Module/Settings/Display.php:303 src/Module/Settings/Display.php:304
 msgid "Maximum of 100 items"
 msgstr ""
 
-#: src/Module/Settings/Display.php:277
+#: src/Module/Settings/Display.php:304
 msgid "Number of items to display per page when viewed from mobile device:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:278
+#: src/Module/Settings/Display.php:305
 msgid "Update browser every xx seconds"
 msgstr ""
 
-#: src/Module/Settings/Display.php:278
+#: src/Module/Settings/Display.php:305
 msgid "Minimum of 10 seconds. Enter -1 to disable it."
 msgstr ""
 
-#: src/Module/Settings/Display.php:279
+#: src/Module/Settings/Display.php:306
 msgid "Display emoticons"
 msgstr ""
 
-#: src/Module/Settings/Display.php:279
+#: src/Module/Settings/Display.php:306
 msgid "When enabled, emoticons are replaced with matching symbols."
 msgstr ""
 
-#: src/Module/Settings/Display.php:280
+#: src/Module/Settings/Display.php:307
 msgid "Infinite scroll"
 msgstr ""
 
-#: src/Module/Settings/Display.php:280
+#: src/Module/Settings/Display.php:307
 msgid "Automatic fetch new items when reaching the page end."
 msgstr ""
 
-#: src/Module/Settings/Display.php:281
+#: src/Module/Settings/Display.php:308
 msgid "Enable Smart Threading"
 msgstr ""
 
-#: src/Module/Settings/Display.php:281
+#: src/Module/Settings/Display.php:308
 msgid "Enable the automatic suppression of extraneous thread indentation."
 msgstr ""
 
-#: src/Module/Settings/Display.php:282
+#: src/Module/Settings/Display.php:309
 msgid "Display the Dislike feature"
 msgstr ""
 
-#: src/Module/Settings/Display.php:282
+#: src/Module/Settings/Display.php:309
 msgid "Display the Dislike button and dislike reactions on posts and comments."
 msgstr ""
 
-#: src/Module/Settings/Display.php:283
+#: src/Module/Settings/Display.php:310
 msgid "Display the resharer"
 msgstr ""
 
-#: src/Module/Settings/Display.php:283
+#: src/Module/Settings/Display.php:310
 msgid "Display the first resharer as icon and text on a reshared item."
 msgstr ""
 
-#: src/Module/Settings/Display.php:284
+#: src/Module/Settings/Display.php:311
 msgid "Stay local"
 msgstr ""
 
-#: src/Module/Settings/Display.php:284
+#: src/Module/Settings/Display.php:311
 msgid "Don't go to a remote system when following a contact link."
 msgstr ""
 
-#: src/Module/Settings/Display.php:285
+#: src/Module/Settings/Display.php:312
 msgid "Link preview mode"
 msgstr ""
 
-#: src/Module/Settings/Display.php:285
+#: src/Module/Settings/Display.php:312
 msgid "Appearance of the link preview that is added to each post with a link."
 msgstr ""
 
-#: src/Module/Settings/Display.php:287
-msgid "Timelines for the network page:"
+#: src/Module/Settings/Display.php:317
+msgid "Bookmark"
 msgstr ""
 
-#: src/Module/Settings/Display.php:287
-msgid "Select all the timelines that you want to see on your network page."
+#: src/Module/Settings/Display.php:319
+msgid ""
+"Enable timelines that you want to see in the channels widget. Bookmark "
+"timelines that you want to see in the top menu."
 msgstr ""
 
-#: src/Module/Settings/Display.php:288
+#: src/Module/Settings/Display.php:321
 msgid "Channel languages:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:288
+#: src/Module/Settings/Display.php:321
 msgid "Select all languages that you want to see in your channels."
 msgstr ""
 
-#: src/Module/Settings/Display.php:290
+#: src/Module/Settings/Display.php:323
 msgid "Beginning of week:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:291
+#: src/Module/Settings/Display.php:324
 msgid "Default calendar view:"
 msgstr ""
 
-#: src/Module/Settings/Display.php:300 src/Module/Settings/Display.php:308
-#: src/Module/Settings/Display.php:312
-#, php-format
-msgid "%s: %s"
-msgstr ""
-
 #: src/Module/Settings/Features.php:74
 msgid "Additional Features"
 msgstr ""
index b4543cd563c7ab5333d0504f496f8e332e1e7334..d393c3b3c4bc80aef3ba8f9e23fce7b44ca31f84 100644 (file)
@@ -9,6 +9,7 @@
        {{include file="field_input.tpl" field=$access_key}}
        {{include file="field_input.tpl" field=$include_tags}}
        {{include file="field_input.tpl" field=$exclude_tags}}
+       {{include file="field_input.tpl" field=$text_search}}
        {{include file="field_checkbox.tpl" field=$image}}
        {{include file="field_checkbox.tpl" field=$video}}
        {{include file="field_checkbox.tpl" field=$audio}}
@@ -27,6 +28,7 @@
                        {{include file="field_input.tpl" field=$e.access_key}}
                        {{include file="field_input.tpl" field=$e.include_tags}}
                        {{include file="field_input.tpl" field=$e.exclude_tags}}
+                       {{include file="field_input.tpl" field=$e.text_search}}
                        {{include file="field_checkbox.tpl" field=$e.image}}
                        {{include file="field_checkbox.tpl" field=$e.video}}
                        {{include file="field_checkbox.tpl" field=$e.audio}}
index 868acb38a2b490a87deee6b54ea0fb9a1c17a8c9..d1cba7a195e5079299d52445b5e234a9adf89a55 100644 (file)
        {{include file="field_select.tpl" field=$preview_mode}}
 
        <h2>{{$timeline_title}}</h2>
-       {{include file="field_select.tpl" field=$network_timelines}}
+       {{$timeline_explanation}}
+       <table class="table table-condensed table-striped table-bordered">
+       <thead>
+       <tr>
+               <th>{{$timeline_label}}</th>
+               <th>{{$timeline_descriptiom}}</th>
+               <th>{{$timeline_enable}}</th>
+               <th>{{$timeline_bookmark}}</th>
+       </tr>
+       </thead>
+       <tbody>
+       {{foreach $timelines as $t}}
+               <tr>
+                       <td>{{$t.label}}</td>
+                       <td>{{$t.description}}</td>
+                       <td>{{include file="field_checkbox.tpl" field=$t.enable}}</td>
+                       <td>{{include file="field_checkbox.tpl" field=$t.bookmark}}</td>
+               </tr>
+       {{/foreach}}
+       </tbody>
+       </table>
 
        <h2>{{$channel_title}}</h2>
        {{include file="field_select.tpl" field=$channel_languages}}