• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Скрипт запрета удаление тем на форуме
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 1 | 17:38:23
Здравсвуйте,нужен скрипт для запрета удаления определенных тем форума.Чтоб не кто не мог удалить тему пока прописан скрипт.
Не в самой теме не было окна/строчки модерирования темы (можно полностью чтоб ее не было), не в самом разделе где находится тема - не было иконки удаления возле названия.
Shеriff
Сообщений: 3187
Репутация: 2662

Сообщение # 2 | 18:06:17
vitya5181, подобное сделать нельзя. Возможно всего лишь скрыть модер-панель у необходимой темы, но это не сделает запрет на удаление темы. Пример:
Код
#tt58343 a.modBut{display:none}

Как узнать айди темы описано тут → //forum.ucoz.ru/forum/6-46098-963385-16-1356645637

Профессиональный сервис опросов WebAsk
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 3 | 18:49:55
Shеriff, ясно sad
спасибо
TommyPanda
Сообщений: 28
Репутация: 15

Сообщение # 4 | 13:23:34
Как на счёт ограничения прав доступа пользователям? Или нужно именно определённых тем, а не всех? Простите, не спал - трижды перечитал, но в целом так и не понял задачу. Запретить удаление отдельных при наличии прав удаления тем - думаю, действительно невозможно без PHP, как минимум. Но решения на PHP подсказать, к сожалению, не могу.

В продолжение темы скрытия кнопки удаления (dislpay:none) - предполагаю, что надёжней будет её вовсе удалять скриптом - jquery: .remove()
В первом случае (dislpay:none), просто скрыв кнопку - любой школьник обладающий основами CSS - восстановит вид через консоль или Firebug. А если вырезать кнопку полностью по завершению загрузки страницы, то чтобы удалить тему - придётся напрячься чуточку больше.

Я не знаю, какие классы на форуме. нет возможности проверить. Буду руководствоваться сообщением товарища выше и указанными им классами и идентификаторами для определения нужной кнопки. Насколько я понял, "#tt58343" - это идентификатор темы, родитель в котором лежит соответствующая кнопка удалить - тег А с классом "modBut". Исходя из этого скрипт, который вырезает кнопки только нужных тем. Нужно просто в массиве topics через запятую указать ID нужных тем:


Код
<script>
$(function() {  var topics = ['58343', '100', '355'];
   for(i=0;i<topics.length;i++) {
     $('#tt'+topics[i]+' a.modBut').remove()
   }});</script>

Скрипт с использование jQuery. Напомню, кто забыл, он по-умолчанию вшит во все сайты Ucoz.
Скрипт ставим в шаблон форума. Выполняется он при завершении загрузки страницы - так что можно ставить в любое место - в head, до контента, после контента.
Shеriff
Сообщений: 3187
Репутация: 2662

Сообщение # 5 | 15:22:57
TommyPanda, как бы красиво не преподнести на блюдечке – это всё равно не решит проблему. Например в Опере (или в другом браузере) зайдя в исходный код можно удалить данный скрипт (или заменить его значение) и тема уже будет доступна с модер-панелью и проблем с удалением темы «нубу\новичку» не возникнет.
Цитата TommyPanda ()
В первом случае (dislpay:none), просто скрыв кнопку - любой школьник обладающий основами CSS - восстановит вид через консоль или Firebug.

Смешно. Как я описывал ваше – в вашем случае аналогично выйдет. Много писанины, а толку нуль.

К тому же, мы забыли что имеется модер-панель в самой теме. Скрыть не задев ничего её можно также стилями с помощью условных операторов. Также прямой адрес удаления никто не закрывал (/forum/38-58343-0-21).

Профессиональный сервис опросов WebAsk
TommyPanda
Сообщений: 28
Репутация: 15

Сообщение # 6 | 15:30:27
Удалить скрипт, чтобы он не выполнялся при перезагрузке страницы, куда сложнее чем выключить display:none.
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 7 | 17:06:33
Цитата TommyPanda ()
Удалить скрипт, чтобы он не выполнялся при перезагрузке страницы, куда сложнее чем выключить display:none.

