Андрей Степаненко

Андрей Степаненко

С нами с 28 октября 2014; Место в рейтинге пользователей: #7
10 февраля 2019, 20:15
0
Только вопрос, а где там гугловский конструктор? Точне вообще каким боком тут гугловский констрруктор.
Из скриншотов кроме как загрузка по ссылке ничего не увидел
07 февраля 2019, 16:54
0
Да это не предложение сделать) Это решение, на всяки случай)
07 февраля 2019, 16:19
0
У тебя получается задание прерывается сразу как завершается время исполнения скрипта.
Посмотри реализацию scannerModx, там аналогичный механизм через консоль, только когда происходит остановка, прерывание не происходит, открывается новая итерация.
И цикл завершится только когда появится сообщение в регистре.
Достаточно простой механизм.

Часть кода на JS
scannerSystem: function () {

        var grid = this
        var el = this.getEl()
        var scannerSystemCallback = function (btn) {


            if (btn === 'yes') {

                var scannerConsole = MODx.load({
                    xtype: 'modx-console'
                    , register: scannerMODX.config.register
                    , topic: scannerMODX.config.topic
                    , remove_read: scannerMODX.config.remove_read
                    , show_filename: 0
                    , listeners: {
                        'shutdown': {
                            fn: function () {
                                /* do code here when you close the console */
                            }, scope: this
                        }
                    }
                })
                scannerConsole.show(Ext.getBody())

                MODx.Ajax.request({
                    url: scannerMODX.config['connector_url']
                    , params: {
                        stage: 'new_session',
                        action: 'mgr/filesystem/scannersystem',
                        register: scannerMODX.config.register,
                        topic: scannerMODX.config.topic,
                        remove_read: scannerMODX.config.remove_read,
                    }
                    , listeners: {
                        'success': {
                            fn: function (response) {
                                if (response.object.stage !== undefined) {
                                    grid.scannerSystemCheck(el, response.object.stage)
                                } else {
                                    el.unmask()
                                    grid.refresh()
                                }

                            }, scope: this
                        },
                        'failure': {
                            fn: function (response) {
                                //console.fireEvent('complete');
                            }, scope: this
                        },
                    }
                })

            }
        }

        Ext.MessageBox.show({
            title: _('scannermodx_filesystem_btn_scannersystem'),
            msg: _('scannermodx_filesystem_confirm'),
            width: 300,
            buttons: Ext.MessageBox.YESNO,
            fn: scannerSystemCallback,
            icon: Ext.MessageBox.QUESTION
        })
        return true
    },

    scannerSystemCheck: function (el, stage) {
        var grid = el
        MODx.Ajax.request({
            url: this.config.url,
            params: {
                stage: stage,
                action: 'mgr/filesystem/scannersystem',
                register: scannerMODX.config.register,
                topic: scannerMODX.config.topic,
                remove_read: scannerMODX.config.remove_read,
            },
            listeners: {
                success: {
                    fn: function (response) {

                        if (response.object.stage !== undefined) {
                            this.scannerSystemCheck(grid, response.object.stage)
                        } else {
                            grid.unmask()
                            this.refresh()
                        }

                    }, scope: this
                }, failure: {
                    fn: function ® {
                        grid.unmask()
                    }, scope: this
                }
                , cancel: {
                    fn: function ® {
                        grid.unmask()
                    }, scope: this
                }
            }
        })
    },
07 февраля 2019, 12:09
0
Пока что не планируется
07 февраля 2019, 12:08
0
Ждать, не стоит.
Но быть может когда-нибудь и будет.
07 февраля 2019, 09:35
0
В общем я понял тут все это обсуждение ради того чтобы решить твою проблему.
Если не устраивает компонет msOneClick напиши пожайлуста администрации modstore. Пусть сделают возврат.
Доказывать что курица не петух я что то подустал.

Твое не понимае как работает modx приводит к тому что ты с меня пытаешься спросить чтото:

Вот пример что делаешь ты:
[[!msMiniCart? &tpl=`@INLINE <div id="msMiniCart">[[+total_count:is=`0`:then=`[[+product.price]]`:else=`[[+total_count]]`]]</div>`]]
И считаешь что это должно работать аналогично как и при запуске на странице
Ну то есть ты считаешь что должны зарегистрироваться все скрипты minishop2
которые запускаются с помощью функции:


