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

Кнопка "TRANSLIT"


d1pro

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

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

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

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

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

Есть несклько пожеланий.

 

1. Зачем извращаться с выделенным текстом? document.forms['REPLIER'].Post.value перекодировать очень сложно? :D

2. Чтобы работали кнопки, надо повесить функцию-обработчик их нажатия на document.forms['REPLIER'].Post.onkeydown.[1115611215:1115611281]Ну или на document.onkeydown…

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

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

Насчет onkeydown - не силен я в js к сожалению :D.

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

  • 2 недели спустя...
Мод: Кнопка "TRANSLIT"

Категория: Моды

Совместимость: 2.0.x

Описание:

Добавляет в формы ответа кнопку "TRANSLIT". При нажатии выделенный в

форме текст преобразуется в кириллический с учетом правил транслитерации.

Игнорирует BBCode и html-тэги.

 

 

А как бы теперь эту кнопочку добавить и в форму быстрого ответа ?

 

 

Просто тупая вставка

 

<input type='button' accesskey='t' value=' TRANSLIT ' onclick='translit()' class='codebuttons' name='TRANSLIT' onmouseover="hstat('translit')" />

 

 

 

в темплейт skin_code -> quick_reply_box_open не помогает. Вернее кнопка появляется. но жабаскрипт не срабатывает :D

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

  • 3 месяца спустя...
  • 3 недели спустя...
  • 3 месяца спустя...
а для версии 2.1.x есть такая же кнопочка, а то там есть мод ещё один, да все говорят что он не фурычит! если кто сделает для версии 2.1.х, будет оч приколно, ибо кнопочка оч удобная весчь )
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Удалось заставить работать этот мод под версией 2.1.4

 

Хотелось бы чтобы автор посмотрел и высказал свое "фе" :D Есть мнение, что многое можно было бы решить проще ;)

 

1. Внимательно читаем файл translit.txt. Осознаем что весь процесс состоит из трех шагов. Первый - изменения в JavaScript файлах. Вместо файла /jscripts/ipb_bbcode.js все указанные в translit.txt изменения делаем в файле ipb_editor.js

 

2. Редактирование скина. Идем в админку в Look and Feel->Skin Manager->(skin который вы используете)->Post/PM Editor->editor_std и ищем строку

<td><div><img class="rteimage" src="{ipb.vars['img_url']}/folder_rte_images/image.gif" width="25" height="24" alt="{ipb.lang['js_tt_image']}" title="{ipb.lang['js_tt_image']}" onclick="tag_image()"></div></td>

 

После нее добавляем:

<td><div><img class="rteimage" src="{ipb.vars['img_url']}/folder_rte_images/translit.gif" width="25" height="24" alt="Translit" title="Translit" onclick="translit()"></div></td>

 

3. Делаем (либо ищем) картинку translit.gif размером 25 на 24 пикселя и загружаем ее в /style_images/(номер или имя стиля)/folder_rte_images/

 

Собственно - все :)

 

Примечание

Возможно в связи с тем, что руки у меня кривые понадобилось немного изуродовать код, добавляемый в ipb_editor.js - мой вариант внизу (выброшен кусок IT'S MOZZY):

//==========================================
// TRANSLITIRATE (Main)
//==========================================

function translit()
{
var obj_ta = fombj.Post;

//----------------------------------------
// It's IE!
//----------------------------------------
if ( (ua_vers >= 4) && is_ie && is_win)
{
	if (obj_ta.isTextEdit)
	{
		obj_ta.focus();
		var sel = document.selection;
		var rng = sel.createRange();
		rng.colapse;
		if((sel.type == "Text" || sel.type == "None") && rng != null)
		{
			rng.text = dotranslate(rng.text);
		}
	}
	else
	{
		obj_ta.value = dotranslate(obj_ta.value);
	}
}
//----------------------------------------
// It's CRAPPY!
//----------------------------------------
else
{
	obj_ta.value = dotranslate(obj_ta.value);
}

obj_ta.focus();

return;
}

//==========================================
// TRANSLITIRATE (String convertion)
//------------------------------------------
// Original code from translit.ru
// by Igor Ilyin (2002-2004)
//==========================================


function dotranslate(text)
{
var txtnew = "";
var symb = 0;
var subsymb = "";
var trans = 1;
for (kk=0;kk<text.length;kk++)
{
	subsymb = text.substr(kk,1);
	if ((subsymb=="[") || (subsymb=="<"))
	{
		trans = 0;
	}
	if ((subsymb=="]") || (subsymb==">"))
	{
		trans = 1;
	}
	if (trans)
	{
		symb = transsymbtocyr(txtnew.substr(txtnew.length-1,1), subsymb);
	}
	else
	{
		symb = txtnew.substr(txtnew.length-1,1) + subsymb;
	}
	txtnew = txtnew.substr(0,txtnew.length-1) + symb;
}
return txtnew;
}

//==========================================
// TRANSLITIRATE (Symbol convertion)
//------------------------------------------
// Original code from translit.ru
// by Igor Ilyin (2002-2004)
//==========================================

function transsymbtocyr(pretxt,txt)
{
var doubletxt = pretxt+txt;
var code = txt.charCodeAt(0);
if (!(((code>=65) && (code<=123))||(code==35)||(code==39))) return doubletxt;
var ii;
for (ii=0; ii<lat_lr2.length; ii++)
{
	if (lat_lr2[ii]==doubletxt) return rus_lr2[ii];
}
for (ii=0; ii<lat_lr1.length; ii++)
{
	if (lat_lr1[ii]==txt) return pretxt+rus_lr1[ii];
}
return doubletxt;
}

 

Добавлять в начало ipb_editor.js саму таблицу транслита разумеется обязательно :)

 

