.
*/
include("./include/include.php");
require_once(FILESYSTEMROOTPATH."jc/include/classes/DefaultLayout.php");
require_once(FILESYSTEMROOTPATH."include/list/ListPager.php");
require_once(FILESYSTEMROOTPATH."include/form/AbstractForm.php");
//require_once('./include/model/Proposals.php');
/**
* Helper classes
*/
class TitleSelectForm extends AbstractForm {
private $proposalsService;
public function __construct(Layout $layout, IModel $model,$proposal_id) {
parent::__construct($layout, $model);
}
public function save(IModel $model) {
if ($_POST['form']!='1'){
return;
}
$url = 'create_proposal3.php?proposal_id='.$_POST['proposal_id'].'&order='.$_POST['order'];
$this->layout->redirect($url);
// post to $_SERVER['REQUEST_URI']='create_proposal3.php';
}
}
class NewTitleForm extends AbstractForm {
private $proposals_sentenceService;
private $proposal_id;
public function __construct(Layout $layout, IModel $model, $service, $proposal_id ) {
parent::__construct($layout, $model);
$this->proposals_sentenceService = $service;
$this->proposal_id = $proposal_id;
}
public function save(IModel $model) {
if ($_POST['form']!='2'){
return;
}
if( $this->proposals_sentenceService->saveOrUpdate($model) ) {
$url='create_proposal3.php?proposal_id='.$this->proposal_id.'&order='.$_POST['order'];
$this->layout->redirect($url);
}
else
{
$this->layout->echoln('database error');
}
}
}
class FinalForm extends AbstractForm {
private $proposalsService;
public function __construct(Layout $layout, IModel $model, $service) {
parent::__construct($layout, $model);
$this->proposalsService = $service;
}
public function save(IModel $model) {
if ($_POST['form']!='3'){
return;
}
$model->setStatus('Submitted');
$model->setSubmit_date(date('Y-m-d H:i:s'));
if ($this->proposalsService->saveOrUpdate($model)){
$url = 'create_proposal0.php';
$this->layout->redirect($url);
}
else{
$this->layout->echoln('Failed to submit');
}
}
}
/**
* End of helper classes
*/
$proposals_sentencesService = $GLOBALS['ClassFactory']->getProposals_sentencesService();
$proposalsService = $GLOBALS['ClassFactory']->getProposalsService();
$ciaService = $GLOBALS['ClassFactory']->getCIAService();
$agoraService = $GLOBALS['ClassFactory']->getAgoraeService();
$agoraeService = $GLOBALS['ClassFactory']->getAgoraeService();
$last_agora = $agoraeService->getLatestAgora();
$layout = new DefaultLayout(Access::VISITOR, "./jc/");
$layout->init();
// GET proposal_id
$proposal_id = $_GET['proposal_id'];
$proposal = $proposalsService->load($proposal_id);
if(isset( $_SESSION['sess_access_bodyCodes']['XJU']['JC_MANAGE'] )) {//JC can edit someone else's proposal
/*if(time() > (strtotime($last_agora->getA_open())-60*60*24*7*2)) {//two weeks before the agora
$layout->echoln('Even JC cannot edit after two weeks before the Agora');
$layout->page_footer();
exit(0);
}*/
}elseif ($proposal->getProposer_Uid() != $_SESSION['sess_uid']){
$layout->echoln('This proposal does not belong to you!');
$layout->page_footer();
exit(0);
}elseif($proposal->getStatus()!='Saved' && $proposal->getStatus()!='Changes Required'){
$layout->redirect('view_proposal2.php?proposal_id='.$proposal_id);
}
if(isset( $_SESSION['sess_access_bodyCodes']['XJU']['JC_MANAGE'] ) AND $proposal->getProposer_Uid() != $_SESSION['sess_uid']) $layout->echoln($layout->jcwarning);
//view affected titles for this proposal
$data = $proposals_sentencesService->loadTitlesByProposalId($proposal_id, true);
$layout->echoln('Back
');
$layout->echoln('Sections affected by this proposal');
$pager = new ListPager("Changes");
$pager->addColumn(new TextColumn("title", "Title"));
$pager->addColumn(new TextColumn("category", "Category"));
$pager->addColumn(new TextColumn("view", "View"));
$pager->addColumn(new TextColumn("edit", "Edit"));
$pager->addColumn(new TextColumn("delete", "Delete"));
$layout->echoln($pager->display($data));
//final submission
$layout->echoln('
Final Submission
');
$aid = $proposal->getAgora_id();
$agora = $agoraService->load($aid);
$open = $agora->getOpen();
$close = $agora->getClose();
$resubmit = $agora->getChanges_deadline();
$layout->echoln('Period for submitting proposals: '.$open.' - '.$close.'
');
$today = date('Y-m-d');
$time = date('H:i:s');
$layout->echoln('Now is '.$today.' '.$time.' (CET Time)
');
$canSubmit = false;
if ((strtotime($open) <= strtotime($today)) && (strtotime($close) >= strtotime($today))){
$canSubmit = true;
}
elseif(isset( $_SESSION['sess_access_bodyCodes']['XJU']['JC_MANAGE'] )){
$layout->echoln('JC can always submit:p
');
$canSubmit = true;
}
elseif(($proposal->getStatus()=='Changes Required') && (strtotime($today) <= strtotime($resubmit))){
$layout->echoln('Deadline to resubmit your proposal: '.$resubmit.'
');
$canSubmit = true;
}
if ($canSubmit){
$fform = new FinalForm($layout, $proposal, $proposalsService);
$fform->addHiddenField(new HiddenField('form','3'));
$fform->setSubmitText('Final Submision');
$fform->display();
}
else{
$layout->echoln('You cannot submit a proposal now');
}
$layout->echoln('
');
//add new section
$layout->echoln('Add more changes in the proposal
');
$titles = $ciaService->loadTitles();
$titleSelectForm = new TitleSelectForm($layout, new Proposals_sentences(''),$proposal_id);
$titlesField = new SelectField('order','Title',$titles);
$titleSelectForm->addField($titlesField);
$titleSelectForm->addHiddenField(new HiddenField('proposal_id',$proposal_id));
$titleSelectForm->addHiddenField(new HiddenField('form','1'));
$titleSelectForm->setSubmitText('Add');
$titleSelectForm->display();
$layout->echoln('Note: in the next page save at least a change in order to include this section');
$layout->echoln('
');
//create new section
$last_order = $proposals_sentencesService->getNextOrder();
$first_sentence = new Proposals_sentences('');
$first_sentence->setSentence_id(-1);
$first_sentence->setLast_change(' ');
$first_sentence->setArticle(1);
$first_sentence->setArticle_title(' ');
$first_sentence->setParagraph(1);
$first_sentence->setSentence(1);
$first_sentence->setSentence_text(' ');
$first_sentence->setAgora_id_start(0);
$first_sentence->setAgora_id_end(0);
$first_sentence->setProposal_id($proposal_id);
$first_sentence->setChange_type('Edit');
$first_sentence->setOrder($last_order);
$layout->echoln('Create new title
');
$form = new NewTitleForm($layout, $first_sentence , $proposals_sentencesService, $proposal_id);
$field1 = new TextField('title','Title');
$field2 = new SelectField('category','Category',$ciaService->getCategories());
$field3 = new HiddenField('order',$last_order);
$form->addField($field1);
$form->addField($field2);
$form->addHiddenField(new HiddenField('proposal_id',$proposal_id));
$form->addHiddenField($field3);
$form->addHiddenField(new HiddenField('form','2'));
$form->display();
$layout->echoln('Note: in the next page save at least a change in order to include this section');
$layout->page_footer();
?>