Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[BETA] CopyPaste

Здесь авторы могут постить бета-версии своих расширений для phpBB. Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.2.x | FAQ | Внимание! Прежде чем создать тему - прочти! | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Стаж: 11 лет 4 месяца
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза
Контактная информация:

[BETA] CopyPaste

Сообщение saturn-z »

Название: CopyPaste
Автор: saturn-z
Описание: При копировании текста с сайта автоматически подставляется "Источник"

Запрос расширения: http://www.phpbbguru.net/community/topic45014.html

DEMO: ЗДЕСЬ
Версия Расширения: 1.0.1
Требования: phpBB 3.1.*@dev
GitHub репозиторий: https://github.com/saturn-z/CopyPaste
Загрузить расширение: https://github.com/saturn-z/CopyPaste/a ... master.zip
Последний раз редактировалось saturn-z 13.08.2019 15:53, всего редактировалось 2 раза.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет
Благодарил (а): 67 раз
Поблагодарили: 799 раз
Контактная информация:

Re: [BETA] CopyPaste

Сообщение Anvar »

Использовал версию от KEMnEP для одного форума.

Изменил подключение файла локализации

Код: Выделить всё

	static public function getSubscribedEvents()
	{
		return array('core.viewtopic_modify_page_title' => 'load_language_on_setup');
	}

	public function load_language_on_setup($event)
	{
		$this->user->add_lang_ext('saturnZ/CopyPaste', 'copypaste_lng');
	}
и в шаблоне ограничил исполнение для всех страниц кроме <!-- IF S_VIEWTOPIC -->

В принципе в версии saturn-z можно сделать аналогично, но источник добавляется к любому копируемому объекту, что может быть не очень то удобно когда код копируешь в исполняемый файл.
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

Тогда уж лучше и заменить, если брать за основу мою версию

Код: Выделить всё

	$(document).ready(function() {
		$(".post").bind({
			copy : addLink
		})
	});
Мало ли откуда начнут копировать :lol:

Отправлено спустя 47 минут 12 секунд:
Посмотрел коды на этой странице и подумал, неплохо бы фигурные скобки добавить в исключение. уж они то точно в основном только в коде и встречаются и не по одной {}
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 2 месяца
Благодарил (а): 797 раз
Поблагодарили: 175 раз

Re: [BETA] CopyPaste

Сообщение southklad »

а добавить ссылку именно на нужно сообщение возможно? А не на всю тему?
Изображение
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

можно, только если не менять метод.. придётся каждый раз сравнивать выделенные текст с содержимым всей страницы чтоб найти откуда был взят, а это лишняя нагрузка на клиента, имхо, особенно если учесть страницы с БОЛЬШИМ содержанием.
Упд: собственно из за этого и отказался от поиска целиком блока кода перейдя на ключевые символы вместе с ограничением срабатывания от 6 слов разделённых пробелом.

Отправлено спустя 49 минут 19 секунд:
Хотя лично мне Сатурновский код в нынешнем виде больше нравится, когда будет гораздо больше свободного времени чем сейчас, на его основе и можно будет создать без костыльный вариант, который точно отделит кодбокс от не код бокса, но это точно не в ближайший месяц. если тут кто нибудь раньше его не создаст.

Отправлено спустя 1 час 51 минуту 55 секунд:
Ааа блин! Почему осеняет всегда в дали от тестового компа.
Всего-от за места поиска символов нужно через ечь прогнать все кодебоксы (если есть) на выделеный текс ( или часть его на точное совпадение) и если есть хоть 1 присвоить какойнить переменной значение скажем 1, ну и дальше самое простое просто отменить выполнение вставки если стало хоть раз 1.
Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Стаж: 11 лет 4 месяца
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза
Контактная информация:

Re: [BETA] CopyPaste

Сообщение saturn-z »

