← Скрипты · Защита анкеты
lockedЗащита принятой анкеты
бесплатноЗапрещает игроку редактировать принятую анкету, но не мешает править хронологию и остальные сообщения.
howЧто блокируется
- В выбранных разделах у первого сообщения темы исчезает штатная кнопка «Редактировать».
- При прямом переходе по адресу формы редактирования игрок возвращается в тему.
- Администраторы и модераторы сохраняют доступ; список групп-исключений можно изменить.
- Хронологию и остальные сообщения темы скрипт не затрагивает.
setupКак поставить
Вставьте код
Администрирование → Формы → HTML верх. Вставьте код ниже целиком.
Укажите разделы
В
forumIdsвпишите номера разделов с анкетами. Из адресаviewforum.php?id=6нужна цифра 6.Проверьте исключения
В
bypassGroupIdsперечислены группы, которым разрешено редактирование. По умолчанию1, 2— администраторы и модераторы.
<!-- Запрет редактирования первого поста © Mojito Studio
Прямая ссылка — при поддержке kozhilya: https://forumd.ru/profile.php?id=7032 -->
<script>
window.MojitoFirstPostLock = {
forumIds: [6], // id форумов для которых работает скрипт
bypassGroupIds: [1, 2] // группы пользователей для которых скрипт не работает
};
(function(config) {
if (typeof window.GroupID === 'undefined') return;
if (config.bypassGroupIds.includes(Number(window.GroupID))) return;
const selectors = config.forumIds.map(function(forumId) {
return '#pun-viewtopic[data-forum-id="' + Number(forumId) + '"] div.topicpost li.pl-edit';
});
if (!selectors.length) return;
const style = document.createElement('style');
style.textContent = selectors.join(',') + '{display:none!important}';
document.head.appendChild(style);
})(window.MojitoFirstPostLock);
$(document).ready(async function() {
const loadForumId = window.MojitoFirstPostLock.forumIds;
const loadForumGroups = window.MojitoFirstPostLock.bypassGroupIds;
if ($('#pun-viewtopic').length) {
const forumId = parseInt($('#pun-viewtopic').attr('data-forum-id'));
if (loadForumId.includes(forumId)) {
if (loadForumGroups.includes(GroupID)) {
return;
}
await new Promise(resolve => setTimeout(resolve, 100));
$('div.topicpost li.pl-edit').remove();
}
}
if ($('#pun-edit').length) {
const forumId = +$('.crumbs a[href*="viewforum"]').attr('href').match(/[?&]id=(\d+)/)[1];
if (loadForumId.includes(forumId)) {
if (loadForumGroups.includes(GroupID)) {
return;
}
const topicId = +$('.crumbs a[href*="viewtopic"]').attr('href').match(/[?&]id=(\d+)/)[1];
const firstPostId = +(await (await fetch(`/api.php?method=post.get&topic_id=${topicId}&fields=id&limit=1`)).json()).response[0].id;
const thisPostId = +location.search.match(/[?&]id=(\d+)/)[1];
if (thisPostId != firstPostId) {
return;
}
await new Promise(resolve => setTimeout(resolve, 100));
window.location.replace(`/viewtopic.php?id=${topicId}`);
}
}
});
</script>
Защита прямого перехода разработана при поддержке kozhilya.
moreНужен другой скрипт?
Этот скрипт можно использовать бесплатно. Если нужна другая механика для форума — опишите задачу.
Написать в Telegram