Index: kernel/db/cat_event_handler.php =================================================================== --- kernel/db/cat_event_handler.php (revision 14780) +++ kernel/db/cat_event_handler.php (working copy) @@ -2629,7 +2629,9 @@ /* @var $object kDBItem */ if ( !$object->isLoaded() ) { - $this->_errorNotFound($event); + if ( $event->Special != 'previous' && $event->Special != 'next' ) { + $this->_errorNotFound($event); + } return true; } Index: kernel/db/db_event_handler.php =================================================================== --- kernel/db/db_event_handler.php (revision 14768) +++ kernel/db/db_event_handler.php (working copy) @@ -211,7 +211,9 @@ $list_helper =& $this->Application->recallObject('ListHelper'); /* @var $list_helper ListHelper */ - return $list_helper->getNavigationResource($object, $event->getEventParam('list'), $event->Special == 'next'); + $select_clause = $this->Application->getUnitOption($object->Prefix, 'NavigationSelectClause', null); + + return $list_helper->getNavigationResource($object, $event->getEventParam('list'), $event->Special == 'next', $select_clause); } if (preg_match('/^auto-(.*)/', $event->Special, $regs) && $this->Application->prefixRegistred($regs[1])) { Index: kernel/db/db_tag_processor.php =================================================================== --- kernel/db/db_tag_processor.php (revision 14769) +++ kernel/db/db_tag_processor.php (working copy) @@ -606,7 +606,9 @@ $list_helper =& $this->Application->recallObject('ListHelper'); /* @var $list_helper ListHelper */ - return $list_helper->getNavigationResource($object, $params['list'], false); + $select_clause = $this->Application->getUnitOption($object->Prefix, 'NavigationSelectClause', null); + + return $list_helper->getNavigationResource($object, $params['list'], false, $select_clause); } /** @@ -625,7 +627,9 @@ $list_helper =& $this->Application->recallObject('ListHelper'); /* @var $list_helper ListHelper */ - return $list_helper->getNavigationResource($object, $params['list'], true); + $select_clause = $this->Application->getUnitOption($object->Prefix, 'NavigationSelectClause', null); + + return $list_helper->getNavigationResource($object, $params['list'], true, $select_clause); } /** Index: units/helpers/list_helper.php =================================================================== --- units/helpers/list_helper.php (revision 14768) +++ units/helpers/list_helper.php (working copy) @@ -204,7 +204,8 @@ $where_clause = '(%1$s.' . $object->IDField . ' != ' . $object->GetID() . ') AND ((' . implode(') OR (', $where_clause) . '))'; $list->addFilter('navigation_filter', $where_clause); - $sql = $list->extractCalculatedFields($list->GetSelectSQL()); + // do extractCalculatedFields (transforms having into where), since we don't select fields from JOINed tables + $sql = str_replace('%1$s', $list->TableName, $list->extractCalculatedFields($list->GetSelectSQL())); $list->removeFilter('navigation_filter'); $list->setOrderFields($order_fields_backup);