KEMnEP писал(а): копируются поля div.content, дабы исключить случайные срабатывания пользовательских нажатий
Не самое лучшее решение. т.к.
KEMnEP писал(а): Мало ли откуда начнут копировать
Пример с сайта Anvar
Пример 
Andy2 » 05.01.2016, 09:24 #15
Eco Logic, Благодарю за помощь, все ништяк. У тебя тв сразу появляется окно (http), у меня пустая страница, чтоб показалось окно плеера надо вместо https написать в адресной строке http и тогда плеер сразу показывается, но происходит разлогин. Можно ли только для этой страницы сделать http ? Наверное в коде надо копать. Может кто знает.
Вставлял скрипт
Лучше использовать div.postbody , или div.inner хотя с последним замечены проблемы с расширением портала, иногда добавляется двойная ссылка на источник.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

saturn-z, я об этом уже писал выше, что лучше .post :roll:
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 2 месяца
Благодарил (а): 797 раз
Поблагодарили: 175 раз

Re: [BETA] CopyPaste

Сообщение southklad »

Заметил ошибку из новой версии из первого сообщения. Если копировать из поля ввода, то текст не копируется, а копируется только текст "источник и ссылка" а то что нужно скопировать не копируется вообще.
Изображение
Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Стаж: 11 лет 4 месяца
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза
Контактная информация:

Re: [BETA] CopyPaste

Сообщение saturn-z »

igorbond, из какого опять поля что не копируется? Я у себя тестил весь день, ошибок никаких не заметил. И что ты имеешь ввиду под "полем ввода"?
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 2 месяца
Благодарил (а): 797 раз
Поблагодарили: 175 раз

Re: [BETA] CopyPaste

Сообщение southklad »

Если копировать текст не из готового сообщения, а при вводе и предпросмотре, скопировать его из "поля ввода текста сообщения"
Изображение
Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Стаж: 11 лет 4 месяца
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза
Контактная информация:

Re: [BETA] CopyPaste

Сообщение saturn-z »

igorbond, проверил, всё копируется, ссылка на источник не добавляется.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

igorbond, а дайте я по вангую! У вас ещё при переходе между страниц одной темы должно вставляться в выделенное копирайт только первой посещённой страницы (если включен аджакс) ну и уж точно у Вас стоит [RC] Быстрый ответ: перезагрузка (QuickReply Reloaded) Версия saturn-z, из коробки с ним не очень дружит.
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

