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();
 }