. */ include("./include/include.php"); require_once(FILESYSTEMROOTPATH."jc/include/classes/DefaultLayout.php"); require_once(FILESYSTEMROOTPATH."include/form/AbstractForm.php"); /** * Helper classes */ class AmendForm extends AbstractForm { private $aService; private $type; private $original; public function __construct(Layout $layout, IModel $model, AmendmentsService $aService, $type) { parent::__construct($layout, $model); $this->aService = $aService; $this->type = $type; $this->original = new Amendments(''); $this->original->copy($model); } public function save(IModel $model) { $psService = $GLOBALS['ClassFactory']->getProposals_sentencesService(); $ps = $psService->load($model->getProposals_sentence_id()); $this->original = $ps; $types = $this->changes($model); foreach($types as $type){ $setter1='set'.ucfirst($type).'_status'; $model->$setter1('Edit'); $ps->$setter1('Edit'); //for display reasons } $psService->saveOrUpdate($ps); if( $this->aService->saveOrUpdate($model) ) { $url = $this->type.'4.php?proposal_id='.$model->getProposal_id().'&order='.$model->getOrder(); $this->layout->redirect($url); }else { $this->layout->echoln("Failed saving."); } } private function changes($model){ $changes = array(); if ($this->original->getTitle() != $model->getTitle()){ $changes[] = 'title'; } if (($this->original->getTitle2() != $model->getTitle2())||($this->original->getOrder2() != $model->getOrder2())){ $changes[] = 'title2'; } if (($this->original->getArticle_title() != $model->getArticle_title())||($this->original->getArticle() != $model->getArticle())){ $changes[] = 'article_title'; } if ($this->original->getParagraph() != $model->getParagraph()){ $changes[] = 'paragraph'; } return $changes; } } /** * End of helper classes */ $layout = new DefaultLayout("JC_MANAGE", "./jc/"); $layout->init(); //$pmService = $GLOBALS['ClassFactory']->getProposals_managementService(); $aService = $GLOBALS['ClassFactory']->getAmendmentsService(); $type = $_GET['type']; $proposal_id=$_GET['pid']; $psid=$_GET['psid']; $sid=$_GET['sid']; if (isset($_GET['aid'])){ $aid = $_GET['aid'];} else{ $aid = NULL; } //Only one amendment object per sentece, no "history" if ($aid != NULL){ $amendment = $aService->load($aid); //Edit! /* //don't edit, create new object, with previous text $amendment->setId(''); $amendment->setStatus(''); $amendment->setProposer_uid(''); */ if($amendment->getChange_type()=='Delete'){ $amendment->setChange_type('Edit'); } }else{ $psService = $GLOBALS['ClassFactory']->getProposals_sentencesService(); if($psid != NULL){ $ps = $psService->load($psid); } else{ if(isset($_POST['proposals_sentence_id'])){ $psid = $_POST['proposals_sentence_id']; $ps = $psService->load($psid); } else{ //amend not edited sentence //create proposals_sentence with original text $ciaService = $GLOBALS['ClassFactory']->getCIAService(); $sentence = $ciaService->load($sid); $ps = new Proposals_sentences(''); $ps->setId(''); $ps->copy_from_cia_array($sentence); $ps->setProposal_id($proposal_id); $ps->setChange_type('Edit'); $psService->saveOrUpdate($ps); //get last inserted id $ps->setId($psService->get_last_id()); $psid = $ps->getId(); } } //create amendment object $amendment = new Amendments(''); $amendment->copy($ps); } $url = $type.'4.php?proposal_id='.$amendment->getProposal_id().'&order='.$amendment->getOrder(); $layout->echoln("Back
"); //display form $amendment->setSession_type(ucfirst($type)); $amendment->setStatus('Accept'); $amendment->setProposer_uid('-'); if(isset($_GET['del'])){ $amendment->setSentence_text(''); $amendment->setChange_type('Delete'); } $form = new AmendForm($layout, $amendment, $aService, $type); //$proposer_uid = new TextField('proposer_uid', 'Proposer UID'); $session = new TextField('session_type', 'Session'); $session->setClass('disabled'); //$status = new SelectField('status','Accepted by Proposer',array('Accept'=>'Accept','Reject'=>'Reject')); $text = new TextAreaField('sentence_text', 'Text',2,70); //$form->addField($proposer_uid->setCompulsory(true)); $form->addField($session->setCompulsory(true)); //$form->addField($status->setCompulsory(true)); if(isset($_GET['header'])){ //if art=1,para=1, sent=1 $f1 = new TextField('title', 'Title'); //if para=1, sent=1 $f21 = new TextField('order2','Part Number'); $f2 = new TextField('title2', 'Part Title'); $f31 = new TextField('article','Article Number'); $f3 = new TextField('article_title', 'Article Tile'); $f4 = new TextField('paragraph', 'Paragraph ('.$amendment->getParagraph().')'); $form->addField($f1); $form->addField($f21); $form->addField($f2); $form->addField($f31); $form->addField($f3); $form->addField($f4); $layout->echoln('(Warning: In order changes to be visible, this must be the first sentence after the header)
'); } $form->addField($text); $form->addHiddenField(new Hiddenfield('proposals_sentence_id',$amendment->getProposals_sentence_id())); $form->display(); $link = '.php?type='.$type.'&pid='.$proposal_id.'&psid='.$psid.'&sid='.$sid.'&aid='.$aid; $layout->echoln('Special Actions: Edit Headers'); if($amendment->getChange_type()=='New_v'){ $layout->echoln(' | New ^'); }else{ $layout->echoln(' | New ^'); } if($amendment->getChange_type()=='New_^'){ $layout->echoln(' | New v'); }else{ $layout->echoln(' | New v'); } $layout->echoln(' | Delete'); $layout->echoln('

Warning: After inserting a new sentence or deleting one, numbering (sentence number) will appear incosistent. It will be fixed automatically later, you can ignore it. Use "Edit Headers" if you want to edit article titles or if a sentence should belong to a new part/article/paragraph.'); $layout->page_footer(); ?>