Всплывающее уведомление при копировании материала с сайта.

Приделал у себя такую штуку. Отписываю о результатах тут, может кому нить и пригодится.


В topic_topic.tpl находим

<div class="topic-content text">


И заменяем на
<div class="topic-content text" OnCopy="ls.msg.error(null,'{$aLang.cp_reverse_link_notify}'); return true;">

В языковых файлах определяем
'cp_reverse_link_notify' => 'При использовании любых материалов с сайта вы обязаны явным образом указывать ссылку на сайт mysite.ltd в качестве источника.',

UPD. Если так-же надо показывать уведомление при копировании комментариев, можно сделать так:
В comment.tpl
Находим
<div id="comment_content_id_{$oComment->getId()}" class="comment-content text">

И меняем на:
<div id="comment_content_id_{$oComment->getId()}" class="comment-content text" OnCopy="ls.msg.error(null,'{$aLang.cp_reverse_link_notify}'); return true;">


Для статических страниц:
plugins/page/templates/skin/default/actions/ActionPage/page.tpl

<div class="topic-content text">

Заменить на
<div class="topic-content text" OnCopy="ls.msg.error(null,'{$aLang.cp_reverse_link_notify}'); return true;">


Скрин, как это выглядит на моём сайте выше.

По запросам, скрипт, автоматически подставляющий ссылку на статью в буфер.


	var div4copy;
	var pagelink = "<p>Источник: <a href='"+document.location.href+"' target='_blank'>"+document.location.href+"</a></p>";

	function create_div4copy() {
		var newdiv = document.createElement('DIV');
		document.body.appendChild(newdiv);
		newdiv.style.overflow="hidden";
		newdiv.style.width="1px";
		newdiv.style.height="1px";
		newdiv.style.position="absolute";
		newdiv.style.top="-999px";
		newdiv.style.left="-999px";
		newdiv.innerHTML='';
		return newdiv;
	}
	function clipboard_addLink() {
		if (!window.getSelection) return;
		var selection = window.getSelection();
		var range = selection.getRangeAt(0);

		div4copy=create_div4copy()
		div4copy.appendChild (range.cloneContents());
		range3=range.cloneRange();
		selection.removeAllRanges();

		div4copy.innerHTML+= pagelink;
		var range2 = document.createRange();
		range2.selectNode(div4copy);
		selection.addRange(range2);

		window.setTimeout( function() {
			selection.removeAllRanges();
			selection.addRange(range3);
			document.body.removeChild(div4copy);
		}, 0);
	}

	
	a=document.getElementsByTagName("DIV");
	c=a.length;
	for (i=0; i<c; i++) {
		if (a[i].className=='topic-content text') {
			 if (a[i].attachEvent) {
				a[i].attachEvent("oncopy", clipboard_addLink);
			} else if(a[i].addEventListener) {
				a[i].addEventListener("copy", clipboard_addLink, false);
			}
		}
	}

Сохраним его в /engine/lib/internal/template/js/cpl.js
В footer.tpl (Именно туда, т.к клиенту лучше будет получить сначала контент, а мение важные скрипты, в последнюю очередь.) Добавим:
<script type="text/javascript" src="{cfg name="path.root.web"}/engine/lib/internal/template/js/cpl.js'></script>

42 комментария

avatar
молодцы круто :)
avatar
спасибо. интересная фича))
avatar
Мега круто :)
avatar
И как оно работает?
avatar
При копировании топик-контента.
avatar
не идея клевая)
avatar
еще надо красным цветом сделать, и добавить картинку с значком предупреждение))
avatar
Можно. Но я решил много не делать у себя.
Кстати, в первом посте добавил как добавить уведомление при копировании комментариев.
avatar
Огонь)
avatar
Спасибо, сделаю себе такой наворот
avatar
У меня навигация полетела и Читать дальше после этой идеи.
avatar
Странно. У меня всё ок.
Попробуйте, может, кеш почистить.
avatar
Все норм. Я тупанул. Промахнулся в фтп клиенте и кинул языковый файл в движок.
avatar
надо замутить)
avatar
На одном сайте кстати видел ещё жаваскриптом подставляют автоматически в буфер при копировании)
avatar
а как сделать такую же штуку, только наоборот, когда на твой сайт вставляют чужой текст.
avatar
По идее можно задать для поля ввода текста
OnPaste="ls.msg.error(null,'{$aLang.cp_reverse_link_notify}'); return true;"

