Размещение поста на форуме от имени пользователя.

+8
2.48K
Любой кто ведёт свой сайт сталкивался с необходимостью иногда размещать запись не под своим основным аккаунтом, а под другим.
Что бы лишний раз не разлогиниваться и перелогиниваться, добавил возможность админу при написании поста указать от чьего имени он будет опубликован.

Иллюстрация




Перед началом сделайте копии изменяемых файлов.



---templates/_default_/components/forum_add.html

после

<input type="text" name="description" class="text-input" style="width: 350px" value="{$thread.description|escape:html}" />

вставить

  1. {if $is_admin}<input placeholder="user id" name="userid" type="input" value="" />{/if}
---com_forum_view_thread.tpl

после

<textarea id="message" name="message" rows="7"></textarea>

вставить

  1. {if $is_admin}<input placeholder="user id" name="userid" type="input" value="" />{/if}


---/components/forum/fronted.php

Заменить

  1. $post_id = $model->addPost(array(
  2. 'thread_id' => $thread['id'],
  3. 'user_id' => $inUser->id,
  4. 'pinned' => $post_pinned,
  5. 'content' => $message_bb,
  6. 'content_html' => $message_html,
  7. 'pubdate' => date("Y-m-d H:i:s"),
  8. 'editdate' => date("Y-m-d H:i:s")
  9. ));
на

  1. $topic_user_id = cmsCore::request('userid', 'int', '0');
  2. if($topic_user_id&&$inUser->is_admin){
  3. $topic_user = $topic_user_id;
  4. $topic_user_logdate = date("Y-m-d H:i:s");
  5. $inDB->query("UPDATE cms_users SET logdate = '$topic_user_logdate' WHERE id= '$topic_user'");
  6. } else {
  7. $topic_user = $inUser->id;
  8. }
  9.  
  10.  
  11.  
  12. $post_id = $model->addPost(array(
  13. 'thread_id' => $thread['id'],
  14. 'user_id' => $topic_user,
  15. 'pinned' => $post_pinned,
  16. 'content' => $message_bb,
  17. 'content_html' => $message_html,
  18. 'pubdate' => date("Y-m-d H:i:s"),
  19. 'editdate' => date("Y-m-d H:i:s")
  20. ));

В этом же файле ниже

  1. cmsActions::log('add_thread', array(
  2. 'object' => $thread['title'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-1.html',
  4. 'object_id' => $thread['id'],
  5. 'target' => $forum['title'],
  6. 'target_url' => '/forum/'.$forum['id'],
  7. 'target_id' => $forum['id'],
  8. 'description' => $message_post
  9. ));
Заменить на

  1. cmsActions::log('add_thread', array(
  2. 'object' => $thread['title'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-1.html',
  4. 'object_id' => $thread['id'],
  5. 'target' => $forum['title'],
  6. 'target_url' => '/forum/'.$forum['id'],
  7. 'target_id' => $forum['id'],
  8. 'description' => $message_post,
  9. 'user_id' => $topic_user
  10.  
  11. ));
И

  1. cmsActions::log('add_fpost', array(
  2. 'object' => $_LANG['MESSAGE'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-'.$total_pages.'.html#'.$post_id,
  4. 'object_id' => $post_id,
  5. 'target' => $thread['title'],
  6. 'target_url' => '/forum/thread'.$thread['id'].'-1.html',
  7. 'target_id' => $thread['id'],
  8. 'description' => $message_post
  9. ));
заменить на

  1. cmsActions::log('add_fpost', array(
  2. 'object' => $_LANG['MESSAGE'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-'.$total_pages.'.html#'.$post_id,
  4. 'object_id' => $post_id,
  5. 'target' => $thread['title'],
  6. 'target_url' => '/forum/thread'.$thread['id'].'.html',
  7. 'target_id' => $thread['id'],
  8. 'description' => $message_post,
  9. 'user_id' => $topic_user
  10. ));

По идее, для удобства надо бы сделать выпадающий список пользователей, может быть позже добавлю...
Вроде ничего не забыл, у меня работает, побочных эффектов пока не обнаружил.
+1
Kantona Kantona 9 лет назад #
Полезная вещь))) Спасибо! Еще бы оформить в виде компонента, и не менять стандартные файлы!))
Нил™ Нил™ 9 лет назад #
Комментарий удален
+1
Pasechnik Pasechnik 9 лет назад #
Спасибо! Добавить бы возможность отложенной публикации всех этих постов, получилась бы стоящая вещь. Заказывал подобный компонент у буржуев для SMF форума. Позволяет набить постов на несколько месяцев вперед, с фотками, цитатами и видео. Создается иллюзия живого форума. Для комментов такое тоже бы не помешало. Хрен юзеров уже заставишь писать. 99,99% новых форумов мертвы. Комментарии пишут школьники с бирж за руб.

Сделал бы кто на платной основе, от покупателей отбоя бы не было. smile
Нил™ Нил™ 9 лет назад #
Комментарий удален
0
Pasechnik Pasechnik 9 лет назад #
Развернутый компонент как вы описали, парсер который предлагает letsgo вроде умеет что то такое, если не ошибаюсь.
У letsgo комбайн, узкоспециализированные плюшки лучше.

На SMF у меня публикация через редактор с выбором пользователя и времени публикации, с правами на Админа. Там же выбирается id и название темы куда публиковать, можно задать новую, закрыть тему.
+1
Def Def 9 лет назад #
для двойки бы такой вариант, чтобы через реавторизатор не делать)

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.