$created_at = '';
}
- $tpl = Renderer::getMarkupTemplate("jot.tpl");
+ $tpl = Renderer::getMarkupTemplate('jot.tpl');
$o .= Renderer::replaceMacros($tpl, [
'$new_post' => $this->l10n->t('New Post'),
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;
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'])) {
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) {
$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()];
$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;
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'),
$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,
'$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,
<div class="generic-page-wrapper">
- <h2>{{$compose_title}}</h2>
+ <h2>{{$l10n.compose_title}}</h2>
<div id="profile-jot-wrapper">
<form class="comment-edit-form" data-item-id="{{$id}}" id="comment-edit-form-{{$id}}" action="compose/{{$type}}" method="post">
{{*<!--<input type="hidden" name="return" value="{{$return_path}}" />-->*}}
<input type="hidden" name="wall" value="{{$wall}}" />
<div id="jot-title-wrap">
- <input type="text" name="title" id="jot-title" class="jothidden jotforms form-control" placeholder="{{$placeholdertitle}}" title="{{$placeholdertitle}}" value="{{$title}}" tabindex="1" dir="auto" />
+ <input type="text" name="title" id="jot-title" class="jothidden jotforms form-control" placeholder="{{$l10n.placeholdertitle}}" title="{{$l10n.placeholdertitle}}" value="{{$title}}" tabindex="1" dir="auto" />
</div>
- {{if $placeholdercategory}}
+ {{if $l10n.placeholdercategory}}
<div id="jot-category-wrap">
- <input name="category" id="jot-category" class="jothidden jotforms form-control" type="text" placeholder="{{$placeholdercategory}}" title="{{$placeholdercategory}}" value="{{$category}}" tabindex="2" dir="auto" />
+ <input name="category" id="jot-category" class="jothidden jotforms form-control" type="text" placeholder="{{$l10n.placeholdercategory}}" title="{{$l10n.placeholdercategory}}" value="{{$category}}" tabindex="2" dir="auto" />
</div>
{{/if}}
<p class="comment-edit-bb-{{$id}} comment-icon-list">
<span>
- <button type="button" class="btn btn-sm icon bb-img" aria-label="{{$edimg}}" title="{{$edimg}}" data-role="insert-formatting" data-bbcode="img" data-id="{{$id}}" tabindex="7">
+ <button type="button" class="btn btn-sm icon bb-img" aria-label="{{$l10n.edimg}}" title="{{$l10n.edimg}}" data-role="insert-formatting" data-bbcode="img" data-id="{{$id}}" tabindex="7">
<i class="fa fa-picture-o"></i>
</button>
- <button type="button" class="btn btn-sm icon bb-attach" aria-label="{{$edattach}}" title="{{$edattach}}" ondragenter="return commentLinkDrop(event, {{$id}});" ondragover="return commentLinkDrop(event, {{$id}});" ondrop="commentLinkDropper(event);" onclick="commentGetLink({{$id}}, '{{$prompttext}}');" tabindex="8">
+ <button type="button" class="btn btn-sm icon bb-attach" aria-label="{{$l10n.edattach}}" title="{{$l10n.edattach}}" ondragenter="return commentLinkDrop(event, {{$id}});" ondragover="return commentLinkDrop(event, {{$id}});" ondrop="commentLinkDropper(event);" onclick="commentGetLink({{$id}}, '{{$l10n.prompttext}}');" tabindex="8">
<i class="fa fa-paperclip"></i>
</button>
</span>
<span>
- <button type="button" class="btn btn-sm icon bb-url" aria-label="{{$edurl}}" title="{{$edurl}}" onclick="insertFormatting('url',{{$id}});" tabindex="9">
+ <button type="button" class="btn btn-sm icon bb-url" aria-label="{{$l10n.edurl}}" title="{{$l10n.edurl}}" onclick="insertFormatting('url',{{$id}});" tabindex="9">
<i class="fa fa-link"></i>
</button>
- <button type="button" class="btn btn-sm icon underline" aria-label="{{$eduline}}" title="{{$eduline}}" onclick="insertFormatting('u',{{$id}});" tabindex="10">
+ <button type="button" class="btn btn-sm icon underline" aria-label="{{$l10n.eduline}}" title="{{$l10n.eduline}}" onclick="insertFormatting('u',{{$id}});" tabindex="10">
<i class="fa fa-underline"></i>
</button>
- <button type="button" class="btn btn-sm icon italic" aria-label="{{$editalic}}" title="{{$editalic}}" onclick="insertFormatting('i',{{$id}});" tabindex="11">
+ <button type="button" class="btn btn-sm icon italic" aria-label="{{$l10n.editalic}}" title="{{$l10n.editalic}}" onclick="insertFormatting('i',{{$id}});" tabindex="11">
<i class="fa fa-italic"></i>
</button>
- <button type="button" class="btn btn-sm icon bold" aria-label="{{$edbold}}" title="{{$edbold}}" onclick="insertFormatting('b',{{$id}});" tabindex="12">
+ <button type="button" class="btn btn-sm icon bold" aria-label="{{$l10n.edbold}}" title="{{$l10n.edbold}}" onclick="insertFormatting('b',{{$id}});" tabindex="12">
<i class="fa fa-bold"></i>
</button>
- <button type="button" class="btn btn-sm icon quote" aria-label="{{$edquote}}" title="{{$edquote}}" onclick="insertFormatting('quote',{{$id}});" tabindex="13">
+ <button type="button" class="btn btn-sm icon quote" aria-label="{{$l10n.edquote}}" title="{{$l10n.edquote}}" onclick="insertFormatting('quote',{{$id}});" tabindex="13">
<i class="fa fa-quote-left"></i>
</button>
</span>
</p>
<p>
- <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text form-control text-autosize" name="body" placeholder="{{$default}}" rows="7" tabindex="3" dir="auto" dir="auto">{{$body}}</textarea>
+ <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text form-control text-autosize" name="body" placeholder="{{$l10n.default}}" rows="7" tabindex="3" dir="auto" dir="auto">{{$body}}</textarea>
</p>
<p class="comment-edit-submit-wrapper">
{{if $type == 'post'}}
<span role="presentation" class="form-inline">
- <input type="text" name="location" class="form-control" id="jot-location" value="{{$location}}" placeholder="{{$location_set}}"/>
+ <input type="text" name="location" class="form-control" id="jot-location" value="{{$location}}" placeholder="{{$l10n.location_set}}"/>
<button type="button" class="btn btn-sm icon" id="profile-location"
- data-title-set="{{$location_set}}"
- data-title-disabled="{{$location_disabled}}"
- data-title-unavailable="{{$location_unavailable}}"
- data-title-clear="{{$location_clear}}"
- title="{{$location_set}}"
+ data-title-set="{{$l10n.location_set}}"
+ data-title-disabled="{{$l10n.location_disabled}}"
+ data-title-unavailable="{{$l10n.location_unavailable}}"
+ data-title-clear="{{$l10n.location_clear}}"
+ title="{{$l10n.location_set}}"
tabindex="6">
<i class="fa fa-map-marker" aria-hidden="true"></i>
</button>
</span>
{{/if}}
<span role="presentation" id="profile-rotator-wrapper">
- <img role="presentation" id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ <img role="presentation" id="profile-rotator" src="images/rotator.gif" alt="{{$l10n.wait}}" title="{{$l10n.wait}}" style="display: none;" />
</span>
<span role="presentation" id="character-counter" class="grey text-info"></span>
- {{if $preview}}
- <button type="button" class="btn btn-defaul btn-sm" onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" tabindex="5"><i class="fa fa-eye"></i> {{$preview}}</button>
- {{/if}}
- <button type="submit" class="btn btn-primary btn-sm" id="comment-edit-submit-{{$id}}" name="submit" tabindex="4"><i class="fa fa-envelope"></i> {{$submit}}</button>
+ <button type="button" class="btn btn-defaul btn-sm" onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" tabindex="5"><i class="fa fa-eye"></i> {{$l10n.preview}}</button>
+ <button type="submit" class="btn btn-primary btn-sm" id="comment-edit-submit-{{$id}}" name="submit" tabindex="4"><i class="fa fa-envelope"></i> {{$l10n.submit}}</button>
</p>
<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
{{if $type == 'post'}}
- <h3>{{$visibility_title}}</h3>
+ <h3>{{$l10n.visibility_title}}</h3>
{{$acl_selector nofilter}}
<div class="jotplugins">
'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]);
'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]);
}
}
-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', $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'));
+ $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')
+ )
+ )
+ ),
+
+ '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);
}
$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);
}