PS (Добавил): Все работает на http://pesikot.com, некоторым пришлось выйти и снова зайти чтобы заработало.

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

мм почти работает:D наткните мну на ошибку ;)

 

Вот так он перевел алфавит англ яз...

 

a b c d e f g ...

 

р с і ф х є у ѕ ш у ъ ы ь э ю я џ № ё ђ ѓ т љ ѕ ћ ч

 

:) что я мог не так сделать :)

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

Была ли вставлена (и если была - правильно ли) таблица перекодировки из соответствующей части файла translit.txt оригинального мода?

Является ли кодировка windows-1251 кодировкой по умолчанию?

Является ли кодировка windows-1251 кодировкой данных в базе?

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

хочу капельку поправить :D

не зря же мы редактировали lang файлы ;) потому пункт 2 заменить надо строкой:

<td><div><img class="rteimage" src="{ipb.vars['img_url']}/folder_rte_images/translit.gif" width="25" height="24" alt="Translit" title="{ipb.lang['hb_translit']}" onclick="translit()"></div></td>

разница в значении title? так будет отображаться описание кнопки взятое из лэнг файла.

Молодца, мод работает на 2.14. русском.

ещё бы эту кнопку добавить в быстрый ответ, было б классно :)

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

В стандартном быстром ответе нет кнопок форматирования вообще.

 

Если используется какой-то хак, то там надо смотреть. Я на днях буду прикручивать мод от d1pro - посмотрю как там... Разве что он сам раньше подтянется :D

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

Была ли вставлена (и если была - правильно ли) таблица перекодировки из соответствующей части файла translit.txt оригинального мода?

Является ли кодировка windows-1251 кодировкой по умолчанию?

Является ли кодировка windows-1251 кодировкой данных в базе?

 

1. Да (Да)

2. Да

3. а енто тут прич чем :D

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

3. а енто тут прич чем :D

 

Возможен вариант, когда после upgrade/перехода на новую версию в базе чего-то там не так кодируется. То ли сам mySQL чего-то с юникодом мудрит, то ли IPB. Не специалист я, но вот видел такие-то грабли, про них говорю. Если не они - тогда не знаю... читай форум, юзай поиск...

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

мм почти работает:D наткните мну на ошибку ;)

 

Вот так он перевел алфавит англ яз...

 

a b c d e f g ...

 

р с і ф х є у ѕ ш у ъ ы ь э ю я џ № ё ђ ѓ т љ ѕ ћ ч

 

:) что я мог не так сделать :)

кодировку браузера руками на windows-1251 ставь
Ссылка на комментарий
Поделиться на других сайтах

кодировку браузера руками на windows-1251 ставь

 

Неужто каждый раз придется? ;)

у меня от броузера зависит. Operu глючит. IE - OK. Fierfox -OK

 

Камрад ты прав)))

Респект :D

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

  • 3 недели спустя...
я так понял у всех работает без выделения транслит текста? у меня конвертит только то что выделил, или так и должно?

 

Вроде как раз так и должно...

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

  • 1 месяц спустя...

У меня стоит Invision Power Board v2.1.4,

 

