{ "formtabs":[ { "MIGX_id":26, "caption":"product", "print_before_tabs":"0", "fields":[ { "MIGX_id":180, "field":"name", "caption":"Name", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "validation":"", "configs":"", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":2 } ], "pos":1 }, { "MIGX_id":28, "caption":"Applications", "print_before_tabs":"0", "fields":[ { "MIGX_id":184, "field":"applicationsgrid", "caption":"Applications", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"migxdb", "validation":"", "configs":"migxproductApplication", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":1 } ], "pos":2 } ], "contextmenus":"update||remove", "actionbuttons":"addItem", "columnbuttons":"", "filters":"", "extended":{ "migx_add":"", "formcaption":"", "update_win_title":"", "win_id":"migxproducts", "maxRecords":"", "addNewItemAt":"bottom", "multiple_formtabs":"", "actionbuttonsperrow":4, "winbuttonslist":"", "extrahandlers":"", "filtersperrow":4, "packageName":"migxproducts", "classname":"ProductInfo", "task":"migxproducts", "getlistsort":"", "getlistsortdir":"", "use_custom_prefix":"0", "prefix":"", "grid":"", "gridload_mode":1, "check_resid":1, "check_resid_TV":"", "join_alias":"", "has_jointable":"yes", "getlistwhere":"", "joins":"", "cmpmaincaption":"", "cmptabcaption":"", "cmptabdescription":"", "cmptabcontroller":"", "winbuttons":"", "onsubmitsuccess":"", "submitparams":"" }, "columns":[ { "MIGX_id":1, "header":"ID", "dataIndex":"id", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":2, "header":"Name", "dataIndex":"name", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" } ] }
{ "formtabs":[ { "MIGX_id":27, "caption":"product", "print_before_tabs":"0", "fields":[ { "MIGX_id":181, "field":"application", "caption":"Application", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "validation":"", "configs":"", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":1 } ], "pos":1 } ], "contextmenus":"update||remove", "actionbuttons":"addItem", "columnbuttons":"", "filters":"", "extended":{ "migx_add":"", "formcaption":"", "update_win_title":"", "win_id":"migxproductsApplication", "maxRecords":"", "addNewItemAt":"bottom", "multiple_formtabs":"", "actionbuttonsperrow":4, "winbuttonslist":"", "extrahandlers":"this.activateObject||this.deactivateObject", "filtersperrow":4, "packageName":"migxproducts", "classname":"Application", "task":"productsapplications", "getlistsort":"", "getlistsortdir":"", "use_custom_prefix":"0", "prefix":"", "grid":"", "gridload_mode":2, "check_resid":"0", "check_resid_TV":"", "join_alias":"", "has_jointable":"yes", "getlistwhere":"", "joins":"", "cmpmaincaption":"", "cmptabcaption":"", "cmptabdescription":"", "cmptabcontroller":"", "winbuttons":"", "onsubmitsuccess":"", "submitparams":"" }, "columns":[ { "MIGX_id":1, "header":"ID", "dataIndex":"id", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":2, "header":"Name", "dataIndex":"application", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":3, "header":"Active", "dataIndex":"ProductsApplication_active", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"this.renderSwitchStatusOptions", "clickaction":"switchOption", "selectorconfig":"", "renderchunktpl":"", "renderoptions":[ { "MIGX_id":1, "name":"active", "value":1, "clickaction":"switchOption", "handler":"this.deactivateObject", "image":"assets\/components\/migx\/style\/images\/tick.png" }, { "MIGX_id":2, "name":"inactive", "value":"0", "clickaction":"switchOption", "handler":"this.activateObject", "image":"assets\/components\/migx\/style\/images\/cross.png" } ] } ] }
<?php if (empty($scriptProperties['object_id'])) { return $modx->error->failure($modx->lexicon('error')); } $config = $modx->migx->customconfigs; $prefix = $modx->getOption('prefix', $config, null); $packageName = $config['packageName']; $packagepath = $modx->getOption('core_path') . 'components/' . $packageName . '/'; $modelpath = $packagepath . 'model/'; $modx->addPackage($packageName, $modelpath, $prefix); $classname = $config['classname']; //$joinalias = isset($config['join_alias']) ? $config['join_alias'] : ''; $joinclass = 'ProductApplication'; if ($modx->lexicon) { $modx->lexicon->load($packageName . ':default'); } $product_id = $modx->getOption('co_id',$scriptProperties,0); $application_id = $modx->getOption('object_id',$scriptProperties,0); switch ($scriptProperties['task']) { case 'activate': if ($joinobject = $modx->getObject($joinclass, array('product' => $product_id, 'application' => $application_id))) { } else { $joinobject = $modx->newObject($joinclass); $joinobject->set('product', $product_id); $joinobject->set('application', $application_id); } $joinobject->save(); break; case 'deactivate': $c = $modx->newQuery($joinclass); $c->where(array('product' => $product_id, 'application' => $application_id)); if ($collection = $modx->getCollection($joinclass, $c)) { foreach ($collection as $joinobject){ $joinobject->remove(); } } break; default: break; } //clear cache for all contexts /* $collection = $modx->getCollection('modContext'); foreach ($collection as $context) { $contexts[] = $context->get('key'); } $modx->cacheManager->refresh(array( 'db' => array(), 'auto_publish' => array('contexts' => $contexts), 'context_settings' => array('contexts' => $contexts), 'resource' => array('contexts' => $contexts), )); */ return $modx->error->success(); ?>
<?php //if (!$modx->hasPermission('quip.thread_list')) return $modx->error->failure($modx->lexicon('access_denied')); $config = $modx->migx->customconfigs; $prefix = isset($config['prefix']) && !empty($config['prefix']) ? $config['prefix'] : null; if (isset($config['use_custom_prefix']) && !empty($config['use_custom_prefix'])) { $prefix = isset($config['prefix']) ? $config['prefix'] : ''; } $checkdeleted = isset($config['gridactionbuttons']['toggletrash']['active']) && !empty($config['gridactionbuttons']['toggletrash']['active']) ? true : false; if (!empty($config['packageName'])) { $packageNames = explode(',', $config['packageName']); //all packages must have the same prefix for now! foreach ($packageNames as $packageName) { $packagepath = $modx->getOption('core_path') . 'components/' . $packageName . '/'; $modelpath = $packagepath . 'model/'; if (is_dir($modelpath)){ $modx->addPackage($packageName, $modelpath, $prefix); } } } $classname = $config['classname']; $product_id = $modx->getOption('object_id', $scriptProperties, ''); $joins = '[{"alias":"ProductsApplication","on":"ProductsApplication.application=Application.id AND ProductsApplication.product='.$product_id.'"}]'; $joins = $modx->fromJson($joins); $joinalias = isset($config['join_alias']) ? $config['join_alias'] : ''; if (!empty($joinalias)) { if ($fkMeta = $modx->getFKDefinition($classname, $joinalias)) { $joinclass = $fkMeta['class']; $joinfield = $fkMeta[$fkMeta['owner']]; } else { $joinalias = ''; } } if ($modx->lexicon) { $modx->lexicon->load($packageName . ':default'); } /* setup default properties */ $isLimit = !empty($scriptProperties['limit']); $isCombo = !empty($scriptProperties['combo']); $start = $modx->getOption('start', $scriptProperties, 0); $limit = $modx->getOption('limit', $scriptProperties, 20); $sort = !empty($config['getlistsort']) ? $config['getlistsort'] : 'id'; $sort = $modx->getOption('sort', $scriptProperties, $sort); $dir = !empty($config['getlistsortdir']) ? $config['getlistsortdir'] : 'ASC'; $dir = $modx->getOption('dir', $scriptProperties, $dir); $showtrash = $modx->getOption('showtrash', $scriptProperties, ''); $object_id = $modx->getOption('object_id', $scriptProperties, ''); $resource_id = $modx->getOption('resource_id', $scriptProperties, is_object($modx->resource) ? $modx->resource->get('id') : false); $resource_id = !empty($object_id) ? $object_id : $resource_id; if (isset($sortConfig)) { $sort = ''; } $where = !empty($config['getlistwhere']) ? $config['getlistwhere'] : ''; $where = $modx->getOption('where', $scriptProperties, $where); $c = $modx->newQuery($classname); $c->select($modx->getSelectColumns($classname, $classname)); if (!empty($joinalias)) { /* if ($joinFkMeta = $modx->getFKDefinition($joinclass, 'Resource')){ $localkey = $joinFkMeta['local']; } */ $c->leftjoin($joinclass, $joinalias); $c->select($modx->getSelectColumns($joinclass, $joinalias, 'Joined_')); } if ($joins) { $modx->migx->prepareJoins($classname, $joins, $c); } /* $c->leftjoin('poProduktFormat','ProduktFormat', 'format_id = poFormat.id AND product_id ='.$scriptProperties['object_id']); //$c->select($classname.'.*'); $c->select('ProduktFormat.format_id,ProduktFormat.calctype,ProduktFormat.price,ProduktFormat.published AS pof_published'); */ //print_r($config['gridfilters']); if (isset($config['gridfilters']) && count($config['gridfilters']) > 0) { foreach ($config['gridfilters'] as $filter) { if (!empty($filter['getlistwhere'])) { $requestvalue = $modx->getOption($filter['name'], $scriptProperties, 'all'); if (isset($scriptProperties[$filter['name']]) && $requestvalue != 'all') { $chunk = $modx->newObject('modChunk'); $chunk->setCacheable(false); $chunk->setContent($filter['getlistwhere']); $fwhere = $chunk->process($scriptProperties); $fwhere = strpos($fwhere, '{') === 0 ? $modx->fromJson($fwhere) : $fwhere; $c->where($fwhere); } } } } if ($modx->migx->checkForConnectedResource($resource_id, $config)) { if (!empty($joinalias)) { $c->where(array($joinalias . '.' . $joinfield => $resource_id)); } else { $c->where(array($classname . '.resource_id' => $resource_id)); } } if ($checkdeleted) { if (!empty($showtrash)) { $c->where(array($classname . '.deleted' => '1')); } else { $c->where(array($classname . '.deleted' => '0')); } } if (!empty($where)) { $c->where($modx->fromJson($where)); } $count = $modx->getCount($classname, $c); if (empty($sort)) { if (is_array($sortConfig)) { foreach ($sortConfig as $sort) { $sortby = $sort['sortby']; $sortdir = isset($sort['sortdir']) ? $sort['sortdir'] : 'ASC'; $c->sortby($sortby, $sortdir); } } } else { $c->sortby($sort, $dir); } if ($isCombo || $isLimit) { $c->limit($limit, $start); } //$c->sortby($sort,$dir); //$c->prepare();echo $c->toSql(); $rows = array(); if ($collection = $modx->getCollection($classname, $c)) { $pk = $modx->getPK($classname); foreach ($collection as $object) { $row = $object->toArray(); $row['ProductsApplication_active'] = !empty($row['ProductsApplication_id']) ? 1 : 0; $row['id'] = !isset($row['id']) ? $row[$pk] : $row['id']; $rows[] = $row; } } $rows = $modx->migx->checkRenderOptions($rows);
//join all applications with the currently edited product $product_id = $modx->getOption('object_id', $scriptProperties, ''); $joins = '[{"alias":"ProductsApplication","on":"ProductsApplication.application=Application.id AND ProductsApplication.product='.$product_id.'"}]'; $joins = $modx->fromJson($joins);
//add the field ProductsApplication_active, if there is a joined application found $row = $object->toArray(); $row['ProductsApplication_active'] = !empty($row['ProductsApplication_id']) ? 1 : 0;
<?php //if (!$modx->hasPermission('quip.thread_list')) return $modx->error->failure($modx->lexicon('access_denied')); $config = $modx->migx->customconfigs; $prefix = isset($config['prefix']) && !empty($config['prefix']) ? $config['prefix'] : null; if (isset($config['use_custom_prefix']) && !empty($config['use_custom_prefix'])) { $prefix = isset($config['prefix']) ? $config['prefix'] : ''; } $checkdeleted = isset($config['gridactionbuttons']['toggletrash']['active']) && !empty($config['gridactionbuttons']['toggletrash']['active']) ? true : false; if (!empty($config['packageName'])) { $packageNames = explode(',', $config['packageName']); //all packages must have the same prefix for now! foreach ($packageNames as $packageName) { $packagepath = $modx->getOption('core_path') . 'components/' . $packageName . '/'; $modelpath = $packagepath . 'model/'; if (is_dir($modelpath)) { $modx->addPackage($packageName, $modelpath, $prefix); } } } $classname = $config['classname']; //join all applications with the currently edited product $joinalias = isset($config['join_alias']) ? $config['join_alias'] : ''; $joinconfig = $modx->fromJson($joinalias); $joinclass = $modx->getOption('classname', $joinconfig, ''); $local = $modx->getOption('local', $joinconfig, ''); $foreign = $modx->getOption('foreign', $joinconfig, ''); $object_id = $modx->getOption('object_id', $scriptProperties, ''); $joins = '[{"alias":"Joined","classname":"' . $joinclass . '","on":"Joined.' . $foreign . '=' . $classname . '.id AND Joined.' . $local . '=' . $object_id . '"}]'; $joins = $modx->fromJson($joins); if ($modx->lexicon) { $modx->lexicon->load($packageName . ':default'); } /* setup default properties */ $isLimit = !empty($scriptProperties['limit']); $isCombo = !empty($scriptProperties['combo']); $start = $modx->getOption('start', $scriptProperties, 0); $limit = $modx->getOption('limit', $scriptProperties, 20); $sort = !empty($config['getlistsort']) ? $config['getlistsort'] : 'id'; $sort = $modx->getOption('sort', $scriptProperties, $sort); $dir = !empty($config['getlistsortdir']) ? $config['getlistsortdir'] : 'ASC'; $dir = $modx->getOption('dir', $scriptProperties, $dir); $showtrash = $modx->getOption('showtrash', $scriptProperties, ''); $object_id = $modx->getOption('object_id', $scriptProperties, ''); $resource_id = $modx->getOption('resource_id', $scriptProperties, is_object($modx->resource) ? $modx->resource->get('id') : false); $resource_id = !empty($object_id) ? $object_id : $resource_id; if (isset($sortConfig)) { $sort = ''; } $where = !empty($config['getlistwhere']) ? $config['getlistwhere'] : ''; $where = $modx->getOption('where', $scriptProperties, $where); $c = $modx->newQuery($classname); $c->select($modx->getSelectColumns($classname, $classname)); if ($joins) { $modx->migx->prepareJoins($classname, $joins, $c); } if (isset($config['gridfilters']) && count($config['gridfilters']) > 0) { foreach ($config['gridfilters'] as $filter) { if (!empty($filter['getlistwhere'])) { $requestvalue = $modx->getOption($filter['name'], $scriptProperties, 'all'); if (isset($scriptProperties[$filter['name']]) && $requestvalue != 'all') { $chunk = $modx->newObject('modChunk'); $chunk->setCacheable(false); $chunk->setContent($filter['getlistwhere']); $fwhere = $chunk->process($scriptProperties); $fwhere = strpos($fwhere, '{') === 0 ? $modx->fromJson($fwhere) : $fwhere; $c->where($fwhere); } } } } if ($checkdeleted) { if (!empty($showtrash)) { $c->where(array($classname . '.deleted' => '1')); } else { $c->where(array($classname . '.deleted' => '0')); } } if (!empty($where)) { $c->where($modx->fromJson($where)); } $count = $modx->getCount($classname, $c); if (empty($sort)) { if (is_array($sortConfig)) { foreach ($sortConfig as $sort) { $sortby = $sort['sortby']; $sortdir = isset($sort['sortdir']) ? $sort['sortdir'] : 'ASC'; $c->sortby($sortby, $sortdir); } } } else { $c->sortby($sort, $dir); } if ($isCombo || $isLimit) { $c->limit($limit, $start); } //$c->sortby($sort,$dir); //$c->prepare();echo $c->toSql(); $rows = array(); if ($collection = $modx->getCollection($classname, $c)) { $pk = $modx->getPK($classname); foreach ($collection as $object) { $row = $object->toArray(); $row['Joined_active'] = !empty($row['Joined_id']) ? 1 : 0; $row['id'] = !isset($row['id']) ? $row[$pk] : $row['id']; $rows[] = $row; } } $rows = $modx->migx->checkRenderOptions($rows); ?>
<?php if (empty($scriptProperties['object_id'])) { return $modx->error->failure($modx->lexicon('error')); } $config = $modx->migx->customconfigs; $prefix = $modx->getOption('prefix', $config, null); $packageName = $config['packageName']; $packagepath = $modx->getOption('core_path') . 'components/' . $packageName . '/'; $modelpath = $packagepath . 'model/'; $modx->addPackage($packageName, $modelpath, $prefix); $classname = $config['classname']; //$joinalias = '{"classname":"ProductApplication","local":"product","foreign":"application"}'; $joinalias = isset($config['join_alias']) ? $config['join_alias'] : ''; $joinconfig = $modx->fromJson($joinalias); $joinclass = $modx->getOption('classname',$joinconfig,''); $local = $modx->getOption('local',$joinconfig,''); $foreign = $modx->getOption('foreign',$joinconfig,''); if ($modx->lexicon) { $modx->lexicon->load($packageName . ':default'); } $product_id = $modx->getOption('co_id',$scriptProperties,0); $application_id = $modx->getOption('object_id',$scriptProperties,0); switch ($scriptProperties['task']) { case 'activate': if ($joinobject = $modx->getObject($joinclass, array($local => $product_id, $foreign => $application_id))) { } else { $joinobject = $modx->newObject($joinclass); $joinobject->set($local, $product_id); $joinobject->set($foreign, $application_id); } $joinobject->save(); break; case 'deactivate': $c = $modx->newQuery($joinclass); $c->where(array($local => $product_id, $foreign => $application_id)); if ($collection = $modx->getCollection($joinclass, $c)) { foreach ($collection as $joinobject){ $joinobject->remove(); } } break; default: break; } //clear cache for all contexts /* $collection = $modx->getCollection('modContext'); foreach ($collection as $context) { $contexts[] = $context->get('key'); } $modx->cacheManager->refresh(array( 'db' => array(), 'auto_publish' => array('contexts' => $contexts), 'context_settings' => array('contexts' => $contexts), 'resource' => array('contexts' => $contexts), )); */ return $modx->error->success(); ?>
{"classname":"ProductApplication","local":"product","foreign":"application"}
Joined_active
{"classname":"ProductApplication","local":"product","foreign":"application"}
<?xml version="1.0" encoding="UTF-8"?> <model package="testproducts" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1"> <object class="Products" table="products" extends="xPDOSimpleObject"> <field key="name" dbtype="varchar" precision="45" phptype="string" null="true" /> <field key="createdon" dbtype="datetime" phptype="datetime" null="true"/> <field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/> <field key="editedon" dbtype="datetime" phptype="datetime" null="true"/> <field key="editedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/> <field key="deleted" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0"/> <field key="deletedon" dbtype="datetime" phptype="datetime" null="false"/> <field key="deletedby" dbtype="int" precision="10" phptype="integer" null="false" default="0"/> <field key="published" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0"/> <field key="publishedon" dbtype="datetime" phptype="datetime" null="false"/> <field key="publishedby" dbtype="int" precision="10" phptype="integer" null="false" default="0"/> <aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/> <aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/> <aggregate alias="PublishedBy" class="modUser" local="publishedby" foreign="id" cardinality="one" owner="foreign"/> <composite alias="ProductsAttributes" class="ProductsAttributes" local="id" foreign="product_id" cardinality="many" owner="local" /> <composite alias="ProductsDescriptions" class="ProductsFiles" local="id" foreign="product_id" cardinality="many" owner="local" /> </object> <object class="Attributes" table="attributes" extends="xPDOSimpleObject"> <field key="name" dbtype="varchar" precision="45" phptype="string" null="false" /> <field key="type" dbtype="int" precision="11" phptype="integer" null="false" /> <composite alias="ProductsAttributes" class="ProductsAttributes" local="id" foreign="attribute_id" cardinality="many" owner="local" /> <composite alias="AttributesDescriptions" class="AttributesDescriptions" local="id" foreign="attribute_id" cardinality="many" owner="local" /> </object> <object class="ProductsAttributes" table="products_attributes" extends="xPDOSimpleObject"> <field key="product_id" dbtype="int" precision="11" phptype="integer" null="false" index="index" /> <field key="attribute_id" dbtype="int" precision="11" phptype="integer" null="false" index="index" /> <aggregate alias="Products" class="Products" local="product_id" foreign="id" cardinality="one" owner="foreign" /> <aggregate alias="Attributes" class="Attributes" local="attribute_id" foreign="id" cardinality="one" owner="foreign" /> </object> (…) </model>
{ "formtabs":[ { "MIGX_id":3, "caption":"my product", "print_before_tabs":"0", "fields":[ { "MIGX_id":6, "field":"name", "caption":"Product Name", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "validation":"", "configs":"", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":1 }, { "MIGX_id":8, "field":"published", "caption":"Publish", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"checkbox", "validation":"", "configs":"", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"yes==1", "default":"0", "pos":2 }, { "MIGX_id":14, "field":"attributes", "caption":"Attribute", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"migxdb", "validation":"", "configs":"attributes", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":3 } ], "pos":1 } ], "contextmenus":"update||duplicate||publish||unpublish||remove", "actionbuttons":"addItem||bulk", "columnbuttons":"update||duplicate||publish||unpublish||remove", "filters":"", "extended":{ "migx_add":"Neues Produkt einstellen", "disable_add_item":"", "formcaption":"Form Caption here", "update_win_title":"This is the window title", "win_id":"products", "maxRecords":"", "addNewItemAt":"bottom", "multiple_formtabs":"", "actionbuttonsperrow":4, "winbuttonslist":"", "extrahandlers":"", "filtersperrow":4, "packageName":"viacortest", "classname":"Products", "task":"", "getlistsort":"", "getlistsortdir":"", "sortconfig":"", "gridpagesize":"", "use_custom_prefix":1, "prefix":"vt_", "grid":"", "gridload_mode":1, "check_resid":1, "check_resid_TV":"", "join_alias":{ "classname":"ProductsAttributes", "local":"products", "foreign":"attributes" }, "has_jointable":"yes", "getlistwhere":"", "joins":"", "cmpmaincaption":"Products", "cmptabcaption":"Editieren", "cmptabdescription":"Meine Erkl\u00e4rung", "cmptabcontroller":"", "winbuttons":"", "onsubmitsuccess":"", "submitparams":"" }, "columns":[ { "MIGX_id":1, "header":"ID", "dataIndex":"id", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":2, "header":"Name", "dataIndex":"name", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":5, "header":"Created", "dataIndex":"createdon", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"this.renderDate", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":6, "header":"Last Edited by", "dataIndex":"editedby", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":3, "header":"Published", "dataIndex":"published", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"this.renderCrossTick", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" } ] }
{ "formtabs":[ { "MIGX_id":4, "caption":"formtab_basic", "print_before_tabs":"0", "fields":[ { "MIGX_id":11, "field":"name", "caption":"name", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"", "validation":"", "configs":"", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"", "default":"", "pos":1 }, { "MIGX_id":12, "field":"type", "caption":"type", "description":"", "description_is_code":"0", "inputTV":"", "inputTVtype":"listbox", "validation":"", "configs":"test1\ntest2", "restrictive_condition":"", "display":"", "sourceFrom":"config", "sources":"", "inputOptionValues":"Product==1 || System==2", "default":"", "pos":2 } ], "pos":1 } ], "contextmenus":"update||duplicate||publish||unpublish||remove", "actionbuttons":"addItem", "columnbuttons":"update||duplicate||publish||unpublish||remove", "filters":"", "extended":{ "migx_add":"", "disable_add_item":"", "formcaption":"", "update_win_title":"", "win_id":"attributes", "maxRecords":"", "addNewItemAt":"bottom", "multiple_formtabs":"", "actionbuttonsperrow":4, "winbuttonslist":"", "extrahandlers":"", "filtersperrow":4, "packageName":"viacortest", "classname":"Attributes", "task":"", "getlistsort":"", "getlistsortdir":"", "sortconfig":"", "gridpagesize":"", "use_custom_prefix":1, "prefix":"vt_", "grid":"", "gridload_mode":1, "check_resid":1, "check_resid_TV":"", "join_alias":"", "has_jointable":"yes", "getlistwhere":"", "joins":"", "cmpmaincaption":"", "cmptabcaption":"", "cmptabdescription":"", "cmptabcontroller":"", "winbuttons":"", "onsubmitsuccess":"", "submitparams":"" }, "columns":[ { "MIGX_id":1, "header":"id", "dataIndex":"id", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":2, "header":"name", "dataIndex":"name", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":3, "header":"type", "dataIndex":"type", "width":"", "sortable":true, "show_in_grid":1, "renderer":"", "clickaction":"", "selectorconfig":"", "renderchunktpl":"", "renderoptions":"" }, { "MIGX_id":4, "header":"Product Attributes Activation", "dataIndex":"Join_active", "width":"", "sortable":"false", "show_in_grid":1, "renderer":"this.renderSwitchStatusOptions", "clickaction":"switchOption", "selectorconfig":"", "renderchunktpl":"", "renderoptions":[ { "MIGX_id":1, "name":"activate", "value":1, "clickaction":"switchOption", "handler":"this.deactivateObject", "image":"assets\/components\/migx\/style\/images\/tick.png" }, { "MIGX_id":2, "name":"deactivate", "value":"0", "clickaction":"switchOption", "handler":"this.activateObject", "image":"assets\/components\/migx\/style\/images\/cross.png" } ] } ] }
(ERROR @ /assets/components/migx/connector.php) No foreign key definition for parentClass: Products using relation alias: "classname":"ProductsAttributes","local":"products","foreign":"attributes"
(ERROR @ /assets/components/migx/connector.php) Error 42S22 executing statement: Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'Attributes.resource_id' in 'where clause' )