Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
23 марта 2021, 23:57
0
Чтобы поля редактировались надо указать как их искать.
'fullname'=>[
                    'class'=>'modUserProfile',
                            'edit'=>[
                                'type'=>'text',
                                'search_fields'=>['internalKey '=>'id', ],
                            ],
                    ],
Александр Туниеков
23 марта 2021, 10:29
0
надо
'modUser'=>[
                    'class' => 'modUser',
                    'on' => 'modUser.id = modUserGroupMember.member',
                ],
И надо вам добавить groupby
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUserGroupMember',
        'actions'=>[
            'remove' =>[
                'cls' => 'btn btn-danger',
                'icon' => 'fa fa-trash-o',
                'row' => [], 
        ],
            'update'=>[
                'cls' => 'btn btn-default',
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUserGroupMember',

            'limit'=>'5',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUserGroupMember.member',
                ],
                'modUser'=>[
                    'class' => 'modUser',
                    'on' => 'modUser.id = modUserGroupMember.member',
                ],
                'msOrder'=>[
                    'class' => 'msOrder',
                    'on' => 'modUser.id = msOrder.user_id',
                ],
                'msOrderProduct'=>[
                    'class' => 'msOrderProduct',
                    'on' => 'msOrder.id = msOrderProduct.order_id',
                ],
                
            ],
            'where'=>[
                'modUserGroupMember.user_group'=>2,
            ],
            'select'=>[
                'modUserProfile'=>'*',
                'modUser'=>'*',
                'msOrder'=>'SUM(msOrder.cost) as sum',
                'msOrderProduct'=>'SUM(msOrderProduct.count) as count',
            ],
            'groupby'=>'modUser.id',
            'sortdir'=>'DESC',
            'sortby'=>'',
        'decodeJSON'=>1,
        ],
        'checkbox'=>1,
        'autosave'=>1,
        'row'=>[

                'id'=>[
                    'label'=>'id',
                ],

                 'fullname'=>[
                    'label'=>'Имя',
                    'filter'=>1,
                    ], 
                 'email'=>[
                    'label'=>'Email',
                    ], 
                 'count'=>[
                     'label'=>'Товаров',
                    ],
                 'sum'=>[
                     'label'=>'Сумма',
                    ],
                 'active'=>[
                     'label'=>'Статус',
                    ],
                    
            ],
    ],
]}
и сортировка не понятная 'sortdir'=>'DESC',
'sortby'=>'',
Александр Туниеков
21 марта 2021, 15:29
0
составить запрос основываясь на modUserGroupMember
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUserGroupMember',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUserGroupMember',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUserGroupMember.member',
                ],
            ],
            'where'=>[
                'modUserGroupMember.user_group'=>2,
            ],
            'select'=>[
                'modUserProfile'=>'*',
            ],
        'decodeJSON'=>1,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'internalKey'=>[
                    'label'=>'data- 1 добавляем в data-индификатор строки, чтобы по нему можно было искать редактируемое значение fullname',
                    'data'=>1
                    ],
                 'fullname'=>[
                    'class'=>'modUserProfile',
                            'edit'=>[
                                'type'=>'text',
                                'search_fields'=>['internalKey '=>'internalKey', ],
                            ],
                    ], 
                 'oc_name'=>[
                     'label'=>'extended поле не редактируется',
                     'edit'=>['type'=>'view']
                    ],
            ],
    ],
]}
Александр Туниеков
21 марта 2021, 13:20
0
Блин с extended полями не понятно как их вывести и редактировать. Не работает сейчас компонент с ними!
Я extended полями не пользуюсь. Просто если надо поля доп таблицу завожу какую надо.
Александр Туниеков
21 марта 2021, 13:17
0
'loadModels'=>'pdoUsers', не надо
{'getTable' | snippet : [
    'table'=>[
        'class'=>'modUser',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                'icon' => 'fa fa-edit',
            ],
        ],
        'pdoTools'=>[
            'class'=>'modUser',
            'leftJoin'=>[
                'modUserProfile'=>[
                    'class' => 'modUserProfile',
                    'on' => 'modUserProfile.internalKey = modUser.id',
                ],
            ],
            'select'=>[
                'modUser' => 'modUser.id',
                'modUserProfile'=>'*',
            ],
        'decodeJSON'=>1,
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'id'=>[
                    ],
                 'fullname'=>[
                    'class'=>'modUserProfile'
                    ], 
                 'oc_name'=>[
                     'label'=>'extended поле не редактируется',
                     'edit'=>['type'=>'view']
                    ],
            ],
    ],
]}
Александр Туниеков
14 марта 2021, 16:08
0
Отправил тебе 200р за Автоустановщик шаблонов BELISSIMO. Еще не тестировал, но сама идея нравиться :-). Не верстальщик и все время мучаюсь с шаблонами.
Александр Туниеков
11 марта 2021, 17:07
0
Еще можно перегнать код массива femom в JSON.
В конфиге записать 2 параметра toJSON и showLog и в логе будет массив в json.
{'getTable' | snippet : [
    'showLog'=>1,
    'toJSON'=>1,
    'loadModels'=>'raschets',
    'table'=>[
toFenom преобразует json массив в fenom массив
Александр Туниеков
11 марта 2021, 16:58
0
На вывода как tv на ресурсе ничего пока не сделано. MIGX выводить только.
Можно в компонентах вывести несколько таблицу или несколько таблиц в табах.
Только здесь конфиг надо в системных настройках MODX в формате JSON прописывать.
Например системная настройка gtsreview_admin. В ней код 2 табов с таблицами в них:
{
            "loadModels": "gtsreview",
            "tabs": {
              "Orgs": {
                "label": "Фирмы",
                "table": {
                  "class": "gtsReviewOrg",
                  "actions": {
                    "create": [],
                    "update": []
                  },
                  "pdoTools": {
                    "class": "gtsReviewOrg"
                  },
                  "checkbox": 1,
                  "autosave": 1,
                  "row": {
                    "id": {
                      "cls": "",
                      "edit": {
                        "type": "hidden"
                      }
                    },
                    "name": {
                      "label":"Имя",
                      "filter": 1
                    },
                    "site": {
                      "label":"Сайт",
                      "filter": 1
                    },
                    "manager": {
                      "label":"Фио менеджера",
                      "filter": 1
                    },
                    "description": {
                      "label":"Описание",
                      "edit": {
                        "type": "textarea",
                        "skip_sanitize": 0
                      }
                    }
                  }
                }
              },
              "Leed": {
                
                "label": "Сделки",
                "table": {
                 
                  "pdoTools": {
                    "class": "gtsReviewLeed",
                    "leftJoin":{
                        "gtsReviewOrg":{
                            "class":"gtsReviewOrg",
                            "on":"gtsReviewOrg.id = gtsReviewLeed.org_id"
                        }
                    },
                    "select":{
                        "gtsReviewLeed":"*",
                        "gtsReviewOrg":"gtsReviewOrg.name as org"
                    }
                  },
                  "checkbox": 1,
                  "autosave": 1,
                  "row": {
                    "id": {
                      "cls": "",
                      "edit": {
                        "type": "hidden"
                      }
                    },
                    "org_id":{
                      "label":"Фирма",
                      "filter": 1,
                      "edit":{
                          "type":"select",
                          "select":"org",
                          "field_content":"org"
                      }
                    },
                    "name": {
                      "label":"Название сделки",
                      "filter": 1
                    },
                    "date": {
                      "label":"Дата сделки",
                      "filter": 1,
                      "edit": {
                        "type": "date"
                      }
                    },
                    "description": {
                      "label":"Описание",
                      "edit": {
                        "type": "textarea",
                        "skip_sanitize": 0
                      }
                    },
                    "rating": {
                      "label":"Рейтинг",
                      "filter": 1
                    },
                    "active": {
                      "label":"Активно",
                        "filter": 1,
                        "edit": {
                            "type": "checkbox"
                        },
                        "default":1
                    }
                  }
                }
              }
            }
          }
Для подключения в админке делаем меню, где прописываем Действие: home Параметры: &config=gtsreview_admin Пространство имён: gettables


Получиться вот:
Александр Туниеков
11 марта 2021, 16:38
0
Я тут изобретаю параметры default и force, а оказывается можно просто value указать :-).
Вообще можно:
'resource_id'=>[
                                'label'=>'Ресурс ID',
                                'edit'=>['type'=>'hidden',
                                        'default'=>$_modx->resource.id
                    ],
или
'resource_id'=>[
                                'label'=>'Ресурс ID',
                                'edit'=>['type'=>'hidden',
                                        'force'=>$_modx->resource.id
                    ],
default записывает, если записываемое значение пустое. А force всегда перезаписывает значение чтобы юзер не написал.
Александр Туниеков
11 марта 2021, 16:32
0
Ошибки не критичные. Не могу добраться все их обработать :-(. их много при работе компонента вылазит. Весь журнал забивают.
Александр Туниеков
10 марта 2021, 21:13
0
Наверно, кстати, я не верно первоначальный вопрос понял. Если tv MIGX создавать в базе через migxdb, то вывести эту табличку можно через getTables без проблем. Я просто тв уже редко использую и обычно таблицы к ресурсам MODX не привязываю.
Пример вывода для таблицы https://www.tale.by/assets/docs/default.schema.xml из из статьи Товары из отдельной таблицы (migxdb:
{'getTable' | snippet : [
    'loadModels'=>'pages',
    'table'=>[
        'class'=>'CustomPages',
        'actions'=>[
            'create'=>[
            ],
            'update'=>[
                
            ],
        ],
        'pdoTools'=>[
            'class'=>'CustomPages',        
        ],
        'checkbox'=>0,
        'autosave'=>1,
        'row'=>[
                'id'=>[
                    ],
                'resource_id'=>[
                    'label'=>'Ресурс ID',
                    'edit'=>['type'=>'hidden',
                    ],
                    'filter'=>[
                     'edit'=>['type'=>'text',],
                     ],
                ],
                'pagetitle'=>[
                    'label'=>'Имя',
                    'filter'=>1
                ],
                'longtitle'=>[
                    'label'=>'Описание',
                    'edit'=>['type'=>'textarea',
                    ],
                ],
                'published'=>[
                    'label'=>'Опубликован',
                    'edit'=>['type'=>'checkbox',],
                ],
            ],
    ],
]}
Примерный сокращенный код. Не проверял его работу. Если разместить его на какой-либо странице и зайти на неё с get или post параметром resource_id=15, то покажет покажет CustomPages прикрепленные к ресурсу с id=15.
Александр Туниеков
10 марта 2021, 17:14
0
Ну я бы точно на геттаблес делал. Но для вас смотрите сами что вам удобной. Я сейчас на геттаблес табель учета рабочего времени делаю :-).
Только для вашей задачи было бы хорошо если геттаблес еще дерево мог строить, но он этого пока не умеет. Времени не хватает сделать. А подгружать subtable на 3 уровня не очень хорошая идея. А так бы все можно было бы на компоненте сделать.
Несколько вопросов есть:
1) «основные разделы общие для всех проектов» — то есть могут создаваться и другие разделы?
2) Создавать проект через ajax или перезагрузка таблицы?
3) открывать to-do лист по ajax или можно ссылку на отделную страницу?

Можно связаться по скайп. Мой скайп touols
Александр Туниеков
10 марта 2021, 16:11
0
Ок. Помощь в освоении нужна? Компонент достаточно сложный и даже я не все инструкции не помню.
Александр Туниеков
10 марта 2021, 16:09
0
даже не знаю как объяснить :-). Ваш уровень владения MODX не понятен.
Есть таблица в базе mysql. Есль классы в MODX для связи с таблицей в базе. Таблицу и классы проще создать через MIGX.
Компонент getTables чтобы вывести таблицу пользователю чтоб он мог редактировать в ней данные. Это аналог MIGX, только без ExtJs. Использовать можно и на фронте и в админке.
Надеюсь понятно. Можно по скайпу связаться если не понятно.
Александр Туниеков
10 марта 2021, 15:53
0
Добрый день! Сами таблицы компонента с MIGX не связанны. С MIGX просто быстрей таблицы в базе mysql сделать. А потом все без MIGX.
Александр Туниеков
03 февраля 2021, 18:10
0
Вообще планирую в течении месяца обновить компоненты. Не хватает статусов онлайн-офлайн и другие моменты поправить.
Александр Туниеков
03 февраля 2021, 17:48
0
Любой файл. Картинка как файл видна. Прикрепление файлов это компонент UserFiles
Александр Туниеков
02 февраля 2021, 20:25
0
Мне непонятно почему данный функционал нельзя реализовать независимо на своём сайте?
Я одну причину только вижу. shared хостинг не дает открывать лишние порты. То есть, сайт должен быть на VDS, либо служба уведомлений на отдельном от сайта VDS.
Сервис уведомлений проще всего подымать на nodejs + https://github.com/websockets/ws. От Workerman я использую только websocket php клиента.