Merge branch 'master' into feature-40953/LV-Template_Uebersichtsseite

# Conflicts:
#	system/phrasesupdate.php
This commit is contained in:
Cris
2024-10-16 09:44:50 +02:00
24 changed files with 761 additions and 191 deletions
@@ -22,7 +22,9 @@ class Lehrveranstaltung extends FHCAPI_Controller
public function __construct()
{
parent::__construct(array(
'getTemplateLvTree' => self::PERM_LOGGED
'getTemplateLvTree' => array(
'lehre/lehrveranstaltung:rw'
)
));
// Load model LehrveranstaltungModel
+21 -5
View File
@@ -5,8 +5,12 @@ if (! defined("BASEPATH")) exit("No direct script access allowed");
class UHSTAT1 extends FHC_Controller
{
const BERECHTIGUNG_UHSTAT_VERWALTEN = 'student/uhstat1daten_verwalten';
const LOGIN_SESSION_INDEX = 'bewerbung/user';
const PERSON_ID_SESSION_INDEX = 'bewerbung/personId';
const CODEX_OESTERREICH = 'A';
const CODEX_UNKNOWN_YEAR = 9999;
const CODEX_UNKNOWN_NATION = 'XXX';
const CODEX_UNKNOWN_BILDUNGMAX = 999;
const LOWER_BOUNDARY_YEARS = 160;
const UPPER_BOUNDARY_YEARS = 20;
@@ -210,7 +214,9 @@ class UHSTAT1 extends FHC_Controller
else
return true;
if (!isset($bildungsstaat)) return true;
// if no Bildungsstaat or Bildungmax unknown - valid
if (!isset($bildungsstaat) || $bildungmax == self::CODEX_UNKNOWN_BILDUNGMAX) return true;
// find out if abschluss is in Austria
$this->AbschlussModel->addSelect("in_oesterreich");
@@ -219,8 +225,11 @@ class UHSTAT1 extends FHC_Controller
if (hasData($abschlussRes))
{
$in_oesterreich = getData($abschlussRes)[0]->in_oesterreich;
// invalid if abschluss in Austria, but not Bildungsstaat, or abschluss not in Austria, but Bildungsstaat in Austria
return ($in_oesterreich && $bildungsstaat == self::CODEX_OESTERREICH) || (!$in_oesterreich && $bildungsstaat != self::CODEX_OESTERREICH);
// valid if Bildungsstaat and Abschluss in Austria, or Bildungsstaat and Abschluss not in Austria
// (or Abschluss not in Austria and Bildungsstaat unknown)
return ($in_oesterreich && $bildungsstaat == self::CODEX_OESTERREICH)
|| (!$in_oesterreich && ($bildungsstaat != self::CODEX_OESTERREICH || $bildungsstaat == self::CODEX_UNKNOWN_NATION));
}
return false;
@@ -363,7 +372,11 @@ class UHSTAT1 extends FHC_Controller
// get realistic birth years, dated back from current year
$currYear = date("Y");
$formMetaData['jahre'] = range($currYear - self::UPPER_BOUNDARY_YEARS, $currYear - self::LOWER_BOUNDARY_YEARS);
$yearRange = range($currYear - self::UPPER_BOUNDARY_YEARS, $currYear - self::LOWER_BOUNDARY_YEARS);
$formMetaData['jahre'] = array_combine($yearRange, $yearRange);
// add "unknown" option
$formMetaData['jahre'][self::CODEX_UNKNOWN_YEAR] = 'unbekannt';
return success($formMetaData);
}
@@ -411,7 +424,10 @@ class UHSTAT1 extends FHC_Controller
private function _getValidPersonId($berechtigungsArt)
{
// if coming from bewerbungstool - person id is in session (person must be logged in bewerbungstool)
if (isset($_SESSION[self::PERSON_ID_SESSION_INDEX]) && is_numeric($_SESSION[self::PERSON_ID_SESSION_INDEX]))
if (isset($_SESSION[self::PERSON_ID_SESSION_INDEX])
&& is_numeric($_SESSION[self::PERSON_ID_SESSION_INDEX])
&& isset($_SESSION[self::LOGIN_SESSION_INDEX])
)
return $_SESSION[self::PERSON_ID_SESSION_INDEX];
// if person id passed directly...
@@ -51,7 +51,7 @@ class OneTimeMessages extends JOB_Controller
FROM public.tbl_prestudent p
JOIN public.tbl_prestudentstatus ps USING (prestudent_id)
JOIN public.tbl_studiengang s USING (studiengang_kz)
WHERE ps.status_kurzbz = \'Wartender\'
WHERE get_rolle_prestudent(ps.prestudent_id, NULL) = \'Wartender\'
AND ps.studiensemester_kurzbz = ?
AND ps.datum <= NOW() - \''.$days.' days\'::interval
AND s.typ = ?
@@ -8,7 +8,7 @@ class LvTemplateUebersicht extends Auth_Controller
// Set required permissions
parent::__construct(
array(
'index' => 'basis/vilesci:rw',
'index' => 'lehre/lehrveranstaltung:rw',
)
);
-6
View File
@@ -1463,12 +1463,6 @@ class AntragLib
elseif($antrag->status == Studierendenantragstatus_model::STATUS_APPROVED && $antrag->datum > $datumStatus)
return success(-2);
}
if ($antrag->typ == Studierendenantrag_model::TYP_UNTERBRECHUNG)
{
// NOTE(chris): Ignore canceled ones
if ($antrag->status == Studierendenantragstatus_model::STATUS_CANCELLED)
continue;
}
if ($antrag->typ == Studierendenantrag_model::TYP_WIEDERHOLUNG)
{
if($antrag->status == Studierendenantragstatus_model::STATUS_PASS)
@@ -15,7 +15,6 @@ class PlausicheckDefinitionLib
'AktSemesterNull' => 'AktSemesterNull',
'AktiverStudentOhneStatus' => 'AktiverStudentOhneStatus',
'AusbildungssemPrestudentUngleichAusbildungssemStatus' => 'AusbildungssemPrestudentUngleichAusbildungssemStatus',
'BewerberNichtZumRtAngetreten' => 'BewerberNichtZumRtAngetreten',
'DatumAbschlusspruefungFehlt' => 'DatumAbschlusspruefungFehlt',
'DatumSponsionFehlt' => 'DatumSponsionFehlt',
'DatumStudiensemesterFalscheReihenfolge' => 'DatumStudiensemesterFalscheReihenfolge',
@@ -36,6 +35,7 @@ class PlausicheckDefinitionLib
'StudentstatusNachAbbrecher' => 'StudentstatusNachAbbrecher',
'DualesStudiumOhneMarkierung' => 'DualesStudiumOhneMarkierung'
//'StudienplanUngueltig' => 'StudienplanUngueltig'
//'BewerberNichtZumRtAngetreten' => 'BewerberNichtZumRtAngetreten'
);
/**
@@ -33,6 +33,23 @@ class Bismeldestichtag_model extends DB_Model
]);
}
/**
* Liefert nächstliegenden Bismeldestichtag.
* @return object success or error
*/
public function getNextMeldestichtag()
{
$this->addSelect('meldestichtag');
$this->addSelect('studiensemester_kurzbz');
$this->addOrder('meldestichtag', 'ASC');
$this->addLimit(1);
return $this->loadWhere([
'meldestichtag >= NOW()' => null
]);
}
/**
* Prüft, ob Meldestichtag für ein bestimmtes Statusdatum und Studiensemester erreicht ist.
*
@@ -10,5 +10,6 @@ class Lvgesamtnote_model extends DB_Model
parent::__construct();
$this->dbTable = 'campus.tbl_lvgesamtnote';
$this->pk = array('student_uid', 'studiensemester_kurzbz', 'lehrveranstaltung_id');
$this->hasSequence = false;
}
}
@@ -25,7 +25,7 @@ class Paabgabe_model extends DB_Model
WHERE projektarbeit_id = ?
AND paabgabetyp_kurzbz = 'end'
AND paabg.abgabedatum IS NOT NULL
ORDER BY paabg.abgabedatum, paabg.datum DESC
ORDER BY paabg.abgabedatum DESC, paabg.datum DESC
LIMIT 1";
return $this->execQuery($qry, array($projektarbeit_id));
@@ -175,6 +175,8 @@ class Pruefung_model extends DB_Model
$this->addSelect('campus.get_status_studierendenantrag(a.studierendenantrag_id) status');
$this->addSelect('pss.ausbildungssemester');
$this->addJoin('(SELECT MAX(datum) AS datum, lehreinheit_id AS le_id, student_uid AS stud_uid FROM lehre.tbl_pruefung p WHERE pruefungstyp_kurzbz IN (\'kommPruef\', \'zusKommPruef\') GROUP BY lehreinheit_id, student_uid) lpd',
'p.datum = lpd.datum AND p.lehreinheit_id = lpd.le_id AND p.student_uid = lpd.stud_uid');
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
$this->addJoin('public.tbl_student s', 'student_uid');
@@ -96,7 +96,8 @@ class Studierendenantrag_model extends DB_Model
Studierendenantragstatus_model::STATUS_REJECTED,
Studierendenantragstatus_model::STATUS_OBJECTION_DENIED,
Studierendenantragstatus_model::STATUS_DEREGISTERED,
Studierendenantragstatus_model::STATUS_PAUSE
Studierendenantragstatus_model::STATUS_PAUSE,
Studierendenantragstatus_model::STATUS_REMINDERSENT
]);
$this->db->or_group_start();
$this->db->where('s.studierendenantrag_statustyp_kurzbz', Studierendenantragstatus_model::STATUS_APPROVED);
@@ -354,7 +355,7 @@ class Studierendenantrag_model extends DB_Model
$this->db->where([
'prestudent_id' => $prestudent_id,
'typ' => Studierendenantrag_model::TYP_UNTERBRECHUNG,
'campus.get_status_studierendenantrag(studierendenantrag_id) !=' => Studierendenantragstatus_model::STATUS_CANCELLED,
'campus.get_status_studierendenantrag(studierendenantrag_id) NOT IN (\'' . Studierendenantragstatus_model::STATUS_CANCELLED . '\', \'' . Studierendenantragstatus_model::STATUS_REJECTED . '\')' => null,
'start < ' . $end => null,
'datum_wiedereinstieg > ' . $start => null,
]);
@@ -410,7 +411,7 @@ class Studierendenantrag_model extends DB_Model
FROM campus.tbl_studierendenantrag
LEFT JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE typ=?
AND campus.get_status_studierendenantrag(studierendenantrag_id) != ?
AND campus.get_status_studierendenantrag(studierendenantrag_id) NOT IN ?
AND prestudent_id=?
) a ON (s.start < a.ende AND s.ende > a.start)
WHERE s.start >= (" . $subquery . ")
@@ -420,7 +421,10 @@ class Studierendenantrag_model extends DB_Model
return $this->execQuery($sql, [
$max_length,
self::TYP_UNTERBRECHUNG,
Studierendenantragstatus_model::STATUS_CANCELLED,
array(
Studierendenantragstatus_model::STATUS_CANCELLED,
Studierendenantragstatus_model::STATUS_REJECTED
),
$prestudent_id,
$studiensemester ?: $prestudent_id,
$max_length * $max_starters
@@ -32,11 +32,20 @@ class Geschaeftsjahr_model extends DB_Model
* Gets next Geschaeftsjahr, as determined by its start date
* @return array|null
*/
public function getNextGeschaeftsjahr()
public function getNextGeschaeftsjahr($offsetDays=null)
{
$query = 'SELECT *
FROM public.tbl_geschaeftsjahr
WHERE start > now()
FROM public.tbl_geschaeftsjahr WHERE ';
if(!is_null($offsetDays))
{
$query .= "start > now() - '".$offsetDays." days'::interval";
}
else
{
$query .= 'start > now()';
}
$query .= '
ORDER BY start
LIMIT 1';
@@ -327,7 +327,7 @@ class Recipient_model extends DB_Model
pr.nachname,
ms.person_id,
mrou.token
ORDER BY sent DESC';
ORDER BY sent DESC LIMIT 1500';
return $this->execQuery($sql, array($person_id, $functions, $person_id));
}
+102 -60
View File
@@ -74,16 +74,23 @@ $saved = isset($saved) && $saved === true;
<div class="form-group">
<label for="mutter_geburtsjahr" class="col-sm-3 control-label"><?php echo ucfirst($this->p->t('uhstat', 'geburtsjahr')) ?></label>
<div class="col-sm-9">
<select type="text" name="mutter_geburtsjahr" id="mutter_geburtsjahr" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['jahre'] as $jahr): ?>
<option
value="<?php echo $jahr ?>"
<?php echo $jahr == $mutter_geburtsjahr ? " selected" : "" ?>>
<?php echo $jahr ?>
</option>
<?php endforeach; ?>
</select>
<div class="input-group">
<select type="text" name="mutter_geburtsjahr" id="mutter_geburtsjahr" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['jahre'] as $jahrKey => $jahr): ?>
<option
value="<?php echo $jahrKey ?>"
<?php echo $jahrKey == $mutter_geburtsjahr ? " selected" : "" ?>>
<?php echo $jahr ?>
</option>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('mutter_geburtsjahr').value = 9999; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('mutter_geburtsjahr'); ?>
</div>
</div>
@@ -94,16 +101,23 @@ $saved = isset($saved) && $saved === true;
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
</label>
<div class="col-sm-9">
<select type="text" name="mutter_geburtsstaat" id="mutter_geburtsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $mutter_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<div class="input-group">
<select type="text" name="mutter_geburtsstaat" id="mutter_geburtsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $mutter_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('mutter_geburtsstaat').value = 'XXX'; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('mutter_geburtsstaat'); ?>
</div>
</div>
@@ -114,16 +128,23 @@ $saved = isset($saved) && $saved === true;
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
</label>
<div class="col-sm-9">
<select type="text" name="mutter_bildungsstaat" id="mutter_bildungsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $mutter_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<div class="input-group">
<select type="text" name="mutter_bildungsstaat" id="mutter_bildungsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $mutter_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('mutter_bildungsstaat').value = 'XXX'; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('mutter_bildungsstaat'); ?>
</div>
</div>
@@ -161,16 +182,23 @@ $saved = isset($saved) && $saved === true;
<div class="form-group">
<label for="vater_geburtsjahr" class="col-sm-3 control-label"><?php echo ucfirst($this->p->t('uhstat', 'geburtsjahr')) ?></label>
<div class="col-sm-9">
<select type="text" name="vater_geburtsjahr" id="vater_geburtsjahr" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['jahre'] as $jahr): ?>
<option
value="<?php echo $jahr ?>"
<?php echo $vater_geburtsjahr == $jahr ? " selected" : "" ?>>
<div class="input-group">
<select type="text" name="vater_geburtsjahr" id="vater_geburtsjahr" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['jahre'] as $jahrKey => $jahr): ?>
<option
value="<?php echo $jahrKey ?>"
<?php echo $vater_geburtsjahr == $jahrKey ? " selected" : "" ?>>
<?php echo $jahr ?>
</option>
<?php endforeach; ?>
</select>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('vater_geburtsjahr').value = 9999; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('vater_geburtsjahr'); ?>
</div>
</div>
@@ -181,16 +209,23 @@ $saved = isset($saved) && $saved === true;
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
</label>
<div class="col-sm-9">
<select type="text" name="vater_geburtsstaat" id="vater_geburtsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $vater_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<div class="input-group">
<select type="text" name="vater_geburtsstaat" id="vater_geburtsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $vater_geburtsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('vater_geburtsstaat').value = 'XXX'; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('vater_geburtsstaat'); ?>
</div>
</div>
@@ -201,16 +236,23 @@ $saved = isset($saved) && $saved === true;
<?php echo '('.ucfirst($this->p->t('uhstat', 'inDenHeutigenGrenzen')).')' ?>
</label>
<div class="col-sm-9">
<select type="text" name="vater_bildungsstaat" id="vater_bildungsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $vater_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<div class="input-group">
<select type="text" name="vater_bildungsstaat" id="vater_bildungsstaat" class="form-control" <?php echo $disabled ?>>
<option disabled selected value=""><?php echo $this->p->t('uhstat', 'bitteAuswaehlen') ?></option>
<?php foreach ($formMetaData['nation'] as $nation): ?>
<option
value="<?php echo $nation->nation_code ?>"
<?php echo $vater_bildungsstaat == $nation->nation_code ? " selected" : "" ?>>
<?php echo $nation->nation_text ?>
</option>
<?php endforeach; ?>
</select>
<span class="input-group-btn">
<button type="button" class="btn btn-default" onclick="document.getElementById('vater_bildungsstaat').value = 'XXX'; return false;" <?php echo $disabled ?>>
<?php echo $this->p->t('uhstat', 'unbekannt') ?>
</button>
</span>
</div>
<?php echo form_error('vater_bildungsstaat'); ?>
</div>
</div>
@@ -271,7 +313,7 @@ $saved = isset($saved) && $saved === true;
</div>
</form>
<?php endif; ?>
</div>
</div>
</div> <!-- subcontainer -->
</div> <!-- container -->
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -10,7 +10,10 @@ $includesArray = array(
'navigationcomponent' => true,
'filtercomponent' => true,
'customJSModules' => array('public/js/apps/lehre/lvplanung/LvTemplates.js'),
'customCSSs' => array('public/css/Fhc.css')
'customCSSs' => array(
'public/css/Fhc.css',
'public/css/lvTemplateUebersicht.css'
)
);
$this->load->view('templates/FHC-Header', $includesArray);
+1
View File
@@ -70,6 +70,7 @@ $menu=array
'link'=>'left.php?categorie=Lehre', 'target'=>'nav',
'Gruppenverwaltung'=>array('name'=>'Gruppen', 'permissions'=>array('admin','lv-plan','support','lehre/gruppe'), 'link'=>'stammdaten/lvbgruppenverwaltung.php', 'target'=>'main'),
'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'),
'lvTemplateUebersicht'=>array('name'=>'LV-Template Übersicht', 'link'=>'../index.ci.php/lehre/lvplanung/LvTemplateUebersicht', 'target'=>'_blank'),
'Studienordnung'=>array('name'=>'Studienordnung', 'link'=>'lehre/studienordnung.php', 'target'=>'_blank','permissions'=>array('lehre/studienordnung')),
'StudienplanGueltigkeit'=>array('name'=>'Studienplan Gültigkeit', 'link'=>'lehre/studienplan_gueltigkeit.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')),
'StudienplanVorruecken'=>array('name'=>'Studienplan vorrücken', 'link'=>'lehre/studienplan_vorrueckung.php', 'target'=>'main','permissions'=>array('lehre/studienplan')),
+3
View File
@@ -0,0 +1,3 @@
html {
font-size: .75em;
}
@@ -15,8 +15,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {BismeldestichtagTabulatorOptions} from './TabulatorSetup.js';
import {BismeldestichtagTabulatorEventHandlers} from './TabulatorSetup.js';
import {BismeldestichtagHelper} from './BismeldestichtagHelper.js';
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
@@ -29,8 +28,60 @@ import Phrasen from '../../plugin/Phrasen.js';
const bismeldestichtagApp = Vue.createApp({
data: function() {
return {
bismeldestichtagTabulatorOptions: BismeldestichtagTabulatorOptions,
bismeldestichtagTabulatorEventHandlers: BismeldestichtagTabulatorEventHandlers,
bismeldestichtagTabulatorOptions: {
maxHeight: "100%",
minHeight: 50,
layout: 'fitColumns',
index: 'meldestichtag_id',
initialSort:[
{column:"meldestichtag", dir:"desc"}
],
columns: [
{title: 'Meldestichtag', field: 'meldestichtag', headerFilter: true, formatter: function(cell){
return BismeldestichtagHelper.formatDate(cell.getValue());
}
},
{title: 'Studiensemester', field: 'studiensemester_kurzbz', headerFilter: true, sorter:function(a, b, aRow, bRow, column, dir, sorterParams) {
//aRow, bRow - the row components for the values being compared
let semesterStartA = new Date(aRow.getData().semester_start);
let semesterStartB = new Date(bRow.getData().semester_start);
return semesterStartA - semesterStartB; // difference between studiensemester start dates
}
},
{title: 'Semesterstart',field: 'semester_start', headerFilter: true, visible: false, formatter: function(cell){
return BismeldestichtagHelper.formatDate(cell.getValue());
}
},
{title: 'ID', field: 'meldestichtag_id', headerFilter: true, visible: false},
{title: 'Insertamum', field: 'insertamum', headerFilter: true, visible: false},
{title: 'Insertvon', field: 'insertvon', headerFilter: true, visible: false},
{title: 'Löschen', field: 'loeschen', headerFilter: false, formatter:function(cell){
return '<button class="btn btn-outline-secondary delete-btn" data-meldestichtag-id="'+cell.getRow().getIndex()+'">'+
'<i class="fa fa-xmark"></i>'+
'</button>';
}
}
]
},
bismeldestichtagTabulatorEventHandlers: [
{
event: "rowClick",
handler: function(e, row) {
if (e.target.nodeName == 'DIV') {
let data = row.getData();
alert(data.studiensemester_kurzbz + ': ' + BismeldestichtagHelper.formatDate(data.meldestichtag));
}
}
},
{
event: "tableBuilt",
handler: () => {
this.handlerStudiensemester();
}
}
],
meldestichtag: null, // date of Meldestichtag
semList: null, // all Studiensemester for dropdown
currSem: null, // selected Studiensemester
@@ -47,9 +98,6 @@ const bismeldestichtagApp = Vue.createApp({
CoreFetchCmpt,
"datepicker": VueDatePicker
},
created() {
this.handlerStudiensemester();
},
methods: {
/**
* Define Studiensemester call and method to be executed after the call
@@ -0,0 +1,22 @@
/**
* Copyright (C) 2022 fhcomplete.org
*
* 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 3 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, see <https://www.gnu.org/licenses/>.
*/
export const BismeldestichtagHelper = {
formatDate: function(date) {
return date.replace(/(.*)-(.*)-(.*)/, '$3.$2.$1');
}
}
@@ -1,75 +0,0 @@
/**
* Copyright (C) 2022 fhcomplete.org
*
* 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 3 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, see <https://www.gnu.org/licenses/>.
*/
/**
*
*/
export const BismeldestichtagTabulatorOptions = {
maxHeight: "100%",
minHeight: 50,
layout: 'fitColumns',
index: 'meldestichtag_id',
columns: [
{title: 'Meldestichtag',field: 'meldestichtag', headerFilter: true, formatter: function(cell){
return BismeldestichtagTabulatorHelperFunctions._formatDate(cell.getValue());
}
},
{title: 'Studiensemester', field: 'studiensemester_kurzbz', headerFilter: true, sorter:function(a, b, aRow, bRow, column, dir, sorterParams) {
//aRow, bRow - the row components for the values being compared
let semesterStartA = new Date(aRow.getData().semester_start);
let semesterStartB = new Date(bRow.getData().semester_start);
return semesterStartA - semesterStartB; // difference between studiensemester start dates
}
},
{title: 'Semesterstart',field: 'semester_start', headerFilter: true, visible: false, formatter: function(cell){
return BismeldestichtagTabulatorHelperFunctions._formatDate(cell.getValue());
}
},
{title: 'ID', field: 'meldestichtag_id', headerFilter: true, visible: false},
{title: 'Insertamum', field: 'insertamum', headerFilter: true, visible: false},
{title: 'Insertvon', field: 'insertvon', headerFilter: true, visible: false},
{title: 'Löschen', field: 'loeschen', headerFilter: false, formatter:function(cell){
return '<button class="btn btn-outline-secondary delete-btn" data-meldestichtag-id="'+cell.getRow().getIndex()+'">'+
'<i class="fa fa-xmark"></i>'+
'</button>';
}
}
]
};
/**
*
*/
export const BismeldestichtagTabulatorEventHandlers = [
{
event: "rowClick",
handler: function(e, row) {
if (e.target.nodeName == 'DIV') {
let data = row.getData();
alert(data.studiensemester_kurzbz + ': ' + BismeldestichtagTabulatorHelperFunctions._formatDate(data.meldestichtag));
}
}
}
];
let BismeldestichtagTabulatorHelperFunctions = {
_formatDate: function(date) {
return date.replace(/(.*)-(.*)-(.*)/, '$3.$2.$1');
}
}
@@ -21,6 +21,45 @@ export default {
},
computed: {
tabulatorOptions() {
const fhcValuesLookup = function(cell) {
var values = {};
const field = cell.getField();
const data = cell.getTable().getData();
const collectvalues = function(rows, field) {
var values = {};
var childvalues = {};
for(const row of rows) {
const rowvalue = (row[field] !== null) ? row[field] : '';
values[rowvalue] = rowvalue;
if(row['_children'] && row['_children'].length > 0) {
childvalues = collectvalues(row['_children'], field);
values = {...values, ...childvalues}
}
}
return values;
}
values = collectvalues(data, field);
const vals = Object.keys(values).sort();
if(vals.indexOf('') === -1) {
vals.unshift('');
}
return vals;
};
const fhctreefilter = function(headerValue, rowValue, rowData, filterParams){
if (rowData['_children'] && rowData['_children'].length > 0) {
for (var i in rowData['_children']) {
return rowValue == headerValue ||
fhctreefilter(
headerValue,
rowData['_children'][i][filterParams.field],
rowData['_children'][i],
filterParams
);
}
}
return rowValue == headerValue;
};
const self = this;
return {
// NOTE: data is set on table built to await preselected actual Studiensemester
@@ -42,11 +81,11 @@ export default {
columns: [
{title: 'LV-ID', field: 'lehrveranstaltung_id', headerFilter: true, visible: false},
{title: 'LV Kurzbz', field: 'kurzbz', headerFilter: true, visible:false, width: 70},
{title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: true, visible:true, width: 80},
{title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_kurzbz'}, visible:true, width: 80},
{title: 'OrgEinheit', field: 'lv_oe_bezeichnung', headerFilter: true, visible: false, width: 250},
{title: 'Lehrtyp Kurzbz', field: 'lehrtyp_kurzbz', headerFilter: true, visible:false, width: 70},
{title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: true, width: 150},
{title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: true, width: 70},
{title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_bezeichnung'}, width: 150},
{title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'orgform_kurzbz'}, width: 70},
{title: 'Semester', field: 'semester', headerFilter: true, width: 50},
{title: 'Lehrveranstaltung', field: 'lv_bezeichnung', headerFilter: true, minWidth: 250},
{title: 'Lehrveranstaltung ENG', field: 'bezeichnung_english', headerFilter: true, minWidth: 250},
+22 -10
View File
@@ -1,15 +1,11 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
if ($result = $db->db_query("SELECT * FROM information_schema.views WHERE table_catalog = '" . DB_NAME . "' AND table_schema = 'public' AND table_name = 'vw_oe_path'"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "
$qry = "
CREATE OR REPLACE VIEW public.vw_oe_path AS
WITH RECURSIVE vw_oe_path(oe_kurzbz, bezeichnung, oe_parent_kurzbz, organisationseinheittyp_kurzbz, oetyp_bezeichnung, depth, path) AS (
WITH RECURSIVE vw_oe_path(oe_kurzbz, bezeichnung, oe_parent_kurzbz, organisationseinheittyp_kurzbz, oetyp_bezeichnung, depth, path, path_kurzbz) AS (
SELECT
oe.oe_kurzbz, oe.bezeichnung, oe.oe_parent_kurzbz, oe.organisationseinheittyp_kurzbz, oetyp.bezeichnung AS oetyp_bezeichnung, 0, '/' || oetyp.bezeichnung || ' ' || oe.bezeichnung AS path
oe.oe_kurzbz, oe.bezeichnung, oe.oe_parent_kurzbz, oe.organisationseinheittyp_kurzbz, oetyp.bezeichnung AS oetyp_bezeichnung, 0, '/' || oetyp.bezeichnung || ' ' || oe.bezeichnung AS path, '/' || oe.oe_kurzbz AS path_kurzbz
FROM
public.tbl_organisationseinheit oe
JOIN
@@ -18,7 +14,7 @@ if ($result = $db->db_query("SELECT * FROM information_schema.views WHERE table_
oe.oe_parent_kurzbz IS NULL
UNION ALL
SELECT
oe.oe_kurzbz, oe.bezeichnung, oe.oe_parent_kurzbz, oe.organisationseinheittyp_kurzbz, oetyp.bezeichnung AS oetyp_bezeichnung, depth + 1, oet.path || '/' || oetyp.bezeichnung || ' ' || oe.bezeichnung
oe.oe_kurzbz, oe.bezeichnung, oe.oe_parent_kurzbz, oe.organisationseinheittyp_kurzbz, oetyp.bezeichnung AS oetyp_bezeichnung, depth + 1, oet.path || '/' || oetyp.bezeichnung || ' ' || oe.bezeichnung, oet.path_kurzbz || '/' || oe.oe_kurzbz AS path_kurzbz
FROM
public.tbl_organisationseinheit oe, vw_oe_path oet
JOIN
@@ -29,11 +25,27 @@ if ($result = $db->db_query("SELECT * FROM information_schema.views WHERE table_
SELECT * FROM vw_oe_path ORDER BY path, depth;
GRANT SELECT ON public.vw_oe_path TO vilesci;
";
";
if ($result = $db->db_query("SELECT * FROM information_schema.views WHERE table_catalog = '" . DB_NAME . "' AND table_schema = 'public' AND table_name = 'vw_oe_path'"))
{
if($db->db_num_rows($result) == 0)
{
if (!$db->db_query($qry))
echo '<strong>public.vw_oe_path: ' . $db->db_last_error() . '</strong><br />';
else
echo 'public.vw_oe_path: erstellt<br />';
}
}
if ($result = $db->db_query("SELECT * FROM information_schema.columns WHERE table_catalog = '" . DB_NAME . "' AND table_schema = 'public' AND table_name = 'vw_oe_path' AND column_name = 'path_kurzbz'"))
{
if($db->db_num_rows($result) == 0)
{
if (!$db->db_query($qry))
echo '<strong>public.vw_oe_path: ' . $db->db_last_error() . '</strong><br />';
else
echo 'public.vw_oe_path: neu erstellt mit zusätzlicher spalte path_kurzbz<br />';
}
}
+427 -5
View File
@@ -9987,13 +9987,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 20 Abs. 2 und 3).',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 20 Para. 2 and 3).',
'description' => '',
'insertvon' => 'system'
)
@@ -18148,6 +18148,26 @@ array(
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'alledurchgefuehrten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Alle durchgeführten anzeigen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Show all performed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
@@ -18663,6 +18683,366 @@ array(
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusGeplant',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'geplant',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'planned',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusGeplantDesc',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Studierende hat die Maßnahme geplant.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The student has planned the measure.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusAkzeptiert',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'akzeptiert',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'accepted',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusAkzeptiertDesc',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die geplante Maßnahme wurde akzeptiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The planned measure has been accepted.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusDurchgefuehrt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'durchgeführt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'performed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusDurchgefuehrtDesc',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Eine Bestätigung wurde hochgeladen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'A confirmation has been uploaded.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusBestaetigt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'bestätigt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'confirmed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusBestaetigtDesc',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die hochgeladene Bestätigung wurde akzeptiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The uploaded confirmation has been accepted.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusAbgelehnt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'abgelehnt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'declined',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'statusAbgelehntDesc',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Maßnahme wurde abgelehnt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The measure was rejected.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'ampelRed',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es wurden keine Maßnahmen geplant oder alle wurden abgelehnt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No measures have been planned, or all have been rejected.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'ampelYellow',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mindestens eine Maßnahme wurde akzeptiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'At least one measure has been accepted.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'ampelOrange',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es gibt mindestens eine geplante oder durchgeführte Maßnahme.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'There is at least one planned or performed measure.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'ampelGreenyellow',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nur bestätigte Maßnahmen vorhanden, aber weniger als 5 ECTs.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Only confirmed measures, but fewer than 5 ECTs.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'ampelGreen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Es wurden 5 ECTs erreicht.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '5 ECTs points have been achieved.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'mailMeldungzuviele',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Anzahl der Empfänger überschreitet 50. Bitte verwenden Sie einen Filter (z.B. Semester), um die Empfängeranzahl zu reduzieren.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The number of recipients exceeds 50. Please use a filter (e.g., semester) to reduce the number of recipients.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'mailMeldung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Keine Studierenden ohne geplante Maßnahmen gefunden.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'No students without planned measures were found.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'mailButton',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'E-Mail nur an Studierende, die keine Maßnahmen geplant haben.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Send email only to students who have no planned measures.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
@@ -18703,6 +19083,26 @@ array(
)
)
),
array(
'app' => 'international',
'category' => 'international',
'phrase' => 'mailversenden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mail versenden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Send mail',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'international',
'category' => 'international',
@@ -25253,7 +25653,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'personalverwaltung',
'category' => 'gehaltsband',
@@ -28826,13 +29226,13 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Softwareanforderung für die Lehre',
'text' => 'Softwareanforderung und Lizenzmanagement für die Lehre',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Software Request for Education',
'text' => 'Software Request and License management for Education',
'description' => '',
'insertvon' => 'system'
)
@@ -30745,6 +31145,28 @@ array(
)
)
),
// Betriebsmittel end
array(
'app' => 'core',
'category' => 'uhstat',
'phrase' => 'unbekannt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'unbekannt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'unknown',
'description' => '',
'insertvon' => 'system'
)
)
)
);
+14 -6
View File
@@ -106,7 +106,7 @@ echo '<!DOCTYPE HTML>
</script>
</head>
<body style="background-color:#eeeeee;">
<h2>Lehreinheiten Vorr&uuml;ckung</h2>
<h2>LV-Teile Vorr&uuml;ckung</h2>
';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">';
echo 'Studiengang: <SELECT name="studiengang_kz">';
@@ -246,9 +246,17 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
{
$anzahl_nach = $db->db_num_rows($result);
$baseurl = basename($_SERVER['REQUEST_URI']);
if ($anzahl_nach >= $anzahl_von && !isset($_GET['continue']))
if ($anzahl_von == 0 && !isset($_GET['continue']))
{
echo '<br><br><span style="color:red">Es sind schon Lehreinheiten fuer das
echo '<br><br><span style="color:orange">Es sind kein LV-Teile im
'.$stsem_von.' in '.$stg_arr[$studiengang_kz].' '.$semester.' vorhanden.
Trotzdem fortsetzen?</span><br><br>
<form action="'.$baseurl.'&continue" method="POST"><input type="submit" value="Fortsetzen"></form>';
die ();
}
elseif ($anzahl_von > 0 && $anzahl_nach >= $anzahl_von && !isset($_GET['continue']))
{
echo '<br><br><span style="color:red">Es sind schon '.$anzahl_nach.' LV-Teile fuer das
'.$stsem_nach.' in '.$stg_arr[$studiengang_kz].' '.$semester.' vorhanden.
Trotzdem fortsetzen?</span><br><br>
<form action="'.$baseurl.'&continue" method="POST"><input type="submit" value="Fortsetzen"></form>';
@@ -553,15 +561,15 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
}
else
{
$text .= 'Fehler beim Laden der Lehreinheiten '.$db->db_last_error();
$text .= 'Fehler beim Laden der LV-Teile '.$db->db_last_error();
$error_lehreinheit++;
}
echo "<br><br>";
echo "Vorgerueckte Lehreinheiten: $anzahl_lehreinheiten<br>";
echo "Vorgerueckte LV-Teile: $anzahl_lehreinheiten<br>";
echo "Vorgerueckte LEMitarbeiter: $anzahl_lehreinheitmitarbeiter<br>";
echo "Vorgerueckte LEGruppen: $anzahl_lehreinheitgruppe<br>";
echo "Fehler bei Lehreinheiten: $error_lehreinheit<br>";
echo "Fehler bei LV-Teil: $error_lehreinheit<br>";
echo "Fehler bei LEMitarbeiter: $error_lehreinheitmitarbeiter<br>";
echo "Fehler bei LEGruppen: $error_lehreinheitmitarbeiter<br>";