<?php /** * Copyright 2009, 2010 AEGEE-Europe * * This file is part of AEGEE-Europe Online Membership System. * * AEGEE-Europe Online Membership System is free software: you can * redistribute it and/or modify it under the terms of the GNU General * Public License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version. * * AEGEE-Europe Online Membership System is distributed in the hope * that it will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AEGEE-Europe Online Membership System. If not, see * <http://www.gnu.org/licenses/>. */ include("./include/include.php"); require_once(FILESYSTEMROOTPATH."jc/include/classes/DefaultLayout.php"); require_once(FILESYSTEMROOTPATH."include/form/AbstractForm.php"); /** * Helper classes */ class Proposals_sentencesForm extends AbstractForm { private $proposals_sentencesService; private $lines; public function __construct(Layout $layout, IModel $model, Proposals_sentencesService $proposals_sentencesService, $lines) { parent::__construct($layout, $model); $this->proposals_sentencesService = $proposals_sentencesService; $this->lines = $lines; } public function save(IModel $model) { if($_POST['form'] != $this->lines){ return; } if( $this->proposals_sentencesService->saveOrUpdate($model) ) { //redirect here! $url='review_proposal3.php?proposal_id='.$model->getProposal_id().'&order='.$model->getOrder(); $this->layout->redirect($url); }else { $this->layout->echoln('DB Error!!!'); } } } /** * End of helper classes */ function headers($current, $previous, $lines, $layout, $original){ $diff = false; if($current->getId() != ''){ $diff = true; } if ( $current->getOrder2() != $previous->getOrder2() || $current->getTitle2_status()!= $previous->getTitle2_status()) { //we have moved to next 'title2' section $layout->echoln('<tr><br /><td><h3>'.$original['title2'].'</h3></td><td>'); if ($diff) { $layout->echoln('<br /><h3><script>document.write(diffStringColour(\''.$current->getTitle2().'\', \''.$original['title2'].'\'));</h3></script>'); } $layout->echoln('</td></tr>'); $lines++; $layout->echoln('<tr><td><br /><b>Article '.$original['article'].': '.$original['article_title'].'</b></td><td>'); if ($diff) { $layout->echoln('<b>Article <script>document.write(diffStringColour(\''.$original['article'].'\', \''.$current->getArticle().'\'));</script>: '); $layout->echoln('<script>document.write(diffStringColour(\''.$original['article_title'].'\', \''.$current->getArticle_title().'\'));</script></b>'); } $layout->echoln('</td></tr>'); $lines++; $layout->echoln('<tr><td><br />('.$original['paragraph'].')</td><td>'); if ($diff) { $layout->echoln('(<script>document.write(diffStringColour(\''.$original['paragraph'].'\', \''.$current->getParagraph().'\'));</script>)'); } $layout->echoln('</td></tr>'); $lines++; } elseif ( $current->getArticle() != $previous->getArticle() || $current->getArticle_Title_status()!= $previous->getArticle_Title_status()) { //we have moved to next article $layout->echoln('<tr><td><br /><b>Article '.$original['article'].': '.$original['article_title'].'</b></td><td>'); if ($diff) { $layout->echoln('<b>Article <script>document.write(diffStringColour(\''.$original['article'].'\', \''.$current->getArticle().'\'));</script>: '); $layout->echoln('<script>document.write(diffStringColour(\''.$original['article_title'].'\', \''.$current->getArticle_title().'\'));</script></b>'); } $layout->echoln('</td></tr>'); $lines++; $layout->echoln('<tr><td><br />('.$original['paragraph'].')</td><td>'); if ($diff) { $layout->echoln('(<script>document.write(diffStringColour(\''.$original['paragraph'].'\', \''.$current->getParagraph().'\'));</script>)'); } $layout->echoln('</td></tr>'); $lines++; } elseif ($current->getParagraph() != $previous->getParagraph() || $current->getParagraph_status()!= $previous->getParagraph_status()) { //we have moved to next paragraph $layout->echoln('<tr><td><br />('.$original['paragraph'].')</td><td>'); if ($diff) { $layout->echoln('(<script>document.write(diffStringColour(\''.$original['paragraph'].'\', \''.$current->getParagraph().'\'));</script>)'); } $layout->echoln('</td></tr>'); $lines++; } return $lines; } function Area($layout, $model, $service, $lines, $original, $previous){ $lines = headers($model, $previous, $lines, $layout, $original); $layout->echoln('<tr><td><sup>'.$original['sentence'].'</sup>'.nl2br($original['sentence_text']).'</td><td>'); if ($model->getId() != ''){ $layout->echoln('<sup><script>document.write(diffStringColour(\''.$original['sentence'].'\', \''.$model->getSentence().'\'));</script></sup> '); $layout->echoln('<script>document.write(diffStringColour(\''.preg_replace('/(\r\n|\n|\r)/','<br/>',$original['sentence_text']).'\', \''.preg_replace('/(\r\n|\n|\r)/','<br/>',$model->getSentence_text()).'\'));</script>'); if($model->getJc_comment() != ''){ $style = 'block'; }else{ $style = 'none'; } $layout->echoln('</td></tr><tr><td></td><td ><u onclick="toggle_area(\''.$lines.'\');">Comment</u><span id="'.$lines.'" style="display:'.$style.'">'); $form = new Proposals_sentencesForm($layout,$model,$service,$lines); $comment = new TextAreaField('jc_comment','' ,2,50); $form->addField($comment); $form->addHiddenField(new HiddenField('form',$lines)); $form->display(); $lines++; } $layout->echoln('</span></td></tr>'); $lines++; return $lines; } /** * End functions */ $layout = new DefaultLayout("JC_MANAGE", "./jc/"); $layout->init(); $layout->addJavascript('js/visibility.js'); $layout->addJavascript('js/text_diff.js'); $proposals_sentencesService = $GLOBALS['ClassFactory']->getProposals_sentencesService(); $ciaService = $GLOBALS['ClassFactory']->getCIAService(); $proposalsService = $GLOBALS['ClassFactory']->getProposalsService(); $proposal_id = $_GET['proposal_id']; $order = $_GET['order']; $proposal = $proposalsService->load($proposal_id); if($proposal->getStatus()=='Saved'){ $layout->redirect('review_proposal1.php?agora_id='.$proposal->getAgora_id()); } $layout->echoln('If you want to make a comment, press "comment" and after writing it press "Save". When finished, go '); $layout->echoln('<a href="review_proposal2.php?proposal_id='.$proposal_id.'">Back</a><br />'); //load original senteces of this title $sentences = $ciaService->loadByTitleOrder($order); //if a new title is created if ($sentences==NULL) { $layout->echoln('<br /><b>New Section</b><br />'); $sentence = new CIA('') ; foreach($proposals_sentences as $ps){ $cat= $ps['category']; break; } $sentence=array( 'id'=>'-1', 'category'=>$cat, 'title'=>' ', 'order'=>$order, 'last_change'=>' ', 'title2'=>'', 'order2'=>'', 'article'=>'1', 'article_title'=>' ', 'paragraph'=>'1', 'sentence'=>'1', 'sentence_text'=>' ', 'agora_id_start'=>'0', 'agora_id_end'=>'0', ); $sentences[] = $sentence; } //load changes for this title $proposals_sentences = $proposals_sentencesService->loadByProposalId_Order($proposal_id, $order); //display cia+changes like editor, but: original-difference only text. //forms: jc_comment after each change $layout->echoln('<table><tr><th width="50%">Original</th><th width="50%">Changes</th></tr>'); //display title foreach ($sentences as $sentence) { //check if modified version exists $ps = NULL; foreach ($proposals_sentences as $prs){ if($prs['sentence_id'] == $sentence['id']){ $ps = $prs; break; } } $layout->echoln('<tr><td><h3>'.$sentence['title'].'</h3></td><td>'); if ($ps !=NULL){ $layout->echoln('<script>document.write(diffStringColour(\''.$sentence['title'].'\', \''.$ps['title'].'\'));</script>'); } $layout->echoln('</td></tr>'); break; } $empty= new Proposals_sentences(''); $previous = $empty; $lines = 2; foreach ($sentences as $sentence) { //check if edited text exists $later = array(); $modified = NULL; foreach($proposals_sentences as $prop_s){ if ($prop_s['sentence_id'] == $sentence['id']){ //an edited version of this sentence exists //simple edited text if($prop_s['change_type']=='Edit'){ $modified = new Proposals_sentences($prop_s); } elseif($prop_s['change_type']=='Delete'){ $modified = new Proposals_sentences($prop_s); } elseif($prop_s['change_type']=='New_^'){ //display the inserted sentence $ps = new Proposals_sentences($prop_s); $empty_array = $sentence; $empty_array['sentence']=''; $empty_array['sentence_text']=''; $lines = Area($layout, $ps, $proposals_sentencesService, $lines, $empty_array, $previous); $previous = $ps; } elseif($prop_s['change_type']=='New_v'){ //display later $later []=$prop_s; } } } if ($modified!=NULL){ //$i++; $lines = Area($layout, $modified, $proposals_sentencesService, $lines, $sentence, $previous); $previous = $modified; } else{ //display original cia sentence $ps = new Proposals_sentences(''); $ps->copy_from_cia_array($sentence); $ps->setProposal_id($proposal_id); $ps->setChange_type('Edit'); $lines = Area($layout, $ps, $proposals_sentencesService, $lines, $sentence, $previous); $previous = $ps; } foreach($later as $later_s){ //display the inserted sentence // $ps = new Proposals_sentences($later_s); $empty_array = $sentence; $empty_array['sentence']=''; $empty_array['sentence_text']=''; $lines = Area($layout, $ps, $proposals_sentencesService, $lines, $empty_array, $previous); $previous = $ps; } } $layout->echoln('<table><br />'); $layout->page_footer(); ?>