Перейти к контенту

Рекомендуемые сообщения

мы тут блин делаем самый кроссбраузерный и эффективный спойлер, который можно будет тупо сделать дополнительным ббкодом, причем уже можно сделать, бери и делай
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 132
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Вот что мне посоветовали, может осмыслите для меня?! D))

 

Генерируй для каждого id какой-нибудь случайный текст...

В php есть функция uniqid. Если ты заменяешь код с помощью регулярных выражений, то вместо замены всех вхождений сразу можно сделать замены каждого вхождения последовательно, в цикле (чтобы для каждого сгенерировать свой id).

Ссылка на комментарий
Поделиться на других сайтах

Генерируй для каждого id какой-нибудь случайный текст...

В php есть функция uniqid.

В джаваскрипте тоже есть возможность генерации случайных чисел и перевод численной переменной в строковую. Вот и случайный текст.

 

Если есть возможность написать код в одном языке, не вижу резона часть кода писать на пхп, а вторую часть на джаваскрипте: "смешаный" код намного сложнее трассировать в случае возникновения ошибок.

Ссылка на комментарий
Поделиться на других сайтах

Можете кто-нибудь переписать скрипт? Пожалуйста. :D

Я скорее всего буду делать под IPB 1.3 + mJournal 1.05.

Интересует?

Ссылка на комментарий
Поделиться на других сайтах

А разве в ББ кодах есть разница под какую версию? :D

ОК, как сделаю, напишу.

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

Ссылка на комментарий
Поделиться на других сайтах

Думаю с этим проблемм не будет, спасибо тебе! :D

Только ты потом напиши какие файли изменял и всё такое)))

Ссылка на комментарий
Поделиться на других сайтах

Создал новую кнопку, вводящую теги [more] и [/more] (чтобы сохранить старый спойлер) По аналогии с кнопкой жирности текста.

 

 

В стили через админку и в файл skin_jinfo.php (для журналов) добавил описания классов:

$txt = preg_replace( "#\[more\](.+?)\[/more\]#is", "<!--spoilerstart--><div class='sp-wrap'><div class='sp-head-wrap'><div class='sp-head folded clickable'><b><u>Свернутый текст</u></b></div></div><div class='sp-body'><div class='sp-content'>\\1</div></div></div><!--spoilerstend-->", $txt );
$txt = preg_replace( "#\[more=(.*?)\](.*?)\[\/more\]#is", "<!--spoilerstart--><div class='sp-wrap'><div class='sp-head-wrap'><div class='sp-head folded clickable'><b><u>\\1</u></b></div></div><div class='sp-body'><div class='sp-content'>\\2</div></div></div><!--spoilerstend-->", $txt );

 

Таким образом, обрабатываться будут и тег [more] (заголовок будет дефолтный), и тег [more=Заголовок спойлера] (позволяет пользователю ввести текст заголовка.

 

Не понял почему не всегда парсятся вложенные спойлеры. Продублировал код - стали парситься и много вложенных спойлеров в общий спойлер.

 

 

Анконверт:

После кода:

$txt = preg_replace( "#(<!--spoilerstart--><div class='sp-wrap'><div class='sp-head-wrap'><div class='sp-head folded clickable'><b><u>Свернутый текст</u></b></div></div><div class='sp-body'><div class='sp-content'>)(.+?)(</div></div></div><!--spoilerstend-->)#is", "\[more\]\\2\[\/more]", $txt );
$txt = preg_replace( "#(<!--spoilerstart--><div class='sp-wrap'><div class='sp-head-wrap'><div class='sp-head folded clickable'><b><u>)(.+?)(</u></b></div></div><div class='sp-body'><div class='sp-content'>)(.+?)(</div></div></div><!--spoilerstend-->)#is", "\[more=\\2\]\\4\[/more\]", $txt );

Ссылка на комментарий
Поделиться на других сайтах

Мне на самом деле нефига не понятно. :D)) Даже на 1,2 поставить не смог, у меня даже файла html/quote.js нету.
Ссылка на комментарий
Поделиться на других сайтах

http://vesvalo.net/journal.php?user=1 - вот пример в работе.

 

Я не помню, откуда взялся у меня файл quote.js - на форуме много модификаций, в том числе написанных мной походя, все и не упомню.

 

Сделай новый файл и прилинкуй где требуется, или пропиши линк через админку в основной шаблон.

Ссылка на комментарий
Поделиться на других сайтах

Я не помню, откуда взялся у меня файл quote.js

Стандартная поставка.

Ссылка на комментарий
Поделиться на других сайтах

Так и не работает на 1.2

Не телепат. Не смог угадать что не работает: ББ-код не удалось создать, скрипт не удалось прилинковать, стили не удалось добавить, парсер не удалось сделать?

Ссылка на комментарий
Поделиться на других сайтах

Не, всё сделал как надо, изменения в файле post_parser.php, и даже quote.js добавлял и прописывал в стилях, но вот единственное чего у меня нету, так это skin_jinfo.php, я так понимаю он должен быть в папке skin/s*/, но там у меня его не оказалось.

Да и к тому же это другой бб код, я же хотел именно тот который в самом начале описал. :D

Ссылка на комментарий
Поделиться на других сайтах

Оформите ваши пожелания одним постом, тут много чего выше написано. А скиновой файл в подпапке папки journal должен был быть.
Ссылка на комментарий
Поделиться на других сайтах

чего у меня нету, так это skin_jinfo.php

Это файл от mJournal. Если мод не ставил, то и файла нет.

 

 

 

Да и к тому же это другой бб код, я же хотел именно тот который в самом начале описал. :D

Нужен не [more], а другой? Дык не проблема поправить.

