Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

Ответ
 
Опции темы Опции просмотра
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #1 05-06-2009, 21:51

Хак добавляющий спойлер (Spoiler) в BB-коды.
Только для тех версий порталов, что не имеют этот BB-код.

Спойлер - это возможность разместить компактно большу часть информации, которую можно показать по кнопке Show/Hide

Работает на любой версии портала и браузера с учетом мини оперы.

Принцип:
Выделяем текст что хотим свернуть, нажимаем кнопку спойлера, далее будет окно в котором предложат ввести название спойлера, если не вводить, то будет стандартное "Spoiler"

Начинаем:

1. Кнопку spoiler.gif кладем в \images\editor\

2. В файле стилей вашей темы прописываем новые стили:

Код:
.spoiler {
margin-top: 0.5em;
margin-bottom: 1em;
}
.spoiler .title {
font-size: 100%;
font-weight: bold;
display: block;
float: left;
}
.spoiler .title:after {
content: ' ';
}
.spoiler input {
font-size: 70%;
}
.spoiler .content {
border: 1px dashed black;
padding: 0.5em;
margin-top: 0.5em;
white-space: nowrap;
}

3. В глобальном языковом файле global.php что находится по адресу: \www\language\russian
прописываем:

define("_SPL","Спойлер");
ну и для английского языкового файла:
define("_SPL","Spoiler");


4. Открываем файл: \www\include\scripts.js
где нибудь в конце добавляем две функции:

Код:
function spoilerCODE(spoiler) {
var e = spoiler.parentNode.getElementsByTagName('div')[1];
if (spoiler.value == 'Show') {
e.style.display = '';
spoiler.value = 'Hide';
} else {
e.style.display = 'none';
spoiler.value = 'Show';
}
}
Код:
function xoopsCodeSpl(id) {
var maxchars    = 128;
var dom  = $(id);
var text = prompt("Введите название спойлера (Enter spoiler name), 128 max.", "");
if ( text != null && text != "" && maxchars != 0 && text.length < maxchars ) {
var bbopen = "[spoiler=" + text + "]";
} else {
var bbopen = "[spoiler=Spoiler]";
}
var bbclose = "[/spoiler]";
insertBB(dom, bbopen, bbclose);
storeCaret(dom);
}
P.S. Возможно у вас старая версия файла "scripts.js",
проверьте есть ли в вашем файле для имеющихся BB-кодов, такие упоминания:
insertBB(dom, bbopen, bbclose);
storeCaret(dom);

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

5. Открываем файл: \www\include\common.php
где нибудь в конце добавляем:

PHP код:
    if (strstr(trim(_HTTP_USER_AGENT), "Opera Mini")) {
    
define('_MINI_OPERA'TRUE);
    } else {
    
define('_MINI_OPERA'FALSE);
    } 

6. Открываем файл: \www\class\module.textsanitizer.php
внутри функции "xoopsCodeDecode" добавляем:

PHP код:
$patterns[]     = "/\[spoiler=([^\"']*)](.*)\[\/spoiler\]/isU";
if (
_MINI_OPERA) {
$replacements[] = '\\1:<div class="spoiler">\\2</div>';
} else {
$replacements[] = '<div class="spoiler"><div class="title">\\1:&nbsp;</div><input type="button" id="spoiler" value="Show" onClick=\'spoilerCODE(this);\' /><div class="content" id="spoiler" style="display: none">\\2</div></div>';


7. Некоторые исправления в этом же файле: \www\class\module.textsanitizer.php
нам нужно поменять порядок обработки смайлов и BB-кодов, чтобы если в названии сплойера есть смайл, то он корректно обрабатывался.
также сменив порядок обработки, мы в дальнейшем улучшаем обработку и других BB-кодов имеющих внутри параметр, например тега URL
в файле ниже ищем две функции:

sanitizeForDisplay
и
sanitizeForPreview

и меняем внутри них местами:

if ($allow_smileys == 1) {
$text = $this->smiley($text);
}


и

if ($allow_bbcode == 1) {
$text = $this->xoopsCodeDecode($text, $allow_html);
}


т.е. первой должна идти обработка "bbcode" и только потом за ней "smileys"


8. Открываем файл: \www\class\xoopsform\formdhtmltextarea.php
и добавляем вывод кнопки:

PHP код:
$ret .= " <a href='javascript:justReturn();'><img src='".XOOPS_URL."/images/editor/spoiler.gif' alt='"._SPL."' onclick='xoopsCodeSpl(\"".$this->getName()."\");' /></a>"

P.S. Возможно что у вас он не сработает, это связано с тем, что файл "scripts.js" кешируется браузером, почистите кеш.

P.S.S. Когда начал писать эту инструкцию, то я еще не знал что в версии 1.6 рони уже есть спойлер. )))
Посмотрел я его и мой больше понравился. )))

