Deff
Тема ваще зачетная, много где видел такое, все забывал тут написать)
ток чот завис с кодированием самого сообщения
поторопись) я жду его)) сразу себе поставлю
когда думаешь доделать?)
Отредактировано kosoy (Чт, 8 Мар 2012 12:40:25)
Единый форум поддержки |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер
Deff
Тема ваще зачетная, много где видел такое, все забывал тут написать)
ток чот завис с кодированием самого сообщения
поторопись) я жду его)) сразу себе поставлю
когда думаешь доделать?)
Отредактировано kosoy (Чт, 8 Мар 2012 12:40:25)
В связи с последними изменениями в форме ответа,
выкладываю единственный (на текущий момент) безглючный скрипт спойлера
описание открытой кнопки излишне, имхо. гораздо проще прописать в описание "Закрыть" как стандарт.
у меня на данный момент имеется следующий скрипт спойлера, который без проблем работает:
<!--Spoiler--> <script type="text/javascript"> function tag_spolier() {var FoundErrors = ''; var enterTITLE = prompt("Введите описание скрытого под спойлером текста", 'Спойлер'); bbcode('[spoiler='+enterTITLE+']','[/spoiler]');} $(function(){ $("div.quote-box > cite > input.spoiler-button").click(function(){ $(this).parents("div.quote-box").find("blockquote.quote-box").toggle("normal"); var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a); }); }); $('td#button-code').before('<td style=\'background-image:url("http://[b]ссылка[/b].ru/uploads/000a/a8/84/75107-1.png")\' onclick="tag_spolier()"><img src="/i/blank.gif" alt="Спойлер"></td>'); $("div.post-content").map(function () { text = $(this).html(); if(text.indexOf("[/spoiler]" ) != -1) { spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/gi $(this).html(text.replace(spoilerr, "<div class='quote-box' style='padding:1px;background: none;border: 0;'><cite style='width:100%;margin:0;'><input id='close' class='spoiler-button' style='width:140px;font-size:10px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$1'></cite><blockquote class='quote-box' style='display:none; width:97%;border: 1px solid #88b5df;margin:0;'>$2</blockquote></div>")) } }); </script>
однако, после последних нововведений, кнопка спойлера в форме ответа сдвинулась в сторону:
можно ли это как-то исправить? я подозреваю, что нужно изменить позицию кнопки, потому прошу указать в вышеуказанном скрипте, какие параметры нужно изменить.
ещё заметил, что всплывающее описание кнопки "Спойлер" при наведении курсора отсутствует. можно ли это добавить в скрипт?
Отредактировано Caligula (Чт, 8 Мар 2012 16:55:29)
можно ли это как-то исправить? я подозреваю, что нужно изменить позицию кнопки, потому прошу указать в вышеуказанном скрипте, какие параметры нужно изменить.
вот со всеми исправлениями
<!--Spoiler--> <script type="text/javascript"> function tag_spolier() {var FoundErrors = ''; var enterTITLE = prompt("Введите описание скрытого под спойлером текста", 'Спойлер'); bbcode('[spoiler='+enterTITLE+']','[/spoiler]');} $(function(){ $("div.quote-box > cite > input.spoiler-button").click(function(){ $(this).parents("div.quote-box").find("blockquote.quote-box").toggle("normal"); var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a); }); }); $('td#button-code').before('<td style=\'background-image:url("http://[b]ссылка[/b].ru/uploads/000a/a8/84/75107-1.png");background-repeat:no-repeat;background-position:center center;\' onclick="tag_spolier()"><img src="/i/blank.gif" alt="Спойлер" title="Спойлер"></td>'); $('div.post-content p').map(function () { text = $(this).html(); if(text.indexOf("[/spoiler]" ) != -1) { spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/gi $(this).html(text.replace(spoilerr, "<div class='quote-box' style='padding:1px;background: none;border: 0;'><cite style='width:100%;margin:0;'><input id='close' class='spoiler-button' style='width:140px;font-size:10px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$1'></cite><blockquote class='quote-box' style='display:none; width:97%;border: 1px solid #88b5df;margin:0;'>$2</blockquote></div>")) } }); </script>
Romych, спасибо!
чтобы было понятно, что же всё таки менять в скрипте при смещении кнопки связанными с последними изменениями в форме ответа,
расскажу подробнее, что нужно добавить,
в каждой версии скрипта есть строка добавления кнопки, добавим центрирование фона кнопки
$('td#button-code').before('<td style=\'background-image:url("http://ссылка.ru/uploads/000a/a8/84/75107-1.png");background-repeat:no-repeat;background-position:center center;\' onclick="tag_spolier()"><img src="/i/blank.gif" alt="Спойлер" title="Спойлер"></td>');
вот со всеми исправлениями
при большом количестве текста, помещаемого под спойлер, он перестаёт работать. видны только теги спойлера в тексте, но кнопки спойлера нет, равно как и сама функция не выполняется.
ПС: проблема была и раньше, просто модератор мне об этом не сообщал, а сам я спойлером почти не пользовался.
Отредактировано Caligula (Пт, 9 Мар 2012 16:14:40)
Caligula, это из-за перевода строк в тексте скрываемом спойлером
Следует использовать этот спойлер: Обновленный спойлер
RUSSIAN_GOBLIN
Ну минус - нет расширений для надписей скрыть - показать
И нун где то найти тему - как заменить теги предыдущего(через цензуру) на данный(хотя есть вариант отсавить код воспроизведения от старого варианта - убрав ток кнопку
Отредактировано Deff (Пт, 9 Мар 2012 19:37:54)
Ну минус - нет расширений для надписей скрыть - показать
Всм?
И нун где то найти тему - как заменить теги предыдущего(через цензуру) на данный(хотя есть вариант отсавить код воспроизведения от старого варианта - убрав ток кнопку
Разве реально через цензуру переделать предыдущие спойлеры под работу твоего?
Там же по-разному: через пользовательские bbcode и через особую цитату.
Оптимальный вариант - убрать кнопку старого спойлера.
Сейчас твой спойлер изучаю. Добился его не работоспособности
Хочу переделать для Настройщика.
Разве реально через цензуру переделать предыдущие спойлеры под работу твоего?
Да уже раз тридцать делал, где то есть две темы - де пояснял в подробностях
по простому тег [spoiler] заменяецо на тег [quote==Spoiler]через цензуру (но поскольку есть несколько вариантов - замен три или четыре (задний тег один и тот жа
Отредактировано Deff (Пт, 9 Мар 2012 20:01:54)
Deff, а да... верно так можно сделать. Кстати если заменить =spoiler, на #spoiler - перестаёт работать, не скрыает. И не только при такой замене. Привередливый скрипт или jquery бастует(
RUSSIAN_GOBLIN
Ну во первых можно и так, но равно перед ним сделано спецом - Поскольку такие ники -редкость, пусть ходят под спойлером - коли хотят
2 два знака равно - парсяцо легко
Caligula, это из-за перевода строк в тексте скрываемом спойлером
в общем-то иногда спойлер срабатывает и с большим текстом, а иногда нет. тестировался на идентичном тексте, где были переводы строк.
Следует использовать этот спойлер: Обновленный спойлер
теперь все теги полетят, т.е все предыдущие спойлеры на форуме коту под хвост.
с цензурой я примерно понял, однако там скорее всего нужен будет какой-нибудь дополнительный скрипт.
Ну минус - нет расширений для надписей скрыть - показать
расширение нужно только для показать. как в скрипте выше.
не знаю, может я неправ, но я не вижу логики переименовывать кнопку скрыть. ясное дело, что когда хочешь снова закрыть спойлер, то возвращаешься назад. какое название ей можно прописывать? "хочу вернуться"?)) ну это же не имеет смысла. только лишнее всплывающее окно при создании спойлера, которое всё равно надо "перепрыгивать".
в общем, тот "старый" спойлер по своему принципу работает на славу, сам скрипт где-то в два раза короче аналогов и не разбит на хтмл-верх/низ (что очень удобно). только эта проблема с пропаданием спойлера время от времени мешает. а в идеале давно пора бы уже встроить это в движок.
при большом количестве текста, помещаемого под спойлер, он перестаёт работать.
с большим количеством символов всё ништяк, всё дело в том, что регулярка не справляется с пустыми строками (т.е. если текст разбит на абзацы, то начинаются проблемы),
об этой проблеме я знаю уже давно,
перепробовал кучу вариантов регулярок, но пока тщетно
Romych
spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/gi
Ксать регулярку как то делал, ща найду выложу
Отредактировано Deff (Пт, 9 Мар 2012 20:57:40)
Romych
А чем тебе одинарная кавычка не понравилась ?
spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/ig
Если без вложенности - я бы сделал так,
spoilerr = /\[spoiler=(.*?)\]([\s\S]*?)\[\/spoiler\]/img
Если с вложенностью - то будет через функцию, если надо - выложу
Отредактировано Deff (Пт, 9 Мар 2012 21:22:38)
А чем тебе одинарная кавычка не понравилась ?
spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/ig
это как раз из-за несрабатывания традиционной комбинации - (.*?) с большим количеством символов (большими текстами) в ходе экспериментов пришёл к тому, что работа нормализуется, если исключить какой-нибудь символ, а эта одинарная кавычка находящаяся на одной клавише с буквой Ё (действительно практически никем не применяется) ))
Romych
точка не учитывает переводы строк
учитывает ток [\s\S] и без img парсицо лишь до конца текущего тега p
Отредактировано Deff (Пт, 9 Мар 2012 21:28:40)
Romych
Ксать не пойму накой заморачивацо регулярками когда можно стразу заменить
/\[spoiler=(.*?)\]/img на <span class=spoiler alt='$1'>
B птом перепарсить span.spoiler на то что нун ?
учитывает ток [\s\S] и без img парсицо лишь до конца текущего тега p
Deff
я не настолько глуп, как ты думаешь,
ещё раз повторяю, я перепробовал множество вариантов регулярок, в том числе и с флагом m, и такой вариант тоже
spoil = /\[spoiler=(.*?)\|(.*?)\]([\s\S]*)\[\/spoiler\]/gim
не пашет с пустой строкой
Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер