Author: jablko Date: Thu Oct 14 18:42:06 2010 New Revision: 8152 Log: Extend QubitEditAction
Modified: trunk/apps/qubit/modules/function/actions/editAction.class.php Modified: trunk/apps/qubit/modules/function/actions/editAction.class.php ============================================================================== --- trunk/apps/qubit/modules/function/actions/editAction.class.php Thu Oct 14 17:42:19 2010 (r8151) +++ trunk/apps/qubit/modules/function/actions/editAction.class.php Thu Oct 14 18:42:06 2010 (r8152) @@ -25,13 +25,9 @@ * @version svn: $Id$ * @author David Juhasz <[email protected]> */ -class FunctionEditAction extends sfAction +class FunctionEditAction extends QubitEditAction { - /** - * Define form field names - * - * @var string - */ + // Arrays not allowed in class constants public static $NAMES = array( 'type', @@ -70,6 +66,63 @@ 'relatedResource[endDate]', 'relatedResource[dateDisplay]'); + protected function earlyExecute() + { + $this->form->getValidatorSchema()->setOption('allow_extra_fields', true); + + $this->resource = new QubitFunction; + if (isset($this->getRoute()->resource)) + { + $this->resource = $this->getRoute()->resource; + + // Add optimistic lock + $this->form->setDefault('serialNumber', $this->resource->serialNumber); + $this->form->setValidator('serialNumber', new sfValidatorInteger); + $this->form->setWidget('serialNumber', new sfWidgetFormInputHidden); + } + + // Find function to function relations with current function as subject or + // object + $criteria = new Criteria; + $criteria->addAlias('ro', QubitObject::TABLE_NAME); + $criteria->addAlias('rs', QubitObject::TABLE_NAME); + $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id'); + $criteria->addJoin(QubitRelation::SUBJECT_ID, 'rs.id'); + $criterion1 = $criteria->getNewCriterion(QubitRelation::OBJECT_ID, $this->resource->id, Criteria::EQUAL); + $criterion2 = $criteria->getNewCriterion(QubitRelation::SUBJECT_ID, $this->resource->id, Criteria::EQUAL); + $criterion1->addOr($criterion2); + $criterion3 = $criteria->getNewCriterion('ro.class_name', 'QubitFunction', Criteria::EQUAL); + $criterion4 = $criteria->getNewCriterion('rs.class_name', 'QubitFunction', Criteria::EQUAL); + $criterion3->addAnd($criterion4); + $criterion1->addAnd($criterion3); + $criteria->add($criterion1); + $criteria->addAscendingOrderByColumn(QubitRelation::TYPE_ID); + $this->relatedFunctions = QubitRelation::get($criteria); + + // Get actors (object) related to this function (subject) + $criteria = new Criteria; + $criteria->addAlias('ro', QubitObject::TABLE_NAME); + $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id', Criteria::INNER_JOIN); + $criteria->add(QubitRelation::SUBJECT_ID, $this->resource->id); + $criteria->add('ro.class_name', 'QubitActor'); + $this->actorRelations = QubitRelation::get($criteria); + + // Get information objects (object) related to this function (subject) + $criteria = new Criteria; + $criteria->addAlias('ro', QubitObject::TABLE_NAME); + $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id', Criteria::INNER_JOIN); + $criteria->add(QubitRelation::SUBJECT_ID, $this->resource->id); + $criteria->add('ro.class_name', 'QubitInformationObject'); + $this->infoObjectRelations = QubitRelation::get($criteria); + + // Determine if user has edit priviliges + $this->editTaxonomyCredentials = false; + if (SecurityPriviliges::editCredentials($this->getUser(), 'term')) + { + $this->editTaxonomyCredentials = true; + } + } + /** * Add fields to form * @@ -170,21 +223,6 @@ break; - case 'language': - $this->form->setDefault($name, $this->resource[$name]); - $this->form->setValidator($name, new sfValidatorI18nChoiceLanguage(array('multiple' => true))); - $this->form->setWidget($name, new sfWidgetFormI18nChoiceLanguage(array('culture' => $this->context->user->getCulture(), 'multiple' => true))); - - break; - - case 'script': - $this->form->setDefault($name, $this->resource[$name]); - $c = sfCultureInfo::getInstance($this->context->user->getCulture()); - $this->form->setValidator($name, new sfValidatorChoice(array('choices' => array_keys($c->getScripts()), 'multiple' => true))); - $this->form->setWidget($name, new sfWidgetFormSelect(array('choices' => $c->getScripts(), 'multiple' => true))); - - break; - case 'maintenanceNotes': $this->maintenanceNote = null; @@ -276,7 +314,6 @@ } } - /** * Process form fields * @@ -399,74 +436,7 @@ */ public function execute($request) { - $this->form = new sfForm; - $this->form->getValidatorSchema()->setOption('allow_extra_fields', true); - - $this->resource = new QubitFunction; - - if (isset($request->id)) - { - $this->resource = QubitFunction::getById($request->id); - - if (!$this->resource instanceof QubitFunction) - { - $this->forward404(); - } - - // Add optimistic lock - $this->form->setDefault('serialNumber', $this->resource->serialNumber); - $this->form->setValidator('serialNumber', new sfValidatorInteger); - $this->form->setWidget('serialNumber', new sfWidgetFormInputHidden); - } - - // Find function to function relations with current function as subject or - // object - $criteria = new Criteria; - $criteria->addAlias('ro', QubitObject::TABLE_NAME); - $criteria->addAlias('rs', QubitObject::TABLE_NAME); - $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id'); - $criteria->addJoin(QubitRelation::SUBJECT_ID, 'rs.id'); - $criterion1 = $criteria->getNewCriterion(QubitRelation::OBJECT_ID, $this->resource->id, Criteria::EQUAL); - $criterion2 = $criteria->getNewCriterion(QubitRelation::SUBJECT_ID, $this->resource->id, Criteria::EQUAL); - $criterion1->addOr($criterion2); - $criterion3 = $criteria->getNewCriterion('ro.class_name', 'QubitFunction', Criteria::EQUAL); - $criterion4 = $criteria->getNewCriterion('rs.class_name', 'QubitFunction', Criteria::EQUAL); - $criterion3->addAnd($criterion4); - $criterion1->addAnd($criterion3); - $criteria->add($criterion1); - $criteria->addAscendingOrderByColumn(QubitRelation::TYPE_ID); - $this->relatedFunctions = QubitRelation::get($criteria); - - // Get actors (object) related to this function (subject) - $criteria = new Criteria; - $criteria->addAlias('ro', QubitObject::TABLE_NAME); - $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id', Criteria::INNER_JOIN); - $criteria->add(QubitRelation::SUBJECT_ID, $this->resource->id); - $criteria->add('ro.class_name', 'QubitActor'); - $this->actorRelations = QubitRelation::get($criteria); - - // Get information objects (object) related to this function (subject) - $criteria = new Criteria; - $criteria->addAlias('ro', QubitObject::TABLE_NAME); - $criteria->addJoin(QubitRelation::OBJECT_ID, 'ro.id', Criteria::INNER_JOIN); - $criteria->add(QubitRelation::SUBJECT_ID, $this->resource->id); - $criteria->add('ro.class_name', 'QubitInformationObject'); - $this->infoObjectRelations = QubitRelation::get($criteria); - - // Determine if user has edit priviliges - $this->editTaxonomyCredentials = false; - if (SecurityPriviliges::editCredentials($this->getUser(), 'term')) - { - $this->editTaxonomyCredentials = true; - } - - // HACK Use static::$NAMES in PHP 5.3, - // http://php.net/oop5.late-static-bindings - $class = new ReflectionClass($this); - foreach ($class->getStaticPropertyValue('NAMES') as $name) - { - $this->addField($name); - } + parent::execute($request); if ($request->isMethod('post')) { @@ -639,7 +609,7 @@ /** * Delete all relationships marked for deletion */ - public function deleteRelations() + protected function deleteRelations() { if (is_array($deleteRelations = $this->request->deleteRelations)) { -- You received this message because you are subscribed to the Google Groups "Qubit Toolkit Commits" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/qubit-commits?hl=en.