Хак by Zormax
Вложения
Тип файла: zip spoiler_hack.zip (3.3 Кбайт, 10 просмотров)


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #2 05-06-2009, 21:57

Тест и позырить:
http://mobilefree.ru/newbb_plus/view...=124378#124378


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
KreK вне форума KreK
Младший участник

Аватар для KreK

| Цитировать Старый #3 05-11-2009, 12:43

блин, в версии 1.4 другая структура, сложности вызвал фаел scripts.js (в версии 1.4 это formdhtmltextarea.js.php ). Zormax посматри пожалуста, как там функции написать.


Обитатели Рая - это те, кто удостоился чести бормотать молитвы и восхваления Господу на самое его ухо . Безусловно, там климат мягче. Зато в Аду общество интереснее.
  Сообщения: 49 c 02.11.2006 | Репутация: 7
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #4 05-11-2009, 14:21

У тебя еще есть какие JS файлы в папке include и в class\xoopsform
?
попробуй туда запихнуть обе функции.
не забудь кеш чистить, а то может оно работает но кешировать старое будет.


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
KreK вне форума KreK
Младший участник

Аватар для KreK

| Цитировать Старый #5 05-12-2009, 09:32

не дело не в этом, версия старая, нужно как-то по другому функции строить


Обитатели Рая - это те, кто удостоился чести бормотать молитвы и восхваления Господу на самое его ухо . Безусловно, там климат мягче. Зато в Аду общество интереснее.
  Сообщения: 49 c 02.11.2006 | Репутация: 7
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #6 05-12-2009, 12:31

Еще раз повторяю, перечислите какие есть JS файлы в папках include и class\xoopsform


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
KreK вне форума KreK
Младший участник

Аватар для KreK

| Цитировать Старый #7 05-16-2009, 18:18

include:
calendar.js
layersmenu.js
sha1.js

class\xoopsform:
formdhtmltextarea.js.php - это впринцепи и есть эквивалент scripts.js, в рунск 1.4. В этом файле записаны все bb коды.


Обитатели Рая - это те, кто удостоился чести бормотать молитвы и восхваления Господу на самое его ухо . Безусловно, там климат мягче. Зато в Аду общество интереснее.
  Сообщения: 49 c 02.11.2006 | Репутация: 7
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #8 05-16-2009, 18:40

Цитата:
Сообщение от KreK Посмотреть сообщение
formdhtmltextarea.js.php
вот в него и запихни


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
KreK вне форума KreK
Младший участник

Аватар для KreK

| Цитировать Старый #9 05-17-2009, 11:37

Цитата:
Сообщение от Zormax Посмотреть сообщение
вот в него и запихни
с самого начала написал что именно это и сделал, но неработает, ибо там построение функции какоето другое, немагу разобраться.


Обитатели Рая - это те, кто удостоился чести бормотать молитвы и восхваления Господу на самое его ухо . Безусловно, там климат мягче. Зато в Аду общество интереснее.
  Сообщения: 49 c 02.11.2006 | Репутация: 7
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #10 05-17-2009, 17:33

файл в студию


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 88.98 Kb. compressed to 81.38 Kb. by saving 7.59 Kb. (8.54%)
Page generated in 0.07772 seconds with 11 queries