Bukvus — отправки текста на почту по Ctrl+Enter

На простах интернета, наткнулся на Bukvus совершенно случайно, подумал что это Orphus, оказалось нет.




По мимо самого JS скрипта, который не сложный т.к. написано с помощью jQuery, есть еще и php, код которого представляю ниже.


<?php // jQuery.Bukvus: Nazar Tokar, 2013 //

$to = "your@mail.ru"; // укажите здесь свою почту
function gF($s){
	$s = substr((htmlspecialchars($_GET[$s])), 0, 350);
	if (strlen($s) > 1) {
		return $s;
	}
}

$t = array( (gf("txt")), (gf("err")), (gf("url")));

$headers  = "Content-type: text/html; charset=utf-8 \r\n"; 
$headers .= "From: Bukvus 1.1.0 <noreply@".($_SERVER["HTTP_HOST"]).">\r\n"; 

$title = "Найдена ошибка";
$mess = $t[0];
if ($t[1]) {
	$mess .= "<hr>Комментарий: ".$t[1];
}
$mess .= "<hr>".$t[2];

mail($to, $title, $mess, $headers);

if ($t[0]) {	
	$t[1] = "ok";
	$t[2] = "Спасибо, данные об ошибке отправлены";
}
?>{
"result":  "<? echo $t[1]; ?>",
"message": "<? echo $t[2]; ?>"
}

Как это чудо перевести в modx формат? Думаю что хранить php файлик и спамить в него запросы не самая лучшая идея, когда есть CMS.

До кучи и код js файлика, для тех, кому не хочется качать архив.

/**
* jQuery.Bukvus: Nazar Tokar, 2013
**/

(function bukvus(){
	jQuery('<div>', {id: 'bukvus'}).prependTo('html');

	function gs() { // get selection
	    var t = "";
	    if (window.getSelection) {
	        t = window.getSelection().toString();
	    } else if (document.selection && document.selection.type != "Control") {
	        t = document.selection.createRange().text;
	    }
	    return t;
	}

	function sm(m){ // show message
		jQuery("#bukvus").hide();
		jQuery("#bukvus").html(m);
		jQuery("#bukvus").show();
		setTimeout(function() {
			jQuery("#bukvus").hide();
		}, 3000);
	}

	function se(t){ // send error
		if (t.length < 4) { 
			sm("Вы не выбрали текст"); 
		} else if(t.length > 350) {
			sm("Слишком много текста, выберите меньше");
		} else {
			var err = prompt("В чём ошибка?");
			jQuery.getJSON("/bukvus/index.php", {
				contentType: "text/html; charset=utf-8",
				err: err,
				url: location.href, 
				txt: t 
			}).done(function(data) {		
				if (data.result == "ok") {
					sm(data.message);
				} else {
					sm(data.error);
				}
			}).fail(function(){
				sm("Ошибка в настройках");
			});
		}
	}
	jQuery(document).keydown(function(e){
		if (e.keyCode == 13 && e.ctrlKey) { // отправка
			if (jQuery('#bukvus').is(':visible')) {
				jQuery("#bukvus").hide();
				jQuery("#bukvus").html('');
			}			
			se(gs());
		} 
	});
})();

Странно, что нет аналогичного дополнения под modx… хотя может быть и есть, не натыкался.
Павел Левин
30 декабря 2014, 09:07
modx.pro
2 688
0

Комментарии: 2

Виталий Киреев
30 декабря 2014, 15:30
0
Есть повод изучить, как оформляются пакеты, тем более, что информация доступна.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2