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.

Reply via email to