mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
Merge branch 'feature-7772/Digitalisiertes_Pruefungsprotokoll'
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*/
|
||||
class Pruefungsprotokoll extends Auth_Controller
|
||||
{
|
||||
private $_uid; // uid of the logged user
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'lehre/pruefungsbeurteilung:r',
|
||||
'Protokoll' => 'lehre/pruefungsbeurteilung:r',
|
||||
'saveProtokoll' => 'lehre/pruefungsbeurteilung:rw',
|
||||
)
|
||||
);
|
||||
|
||||
// Load models
|
||||
$this->load->model('education/Abschlusspruefung_model', 'AbschlusspruefungModel');
|
||||
$this->load->model('education/Abschlussbeurteilung_model', 'AbschlussbeurteilungModel');
|
||||
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AuthLib');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'ui',
|
||||
'global',
|
||||
'person',
|
||||
'abschlusspruefung',
|
||||
'password',
|
||||
'lehre'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_setAuthUID(); // sets property uid
|
||||
|
||||
$this->setControllerId(); // sets the controller id
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
public function index()
|
||||
{
|
||||
$this->load->library('WidgetLib');
|
||||
$this->load->view('lehre/pruefungsprotokollUebersicht.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show Pruefungsprotokoll.
|
||||
*/
|
||||
public function Protokoll()
|
||||
{
|
||||
$abschlusspruefung_id = $this->input->get('abschlusspruefung_id');
|
||||
|
||||
if (!is_numeric($abschlusspruefung_id))
|
||||
show_error('invalid abschlusspruefung');
|
||||
|
||||
$abschlusspruefung_saved = false;
|
||||
$abschlusspruefung = $this->_getAbschlusspruefungBerechtigt($abschlusspruefung_id);
|
||||
|
||||
if (isError($abschlusspruefung))
|
||||
show_error(getError($abschlusspruefung));
|
||||
else
|
||||
{
|
||||
$abschlusspruefung = getData($abschlusspruefung);
|
||||
$abschlusspruefung_saved = isset($abschlusspruefung->protokoll) && isset($abschlusspruefung->abschlussbeurteilung_kurzbz);
|
||||
}
|
||||
|
||||
$this->AbschlussbeurteilungModel->addOrder("sort", "ASC");
|
||||
$this->AbschlussbeurteilungModel->addOrder("(CASE WHEN abschlussbeurteilung_kurzbz = 'ausgezeichnet' THEN 1
|
||||
WHEN abschlussbeurteilung_kurzbz = 'gut' THEN 2
|
||||
WHEN abschlussbeurteilung_kurzbz = 'bestanden' THEN 3
|
||||
WHEN abschlussbeurteilung_kurzbz = 'angerechnet' THEN 4
|
||||
ELSE 5
|
||||
END
|
||||
)");
|
||||
$abschlussbeurteilung = $this->AbschlussbeurteilungModel->load();
|
||||
|
||||
if (isError($abschlussbeurteilung))
|
||||
show_error(getError($abschlussbeurteilung));
|
||||
else
|
||||
$abschlussbeurteilung = getData($abschlussbeurteilung);
|
||||
|
||||
$language = getUserLanguage();
|
||||
|
||||
$data = array(
|
||||
'abschlusspruefung' => $abschlusspruefung,
|
||||
'abschlussbeurteilung' => $abschlussbeurteilung,
|
||||
'abschlusspruefung_saved' => $abschlusspruefung_saved,
|
||||
'language' => $language
|
||||
);
|
||||
|
||||
$this->load->view('lehre/pruefungsprotokoll.php', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save Pruefungsprotokoll (including possible Freigabe)
|
||||
*/
|
||||
public function saveProtokoll()
|
||||
{
|
||||
$abschlusspruefung_id = $this->input->post('abschlusspruefung_id');
|
||||
$data = $this->input->post('protocoldata');
|
||||
|
||||
if (isset($abschlusspruefung_id) && is_numeric($abschlusspruefung_id) && isset($data))
|
||||
{
|
||||
// check permission
|
||||
$berechtigt = $this->_getAbschlusspruefungBerechtigt($abschlusspruefung_id);
|
||||
if (isError($berechtigt))
|
||||
$this->outputJsonError(getError($berechtigt));
|
||||
else
|
||||
{
|
||||
$freigabe = isset($data['freigabedatum']) && $data['freigabedatum'];
|
||||
|
||||
if ($freigabe)
|
||||
{
|
||||
// Verify password
|
||||
$password = $data['password'];
|
||||
unset($data['password']);
|
||||
if (!isEmptyString($password))
|
||||
{
|
||||
$result = $this->authlib->checkUserAuthByUsernamePassword($this->_uid, $password);
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError($this->p->t('password', 'wrongPassword')); // exit if password is incorrect
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError($this->p->t('password', 'passwordMissing'));
|
||||
}
|
||||
}
|
||||
|
||||
$data = $this->_prepareAbschlusspruefungDataForSave($data);
|
||||
$result = $this->AbschlusspruefungModel->update($abschlusspruefung_id, $data);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$abschlusspruefung_id = getData($result);
|
||||
$updateresult = array('abschlusspruefung_id' => $abschlusspruefung_id);
|
||||
if ($freigabe)
|
||||
$updateresult['freigabedatum'] = date_format(date_create($data['freigabedatum']), 'd.m.Y');
|
||||
|
||||
$this->outputJsonSuccess($updateresult);
|
||||
}
|
||||
else
|
||||
$this->outputJsonError('Fehler beim Speichern des Prüfungsprotokolls');
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->outputJsonError($this->p->t('ui', 'ungueltigeParameter'));
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Retrieve the UID of the logged user and checks if it is valid
|
||||
*/
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
if (!$this->_uid) show_error('User authentification failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves an Abschlussprüfung, with permission check
|
||||
* permission: admin, assistance of study programe or Vorsitz of the Prüfung
|
||||
* @param $abschlusspruefung_id
|
||||
* @return object success or error
|
||||
*/
|
||||
private function _getAbschlusspruefungBerechtigt($abschlusspruefung_id)
|
||||
{
|
||||
$result = error('Error when getting Abschlusspruefung');
|
||||
|
||||
if (isset($this->_uid))
|
||||
{
|
||||
$abschlusspruefung = $this->AbschlusspruefungModel->getAbschlusspruefung($abschlusspruefung_id);
|
||||
|
||||
if (hasData($abschlusspruefung))
|
||||
{
|
||||
$abschlusspruefung_data = getData($abschlusspruefung);
|
||||
if ($this->permissionlib->isBerechtigt('admin') ||
|
||||
(isset($abschlusspruefung_data->studiengang_kz) && $this->permissionlib->isBerechtigt('assistenz', 'suid', $abschlusspruefung_data->studiengang_kz))
|
||||
|| $this->_uid === $abschlusspruefung_data->uid_vorsitz)
|
||||
$result = $abschlusspruefung;
|
||||
else
|
||||
$result = error('Permission denied');
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares Abschlussprüfung for save in database, replaces '' with null, sets Freigabedatum
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
private function _prepareAbschlusspruefungDataForSave($data)
|
||||
{
|
||||
$nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll');
|
||||
foreach ($data as $idx => $item)
|
||||
{
|
||||
if (in_array($idx, $nullfields) & $item === '')
|
||||
$data[$idx] = null;
|
||||
}
|
||||
|
||||
if (isset($data['freigabedatum']) && $data['freigabedatum'])
|
||||
$data['freigabedatum'] = date('Y-m-d');
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@@ -11,4 +11,93 @@ class Abschlusspruefung_model extends DB_Model
|
||||
$this->dbTable = 'lehre.tbl_abschlusspruefung';
|
||||
$this->pk = 'abschlusspruefung_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets data of an Abschlusspruefung, including Abschlussarbeit.
|
||||
* @param $abschlusspruefung_id
|
||||
* @return object
|
||||
*/
|
||||
public function getAbschlusspruefung($abschlusspruefung_id)
|
||||
{
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$abschlusspruefungdata = array();
|
||||
|
||||
$this->addSelect('tbl_abschlusspruefung.abschlusspruefung_id, tbl_abschlusspruefung.datum, tbl_abschlusspruefung.abschlussbeurteilung_kurzbz, tbl_abschlusspruefung.uhrzeit AS pruefungsbeginn, tbl_abschlusspruefung.endezeit AS pruefungsende,
|
||||
tbl_abschlusspruefung.freigabedatum, tbl_abschlusspruefung_antritt.bezeichnung AS pruefungsantritt_bezeichnung, tbl_abschlusspruefung_antritt.bezeichnung_english AS pruefungsantritt_bezeichnung_english, tbl_abschlusspruefung.protokoll,
|
||||
studentpers.vorname AS vorname_student, studentpers.nachname AS nachname_student, studentpers.titelpre AS titelpre_student, studentpers.titelpost AS titelpost_student, studentben.uid AS uid_student, matrikelnr,
|
||||
vorsitzenderben.uid AS uid_vorsitz, vorsitzenderpers.vorname AS vorname_vorsitz, vorsitzenderpers.nachname AS nachname_vorsitz, vorsitzenderpers.titelpre AS titelpre_vorsitz, vorsitzenderpers.titelpost AS titelpost_vorsitz,
|
||||
erstprueferpers.vorname AS vorname_erstpruefer, erstprueferpers.nachname AS nachname_erstpruefer, erstprueferpers.titelpre AS titelpre_erstpruefer, erstprueferpers.titelpost AS titelpost_erstpruefer,
|
||||
zweitprueferpers.vorname AS vorname_zweitpruefer, zweitprueferpers.nachname AS nachname_zweitpruefer, zweitprueferpers.titelpre AS titelpre_zweitpruefer, zweitprueferpers.titelpost AS titelpost_zweitpruefer
|
||||
');
|
||||
$this->addJoin('lehre.tbl_abschlusspruefung_antritt', 'pruefungsantritt_kurzbz', 'LEFT');
|
||||
$this->addJoin('public.tbl_benutzer studentben', 'tbl_abschlusspruefung.student_uid = studentben.uid');
|
||||
$this->addJoin('public.tbl_person studentpers', 'studentben.person_id = studentpers.person_id');
|
||||
$this->addJoin('public.tbl_student', 'studentben.uid = tbl_student.student_uid');
|
||||
$this->addJoin('public.tbl_benutzer vorsitzenderben', 'vorsitz = vorsitzenderben.uid', 'LEFT');
|
||||
$this->addJoin('public.tbl_person vorsitzenderpers', 'vorsitzenderben.person_id = vorsitzenderpers.person_id', 'LEFT');
|
||||
$this->addJoin('public.tbl_person erstprueferpers', 'pruefer1 = erstprueferpers.person_id', 'LEFT');
|
||||
$this->addJoin('public.tbl_person zweitprueferpers', 'pruefer2 = zweitprueferpers.person_id', 'LEFT');
|
||||
|
||||
$abschlusspruefung = $this->load($abschlusspruefung_id);
|
||||
|
||||
if (isError($abschlusspruefung))
|
||||
return $abschlusspruefung;
|
||||
elseif (hasData($abschlusspruefung))
|
||||
{
|
||||
$abschlusspruefungdata = getData($abschlusspruefung)[0];
|
||||
|
||||
// get Studiengang of Student
|
||||
$student_uid = $abschlusspruefungdata->uid_student;
|
||||
$this->StudentModel->addSelect('prestudent_id');
|
||||
$prestudent_id = $this->StudentModel->load(array('student_uid' => $student_uid));
|
||||
|
||||
if (isError($prestudent_id))
|
||||
return $prestudent_id;
|
||||
elseif (hasData($prestudent_id))
|
||||
{
|
||||
//get Studiengangname from Studienplan and -ordnung
|
||||
$studienordnung = $this->PrestudentstatusModel->getStudienordnungFromPrestudent(getData($prestudent_id)[0]->prestudent_id);
|
||||
|
||||
if (isError($studienordnung))
|
||||
return $studienordnung;
|
||||
elseif (hasData($studienordnung))
|
||||
{
|
||||
$studienordnungdata = getData($studienordnung)[0];
|
||||
|
||||
$abschlusspruefungdata->studiengang_kz = $studienordnungdata->studiengang_kz;
|
||||
$abschlusspruefungdata->studiengangbezeichnung = $studienordnungdata->studiengangbezeichnung;
|
||||
$abschlusspruefungdata->studiengangbezeichnung_englisch = $studienordnungdata->studiengangbezeichnung_englisch;
|
||||
|
||||
$this->StudiengangModel->addSelect('typ');
|
||||
$typ = $this->StudiengangModel->load($studienordnungdata->studiengang_kz);
|
||||
if (isError($typ))
|
||||
return $typ;
|
||||
elseif (hasData($typ))
|
||||
{
|
||||
$abschlusspruefungdata->studiengangstyp = getData($typ)[0]->typ;
|
||||
}
|
||||
|
||||
// get Abschlussarbeit
|
||||
$projekttyp = array('Bachelor','Diplom','Master','Dissertation','Lizenziat','Magister');
|
||||
$abschlussarbeit = $this->ProjektarbeitModel->getProjektarbeit($student_uid, $studienordnungdata->studiengang_kz, null, $projekttyp, true);
|
||||
|
||||
if (isError($abschlussarbeit))
|
||||
return $abschlussarbeit;
|
||||
if (hasData($abschlussarbeit))
|
||||
{
|
||||
$abschlussarbeit = getData($abschlussarbeit)[0];
|
||||
$abschlusspruefungdata->projektarbeit_studiengangstyp_name = $abschlussarbeit->projekttyp_kurzbz;
|
||||
$abschlusspruefungdata->abschlussarbeit_titel = $abschlussarbeit->titel;
|
||||
$abschlusspruefungdata->abschlussarbeit_note = $abschlussarbeit->note;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return success($abschlusspruefungdata);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,62 @@ class Projektarbeit_model extends DB_Model
|
||||
$this->dbTable = 'lehre.tbl_projektarbeit';
|
||||
$this->pk = 'projektarbeit_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Projektarbeit(en) of a student for a Studiengang, Semester, Projekttyp, final.
|
||||
* @param $student_uid
|
||||
* @param $studiengang_kz
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $projekttyp
|
||||
* @param $final
|
||||
* @return object
|
||||
*/
|
||||
public function getProjektarbeit($student_uid, $studiengang_kz = null, $studiensemester_kurzbz = null, $projekttyp = null, $final = null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
tbl_projektarbeit.* , tbl_projekttyp.bezeichnung
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN
|
||||
lehre.tbl_projekttyp USING (projekttyp_kurzbz), lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
|
||||
|
||||
WHERE
|
||||
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
|
||||
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
|
||||
tbl_projektarbeit.student_uid = ?";
|
||||
|
||||
$params = array($student_uid);
|
||||
|
||||
if (isset($studiengang_kz))
|
||||
{
|
||||
$qry .= ' AND tbl_lehrveranstaltung.studiengang_kz=?';
|
||||
$params[] = $studiengang_kz;
|
||||
}
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz=?';
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
if (isset($projekttyp))
|
||||
{
|
||||
if (is_array($projekttyp))
|
||||
$qry .= ' AND tbl_projektarbeit.projekttyp_kurzbz IN ?';
|
||||
else
|
||||
$qry .= ' AND tbl_projektarbeit.projekttyp_kurzbz=?';
|
||||
|
||||
$params[] = $projekttyp;
|
||||
}
|
||||
|
||||
if (isset($final))
|
||||
{
|
||||
$qry .= ' AND tbl_projektarbeit.final=?';
|
||||
$params[] = $final;
|
||||
}
|
||||
|
||||
$qry .= ' ORDER BY beginn DESC, projektarbeit_id DESC';
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Pruefungsprotokoll',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'dialoglib' => true,
|
||||
'ajaxlib' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'phrases' => array(
|
||||
'abschlusspruefung' => array(
|
||||
'freigegebenAm',
|
||||
'pruefungGespeichert',
|
||||
'pruefungSpeichernFehler',
|
||||
'abschlussbeurteilungLeer',
|
||||
'beginnzeitLeer',
|
||||
'beginnzeitFormatError',
|
||||
'endezeitLeer',
|
||||
'endezeitFormatError',
|
||||
'endezeitBeforeError',
|
||||
'verfNotice'
|
||||
),
|
||||
'ui' => array(
|
||||
'stunde',
|
||||
'minute'
|
||||
)
|
||||
),
|
||||
'customCSSs' => array(
|
||||
'public/css/sbadmin2/admintemplate_contentonly.css',
|
||||
'vendor/fgelinas/timepicker/jquery.ui.timepicker.css',
|
||||
'public/css/lehre/pruefungsprotokoll.css'
|
||||
),
|
||||
'customJSs' => array(
|
||||
'vendor/fgelinas/timepicker/jquery.ui.timepicker.js',
|
||||
'public/js/lehre/pruefungsprotokoll.js'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<?php if (isset($abschlusspruefung)):
|
||||
$studiengangstyp_name = $abschlusspruefung->studiengangstyp == 'b' ? 'Bachelor' : 'Master';
|
||||
$pruefung_name = $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'pruefungBachelor') : $this->p->t('abschlusspruefung', 'pruefungMaster');
|
||||
$arbeit_name = $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'arbeitBachelor') : $this->p->t('abschlusspruefung', 'arbeitMaster');
|
||||
$protokolltextvorlage = $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'pruefungsnotizenBachelor') : $this->p->t('abschlusspruefung', 'pruefungsnotizenMaster');
|
||||
$protokolltext = isset($abschlusspruefung->protokoll) ? $abschlusspruefung->protokoll : $protokolltextvorlage;
|
||||
?>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">
|
||||
<?php echo $this->p->t('abschlusspruefung', 'protokoll') ?> <?php echo $pruefung_name ?>
|
||||
</h3>
|
||||
<p>
|
||||
<?php echo $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'abgehaltenAmBachelor') : $this->p->t('abschlusspruefung', 'abgehaltenAmMaster'); ?>
|
||||
<?php echo $language == 'German' ? $abschlusspruefung->studiengangbezeichnung : $abschlusspruefung->studiengangbezeichnung_englisch ?>, <?php echo $this->p->t('abschlusspruefung', 'studiengangskennzahl') ?>
|
||||
<?php echo $abschlusspruefung->studiengang_kz ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h4>
|
||||
<?php echo $abschlusspruefung->titelpre_student . ' ' . $abschlusspruefung->vorname_student . ' ' . $abschlusspruefung->nachname_student . ' ' . $abschlusspruefung->titelpost_student?>
|
||||
</h4>
|
||||
<p><?php echo $this->p->t('abschlusspruefung', 'personenkennzeichen') ?>: <?php echo $abschlusspruefung->matrikelnr ?></p>
|
||||
<br />
|
||||
<input type="hidden" name="abschlusspruefung_id" value="<?php echo $abschlusspruefung->abschlusspruefung_id;?>" id="abschlusspruefung_id">
|
||||
<form id="protocolform">
|
||||
<table class="table-condensed table-bordered table-responsive" id="protocoltbl">
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungssenat') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'vorsitz') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<?php echo $abschlusspruefung->titelpre_vorsitz . ' ' . $abschlusspruefung->vorname_vorsitz . ' ' . $abschlusspruefung->nachname_vorsitz . ' ' . $abschlusspruefung->titelpost_vorsitz ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'erstpruefer') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<?php echo $abschlusspruefung->titelpre_erstpruefer . ' ' . $abschlusspruefung->vorname_erstpruefer . ' ' . $abschlusspruefung->nachname_erstpruefer . ' ' . $abschlusspruefung->titelpost_erstpruefer ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'zweitpruefer') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<?php echo $abschlusspruefung->titelpre_zweitpruefer . ' ' . $abschlusspruefung->vorname_zweitpruefer . ' ' . $abschlusspruefung->nachname_zweitpruefer . ' ' . $abschlusspruefung->titelpost_zweitpruefer ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="namecellwidth">
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungsdatum') ?>
|
||||
</td>
|
||||
<td class="datevalcellwidth">
|
||||
<?php echo date_format(date_create($abschlusspruefung->datum), 'd.m.Y'); ?>
|
||||
</td>
|
||||
<td class="cellbg namecellwidth">
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungsbeginn') ?>
|
||||
</td>
|
||||
<td class="timecellwidth">
|
||||
<input class="timepicker form-control" name="pruefungsbeginn" id="pruefungsbeginn" value="<?php echo isEmptyString($abschlusspruefung->pruefungsbeginn) ? '' : date_format(date_create($abschlusspruefung->pruefungsbeginn), 'H:i') ?>">
|
||||
</td>
|
||||
<td class="cellbg namecellwidth">
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungsende') ?>
|
||||
</td>
|
||||
<td class="timecellwidth">
|
||||
<input class="timepicker form-control" name="pruefungsende" id="pruefungsende" value="<?php echo isEmptyString($abschlusspruefung->pruefungsbeginn) ? '' : date_format(date_create($abschlusspruefung->pruefungsende), 'H:i') ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungsantritt') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<?php echo $language == 'German' ? $abschlusspruefung->pruefungsantritt_bezeichnung : $abschlusspruefung->pruefungsantritt_bezeichnung_english; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'einverstaendniserklaerungName') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<input type="checkbox" id="verfCheck">
|
||||
<?php echo $this->p->t('abschlusspruefung', 'einverstaendniserklaerungText') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'themaBeurteilung') ?> <?php echo $arbeit_name ?>
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<?php echo isset($abschlusspruefung->abschlussarbeit_titel) ? $abschlusspruefung->abschlussarbeit_titel : '' ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $this->p->t('lehre', 'note') ?>: <?php echo isset($abschlusspruefung->abschlussarbeit_note) ? $abschlusspruefung->abschlussarbeit_note : '' ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<?php echo $this->p->t('abschlusspruefung', 'pruefungsgegenstand') ?>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<?php echo ($abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'pruefungsgegenstandBachelor') : $this->p->t('abschlusspruefung', 'pruefungsgegenstandMaster')) ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<?php echo ucfirst($this->p->t('global', 'notizen')); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
|
||||
<textarea id="protokoll" name="protokoll" class="form-control" rows="15" cols="107"><?php echo $protokolltext ?></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<?php echo $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'beurteilungKriterienBachelor') : $this->p->t('abschlusspruefung', 'beurteilungKriterienMaster') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<?php echo $abschlusspruefung->studiengangstyp == 'b' ? $this->p->t('abschlusspruefung', 'beurteilungBachelor') : $this->p->t('abschlusspruefung', 'beurteilungMaster') ?>:
|
||||
<select name="abschlussbeurteilung_kurzbz" id="abschlussbeurteilung_kurzbz" class="form-control">
|
||||
<option value="">-- <?php echo $this->p->t('ui', 'bitteWaehlen'); ?> --</option>
|
||||
<?php foreach ($abschlussbeurteilung as $beurteilung):
|
||||
$selected = $beurteilung->abschlussbeurteilung_kurzbz == $abschlusspruefung->abschlussbeurteilung_kurzbz ? " selected" : "" ?>
|
||||
<option value="<?php echo $beurteilung->abschlussbeurteilung_kurzbz; ?>"<?php echo $selected ?>><?php echo $language == 'German' ? $beurteilung->bezeichnung : $beurteilung->bezeichnung_english; ?> </option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<span id="verfNotice"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<br />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 text-right">
|
||||
<p>
|
||||
<?php $freigegeben = isset($abschlusspruefung->freigabedatum); ?>
|
||||
<button id="saveProtocolBtn" class="btn btn-default"<?php echo $freigegeben ? " disabled" : "" ?>><?php echo $this->p->t('ui', 'speichern') ?></button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr id="hrbottom">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<span id="freigegebenText">
|
||||
<?php
|
||||
if ($freigegeben)
|
||||
echo ' ' . $this->p->t('abschlusspruefung', 'freigegebenAm') . ' ' . date_format(date_create($abschlusspruefung->freigabedatum), 'd.m.Y')
|
||||
?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="input-group">
|
||||
<input id="username" type="hidden" value=""><!-- this is to prevent Chrome autofilling a random input field with the username-->
|
||||
<input id="password" type="password" autocomplete="new-password" class="form-control" placeholder="CIS-<?php echo ucfirst($this->p->t('password', 'password')); ?>">
|
||||
<span class="input-group-btn">
|
||||
<button id="freigebenProtocolBtn" class="btn btn-default"><?php echo $this->p->t('abschlusspruefung', 'ueberpruefenFreigeben') ?></button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Prüfungsprotokoll',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'jquerycheckboxes' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'tablesorter' => true,
|
||||
'ajaxlib' => true,
|
||||
'dialoglib' => true,
|
||||
'tablewidget' => true,
|
||||
'phrases' => array(
|
||||
'ui' => array(
|
||||
'keineDatenVorhanden',
|
||||
)
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">
|
||||
<?php echo $this->p->t('abschlusspruefung','pruefungsprotokoll'); ?>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo $this->p->t('abschlusspruefung','einfuehrungstext'); ?>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<?php $this->load->view('lehre/pruefungsprotokollUebersichtData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
$UID = getAuthUID();
|
||||
|
||||
$query = "
|
||||
SELECT
|
||||
tbl_abschlusspruefung.abschlusspruefung_id,
|
||||
tbl_person.nachname || ' ' || tbl_person.vorname as name,
|
||||
tbl_studiengangstyp.bezeichnung || ' ' || tbl_studiengang.bezeichnung,
|
||||
tbl_abschlusspruefung.datum,
|
||||
tbl_abschlusspruefung.freigabedatum
|
||||
FROM
|
||||
lehre.tbl_abschlusspruefung
|
||||
JOIN public.tbl_student USING(student_uid)
|
||||
JOIN public.tbl_benutzer ON(student_uid=uid)
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
JOIN public.tbl_studiengang ON(tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
|
||||
JOIN public.tbl_studiengangstyp USING(typ);
|
||||
WHERE
|
||||
vorsitz='".$UID."'
|
||||
AND datum>='2020-05-27'
|
||||
ORDER BY datum, nachname, vorname
|
||||
";
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'tableUniqueId' => 'pruefungsprotokoll',
|
||||
'requiredPermissions' => 'lehre/pruefungsbeurteilung',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'columnsAliases' => array(
|
||||
ucfirst($this->p->t('global', 'details')),
|
||||
ucfirst($this->p->t('global', 'name')),
|
||||
ucfirst($this->p->t('lehre', 'studiengang')),
|
||||
ucfirst($this->p->t('global', 'datum')),
|
||||
ucfirst($this->p->t('global', 'status')),
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
/* NOTE: Dont use $this here for PHP Version compatibility */
|
||||
$datasetRaw->{'abschlusspruefung_id'} = sprintf(
|
||||
'<a href="%s?abschlusspruefung_id=%s" target="_blank">Protokoll ausfüllen</a>',
|
||||
site_url('lehre/Pruefungsprotokoll/Protokoll'),
|
||||
$datasetRaw->{'abschlusspruefung_id'}
|
||||
);
|
||||
|
||||
if ($datasetRaw->{'datum'} == null)
|
||||
{
|
||||
$datasetRaw->{'datum'} = '-';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'datum'} = date_format(date_create($datasetRaw->{'datum'}),'d.m.Y');
|
||||
}
|
||||
if ($datasetRaw->{'freigabedatum'} == null)
|
||||
{
|
||||
$datasetRaw->{'freigabedatum'} = 'offen';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'freigabedatum'} = 'Freigegeben am: '.date_format(date_create($datasetRaw->{'freigabedatum'}),'d.m.Y');
|
||||
}
|
||||
return $datasetRaw;
|
||||
},
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('TableWidget', $filterWidgetArray);
|
||||
|
||||
?>
|
||||
@@ -3776,6 +3776,9 @@ if(!$error)
|
||||
$pruefung->pruefer2 = $_POST['pruefer2'];
|
||||
$pruefung->pruefer3 = $_POST['pruefer3'];
|
||||
$pruefung->abschlussbeurteilung_kurzbz = $_POST['abschlussbeurteilung_kurzbz'];
|
||||
if(isset($_POST['pruefungsantritt_kurzbz']))
|
||||
$pruefung->pruefungsantritt_kurzbz = $_POST['pruefungsantritt_kurzbz'];
|
||||
|
||||
$pruefung->note = $_POST['notekommpruef'];
|
||||
$pruefung->akadgrad_id = $_POST['akadgrad_id'];
|
||||
$pruefung->pruefungstyp_kurzbz = $_POST['pruefungstyp_kurzbz'];
|
||||
@@ -3815,10 +3818,25 @@ if(!$error)
|
||||
if(isset($_POST['abschlusspruefung_id']) && is_numeric($_POST['abschlusspruefung_id']))
|
||||
{
|
||||
$pruefung = new abschlusspruefung();
|
||||
|
||||
if($pruefung->delete($_POST['abschlusspruefung_id']))
|
||||
if($pruefung->load($_POST['abschlusspruefung_id']))
|
||||
{
|
||||
$return = true;
|
||||
if ($pruefung->freigabedatum == '')
|
||||
{
|
||||
if($pruefung->delete($_POST['abschlusspruefung_id']))
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = $pruefung->errormsg;
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Löschen ist nicht möglich da bereits ein freigegebenes Protokoll vorhanden ist';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -163,6 +163,7 @@ function StudentAbschlusspruefungDetailDisableFields(val)
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefer2').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefer3').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-abschlussbeurteilung').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefungsantritt').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-notekommpruef').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-akadgrad').disabled=val;
|
||||
document.getElementById('student-abschlusspruefung-menulist-typ').disabled=val;
|
||||
@@ -186,6 +187,7 @@ function StudentAbschlusspruefungResetFields()
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefer2').value='';
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefer3').value='';
|
||||
document.getElementById('student-abschlusspruefung-menulist-abschlussbeurteilung').value='';
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefungsantritt').value='';
|
||||
document.getElementById('student-abschlusspruefung-menulist-notekommpruef').value='';
|
||||
//document.getElementById('student-abschlusspruefung-menulist-akadgrad').value='';
|
||||
//document.getElementById('student-abschlusspruefung-menulist-typ').value='Bachelor';
|
||||
@@ -342,6 +344,7 @@ function StudentAbschlusspruefungAuswahl()
|
||||
pruefer3 = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#pruefer3" ));
|
||||
pruefer3_nachname = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#pruefer3_nachname" ));
|
||||
abschlussbeurteilung_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#abschlussbeurteilung_kurzbz" ));
|
||||
pruefungsantritt_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#pruefungsantritt_kurzbz" ));
|
||||
notekommpruef = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#notekommpruef" ));
|
||||
akadgrad_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#akadgrad_id" ));
|
||||
datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" ));
|
||||
@@ -395,6 +398,7 @@ function StudentAbschlusspruefungAuswahl()
|
||||
MenulistSelectItemOnValue('student-abschlusspruefung-menulist-pruefer2', pruefer2);
|
||||
MenulistSelectItemOnValue('student-abschlusspruefung-menulist-pruefer3', pruefer3);
|
||||
document.getElementById('student-abschlusspruefung-menulist-abschlussbeurteilung').value=abschlussbeurteilung_kurzbz;
|
||||
document.getElementById('student-abschlusspruefung-menulist-pruefungsantritt').value=pruefungsantritt_kurzbz;
|
||||
document.getElementById('student-abschlusspruefung-menulist-notekommpruef').value=notekommpruef;
|
||||
document.getElementById('student-abschlusspruefung-menulist-akadgrad').value=akadgrad_id;
|
||||
document.getElementById('student-abschlusspruefung-datum-datum').value=datum;
|
||||
@@ -424,6 +428,7 @@ function StudentAbschlusspruefungSpeichern()
|
||||
var pruefer2 = MenulistGetSelectedValue('student-abschlusspruefung-menulist-pruefer2');
|
||||
var pruefer3 = MenulistGetSelectedValue('student-abschlusspruefung-menulist-pruefer3');
|
||||
var abschlussbeurteilung_kurzbz = document.getElementById('student-abschlusspruefung-menulist-abschlussbeurteilung').value;
|
||||
var pruefungsantritt_kurzbz = document.getElementById('student-abschlusspruefung-menulist-pruefungsantritt').value;
|
||||
var notekommpruef = document.getElementById('student-abschlusspruefung-menulist-notekommpruef').value;
|
||||
var akadgrad_id = document.getElementById('student-abschlusspruefung-menulist-akadgrad').value;
|
||||
var datum = document.getElementById('student-abschlusspruefung-datum-datum').value;
|
||||
@@ -482,6 +487,7 @@ function StudentAbschlusspruefungSpeichern()
|
||||
req.add('pruefer2', pruefer2);
|
||||
req.add('pruefer3', pruefer3);
|
||||
req.add('abschlussbeurteilung_kurzbz', abschlussbeurteilung_kurzbz);
|
||||
req.add('pruefungsantritt_kurzbz', pruefungsantritt_kurzbz);
|
||||
req.add('notekommpruef', notekommpruef);
|
||||
req.add('akadgrad_id', akadgrad_id);
|
||||
req.add('datum', ConvertDateToISO(datum));
|
||||
|
||||
@@ -97,6 +97,14 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#uhrzeit" onclick="StudentAbschlusspruefungTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-abschlusspruefung-treecol-freigabedatum" label="Freigabe" flex="1" persist="hidden, width" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#freigabedatum_iso" onclick="StudentAbschlusspruefungTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-abschlusspruefung-treecol-pruefungsantritt" label="Prüfungsantritt" flex="1" persist="hidden, width" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#pruefungsantritt_bezeichnung" onclick="StudentAbschlusspruefungTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-abschlusspruefung-treecol-sponsion" label="Sponsion" flex="1" persist="hidden, width" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#sponsion_iso" onclick="StudentAbschlusspruefungTreeSort()"/>
|
||||
@@ -132,6 +140,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#abschlussbeurteilung_kurzbz" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#datum" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#uhrzeit" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#freigabedatum" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#pruefungsantritt_bezeichnung" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#sponsion" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#anmerkung" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/abschlusspruefung/rdf#abschlusspruefung_id" />
|
||||
@@ -165,12 +175,13 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<rows>
|
||||
<row>
|
||||
<label value="Typ" control="student-abschlusspruefung-menulist-typ" />
|
||||
<menulist id="student-abschlusspruefung-menulist-typ"
|
||||
disabled="true"
|
||||
datasources="<?php echo APP_ROOT; ?>rdf/pruefungstyp.rdf.php?abschluss=true" flex="1"
|
||||
ref="http://www.technikum-wien.at/pruefungstyp/liste"
|
||||
oncommand="StudentAbschlusspruefungTypChange()"
|
||||
>
|
||||
<menulist
|
||||
id="student-abschlusspruefung-menulist-typ"
|
||||
disabled="true"
|
||||
datasources="<?php echo APP_ROOT; ?>rdf/pruefungstyp.rdf.php?abschluss=true" flex="1"
|
||||
ref="http://www.technikum-wien.at/pruefungstyp/liste"
|
||||
oncommand="StudentAbschlusspruefungTypChange()"
|
||||
>
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/pruefungstyp/rdf#pruefungstyp_kurzbz"
|
||||
@@ -178,8 +189,9 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<label value="Note komm. Pruefung" control="student-abschlusspruefung-menulist-notekommpruef" />
|
||||
</menulist>
|
||||
|
||||
<label value="Note komm. Pruefung" control="student-abschlusspruefung-menulist-notekommpruef" />
|
||||
<menulist id="student-abschlusspruefung-menulist-notekommpruef"
|
||||
disabled="true"
|
||||
datasources="<?php echo APP_ROOT;?>rdf/note.rdf.php?optional=true" flex="1"
|
||||
@@ -194,6 +206,23 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</template>
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Prüfungsantritt" control="student-abschlusspruefung-menulist-pruefungsantritt" />
|
||||
<menulist
|
||||
id="student-abschlusspruefung-menulist-pruefungsantritt"
|
||||
disabled="true"
|
||||
datasources="<?php echo APP_ROOT; ?>rdf/abschlusspruefung_antritt.rdf.php?optional=true" flex="1"
|
||||
ref="http://www.technikum-wien.at/abschlusspruefung_antritt/liste"
|
||||
>
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/abschlusspruefung_antritt/rdf#pruefungsantritt_kurzbz"
|
||||
label="rdf:http://www.technikum-wien.at/abschlusspruefung_antritt/rdf#bezeichnung"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Vorsitz" control="student-abschlusspruefung-menulist-vorsitz" />
|
||||
<menulist id="student-abschlusspruefung-menulist-vorsitz"
|
||||
|
||||
@@ -50,6 +50,11 @@ class abschlusspruefung extends basis_db
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $ext_id;
|
||||
public $protokoll;
|
||||
public $endezeit;
|
||||
public $pruefungsantritt_kurzbz;
|
||||
public $freigabedatum;
|
||||
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -108,6 +113,10 @@ class abschlusspruefung extends basis_db
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->ext_id = $row->ext_id;
|
||||
$this->protokoll = $row->protokoll;
|
||||
$this->endezeit = $row->endezeit;
|
||||
$this->pruefungsantritt_kurzbz = $row->pruefungsantritt_kurzbz;
|
||||
$this->freigabedatum = $row->freigabedatum;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -195,7 +204,7 @@ class abschlusspruefung extends basis_db
|
||||
$qry = "BEGIN;INSERT INTO lehre.tbl_abschlusspruefung (student_uid, vorsitz, pruefer1,
|
||||
pruefer2, pruefer3, abschlussbeurteilung_kurzbz, akadgrad_id, datum, uhrzeit, sponsion,
|
||||
pruefungstyp_kurzbz, anmerkung, updateamum, updatevon, insertamum, insertvon,
|
||||
note) VALUES (".
|
||||
note, protokoll, endezeit, pruefungsantritt_kurzbz, freigabedatum) VALUES (".
|
||||
$this->db_add_param($this->student_uid).', '.
|
||||
$this->db_add_param($this->vorsitz).', '.
|
||||
$this->db_add_param($this->pruefer1).', '.
|
||||
@@ -212,7 +221,11 @@ class abschlusspruefung extends basis_db
|
||||
$this->db_add_param($this->updatevon).', '.
|
||||
$this->db_add_param($this->insertamum).', '.
|
||||
$this->db_add_param($this->insertvon).', '.
|
||||
$this->db_add_param($this->note, FHC_INTEGER).');';
|
||||
$this->db_add_param($this->note, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->protokoll).','.
|
||||
$this->db_add_param($this->endezeit).','.
|
||||
$this->db_add_param($this->pruefungsantritt_kurzbz).','.
|
||||
$this->db_add_param($this->freigabedatum).');';
|
||||
|
||||
}
|
||||
else
|
||||
@@ -233,7 +246,11 @@ class abschlusspruefung extends basis_db
|
||||
" pruefungstyp_kurzbz=".$this->db_add_param($this->pruefungstyp_kurzbz).",".
|
||||
" anmerkung=".$this->db_add_param($this->anmerkung).",".
|
||||
" updateamum=".$this->db_add_param($this->updateamum).",".
|
||||
" updatevon=".$this->db_add_param($this->updatevon).
|
||||
" updatevon=".$this->db_add_param($this->updatevon).",".
|
||||
" protokoll=".$this->db_add_param($this->protokoll).",".
|
||||
" endezeit=".$this->db_add_param($this->endezeit).",".
|
||||
" pruefungsantritt_kurzbz=".$this->db_add_param($this->pruefungsantritt_kurzbz).",".
|
||||
" freigabedatum=".$this->db_add_param($this->freigabedatum)." ".
|
||||
" WHERE abschlusspruefung_id=".$this->db_add_param($this->abschlusspruefung_id, FHC_INTEGER, false);
|
||||
}
|
||||
|
||||
@@ -315,6 +332,10 @@ class abschlusspruefung extends basis_db
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->ext_id = $row->ext_id;
|
||||
$obj->protokoll = $row->protokoll;
|
||||
$obj->endezeit = $row->endezeit;
|
||||
$obj->pruefungsantritt_kurzbz = $row->pruefungsantritt_kurzbz;
|
||||
$obj->freigabedatum = $row->freigabedatum;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -366,6 +387,11 @@ class abschlusspruefung extends basis_db
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->ext_id = $row->ext_id;
|
||||
$this->protokoll = $row->protokoll;
|
||||
$this->endezeit = $row->endezeit;
|
||||
$this->pruefungsantritt_kurzbz = $row->pruefungsantritt_kurzbz;
|
||||
$this->freigabedatum = $row->freigabedatum;
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
/* Copyright (C) 2020 FH Technikum-Wien
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program 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 this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
|
||||
*/
|
||||
/**
|
||||
* Klasse zur Verwaltung der Abschlusspruefungsantritte
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class abschlusspruefung_antritt extends basis_db
|
||||
{
|
||||
public $new;
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $pruefungsantritt_kurzbz;
|
||||
public $bezeichnung;
|
||||
public $bezeichnung_english;
|
||||
public $sort;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
* @param $pruefungsantritt_kurzbz kurzbz des zu ladenden Datensatzes
|
||||
*/
|
||||
public function __construct($pruefungsantritt_kurzbz=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if(!is_null($pruefungsantritt_kurzbz))
|
||||
$this->load($pruefungsantritt_kurzbz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt einen Datensatz
|
||||
* @param $pruefungsantritt_kurzbz Kurzbz des zu ladenden Datensatzes
|
||||
*/
|
||||
public function load($pruefungsantritt_kurzbz)
|
||||
{
|
||||
//laden des Datensatzes
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_abschlusspruefung_antritt
|
||||
WHERE pruefungsantritt_kurzbz=".$this->db_add_param($pruefungsantritt_kurzbz).";";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->pruefungsantritt_kurzbz = $row->pruefungsantritt_kurzbz;
|
||||
$this->bezeichnung = $row->bezeichnung;
|
||||
$this->bezeichnung_english = $row->bezeichnung_english;
|
||||
$this->sort = $row->sort;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert alle Abschlussprüfungsantritt
|
||||
* @return boolean true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_abschlusspruefung_antritt
|
||||
ORDER BY sort";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new abschlusspruefung_antritt();
|
||||
$obj->pruefungsantritt_kurzbz = $row->pruefungsantritt_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$obj->sort = $row->sort;
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,45 @@
|
||||
/* threshold for full screen form */
|
||||
@media (max-width:1075px) {
|
||||
#page-wrapper {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#protocoltbl textarea {
|
||||
/* notiz field should stay in table */
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#protocoltbl td:nth-child(1), .cellbg {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
/* table date and time cell widths */
|
||||
.timecellwidth {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.namecellwidth {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
.datevalcellwidth {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
#hrbottom {
|
||||
border-top: 2px solid #eee;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/* timepicker */
|
||||
.ui-timepicker-table td a {
|
||||
width: inherit;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -3,7 +3,8 @@
|
||||
|
||||
@media (min-width:768px) {
|
||||
#page-wrapper {
|
||||
margin-right: 250px;
|
||||
margin-right: 180px;
|
||||
margin-left: 180px;
|
||||
margin-top: 8px;
|
||||
border: 1px solid #e7e7e7;
|
||||
}
|
||||
|
||||
+44
-29
@@ -336,47 +336,62 @@ var FHC_TableWidget = {
|
||||
if (typeof tableWidgetDiv.find("#tableWidgetTableDataset").checkboxes === 'function')
|
||||
tableWidgetDiv.find("#tableWidgetTableDataset").checkboxes("range", true);
|
||||
}
|
||||
|
||||
for (var i = 0; i < data.dataset.length; i++)
|
||||
if (data.dataset.length == 0)
|
||||
{
|
||||
var record = data.dataset[i];
|
||||
|
||||
if ($.isEmptyObject(record))
|
||||
// Display placeholder if Table is empty
|
||||
var numColumns = arrayFieldsToDisplay.length;
|
||||
if (data.hasOwnProperty("additionalColumns") && $.isArray(data.additionalColumns))
|
||||
{
|
||||
continue;
|
||||
numColumns += data.additionalColumns.length;
|
||||
}
|
||||
|
||||
var strHtml = "<tr class='" + record.MARK_ROW_CLASS + "'>";
|
||||
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
var strHtml = '<tr><td align="center" colspan="'+numColumns+'">';
|
||||
strHtml += FHC_PhrasesLib.t('ui', 'keineDatenVorhanden');
|
||||
strHtml += '</td></tr>';
|
||||
tableWidgetDiv.find("#tableWidgetTableDataset > tbody").append(strHtml);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (var i = 0; i < data.dataset.length; i++)
|
||||
{
|
||||
strHtml += "<td>";
|
||||
strHtml += "<input type='checkbox' name='" + data.checkboxes + "[]' value='" + record[data.checkboxes] + "'>";
|
||||
strHtml += "</td>";
|
||||
}
|
||||
var record = data.dataset[i];
|
||||
|
||||
$.each(arrayFieldsToDisplay, function(i, fieldToDisplay) {
|
||||
|
||||
if (record.hasOwnProperty(data.fields[i]))
|
||||
if ($.isEmptyObject(record))
|
||||
{
|
||||
strHtml += "<td>" + record[data.fields[i]] + "</td>";
|
||||
continue;
|
||||
}
|
||||
});
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
$.each(data.additionalColumns, function(i, additionalColumn) {
|
||||
var strHtml = "<tr class='" + record.MARK_ROW_CLASS + "'>";
|
||||
|
||||
if (record.hasOwnProperty(additionalColumn))
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
{
|
||||
strHtml += "<td>";
|
||||
strHtml += "<input type='checkbox' name='" + data.checkboxes + "[]' value='" + record[data.checkboxes] + "'>";
|
||||
strHtml += "</td>";
|
||||
}
|
||||
|
||||
$.each(arrayFieldsToDisplay, function(i, fieldToDisplay) {
|
||||
|
||||
if (record.hasOwnProperty(data.fields[i]))
|
||||
{
|
||||
strHtml += "<td>" + record[additionalColumn] + "</td>";
|
||||
strHtml += "<td>" + record[data.fields[i]] + "</td>";
|
||||
}
|
||||
});
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
$.each(data.additionalColumns, function(i, additionalColumn) {
|
||||
|
||||
if (record.hasOwnProperty(additionalColumn))
|
||||
{
|
||||
strHtml += "<td>" + record[additionalColumn] + "</td>";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
strHtml += "</tr>";
|
||||
|
||||
tableWidgetDiv.find("#tableWidgetTableDataset > tbody").append(strHtml);
|
||||
}
|
||||
|
||||
strHtml += "</tr>";
|
||||
|
||||
tableWidgetDiv.find("#tableWidgetTableDataset > tbody").append(strHtml);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -540,7 +555,7 @@ var FHC_TableWidget = {
|
||||
options.columnVisibilityChanged = function(column, visible) {
|
||||
_func_columnVisibilityChanged(column, visible);
|
||||
};
|
||||
|
||||
|
||||
// Renders the tabulator
|
||||
tableWidgetDiv.find("#tableWidgetTabulator").tabulator(options);
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -9,7 +9,7 @@ $(document).ready(function() {
|
||||
var Bootstrapper = {
|
||||
bootstraphtml: function ()
|
||||
{
|
||||
$("input[type=text], select").addClass("form-control");
|
||||
$("input[type=text], select, textarea").addClass("form-control");
|
||||
$("button, input[type=button]").addClass("btn btn-default");
|
||||
$("table").addClass("table-condensed");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
const CALLED_PATH = FHC_JS_DATA_STORAGE_OBJECT.called_path;
|
||||
|
||||
$("document").ready(function() {
|
||||
// if no abschlussbeurteilung is not filled out, new formular -> verfassungscheck is by default not checked.
|
||||
// If abschlussbeurteilung is filled out -> already graded, verfassungscheck is checked.
|
||||
Pruefungsprotokoll.abschlussbeurteilung_kurzbz = $("#abschlussbeurteilung_kurzbz").val();
|
||||
if (Pruefungsprotokoll.abschlussbeurteilung_kurzbz != '')
|
||||
$("#verfCheck").prop('checked', true);
|
||||
Pruefungsprotokoll.checkVerfassung();
|
||||
|
||||
$("#saveProtocolBtn, #freigebenProtocolBtn").click(
|
||||
function() {
|
||||
var data = {
|
||||
abschlussbeurteilung_kurzbz: $("#abschlussbeurteilung_kurzbz").val(),
|
||||
protokoll: $("#protokoll").val(),
|
||||
uhrzeit: $("#pruefungsbeginn").val(),
|
||||
endezeit: $("#pruefungsende").val()
|
||||
}
|
||||
|
||||
if ($(this).prop("id") === 'freigebenProtocolBtn')
|
||||
{
|
||||
data.freigabedatum = true;
|
||||
data.password = $("#password").val();
|
||||
}
|
||||
|
||||
var checkFields = Pruefungsprotokoll.checkFields(data, $("#verfCheck").prop('checked'));
|
||||
$("#protocolform td").removeClass('has-error');
|
||||
if (checkFields.length > 0)
|
||||
{
|
||||
var errortext = '';
|
||||
for (var i = 0; i < checkFields.length; i++)
|
||||
{
|
||||
var error = checkFields[i];
|
||||
$.each(error, function(i, n)
|
||||
{
|
||||
console.log($("#"+i).closest('td'));
|
||||
$("#"+i).closest('td').addClass('has-error');
|
||||
if (errortext !== '')
|
||||
errortext += '; ';
|
||||
errortext += n;
|
||||
});
|
||||
}
|
||||
|
||||
FHC_DialogLib.alertError(errortext);
|
||||
return;
|
||||
}
|
||||
|
||||
Pruefungsprotokoll.saveProtokoll($("#abschlusspruefung_id").val(),data);
|
||||
}
|
||||
)
|
||||
|
||||
$("#verfCheck").change(
|
||||
Pruefungsprotokoll.checkVerfassung
|
||||
);
|
||||
|
||||
$( ".timepicker" ).timepicker({
|
||||
showPeriodLabels: false,
|
||||
hours: {starts: 7,ends: 22},
|
||||
timeFormat: 'hh:mm',
|
||||
defaultTime: '',
|
||||
hourText: FHC_PhrasesLib.t("ui", "stunde"),
|
||||
minuteText: FHC_PhrasesLib.t("ui", "minute"),
|
||||
rows: 4
|
||||
});
|
||||
})
|
||||
|
||||
var Pruefungsprotokoll = {
|
||||
abschlussbeurteilung_kurzbz: '',
|
||||
checkVerfassung: function()
|
||||
{
|
||||
// if student not mentally and physically fit (checkbox), no grade can be set
|
||||
if ($("#verfCheck").prop('checked'))
|
||||
{
|
||||
$("#abschlussbeurteilung_kurzbz").prop('disabled', false).val(Pruefungsprotokoll.abschlussbeurteilung_kurzbz);
|
||||
$("#verfNotice").html("");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#abschlussbeurteilung_kurzbz").prop('disabled', true).val(null);
|
||||
$("#verfNotice").html(FHC_PhrasesLib.t("abschlusspruefung", "verfNotice"));
|
||||
}
|
||||
},
|
||||
checkFields: function(data, verfChecked)
|
||||
{
|
||||
var errors = [];
|
||||
|
||||
if (data.abschlussbeurteilung_kurzbz == "" && verfChecked)
|
||||
errors.push({"abschlussbeurteilung_kurzbz": FHC_PhrasesLib.t("abschlusspruefung", "abschlussbeurteilungLeer")});
|
||||
|
||||
var zeitregex = /^[0-2][0-9]:[0-5][0-9]$/;
|
||||
|
||||
if (data.uhrzeit == "")
|
||||
{
|
||||
if (verfChecked)
|
||||
errors.push({"pruefungsbeginn": FHC_PhrasesLib.t("abschlusspruefung", "beginnzeitLeer")});
|
||||
}
|
||||
else if(!zeitregex.test(data.uhrzeit))
|
||||
errors.push({"pruefungsbeginn": FHC_PhrasesLib.t("abschlusspruefung", "beginnzeitFormatError")});
|
||||
|
||||
if (data.endezeit == "")
|
||||
{
|
||||
if (verfChecked)
|
||||
errors.push({"pruefungsende": FHC_PhrasesLib.t("abschlusspruefung", "endezeitLeer")});
|
||||
}
|
||||
else if(!zeitregex.test(data.endezeit))
|
||||
errors.push({"pruefungsende": FHC_PhrasesLib.t("abschlusspruefung", "endezeitFormatError")});
|
||||
|
||||
if (data.uhrzeit > data.endezeit && data.endezeit != "" && data.uhrzeit != "")
|
||||
errors.push({"pruefungsende": FHC_PhrasesLib.t("abschlusspruefung", "endezeitBeforeError")});
|
||||
|
||||
return errors;
|
||||
},
|
||||
// ajax calls
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
saveProtokoll: function(abschlusspruefung_id, data)
|
||||
{
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
CALLED_PATH + '/saveProtokoll',
|
||||
{
|
||||
abschlusspruefung_id: abschlusspruefung_id,
|
||||
protocoldata: data
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
var dataresponse = FHC_AjaxClient.getData(data);
|
||||
if (dataresponse.freigabedatum)
|
||||
{
|
||||
$("#saveProtocolBtn").prop("disabled", true);
|
||||
$("#freigegebenText").html(' ' + FHC_PhrasesLib.t("abschlusspruefung", "freigegebenAm") +
|
||||
' ' + dataresponse.freigabedatum)
|
||||
}
|
||||
FHC_DialogLib.alertSuccess(FHC_PhrasesLib.t("abschlusspruefung", "pruefungGespeichert"));
|
||||
}
|
||||
else if(FHC_AjaxClient.isError(data))
|
||||
{
|
||||
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
|
||||
}
|
||||
},
|
||||
errorCallback: function() {
|
||||
FHC_DialogLib.alertError(FHC_PhrasesLib.t("abschlusspruefung", "pruefungSpeichernFehler"));
|
||||
},
|
||||
veilTimeout: 0
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ header("Content-type: application/xhtml+xml");
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/abschlusspruefung.class.php');
|
||||
require_once('../include/abschlusspruefung_antritt.class.php');
|
||||
require_once('../include/person.class.php');
|
||||
require_once('../include/benutzer.class.php');
|
||||
require_once('../include/student.class.php');
|
||||
@@ -340,6 +341,10 @@ if ($xmlformat=='rdf')
|
||||
$person = new person();
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
|
||||
$antritt = new abschlusspruefung_antritt();
|
||||
if ($row->pruefungsantritt_kurzbz!='')
|
||||
$antritt->load($row->pruefungsantritt_kurzbz);
|
||||
|
||||
if($mitarbeiter->load($row->vorsitz))
|
||||
$vorsitz = $mitarbeiter->nachname;
|
||||
if($person->load($row->pruefer1))
|
||||
@@ -368,6 +373,11 @@ if ($xmlformat=='rdf')
|
||||
<ABSCHLUSSPRUEFUNG:datum><![CDATA['.$datum_obj->convertISODate($row->datum).']]></ABSCHLUSSPRUEFUNG:datum>
|
||||
<ABSCHLUSSPRUEFUNG:datum_iso><![CDATA['.$row->datum.']]></ABSCHLUSSPRUEFUNG:datum_iso>
|
||||
<ABSCHLUSSPRUEFUNG:uhrzeit><![CDATA['.$row->uhrzeit.']]></ABSCHLUSSPRUEFUNG:uhrzeit>
|
||||
<ABSCHLUSSPRUEFUNG:endezeit><![CDATA['.$row->endezeit.']]></ABSCHLUSSPRUEFUNG:endezeit>
|
||||
<ABSCHLUSSPRUEFUNG:freigabedatum_iso><![CDATA['.$row->freigabedatum.']]></ABSCHLUSSPRUEFUNG:freigabedatum_iso>
|
||||
<ABSCHLUSSPRUEFUNG:freigabedatum><![CDATA['.$datum_obj->convertISODate($row->freigabedatum).']]></ABSCHLUSSPRUEFUNG:freigabedatum>
|
||||
<ABSCHLUSSPRUEFUNG:pruefungsantritt_kurzbz><![CDATA['.$row->pruefungsantritt_kurzbz.']]></ABSCHLUSSPRUEFUNG:pruefungsantritt_kurzbz>
|
||||
<ABSCHLUSSPRUEFUNG:pruefungsantritt_bezeichnung><![CDATA['.$antritt->bezeichnung.']]></ABSCHLUSSPRUEFUNG:pruefungsantritt_bezeichnung>
|
||||
<ABSCHLUSSPRUEFUNG:sponsion><![CDATA['.$datum_obj->convertISODate($row->sponsion).']]></ABSCHLUSSPRUEFUNG:sponsion>
|
||||
<ABSCHLUSSPRUEFUNG:sponsion_iso><![CDATA['.$row->sponsion.']]></ABSCHLUSSPRUEFUNG:sponsion_iso>
|
||||
<ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz><![CDATA['.$row->pruefungstyp_kurzbz.']]></ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz>
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program 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 this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
// header für no cache
|
||||
header("Cache-Control: no-cache");
|
||||
header("Cache-Control: post-check=0, pre-check=0",false);
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Pragma: no-cache");
|
||||
// content type setzen
|
||||
header("Content-type: application/xhtml+xml");
|
||||
// xml
|
||||
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|
||||
// DAO
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/basis_db.class.php');
|
||||
require_once('../include/abschlusspruefung_antritt.class.php');
|
||||
|
||||
$rdf_url='http://www.technikum-wien.at/abschlusspruefung_antritt';
|
||||
|
||||
echo '
|
||||
<RDF:RDF
|
||||
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:ABSCHLUSSPRUEFUNGANTRITT="'.$rdf_url.'/rdf#"
|
||||
>
|
||||
|
||||
<RDF:Seq about="'.$rdf_url.'/liste">
|
||||
';
|
||||
|
||||
$abschluss = new abschlusspruefung_antritt();
|
||||
if (!$abschluss->getAll())
|
||||
die($abschluss->errormsg);
|
||||
|
||||
if (isset($_GET['optional']) && $_GET['optional'] == 'true')
|
||||
{
|
||||
echo '
|
||||
<RDF:li>
|
||||
<RDF:Description id="" about="'.$rdf_url.'/" >
|
||||
<ABSCHLUSSPRUEFUNGANTRITT:pruefungsantritt_kurzbz><![CDATA[]]></ABSCHLUSSPRUEFUNGANTRITT:pruefungsantritt_kurzbz>
|
||||
<ABSCHLUSSPRUEFUNGANTRITT:bezeichnung><![CDATA[-- keine Auswahl --]]></ABSCHLUSSPRUEFUNGANTRITT:bezeichnung>
|
||||
</RDF:Description>
|
||||
</RDF:li>';
|
||||
|
||||
}
|
||||
foreach ($abschluss->result as $row)
|
||||
{
|
||||
echo '
|
||||
<RDF:li>
|
||||
<RDF:Description id="'.$row->pruefungsantritt_kurzbz.'" about="'.$rdf_url.'/'.$row->pruefungsantritt_kurzbz.'" >
|
||||
<ABSCHLUSSPRUEFUNGANTRITT:pruefungsantritt_kurzbz><![CDATA['.$row->pruefungsantritt_kurzbz.']]></ABSCHLUSSPRUEFUNGANTRITT:pruefungsantritt_kurzbz>
|
||||
<ABSCHLUSSPRUEFUNGANTRITT:bezeichnung><![CDATA['.$row->bezeichnung.']]></ABSCHLUSSPRUEFUNGANTRITT:bezeichnung>
|
||||
</RDF:Description>
|
||||
</RDF:li>
|
||||
';
|
||||
}
|
||||
?>
|
||||
</RDF:Seq>
|
||||
</RDF:RDF>
|
||||
+77
-2
@@ -4126,6 +4126,80 @@ if(!$result = @$db->db_query("SELECT akzeptiertamum FROM public.tbl_akte LIMIT 1
|
||||
echo 'public.tbl_akte: Spalte akzeptiertamum hinzugefuegt!<br>';
|
||||
}
|
||||
|
||||
// TABLE lehre.tbl_abschlusspruefung_antritt
|
||||
if (!@$db->db_query("SELECT 0 FROM lehre.tbl_abschlusspruefung_antritt WHERE 0 = 1"))
|
||||
{
|
||||
$qry = '
|
||||
CREATE TABLE lehre.tbl_abschlusspruefung_antritt (
|
||||
pruefungsantritt_kurzbz character varying(20) NOT NULL,
|
||||
bezeichnung character varying(64),
|
||||
bezeichnung_english character varying(64),
|
||||
sort smallint
|
||||
);
|
||||
ALTER TABLE lehre.tbl_abschlusspruefung_antritt ADD CONSTRAINT pk_abschlusspruefung_antritt PRIMARY KEY (pruefungsantritt_kurzbz);
|
||||
INSERT INTO lehre.tbl_abschlusspruefung_antritt(pruefungsantritt_kurzbz, bezeichnung, bezeichnung_english, sort) VALUES (\'erstantritt\', \'Erstantritt\', \'1st Attempt\', 1);
|
||||
INSERT INTO lehre.tbl_abschlusspruefung_antritt(pruefungsantritt_kurzbz, bezeichnung, bezeichnung_english, sort) VALUES (\'erstewiederholung\', \'1. Wiederholung\', \'1st Retake\', 2);
|
||||
INSERT INTO lehre.tbl_abschlusspruefung_antritt(pruefungsantritt_kurzbz, bezeichnung, bezeichnung_english, sort) VALUES (\'zweitewiederholung\', \'2. Wiederholung\', \'2nd Retake\', 3);';
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung_antritt '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Created table lehre.tbl_abschlusspruefung_antritt';
|
||||
|
||||
// GRANT SELECT ON TABLE lehre.tbl_abschlusspruefung_antritt TO web;
|
||||
$qry = 'GRANT SELECT ON TABLE lehre.tbl_abschlusspruefung_antritt TO web;';
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung_antritt '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>web</strong> on lehre.tbl_abschlusspruefung_antritt';
|
||||
|
||||
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_abschlusspruefung_antritt TO vilesci;
|
||||
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE lehre.tbl_abschlusspruefung_antritt TO vilesci;';
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung_antritt '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>vilesci</strong> on lehre.tbl_abschlusspruefung_antritt';
|
||||
|
||||
// GRANT SELECT, UPDATE ON TABLE lehre.tbl_abschlusspruefung TO web;
|
||||
$qry = 'GRANT SELECT, UPDATE ON lehre.tbl_abschlusspruefung TO web;';
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Granted privileges to <strong>web</strong> on lehre.tbl_abschlusspruefung';
|
||||
|
||||
// COMMENT ON TABLE lehre.tbl_abschlusspruefung_antritt
|
||||
$qry = 'COMMENT ON TABLE lehre.tbl_abschlusspruefung_antritt IS \'Type of Abschlusspruefung depending on number of attempts\';';
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>Adding comment to lehre.tbl_abschlusspruefung_antritt: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>Added comment to lehre.tbl_abschlusspruefung_antritt';
|
||||
}
|
||||
// add protokoll,endezeit,pruefungsantritt_kurzbz,freigabedatum to lehre.tbl_abschlusspruefung
|
||||
if(!$result = @$db->db_query("SELECT protokoll,endezeit,pruefungsantritt_kurzbz,freigabedatum FROM lehre.tbl_abschlusspruefung LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE lehre.tbl_abschlusspruefung ADD COLUMN protokoll text;
|
||||
ALTER TABLE lehre.tbl_abschlusspruefung ADD COLUMN endezeit time;
|
||||
ALTER TABLE lehre.tbl_abschlusspruefung ADD COLUMN pruefungsantritt_kurzbz character varying(20);
|
||||
ALTER TABLE lehre.tbl_abschlusspruefung ADD CONSTRAINT fk_abschlusspruefung_antritt FOREIGN KEY (pruefungsantritt_kurzbz) REFERENCES lehre.tbl_abschlusspruefung_antritt (pruefungsantritt_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
ALTER TABLE lehre.tbl_abschlusspruefung ADD COLUMN freigabedatum date;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlusspruefung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>lehre.tbl_abschlusspruefung: Spalten protokoll,endezeit,pruefungsantritt_kurzbz,freigabedatum hinzugefuegt';
|
||||
}
|
||||
|
||||
// Spalte sort in lehre.tbl_abschlussbeurteilung (gibt Reihenfolge der Beurteilungen an)
|
||||
if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_abschlussbeurteilung LIMIT 1;"))
|
||||
{
|
||||
$qry = "ALTER TABLE lehre.tbl_abschlussbeurteilung ADD COLUMN sort smallint;";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_abschlussbeurteilung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>lehre.tbl_abschlussbeurteilung: Spalte sort hinzugefuegt!<br>';
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -4228,8 +4302,9 @@ $tabellen=array(
|
||||
"fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"),
|
||||
"fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"),
|
||||
"fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"),
|
||||
"lehre.tbl_abschlussbeurteilung" => array("abschlussbeurteilung_kurzbz","bezeichnung","bezeichnung_english"),
|
||||
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note"),
|
||||
"lehre.tbl_abschlussbeurteilung" => array("abschlussbeurteilung_kurzbz","bezeichnung","bezeichnung_english","sort"),
|
||||
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
|
||||
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
|
||||
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
|
||||
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id"),
|
||||
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user