.
*/
/**
* 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('