TL;DR Как заставить стандартный менеджер сохранять пути? Стандартный файловый менеджер в opencart 2.1.0.1 устраивает практически всем. Если бы он ещё запоминал последнюю открытую в нём папку, цены бы ему не было, но он этого не делает. В принципе, доработать не долго: 1) При выборе файла сохранить в куки папку и номер страницы. 2) При вызове ФМ считывать эти данные из куки. Кто-нибудь такое уже делал, есть готовый модификатор/инструкция? А то велосипеды плодить не хочется, да и где там в этих контролёрах, моделях и шаблонах правки вносить мне пока сложновато найти бывает.
Нашёл куда впихнуть сохранение куки. Файл "/admin/view/template/common/filemanager.tpl" 63 строка, после "$('#modal-image').modal('hide');" и перед закрывающей "}": Код: var date = new Date(); //нужно для установки времени жизни кук var page_number = document.querySelector('.pagination .active span'); //текущий номер страницы if (page_number) { //Пишем куку, если номер страницы есть date.setTime(date.getTime() + (1000 * 24 * 60 * 60 * 1000)); //срок жизни задаём 1000 дней document.cookie = encodeURIComponent("page") + "=" + encodeURIComponent(page_number.innerHTML) + "; expires=" + date.toGMTString(); + "; path=/"; } else { //удаляем куку, если номера страницы нет date.setTime(date.getTime() -1); //отрицательный срок жизни удалит куку document.cookie = encodeURIComponent("page") + "=" + "; expires=" + date.toGMTString(); + "; path=/"; } //Сохраняем текущий путь в куки date.setTime(date.getTime() + (1000 * 24 * 60 * 60 * 1000)); //срок жизни задаём 1000 дней document.cookie = encodeURIComponent("directory") + "=<?php echo $directory; ?>" + "; expires=" + date.toGMTString(); + "; path=/"; В общем, осталось найти где эти куки должны считываться. Вопросы: 1) А нет ли где в куче подключенных js функции сохранения куков, чтобы мне её использовать? 2) А нет ли менее костыльного способа узнать номер страницы?
Считывать куки надо в файле admin\view\javascript\common.js, спс за наводку. Начало функции "$('#button-image').on('click', function() {" в 151 строчке меняем на Код: $('#button-image').on('click', function() { $('#modal-image').remove(); //Функция чтения куков function readCookie(name) { var nameEQ = encodeURIComponent(name) + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); } return null; } //Куки нужны при формировании этого урл $.ajax({ url: 'index.php?route=common/filemanager' + '&token=' + getURLVar('token') + '&target=' + $(element).parent().find('input').attr('id') + '&thumb=' + $(element).attr('id') + '&directory=' + readCookie('directory') + "&page=" + readCookie('page'), Кстати, js файл наглухо засел в кэше, пришлось чистить руками. @TODO 1) Заменить велосипеды типа функции чтения куков на то, что уже есть в скриптах CMS 2) Заменить костыли типа выдирания номера страницы из html на что-то более приличное 3) Написать ocmod.xml Кто движок знает хорошо, может поможете? Полезный фикс ведь.
Для кук пользуемся примером в том же скрипте Код: localStorage.setItem Я делал как то подобное, там все короче получается. Но по каким то причинам сейчас не могу найти где делал.... ((
в \admin\controller\common\filemanager.php например находим PHP: // Make sure we have the correct directory и перед ним вставим PHP: // Запоминание последней директории if (!isset($this->request->get['directory']) && !isset($this->request->get['parent']) ) { $this->request->get['directory'] = isset($this->session->data['directory_file_manager']) ? $this->session->data['directory_file_manager'] : null; $this->request->get['page'] = isset($this->session->data['page_file_manager']) ? $this->session->data['page_file_manager'] : null; } else { $this->session->data['directory_file_manager'] = $this->request->get['directory']; $this->session->data['page_file_manager'] = $this->request->get['page']; } и найти PHP: // Parent $url = ''; заменить на PHP: // Parent $url = '&parent=parent'; тестируем. Если все нормально, то добавим в сборку 2.2.0.1! (давно надо было добавить..)
Здорово! Еще бы сделать сортировку по дате добавления, чтобы последнее добавленное изображение было первым.
так уже по другому надо. Вот вырезка из модификатора из последней сборки. Устранены баги и добавлены текстовые хлебные крошки
После установки окмода пошли ошибки по другим строкам. Уже даже забил на эти ошибки, работает же, да и ладно. А потом перезалил файлменеджер из голой сборки и переустановил окмод. И вуаля. Благодарю!