From f87e41e20620c09a384ee9aa7fb202b9bb1fd016 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 2 Aug 2021 17:03:06 +0000 Subject: [PATCH] Scheduled posts are now listed and can be deleted --- src/Module/Profile/Schedule.php | 42 ++++++++++++++++++- static/routes.config.php | 1 + view/lang/C/messages.po | 20 +++++---- view/templates/profile/schedule.tpl | 23 ++++++++++ .../theme/frio/templates/profile/schedule.tpl | 24 +++++++++++ 5 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 view/templates/profile/schedule.tpl create mode 100644 view/theme/frio/templates/profile/schedule.tpl diff --git a/src/Module/Profile/Schedule.php b/src/Module/Profile/Schedule.php index 9ea5e0c6b..bb2c91ef0 100644 --- a/src/Module/Profile/Schedule.php +++ b/src/Module/Profile/Schedule.php @@ -21,7 +21,12 @@ namespace Friendica\Module\Profile; +use Friendica\BaseModule; +use Friendica\Content\Text\BBCode; +use Friendica\Core\Renderer; +use Friendica\Database\DBA; use Friendica\DI; +use Friendica\Model\Post; use Friendica\Module\BaseProfile; use Friendica\Network\HTTPException; @@ -33,11 +38,46 @@ class Schedule extends BaseProfile throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.')); } + if (!empty($parameters['id'])) { + self::deleteSchedule($parameters['id']); + } + $a = DI::app(); $o = self::getTabsHTML($a, 'schedule', true, $a->user); - $o .= DI::l10n()->t('Currently here is no functionality here. Please use an app to have a look at your scheduled posts.'); + $schedule = []; + $delayed = DBA::select('delayed-post', [], ['uid' => local_user()]); + while ($row = DBA::fetch($delayed)) { + $parameter = Post\Delayed::getParametersForid($row['id']); + if (empty($parameter)) { + continue; + } + $schedule[] = [ + 'id' => $row['id'], + 'scheduled_at' => $row['delayed'], + 'content' => BBCode::toPlaintext($parameter['item']['body'], false) + ]; + } + DBA::close($delayed); + + $tpl = Renderer::getMarkupTemplate('profile/schedule.tpl'); + $o .= Renderer::replaceMacros($tpl, [ + '$form_security_token' => BaseModule::getFormSecurityToken("profile_schedule"), + '$baseurl' => DI::baseUrl()->get(true), + '$title' => DI::l10n()->t('Scheduled Posts'), + '$nickname' => $parameters['nickname'] ?? '', + '$scheduled_at' => DI::l10n()->t('Scheduled'), + '$content' => DI::l10n()->t('Content'), + '$delete' => DI::l10n()->t('Remove post'), + '$schedule' => $schedule, + ]); + return $o; } + + private static function deleteSchedule($id) + { + DBA::delete('delayed-post', ['id' => $id, 'uid' => local_user()]); + } } diff --git a/static/routes.config.php b/static/routes.config.php index 825be5a94..18edde750 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -34,6 +34,7 @@ $profileRoutes = [ '' => [Module\Profile\Index::class, [R::GET]], '/profile' => [Module\Profile\Profile::class, [R::GET]], '/schedule' => [Module\Profile\Schedule::class, [R::GET]], + '/schedule/delete/{id:\d+}' => [Module\Profile\Schedule::class, [R::GET]], '/contacts/common' => [Module\Profile\Common::class, [R::GET]], '/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]], '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]], diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 2fb3c01f4..5403cfb10 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.09-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-02 12:15+0000\n" +"POT-Creation-Date: 2021-08-02 17:00+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -845,7 +845,7 @@ msgstr "" #: src/Module/Invite.php:127 src/Module/Notifications/Notification.php:47 #: src/Module/Notifications/Notification.php:76 #: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:57 -#: src/Module/Profile/Schedule.php:33 src/Module/Register.php:62 +#: src/Module/Profile/Schedule.php:38 src/Module/Register.php:62 #: src/Module/Register.php:75 src/Module/Register.php:193 #: src/Module/Register.php:232 src/Module/Search/Directory.php:38 #: src/Module/Settings/Delegation.php:42 src/Module/Settings/Delegation.php:70 @@ -7096,7 +7096,7 @@ msgstr "" msgid "Only You Can See This" msgstr "" -#: src/Module/BaseProfile.php:117 +#: src/Module/BaseProfile.php:117 src/Module/Profile/Schedule.php:68 msgid "Scheduled Posts" msgstr "" @@ -8779,10 +8779,16 @@ msgstr "" msgid "%s's comments" msgstr "" -#: src/Module/Profile/Schedule.php:40 -msgid "" -"Currently here is no functionality here. Please use an app to have a look at " -"your scheduled posts." +#: src/Module/Profile/Schedule.php:70 +msgid "Scheduled" +msgstr "" + +#: src/Module/Profile/Schedule.php:71 +msgid "Content" +msgstr "" + +#: src/Module/Profile/Schedule.php:72 +msgid "Remove post" msgstr "" #: src/Module/Register.php:69 diff --git a/view/templates/profile/schedule.tpl b/view/templates/profile/schedule.tpl new file mode 100644 index 000000000..ae7e08597 --- /dev/null +++ b/view/templates/profile/schedule.tpl @@ -0,0 +1,23 @@ +
+

{{$title}}

+
+ + + + + + + + + + {{foreach $schedule as $entry}} + + + + + + {{/foreach}} + +
{{$scheduled_at}}{{$content}}
{{$entry.scheduled_at}}{{$entry.content}} 
+
+
diff --git a/view/theme/frio/templates/profile/schedule.tpl b/view/theme/frio/templates/profile/schedule.tpl new file mode 100644 index 000000000..e48163902 --- /dev/null +++ b/view/theme/frio/templates/profile/schedule.tpl @@ -0,0 +1,24 @@ +
+ {{* include the title template for the settings title *}} + {{include file="section_title.tpl" title=$title}} +
+ + + + + + + + + + {{foreach $schedule as $row}} + + + + + + {{/foreach}} + +
{{$scheduled_at}}{{$content}}
{{$row.scheduled_at}}{{$row.content}}
+
+