Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер


Обновленный спойлер

Сообщений 201 страница 220 из 314

201

Caligula написал(а):

можно ли это как-то исправить? я подозреваю, что нужно изменить позицию кнопки, потому прошу указать в вышеуказанном скрипте, какие параметры нужно изменить.

вот со всеми исправлениями

Код:
<!--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>

0

202

чтобы было понятно, что же всё таки менять в скрипте при смещении кнопки связанными с последними изменениями в форме ответа,
расскажу подробнее, что нужно добавить,
в каждой версии скрипта есть строка добавления кнопки, добавим центрирование фона кнопки

$('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>');

+2

203

Caligula, это из-за перевода строк в тексте скрываемом спойлером  :disappointed:
Следует использовать этот спойлер: Обновленный спойлер ;)

0

204

RUSSIAN_GOBLIN
Ну минус - нет расширений для надписей скрыть - показать
И нун где то найти тему - как заменить теги предыдущего(через цензуру) на данный(хотя есть вариант отсавить код воспроизведения от старого варианта - убрав ток кнопку

Отредактировано Deff (Пт, 9 Мар 2012 19:37:54)

0

205

Deff написал(а):

Ну минус - нет расширений для надписей скрыть - показать

Всм?

Deff написал(а):

И нун где то найти тему - как заменить теги предыдущего(через цензуру) на данный(хотя есть вариант отсавить код воспроизведения от старого варианта - убрав ток кнопку

Разве реально  через цензуру переделать предыдущие спойлеры под работу твоего?
Там же по-разному: через пользовательские bbcode и через особую цитату.

Оптимальный вариант - убрать кнопку старого спойлера.

Сейчас твой спойлер изучаю. Добился его не работоспособности  :D
Хочу переделать для Настройщика.

0

206

RUSSIAN_GOBLIN написал(а):

Разве реально  через цензуру переделать предыдущие спойлеры под работу твоего?

Да уже раз тридцать делал, где то есть две темы - де пояснял в подробностях
по простому тег [spoiler] заменяецо на тег [quote==Spoiler]через цензуру (но поскольку есть несколько вариантов - замен три  или четыре (задний тег один и тот жа

Отредактировано Deff (Пт, 9 Мар 2012 20:01:54)

0

207

Deff, а да... верно так можно сделать. Кстати если заменить =spoiler, на #spoiler - перестаёт работать, не скрыает. И не только при такой замене. Привередливый скрипт или jquery бастует(

0

208

RUSSIAN_GOBLIN
:crazyfun: Ну во первых можно и так, но равно перед ним сделано спецом - Поскольку такие ники -редкость, пусть ходят под спойлером - коли хотят
2 два знака равно - парсяцо легко

0

209

Caligula написал(а):

при большом количестве текста, помещаемого под спойлер, он перестаёт работать.

с большим количеством символов всё ништяк, всё дело в том, что регулярка не справляется с пустыми строками (т.е. если текст разбит на абзацы, то начинаются проблемы),
об этой проблеме я знаю уже давно,
перепробовал кучу вариантов регулярок, но пока тщетно

0

210

Romych

Romych написал(а):

spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/gi

Ксать регулярку как то делал, ща найду выложу

Отредактировано Deff (Пт, 9 Мар 2012 20:57:40)

0

211

Romych
А чем тебе одинарная кавычка не понравилась ?
spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/ig
Если без вложенности - я бы сделал так,

spoilerr = /\[spoiler=(.*?)\]([\s\S]*?)\[\/spoiler\]/img

Если с вложенностью - то будет через функцию, если надо - выложу

Отредактировано Deff (Пт, 9 Мар 2012 21:22:38)

0

212

Deff написал(а):

А чем тебе одинарная кавычка не понравилась ?
spoilerr = /\[spoiler=(.*?)\]([^`]*?)\[\/spoiler\]/ig

это как раз из-за несрабатывания традиционной комбинации - (.*?) с  большим количеством символов (большими текстами) в ходе экспериментов пришёл к тому, что работа нормализуется, если исключить какой-нибудь символ, а эта одинарная кавычка находящаяся на одной клавише с буквой Ё (действительно практически никем не применяется) ))

0

213

Romych
точка не учитывает переводы строк
учитывает ток [\s\S] и без img парсицо лишь до конца текущего тега p

Отредактировано Deff (Пт, 9 Мар 2012 21:28:40)

0

214

Romych
Ксать не пойму  накой заморачивацо регулярками когда можно стразу заменить
/\[spoiler=(.*?)\]/img на <span class=spoiler alt='$1'>

B птом перепарсить span.spoiler  на то что нун ?

0

215

Deff написал(а):

учитывает ток [\s\S] и без img парсицо лишь до конца текущего тега p

Deff
я не настолько глуп, как ты думаешь,
ещё раз повторяю, я перепробовал множество вариантов регулярок, в том числе и с флагом m, и такой вариант тоже

spoil = /\[spoiler=(.*?)\|(.*?)\]([\s\S]*)\[\/spoiler\]/gim

не пашет с пустой строкой

0

216

Romych
См пост 219 - перепарсить на span - потом each функцией привести к нужному виду (заодно обработается и вложенность - если есть

Отредактировано Deff (Сб, 10 Мар 2012 09:56:55)

0

217

Romych написал(а):

я не настолько глуп, как ты думаешь,
ещё раз повторяю, я перепробовал множество вариантов регулярок, в том числе и с флагом m, и такой вариант тоже

Romych
Он не ищет, не потому что не ищет, а потому что в подстроке $('div.post-content p') просто нет начального тега (он остаёцо в предыдущем p

Все ш таки проще делать вид тега спойлера через мою методу, дабы не парсить потом непарные теги <p> в самом спойлере

Отредактировано Deff (Сб, 10 Мар 2012 11:25:43)

0

218

Deff, молодец. Понял в чём трабл ;)

Допустим есть текст, и мы закроем его спойлером:

Код:
<p>[spoiler]Мама мыла раму.<br/>
Рама мыла маму.[/spoler]</p>

Но если между "Мама мыла раму." и "Рама мыла маму." будет пустая строчка, то HTML-код будет таким:

Код:
<p>[spoiler]Мама мыла раму.</p>
<p>Рама мыла маму.[/spoler]</p>

А теперь обратим внимание на код скрипта:

$(function(){
$('input.spoiler-button').live('click',function(){
$(this).parents('div.spoiler-box').find('blockquote.quote-box').toggle('normal');
var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a); });    });
$('div.post-box p').map(function () {
text = $(this).html();
if(text.indexOf("[/spoiler]" ) != -1) {
$(this).html(text.replace(/\[spoiler=(.*?)\|(.*?)\]([^`]*?)\[\/spoiler\]/gi, "<div class='spoiler-box' style='padding:1px;background: none;border: 0;'><input id='$2' class='spoiler-button' style='width:140px;font-size:10px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$1'><blockquote class='quote-box' style='display:none; width:auto;margin:0;'>$3</blockquote></div>"))
} });