1. в forums/cache/lang_cache/ru/lang_post.php после $lang = array (

 

добавил

 

//translit

'hb_translit'=> "Преобразовать выделенный текст из транслитерации в кириллицу (alt + t)",

//translit

 

 

2. в editor_std добавил

 

<td><div><img class="rteimage" src="{ipb.vars['img_url']}/folder_rte_images/translit.gif" width="25" height="24" alt="Translit" title="{ipb.lang['hb_translit']}" onclick="translit()"></div></td>

 

 

3. добавил рисунок куда надо

 

 

4. в forums/jscripts/ipb_editor.js

 

в конец добавил

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

var HTML_open = 0;

//translit

var rus_lr2 = ('Е-е-О-о-Ё-Ё-Ё-Ё-Ж-Ж-Ч-Ч-Ш-Ш-Щ-Щ-Ъ-Ь-Э-Э-Ю-Ю-Я-Я-Я-Я-ё-ё-ж-ч-ш-щ-э-ю-я-я').split('-');

var lat_lr2 = ('/E-/e-/O-/o-ЫO-Ыo-ЙO-Йo-ЗH-Зh-ЦH-Цh-СH-Сh-ШH-Шh-ъ'+String.fromCharCode(35)+'-ь'+String.fromCharCode(39)+'-ЙE-Йe-ЙU-Йu-ЙA-Йa-ЫA-Ыa-ыo-йo-зh-цh-сh-шh-йe-йu-йa-ыa').split('-');

var rus_lr1 = ('А-Б-В-Г-Д-Е-З-И-Й-К-Л-М-Н-О-П-Р-С-Т-У-Ф-Х-Х-Ц-Щ-Ы-Я-а-б-в-г-д-е-з-и-й-к-л-м-н-о-п-р-с-т-у-ф-х-х-ц-щ-ъ-ы-ь-ь-я').split('-');

var lat_lr1 = ('A-B-V-G-D-E-Z-I-J-K-L-M-N-O-P-R-S-T-U-F-H-X-C-W-Y-Q-a-b-v-g-d-e-z-i-j-k-l-m-n-o-p-r-s-t-u-f-h-x-c-w-'+String.fromCharCode(35)+'-y-'+String.fromCharCode(39)+'-'+String.fromCharCode(96)+'-q').split('-');

//translit

 

 

//==========================================

// TRANSLITIRATE (Main)

//==========================================

 

function translit()

{

var obj_ta = fombj.Post;

 

//----------------------------------------

// It's IE!

//----------------------------------------

if ( (ua_vers >= 4) && is_ie && is_win)

{

if (obj_ta.isTextEdit)

{

obj_ta.focus();

var sel = document.selection;

var rng = sel.createRange();

rng.colapse;

if((sel.type == "Text" || sel.type == "None") && rng != null)

{

rng.text = dotranslate(rng.text);

}

}

else

{

obj_ta.value = dotranslate(obj_ta.value);

}

}

//----------------------------------------

// It's CRAPPY!

//----------------------------------------

else

{

obj_ta.value = dotranslate(obj_ta.value);

}

 

obj_ta.focus();

 

return;

}

 

//==========================================

// TRANSLITIRATE (String convertion)

//------------------------------------------

// Original code from translit.ru

// by Igor Ilyin (2002-2004)

//==========================================

 

 

function dotranslate(text)

{

var txtnew = "";

var symb = 0;

var subsymb = "";

var trans = 1;

for (kk=0;kk<text.length;kk++)

{

subsymb = text.substr(kk,1);

if ((subsymb=="[") || (subsymb==<"))

{

trans = 0;

}

if ((subsymb==]") || (subsymb==">"))

{

trans = 1;

}

if (trans)

{

symb = transsymbtocyr(txtnew.substr(txtnew.length-1,1), subsymb);

}

else

{

symb = txtnew.substr(txtnew.length-1,1) + subsymb;

}

txtnew = txtnew.substr(0,txtnew.length-1) + symb;

}

return txtnew;

}

 

//==========================================

// TRANSLITIRATE (Symbol convertion)

//------------------------------------------

// Original code from translit.ru

// by Igor Ilyin (2002-2004)

//==========================================

 

function transsymbtocyr(pretxt,txt)

{

var doubletxt = pretxt+txt;

var code = txt.charCodeAt(0);

if (!(((code>=65) && (code<=123))||(code==35)||(code==39))) return doubletxt;

var ii;

for (ii=0; ii<lat_lr2.length; ii++)

{

if (lat_lr2[ii]==doubletxt) return rus_lr2[ii];

}

for (ii=0; ii<lat_lr1.length; ii++)

{

if (lat_lr1[ii]==txt) return pretxt+rus_lr1[ii];

}

return doubletxt;

}

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

ничего не заработало, кнопка не появилась и все тут, что не так сделал???

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


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

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

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