"lib/classes/git@gitlab.studip.de:tleilax/studip.git" did not exist on "cb4f9016cc03ce334abe48c8789cbc0b8853f44a"
Select Git revision
CoursewareToolsBlockadder.vue
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Ron Lucke authored
Closes #3361 Merge request studip/studip!2293
Ron Lucke authoredCloses #3361 Merge request studip/studip!2293
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
AdvancedBasicDataWizardStep.php 5.07 KiB
<?php
/**
* AdvancedBasicDataWizardStep.php
* Course wizard step for getting the basic course data.
*
* 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.
*
* @author Thomas Hackl <thomas.hackl@uni-passau.de>
* @author Stefan Osterloh <s.osterloh@uni-oldenburg.de>
* @copyright 2015 Stud.IP Core-Group
* @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
* @category Stud.IP
*/
class AdvancedBasicDataWizardStep extends BasicDataWizardStep
{
/**
* Returns the Flexi template for entering the necessary values
* for this step.
*
* @param Array $values Pre-set values
* @param int $stepnumber which number has the current step in the wizard?
* @param String $temp_id temporary ID for wizard workflow
* @return String a Flexi template for getting needed data.
*/
public function getStepTemplate($values, $stepnumber, $temp_id)
{
$values = $this->adjustValues($values);
// We only need our own stored values here.
if ($values[__CLASS__]['studygroup']) {
return parent::getStepTemplate($values, $stepnumber, $temp_id);
}
// Load template from step template directory.
$factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'].'/app/views/course/wizard/steps');
$template = $factory->open('advancedbasicdata/index');
if ($template = $this->setupTemplateAttributes($template, $values, $stepnumber, $temp_id)) {
$values = $this->makeI18N($values[__CLASS__], ['name', 'description', 'subtitle', 'kind']);
$template->set_attribute('values', array_merge($template->values, $values));
return $template->render();
}
}
/**
* Validates if given values are sufficient for completing the current
* course wizard step and switch to another one. If not, all errors are
* collected and shown via PageLayout::postMessage.
*
* @param mixed $values Array of stored values
* @return bool Everything ok?
*/
public function validate($values)
{
$values = $this->adjustValues($values);
return parent::validate($values);
}
/**
* Stores the given values to the given course.
*
* @param Course $course the course to store values for
* @param Array $values values to set
* @return Course The course object with updated values.
*/
public function storeValues($course, $values)
{
$values = $this->adjustValues($values);
$course = parent::storeValues($course, $values);
// There probably was an error upon storing
if (!$course) {
return false;
}
// Studygroup? -> nothing to do here
if ($values[__CLASS__]['studygroup']) {
return $course;
}
// Add advanced data
$course->untertitel = new I18NString($values[__CLASS__]['subtitle'], $values[__CLASS__]['subtitle_i18n']);
$course->art = new I18NString($values[__CLASS__]['kind'], $values[__CLASS__]['kind_i18n']);
$course->ects = $values[__CLASS__]['ects'];
$course->admission_turnout = $values[__CLASS__]['maxmembers'];
if ($course->store() === false) {
PageLayout::postError(sprintf(_('Es ist ein Fehler beim Speichern der erweiterten Einstellungen für %s aufgetreten. Kontrollieren Sie bitte:')
, htmlReady($course->name)),
[_('Untertitel der Veranstalung'),
_('Art der Veranstaltung'),
_('ECTS-Punkte der Veranstaltung'),
_('Max. Teilnehmendenzahl der Veranstaltung')]);
}
return $course;
}
/**
* This method will adjust the given values from parent class
* or use previously set values from this class.
*
* @param array $values Array of values
* @return array of adjusted values
*/
private function adjustValues($values)
{
$parent_class = get_parent_class($this);
if (!isset($values[__CLASS__]) && isset($values[$parent_class])) {
$values[__CLASS__] = $values[$parent_class];
} else {
$values[$parent_class] = $values[__CLASS__];
}
return $values;
}
/**
* Copy values for basic data wizard step from given course.
* @param Course $course
* @param Array $values
*/
public function copy($course, $values)
{
$values = parent::copy($course, $values);
$values = $this->adjustValues($values);
$values[__CLASS__] = array_merge($values[__CLASS__], [
'subtitle' => $course->untertitel,
'subtitle_i18n' => $course->untertitel->toArray(),
'kind' => $course->art,
'kind_i18n' => $course->art->toArray(),
'ects' => $course->ects,
'maxmembers' => $course->admission_turnout,
]);
return $values;
}
}