Перечитал первый пост, но так и не понял, какой ББ-код спрашивается.

Ссылка на комментарий
Поделиться на других сайтах

В первом посте же всё описано по полочкам, скрипт практически полностью готов, но надо что у каждого бб кода был свой ид, т.е. либо надо сам скрипт переписывать либо делать как мне посоветовали:

Генерируй для каждого id какой-нибудь случайный текст...

В php есть функция uniqid. Если ты заменяешь код с помощью регулярных выражений, то вместо замены всех вхождений сразу можно сделать замены каждого вхождения последовательно, в цикле (чтобы для каждого сгенерировать свой id).

 

Сам тег уже работает, но при добалнении второго такого же, второй просто не работает потому как у первого и второго одинаковые ид, а скрипт именно к ним и обращаеться. :D

 

Вот пример где надо генерировать случайный ид: (где стоит значение TEST, там и надо генерировать случайный ид)

<a class='show_hide_button' id='show_hide_buttonTEST'>-</a> <span class='hidden_block_title'>{option}</span><div class='hidden_block' id='hidden_blockTEST'>{content}</b></div><script type='text/javascript'>assign_show_hide_button('hidden_blockTEST', 'show_hide_buttonTEST');</script>

Ссылка на комментарий
Поделиться на других сайтах

Вот пример где надо генерировать случайный ид: (где стоит значение TEST, там и надо генерировать случайный ид)

 

Для вывода тега

<a class='show_hide_button' id='show_hide_buttonTEST'>

пойдет код:

<script type="text/javascript">
var d_id=(Math.random()+'').replace('0.','')
eval('document.write("<a class=\\"show_hide_button\\" id=\\"show_hide_button'+d_id+'\\">");')
</script>

Ссылка на комментарий
Поделиться на других сайтах

В джава ведь другие бб коды не работают. :D Т.е. ссылки и всё такое нельзя вставлять и уж тем более вкладки не будут вкладываться в друг друга.
Ссылка на комментарий
Поделиться на других сайтах

В джава ведь другие бб коды не работают. :D

Глубокомысленно. Но не верно.

Джава будет вставляться парсером в нужный ББ-код.

У меня похожее сделано для сокрытия документ-реферер. Код [URL] парсится в джаваскрипт, который сначала через tlt=window.open() открывает пустое окно (чтобы в document.refer получился localhost), а затем методом tlt.document.write() в открытое окно внедряется код для перехода на нужный URL.

 

 

Т.е. ссылки и всё такое нельзя вставлять и уж тем более вкладки не будут вкладываться в друг друга.

Блин! Написал же работающий код; дал ссылку где посмотреть в действии.

Всё вставляется ББ-кодами; отлично друг в друга вкладывается.

Ссылка на комментарий
Поделиться на других сайтах

FatCat, безусловно ты сделал хороший ББ код, но просто мне не это надо.

Пример можешь посмотреть в первом посте, там рисунок есть. :D

 

Хорошо, вот отличный пример моего ББ кода, оставим пока прошлый, займёмся этим.

 

На примере отчётливо видно ракрашенные участки, я поясню что это такое.

1: Красный цвет. Красным цветом закрашены кликабельные участки кода, т.е. как видно на примере №2, кликабельный участок равен длинне текста который находиться внутри ББ кода, т.е. если текст занимает лишь половину размера то кликабельный участок будет равен длинне текста, это из за использования в теге строчки <div>.

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

 

2: Зелёный цвет. Зелёный цвет отмечает кликабельные участки, точнее какими они должны быть, именно надо что бы тег раскрывался и свёртывался только по нажитию на кнопки "+" и "-". Как вы видете на примере №4, кликабельный участок уже не зависит от колличества и длинны текста, он (участок) остаёться на своём месте и закрыть тег можно только по нажатию кнопки "-", ну или как в примере №3, открыть с помощью кнопки "+" и если вы заметили теперь зелёный кликабельный участок не распространяеться на {option}, а находиться слево от него, но при использовании строчки <div>, {option} автоматически переноситься на следующую строчку.

 

 

ББ код:

<table><div style="cursor: pointer; color: #000; font-size: 12px; font-family: Verdana, Tahoma, Helvetica, sans-serif; text-decoration: none" onclick="show_hide_text(this,'{option}')"><a class='show_hide_button'>+</a> <span class='hidden_block_title'>{option}</span></div>

<div class='hidden_block' style="display: none">{content}</div></table>

 

Expand.js:

function show_hide_text(divObj,text) {
var div = divObj.parentNode.getElementsByTagName('div')[1];
if (div.style.display == 'none') {
	div.style.display = 'block';
	divObj.innerHTML = "<a class='show_hide_button'>-</a> <span class='hidden_block_title'>" + text;
} else {
	div.style.display = 'none';
	divObj.innerHTML = "<a class='show_hide_button'>+</a> <span class='hidden_block_title'>" + text;
}
}

 

Пример!!!:

http://img80.imageshack.us/img80/6789/debugpb6.gif

Ссылка на комментарий
Поделиться на других сайтах

ОК, скриншот красивый.

В чем проблема, не пойму? Учебник ХТМЛ и ЦСС в руки и делать.

 

 

Как сделать джаваскриптом динамический айдишник в топике написано; как внедрить в форумный движок написано.

 

Чего не хватает для счастья? Если подробных пошаговых инструкций, то мне лень.

Ссылка на комментарий
Поделиться на других сайтах

Мне всего лишь надо сделать то что нарисовано, но дело то в том что я этого не умею, вот и обращаюсь к опытным людям.

 

В любом случая, спасибо что хоть откликнулся!

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.