Новости Joomla

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

Страница расширения
GitHub расширения

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 1395 Просмотров
*

denism300

  • Захожу иногда
  • 210
  • 5 / 0
Подскажите, как вызвать функцию, находящуюся в публичной модели из контроллера, находящегося в админке?
Если просто подключить файл с моделью и обратиться к функции, то подхватываются все параметры (файлы локализаций, блиблиотеки и т.п.), относящиеся к админ. части, соответственно, все это выдает неверный результат.

Мне же надо, чтобы функция "думала", что ее вызвали из публичной части.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вызов внешней функции из админки
« Ответ #1 : 13.12.2016, 23:27:03 »
Не перестану удивляться тому, как все так любят думать категориями "функция думала", "обмануть функцию". Так часто бывает, что придумав какую-нибудь идею, уже сразу решили, что она единственная верная.
Приведите код, так вам намного быстрее ответят.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

denism300

  • Захожу иногда
  • 210
  • 5 / 0
Re: Вызов внешней функции из админки
« Ответ #2 : 14.12.2016, 19:20:00 »
Не перестану удивляться тому, как все так любят думать категориями "функция думала", "обмануть функцию". Так часто бывает, что придумав какую-нибудь идею, уже сразу решили, что она единственная верная.
Приведите код, так вам намного быстрее ответят.
вызываемая функция из публичной модели:
Код: php
function getFile() {
$referer = JRequest::getString('HTTP_REFERER', null, 'SERVER');
$file = './media/com_vmtoxls/price.xlsx';
$this->getXLS($file);

if (JFile::exists($file)) {
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=" . JFile::stripExt(JFile::getName($file)). '_' . date("d-m-Y"). '.' . JFile::getExt($file)); 
readfile($file);

}
else {
JFactory::getApplication()->redirect($referer, JText::_('COM_VMTOXLS_NOTICE_FILE_NOT_EXISTS'), error);
}
return true;
}

эта функция, в свою очередь, вызывает getXLS(), которая, получая данные, обращаясь к другим функциям, которые, в свою очередь, делают выборку из БД, формирует xlsx файл.

из контроллера админки я вызываю так:

Код: php
public function update() {
$router = JRouter::getInstance('site');
$router -> setMode(JROUTER_MODE_SEF);
$update = new VMtoXLSModelGetXLS();
$update -> getFile();
$this->setRedirect(JRoute::_('index.php?option=com_vmtoxls&view=products', false));
}

соответственно, функция вызывается из админки и не генерируются чпу ссылки, файл пытается создаться (естественно, неуспешно) не в site/media/com_vmtoxls/, а в site/administrator/media/com_vmtoxls/, не подключается публичная локализация и т.п.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вызов внешней функции из админки
« Ответ #3 : 14.12.2016, 19:31:17 »
getFile($isSite=true){}. Пишу за рулем. Или испрльзуйте абсолютные пути.
« Последнее редактирование: 14.12.2016, 19:40:43 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Вызов внешней функции из админки
« Ответ #4 : 14.12.2016, 22:20:21 »
Пишу за рулем. Или испрльзуйте абсолютные пути.
2robert
не нарушай ПДД
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вызов внешней функции из админки
« Ответ #5 : 14.12.2016, 22:36:35 »
2robert
не нарушай ПДД
Виноват, исправлюсь :) (хотя реально езды как таковой и не было: стоял 4 часа в пробке :().
Не будь паразитом, сделай что-нибудь самостоятельно!
*

denism300

  • Захожу иногда
  • 210
  • 5 / 0
Re: Вызов внешней функции из админки
« Ответ #6 : 15.12.2016, 01:29:07 »
getFile($isSite=true){}. Пишу за рулем. Или испрльзуйте абсолютные пути.
не сработало.
использовать абсолютные пути не вариант, т.к. в прайс вставляются ссылки на товары, и, если, вызывать из админки, то ссылки не конвертируются в ЧПУ
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Вызов внешней функции из админки
« Ответ #7 : 15.12.2016, 08:28:37 »
Уже много раз писали на форуме, как использовать ЧПУ фронта в админке, не искали?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

denism300

  • Захожу иногда
  • 210
  • 5 / 0
Re: Вызов внешней функции из админки
« Ответ #8 : 15.12.2016, 15:37:33 »
искал, и даже перед тем, как создать эту тему, делал изначально так, но возникли проблемы в виде того, что к концу ссылки при вызове из фронта добавлялся алиас кнопки меню.

в итоге, решил проблему так (это кусок кода в публичной модели, отвечающего за формирование ссылки):
Код: php
if ($app->isAdmin()) {
$uri = $router->build(JURI::root(). JRoute::_($link, true));
$path = str_replace(array('http:/', '/administrator', '/index.php'), array('http://', '', ''), $uri->getPath());
$uri->setPath($path);
$url = JURI::root(). $uri->toString(array('path', 'query', 'fragment'));
}
else {
$uri = JURI::root(). JRoute::_($link, true);
$url = str_replace(array('//', 'http:/', '/index.php', '/component/vmtoxls'), array('/', 'http://', '', ''), $uri);
}

не знаю, насколько корректно с точки зрения API Joomla, но работает правильно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 973
Последний ответ 01.03.2021, 04:08:48
от gartes
Установка демо данных из админки расширения

Автор effrit

Ответов: 16
Просмотров: 1417
Последний ответ 28.05.2018, 10:54:48
от effrit
Вызов редактирования материала в модальном окне

Автор AlekVolsk

Ответов: 14
Просмотров: 1893
Последний ответ 18.03.2018, 00:32:29
от robert
Модуль для админки

Автор platonische

Ответов: 2
Просмотров: 2060
Последний ответ 29.03.2017, 16:53:58
от SeBun
вызов setRedirect() из модели

Автор denism300

Ответов: 2
Просмотров: 1367
Последний ответ 11.12.2016, 21:16:12
от denism300