Index: branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_tag_processor.php =================================================================== diff -u -r1368 -r1372 --- branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_tag_processor.php (.../config_search_tag_processor.php) (revision 1368) +++ branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_tag_processor.php (.../config_search_tag_processor.php) (revision 1372) @@ -21,8 +21,20 @@ $block_params['name']=$params['block']; $block_params['pass_params']='true'; + $prev_title=""; + while (!$list->EOL()) { + $this_title=$list->Records[$list->CurrentIndex]['ConfigHeader']; + + if ($this_title!=$prev_title){ + $prev_title=$this_title; + $section_header_params=array(); + $section_header_params['name']='config_section_header'; + $section_header_params['title']=$this->Application->Phrase($this_title); + $o.= $this->Application->ParseBlock($section_header_params, 1); + } + $this->Application->SetVar( $this->getPrefixSpecial().'_id', $list->GetDBField($id_field) ); // for edit/delete links using GET $o.= $this->Application->ParseBlock($block_params, 1); $list->GoNext(); Index: branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_config.php =================================================================== diff -u -r1369 -r1372 --- branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_config.php (.../config_search_config.php) (revision 1369) +++ branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_config.php (.../config_search_config.php) (revision 1372) @@ -22,7 +22,8 @@ 'Conditional' => false, 'HookToPrefix' => 'cf', 'HookToSpecial' => '', - 'HookToEvent' => Array( 'OnPreSaveCreated' ), + //'HookToEvent' => Array( 'OnPreSaveCreated' ), + 'HookToEvent' => Array( 'OnSave' ), 'DoPrefix' => 'confs', 'DoSpecial' => '', 'DoEvent' => 'OnCreateCustomField', @@ -37,7 +38,7 @@ 'TableName' => TABLE_PREFIX.'SearchConfig', - 'ListSQLs' => Array(''=>'SELECT * FROM '.TABLE_PREFIX.'SearchConfig'), + 'ListSQLs' => Array(''=>'SELECT *, IF('.TABLE_PREFIX.'SearchConfig.CustomFieldId=0, 0, 1) AS IsCustom FROM '.TABLE_PREFIX.'SearchConfig'), 'ItemSQLs' => Array(''=>'SELECT * FROM '.TABLE_PREFIX.'SearchConfig'), @@ -66,7 +67,14 @@ ), 'VirtualFields' => Array(), - + + 'ListSortings' => Array( + '' => Array( + 'ForcedSorting' => Array('IsCustom' => 'asc'), + 'Sorting' => Array('DisplayOrder' => 'asc'), + ) + ), + 'Grids' => Array( 'Default' => Array( 'Icons' => Array('default'=>'icon16_custom.gif'), // icons for each StatusField values, if no matches or no statusfield selected, then "default" icon is used Index: branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_event_handler.php =================================================================== diff -u -r1371 -r1372 --- branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_event_handler.php (.../config_search_event_handler.php) (revision 1371) +++ branches/unlabeled/unlabeled-1.1.2/core/units/config_search/config_search_event_handler.php (.../config_search_event_handler.php) (revision 1372) @@ -26,7 +26,7 @@ } $object->addFilter('module_filter', '%1$s.ModuleName = "'.$module_owner.'"'); - $object->AddOrderField('DisplayOrder', 'ASC'); + } function OnUpdate(&$event) @@ -77,30 +77,49 @@ { $cf_object =& $event->MasterEvent->getObject(); - $item_id = $this->getPassedID($event->MasterEvent); - if($item_id == '') + $is_new = $event->MasterEvent->getEventParam('IsNew'); + + + $cf_search = array(); + $cf_search['DisplayOrder'] = $cf_object->FieldValues['DisplayOrder']; + $cf_search['ElementType'] = $cf_object->FieldValues['ElementType']; + $cf_search['DisplayName'] = $cf_object->FieldValues['FieldLabel']; + $cf_search['FieldName'] = $cf_object->FieldValues['FieldName']; + $cf_search['Description'] = $cf_object->FieldValues['Prompt']; + $cf_search['ConfigHeader'] = $cf_object->FieldValues['Heading']; + + + $cf_search['TableName'] = "CustomField"; + $cf_search['ModuleName'] = "In-Commerce"; + $cf_search['ForeignField'] = "CustomMetaData.Value"; + $cf_search['JoinClause'] = "{ForeignTable}.CustomFieldId={LocalTable}.CustomFieldId"; + + if($is_new) { - // only when creating new custom field - $cf_search = array(); - $cf_search['CustomFieldId'] = $cf_object->FieldValues['CustomFieldId']; - $cf_search['DisplayOrder'] = $cf_object->FieldValues['DisplayOrder']; - $cf_search['ElementType'] = $cf_object->FieldValues['ElementType']; - $cf_search['DisplayName'] = $cf_object->FieldValues['FieldLabel']; - $cf_search['FieldName'] = $cf_object->FieldValues['FieldName']; - $cf_search['Description'] = $cf_object->FieldValues['Prompt']; + $live_id = $this->Conn->GetOne("SELECT CustomFieldId FROM ".TABLE_PREFIX."CustomField WHERE FieldName='".$cf_search['FieldName']."'"); - $cf_search['TableName'] = "CustomField"; - $cf_search['ModuleName'] = "In-Commerce"; - $cf_search['ForeignField'] = "CustomMetaData.Value"; - $cf_search['JoinClause'] = "{ForeignTable}.CustomFieldId={LocalTable}.CustomFieldId"; + $cf_search['CustomFieldId'] = $live_id; $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); - $cf_item = $event->getObject(); - $cf_item->SetFieldsFromHash($cf_search); - $cf_item->Create(); + $confs_item = $event->getObject(); + $confs_item->SetFieldsFromHash($cf_search); + $confs_item->Create(); + }else{ + + $cf_search['CustomFieldId'] = $cf_object->FieldValues['CustomFieldId']; + + $search_config_id = $this->Conn->GetOne("SELECT SearchConfigId FROM ".TABLE_PREFIX."SearchConfig WHERE CustomFieldId='".$cf_object->FieldValues['CustomFieldId']."'"); + + $cf_search['SearchConfigId'] = $search_config_id; + + $this->Application->setUnitOption($event->Prefix,'AutoLoad',false); + $confs_item = $event->getObject(); + $confs_item->SetFieldsFromHash($cf_search); + $confs_item->Update($search_config_id); + } } }