Скрипт на основе Re: [BETA] CopyPaste (Пост KEMnEP #478908) теперь корректно ищет и находит любой текст в бокс коде, если выделение меньше чем 5 слов включительно и/или совпадает частично/полностью с любым кодебоксом на странице. но не больше его по размеру слов (проще говоря выделен текст внутри кодебокса или кодебокс целиком кнопкой выделить всё), вставка копирайта не происходит. Если выделен не кодебокс, или кодебокс и ещё текст, копирайт вставляется, при учёте что выделение больше 6 слов, включительно.
Из минусов, если срабатывает копирайт форматирование текста пропадает и вырезаются строки содержашие символы<*> и<!--*-->. Примеры <!-- IF S_VIEWTOPIC --> и <script type="text/javascript">
В свободное время устраню и эту проблему (проблему ли? кто пойдёт читать источник, если скопированное на чужом сайте хорошо отформатировано и удобно с коробки для прочтения) ну и в планах встроить показ с каких именно постов взят код. Если никто не опередит, или я не решу что это уже что то лишние.
Внимание! скрипт работает ТОЛЬКО с кириллицей (русский алфавит с ёЁ) и латиницей.
Установка: содержимое файла overall_footer_after.html полностью заменить на

Код: Выделить всё

<!-- KEMnEP edition-->
<!-- IF S_VIEWTOPIC -->
<script type="text/javascript">
function add_copepast(e, elements) {
	function addLink() {
		var selection = window.getSelection(),
			pagelink = '<p>{L_COPYRIGHT_NAME}: <a href="' + location.href + '">' + location.href + '</a></p>',
			newdiv = document.createElement('div'),
			res1,
			a = selection + '',
			c = 0;
			
		$('.codebox').each(function(){
			var e = a.replace(/[^\w\ёЁdа-яА-Я]/g, '');
			var b = $(this).text();
			var d = b.replace(/[^\w\dёЁа-яА-Я]/g, '');
			eval("res1 = /" + e + "/g.exec('" + d + "')");
			if ( res1 != null) {
				c = 1;
			}
		});
		var text = selection.toString().split(" ");
		if(text.length > 5)
		{
			if ( c != 1)
			{
				var rezka = a.replace(/(\<.*?\>|<!--.*?-->)/g, '');
				var copytext = rezka + pagelink;
				newdiv.style.position = 'absolute';
				newdiv.style.left = '-99999px';

				document.body.appendChild(newdiv);
				newdiv.innerHTML = copytext;
				selection.selectAllChildren(newdiv);

				window.setTimeout(function () {
				document.body.removeChild(newdiv);
				}, 90000);
			}	
		}
	}
	$(document).ready(function() {
		$(".post").bind({
			copy : addLink
		})
	});
}
$(document).ready(function (e) {
   add_copepast(e, $(document));
});
$('#qr_posts').on('qr_loaded', add_copepast);
</script>
<!-- ENDIF -->
<!-- END KEMnEP edition-->
Отправлено спустя 42 минуты 36 секунд:
чуть подправил код скрипта
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

Версия скрипта из поста Re: [BETA] CopyPaste (Пост KEMnEP #479018), устраняющая ошибку в console (хоть и правильную с точки зрения функционала отработку скрипта в целом) при специфичном кодебоксе вида
пример 

Код: Выделить всё

                  }
               }
            }
         }
      }
   }
}

Код: Выделить всё

<!-- KEMnEP edition-->
<!-- IF S_VIEWTOPIC -->
<script type="text/javascript">
function add_copepast(e, elements) {
	function addLink() {
		var selection = window.getSelection(),
			pagelink = '<p>{L_COPYRIGHT_NAME}: <a href="' + location.href + '">' + location.href + '</a></p>',
			newdiv = document.createElement('div'),
			res1,
			a = selection + '',
			c = 0;
         
		$('.codebox').each(function(){
			var e = a.replace(/[^\w\dёЁа-яА-Я]/g, ''),
				b = $(this).text(),
				d = b.replace(/[^\w\dёЁа-яА-Я]/g, ''),
				res2 = e[0];
				if ( res2 == undefined) {
					c = 1;
				} else {
					eval("res1 = /" + e + "/g.exec('" + d + "')");
					if ( res1 != null) {
						c = 1;
					}
				}
		});
		var text = selection.toString().split(" ");
		if(text.length > 5)
		{
			if ( c != 1)
			{
				var rezka = a.replace(/(\<.*?\>|<!--.*?-->)/g, ''),
					copytext = rezka + pagelink;
				newdiv.style.position = 'absolute';
				newdiv.style.left = '-99999px';

				document.body.appendChild(newdiv);
				newdiv.innerHTML = copytext;
				selection.selectAllChildren(newdiv);

				window.setTimeout(function () {
					document.body.removeChild(newdiv);
				}, 90000);
			}   
		}
	}
	$(document).ready(function() {
		$(".post").bind({
			copy : addLink
		})
	});
}
$(document).ready(function (e) {
   add_copepast(e, $(document));
});
$('#qr_posts').on('qr_loaded', add_copepast);
</script>
<!-- ENDIF -->
<!-- END KEMnEP edition-->
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 2 месяца
Благодарил (а): 797 раз
Поблагодарили: 175 раз

Re: [BETA] CopyPaste

Сообщение southklad »

saturn-z писал(а): igorbond, проверил, всё копируется, ссылка на источник не добавляется.
При написании ответа, и копировании текста он не копируется вообще. Точнее не так на странице ответа текст не копируется именно из поля ввода текста, а любой другой копируется.
Вложения
Безымянный.png
Изображение
Аватара пользователя
KEMnEP
phpBB 2.0.17
Сообщения: 1106
Стаж: 9 лет
Благодарил (а): 42 раза
Поблагодарили: 281 раз

