Володя

Володя

С нами с 18 декабря 2012; Место в рейтинге пользователей: #4
Володя
27 марта 2024, 12:56
0
То есть ты еще и какой-то репозиторий доработаешь, и в админку MODX новые функции для работы с пакетами протолкнёшь?
нет, конечно. Мы же рассуждаем в данный момент чисто теоретически.

Прям не терпится почитать, что тебе в MODX LLC ответят на pull-request.
Да на… пошлют. Я прекрасно это осознаю.

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

Получается на данный момент будет 2 вида дополнений:
— транспортный пакет (ТП)
— композер пакет (КП)

Обычная ситуация, сделали сайт, туда поставят кучу дополнений ТП и конечно что-то из КП. Придется отслеживать ТП в разделе пакетов MODX и КП в консоли.

Как по мне это уже неудобно, нет единого центра управления. Ты же понимаешь что даже если ты сейчас прикрутишь терминал в админку MODX LLC тебе ответят аналогично.

И по факту будет сайт с двумя видами дополнений. Поэтому я и предлагаю вариант с ТП.
Да это как ты считаешь костыль, это не модно, это устарело, это надо же транспортный собирать. Но другого в ближайшее время в MODX не будет.
Володя
27 марта 2024, 12:16
0
Вот к примеру, подписался на новые релиз в твоем репозитории, пришло оповещение, я зашел на сайт и просто переустановил пакет.
/home/s33859/www/composer.json has been updated
Running composer update mmx/database mmx/forms
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 2 updates, 0 removals
- Upgrading mmx/database (1.0.0 => 1.0.1)
- Upgrading mmx/forms (dev-main 9a6f320 => 1.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
As there is no 'unzip' nor '7z' command installed zip files are being unpacked using the PHP zip extension.
This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost.
Installing 'unzip' or '7z' (21.01+) may remediate them.
- Downloading mmx/database (1.0.1)
- Downloading mmx/forms (1.0.1)
0/2 [>---------------------------] 0%
1/2 [==============>-------------] 50%
2/2 [============================] 100%
- Upgrading mmx/database (1.0.0 => 1.0.1): Extracting archive
- Upgrading mmx/forms (dev-main 9a6f320 => 1.0.1): Extracting archive
0/2 [>---------------------------] 0%
2/2 [============================] 100%
Generating autoload files
61 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
Using version ^1.0 for mmx/database
Using version ^1.0 for mmx/forms

Cleared MODX cache

Added event "OnSiteRefresh" to plugin "mmxForms"
Run Phinx migrations
Phinx by CakePHP - https://phinx.org.

using config file core/vendor/mmx/forms/core/phinx.php
using config parser php
using migration paths
- /home/s33859/www/core/vendor/mmx/forms/core/db
using environment local
using database s33859
ordering by creation time

== 20240325145843 FormSnippet: migrating
== 20240325145843 FormSnippet: migrated 0.2726s

== 20240326132457 Files: migrating
== 20240326132457 Files: migrated 0.6260s

All Done. Took 0.9163s

Cleared MODX cache
Готово, у меня новая версия дополнения. Теперь и на русском языке, отлично.

ps. там сортировка не работает, выдает ошибку joxi.ru/zANQW4qiv4KyQ2
Володя
27 марта 2024, 12:04
+1
Я эти дополнения сделал с противоположной целью, если что — заставить юзеров MODX пользоваться композером.
Пользователи MODX — они же все разные, нельзя всех под одну гребенку. Одно дело если речь про разработчиков то да, тут я с тобой солидарен, composer удобно и тд и тп.

Но большая часть это обычные люди, вообще не разрабы и они тоже хотят что-то сделать на MODX, им нужен понятный интерфейс с кнопочками и окошечками.
Володя
27 марта 2024, 11:56
0
Это как? Какой репозиторий будет проверять версию пакета в packagist.org и показывать в админке кнопку «обновить»?
ну явно что не rest.modx.com.

И что будет происходить при нажатии на эту кнопку?
обновление пакета с composer

Нет, я про консоль в админке, где надо будет пальчиками вбивать команды composer и читать ответы. Что-то типа такого интегрировать.
не, не зайдет. Тот кто не пользуется консолью и такой пользоваться не будет. Нужен нормальный всем понятный интерфейс.

Я предлагаю подписываться на релизы в репозитории:
в случае с закрытым репозиторием как подписывать и узнавать об обновлении?
Володя
27 марта 2024, 11:27
+1
Если уж на то пошло то можно генерировать транспортный автоматом, при появлении новой версии в packagist, там от транспортника то ничего не осталось. Если все лишнее выкинуть то останется в районе 6 файлов.
Володя
27 марта 2024, 11:16
0
1. Ты не ответил — как юзер узнает о релизе новой версии, если ты не загрузишь новый транспортник в репозиторий MODX?
из наиболее логичного это инфу должен давать репозиторий на запрос CheckUpdates

Не соглашусь,
У Composer уже есть отличный CLI. Лучше уж сделать пакет с окошком терминала для работы с этим CLI из админки, если так страшно заходить в консоль сервера.
ну так сейчас ты не про интерфейс управления?

И вопрос — а как юзер узнает об обновлении если поставил пакет напрямую через композер?
Володя
27 марта 2024, 09:22
0
1 — тут как бы есть несколько вариантов.
— Если необходимо связать версию транспортного пакета (ТП) с версией packagist то это можно прописать в том же ТП.
— Если в этом нет необходимости то добавить в ТП update пакета с packagist

Ну и откат на предыдущую версию вряд ли будет работать.
если версии ТП и packagist связанны, то можно и реализовать откат.

2 — ну пока черновой вариант такой, мне это тоже не нравится. Там лежит только обертка для композера. Ее можно переместить в другое место и соответственно этот пункт пропадает.

В общем, всё это как-то костыльно
Это да не фен шуй — потому и просил не ругать)
Но согласись не хватает интерфейса для управления в админке? Это пока самый простой способ видеть что установлено и привычно для пользователя.
Володя
27 марта 2024, 09:03
+1
именно в случае composer зависимостей как раз и нужен новый тип дополнения. Никто не гарантирует что другой пакет не притащит свои зависимости с другими версиями и сайт перестанет корректно работать.
Володя
21 марта 2024, 14:14
+1
Там если транспортник будет выполнять
composer exec mmx-forms install
при установке

