. */ /** * This file includes helper classes and functions for CIA Editor (create_proposal3.php) */ include(FILESYSTEMROOTPATH.'jc/include/classes/AbstractForm2.php'); class ProposalsForm extends AbstractForm2 { private $proposals_sentencesService; private $ciaService; private $url; public function __construct(Layout $layout, IModel $model, $name, $proposals_sentencesService , $url, $ciaService) { parent::__construct($layout, $model, $name, array("Save", "Reset","Delete","New ^", "New v" )); $this->proposals_sentencesService = $proposals_sentencesService; $this->ciaService = $ciaService; $this->url = $url; } public function save(IModel $model) { //in AbstractForm2->diplay is checked if this this form is submitted or not if (isset($_POST['Save'])){ //$this->layout->echoln(var_dump($model)); if( isset($_POST['header'])){ // header change $this->proposals_sentencesService->saveHeader($model,$_POST['header']); } else{ //$model->setChange_type('Edit'); if is del-> can't save. if new: remains new if( $this->proposals_sentencesService->saveOrUpdate($model) ) { //ok }else { $this->layout->echoln("Failed saving Proposal."); return; } } } elseif (isset($_POST['Reset'])){ if ($model->getId()!= NULL){ //reset was pressed on an edited item if(isset($_POST['header'])){ if ($model->getChange_type()=='New_^' || $model->getChange_type()=='New_v'){ //if new, we empty the text. we could delete, but it can be done with 'delete' if ($_POST['header'] == 'paragraph'){ return; } $setter = 'set'.ucfirst($_POST['header']); $model->$setter(''); $this->proposals_sentencesService->saveOrUpdate($model); return; } $original = $this->ciaService->load($model->getSentence_id()); $this->proposals_sentencesService->resetHeader($model, $_POST['header'], $original) ; } else{ if ($model->getChange_type()!='Edit'){ // Delete || New ^ || New v $this->proposals_sentencesService->undo_number($model); } if ($model->getChange_type()=='Edit' || $model->getChange_type()=='Delete'){ $original = $this->ciaService->load($model->getSentence_id()); $model->setSentence_text($original['sentence_text']); if ($model->ismodified(new CIA($original)) ){ $this->proposals_sentencesService->saveOrUpdate($model); } else{ $this->proposals_sentencesService->delete($model->getId()); } } else{ //New ^ || New v $this->proposals_sentencesService->delete($model->getId()); } //no error message } } // else 'reset' pressed on non-edited item } elseif (isset($_POST['Delete'])){ if(isset($_POST['header'])){ $this->proposals_sentencesService->deleteHeader($model,$_POST['header']); } else{ if ($model->getChange_type()=='New_^' || $model->getChange_type()=='New_v'){ $model->setChange_type('Delete'); $this->proposals_sentencesService->renumber($model); $this->proposals_sentencesService->delete($model->getId()); } else $model->setChange_type('Delete'); $model->setSentence_text(''); $this->proposals_sentencesService->renumber($model); if( $this->proposals_sentencesService->saveOrUpdate($model) ) { //ok } //no error action } } elseif (isset($_POST['New_^'])){ if(isset($_POST['header'])){ $this->proposals_sentencesService->header_before($model, $_POST['header']); } else{ //insert before $new_model = new Proposals_sentences(''); $new_model->copy_from_cia($model); //to copy headers from previous sentence $new_model->setProposal_id($model->getProposal_id()); $new_model->setSentence_text(''); $new_model->setSentence_id($model->getSentence_id()); $new_model->setChange_type('New_^'); $new_model->setId(''); $this->proposals_sentencesService->renumber($new_model); if( $this->proposals_sentencesService->saveOrUpdate($new_model) ) { //empty sentence created } } } elseif (isset($_POST['New_v'])){ //insert after if(isset($_POST['header'])){ $this->proposals_sentencesService->header_after($model, $_POST['header']); } else{ $new_model = new Proposals_sentences(''); $new_model->copy_from_cia($model); //to copy headers from previous sentence $new_model->setProposal_id($model->getProposal_id()); $new_model->setSentence_text(''); $new_model->setChange_type('New_v'); $new_model->setSentence_id($model->getSentence_id()); $new_model->setId(''); $new_model->setSentence($new_model->getSentence()+1); $this->proposals_sentencesService->renumber($new_model); if( $this->proposals_sentencesService->saveOrUpdate($new_model) ) { //empty sentence created } } } //reload all page //set focus in posted form $fform = $_POST['form']; if(isset($_POST['header'])){ $ffield = $_POST['header']; }else{ $ffield = 'sentence_text'; } //if para button pressed, move to text below it if($ffield =='paragraph'){ $fform = 'id'.(1+substr($_POST['form'],2)); $ffield = 'sentence_text'; } $this->url .= '&fform='.$fform.'&ffield='.$ffield; $this->layout->redirect($this->url); } } class TextField_onkeyup extends TextField { var $onkeyup; var $id; var $style; public function __construct($name, $title, $size=-1, $id, $onkeyup, $style) { parent::__construct($name, $title); $this->size = $size; $this->onkeyup=$onkeyup; $this->id=$id; $this->style=$style; } public function getField() { return "id."\" name=\"".$this->name."\" ".($this->size>0?" size=\"".$this->size."\"":"")." value=\"".$this->value."\"".($this->class!=NULL?" class=\"".$this->class."\"":"").($this->readonly?" readonly":"")." onkeyup=\"".$this->onkeyup."\" style=\"".$this->style."\" onclick=\"show_area('".$this->id."_buttons')\">"; } } class TextArea_onkeyup extends TextAreaField { var $onkeyup; var $id; public function __construct($name, $title, $rows=2, $columns=80, $id, $onkeyup) { parent::__construct($name, $title, $rows, $columns); $this->onkeyup=$onkeyup; $this->id=$id; } public function getField() { return ""; } } /** * End of helper classes */ /** * functions */ function Area($layout, $model, $psService, $ciaService, $lines, $original, $previous, $show_comments){ $lines = headers($model, $previous, $lines, $layout, $psService, $ciaService, $original); $form = new Proposalsform($layout, $model, 'id'.$lines, $psService,'create_proposal3.php?proposal_id='.$model->getProposal_id().'&order='.$model->getOrder(), $ciaService); $form->setResetText('Cancel'); $field = new TextArea_onkeyup('sentence_text', $model->getSentence(), 2, 80, 'id'.$lines.'1', 'displayTextDiff(\''.$model->getSentence_text().'\', \'id'.$lines.'1\', \'id'.$lines.'2\')'); $ordered = array("\r\n", "\n", "\r"); $replace = '
'; //set correct buttons if($model->getChange_type()=='Delete'){ $field->setReadOnly(true); $field->setClass('disabled'); $form->setButtons(array('Reset')); $form->setResetText(''); }elseif($model->getChange_type()=='New_^'){ $form->setButtons(array('Save','Reset', 'Delete', 'New ^')); }elseif($model->getChange_type()=='New_v'){ $form->setButtons(array('Save','Reset', 'Delete', 'New v')); } $form->addField($field); $form->addHiddenField(new HiddenField('form','id'.$lines)); $form->addHiddenField(new HiddenField('order',$model->getOrder())); $form->addHiddenField(new HiddenField('proposal_id',$model->getProposal_id())); $layout->echoln(''); $form->display(); $layout->echoln(''); if($original!=NULL){ $layout->echoln(' '); $layout->echoln(''); } $layout->echoln(''); $lines++; if($show_comments && $model->getJc_comment()!=''){ $layout->echoln('JC Comment:'.$model->getJc_comment().''); //no need to count a line, no form in this line } return $lines; } //form to edit header items [title, title2, article, paragraph] function Field($layout, $model, $psService, $ciaService, $lines, $name, $original){ $form = new Proposalsform($layout, $model, 'id'.$lines, $psService,'create_proposal3.php?proposal_id='.$model->getProposal_id().'&order='.$model->getOrder(),$ciaService); $form->setResetText('Cancel'); $getter='get'.ucfirst($name); $getter2 = $getter.'_status'; if($original == NULL){ $original['article'] = $model->getArticle(); $original['paragraph'] = $model->getParagraph(); } //set buttons if($name == 'title'){ $style = 'font-size:large;font-weight:bold;'; $title = 'Title '; $form->setButtons(array('Save','Reset', 'Delete')); $diff = ''; } elseif($name == 'title2'){ $style = 'font-size:large;font-weight:bold;'; $title = '
Title2 '; $diff = '
'; } elseif($name == 'article_title'){ $style = 'font-weight:bold;'; $title = '
Article '.$model->getArticle().':'; $diff = '
Article '.php_diff($original['article'] ,$model->getArticle()).':'; } elseif($name == 'paragraph'){ $style = 'display:none;'; $title = 'Paragraph ('.$model->getParagraph().')'; $diff = 'Paragraph ('; $form->setButtons(array('Delete', 'New ^', 'New v')); $form->setResetText(''); } $field = new TextField_onkeyup($name, $title, 40, 'id'.$lines.'1', 'displayTextDiff(\''.$model->$getter().'\', \'id'.$lines.'1\', \'id'.$lines.'2\')',$style); if($model->$getter2()=='Delete'){ $field->setReadOnly(true); $field->setClass('disabled'); $form->setButtons(array('Reset')); $form->setResetText(''); $diff .= php_diff($original[$name], '').''; }elseif($model->$getter2()=='New_^'){ $form->unsetButton('New v'); $diff .= php_diff('', $model->$getter()).'
'; }elseif($model->$getter2()=='New_v'){ $form->unsetButton('New ^'); $diff .= php_diff('', $model->$getter()).'
'; }elseif($model->$getter2()=='Edit'){ $old=$original[$name]; $diff .= php_diff($original[$name], $model->$getter()).''; //$diff = $title.' '; }else{ //no change $diff = ''; } if($name == 'paragraph'){ $field->setReadOnly(true); $field->setClass('disabled'); if ($diff!=''){ $diff .= ')'; } } $form->addField($field); $form->addHiddenField(new HiddenField('form','id'.$lines)); $form->addHiddenField(new HiddenField('order',$model->getOrder())); $form->addHiddenField(new HiddenField('proposal_id',$model->getProposal_id())); $form->addHiddenField(new HiddenField('header',$name)); $layout->echoln(''); $form->display(); $layout->echoln(''.$diff.''); } function headers($current, $previous, $lines, $layout, $proposals_sentencesService, $ciaService, $original){ // if this item has different number than its previous, we have moved to next section //status check: if an item is deleted, its next has same number! if ( $current->getOrder2() != $previous->getOrder2() || $current->getTitle2_status()!= $previous->getTitle2_status()) { $header = new Proposals_sentences(''); $header->copy($current); //we have moved to next 'title2' section Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "title2", $original); $lines++; //we have moved to next article Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "article_title" ,$original); $lines++; //we have moved to next paragraph Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "paragraph", $original); $lines++; } elseif ( $current->getArticle() != $previous->getArticle() || $current->getArticle_title() != $previous->getArticle_title() || $current->getArticle_Title_status()!= $previous->getArticle_Title_status()) { $header = new Proposals_sentences(''); $header->copy($current); //we have moved to next article Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "article_title", $original); $lines++; //we have moved to next paragraph Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "paragraph", $original); $lines++; } elseif ($current->getParagraph() != $previous->getParagraph() || $current->getParagraph_status()!= $previous->getParagraph_status()) { $header = new Proposals_sentences(''); $header->copy($current); //we have moved to next paragraph Field($layout, $header, $proposals_sentencesService, $ciaService , $lines, "paragraph", $original); $lines++; } return $lines; } function php_diff($old, $new){ return ''; } /** * end of functions */ ?>