public function executeNew(sfWebRequest $request) { $petition = PetitionTable::getInstance()->findById($request->getParameter('id'), $this->userIsAdmin()); /* @var $petition Petition */ if (!$petition) { return $this->notFound(); } if (!$petition->isEditableBy($this->getGuardUser())) { return $this->noAccess(); } if ($petition->getKind() != Petition::KIND_PLEDGE) { return $this->noAccess(); } $pledge_item = new PledgeItem(); $pledge_item->setPetition($petition); $form = new PledgeItemForm($pledge_item); if ($request->isMethod('post')) { $form->bind($request->getPostParameter($form->getName())); if ($form->isValid()) { $form->save(); $petition->state(Doctrine_Record::STATE_DIRTY); // trigger widget update $petition->save(); return $this->ajax()->remove('#pledge_item_form_')->appendPartial('#pledge_items tbody', 'item_row', array('pledge_item' => $pledge_item))->render(); } return $this->ajax()->form($form)->render(); } return $this->ajax()->remove('#pledge_item_form_')->appendPartial('#pledge_items tbody', 'item_form', array('form' => $form, 'pledge_item' => $pledge_item, 'route' => 'pledge_new', 'route_params' => array('id' => $petition->getId())))->select2color('#pledge_item_form_ select.select2-color')->render(); }