+0.16
Рейтинг
1.34
Сила

Транслит для LS 1.0.3

Обыкновенный транслит. Не плагин. Для людей у кого нету русской клавиатуры, ну или не умеют печатать на русском(как я дурак). Короче пишем русские слова английским шрифтом, и при нажатии на «Транслит» он переводица в русский.

Делал давно, так что если не будет работать я подправлю.

Создаём /templates/skin/Ваш_скин/js/translit.js
var CapsState = false;

function copy() {
  let textarea = document.getElementById("textarea");
  textarea.select();
  document.execCommand("copy");
}

function initArray() 
{
	this.length = initArray.arguments.length
	for (var i = 0; i < this.length; i++)   
		this[i+1] = initArray.arguments[i]
}

eng_letters = new initArray(1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1042,1065,1061,1067,1047,91,92,93,94,95,96,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1074,1097,120,1099,1079);
second_order = new initArray(72,79,69,85,65,72,77,79,85,65,72,104,111,101,117,97,104,109,111,117,97,104);
first_order  = new initArray(1062,1049,1049,1049,1049,1057,1065,1067,1067,1067,1047,1094,1081,1081,1081,1081,1089,1097,1099,1099,1099,1079);
two_result = new initArray(1063,1025,1069,1070,1071,1064,1068,1025,1070,1071,1046,1095,1105,1101,1102,1103,1096,1100,1105,1102,1103,1078);

var nexto = 1;
var language = (navigator.appName=='Netscape');

function getlanguagename()
{
	if (language==1) return "Eng";
	if (language==0) return "Rus";
}

function changelanguage()
{
if (language==1) {language=0; document.searchform.rus_eng.value="Rus"; document.searchform.comment_text.focus();return 0}
if (language==0) {language=1; document.searchform.rus_eng.value="Eng"; document.searchform.comment_text.focus();return 0}
}

function translate_letter()
{
	if(navigator.appName=='Netscape')
	{
		if (language==0) 
		{
			changelanguage();
			alert("The language is swithched to English. Please complete the text and press 'TRANSLITERATE ALL' button");
		}
		return true;
	}
        if (language==1) {return true;}
	var txt = document.searchform.comment_text.value;
	l1 = txt.substr(txt.length - 1,1);
	var code = l1.charCodeAt(0); 
	l2 = txt.substr(txt.length-2,1);
	var code2 = l2.charCodeAt(0);
	if ((code==39)||(code==35))
	//' and '' and # and ## treatment
	{
		if (code==39) 
		{
			var newcode =1100;
			var doublecode =1068;
		}
		if (code==35) 
		{
			var newcode =1098;
			var doublecode =1066;
		}

		var res = String.fromCharCode(newcode);		
		txt = txt.substr(0, txt.length-1);
		if (code2==newcode) 
		{ 
			res = String.fromCharCode(doublecode);
			txt = txt.substr(0, txt.length-1);
		}

		document.searchform.comment_text.value = txt + res;
                document.searchform.comment_text.focus();
	}

	if ((code<123) && (code>64)) 
	{
		var res = String.fromCharCode(eng_letters[code-64]);
		var rus_code = eng_letters[code-64];
		txt = txt.substr(0, txt.length-1);
		if (nexto==0)
		{ 
			nexto = 1;
			for (i = 1; i<25; i++)
			{
				if (rus_code == first_order[i]) nexto = 0; 
				if ((code==second_order[i])&&(code2==first_order[i])) 
				{ 
					res = String.fromCharCode(two_result[i]);
					txt = txt.substr(0, txt.length-1);
					break;
				}
			}
		}
		else nexto = 0;

                document.searchform.comment_text.focus();
		document.searchform.comment_text.value = txt + res;

	}
}


function translatesymbol(pretxt,txt)
{
	var res = pretxt+txt;
	var code = txt.charCodeAt(0); 
	var code2 = pretxt.charCodeAt(0);

	if ((code==39)||(code==35))
	//' and '' and # and ## treatment
	{
		if (code==39) 
		{
			var newcode =1100;
			var doublecode =1068;
		}
		if (code==35) 
		{
			var newcode =1098;
			var doublecode =1066;
		}

		res = pretxt+String.fromCharCode(newcode);		

		if (code2==newcode) 
		{ 
			res = String.fromCharCode(doublecode);
		}
	}

	if ((code<123) && (code>64)) 
	{
		res = pretxt+String.fromCharCode(eng_letters[code-64]);
		for (i = 1; i<25; i++)
		{ 
			if ((code==second_order[i])&&(code2==first_order[i])) 
			{ 
				res = String.fromCharCode(two_result[i]);
				break;
			}
		}
	}
	return res;
}

