Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как определить автора. который открыл новость на редактирование?

Как определить автора. который открыл новость на редактирование?


     30.12.2015    Все вопросы » Хаки    1590

вопрос
Я похожий вопрос уже поднимал здесь

Решил вернуться к своему вопросу :)

Сделал вот что:

1. Добавил в таблицу _post поле edit_news, с типом boolean - по умолчанию 0
2. При нажатии на "редактировать новости" показывается список новостей, если edit_news=1 то заголовок выводится красным - значит новость кто-то редактирует (вывести бы еще кто ее редактирует)
3. При переходе к редактированию новости - в базу данных, в таблицу _post записывается edit_news=1 - он и влияет на пункт 2

4. При нажатии на "Сохранить" - edit_news Меняю на 0

Все работает, все прекрасно. Но мучает один вопрос. А если, например, редактор нажал на редактировать и передумал? Вернулся на предыдущую страницу, или закрыл вкладку с редактируемой новостью, или тупо свет выключили и комп погас - в таком случае edit_news не изменится. Можно ли как-то это учесть? Например привязать к сессии или еще как-нибудь?

Спасибо

Ответа пока нет


7 комментариев

nowheremany
Эксперт

nowheremany - 30 декабря 2015 20:49 -

Обычно делается так - новость извлекается из сайта на редактирование, где её редактируют, потом публикуют. не зависимо от сохранения или не сохранения новости.

Благодарность принимаю тут Связь

arriah
Юзер

arriah - 1 января 2016 16:14 -

Цитата: nowheremany
Обычно делается так - новость извлекается из сайта на редактирование, где её редактируют, потом публикуют. не зависимо от сохранения или не сохранения новости.

Это все понятно. Но работа постороена таким образом:

1. Люди приносят публикации - они лежат в определенной категории, например "temp" (которая запрещена к показу всем. кроме редакторов)
2. Приходят редакторы и видят список таких публикаций - так как редакторов несколько, то существует вероятность, что одну и туже новость будут редактировать несколько редакторов.

3. Сейчас сделано вот что:
а) При открытии новости на редактирование, в базу данных в "edit_news" добавляется $member_id['name']
б) При показе списка новостей в категории "temp" к имени новости добавляется edit_news и заголовок выделяется красным - показывает кто именно открыл новость на редактирование и работает с ней
в) После сохранения новости - edit_news становится пустой строкой и соответственно уходит из категории "temp" (проставляютс янужные категории),
Пока оно работает - то есть редакторы заходя на сайт видят кто и с какой новостью работает - чтобы не мешать

Но это все замечательно. Если бы не одно но - допустим редактор зашел в редактирование новости, остальные это видят. Но редактор передумал ее редактировать, жмет кнопку в браузере "назад" - но запись в базе, что он ее редактирует остается. Или например, свет выключили - вот и хочется добиться универсальности

LazyDev
PHP-developer

LazyDev - 2 января 2016 01:30 -

arriah, а не проще сделать когда он сохраняет редактируемую новость ?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

nowheremany
Эксперт

nowheremany - 2 января 2016 11:46 -

Тогда уж лучше сделать так:
при редактировании новости записывается текущее имя и дата. Пи редактировании другим юзером пишется типа сейчас редактирует имя и дата, если с даты не прошло 30 мин например. При сохранении данные очищаются.

Благодарность принимаю тут Связь

Westus
Юзер

Westus - 1 января 2016 22:59 -

Как вариант выделить на сессию 15 минут и менять значение на 0.

arriah
Юзер

arriah - 4 января 2016 02:33 -

Цитата: Westus
Как вариант выделить на сессию 15 минут и менять значение на 0.

Вот про сессию подробнее, если можно.

При открытии новости на редактирование - создается сессия? Если да, то как ее отловить?

arriah
Юзер

arriah - 4 января 2016 02:45 -

Цитата: Gameer
arriah, а не проще сделать когда он сохраняет редактируемую новость ?

Да при сохранении все нормально меняется.
Вопрос именно в том, что если зайдя в редактирование новости и не нажать кнопку сохранить, а просто например закрыть страницу - то параметры в базе не изменятся

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх