Перейти к публикации

Вставка в редактор в порядке выбора


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

Вставка картинок и файлов в редактор происходит просто подряд, без учета того, как были выделены элементы, т.е. в какой последовательности.

Этот лайфхак позволяет сделать вставку содержимого в порядке их выделения.

Файл: engine/ajax/upload.php

Найти и добавить ниже:

Найти:

$('.file-can-all-selected .file-preview-card').addClass("active");

Добавить ниже:

order_num = 0;

$('.file-can-all-selected .file-preview-card').each(function(){
  $(this).attr("order-num", order_num);
  order_num = order_num + 1;
});

Найти и добавить ниже:

Найти:

("#check_all").prop('checked', false);

Добавить ниже:

$('.file-can-all-selected .file-preview-card').removeAttr('order-num');

Найти и добавить ниже:

Найти:

$(this).parent().toggleClass("active");

Добавить ниже:

if ($(this).parent().hasClass("active")) {

$(this).parent().attr("order-num", order_num);

order_num = order_num + 1;

 } else {

$(this).parent().removeAttr("order-num");

order_num = order_num - 1;
}

Найти и добавить выше:

Найти:

function initmediauploadpopup() {

Добавить выше:

var order_num = 0;

Найти и добавить ниже:

Найти:

var have_images = false;

Добавить ниже:

var sortedList = $('.file-preview-card.active', $self).sort(function(lhs, rhs){
  return parseInt($(lhs).attr("order-num"),10) - parseInt($(rhs).attr("order-num"),10);
});

Найти и заменить:

Найти:

$('.file-preview-card.active').each(function() {

Заменить на:

sortedList.each(function() {

 

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

Просто как совет. В DLE есть система плагинов, и лучше это добавить в виде плагина для пользователей, чтобы можно было поставить в один клик, чем инструкция что на что заменить. Ведь создание плагина в админпанели панели, это ни что иное и такое же простое, как написание данной инструкции.

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, celsoft сказал:

Просто как совет. В DLE есть система плагинов, и лучше это добавить в виде плагина для пользователей, чтобы можно было поставить в один клик, чем инструкция что на что заменить. Ведь создание плагина в админпанели панели, это ни что иное и такое же простое, как написание данной инструкции.

Это я понимаю, тут файлами просто нельзя загружать, а любое облако со временем в тыкву превращается, надо будет в гитхаб выгрузить 🙂

Ссылка на сообщение
Поделиться на других сайтах
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Upload files</name>
	<description>Вставка загруженных файлов и изображений в редактор в порядке последовательности их выделения.</description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>==</versioncompare>
	<upgradeurl></upgradeurl>
	<filedelete>0</filedelete>
	<needplugin></needplugin>
	<mnotice>0</mnotice>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<phpinstall><![CDATA[]]></phpinstall>
	<phpupgrade><![CDATA[]]></phpupgrade>
	<phpenable><![CDATA[]]></phpenable>
	<phpdisable><![CDATA[]]></phpdisable>
	<phpdelete><![CDATA[]]></phpdelete>
	<notice><![CDATA[]]></notice>
	<file name="engine/ajax/upload.php">
		<operation action="after">
			<searchcode><![CDATA[		$('.file-can-all-selected .file-preview-card').addClass("active");]]></searchcode>
			<replacecode><![CDATA[order_num = 0;

$('.file-can-all-selected .file-preview-card').each(function(){
  $(this).attr("order-num", order_num);
  order_num = order_num + 1;
});]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[		$("#check_all").prop('checked', false);]]></searchcode>
			<replacecode><![CDATA[$('.file-can-all-selected .file-preview-card').removeAttr('order-num');]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[		$(this).parent().toggleClass("active");]]></searchcode>
			<replacecode><![CDATA[if ($(this).parent().hasClass("active")) {

$(this).parent().attr("order-num", order_num);

order_num = order_num + 1;

 } else {

$(this).parent().removeAttr("order-num");

order_num = order_num - 1;
}]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="before">
			<searchcode><![CDATA[function initmediauploadpopup() {]]></searchcode>
			<replacecode><![CDATA[var order_num = 0;]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[	var have_images = false;]]></searchcode>
			<replacecode><![CDATA[var sortedList = $('.file-preview-card.active', $self).sort(function(lhs, rhs){
  return parseInt($(lhs).attr("order-num"),10) - parseInt($(rhs).attr("order-num"),10);
});]]></replacecode>
			<enabled>1</enabled>
		</operation>
		<operation action="replace">
			<searchcode><![CDATA[		$('.file-preview-card.active').each(function() {]]></searchcode>
			<replacecode><![CDATA[sortedList.each(function() {]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
</dleplugin>

 

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

При использовании плагина, хак не пробовал, исчезает возможность выбора размера картинки (превью, сред и оригинал). Нижняя строка всплывающего окна. Проверял в Опера и файрфоксе.

Для всех загруженных к новости картинок, не только для свежей.

Изменено пользователем МВИА
Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, МВИА сказал:

При использовании плагина, хак не пробовал, исчезает возможность выбора размера картинки (превью, сред и оригинал). Нижняя строка всплывающего окна. Проверял в Опера и файрфоксе.

 

Замените

$('.file-preview-card.active').each(function() {

На:

if( $('.file-preview-card.active').length ) {
    
$('.file-preview-card.active').each(function() {

И саму замену

sortedList.each(function() {

На:

if( $('.file-preview-card.active').length ) {

sortedList.each(function() {

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

Изменено пользователем fanera
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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