и дальше по списку:


Но ты даже не удосужился выяснить а будет ли это работать. Ну так спросить у меня в техподдержке, по советоваться на modx.pro. У тебя просто это должно работать!!! и не волнует.

Я тебе ответил что надо писать свой плагин.

Тебя это не устроило и ты решил вылить свое недовольство.

Дальше смысла нету продолжать беседу.
07 февраля 2019, 08:54
0
Дак я же выше написал!
Нагладно:
У вас есть категория msCategory: Машины в ней 1000 товаров
Вы меняете у нее class_key на modDocumet
Вопрос: где вы потом будете искать эту 1000 товаров?
Ни где. Потому что все modDocumet не показывает список товаров как это делает msCategory
07 февраля 2019, 08:42
0
Вообще интересноный подход)) Мне прям поражают такие мотивации к действиям
Следовательно Ваш компонент не нужен.
Вам бы msOneClick для начала доделать, а потом приступать к таким проектам как этот.
А до этого был вопрос у вас нерешенный в msOneClick)))
И я так понимаю я должен решить его за вас?

Представляете а msOneClick еще не умеет подключать платжетные системы, службы доставки, работать с компонента: msAddLinked, msMiniCartDynamic и др.

Но в понимании большенства пользователе (которые не разбираются в програмировании) msOneClick должен уметь с этим всем работать.

Ну дак если в компоненте не написано что он умеет с этим работать, надо же проверять перед покупкой. А не кричать потом на всю ивановскую что мол все плохо.

Да и потом на modstore в полне лояльно относятся к возвратам, если пользователя что то не устроел.
07 февраля 2019, 08:23
0
И что же в нем не доделано?
То что в тех поддержки писал что надо чтобы работал count.
А где написано что он должен там работать?
07 февраля 2019, 08:22
0
Следовательно Ваш компонент не нужен. Достаточно те же самые условия проделывать в phpMyAdmin и на крайняк в консоле.
Серьезно?
Так то хоть маленько понятно о чем я вообще пытался объяснить про composite.
Или без разницы что в базе будет хлам скапливатся?
07 февраля 2019, 05:03
0
Да вот не особо чтобы хочется это давать делать)))
Прикол в том что ну вот сменишь класс с msCategory на modDocument

<object class="msCategory" extends="modResource">
        <field key="class_key" dbtype="varchar" precision="100" phptype="string" null="false" default="msCategory"/>

        <composite alias="OwnProducts" class="msProduct" local="id" foreign="parent" cardinality="many" owner="local"/>
        <composite alias="AlienProducts" class="msCategoryMember" local="id" foreign="category_id" cardinality="many"
                   owner="local"/>
        <composite alias="CategoryOptions" class="msCategoryOption" local="id" foreign="category_id" cardinality="many"
                   owner="local"/>
    </object>
По хорошему надо удалить все имеющиеся связи. Но как я вижу мало кто понимает как это работает.
Ну то есть composite это зависимые связи от класса msCategory, то есть без него вроде как работать не могу.
Даже если давать менять класс, и при этому удалять зависимые, а вдруг там окажется 1000 товаров)) Этот процесс врядли завершится. Поэтому сперва надо будет удалить эту 1000 товаров, а потом поменять класс.
Так что phpMyAdmin в помощь, если хотите с мусором в базе остатить))
06 февраля 2019, 20:52
0
Вообще планирует, но пока даже не смотрел как там работает
06 февраля 2019, 20:03
0
Можно с помощью msPre перегенироваровать превью товаров.
По умолчанию показывается 20 товаров, можно выставить к пример 1000-2000 товаров, отметить все, и в меню выбрать


Можно и больше конечно выставить)) Но там уже надо смотреть чтобы браузер не завис, за пару заходов обновятся все превью
05 февраля 2019, 21:14
0
Ну вообще у Modx есть graph в котором можно по связям сделать запрос на много уровней вниз, причём в одну строку. Но честно сказать не очень удобно этим пользоваться.
Как правило самый часто используемый код всегда должен быть под рукой