Я запарился) пытаясь найти нужную регулярочку  :D

Отредактировано RUSSIAN_GOBLIN (Сб, 10 Мар 2012 14:52:27)

0

219

В связи с вышеуказанным фактом  ^^  вместо этого скрипта спойлера лучше ставить этот:

Это в HTML-верх:

Код:
<style type="text/css">
#button-spoiler_r {background:url('http://img706.imageshack.us/img706/1943/spoiler.gif') no-repeat center !important;}
</style>
<script type="text/javascript">
FORUM.set('editor.spoiler_r', { name : 'Спойлер', onclick :  function() {tag_spolier()} } );
</script>

А это в НТМL-низ:

Код:
<script type="text/javascript">
function tag_spolier()
{var FoundErrors = '';
var enterTITLE = prompt("Введите описание закрытой кнопки", 'Спойлер');
var enterTITLE2 = prompt("Введите описание открытой кнопки", 'Закрыть');
bbcode('[spoiler='+enterTITLE+'|'+enterTITLE2+']','[/spoiler]');}
$(function(){
$('input.spoiler-button').live('click',function(){
$(this).parents('div.spoiler-box').find('blockquote.quote-box').toggle('normal');
var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a); });    });
$('div.post-content').map(function () {
text = $(this).html();
if(text.indexOf("[/spoiler]" ) != -1) {
$(this).html(text.replace(/\[spoiler=(.*?)\|(.*?)\]([\s\S]*?)\[\/spoiler\]/gim, "<div class='spoiler-box' style='padding:1px;background: none;border: 0;'><input id='$2' class='spoiler-button' style='width:auto;font-size:11px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$1'><blockquote class='quote-box' style='display:none; width:auto;margin:0;'>$3</blockquote></div>")) 
} }); 
</script>

А чтобы было описание только открытой кнопки, то вместо предыдущего кода в HTML-низ ставить этот:

Код:
<script type="text/javascript">
function tag_spolier()
{var FoundErrors = '';
var enterTITLE = prompt("Введите описание открытой кнопки", 'Спойлер');
bbcode('[spoiler='+enterTITLE+']','[/spoiler]');}
$(function(){
$('input.spoiler-button').live('click',function(){
$(this).parents('div.spoiler-box').find('blockquote.quote-box').toggle('normal');
var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a); });    });
$('div.post-content').map(function () {
text = $(this).html();
if(text.indexOf("[/spoiler]" ) != -1) {
$(this).html(text.replace(/\[spoiler=(.*?)\]([\s\S]*?)\[\/spoiler\]/gim, "<div class='spoiler-box' style='padding:1px;background: none;border: 0;'><input id='Закрыть' class='spoiler-button' style='width:auto;font-size:11px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$1'><blockquote class='quote-box' style='display:none; width:auto;margin:0;'>$2</blockquote></div>")) 
} }); 
</script>

Отредактировано RUSSIAN_GOBLIN (Сб, 10 Мар 2012 15:44:17)

0

220

RUSSIAN_GOBLIN
Не факт что будет работать со всеми двойными пробелами - jQuery не позволит впихнуть код подмены, ежели в спойлере будут нечетное кол во тегов <p> или первый тег внутри </p>

0


Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер