Index: trunk/kernel/units/general/cat_event_handler.php =================================================================== diff -u -N -r4309 -r4314 --- trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4309) +++ trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4314) @@ -1649,32 +1649,46 @@ */ function OnSelectItems(&$event) { + $dst_field = $this->Application->RecallVar('dst_field'); $items_info = $this->Application->GetVar('c'); - - if ($items_info) - { - $selected_categories = array_keys($items_info); - $cat_id = array_shift($selected_categories); - - $sql = 'SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ResourceId = '.$cat_id; - $cat_id = $this->Conn->GetOne($sql); + if ($items_info) { + $category_id = array_shift( array_keys($items_info) ); + $sql = 'SELECT CategoryId + FROM '.TABLE_PREFIX.'Category + WHERE ResourceId = '.$category_id; + $category_id = $this->Conn->GetOne($sql); } else { - $cat_id = 0; + $category_id = 0; } - - $this->Application->StoreVar('ImportCategory', $cat_id); - $this->Application->StoreVar($event->getPrefixSpecial().'_ForceNotValid', 1); // not to loose import/export values on form refresh - - $this->Application->SetVar($event->getPrefixSpecial().'_id', 0); - $this->Application->SetVar($event->getPrefixSpecial().'_event', 'OnExportBegin'); - - $passed = $this->Application->GetVar('passed'); - $this->Application->SetVar('passed', $passed.','.$event->getPrefixSpecial()); - $event->setEventParam('pass_events', true); - + + if ($dst_field == 'ImportCategory') { + $this->Application->StoreVar('ImportCategory', $category_id); + $this->Application->StoreVar($event->getPrefixSpecial().'_ForceNotValid', 1); // not to loose import/export values on form refresh + + $this->Application->SetVar($event->getPrefixSpecial().'_id', 0); + $this->Application->SetVar($event->getPrefixSpecial().'_event', 'OnExportBegin'); + + $passed = $this->Application->GetVar('passed'); + $this->Application->SetVar('passed', $passed.','.$event->getPrefixSpecial()); + $event->setEventParam('pass_events', true); + } + + if ($dst_field == 'ItemCategory') { + $object =& $event->getObject(); // category item object (e.g. link, product, etc.) + + $ci_prefix = $object->Prefix.'-ci'; + $ci_object =& $this->Application->recallObject($ci_prefix, null, Array('skip_autoload' => true)); + + $ci_object->Load($category_id); + if (!$ci_object->isLoaded()) { + $fields_hash = Array('CategoryId' => $category_id, 'ItemResourceId' => $object->GetDBField('ResourceId')); + $ci_object->SetDBFieldsFromHash($fields_hash); + $ci_object->Create(true); + } + } + $this->finalizePopup($event); - } /** Index: trunk/kernel/units/category_items/category_items_event_handler.php =================================================================== diff -u -N -r2041 -r4314 --- trunk/kernel/units/category_items/category_items_event_handler.php (.../category_items_event_handler.php) (revision 2041) +++ trunk/kernel/units/category_items/category_items_event_handler.php (.../category_items_event_handler.php) (revision 4314) @@ -3,41 +3,6 @@ class CategoryItemsEventHander extends InpDBEventHandler { /** - * Add's New Category To Product - * - * @param kEvent $event - */ - function OnAddCategory(&$event) - { - $cat_list = (int)rtrim($this->Application->GetVar('cat_list'), ','); - //if(!$cat_list) return true; - - $cat_id = (int)$this->Conn->GetOne('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ResourceId='.$cat_list); - - $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); - $object =& $event->getObject(); - - $table_info = $object->getLinkedInfo(); - - // don't allow duplicate records - $already_added = $this->Conn->GetOne('SELECT * FROM '.$object->TableName.' WHERE CategoryId='.$cat_id.' AND '.$table_info['ForeignKey'].'='.$table_info['ParentId']); - if($already_added === false) - { - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - $items_info[0]['CategoryId'] = $cat_id; - $items_info[0][ $table_info['ForeignKey'] ] = $table_info['ParentId']; - $this->Application->SetVar( $event->getPrefixSpecial(true), $items_info ); - - $rp_backup = $event->redirect_params; // save opener state - - $event->setEventParam('ForceCreateId', true); - $this->OnCreate($event); - - $event->redirect_params = $rp_backup; // restore opener state - } - } - - /** * Set's new category as primary for product * * @param kEvent $event Index: trunk/core/units/category_items/category_items_event_handler.php =================================================================== diff -u -N -r2041 -r4314 --- trunk/core/units/category_items/category_items_event_handler.php (.../category_items_event_handler.php) (revision 2041) +++ trunk/core/units/category_items/category_items_event_handler.php (.../category_items_event_handler.php) (revision 4314) @@ -3,41 +3,6 @@ class CategoryItemsEventHander extends InpDBEventHandler { /** - * Add's New Category To Product - * - * @param kEvent $event - */ - function OnAddCategory(&$event) - { - $cat_list = (int)rtrim($this->Application->GetVar('cat_list'), ','); - //if(!$cat_list) return true; - - $cat_id = (int)$this->Conn->GetOne('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ResourceId='.$cat_list); - - $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); - $object =& $event->getObject(); - - $table_info = $object->getLinkedInfo(); - - // don't allow duplicate records - $already_added = $this->Conn->GetOne('SELECT * FROM '.$object->TableName.' WHERE CategoryId='.$cat_id.' AND '.$table_info['ForeignKey'].'='.$table_info['ParentId']); - if($already_added === false) - { - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - $items_info[0]['CategoryId'] = $cat_id; - $items_info[0][ $table_info['ForeignKey'] ] = $table_info['ParentId']; - $this->Application->SetVar( $event->getPrefixSpecial(true), $items_info ); - - $rp_backup = $event->redirect_params; // save opener state - - $event->setEventParam('ForceCreateId', true); - $this->OnCreate($event); - - $event->redirect_params = $rp_backup; // restore opener state - } - } - - /** * Set's new category as primary for product * * @param kEvent $event Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -N -r4309 -r4314 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4309) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4314) @@ -1649,32 +1649,46 @@ */ function OnSelectItems(&$event) { + $dst_field = $this->Application->RecallVar('dst_field'); $items_info = $this->Application->GetVar('c'); - - if ($items_info) - { - $selected_categories = array_keys($items_info); - $cat_id = array_shift($selected_categories); - - $sql = 'SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ResourceId = '.$cat_id; - $cat_id = $this->Conn->GetOne($sql); + if ($items_info) { + $category_id = array_shift( array_keys($items_info) ); + $sql = 'SELECT CategoryId + FROM '.TABLE_PREFIX.'Category + WHERE ResourceId = '.$category_id; + $category_id = $this->Conn->GetOne($sql); } else { - $cat_id = 0; + $category_id = 0; } - - $this->Application->StoreVar('ImportCategory', $cat_id); - $this->Application->StoreVar($event->getPrefixSpecial().'_ForceNotValid', 1); // not to loose import/export values on form refresh - - $this->Application->SetVar($event->getPrefixSpecial().'_id', 0); - $this->Application->SetVar($event->getPrefixSpecial().'_event', 'OnExportBegin'); - - $passed = $this->Application->GetVar('passed'); - $this->Application->SetVar('passed', $passed.','.$event->getPrefixSpecial()); - $event->setEventParam('pass_events', true); - + + if ($dst_field == 'ImportCategory') { + $this->Application->StoreVar('ImportCategory', $category_id); + $this->Application->StoreVar($event->getPrefixSpecial().'_ForceNotValid', 1); // not to loose import/export values on form refresh + + $this->Application->SetVar($event->getPrefixSpecial().'_id', 0); + $this->Application->SetVar($event->getPrefixSpecial().'_event', 'OnExportBegin'); + + $passed = $this->Application->GetVar('passed'); + $this->Application->SetVar('passed', $passed.','.$event->getPrefixSpecial()); + $event->setEventParam('pass_events', true); + } + + if ($dst_field == 'ItemCategory') { + $object =& $event->getObject(); // category item object (e.g. link, product, etc.) + + $ci_prefix = $object->Prefix.'-ci'; + $ci_object =& $this->Application->recallObject($ci_prefix, null, Array('skip_autoload' => true)); + + $ci_object->Load($category_id); + if (!$ci_object->isLoaded()) { + $fields_hash = Array('CategoryId' => $category_id, 'ItemResourceId' => $object->GetDBField('ResourceId')); + $ci_object->SetDBFieldsFromHash($fields_hash); + $ci_object->Create(true); + } + } + $this->finalizePopup($event); - } /** Index: trunk/core/units/general/cat_dbitem.php =================================================================== diff -u -N -r4043 -r4314 --- trunk/core/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 4043) +++ trunk/core/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 4314) @@ -158,7 +158,7 @@ { $id_field = $this->Application->getUnitOption($this->Prefix, 'IDField'); // because item was loaded before by ResourceId - $ci_table = $this->Application->getUnitOption('ci', 'TableName'); + $ci_table = $this->Application->getUnitOption($this->Prefix.'-ci', 'TableName'); $resource_id = $this->GetDBField('ResourceId'); $item_cats_sql = 'SELECT CategoryId FROM %s WHERE ItemResourceId = %s'; Index: trunk/core/units/images/images_config.php =================================================================== diff -u -N -r4303 -r4314 --- trunk/core/units/images/images_config.php (.../images_config.php) (revision 4303) +++ trunk/core/units/images/images_config.php (.../images_config.php) (revision 4314) @@ -3,6 +3,11 @@ $config = Array( 'Prefix' => 'img', 'Clones' => Array( + 'l-img' => Array('ParentPrefix' => 'l'), + 'n-img' => Array('ParentPrefix' => 'n'), + 'bb-img'=> Array('ParentPrefix' => 'bb'), + /*'p-img' => Array('ParentPrefix' => 'p'),*/ + 'catimg' => Array( 'ParentPrefix' => 'c', 'AggregateTags' => Array( Index: trunk/core/units/category_items/category_items_config.php =================================================================== diff -u -N -r3588 -r4314 --- trunk/core/units/category_items/category_items_config.php (.../category_items_config.php) (revision 3588) +++ trunk/core/units/category_items/category_items_config.php (.../category_items_config.php) (revision 4314) @@ -1,17 +1,19 @@ 'ci', +// 'Prefix' => 'ci', 'ItemClass' => Array('class'=>'CategoryItems_DBItem','file'=>'category_items_dbitem.php','build_event'=>'OnItemBuild'), 'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'), 'EventHandlerClass' => Array('class'=>'CategoryItemsEventHander','file'=>'category_items_event_handler.php','build_event'=>'OnBuild'), 'TagProcessorClass' => Array('class'=>'CategoryItemsTagProcessor','file'=>'category_items_tag_processor.php','build_event'=>'OnBuild'), 'AutoLoad' => true, 'Clones' => Array( - 'ci-cms' => Array( - 'ParentPrefix' => 'cms', - ), + 'l-ci' => Array('ParentPrefix' => 'l'), + 'n-ci' => Array('ParentPrefix' => 'n'), + 'bb-ci' => Array('ParentPrefix' => 'bb'), + 'p-ci' => Array('ParentPrefix' => 'p'), + 'cms-ci'=> Array('ParentPrefix' => 'cms',), ), 'QueryString' => Array( 1 => 'id', @@ -24,7 +26,7 @@ 'TableName' => TABLE_PREFIX.'CategoryItems', 'ParentTableKey'=> 'ResourceId', 'ForeignKey' => 'ItemResourceId', - 'ParentPrefix' => 'p', +// 'ParentPrefix' => 'p', 'AutoDelete' => true, 'AutoClone' => false, Index: trunk/kernel/units/general/cat_dbitem.php =================================================================== diff -u -N -r4043 -r4314 --- trunk/kernel/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 4043) +++ trunk/kernel/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 4314) @@ -158,7 +158,7 @@ { $id_field = $this->Application->getUnitOption($this->Prefix, 'IDField'); // because item was loaded before by ResourceId - $ci_table = $this->Application->getUnitOption('ci', 'TableName'); + $ci_table = $this->Application->getUnitOption($this->Prefix.'-ci', 'TableName'); $resource_id = $this->GetDBField('ResourceId'); $item_cats_sql = 'SELECT CategoryId FROM %s WHERE ItemResourceId = %s'; Index: trunk/kernel/units/category_items/category_items_config.php =================================================================== diff -u -N -r3588 -r4314 --- trunk/kernel/units/category_items/category_items_config.php (.../category_items_config.php) (revision 3588) +++ trunk/kernel/units/category_items/category_items_config.php (.../category_items_config.php) (revision 4314) @@ -1,17 +1,19 @@ 'ci', +// 'Prefix' => 'ci', 'ItemClass' => Array('class'=>'CategoryItems_DBItem','file'=>'category_items_dbitem.php','build_event'=>'OnItemBuild'), 'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'), 'EventHandlerClass' => Array('class'=>'CategoryItemsEventHander','file'=>'category_items_event_handler.php','build_event'=>'OnBuild'), 'TagProcessorClass' => Array('class'=>'CategoryItemsTagProcessor','file'=>'category_items_tag_processor.php','build_event'=>'OnBuild'), 'AutoLoad' => true, 'Clones' => Array( - 'ci-cms' => Array( - 'ParentPrefix' => 'cms', - ), + 'l-ci' => Array('ParentPrefix' => 'l'), + 'n-ci' => Array('ParentPrefix' => 'n'), + 'bb-ci' => Array('ParentPrefix' => 'bb'), + 'p-ci' => Array('ParentPrefix' => 'p'), + 'cms-ci'=> Array('ParentPrefix' => 'cms',), ), 'QueryString' => Array( 1 => 'id', @@ -24,7 +26,7 @@ 'TableName' => TABLE_PREFIX.'CategoryItems', 'ParentTableKey'=> 'ResourceId', 'ForeignKey' => 'ItemResourceId', - 'ParentPrefix' => 'p', +// 'ParentPrefix' => 'p', 'AutoDelete' => true, 'AutoClone' => false, Index: trunk/kernel/units/images/images_config.php =================================================================== diff -u -N -r4303 -r4314 --- trunk/kernel/units/images/images_config.php (.../images_config.php) (revision 4303) +++ trunk/kernel/units/images/images_config.php (.../images_config.php) (revision 4314) @@ -3,6 +3,11 @@ $config = Array( 'Prefix' => 'img', 'Clones' => Array( + 'l-img' => Array('ParentPrefix' => 'l'), + 'n-img' => Array('ParentPrefix' => 'n'), + 'bb-img'=> Array('ParentPrefix' => 'bb'), + /*'p-img' => Array('ParentPrefix' => 'p'),*/ + 'catimg' => Array( 'ParentPrefix' => 'c', 'AggregateTags' => Array( Index: trunk/kernel/units/categories/categories_tag_processor.php =================================================================== diff -u -N -r4287 -r4314 --- trunk/kernel/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 4287) +++ trunk/kernel/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 4314) @@ -63,8 +63,8 @@ function ItemCount($params) { - $cat_object =& $this->Application->recallObject($this->getPrefixSpecial(),$this->Prefix, $params); - $ci_table = $this->Application->getUnitOption('ci','TableName'); + $cat_object =& $this->getObject($params); + $ci_table = $this->Application->getUnitOption('l-ci', 'TableName'); $sql = ' SELECT COUNT(*) FROM '.$cat_object->TableName.' c Index: trunk/core/units/categories/categories_tag_processor.php =================================================================== diff -u -N -r4287 -r4314 --- trunk/core/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 4287) +++ trunk/core/units/categories/categories_tag_processor.php (.../categories_tag_processor.php) (revision 4314) @@ -63,8 +63,8 @@ function ItemCount($params) { - $cat_object =& $this->Application->recallObject($this->getPrefixSpecial(),$this->Prefix, $params); - $ci_table = $this->Application->getUnitOption('ci','TableName'); + $cat_object =& $this->getObject($params); + $ci_table = $this->Application->getUnitOption('l-ci', 'TableName'); $sql = ' SELECT COUNT(*) FROM '.$cat_object->TableName.' c