From 8e4e2eecb7e332a6ba41c797031b17b9b71c445e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 22 Jan 2023 17:10:31 +0000 Subject: [PATCH] Issue 12702: Let the user decide how to handle spoiler texts --- src/Module/Api/Mastodon/Statuses.php | 19 +++- src/Module/Settings/Connectors.php | 4 +- view/lang/C/messages.po | 107 ++++++++++-------- view/templates/settings/connectors.tpl | 1 + .../frio/templates/settings/connectors.tpl | 2 + 5 files changed, 78 insertions(+), 55 deletions(-) diff --git a/src/Module/Api/Mastodon/Statuses.php b/src/Module/Api/Mastodon/Statuses.php index b7b3ff14c4..4c161193e9 100644 --- a/src/Module/Api/Mastodon/Statuses.php +++ b/src/Module/Api/Mastodon/Statuses.php @@ -71,17 +71,17 @@ class Statuses extends BaseApi } // The imput is defined as text. So we can use Markdown for some enhancements - $item = ['body' => Markdown::toBBCode($request['status']), 'app' => $this->getApp()]; + $item = ['body' => Markdown::toBBCode($request['status']), 'app' => $this->getApp(), 'title' => '']; if (!empty($request['language'])) { $item['language'] = json_encode([$request['language'] => 1]); } if (!empty($request['spoiler_text'])) { - if ($request['in_reply_to_id'] != $post['uri-id']) { - $item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body']; - } else { + if (($request['in_reply_to_id'] == $post['uri-id']) && DI::pConfig()->get($uid, 'system', 'api_spoiler_title', true)) { $item['title'] = $request['spoiler_text']; + } else { + $item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body']; } } @@ -119,6 +119,7 @@ class Statuses extends BaseApi $item['verb'] = Activity::POST; $item['contact-id'] = $owner['id']; $item['author-id'] = $item['owner-id'] = Contact::getPublicIdByUserId($uid); + $item['title'] = ''; $item['body'] = $body; $item['app'] = $this->getApp(); @@ -187,13 +188,19 @@ class Statuses extends BaseApi $item['thr-parent'] = $parent['uri']; $item['gravity'] = Item::GRAVITY_COMMENT; $item['object-type'] = Activity\ObjectType::COMMENT; - $item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body']; } else { self::checkThrottleLimit(); $item['gravity'] = Item::GRAVITY_PARENT; $item['object-type'] = Activity\ObjectType::NOTE; - $item['title'] = $request['spoiler_text']; + } + + if (!empty($request['spoiler_text'])) { + if (!$request['in_reply_to_id'] && DI::pConfig()->get($uid, 'system', 'api_spoiler_title', true)) { + $item['title'] = $request['spoiler_text']; + } else { + $item['body'] = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $request['spoiler_text'] . "[/abstract]\n" . $item['body']; + } } $item = DI::contentItem()->expandTags($item, $request['visibility'] == 'direct'); diff --git a/src/Module/Settings/Connectors.php b/src/Module/Settings/Connectors.php index 7c053e1681..a48c9f8018 100644 --- a/src/Module/Settings/Connectors.php +++ b/src/Module/Settings/Connectors.php @@ -72,6 +72,7 @@ class Connectors extends BaseSettings $this->pconfig->set($this->session->getLocalUserId(), 'system', 'no_intelligent_shortening', !intval($request['enable_smart_shortening'])); $this->pconfig->set($this->session->getLocalUserId(), 'system', 'simple_shortening', intval($request['simple_shortening'])); $this->pconfig->set($this->session->getLocalUserId(), 'system', 'attach_link_title', intval($request['attach_link_title'])); + $this->pconfig->set($this->session->getLocalUserId(), 'system', 'api_spoiler_title', intval($request['api_spoiler_title'])); $this->pconfig->set($this->session->getLocalUserId(), 'ostatus', 'legacy_contact', $request['legacy_contact']); } elseif (!empty($request['mail-submit']) && function_exists('imap_open') && !$this->config->get('system', 'imap_disabled')) { $mail_server = $request['mail_server'] ?? ''; @@ -134,6 +135,7 @@ class Connectors extends BaseSettings $enable_smart_shortening = !intval($this->pconfig->get($this->session->getLocalUserId(), 'system', 'no_intelligent_shortening')); $simple_shortening = intval($this->pconfig->get($this->session->getLocalUserId(), 'system', 'simple_shortening')); $attach_link_title = intval($this->pconfig->get($this->session->getLocalUserId(), 'system', 'attach_link_title')); + $api_spoiler_title = intval($this->pconfig->get($this->session->getLocalUserId(), 'system', 'api_spoiler_title', true)); $legacy_contact = $this->pconfig->get($this->session->getLocalUserId(), 'ostatus', 'legacy_contact'); if (!empty($legacy_contact)) { @@ -218,8 +220,8 @@ class Connectors extends BaseSettings '$enable_smart_shortening' => ['enable_smart_shortening', $this->t('Enable intelligent shortening'), $enable_smart_shortening, $this->t('Normally the system tries to find the best link to add to shortened posts. If disabled, every shortened post will always point to the original friendica post.')], '$simple_shortening' => ['simple_shortening', $this->t('Enable simple text shortening'), $simple_shortening, $this->t('Normally the system shortens posts at the next line feed. If this option is enabled then the system will shorten the text at the maximum character limit.')], '$attach_link_title' => ['attach_link_title', $this->t('Attach the link title'), $attach_link_title, $this->t('When activated, the title of the attached link will be added as a title on posts to Diaspora. This is mostly helpful with "remote-self" contacts that share feed content.')], + '$api_spoiler_title' => ['api_spoiler_title', $this->t('API: Use spoiler field as title'), $api_spoiler_title, $this->t('When activated, the "spoiler_text" field in the API will be used for the title on staring posts. When deactivated it will be used for spoiler text. For comments it will be used for spoiler text in any case.')], '$legacy_contact' => ['legacy_contact', $this->t('Your legacy ActivityPub/GNU Social account'), $legacy_contact, $this->t('If you enter your old account name from an ActivityPub based system or your GNU Social/Statusnet account name here (in the format user@domain.tld), your contacts will be added automatically. The field will be emptied when done.')], - '$repair_ostatus_url' => 'ostatus/repair', '$repair_ostatus_text' => $this->t('Repair OStatus subscriptions'), diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 7634bc8e87..848fd9ce5a 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2023.03-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-21 09:22-0500\n" +"POT-Creation-Date: 2023-01-22 17:07+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -625,7 +625,7 @@ msgstr "" #: src/Module/Moderation/Users/Active.php:136 #: src/Module/Moderation/Users/Blocked.php:136 #: src/Module/Moderation/Users/Index.php:151 -#: src/Module/Settings/Connectors.php:239 +#: src/Module/Settings/Connectors.php:241 msgid "Delete" msgstr "" @@ -653,7 +653,7 @@ msgstr "" msgid "No system theme config value set." msgstr "" -#: src/App.php:592 +#: src/App.php:573 msgid "Apologies but the website is unavailable at the moment." msgstr "" @@ -1825,7 +1825,7 @@ msgstr "" msgid "See all notifications" msgstr "" -#: src/Content/Nav.php:315 src/Module/Settings/Connectors.php:239 +#: src/Content/Nav.php:315 src/Module/Settings/Connectors.php:241 msgid "Mark as seen" msgstr "" @@ -3663,8 +3663,8 @@ msgstr "" #: src/Module/Admin/Logs/Settings.php:81 src/Module/Admin/Site.php:438 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:86 #: src/Module/Settings/Account.php:560 src/Module/Settings/Addons.php:78 -#: src/Module/Settings/Connectors.php:156 -#: src/Module/Settings/Connectors.php:241 +#: src/Module/Settings/Connectors.php:158 +#: src/Module/Settings/Connectors.php:243 #: src/Module/Settings/Delegation.php:169 src/Module/Settings/Display.php:247 #: src/Module/Settings/Features.php:76 msgid "Save Settings" @@ -5476,7 +5476,7 @@ msgstr "" msgid "Display" msgstr "" -#: src/Module/BaseSettings.php:127 src/Module/Settings/Connectors.php:200 +#: src/Module/BaseSettings.php:127 src/Module/Settings/Connectors.php:202 msgid "Social Networks" msgstr "" @@ -9365,73 +9365,73 @@ msgstr "" msgid "No Addon settings configured" msgstr "" -#: src/Module/Settings/Connectors.php:118 +#: src/Module/Settings/Connectors.php:119 msgid "Failed to connect with email account using the settings provided." msgstr "" -#: src/Module/Settings/Connectors.php:162 -#: src/Module/Settings/Connectors.php:163 +#: src/Module/Settings/Connectors.php:164 +#: src/Module/Settings/Connectors.php:165 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: src/Module/Settings/Connectors.php:162 -#: src/Module/Settings/Connectors.php:166 +#: src/Module/Settings/Connectors.php:164 +#: src/Module/Settings/Connectors.php:168 #, php-format msgid "Built-in support for %s connectivity is enabled" msgstr "" -#: src/Module/Settings/Connectors.php:163 #: src/Module/Settings/Connectors.php:165 +#: src/Module/Settings/Connectors.php:167 #, php-format msgid "Built-in support for %s connectivity is disabled" msgstr "" -#: src/Module/Settings/Connectors.php:165 -#: src/Module/Settings/Connectors.php:166 +#: src/Module/Settings/Connectors.php:167 +#: src/Module/Settings/Connectors.php:168 msgid "OStatus (GNU Social)" msgstr "" -#: src/Module/Settings/Connectors.php:178 +#: src/Module/Settings/Connectors.php:180 msgid "Email access is disabled on this site." msgstr "" -#: src/Module/Settings/Connectors.php:193 -#: src/Module/Settings/Connectors.php:239 +#: src/Module/Settings/Connectors.php:195 +#: src/Module/Settings/Connectors.php:241 msgid "None" msgstr "" -#: src/Module/Settings/Connectors.php:205 +#: src/Module/Settings/Connectors.php:207 msgid "General Social Media Settings" msgstr "" -#: src/Module/Settings/Connectors.php:208 +#: src/Module/Settings/Connectors.php:210 msgid "Followed content scope" msgstr "" -#: src/Module/Settings/Connectors.php:210 +#: src/Module/Settings/Connectors.php:212 msgid "" "By default, conversations in which your follows participated but didn't " "start will be shown in your timeline. You can turn this behavior off, or " "expand it to the conversations in which your follows liked a post." msgstr "" -#: src/Module/Settings/Connectors.php:212 +#: src/Module/Settings/Connectors.php:214 msgid "Only conversations my follows started" msgstr "" -#: src/Module/Settings/Connectors.php:213 +#: src/Module/Settings/Connectors.php:215 msgid "Conversations my follows started or commented on (default)" msgstr "" -#: src/Module/Settings/Connectors.php:214 +#: src/Module/Settings/Connectors.php:216 msgid "Any conversation my follows interacted with, including likes" msgstr "" -#: src/Module/Settings/Connectors.php:217 +#: src/Module/Settings/Connectors.php:219 msgid "Enable Content Warning" msgstr "" -#: src/Module/Settings/Connectors.php:217 +#: src/Module/Settings/Connectors.php:219 msgid "" "Users on networks like Mastodon or Pleroma are able to set a content warning " "field which collapse their post by default. This enables the automatic " @@ -9439,104 +9439,115 @@ msgid "" "affect any other content filtering you eventually set up." msgstr "" -#: src/Module/Settings/Connectors.php:218 +#: src/Module/Settings/Connectors.php:220 msgid "Enable intelligent shortening" msgstr "" -#: src/Module/Settings/Connectors.php:218 +#: src/Module/Settings/Connectors.php:220 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If disabled, every shortened post will always point to the original " "friendica post." msgstr "" -#: src/Module/Settings/Connectors.php:219 +#: src/Module/Settings/Connectors.php:221 msgid "Enable simple text shortening" msgstr "" -#: src/Module/Settings/Connectors.php:219 +#: src/Module/Settings/Connectors.php:221 msgid "" "Normally the system shortens posts at the next line feed. If this option is " "enabled then the system will shorten the text at the maximum character limit." msgstr "" -#: src/Module/Settings/Connectors.php:220 +#: src/Module/Settings/Connectors.php:222 msgid "Attach the link title" msgstr "" -#: src/Module/Settings/Connectors.php:220 +#: src/Module/Settings/Connectors.php:222 msgid "" "When activated, the title of the attached link will be added as a title on " "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that " "share feed content." msgstr "" -#: src/Module/Settings/Connectors.php:221 +#: src/Module/Settings/Connectors.php:223 +msgid "API: Use spoiler field as title" +msgstr "" + +#: src/Module/Settings/Connectors.php:223 +msgid "" +"When activated, the \"spoiler_text\" field in the API will be used for the " +"title on staring posts. When deactivated it will be used for spoiler text. " +"For comments it will be used for spoiler text in any case." +msgstr "" + +#: src/Module/Settings/Connectors.php:224 msgid "Your legacy ActivityPub/GNU Social account" msgstr "" -#: src/Module/Settings/Connectors.php:221 +#: src/Module/Settings/Connectors.php:224 msgid "" "If you enter your old account name from an ActivityPub based system or your " "GNU Social/Statusnet account name here (in the format user@domain.tld), your " "contacts will be added automatically. The field will be emptied when done." msgstr "" -#: src/Module/Settings/Connectors.php:224 +#: src/Module/Settings/Connectors.php:226 msgid "Repair OStatus subscriptions" msgstr "" -#: src/Module/Settings/Connectors.php:228 +#: src/Module/Settings/Connectors.php:230 msgid "Email/Mailbox Setup" msgstr "" -#: src/Module/Settings/Connectors.php:229 +#: src/Module/Settings/Connectors.php:231 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: src/Module/Settings/Connectors.php:230 +#: src/Module/Settings/Connectors.php:232 msgid "Last successful email check:" msgstr "" -#: src/Module/Settings/Connectors.php:232 +#: src/Module/Settings/Connectors.php:234 msgid "IMAP server name:" msgstr "" -#: src/Module/Settings/Connectors.php:233 +#: src/Module/Settings/Connectors.php:235 msgid "IMAP port:" msgstr "" -#: src/Module/Settings/Connectors.php:234 +#: src/Module/Settings/Connectors.php:236 msgid "Security:" msgstr "" -#: src/Module/Settings/Connectors.php:235 +#: src/Module/Settings/Connectors.php:237 msgid "Email login name:" msgstr "" -#: src/Module/Settings/Connectors.php:236 +#: src/Module/Settings/Connectors.php:238 msgid "Email password:" msgstr "" -#: src/Module/Settings/Connectors.php:237 +#: src/Module/Settings/Connectors.php:239 msgid "Reply-to address:" msgstr "" -#: src/Module/Settings/Connectors.php:238 +#: src/Module/Settings/Connectors.php:240 msgid "Send public posts to all email contacts:" msgstr "" -#: src/Module/Settings/Connectors.php:239 +#: src/Module/Settings/Connectors.php:241 msgid "Action after import:" msgstr "" -#: src/Module/Settings/Connectors.php:239 +#: src/Module/Settings/Connectors.php:241 msgid "Move to folder" msgstr "" -#: src/Module/Settings/Connectors.php:240 +#: src/Module/Settings/Connectors.php:242 msgid "Move to folder:" msgstr "" diff --git a/view/templates/settings/connectors.tpl b/view/templates/settings/connectors.tpl index 1cd0f73cd6..ae345ce2d3 100644 --- a/view/templates/settings/connectors.tpl +++ b/view/templates/settings/connectors.tpl @@ -16,6 +16,7 @@ {{include file="field_checkbox.tpl" field=$enable_smart_shortening}} {{include file="field_checkbox.tpl" field=$simple_shortening}} {{include file="field_checkbox.tpl" field=$attach_link_title}} + {{include file="field_checkbox.tpl" field=$api_spoiler_title}} {{include file="field_input.tpl" field=$legacy_contact}}

{{$repair_ostatus_text}}

diff --git a/view/theme/frio/templates/settings/connectors.tpl b/view/theme/frio/templates/settings/connectors.tpl index 409512d5ea..c1ebd64f3f 100644 --- a/view/theme/frio/templates/settings/connectors.tpl +++ b/view/theme/frio/templates/settings/connectors.tpl @@ -28,6 +28,8 @@ {{include file="field_checkbox.tpl" field=$attach_link_title}} + {{include file="field_checkbox.tpl" field=$api_spoiler_title}} + {{include file="field_input.tpl" field=$legacy_contact}}

{{$repair_ostatus_text}}

-- 2.39.5