Проверка черновика на автора

Гуру, подскажите в какую сторону копать.

Делал во фронте возможность создания и редактирования тикетов — все получилось. Далее осталось самую малость:

1. Запретить людям редактировать не свои тикеты.
2. Запретить редактировать опубликованные тикеты.

Сломался на первом пункте. Чанк с выводом:

[[!TicketForm?
  &tplFormCreate=`tpl.Custom.Tickets.form.Create`
  &tplFormUpdate=`tpl.Custom.Tickets.form.Update`
  &allowedFields=`parent,pagetitle,content,published,article_status`
  &requiredFields=`parent,pagetitle,content,article_status`
]]

В чанке tpl.Custom.Tickets.form.Update ввывожу:

[[!+modx.user.id:is=`[[*createdby]]`:then=`[[!$tpl.Custom.Tickets.Form.Hidden.Update?]]`:else=`У вас нет прав на редактирование данного тикета!`]]


Ну и в чанке tpl.Custom.Tickets.Form.Hidden.Update вывожу саму форму. После создания тикета, я должен перейти на страничку его редактирования, но мне стабильно выводит сообщение «У вас нет прав на редактирование данного тикета!».

В чанке прописал

[[!+modx.user.id]] 
[[*createdby]]


ID юзера выводит правильно, но ID автора тикета постоянно — 1. Таким образом, я могу редактировать только тикеты которые созданы хед-админом. Что делал:

1. Убирал все TV поля и работал только с родным шаблоном.
2. Создавал тикеты и через front-end и через back-end.
3. Выдавал пользователю-автору неограниченные права.
4. В db ..._tickets_threads все правильно, несколько статей от хед-админа (id=1) и две статьи от пользователя-автора (id=23). Но на сайте выводит [[*createdby]] = всегда 1.

Вроде все уже сделал, все работает, TV поля обновляются, тикеты создаются, условия применяются. Но тут вот такая вот загвоздка. Не понимаю, почему так…
Skip
06 июня 2018, 22:42
118
0

Комментарии: 5

Наумов Алексей
07 июня 2018, 09:01
+1
1. В конструкции [[!+modx.user.id:is= ВСЕГДА будут выполнятся оба условия, но ВЫВОДИТЬСЯ будет только одно из них, по условию. Подумайте, чем это грозит вам.
Лучше уж тогда используйте сниппет Personalize.
2. А еще лучше — напишите свой сниппет-обертку для TicketForm, где сначала проверяйте в коде (а не в шаблоне!) ваши условия, а затем уж вызывайте TicketForm через runSnippet.
3. *createdby — это автор ТЕКУЩЕЙ страницы. Ее точно создал не админ то?
    Skip
    07 июня 2018, 12:31
    0
    Благодарю что откликнулись, это уже приятно.

    Я все таки думаю что для начала нужно решить проблему с условием и странным поведением [[*createdby]]. [[*createdby]] — это автор текущего ресурса, верно? Давайте покажу вам наглядно.

    1. Вот что имеем в базе данных (закрасил остальные записи, что бы показать с каким ресурсом работаю):


    2. Далее идем на сайт и пробуем редактировать 89 ресурс, под пользователем 23 (что бы показать результат, условие на проверку авторства я убрал):


    3. Ну и зайдем в этот же ресурс через админ-панель:


    Почему на front-end странице, автор ресурса = 1? Если он везде [[*createdby]] = 23?
Skip
07 июня 2018, 13:02
0
Добавлю.

1. Пробовал ставить условия на fenom, результат тот же…
{if $_modx->user.id == $_modx->resource.createdby}
	 {'tpl.Custom.Tickets.Form.Hidden.Update' | chunk}
 {else}
	 У вас нет прав на редактирование этой статьи.
{/if}

2. Группа авторов имеет следующие права
file.modx.pro/files/8/9/7/89725193737cdabbe6a02ff2288c4068.jpg
file.modx.pro/files/d/2/c/d2c9bcae473b21d55df1c632839c27ee.jpg