Desti
Актив
-
В сети
-
Количество сообщений
2 149 -
Reputation
1,2k Desti's Reputation
Everything posted by Desti
-
Загрузка вложений
Да это несложно найти. По фразе "Вам разрешено загрузить" находим ключ uploadMaxFilesErr, по этому ключу находим единственное применение в ips.ui.uploader.js в функции, которая вызывается при добавлении файла. message: ips.pluralize( ips.getString( 'uploadMaxFilesErr' ), options.maxFiles ) - теперь понятно, откуда ошибка. JS берет данные из html, значит их кто-то туда плюет. Ищем data-ipsUploader-maxFiles и находим 4 шаблона, где эта переменная используется. Например global/forms/uploads. В принципе этого достаточно, чтобы решить проблему, прибиваем эту конструкцию везде, где находим {{if $maxFiles }}data-ipsUploader-maxFiles="{$maxFiles}"{{endif}} Если копать дальше, то добираемся для helpers/forms/Editor и /Upload, куда это значение попадает из подсистем, использующих редактор с полем upload. 'maxFiles' => NULL, // Maximum number of files that can be uploaded Значение передается в опциях формы Upload - ищем, находим в promote.php: 'maxFiles' => 10, и в галерее $options['maxFiles'] = $maxNumberOfImages; Всё, больше нигде эта опция не задается вообще и я не знаю, откуда она берет ноль! Возможно это какой-то очень дурацкий баг, тем более, что такого понятия, как "количество файлов" вообще нет в настройках.
-
Загрузка вложений
-
Загрузка вложений
Очень загадочная ошибка.. Её генерит скрипт, который получает количество файлов из data-* полей. F12, правый клик на окне аттачей - "Посмотреть код", промотать чуть выше до выделенного на картинке и сделать скриншот. Естественно там, где эта ошибка появляется гарантированно.
- Chatbox FREE 4.3.0
- Chatbox FREE 4.3.0
-
Максимальное количество символов в Password
Указать где? Значения вшиты (люблю IPS всё сильнее и сильнее) в \IPS\Helpers\Form\Password /* Password length */ if ( mb_strlen( $this->value ) < 3 AND ( $this->required OR (string) $this->value ) ) ... if ( $this->options['enforceMaxLimit'] and mb_strlen( $this->value ) > 72 ) ... так что ручками править или плагинчиком.
-
За что я не люблю IPS :)
При чем тут он? Вместо него давно redis и он работает, но объекты классов не живут в кеше.
-
Помогите найти!
______ __ _____ ____
-
Помогите найти!
Стили начинаются с cUserHovercard, легко находятся в админке в редакторе тем.
-
как обновить форум?
этого не может быть. Единственная версия, почему это может происходить - права на файлы. Возможно вы заливаете файлы под другим пользователем.
-
Совместные покупки плагинов и приложений
Идейка: добавить скрытых "покупателей". Например, человек может покупать, но не делает этого по причине возможных проблем с ипсом в дальнейшем. Админ создает группу скрытых покупателей, которых не надо просить, надо просто выбрать анонимного при создании темы. После заверщения сбора денег организатор отсылает сумму на карту покупателя, тот оплачивает покупку.
-
Учёт комментариев к файлам
Попробуйте бесплатно DontCountComments 1.0.0.xml
-
За что я не люблю IPS :)
Домашний сервер (i5 какой-то, 16gb, ssd) \IPS\Db::i()->select( '*', 'forums_posts', array("pid=?") ) -> 0.000020980835 сек. \IPS\forums\Topic\Post::load() -> 0.003468036652сек. load / DB = 165.295454256230 $mysqli->query("SELECT * FROM forums_posts where pid=") -> 0.000183105469сек. load / mysqli = 18.940104142930 Форумный сервер (Xeon E5-2620, 64gb) \IPS\Db::i()->select( '*', 'forums_posts', array("pid=?") ) -> 0.000013828278сек. \IPS\forums\Topic\Post::load()-> 0.001410961151сек. load / DB = 102.034479708898 $mysqli->query("SELECT * FROM forums_posts where pid=") -> 0.000104904175сек. load / mysqli = 13.449999973786 Первая строка, скорее всего, из кеша, но всё равно ужас-ужас, ведь load тоже из кеша берет.
-
За что я не люблю IPS :)
Хостинг провайдер "Патсталом", какой-то Core Quad c 4gb и debian 9 на работе.
-
За что я не люблю IPS :)
Вы всё еще спрашиваете, почему IPS такой тормознутый? Время выполнения одинаковых по сути запросов.. В 4 с лишним раза медленнее.. \IPS\Db::i()->select( '*', 'forums_posts', array("pid=?", 471) ) -> 0,00078797340393066 сек. \IPS\forums\Topic\Post::load(471) -> 0,0033941268920898 сек.
-
Учёт комментариев к файлам
Штатно - вроде никак. Грубо - в файл applications/downloads/sources/File/Comment.php добавить функцию public static function incrementPostCount( \IPS\Node\Model $container = NULL ) { return FALSE; } Совсем нежно - кодовый плагинчик изобразить на класс \IPS\downloads\File\Comment на одноименную функцию.
-
Защита от двойных регистраций
Не получится. Можно заблокировать хостинг-провайдеров, можно подключить проверку по спам-базам и базам IP, но от "честных" регистраций (с домашних провайдеров, с сотовых сетей) вы никак не спасетесь. Только жесткая модерация, запрет ЛC, блокировка сообщений по ключевым словам и ссылкам.
-
Как закрывать форумы автоматически?
Не думаю, что вам поможет форма в пустом приложении. Найду время, сделаю вам шаблончик для изучения.
-
Как закрывать форумы автоматически?
Это написанное за 5 минут приложение.
-
Как закрывать форумы автоматически?
Создайте простое приложение и тренируйтесь. Плагины не совсем то, что нужно для решения этой задачи. Это усложнение. Вам нужна форма ввода даты и поле ввода времени в простейшем формате типа часы / минуты. Что-то типа
-
Как закрывать форумы автоматически?
Чтобы создать что-то для исполнения в будущем, надо, во первых, создать форму, в которой указывается форум, время и дата, во вторых, создать табличку в базе (или хранить в Store) и записывать в нее данные из формы, в третьих, создать задачу, которая раз в минуту будет проверять табличку и при наступлении указанного времени закрывать форум. Тянет на целое приложение
-
Plugin Tutorial/Руководство по плагинам?
Для начала вам надо разобраться с классами в php, без этого будет невозможно понять устройство и функционирование движка форума. А поскольку движок еще и глючный, иногда будет очень сложно понять, что вообще происходит Посмотрите youtube - "classes in php", там есть много хороших курсов.
-
Plugin Tutorial/Руководство по плагинам?
Весь ISP построен на классах, поэтому ваша задача найти файл, который отвечает за исполнение функции, которую вы хотите изменить/заменить. Например, вы хотите изменить что-то в логике галереи при показе изображения. После недолгих поисков вы найдете файл modules/front/view.php и в нем функцию manage(), которая отвечает за показ изображения. Теперь надо сказать инструменту разработчика, какой класс вы хотите изменить. Смотрим в первые строки файла view.php и видим: namespace IPS\downloads\modules\front\downloads; - нашли первую часть головоломки. Теперь смотрим ниже - class _view extends \IPS\Content\Controller - вторая часть головоломки. Убираем '_', получаем полное имя класса IPS\downloads\modules\front\downloads\view Отлично, класс найден. Теперь идем в инструменты разработчика на созданном нами плагине, закладка hooks, нажимаем create hook и заполняем поля как нам надо: Hook Type: Code plugin Class to extend: downloads\modules\front\downloads\view (IPS\ уже есть) Filename: downloadsViewHook Жмем Save, если не ошиблись, то на экране появится наш новый хук, а в директории hooks плагина файл downloadsViewHook.php Теперь надо кликнуть на карандаш и войти в режим редактирования хука. Слева список функций, которые мы может изменить нашим хуком, справа поле редактирования. Находим в начале списка функций manage() и один раз кликаем на ней. Справа в окне появляется шаблон нашего хука с новой функцией. Опа пока ничего не делает, просто вызывает родительскую функцию, но наш код уже работает. Теперь у вас есть два пути: вызвать родителя и потом добавить/изменить что-то в данных, которые он создал, либо удалить return parent::manage();, полностью скопировать код из оригинальной функции и отредактировать его. Первый путь, по мнению разработчиков движка, считается правильным, т.к. не изменяет родительский код и позволяет строить цепочки хуков, второй путь - путь джедая, вы берете на себя ответственность за то, что цепочки хуков к этому классу работать не будут и это будет единственный хук для этого класса. Выбираете свой путь, пишете свой код, радуетесь жизни.
-
Как пересобрать весь пакет используя dev tools?
Не совсем понятно, про какой пакет речь.. Если вы хотите пересобрать приложение или плагин, то в dev режиме у вас появятся пункты меню: Внесите изменения, нажмите их подряд и потом выйдите из режима dev, приложение будет перестроено и активировано.
-
Защита от двойных регистраций
Это скорее норма, чем ошибка. Я уже вам говорил, что IP с разницей в одну цифру в последней группе физически могут располагаться на разных континентах. Предлагать более выгодные условия, наверное?