|
@@ -18,13 +18,15 @@ trait PostFormTrait
|
|
/**
|
|
/**
|
|
* Возвращает данные для построения формы создания темы/сообщения
|
|
* Возвращает данные для построения формы создания темы/сообщения
|
|
*/
|
|
*/
|
|
- protected function messageForm(array $args, Model $model, string $marker, bool $editPost = false, bool $editSubject = false, bool $quickReply = false): array
|
|
|
|
|
|
+ protected function messageForm(Model $model, string $marker, array $args, bool $edit, bool $first, bool $quick): array
|
|
{
|
|
{
|
|
$vars = $args['_vars'] ?? null;
|
|
$vars = $args['_vars'] ?? null;
|
|
|
|
+
|
|
unset($args['_vars']);
|
|
unset($args['_vars']);
|
|
|
|
|
|
- $autofocus = $quickReply ? null : true;
|
|
|
|
- $form = [
|
|
|
|
|
|
+ $notPM = $this->fIndex !== self::FI_PM;
|
|
|
|
+ $autofocus = $quick ? null : true;
|
|
|
|
+ $form = [
|
|
'action' => $this->c->Router->link($marker, $args),
|
|
'action' => $this->c->Router->link($marker, $args),
|
|
'hidden' => [
|
|
'hidden' => [
|
|
'token' => $this->c->Csrf->create($marker, $args),
|
|
'token' => $this->c->Csrf->create($marker, $args),
|
|
@@ -44,6 +46,7 @@ trait PostFormTrait
|
|
];
|
|
];
|
|
|
|
|
|
$fieldset = [];
|
|
$fieldset = [];
|
|
|
|
+
|
|
if ($this->user->isGuest) {
|
|
if ($this->user->isGuest) {
|
|
$fieldset['username'] = [
|
|
$fieldset['username'] = [
|
|
'class' => 'w1',
|
|
'class' => 'w1',
|
|
@@ -67,7 +70,7 @@ trait PostFormTrait
|
|
$autofocus = null;
|
|
$autofocus = null;
|
|
}
|
|
}
|
|
|
|
|
|
- if ($editSubject) {
|
|
|
|
|
|
+ if ($first) {
|
|
$fieldset['subject'] = [
|
|
$fieldset['subject'] = [
|
|
'class' => 'w0',
|
|
'class' => 'w0',
|
|
'type' => 'text',
|
|
'type' => 'text',
|
|
@@ -99,75 +102,78 @@ trait PostFormTrait
|
|
$form['sets']['uesm'] = [
|
|
$form['sets']['uesm'] = [
|
|
'fields' => $fieldset,
|
|
'fields' => $fieldset,
|
|
];
|
|
];
|
|
- $autofocus = null;
|
|
|
|
|
|
|
|
- $fieldset = [];
|
|
|
|
- if (
|
|
|
|
- $this->user->isAdmin
|
|
|
|
- || $this->user->isModerator($model)
|
|
|
|
- ) {
|
|
|
|
- if ($editSubject) {
|
|
|
|
- $fieldset['stick_topic'] = [
|
|
|
|
- 'type' => 'checkbox',
|
|
|
|
- 'label' => __('Stick topic'),
|
|
|
|
- 'value' => '1',
|
|
|
|
- 'checked' => (bool) ($vars['stick_topic'] ?? false),
|
|
|
|
- ];
|
|
|
|
- $fieldset['stick_fp'] = [
|
|
|
|
- 'type' => 'checkbox',
|
|
|
|
- 'label' => __('Stick first post'),
|
|
|
|
- 'value' => '1',
|
|
|
|
- 'checked' => (bool) ($vars['stick_fp'] ?? false),
|
|
|
|
- ];
|
|
|
|
- } elseif (! $editPost) {
|
|
|
|
- $fieldset['merge_post'] = [
|
|
|
|
- 'type' => 'checkbox',
|
|
|
|
- 'label' => __('Merge posts'),
|
|
|
|
- 'value' => '1',
|
|
|
|
- 'checked' => (bool) ($vars['merge_post'] ?? true),
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
|
|
+ $autofocus = null;
|
|
|
|
+ $fieldset = [];
|
|
|
|
|
|
|
|
+ if ($notPM) {
|
|
if (
|
|
if (
|
|
- $editPost
|
|
|
|
- && ! $model->user->isGuest
|
|
|
|
- && ! $model->user->isAdmin
|
|
|
|
|
|
+ $this->user->isAdmin
|
|
|
|
+ || $this->user->isModerator($model)
|
|
) {
|
|
) {
|
|
- $fieldset['edit_post'] = [
|
|
|
|
- 'type' => 'checkbox',
|
|
|
|
- 'label' => __('EditPost edit'),
|
|
|
|
- 'value' => '1',
|
|
|
|
- 'checked' => (bool) ($vars['edit_post'] ?? false),
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (
|
|
|
|
- ! $editPost
|
|
|
|
- && '1' == $this->c->config->o_topic_subscriptions
|
|
|
|
- && $this->user->email_confirmed
|
|
|
|
- ) {
|
|
|
|
- $subscribed = ! $editSubject && $model->is_subscribed;
|
|
|
|
|
|
+ if ($first) {
|
|
|
|
+ $fieldset['stick_topic'] = [
|
|
|
|
+ 'type' => 'checkbox',
|
|
|
|
+ 'label' => __('Stick topic'),
|
|
|
|
+ 'value' => '1',
|
|
|
|
+ 'checked' => (bool) ($vars['stick_topic'] ?? false),
|
|
|
|
+ ];
|
|
|
|
+ $fieldset['stick_fp'] = [
|
|
|
|
+ 'type' => 'checkbox',
|
|
|
|
+ 'label' => __('Stick first post'),
|
|
|
|
+ 'value' => '1',
|
|
|
|
+ 'checked' => (bool) ($vars['stick_fp'] ?? false),
|
|
|
|
+ ];
|
|
|
|
+ } elseif (! $edit) {
|
|
|
|
+ $fieldset['merge_post'] = [
|
|
|
|
+ 'type' => 'checkbox',
|
|
|
|
+ 'label' => __('Merge posts'),
|
|
|
|
+ 'value' => '1',
|
|
|
|
+ 'checked' => (bool) ($vars['merge_post'] ?? true),
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
|
|
- if ($quickReply) {
|
|
|
|
if (
|
|
if (
|
|
- $subscribed
|
|
|
|
- || $this->user->auto_notify
|
|
|
|
|
|
+ $edit
|
|
|
|
+ && ! $model->user->isGuest
|
|
|
|
+ && ! $model->user->isAdmin
|
|
) {
|
|
) {
|
|
- $form['hidden']['subscribe'] = '1';
|
|
|
|
|
|
+ $fieldset['edit_post'] = [
|
|
|
|
+ 'type' => 'checkbox',
|
|
|
|
+ 'label' => __('EditPost edit'),
|
|
|
|
+ 'value' => '1',
|
|
|
|
+ 'checked' => (bool) ($vars['edit_post'] ?? false),
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (
|
|
|
|
+ ! $edit
|
|
|
|
+ && '1' == $this->c->config->o_topic_subscriptions
|
|
|
|
+ && $this->user->email_confirmed
|
|
|
|
+ ) {
|
|
|
|
+ $subscribed = ! $first && $model->is_subscribed;
|
|
|
|
+
|
|
|
|
+ if ($quick) {
|
|
|
|
+ if (
|
|
|
|
+ $subscribed
|
|
|
|
+ || $this->user->auto_notify
|
|
|
|
+ ) {
|
|
|
|
+ $form['hidden']['subscribe'] = '1';
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ $fieldset['subscribe'] = [
|
|
|
|
+ 'type' => 'checkbox',
|
|
|
|
+ 'label' => $subscribed ? __('Stay subscribed') : __('New subscribe'),
|
|
|
|
+ 'value' => '1',
|
|
|
|
+ 'checked' => (bool) ($vars['subscribe'] ?? ($subscribed || $this->user->auto_notify)),
|
|
|
|
+ ];
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- $fieldset['subscribe'] = [
|
|
|
|
- 'type' => 'checkbox',
|
|
|
|
- 'label' => $subscribed ? __('Stay subscribed') : __('New subscribe'),
|
|
|
|
- 'value' => '1',
|
|
|
|
- 'checked' => (bool) ($vars['subscribe'] ?? ($subscribed || $this->user->auto_notify)),
|
|
|
|
- ];
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (
|
|
if (
|
|
- ! $quickReply
|
|
|
|
|
|
+ ! $quick
|
|
&& '1' == $this->c->config->o_smilies
|
|
&& '1' == $this->c->config->o_smilies
|
|
) {
|
|
) {
|
|
$fieldset['hide_smilies'] = [
|
|
$fieldset['hide_smilies'] = [
|
|
@@ -186,10 +192,11 @@ trait PostFormTrait
|
|
}
|
|
}
|
|
|
|
|
|
if (
|
|
if (
|
|
- $editSubject
|
|
|
|
|
|
+ $first
|
|
|
|
+ && $notPM
|
|
&& $this->user->usePoll
|
|
&& $this->user->usePoll
|
|
) {
|
|
) {
|
|
- $term = $editPost && $model->parent->poll_term
|
|
|
|
|
|
+ $term = $edit && $model->parent->poll_term
|
|
? $model->parent->poll_term
|
|
? $model->parent->poll_term
|
|
: $this->c->config->i_poll_term;
|
|
: $this->c->config->i_poll_term;
|
|
|
|
|
|
@@ -263,7 +270,6 @@ trait PostFormTrait
|
|
$this->pageHeader('pollJS', 'script', 9000, [
|
|
$this->pageHeader('pollJS', 'script', 9000, [
|
|
'src' => $this->publicLink('/js/poll.js'),
|
|
'src' => $this->publicLink('/js/poll.js'),
|
|
]);
|
|
]);
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return $form;
|
|
return $form;
|