From d826fe0a3bccca8d8fd7fdee567a81994b6bde5a Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 16 Oct 2022 11:24:50 -0400 Subject: [PATCH] Refactor files related to the Compose page and frio theme settings - Use dependencies instead of most DI calls in Module\Item\Compose - Group translation strings in a subkey of the template variables array - Rewrite array initializations in theme/frio/config --- src/Content/Conversation.php | 2 +- src/Module/Item/Compose.php | 114 ++++++++++++++++++++------------ view/templates/item/compose.tpl | 46 ++++++------- view/theme/frio/config.php | 73 ++++++++++---------- 4 files changed, 134 insertions(+), 101 deletions(-) diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 744e9ed18..237d192fd 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -328,7 +328,7 @@ class Conversation $created_at = ''; } - $tpl = Renderer::getMarkupTemplate("jot.tpl"); + $tpl = Renderer::getMarkupTemplate('jot.tpl'); $o .= Renderer::replaceMacros($tpl, [ '$new_post' => $this->l10n->t('New Post'), diff --git a/src/Module/Item/Compose.php b/src/Module/Item/Compose.php index a3ca4296a..895a548e4 100644 --- a/src/Module/Item/Compose.php +++ b/src/Module/Item/Compose.php @@ -22,10 +22,13 @@ namespace Friendica\Module\Item; use DateTime; +use Friendica\App; use Friendica\BaseModule; use Friendica\Content\Feature; use Friendica\Core\ACL; use Friendica\Core\Hook; +use Friendica\Core\L10n; +use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\Renderer; use Friendica\Core\Theme; use Friendica\Database\DBA; @@ -33,13 +36,40 @@ use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\User; +use Friendica\Module\Response; use Friendica\Module\Security\Login; +use Friendica\Navigation\SystemMessages; use Friendica\Network\HTTPException\NotImplementedException; +use Friendica\Util\ACLFormatter; use Friendica\Util\Crypto; +use Friendica\Util\Profiler; use Friendica\Util\Temporal; +use Psr\Log\LoggerInterface; class Compose extends BaseModule { + /** @var SystemMessages */ + private $systemMessages; + + /** @var ACLFormatter */ + private $ACLFormatter; + + /** @var App\Page */ + private $page; + + /** @var IManagePersonalConfigValues */ + private $pConfig; + + public function __construct(IManagePersonalConfigValues $pConfig, App\Page $page, ACLFormatter $ACLFormatter, SystemMessages $systemMessages, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) + { + parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); + + $this->systemMessages = $systemMessages; + $this->ACLFormatter = $ACLFormatter; + $this->page = $page; + $this->pConfig = $pConfig; + } + protected function post(array $request = []) { if (!empty($_REQUEST['body'])) { @@ -47,23 +77,22 @@ class Compose extends BaseModule require_once 'mod/item.php'; item_post(DI::app()); } else { - notice(DI::l10n()->t('Please enter a post body.')); + $this->systemMessages->addNotice($this->l10n->t('Please enter a post body.')); } } protected function content(array $request = []): string { if (!local_user()) { - return Login::form('compose', false); + return Login::form('compose'); } $a = DI::app(); if ($a->getCurrentTheme() !== 'frio') { - throw new NotImplementedException(DI::l10n()->t('This feature is only available with the frio theme.')); + throw new NotImplementedException($this->l10n->t('This feature is only available with the frio theme.')); } - /// @TODO Retrieve parameter from router $posttype = $this->parameters['type'] ?? Item::PT_ARTICLE; if (!in_array($posttype, [Item::PT_ARTICLE, Item::PT_PERSONAL_NOTE])) { switch ($posttype) { @@ -78,16 +107,14 @@ class Compose extends BaseModule $user = User::getById(local_user(), ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'default-location']); - $aclFormatter = DI::aclFormatter(); - - $contact_allow_list = $aclFormatter->expand($user['allow_cid']); - $group_allow_list = $aclFormatter->expand($user['allow_gid']); - $contact_deny_list = $aclFormatter->expand($user['deny_cid']); - $group_deny_list = $aclFormatter->expand($user['deny_gid']); + $contact_allow_list = $this->ACLFormatter->expand($user['allow_cid']); + $group_allow_list = $this->ACLFormatter->expand($user['allow_gid']); + $contact_deny_list = $this->ACLFormatter->expand($user['deny_cid']); + $group_deny_list = $this->ACLFormatter->expand($user['deny_gid']); switch ($posttype) { case Item::PT_PERSONAL_NOTE: - $compose_title = DI::l10n()->t('Compose new personal note'); + $compose_title = $this->l10n->t('Compose new personal note'); $type = 'note'; $doesFederate = false; $contact_allow_list = [$a->getContactId()]; @@ -96,7 +123,7 @@ class Compose extends BaseModule $group_deny_list = []; break; default: - $compose_title = DI::l10n()->t('Compose new post'); + $compose_title = $this->l10n->t('Compose new post'); $type = 'post'; $doesFederate = true; @@ -129,13 +156,13 @@ class Compose extends BaseModule Hook::callAll('jot_tool', $jotplugins); // Output - DI::page()->registerFooterScript(Theme::getPathForFile('js/ajaxupload.js')); - DI::page()->registerFooterScript(Theme::getPathForFile('js/linkPreview.js')); - DI::page()->registerFooterScript(Theme::getPathForFile('js/compose.js')); + $this->page->registerFooterScript(Theme::getPathForFile('js/ajaxupload.js')); + $this->page->registerFooterScript(Theme::getPathForFile('js/linkPreview.js')); + $this->page->registerFooterScript(Theme::getPathForFile('js/compose.js')); $contact = Contact::getById($a->getContactId()); - if (DI::config()->get(local_user(), 'system', 'set_creation_date')) { + if ($this->pConfig->get(local_user(), 'system', 'set_creation_date')) { $created_at = Temporal::getDateTimeField( new \DateTime(DBA::NULL_DATETIME), new \DateTime('now'), @@ -149,39 +176,42 @@ class Compose extends BaseModule $tpl = Renderer::getMarkupTemplate('item/compose.tpl'); return Renderer::replaceMacros($tpl, [ - '$compose_title'=> $compose_title, - '$visibility_title'=> DI::l10n()->t('Visibility'), + '$l10n' => [ + 'compose_title' => $compose_title, + 'default' => '', + 'visibility_title' => $this->l10n->t('Visibility'), + 'mytitle' => $this->l10n->t('This is you'), + 'submit' => $this->l10n->t('Submit'), + 'edbold' => $this->l10n->t('Bold'), + 'editalic' => $this->l10n->t('Italic'), + 'eduline' => $this->l10n->t('Underline'), + 'edquote' => $this->l10n->t('Quote'), + 'edcode' => $this->l10n->t('Code'), + 'edimg' => $this->l10n->t('Image'), + 'edurl' => $this->l10n->t('Link'), + 'edattach' => $this->l10n->t('Link or Media'), + 'prompttext' => $this->l10n->t('Please enter a image/video/audio/webpage URL:'), + 'preview' => $this->l10n->t('Preview'), + 'location_set' => $this->l10n->t('Set your location'), + 'location_clear' => $this->l10n->t('Clear the location'), + 'location_unavailable' => $this->l10n->t('Location services are unavailable on your device'), + 'location_disabled' => $this->l10n->t('Location services are disabled. Please check the website\'s permissions on your device'), + 'wait' => $this->l10n->t('Please wait'), + 'placeholdertitle' => $this->l10n->t('Set title'), + 'placeholdercategory' => Feature::isEnabled(local_user(),'categories') ? $this->l10n->t('Categories (comma-separated list)') : '', + ], + '$id' => 0, '$posttype' => $posttype, '$type' => $type, '$wall' => $wall, - '$default' => '', - '$mylink' => DI::baseUrl()->remove($contact['url']), - '$mytitle' => DI::l10n()->t('This is you'), - '$myphoto' => DI::baseUrl()->remove($contact['thumb']), - '$submit' => DI::l10n()->t('Submit'), - '$edbold' => DI::l10n()->t('Bold'), - '$editalic' => DI::l10n()->t('Italic'), - '$eduline' => DI::l10n()->t('Underline'), - '$edquote' => DI::l10n()->t('Quote'), - '$edcode' => DI::l10n()->t('Code'), - '$edimg' => DI::l10n()->t('Image'), - '$edurl' => DI::l10n()->t('Link'), - '$edattach' => DI::l10n()->t('Link or Media'), - '$prompttext' => DI::l10n()->t('Please enter a image/video/audio/webpage URL:'), - '$preview' => DI::l10n()->t('Preview'), - '$location_set' => DI::l10n()->t('Set your location'), - '$location_clear' => DI::l10n()->t('Clear the location'), - '$location_unavailable' => DI::l10n()->t('Location services are unavailable on your device'), - '$location_disabled' => DI::l10n()->t('Location services are disabled. Please check the website\'s permissions on your device'), - '$wait' => DI::l10n()->t('Please wait'), - '$placeholdertitle' => DI::l10n()->t('Set title'), - '$placeholdercategory' => (Feature::isEnabled(local_user(),'categories') ? DI::l10n()->t('Categories (comma-separated list)') : ''), + '$mylink' => $this->baseUrl->remove($contact['url']), + '$myphoto' => $this->baseUrl->remove($contact['thumb']), '$scheduled_at' => Temporal::getDateTimeField( new DateTime(), new DateTime('now + 6 months'), null, - DI::l10n()->t('Scheduled at'), + $this->l10n->t('Scheduled at'), 'scheduled_at' ), '$created_at' => $created_at, @@ -197,7 +227,7 @@ class Compose extends BaseModule '$jotplugins' => $jotplugins, '$rand_num' => Crypto::randomDigits(12), - '$acl_selector' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), $doesFederate, [ + '$acl_selector' => ACL::getFullSelectorHTML($this->page, $a->getLoggedInUserId(), $doesFederate, [ 'allow_cid' => $contact_allow_list, 'allow_gid' => $group_allow_list, 'deny_cid' => $contact_deny_list, diff --git a/view/templates/item/compose.tpl b/view/templates/item/compose.tpl index cbab655d2..a01ea95a0 100644 --- a/view/templates/item/compose.tpl +++ b/view/templates/item/compose.tpl @@ -1,5 +1,5 @@
-

{{$compose_title}}

+

{{$l10n.compose_title}}

{{**}} @@ -8,74 +8,72 @@
- +
- {{if $placeholdercategory}} + {{if $l10n.placeholdercategory}}
- +
{{/if}}

- - - - - - -

- +

{{if $type == 'post'}} - + {{/if}} - + - {{if $preview}} - - {{/if}} - + +

{{if $type == 'post'}} -

{{$visibility_title}}

+

{{$l10n.visibility_title}}

{{$acl_selector nofilter}}
diff --git a/view/theme/frio/config.php b/view/theme/frio/config.php index 7445155f9..1ee67db3d 100644 --- a/view/theme/frio/config.php +++ b/view/theme/frio/config.php @@ -43,7 +43,7 @@ function theme_post(App $a) 'background_image', 'bg_image_option', 'login_bg_image', - 'login_bg_color' + 'login_bg_color', ] as $field) { if (isset($_POST['frio_' . $field])) { DI::pConfig()->set(local_user(), 'frio', $field, $_POST['frio_' . $field]); @@ -73,7 +73,7 @@ function theme_admin_post(App $a) 'background_image', 'bg_image_option', 'login_bg_image', - 'login_bg_color' + 'login_bg_color', ] as $field) { if (isset($_POST['frio_' . $field])) { DI::config()->set('frio', $field, $_POST['frio_' . $field]); @@ -84,48 +84,55 @@ function theme_admin_post(App $a) } } -function theme_content(App $a) +function theme_content(): string { if (!local_user()) { - return; + return ''; } - $arr = []; - $node_scheme = DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'scheme')); + $arr = [ + 'scheme' => DI::pConfig()->get(local_user(), 'frio', 'scheme', + DI::pConfig()->get(local_user(), 'frio', 'schema', + DI::config()->get('frio', 'scheme', + DI::config()->get('frio', 'schema') + ) + ) + ), - $arr['scheme'] = DI::pConfig()->get(local_user(), 'frio', 'scheme', DI::pConfig()->get(local_user(), 'frio', 'schema', $node_scheme)); - $arr['scheme_accent'] = DI::pConfig()->get(local_user(), 'frio', 'scheme_accent' , DI::config()->get('frio', 'scheme_accent')); - $arr['share_string'] = ''; - $arr['nav_bg'] = DI::pConfig()->get(local_user(), 'frio', 'nav_bg' , DI::config()->get('frio', 'nav_bg')); - $arr['nav_icon_color'] = DI::pConfig()->get(local_user(), 'frio', 'nav_icon_color' , DI::config()->get('frio', 'nav_icon_color')); - $arr['link_color'] = DI::pConfig()->get(local_user(), 'frio', 'link_color' , DI::config()->get('frio', 'link_color')); - $arr['background_color'] = DI::pConfig()->get(local_user(), 'frio', 'background_color', DI::config()->get('frio', 'background_color')); - $arr['contentbg_transp'] = DI::pConfig()->get(local_user(), 'frio', 'contentbg_transp', DI::config()->get('frio', 'contentbg_transp')); - $arr['background_image'] = DI::pConfig()->get(local_user(), 'frio', 'background_image', DI::config()->get('frio', 'background_image')); - $arr['bg_image_option'] = DI::pConfig()->get(local_user(), 'frio', 'bg_image_option' , DI::config()->get('frio', 'bg_image_option')); + 'share_string' => '', + 'scheme_accent' => DI::pConfig()->get(local_user(), 'frio', 'scheme_accent' , DI::config()->get('frio', 'scheme_accent')), + 'nav_bg' => DI::pConfig()->get(local_user(), 'frio', 'nav_bg' , DI::config()->get('frio', 'nav_bg')), + 'nav_icon_color' => DI::pConfig()->get(local_user(), 'frio', 'nav_icon_color' , DI::config()->get('frio', 'nav_icon_color')), + 'link_color' => DI::pConfig()->get(local_user(), 'frio', 'link_color' , DI::config()->get('frio', 'link_color')), + 'background_color' => DI::pConfig()->get(local_user(), 'frio', 'background_color' , DI::config()->get('frio', 'background_color')), + 'contentbg_transp' => DI::pConfig()->get(local_user(), 'frio', 'contentbg_transp' , DI::config()->get('frio', 'contentbg_transp')), + 'background_image' => DI::pConfig()->get(local_user(), 'frio', 'background_image' , DI::config()->get('frio', 'background_image')), + 'bg_image_option' => DI::pConfig()->get(local_user(), 'frio', 'bg_image_option' , DI::config()->get('frio', 'bg_image_option')), + ]; return frio_form($arr); } -function theme_admin(App $a) +function theme_admin(): string { if (!local_user()) { - return; + return ''; } - $arr = []; - $arr['scheme'] = DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')); - $arr['scheme_accent'] = DI::config()->get('frio', 'scheme_accent'); - $arr['share_string'] = ''; - $arr['nav_bg'] = DI::config()->get('frio', 'nav_bg'); - $arr['nav_icon_color'] = DI::config()->get('frio', 'nav_icon_color'); - $arr['link_color'] = DI::config()->get('frio', 'link_color'); - $arr['background_color'] = DI::config()->get('frio', 'background_color'); - $arr['contentbg_transp'] = DI::config()->get('frio', 'contentbg_transp'); - $arr['background_image'] = DI::config()->get('frio', 'background_image'); - $arr['bg_image_option'] = DI::config()->get('frio', 'bg_image_option'); - $arr['login_bg_image'] = DI::config()->get('frio', 'login_bg_image'); - $arr['login_bg_color'] = DI::config()->get('frio', 'login_bg_color'); + $arr = [ + 'scheme' => DI::config()->get('frio', 'scheme', DI::config()->get('frio', 'schema')), + 'scheme_accent' => DI::config()->get('frio', 'scheme_accent'), + 'share_string' => '', + 'nav_bg' => DI::config()->get('frio', 'nav_bg'), + 'nav_icon_color' => DI::config()->get('frio', 'nav_icon_color'), + 'link_color' => DI::config()->get('frio', 'link_color'), + 'background_color' => DI::config()->get('frio', 'background_color'), + 'contentbg_transp' => DI::config()->get('frio', 'contentbg_transp'), + 'background_image' => DI::config()->get('frio', 'background_image'), + 'bg_image_option' => DI::config()->get('frio', 'bg_image_option'), + 'login_bg_image' => DI::config()->get('frio', 'login_bg_image'), + 'login_bg_color' => DI::config()->get('frio', 'login_bg_color'), + ]; return frio_form($arr); } @@ -183,7 +190,5 @@ function frio_form($arr) $ctx['$login_bg_color'] = ['frio_login_bg_color', DI::l10n()->t('Login page background color'), $arr['login_bg_color'], DI::l10n()->t('Leave background image and color empty for theme defaults'), false]; } - $o = Renderer::replaceMacros($t, $ctx); - - return $o; + return Renderer::replaceMacros($t, $ctx); }