Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/gradebook/lib/fe/scoredisplayform.class.php

146 lines
6.6 KiB

<?php
/*
==============================================================================
Dokeos - elearning and course management software
Copyright (c) 2008 Dokeos Latinoamerica SAC
Copyright (c) 2006 Dokeos SPRL
Copyright (c) 2006 Ghent University (UGent)
Copyright (c) various contributors
For a full list of contributors, see "credits.txt".
The full license can be read in "license.txt".
This program 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 2
of the License, or (at your option) any later version.
See the GNU General Public License for more details.
Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
Mail: info@dokeos.com
==============================================================================
*/
require_once (dirname(__FILE__).'/../../../inc/global.inc.php');
require_once (dirname(__FILE__).'/../gradebook_functions.inc.php');
require_once (api_get_path(LIBRARY_PATH) . 'groupmanager.lib.php');
require_once (api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php');
/**
* Form for the score display dialog
* @author Stijn Konings
* @author Bert Stepp<EFBFBD>
* @package dokeos.gradebook
*/
class ScoreDisplayForm extends FormValidator
{
function ScoreDisplayForm($form_name, $action= null) {
parent :: __construct($form_name, 'post', $action);
$displayscore= ScoreDisplay :: instance();
$customdisplays= $displayscore->get_custom_score_display_settings();
$nr_items =(count($customdisplays)!='0')?count($customdisplays):'1';
$this->setDefaults(array (
'enablescorecolor' => $displayscore->is_coloring_enabled(),
'scorecolpercent' => $displayscore->get_color_split_value(),
'enablescore' => $displayscore->is_custom(),
'includeupperlimit' => $displayscore->is_upperlimit_included()
));
$this->addElement('hidden', 'maxvalue', '100');
$this->addElement('hidden', 'minvalue', '0');
$counter= 1;
//setting the default values
if(is_array($customdisplays)) {
foreach ($customdisplays as $customdisplay) {
$this->setDefaults(array (
'endscore[' . $counter . ']' => $customdisplay['score'],
'displaytext[' . $counter . ']' => $customdisplay['display']
));
$counter++;
}
}
$scorecol= array ();
//settings for the colored score
$this->addElement('header', '', get_lang('ScoreEdit'));
$this->addElement('html', '<b>' . get_lang('ScoreColor') . '</b>');
$renderer = $this->defaultRenderer();
$elementTemplateColor = '<div class="row">
<div class="label">
<!-- BEGIN required --><span class="form_required">*</span> <!-- END required -->{label}
</div>
<div class="formw">
<!-- BEGIN error --><span class="form_error">{error}</span><br /><!-- END error --> '.get_lang('Below').'&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp{element} % '.get_lang('WillColorRed').'
</div>
</div>';
$this->AddElement('checkbox', 'enablescorecolor', null, get_lang('EnableScoreColor'), null);
$this->AddElement('text', 'scorecolpercent', null, array (
'size' => 5,
'maxlength' => 5
));
$renderer->setElementTemplate($elementTemplateColor,'scorecolpercent');
$this->addRule('scorecolpercent', get_lang('OnlyNumbers'), 'numeric');
$this->addRule(array('scorecolpercent','maxvalue'), get_lang('Over100'), 'compare', '<=');
$this->addRule(array('scorecolpercent','minvalue'), get_lang('UnderMin'), 'compare', '>');
//settings for the scoring system
$this->addElement('html', '<br /><b>' . get_lang('ScoringSystem') . '</b>');
$this->addElement('checkbox', 'enablescore', null, get_lang('EnableScoringSystem'), null);
if ($displayscore->is_custom()) {
$this->addElement('checkbox', 'includeupperlimit', null, get_lang('IncludeUpperLimit'), null);
$this->addElement('static', null, null, get_lang('ScoreInfo'));
$scorenull[]= & $this->CreateElement('static', null, null, get_lang('Between'));
$this->setDefaults(array (
'beginscore' => '0'
));
$scorenull[]= & $this->CreateElement('text', 'beginscore', null, array (
'size' => 5,
'maxlength' => 5,
'disabled' => 'disabled'
));
$scorenull[]= & $this->CreateElement('static', null, null, ' %');
$this->addGroup($scorenull, '', '', ' ');
for ($counter= 1; $counter <= 20; $counter++) {
$renderer =& $this->defaultRenderer();
$elementTemplateTwoLabel =
'<div id=' . $counter . ' style="display: '.(($counter<=$nr_items)?'inline':'none').';" class="row">
<p><!-- BEGIN required --><span class="form_required">*</span> <!-- END required -->{label}
<div class="formw"><!-- BEGIN error --><span class="form_error">{error}</span><br /><!-- END error --> <b>'.get_lang('And').'</b>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp{element} % =';
$elementTemplateTwoLabel2 =
'<!-- BEGIN error --><span class="form_error">{error}</span><br /><!-- END error -->&nbsp{element}
<a href="javascript:minItem(' . ($counter) . ')"><img style="display: '.(($counter>=$nr_items && $counter!=1)?'inline':'none').';" id="min-' . $counter . '" src="../img/gradebook_remove.gif" alt="'.get_lang('Delete').'" title="'.get_lang('Delete').'"></img></a>
<a href="javascript:plusItem(' . ($counter+1) . ')"><img style="display: '.(($counter>=$nr_items)?'inline':'none').';" id="plus-' . ($counter+1) . '" src="../img/gradebook_add.gif" alt="'.get_lang('Add').'" title="'.get_lang('Add').'"></img></a>
</div></p></div>';
$scorebetw= array ();
$this->AddElement('text', 'endscore[' . $counter . ']', null, array (
'size' => 5,
'maxlength' => 5,
'id' => 'txta-'.$counter
));
$this->AddElement('text', 'displaytext[' . $counter . ']', null,array (
'size' => 40,
'maxlength' => 40,
'id' => 'txtb-'.$counter
));
$renderer->setElementTemplate($elementTemplateTwoLabel,'endscore[' . $counter . ']');
$renderer->setElementTemplate($elementTemplateTwoLabel2,'displaytext[' . $counter . ']');
$this->addRule('endscore[' . $counter . ']', get_lang('OnlyNumbers'), 'numeric');
$this->addRule(array ('endscore[' . $counter . ']', 'maxvalue'), get_lang('Over100'), 'compare', '<=');
$this->addRule(array ('endscore[' . $counter . ']', 'minvalue'), get_lang('UnderMin'), 'compare', '>');
}
}
$this->setDefaults(array (
'enablescore' => $displayscore->is_custom(), 'includeupperlimit' => $displayscore->is_upperlimit_included()));
$this->addElement('style_submit_button', 'submit', get_lang('Ok'),'class="save"');
}
function validate() {
return parent :: validate();
}
}