Re: [BETA] CopyPaste

Сообщение KEMnEP »

По сравнению с Re: [BETA] CopyPaste (Пост KEMnEP #479018) добавилось поиск и вставка ссылки номера поста, если такой пост единственный в своём роде, и взято содержимое из него. Если же содержимое не уникально на странице, или скопировано больше одного поста, вставляется ссылка на страницу (все предыдущие правила на счёт 5 слов и кодебокса в силе).

Код: Выделить всё

<!-- KEMnEP edition-->
<!-- IF S_VIEWTOPIC -->
<script type="text/javascript">
function add_copepast(e, elements) {
	function addLink() {
		var selection = window.getSelection(),
			pagelink = '<p>{L_COPYRIGHT_NAME}: <a href="' + location.href + '">' + location.href + '</a></p>',
			newdiv = document.createElement('div'),
			res1,
			a = selection + '',
			c = 0,
			testauthor = 0;
         
		$('.postbody').each(function(){
			if ( c == 0 || testauthor == 0 || testauthor == 1) {
				var self = $(this),
					e = a.replace(/[^\w\dёЁа-яА-Я]/g, ''),
					d = self.find('.codebox').text().replace(/[^\w\dёЁа-яА-Я]/g, ''),
					res2 = e[0];
					if ( res2 == undefined) {
						c = 1;
					} else {
						eval("res1 = /" + e + "/g.exec('" + d + "')");
						if ( res1 != null) {
							c = 1;
						}
					}
					if ( c == 0 ) {
						var textpostbody = self.text().replace(/[^\w\dёЁа-яА-Я]/g, '');
						eval("var res4 = /" + e + "/g.exec('" + textpostbody + "')");
						if ( res4 != null) {
							var authortext = self.find('p.author').html().replace(/(\<a\ href\=\"\.\/|["][>].*)/g, ''),
								domen = location.href.replace(/viewtopic\.php.*/g, '');
								if ( testauthor == 0) {
									pagelink = '<p>{L_COPYRIGHT_NAME}: <a href="' + domen + authortext + '">' + domen + authortext + '</a></p>';
								}
								testauthor = testauthor + 1;
								if ( testauthor == 2) {
									pagelink = '<p>{L_COPYRIGHT_NAME}: <a href="' + location.href + '">' + location.href + '</a></p>';
								}
						}
					}
			}
		});
		var text = selection.toString().split(" ");
		if(text.length > 5)
		{
			if ( c != 1)
			{
				var rezka = a.replace(/(\<.*?\>|<!--.*?-->)/g, ''),
					copytext = rezka + pagelink;
				newdiv.style.position = 'absolute';
				newdiv.style.left = '-99999px';

				document.body.appendChild(newdiv);
				newdiv.innerHTML = copytext;
				selection.selectAllChildren(newdiv);

				window.setTimeout(function () {
					document.body.removeChild(newdiv);
				}, 90000);
			}   
		}
	}
	$(document).ready(function() {
		$(".post").bind({
			copy : addLink
		})
	});
}
$(document).ready(function (e) {
   add_copepast(e, $(document));
});
$('#qr_posts').on('qr_loaded', add_copepast);
</script>
<!-- ENDIF -->
<!-- END KEMnEP edition-->
Отправлено спустя 26 минут 9 секунд:
микро фикс логики

Отправлено спустя 50 минут 42 секунды:
хотя.. пока не устанавливайте эту версию скрипта, я придумал гораздо меньше ресурсо затратный способ. и понял потенциальную ошибку логики, ( можно же только первый совпадающий пост выводить примой ссылкой, если что сами в низ пролистают) но слишком уже спать хочу...
Ответить

Вернуться в «Бета-версии расширений для phpBB»