public function itemEditAction()
 {
     $data = $this->getRequest()->getPost('data');
     $id = $this->_getParam('id');
     $cloneId = $this->_getParam('clone_id');
     $langFilter = $this->_getParam('langFilter');
     $defaultTeaserId = $this->_getParam('teaser_id');
     //check if cancel button is pressed
     if ($this->_formHelper->isCancel()) {
         //cancel form
         return $this->_formHelper->returnCancel($this->view->url(array('action' => 'index')), $this->translate('Action canceled'));
     }
     //create form object
     $form = new Teaser_Form_TeaserItem($data);
     //postback - save?
     if ($this->_formHelper->isSave()) {
         //check if valid
         if ($form->isValid()) {
             $values = $form->getValues();
             //create entity object from submitted values, and save
             $item = new Teaser_Model_Item($values);
             $item->set_start_dt(HCMS_Utils_Date::dateLocalToIso($item->get_start_dt()));
             if (isset($data["end_dt"]) && $data["end_dt"] != "") {
                 $item->set_end_dt(HCMS_Utils_Date::dateLocalToIso($item->get_end_dt()));
             }
             Teaser_Model_ItemMapper::getInstance()->save($item, $langFilter != '' ? $langFilter : null);
             //save done, return success
             return $this->_formHelper->returnSuccess($this->view->url(array('action' => 'index')), $this->translate('Item saved.'));
         } else {
             //we have errors - return json or continue
             $this->_formHelper->returnError($form->getMessages());
         }
     } elseif (!$this->_formHelper->getRequest()->isPost()) {
         if (!isset($id) && isset($cloneId)) {
             $id = $cloneId;
         }
         //edit action
         if (isset($id) && $id > 0) {
             $item = new Teaser_Model_Item();
             if (!Teaser_Model_ItemMapper::getInstance()->find($id, $item, $langFilter != '' ? $langFilter : null)) {
                 throw new Exception("Item not found");
             }
             Teaser_Model_ItemMapper::getInstance()->populateTeaserIds($item);
             //fetch data
             $data = $item->toArray();
             $data['start_dt'] = HCMS_Utils_Date::dateIsoToLocal($item->get_start_dt(), "HH:mm");
             $data['end_dt'] = HCMS_Utils_Date::dateIsoToLocal($item->get_end_dt(), "HH:mm");
             $data['teaser_ids'] = $item->get_teaser_ids();
             if (isset($cloneId)) {
                 unset($data['id']);
                 $data['title'] = 'Clone ' . $data['title'];
             }
             //populate form with data
             $form->setData($data);
         }
         if (null != $this->_getParam('box_code')) {
             $data['box_code'] = $this->_getParam('box_code');
         }
     }
     $languages = Application_Model_TranslateMapper::getInstance()->getLanguages();
     $this->view->languages = $languages;
     if (!isset($data['teaser_ids'])) {
         $data['teaser_ids'] = array();
     }
     $this->view->data = $data;
     //teasers with the same box
     $this->view->availableTeasers = Teaser_Model_TeaserMapper::getInstance()->fetchAll(array('box_code' => $data['box_code']));
     $this->view->defaultTeaserId = $defaultTeaserId;
 }