Index: trunk/core/units/modules/modules_event_handler.php =================================================================== diff -u -r4207 -r4577 --- trunk/core/units/modules/modules_event_handler.php (.../modules_event_handler.php) (revision 4207) +++ trunk/core/units/modules/modules_event_handler.php (.../modules_event_handler.php) (revision 4577) @@ -14,11 +14,61 @@ parent::OnItemBuild($event); } + /** + * List with one record if special passed + * + * @param kEvent $event + */ function SetCustomQuery(&$event) { - $object =& $event->getObject(); - $object->addFilter('current_module', 'Name = '.$event->Special); + if ($event->Special) { + $object =& $event->getObject(); + $object->addFilter('current_module', 'Name = '.$event->Special); + } } + + function mapEvents() + { + parent::mapEvents(); + unset($this->eventMethods['OnMassDecline']); + } + + /** + * Disabled modules, but not In-Portal + * + * @param kEvent $event + */ + function OnMassDecline(&$event) + { + if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 0)) { + return; + } + + $object =& $event->getObject( Array('skip_autoload' => true) ); + $ids = $this->StoreSelectedIDs($event); + + + if (!$ids) return true; + + $status_field = array_shift( $this->Application->getUnitOption($event->Prefix, 'StatusField') ); + + foreach($ids as $id) + { + $object->Load($id); + if ($object->GetID() == 'In-Portal') continue; + $object->SetDBField($status_field, 0); + + if ($object->Update()) { + $event->status = erSUCCESS; + $event->redirect_params = Array('opener' => 's', 'pass_events' => true); //stay! + } + else { + $event->status = erFAIL; + $event->redirect = false; + break; + } + } + } }