function translateAll()
{
	var txt = document.searchform.comment_text.value;
	var txtnew = translatesymbol("",txt.substr(0,1));
	var symb = "";
	for (kk=1;kk<txt.length;kk++)
	{
		symb = translatesymbol(txtnew.substr(txtnew.length-1,1),txt.substr(kk,1));
		txtnew = txtnew.substr(0,txtnew.length-1) + symb;
	}
	document.searchform.comment_text.value = txtnew;
	document.searchform.comment_text.focus();
}

     function onClickKBButtonEx(btn)
     {
	if (btn == 'Caps')
		CapsState = !(CapsState)
        else
	{ 
		var txt = document.searchform.comment_text.value;
		if (btn == 'BkSp')
		{
			txt = txt.substr(0, txt.length - 1);
		}
		else
		{
			txt = txt + btn;
		}
		document.searchform.comment_text.value = txt;
	}
		document.searchform.comment_text.focus();
     }
     function onClickKBButton(btn)
     {
	var code = btn.charCodeAt(0);
	if (CapsState == false)
	{
		if (code == 168) 
                   code = 184;
		else if (code == 1025)
		   code = 1105;
		else
                   code = code + 32;
	}
	btn = String.fromCharCode(code);
	onClickKBButtonEx(btn);
	 }


Далее дебавляем теги в Ну и кнопку транслит. Я добавил транслит себе только в Коментарии. Но можете добавить его куда угодно делея это по схеме с этим. Если есть очень умные люди то можно добавить кнопку транслит в сам ББкод на верх где болд/ италик/. Но я не знаю как.

В конфиге скина добавить:

$config['head']['default']['js'][] = '___path.static.skin___/js/translit.js';


После:

$config['head']['default']['js'][] = '___path.static.skin___/js/template.js';


В форме ответа заменить код на этот.

<form method="post" id="form_comment" onsubmit="return false;" name="searchform" enctype="multipart/form-data">
				<textarea name="comment_text" id="form_comment_text" onkeyup="translate_letter()" class="mce-editor markitup-editor input-width-full"></textarea>
				<input name="tr_all" onclick="translateAll()" type="button" class="button" value="Транслит">

Вставка видео через ссылку (Готовое решение)

Поддержка видео для таких сайтов как:
  • youtube.com
  • vimeo.com
  • rutube.ru
  • coub.com
  • ok.ru
  • vk.com
  • dailymotion.com

Для: LS 1.0.3

В /engine/modules/text/Text.class.php

Меняем функцию public function VideoParser($sText)

На это:
public function VideoParser($sText) {
		
		// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';
		
		/**
         * youtu.be fixed
         */
        $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|m.|)youtu\.be\/([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//www.youtube.com/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
			$sText
		);
		/**
         * vimeo.com fixed
         */
        $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)vimeo\.com\/(\d+).*<\/video>/i',
            '<div align="'.$iAlign.'"><iframe src="//player.vimeo.com/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
         * rutube.ru fixed
         */
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/tracks\/(\d+)\.html.*<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/video\/(\w+)\/?<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
	    * coub.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)coub\.com\/view\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * ok.ru fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)ok\.ru\/video\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//ok.ru/videoembed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * vk.com HASH not working, embeded link only
	    */
		$sText = preg_replace(
		    '/<video>(https:\/\/(?:www\.|)vk\.com\/video_ext\.php.*)<\/video>/i', 
			'<div align="'.$iAlign.'"><iframe src="$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
            /**
	    * dailymotion.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)dai\.ly\/(\w+).*<\/video>/i', 
		    '
<div align="'.$iAlign.'"><iframe src="//dailymotion.com/embed/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		return $sText;
	}

Конечно же в /config/jevix.php добавляем нехватающие сайты.

Свои параметры сюда:
// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';


Готово!

Языковые пакеты?

Приветствую! Я тут новенький, и не могу найти где и как поменять язык на английский? Есть ли он вообще?

Если нету — то укажите в какий файлах они находятса — буду сам переводить.

П.С, в админке не нашел например «Главные конфигурации» или «Конфигурации Рейтинга», «Разрешение к доступам»?

Админка

Управление плагинами
Настройка пользовательских полей
Перестроение дерева комментариев
Пересчитать счетчики избранных
Пересчитать счетчики голосований
Пересчитать количество топиков в блогах

Это всё что прилагаетса к админке? Как то маловато. Да и есть ли какой нибудь мануал по использованию? Как из новых сообшений переносить на главную? И где голосовать? Кнопок голосов как тут у меня нету, только «0» везде.

Блин, тут еще и админку покупать надо?

Спасибо за скрипт, очень им рад. Надеюсь на ваш ответ.