Чем же это? Ctrl + U, вырезал, сохранил. Даже проще, т.к. не надо лезть в файл стилей, чтобы оттуда вырезать.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 8 | 02:18:16
Shеriff, TommyPanda, в моем случаем нужно только визуально (а именно в самой теме модер-панель и в разделе возле этой темы убрать иконку удаления,можно и переноса и под первым сообщением темы,убрать - Удалить) скрыть все возможности удаления определенных тем,то что через ссылку будет возможно я это знаю.

Добавлено (29 Окт 2013, 01:50:30)
---------------------------------------------
Пока удалось скрыть только кнопку удаления темы возле ее названия в разделе,не заходя в саму тему

Добавлено (29 Окт 2013, 02:18:16)
---------------------------------------------
Помогите скрыть:
модер-панель в самой теме
кнопку удалить под первым сообщением темы - то есть тему

Сообщение отредактировал vitya5181 - Вторник, 29 Окт 2013, 02:03:05
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 9 | 02:49:15
vitya5181, скрыть опции модератора - в Общий вид форума до $BODY$:
Цитата
<?($URI_ID$ == "frTreadздесь_ID_темы")?>
<style type="text/css">
form[name="moderoptions"], moderOptions, #modBut2 {display:none;}
</style>
<?endif?>


Кнопку удалить в первом сообщении тоже надо скрывать, но для этого надо видеть код шаблона "Вид сообщений"

Или поступить проще - скрыть саму форму подтверждения на странице удаления темы - заменить $BODY$ на:
Цитата
<?($URI_ID$ == "threadDelete" && strpos($REQUEST_URI$,"-здесь_ID_темы-0-21")!= -1)?><?else?>$BODY$<?endif?>

Сообщение отредактировал Drinko - Вторник, 29 Окт 2013, 03:02:31
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 10 | 16:02:33
Drinko, первый код не работает,пишет вот что Не закрыт один или более условный оператор (<?if?>)
при открытии иф вначале,тоже не работает/
второй тоже самое
Shеriff
Сообщений: 3187
Репутация: 2662

Сообщение # 11 | 16:14:37
vitya5181,
Код
<?if($URI_ID$ == "frTreadздесь_ID_темы")?>  
  <style type="text/css">  
  form[name="moderoptions"], moderOptions, #modBut2 {display:none;}  
  </style>  
  <?endif?>


Код
<?if($URI_ID$ == "threadDelete" && strpos($REQUEST_URI$,"-здесь_ID_темы-0-21")!= -1)?><?else?>$BODY$<?endif?>

Профессиональный сервис опросов WebAsk
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 12 | 16:39:36
Shеriff, спасибо,только во втором случае не получается задать несколько тем.

Добавлено (29 Окт 2013, 16:39:36)
---------------------------------------------
а все,разобрался,всем спасибо

vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 13 | 18:00:47
Первую тему //forum.ucoz.ru/forum/38-58343-1 уже переместили и закрыли но появилась одна проблема
Данный скрипт запрещает подтверждение удаления ВСЕХ тем а не указанных в нем.Я прописывал несколько тем через or
Как быть?
Прикрепления: 9301862.png (3.0 Kb)
vitya5181
Сообщений: 75
Репутация: 17

Сообщение # 14 | 18:34:42

Вот так вот у меня сейчас прописано в шаблоне

Добавлено (29 Окт 2013, 18:34:42)
---------------------------------------------
можно закрывать

Прикрепления: 1592734.png (5.8 Kb)
Сообщение отредактировал vitya5181 - Вторник, 29 Окт 2013, 18:29:59
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 15 | 18:41:27
vitya5181, пробуйте:

Код
<?if($URI_ID$ == "threadDelete" && (strpos($REQUEST_URI$,"-191873-0-21")!= -1 || strpos($REQUEST_URI$,"-4465-0-21")!= -1 || strpos($REQUEST_URI$,"-191969-0-21")!= -1 || strpos($REQUEST_URI$,"-3098-0-21")!= -1))?><?else?>$BODY$<?endif?>

  • Страница 1 из 1
  • 1
Поиск:
Telegram
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!