Но это будет срабатывать абсолютно при любой операции вставки. Что собственно не особо хорошо.
avatar
нужно задать функции, определять сколько символов в копированном тексте)
avatar
во у меня идея есть, можно задать в топике определение написанных символов, и потом добавить вашь код, и сделать вывод, если в топике появилось больше 300-сот символов с воздействием кода, который вы написали, то скрипт должен выдать сообщение, которое напишет пользователь.
как то так)
хотя я в программирование не шарю)
avatar
Спасибо, обязательно попробую, как на работе разгребу)
avatar
Отлично, все работает! Уважение.
avatar
Спасибо, хочу плюсануть но увы я слаб для этого (((
avatar
Такая же история)
avatar
Для того чтобы плюсовать нужна не сила, а рейтинг 1+. А заработать такой рейтинг можно только получая плюсы на собственных заметках, и не мало… Ну, насколько я уловил местную систему :)
avatar
Классная вещь, посмотрим как работает)
avatar
кстати не забудьте добавить код еще в фотосет опрос и т.д. :)
avatar
Прикольно смотрится, когда сам сайт из копипаста сделан.
  • aex
  • 0
avatar
С особым цинизмом: парсить полные ленты, поставить на крон и при каждом выделении сделать на весь экран всплывающее уведомление и в скрипте поставить рекламные ссылки.
avatar
А можно сделать так, что бы при копировании в буфер после текста присобачивалось что-то типа «Читать полностью на %source_link%», как на РБК, например?
avatar
Можно специальный жаваскрипт написать)
Правда тут я не особо спец. )
avatar
Думаю что нужно идти до конца, на предупреждение не все смотрят((( Т.е. помимо всплывающего окошка вставлять после скопированного фразу как сказал piatachki

Если сможете прикрутить то будет замечательно! вот код скрипта:


<!–защита от копирования –> 
<script type=»text/javascript»> 
var source_link = ‘<p>Подробнее: <a href=»‘ + location.href + ‘»>’ + location.href + ‘</a></p>’; 
jQuery( 
function($) 
{ 
if (window.getSelection) $(‘#content div.post’).bind( 
‘copy’, 
function() 
{ 
var selection = window.getSelection(); 
var range = selection.getRangeAt(0); 
var magic_div = $(‘<div>’).css({ overflow : ‘hidden’, width: ’1px’, height : ’1px’, position : ‘absolute’, top: ‘-10000px’, left : ‘-10000px’ }); 
magic_div.append(range.cloneContents(), source_link); 
$(‘body’).append(magic_div); 
var cloned_range = range.cloneRange(); 
selection.removeAllRanges(); 
var new_range = document.createRange(); 
new_range.selectNode(magic_div.get(0)); 
selection.addRange(new_range); 
window.setTimeout( 
function() 
{ 
selection.removeAllRanges(); 
selection.addRange(cloned_range); 
magic_div.remove(); 
}, 0 
); 
} 
); 
} 
); 
</script>

По идее его нужно над , вставлять но…
avatar
Выше имелось в виду над
</head>
avatar
Обновил топик. Только чуть другим скриптом.
avatar
Попробовал сделать и всплывающую и скрипт.
Всплывающая подсказка заработала, но пропали кнопки навигации и входа в админку (скин саньо) справа.

При копировании в текст ничего не добавилось (((

Можно поподробнее:
— в cpl.js не нужно больше ничего добавлять?
— в какую часть footer.tpl после чего и перед чем добавлять (я всталял в несколько мест не заработало)
P/S кэш чистил
avatar
У меня в footer.tpl прописано перед самыми:
</body>
</html>
avatar
Попробовал не срабатывает, а жаль.
avatar
скрипт что то тоже не сработал…
avatar
Я думаю что это стоит оформить в виде плагина.
avatar
круто))
avatar
а можно сделать чтоб это окно всплывала при нажатии кнопки?
  • Help
  • 0
avatar
Оформите в виде плагина
avatar
Спасибо! Сейчас применимс )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.