/** * Adds new fields to form * * @param string $name * @param string $value * @param int $order */ public function addNewField($name, $data, $order, $option, $id) { //tạo 2 selectbox don_vi va thanh_vien $don_vi = new Zend_Form_Element_Select($name, $option); $don_vi->setValue($data[$name])->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => $name, 'onchange' => 'change(this,' . $id . ')')); //tao selectnox thanh_vien dua vao value cua selectbox don_vi $gvOptions = array("multiOptions" => Khcn_Api::_()->getDbTable('giang_vien', 'default')->getGiangViensByDonViAssoc($data[$name])); $thanh_vien = new Zend_Form_Element_Select('thanh_vien_' . $id, $gvOptions); $thanh_vien->setRequired(true)->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => 'thanh_vien_' . $id))->setRegisterInArrayValidator(false); //tranh truong hop invalidation if (isset($data['thanh_vien_' . $id])) { $thanh_vien->setValue($data['thanh_vien_' . $id]); } //add vao form $this->addElements(array($don_vi, $thanh_vien)); $this->addDisplayGroup(array($name, 'thanh_vien_' . $id), 'dk_tv_' . $id, array('order' => $order, 'legend' => 'Thành viên', 'decorators' => array('FormElements', 'Fieldset', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'td')), array('HtmlTag', array('tag' => 'tr', 'id' => 'dk_tv_' . $id))))); }
public function init() { $this->setName('f2')->setMethod('post'); $id = new Zend_Form_Element_Hidden('id'); $id->addFilter('Int')->setAttribs(array('id' => 'id')); $this->addElement($id); $code = new Zend_Form_Element_Hidden('code'); $code->setValue(5)->setAttrib('id', 'code')->removeDecorator('label'); $this->addElement($code); $ma = new Zend_Form_Element_Text('ma'); $ma->setLabel('Mã hội đồng (*)')->setOrder(1)->setDescription('vd : HDNT2000-01')->setRequired(true)->addFilter('StripTags')->addFilter('StringTrim')->addFilter('StringToUpper')->addValidator('NotEmpty')->addValidator(new Zend_Validate_StringLength(0, 15))->setDecorators(array('ViewHelper', 'Errors', array('Description', array('tag' => 'small', 'style' => 'display : block')), array(array('data' => 'HtmlTag'), array('tag' => 'td', 'style' => 'width: 85%')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('class' => 'text-input')); $this->addElement($ma); $ngay_thanh_lap = new Zend_Form_Element_Text('ngay_thanh_lap'); $ngay_thanh_lap->setLabel('Ngày thành lập (*)')->setDescription('(dd-mm-YYYY)')->setOrder(2)->setRequired(true)->addFilter('StripTags')->addValidator('NotEmpty')->setDecorators(array('ViewHelper', 'Errors', array('Description', array('tag' => 'span')), array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('class' => 'text-input', 'id' => 'ngay_thanh_lap')); $this->addElement($ngay_thanh_lap); $ghi_chu = new Zend_Form_Element_Text('ghi_chu'); $ghi_chu->setLabel('Ghi chú')->setOrder(3)->addFilter('StripTags')->addFilter('StringTrim')->setDecorators(array('ViewHelper', 'Errors', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('class' => 'text-input medium-input')); $this->addElement($ghi_chu); //dang ky thanh vien hoi dong //danh sach don vi $don_vi = new Default_Model_DonVi(); $donVis = $don_vi->getDSDV(); unset($donVis['1']); $donVis = array('0' => '============= Chọn đơn vị =============') + $donVis; $dvOptions = array("multiOptions" => $donVis); //danh sach giang vien $giangViens = array(); $giangViens[0] = '===== Chọn giảng viên ====='; $gvOptions = array("multiOptions" => $giangViens); $chucDanhs = Default_Model_Constraints::pcnt_chuc_danh(); /* * 0 : Chủ tịch * 1 : Phản biện 1 * 2 : Phản biện 2 * 3 : Ủy viên * 4 : Ủy viên - Thư ký */ for ($i = 0; $i <= 4; $i++) { $dv = new Zend_Form_Element_Select('don_vi_' . $i, $dvOptions); $dv->setValue(0)->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('id' => 'don_vi_' . $i, 'onchange' => 'change(this,' . $i . ')')); $gv = new Zend_Form_Element_Select('thanh_vien_' . $i, $gvOptions); $gv->setRequired(true)->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('id' => 'thanh_vien_' . $i))->setRegisterInArrayValidator(false); $this->addElements(array($dv, $gv)); $this->addDisplayGroup(array('don_vi_' . $i, 'thanh_vien_' . $i), 'dk_tvhd_' . $i, array('order' => $i + 4, 'Legend' => $chucDanhs[$i] . ' (*)', 'decorators' => array('FormElements', 'Fieldset', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'td')), array('HtmlTag', array('tag' => 'tr', 'id' => 'dk_tvhd_' . $i))))); } $linh_vuc = new Default_Model_LinhVuc(); $lvOptions = array("multiOptions" => $linh_vuc->getDSLV()); $ma_linh_vuc = new Zend_Form_Element_Select('ma_linh_vuc', $lvOptions); $ma_linh_vuc->setRequired(true)->setLabel('Lĩnh vực')->setOrder(11)->setDecorators(array('ViewHelper', 'Errors', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('id' => 'ma_linh_vuc')); $this->addElement($ma_linh_vuc); $namOptions = array("multiOptions" => Default_Model_Constraints::nam()); $nam = new Zend_Form_Element_Select('nam', $namOptions); $nam->setRequired(true)->setLabel('Năm')->setOrder(12)->setValue(date('Y'))->setDecorators(array('ViewHelper', 'Errors', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('id' => 'nam')); $this->addElement($nam); $dsdt = new Zend_Form_Element_Button('dsdt'); $dsdt->setLabel('Danh sách đề tài')->setDecorators(array('ViewHelper', array(array('data' => 'HtmlTag'), array('tag' => 'span')), array(array('row' => 'HtmlTag'), array('tag' => 'span'))))->setAttribs(array('class' => 'button', 'id' => 'dsdt')); $this->addElement($dsdt); $submitCon = new Zend_Form_Element_Submit('submitCon'); $submitCon->setDecorators(array('ViewHelper', array(array('data' => 'HtmlTag'), array('tag' => 'span')), array(array('row' => 'HtmlTag'), array('tag' => 'span'))))->setAttribs(array('class' => 'button')); $this->addElement($submitCon); $submitExit = new Zend_Form_Element_Submit('submitExit'); $submitExit->setDecorators(array('ViewHelper', array(array('data' => 'HtmlTag'), array('tag' => 'span')), array(array('row' => 'HtmlTag'), array('tag' => 'span'))))->setAttribs(array('class' => 'button')); $this->addElement($submitExit); $link = Zend_Controller_Front::getInstance()->getRouter()->assemble(array('module' => 'admin', 'controller' => 'hoi-dong', 'action' => 'danh-sach-hdnt'), null, true); $cancel = new Zend_Form_Element_Button('cancel'); $cancel->setDecorators(array('ViewHelper', array(array('data' => 'HtmlTag'), array('tag' => 'span')), array(array('row' => 'HtmlTag'), array('tag' => 'span'))))->setAttribs(array('class' => 'button', 'onclick' => 'window.location.href="' . $link . '"')); $this->addElement($cancel); $this->addDisplayGroup(array('dsdt'), 'function', array('order' => 13, 'decorators' => array('FormElements', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'td')), array('HtmlTag', array('tag' => 'tr', 'id' => 'btn_function'))))); $this->addDisplayGroup(array('submitCon', 'submitExit', 'cancel'), 'submit', array('order' => 14, 'decorators' => array('FormElements', array(array('data' => 'HtmlTag'), array('tag' => 'td', 'colspan' => 2)), array(array('row' => 'HtmlTag'), array('tag' => 'td'))))); $this->setDecorators(array('FormElements', array('HtmlTag', array('tag' => 'table', 'class' => 'hdd')), 'Form')); }
public function suaAction() { $this->view->form = $form = new Admin_Form_BaiBao_Edit(); $id = $this->_getParam('id'); $bai_bao = Khcn_Api::_()->getItem('default_bai_bao', $id); $form->populate($bai_bao->toArray()); $form->removeElement('submitCon'); $form->submitExit->setLabel('Lưu'); if (!$this->getRequest()->isPost()) { //populate thành viên $thanhViens = $bai_bao->getGiangViens(); $code = count($thanhViens); $form->code->setValue($code); $donVis = Khcn_Api::_()->getDbTable('don_vi', 'default')->getDonVisAssoc(); unset($donVis['1']); $dvOptions = array("multiOptions" => $donVis); $i = 0; foreach ($thanhViens as $thanh_vien) { $don_vi = new Zend_Form_Element_Select('don_vi_' . $i, $dvOptions); $don_vi->setValue($thanh_vien['ma_don_vi'])->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => 'don_vi_' . $i, 'onchange' => 'change(this,' . $i . ')')); $gvOptions = array("multiOptions" => Khcn_Api::_()->getDbTable('giang_vien', 'default')->getGiangViensByDonViAssoc($thanh_vien->ma_don_vi)); $ma_giang_vien = $thanh_vien->getIdentity(); $thanh_vien = new Zend_Form_Element_Select('thanh_vien_' . $i, $gvOptions); $thanh_vien->setRequired(true)->setValue($ma_giang_vien)->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => 'thanh_vien_' . $i))->setRegisterInArrayValidator(false); $form->addElements(array($don_vi, $thanh_vien)); $form->addDisplayGroup(array('don_vi_' . $i, 'thanh_vien_' . $i), 'dk_tv_' . $i, array('order' => $i + 6, 'legend' => 'Thành viên', 'decorators' => array('FormElements', 'Fieldset', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'td')), array('HtmlTag', array('tag' => 'tr', 'id' => 'dk_tv_' . $i))))); $i++; } return; } $form->preValidation($_POST); if (!$form->isValid($this->getRequest()->getPost())) { return; } $table = Khcn_Api::_()->getDbTable('bai_bao', 'default'); $db = $table->getAdapter(); $db->beginTransaction(); try { if ($form->file->getFileName(null, false) != null) { //determine filename and extension $info = pathinfo($form->file->getFileName(null, false)); $filename = $info['filename']; $ext = $info['extension'] ? "." . $info['extension'] : ""; //filter for renaming.. prepend with current time $file = time() . '_' . Default_Model_Functions::convert_vi_to_en($filename) . $ext; $form->file->addFilter(new Zend_Filter_File_Rename(array("target" => $file, "overwrite" => true)))->addFilter(new Khcn_Filter_File_Resize(array('width' => 720, 'height' => 720, 'keepRatio' => true))); $form->getValue('file'); $bai_bao->ten_file = $file; } $values = $form->getValues(); $bai_bao->setFromArray($values); $bai_bao->save(); // Update thanh vien // Clear all Khcn_Api::_()->getDbTable('bai_bao_tac_gia', 'default')->delete(array('bai_bao_id = ?' => $bai_bao->getIdentity())); // Them thanh vien for ($i = 0; $i < $values['code']; $i++) { $row = Khcn_Api::_()->getDbTable('bai_bao_tac_gia', 'default')->createRow(); $row->bai_bao_id = $bai_bao->getIdentity(); $row->giang_vien_id = $values['thanh_vien_' . $i]; $row->save(); } $db->commit(); $_SESSION['msg'] = 'Thành công !. Dữ liệu đã được cập nhật .'; $_SESSION['type_msg'] = 'success'; $this->_redirect('/admin/bai-bao/index'); } catch (Exception $e) { $db->rollBack(); throw $e; } }
public function suaAction() { $de_tai_id = $this->_getParam('id'); $de_tai = Khcn_Api::_()->getItem('default_de_tai', $de_tai_id); $tableDK = Khcn_Api::_()->getDbTable('dang_ky', 'default'); $form = new Admin_Form_DeTai(); $form->removeElement('submitCon'); $form->submitExit->setLabel('Lưu'); $form->cancel->setLabel('Không lưu'); $this->view->form = $form; if (!$this->getRequest()->isPost()) { //populate chủ nhiệm $giang_vien = new Default_Model_GiangVien(); $gvOptions = $giang_vien->getDSGVByDV($de_tai->ma_don_vi); $chu_nhiem = $this->dang_ky->getMaChuNhiemByDT($de_tai_id); $form->chu_nhiem->setMultiOptions($gvOptions)->setValue($chu_nhiem); //populate thành viên $thanhViens = $this->dang_ky->getDSTVByDT($de_tai_id); $code = count($thanhViens); $form->code->setValue($code); $don_vi = new Default_Model_DonVi(); $donVis = $don_vi->getDSDV(); unset($donVis['1']); $dvOptions = array("multiOptions" => $donVis); $i = 0; foreach ($thanhViens as $thanh_vien) { $don_vi = new Zend_Form_Element_Select('don_vi_' . $i, $dvOptions); $don_vi->setValue($thanh_vien['ma_don_vi'])->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => 'don_vi_' . $i, 'onchange' => 'change(this,' . $i . ')')); $giang_vien = new Default_Model_GiangVien(); $gvOptions = array("multiOptions" => $giang_vien->getDSGVByDV($thanh_vien['ma_don_vi'])); $ma_giang_vien = $thanh_vien['ma_giang_vien']; $thanh_vien = new Zend_Form_Element_Select('thanh_vien_' . $i, $gvOptions); $thanh_vien->setRequired(true)->setValue($ma_giang_vien)->setDecorators(Khcn_Form_Decorator_Select::getDecorator())->setAttribs(array('class' => 'text-input', 'id' => 'thanh_vien_' . $i))->setRegisterInArrayValidator(false); $form->addElements(array($don_vi, $thanh_vien)); $form->addDisplayGroup(array('don_vi_' . $i, 'thanh_vien_' . $i), 'dk_tv_' . $i, array('order' => $i + 6, 'legend' => 'Thành viên', 'decorators' => array('FormElements', 'Fieldset', array(array('data' => 'HtmlTag'), array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'td')), array('HtmlTag', array('tag' => 'tr', 'id' => 'dk_tv_' . $i))))); $i++; } $url = new Zend_View_Helper_Url(); if ($de_tai->ma_hd_duyet != null) { $hd_duyet = new Default_Model_Hdd(); $hdd = $hd_duyet->getHDD($de_tai->ma_hd_duyet); $link = $url->url(array('module' => 'admin', 'controller' => 'hoi-dong', 'action' => 'sua-hdd', 'id' => $de_tai->ma_hd_duyet), null, true); $element = new Zend_Form_Element_Text('hdd'); $element->setLabel('Hội đồng duyệt')->setValue($hdd['ma'])->setDescription('<a href="' . $link . '">Xem hội đồng duyệt</a>')->setDecorators(array('ViewHelper', array('Description', array('tag' => 'span', 'escape' => false)), array(array('data' => 'HtmlTag'), array('tag' => 'td')), array('Label', array('tag' => 'td')), array(array('row' => 'HtmlTag'), array('tag' => 'tr'))))->setAttribs(array('class' => 'text-input', 'disabled' => 'disabled'))->setOrder(100); $form->addElement($element); } // Popuate Bo Mon if (!empty($de_tai->bo_mon_id)) { $boMons = Khcn_Api::_()->getDbTable('bo_mon', 'default')->getBoMonByDonViAssoc($de_tai->ma_don_vi); $form->bo_mon_id->setMultiOptions($boMons)->setValue($de_tai->bo_mon_id); } $form->populate($de_tai->toArray()); return; } $form->preValidation($_POST); if (!$form->isValid($this->getRequest()->getPost())) { return; } $ma = trim($form->getValue('ma')); if (!empty($ma)) { if (!Default_Model_Functions::kiem_tra_ma($ma, null, true, 2)) { $_SESSION['msg'] = 'Lỗi !. Mã đề tài không đúng định dạng, vui lòng kiểm tra lại .'; $_SESSION['type_msg'] = 'error'; $this->_redirect('/admin/de-tai'); } if ($this->de_tai->kiem_tra_id_ma($de_tai_id, $ma)) { $_SESSION['msg'] = 'Lỗi !. Mã đề tài đã tồn tại, vui lòng kiểm tra lại .'; $_SESSION['type_msg'] = 'error'; $this->_redirect('/admin/de-tai'); } } $db = Zend_Registry::get('connectDB'); $db->beginTransaction(); try { if ($form->file_tom_tat->getFileName(null, false) != null) { //determine filename and extension $info = pathinfo($form->file_tom_tat->getFileName(null, false)); $filename = $info['filename']; $ext = $info['extension'] ? "." . $info['extension'] : ""; //filter for renaming.. prepend with current time $file_tom_tat = time() . '_' . Default_Model_Functions::convert_vi_to_en($filename) . $ext; $form->file_tom_tat->addFilter(new Zend_Filter_File_Rename(array("target" => $file_tom_tat, "overwrite" => true))); $form->getValue('file_tom_tat'); $de_tai->file_tom_tat = $file_tom_tat; } $values = $form->getValues(); if (empty($values['file_tom_tat'])) { unset($values['file_tom_tat']); } if (empty($values['ngay_gia_han'])) { $values['ngay_gia_han'] = new Zend_Db_Expr('NULL'); } $values['ma'] = $ma; $values['kinh_phi'] = $values['kinh_phi'] != '' ? str_ireplace(',', '', $values['kinh_phi']) : 0; $de_tai->setFromArray($values); $de_tai->save(); $thanhViens = array(); $thanhViens[] = array('giang_vien_id' => $values['chu_nhiem'], 'nhiem_vu' => 1); for ($i = 0; $i < $values['code']; $i++) { $thanhViens[] = array('giang_vien_id' => $values['thanh_vien_' . $i], 'nhiem_vu' => 0); } $tableDK->setChucVu($de_tai_id, $thanhViens); $db->commit(); } catch (Zend_Db_Exception $e) { $db->rollBack(); $_SESSION['msg'] = 'Lỗi !. Đã có lỗi trong quá trình xử lý, vui lòng thử lại .'; $_SESSION['type_msg'] = 'error'; $this->_redirect('/admin/de-tai'); } $_SESSION['msg'] = 'Thành công !. Dữ liệu đã được cập nhật .'; $_SESSION['type_msg'] = 'success'; $this->_redirect('/admin/de-tai'); }