и
composer exec mmx-forms remove
при удалении
кроме как костыля в виде самого пакета больше тут ничего и нет
Володя
21 марта 2024, 10:58
0
Ну так можно реализовать установку из композер и завернуть это в транспортный пакет.
Пакет будет установлен с учетом всех зависимостей и тд. Пакет будет в данном случае как обертка. Не будет занимать много места, будет так же работать и откат и тд и все фишки пакета MODX.
Володя
21 марта 2024, 10:33
+1
1. Мы решаем фундаментальную проблему с дублированием зависимостей, когда каждый транспортный пакет MODX может притащить свою версию популярной библиотеки в общее пространство имён, и что-нибудь этим сломать.
Да это очень напрягает, когда на сайте сразу 3 версии Guzzle с разных дополнений и приходиться придумывать велосипед как заставить это работать.

Отличный пример!!! Применю обязательно.

ps. Что мне непонятно, так почему ребята которые задают курс MODX до сих пор придерживаются транспортных пакетов? Когда в ядре уже есть все необходимое для установки через композер…
Володя
19 марта 2024, 14:07
+1
Разобрался, благодаря вам!
Отлично!
Эти данные надо вынимать из msOrderAddress, а не из msOrder.
ну значит пакет пишет не пропертис заказа, а в пропертис адреса заказа.
Еще раз убедился на практике в большом потенциале дополнения msStatOrders. Благодарю автора!
Пожалуйста, обращайтесь!
Володя
19 марта 2024, 14:03
0
Естественно сортировка и группировка по мнимым полям не работает)
Володя
19 марта 2024, 12:31
+1
<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Order.properties'])) {
    $properties = json_decode($row['Order.properties'], true);
    $utm = $properties['utm_source'] ?? ''; // тут берете нужное поле из массива properties
}

return $utm;
Володя
19 марта 2024, 07:14
+1
Доброе утро.

Добавьте выборку поля Order.properties



добавьте рендер



<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Order.properties'])) {
    $utm = $row['Order.properties']['utm']; // тут берете нужное поле из массива properties
}

return $utm;

добавьте поле



Должно работать, если не получится — пишите в ТП.
Володя
18 марта 2024, 09:13
+1
В итоге проблемы с сохранением вызывал плагин autoredirector
modx.pro/help/24408#comment-141539
Володя
07 марта 2024, 16:38
0
Добрый день.
Написать в Тп. И там же сразу скинуть доступы к админке, посмотрю в чем дело.
Володя
05 марта 2024, 21:08
0
Не, оно то возвращает цену но эта цена уходит потом в корзину, что мне не нужно. Мне чисто отображение.
если вам чисто отображение то ловите запрос на js и меняйте что вам необходимо.

Если вы сформулируете точнее что вам надо — получите точнее ответ.

А PR принимаете на новые возможности?
не вижу смысла, теперь только под MODX3.
Володя
05 марта 2024, 19:52
0
Можно попробовать на событие msopOnGetFullCost
<?php
switch ($modx->event->name) {
    case 'msopOnGetFullCost':
        $values = $modx->Event->returnedValues;
        $values['cost'] = $cost - 10; // тут изменяем стоимость. 
        $modx->event->returnedValues = $values;
    
        break;
}