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

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

3 минуты назад, celsoft сказал:

Есть и много

можно по поводу крона - https://forum.dle-news.ru/topic/72552-datalife-engine-v130-press-release/?do=findComment&comment=363662 - решение сказать?

 

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

Админка, добавление новостей на сайте и комментарии:

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Froala p tag</name>
	<description>Перенос строки тегом p вместо br</description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>less</versioncompare>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<file name="engine/editor/shortnews.php">
		<operation action="after">
			<searchcode><![CDATA[$('.wysiwygeditor').froalaEditor({]]></searchcode>
			<replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode>
		</operation>
	</file>
	<file name="engine/editor/shortsite.php">
		<operation action="after">
			<searchcode><![CDATA[$('.wysiwygeditor').froalaEditor({]]></searchcode>
			<replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode>
		</operation>
	</file>
	<file name="engine/editor/comments.php">
		<operation action="after">
			<searchcode><![CDATA[$('#comments').froalaEditor({]]></searchcode>
			<replacecode><![CDATA[enter: $.FroalaEditor.ENTER_P,]]></replacecode>
		</operation>
	</file>
</dleplugin>

Не забываем обновлять страницу Ctrl->F5

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

Блин, ложная тревога. Это я затупил, не во все файлы вставил. Пардону просим.

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

ещё в дополнение к файлу крона, проблема с файлом  /engine/inc/include/functions.inc.php

в нём происходит удаление файлов, загруженных в новость, собственно нужны правки в строки:

@unlink( ROOT_DIR . "/uploads/files/" . $folder_prefix . $file );

$db->query( "DELETE FROM " . PREFIX . "_files WHERE news_id = '{$id}'" );

но:

Файл engine/inc/include/functions.inc.php находится в списке защищенных файлов. Он не может быть модифицирован при помощи системы плагинов.

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

Файл engine/inc/include/functions.inc.php находится в списке защищенных файлов. Он не может быть модифицирован при помощи системы плагинов.

Его можно редактировать. Он там ошибочно https://forum.dle-news.ru/topic/72591-новая-система-плагинов/?do=findComment&comment=363555 удалите его. Мы это уже исправили в дистрибутиве: https://dle-news.ru/release/1747-datalife-engine-v130-final-release.html рядом с ссылкой на скачивание список изменений.

 

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

А в  новой версии rss уже заточен под турбо? Ничего не надо править? Шаблоны там или сам файл php?

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

А в  новой версии rss уже заточен под турбо? Ничего не надо править? Шаблоны там или сам файл php?

Давно уже, еще с версии 12.1.

 

6 минут назад, alex32 сказал:

Шаблоны там

Шаблоны всегда ваши и вы там правите всегда сами. DLE не трогает ваши шаблоны. Примеры в стандартных шаблонах даны, в том числе и для турбо.

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

Он там ошибочно

ещё вопрос, если требуется заменить второе вхождение

например: engine/classes/uploads/upload.class.php

поиск:

} else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png";  $data_url = "#"; $file_play = ""; };

первое вхождение из таблицы " . PREFIX . "_static_files, оно не нужно, а нужно второе из таблицы " . PREFIX . "_files

как в этом случае быть? :)

 

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

заменить второе вхождение

Заменять больший кусок кода...

					} else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png";  $data_url = "#"; $file_play = ""; };

					if( $this->area == "xfieldsfile" ) {
Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, Sander1 сказал:

Заменять больший кусок кода...

про больший кусок кода подумал, но думал что вдруг есть предусмотренный вариант какой

хотя конешно предусмотреть все случаи вариантов поиска и замены вряд ли удастся полностью и целиком

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

хотя конешно предусмотреть все случаи вариантов поиска и замены вряд ли удастся полностью и целиком

Да, в таких случаях надо смотреть отличия выше или ниже. Да оно в приницпе, всегда так и было, когда в "дремучие времена" руками модули ставили :) А теперь вона как оно...

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

} else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png";  $data_url = "#"; $file_play = ""; };

первое вхождение из таблицы " . PREFIX . "_static_files, оно не нужно, а нужно второе из таблицы " . PREFIX . "_files

как в этом случае быть

Указывать больший кусок кода, который уже будет уникальным.

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

А где инициализаруется редактор, который в всплывающем окне при быстром редактировании? А то там не меняется br

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

А где инициализаруется редактор, который в всплывающем окне при быстром редактировании

engine/ajax/editnews.php

$('.wysiwygeditor').froalaEditor({

 

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

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

    $f = $f_sql = array();

    $dbZ = $db->query("SHOW columns FROM " . PREFIX . "_files");
    while($row = $db->get_row($dbZ)) {
        $f[] = $row['Field'];
    }
    if( !in_array("field1", $f) ) {
        $f_sql[] = "ADD `field1` VARCHAR(40) NOT NULL";
    }
    if( !in_array("field2", $f) ) {
        $f_sql[] = "ADD `field2` VARCHAR(40) NOT NULL";
    }

    if( count($f_sql)>0 ) {
        $db->query("ALTER TABLE " . PREFIX . "_files " . implode(", ", $f_sql) );

    }

теперь эти проверки требуется перенести на сторону плагиновой системы, то есть на сторону MySQL

пока что приходит на ум такой вариант:

DROP PROCEDURE IF EXISTS PluginAddColumn;
DELIMITER $$
CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName tinytext, IN fieldName tinytext, IN fieldDef text)
BEGIN
    IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE column_name=fieldName AND table_name=tableName AND table_schema=dbName)
    THEN
        set @ddl = CONCAT("ALTER TABLE `",tableName,"` ADD COLUMN `",fieldName,"` ",fieldDef);
        prepare stmt from @ddl;
        execute stmt;
    END IF;
END $$
DELIMITER ;

call PluginAddColumn(Database(), '{prefix}_files', 'field1', "VARCHAR(40) NOT NULL");
call PluginAddColumn(Database(), '{prefix}_files', 'field2', "VARCHAR(40) NOT NULL");

DROP PROCEDURE PluginAddColumn;

Кроме того что это выполняется медленее, ещё проблема:

Цитата

 

Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName ' at line 1

продолжить

 

хотя в "скомпилированном" виде запрос из окна ошибки выполняется без ошибок

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

Может в "шаблонизатор" запросов модульной системы добавить теги для добавления полей в таблицу, что то типа:

[ADD_COLUMN_IF_NOTEXIST=таблица|поле|свойство]

например:

[ADD_COLUMN_IF_NOTEXIST={prefix}_files|field1|VARCHAR(40) NOT NULL]

и уже на стороне пхп перед выполнением/компиляцией запроса делать проверку, по типу как в моём примере с пхп

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

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

Зачем вам вообще эти проверки делать? Не хотите чтобы как то пересекалось с другими модулями, используйте имена для полей, которые врядли кто будет использовать, например mymodulename_field1, при установке создавайте эти поля, при удалении модуля удаляйте. И все. В принципе врядли когда либо будет пересечение с другими полями.

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

Зачем вам вообще эти проверки делать?

это да, вот только это справедливо для того случая, когда ставим всё на чистую полностью CMS, но вот если обновляться со старой версии, то база уже есть, значит в ней уже поля имеются и тут мы через систему плагинов снова пытаемся добавить уже имеющиеся поля в базе и получаем конфуз

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

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

Совершенно не критичный, система логирования ошибок в системе плагинов, просто выведет что поля уже существуют в таблице. Это сообщение тут же можно очистить в админпанели и дальше все будет продолжать работать штатно.

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

система логирования ошибок в системе плагинов, просто выведет что поля уже существуют в таблице.

Просто было бы логично и красивее, если бы такие моменты были учтены и происходили проверки в процессе установки плагина, а не выводились ошибки и потом раздавать всем пояснения, что это нормально, так задумано и реализовано в CMS :( что это не разработчик плагина виноват...

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

А есть где то список файлов, которые нельзя модифицировать с помощью системы плагинов? Ну там  engine/modules/main.php  и т.д

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

А есть где то список файлов, которые нельзя модифицировать с помощью системы плагинов? Ну там  engine/modules/main.php  и т.д

в engine/classes/plugins.class.php написано вот что

public static $protected_files = array("engine/classes/mysql.php", "engine/classes/plugins.class.php", "engine/ajax/controller.php", "engine/data/config.php", "engine/data/dbconfig.php", "engine/data/socialconfig.php", "engine/data/videoconfig.php");

я так понимаю только эти файлы запрещены?!

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

я так понимаю только эти файлы запрещены?!

Да нет, @celsoft писал что main.php engine.php тоже запрещены, я потому  и спрашиваю. Хотелось бы увидеть список, что бы знать все файлы. 

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

Да нет, @celsoft писал что main.php engine.php тоже запрещены, я потому  и спрашиваю. Хотелось бы увидеть список, что бы знать все файлы. 

Не запрещены, в строке public static $protected_files и есть список.

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

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

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

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

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

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

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

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

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

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