function updateExtensionForm(checkbox, name) { extensionForm = document.getElementById(name + '_form'); rowGroupDisplayValue = document.all ? 'block' : 'table-row-group'; if (checkbox.checked) { extensionForm.style.display = rowGroupDisplayValue; } else { extensionForm.style.display = 'none'; } } function showTier3Extensions() { document.getElementById('tier3_exts').style.display = 'block'; document.getElementById('show_tier3_exts').style.display = 'none'; } <?php if (array_intersect(array_keys((array) $sf_request->getParameter('extensions')), ExtensionDefinitionTable::getNamesByTier(3))) { ?> showTier3Extensions(); <?php } ?> </script>
public function addEntity($request, $primary) { if (!in_array($primary, array('Person', 'Org'))) { throw new Exception("Invalid primary extension: " . $primary); } $this->header = 'Add New ' . ($primary == 'Person' ? 'Person' : 'Organization'); //create new entity and extension $this->entity = new Entity(); $this->entity->addExtension($primary); //get extensions and definitions $this->tier2_defs = ExtensionDefinitionTable::getByTier(2, $primary); $this->tier3_defs = ExtensionDefinitionTable::getByTier(3, $primary); //create entity form $this->entity_form = new EntityForm($this->entity); //create primary extension form $primaryFormClass = $primary . 'Form'; $this->primary_ext_form = new $primaryFormClass($this->entity->getPrimaryExtensionObject(), null, false); //create all other extension forms $this->other_ext_forms = array(); $exts = ExtensionDefinitionTable::getNamesByTier(array(2, 3), $primary, $havingFields = true); foreach ($exts as $ext) { $class = $ext . 'Form'; $object = new $ext(); $this->other_ext_forms[$ext] = new $class($object, null, false); } $this->reference_form = new ReferenceForm(); //form submission if ($request->isMethod('post')) { $this->entity_form->bind($request->getParameter('entity')); $this->primary_ext_form->bind($request->getParameter('entity')); $new_exts = array_keys((array) $request->getParameter('extensions')); $this->reference_form->bind($request->getParameter('reference')); foreach ($exts as $ext) { $this->other_ext_forms[$ext]->bind($request->getParameter('entity')); } if ($this->entity_form->isValid() && $this->reference_form->isValid()) { $db = Doctrine_Manager::connection(); try { $db->beginTransaction(); //save extensions foreach ($new_exts as $ext) { $this->entity->addExtension($ext); } //save entity and reference $this->entity_form->updateObject(); $this->entity->saveWithRequiredReference($request->getParameter('reference')); //create primary alias $a = new Alias(); $a->Entity = $this->entity; $a->name = $this->entity->name; $a->is_primary = true; $a->save(); $db->commit(); } catch (Exception $e) { $db->rollback(); throw $e; } //redirect to view $this->redirect($this->entity->getInternalUrl()); } } $this->setTemplate('addEntity'); }