diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php index c3648d4fa..7d75af4bc 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php @@ -82,10 +82,14 @@ $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); $uid = (isset($_GET['uid'])?$_GET['uid']:''); $noten_anmerkung=array(); +$noten_arr=array(); $note_obj = new note(); $note_obj->getAll(); foreach($note_obj->result as $row) - $noten_anmerkung[$row->anmerkung]=$row->note; +{ + $noten_anmerkung[$row->anmerkung] = $row->note; + $noten_arr[$row->note] = $row; +} //Studiensemester laden $stsem_obj = new studiensemester(); @@ -238,12 +242,20 @@ if (isset($_REQUEST["submit"])) } // Hole Zeugnisnote wenn schon eine eingetragen ist - /* if ($zeugnisnote = new zeugnisnote($lvid, $student_uid, $stsem)) + { $znote = $zeugnisnote->note; - else - $znote = null; - */ + + $notenobj = $noten_arr[$znote]; + + // Note nicht speichern wenn Zeugnisnote nicht überschreibbar + if (!$notenobj->lkt_ueberschreibbar) + { + $response .= "\n".$p->t('benotungstool/noteNichtUeberschreibbar', array($matrikelnummer, $notenobj->bezeichnung)); + continue; + } + } + $val=savenote($db,$lvid, $student_uid, $note, $punkte); if($val!='neu' && $val!='update' && $val!='update_f') $response.=$val; diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index fa9bdc980..d98d96e2a 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -181,6 +181,7 @@ foreach ($noten_obj->result as $row) $noten_array[$row->note]['positiv'] = $row->positiv; $noten_array[$row->note]['aktiv'] = $row->aktiv; $noten_array[$row->note]['lehre'] = $row->lehre; + $noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar; $noten_array[$row->note]['anmerkung'] = $row->anmerkung; foreach ($sprachen->result AS $s) $noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache]; @@ -1249,21 +1250,30 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG action='" . $_SERVER['PHP_SELF'] . "?lvid=$lvid&lehreinheit_id=$lehreinheit_id&stsem=$stsem'> "; - + + // nur überschreibbare Noten können geändert werden + $ueberschreibbar = is_null($znote) || $noten_array[$znote]['lkt_ueberschreibbar']; // Punkte if (CIS_GESAMTNOTE_PUNKTE) { + $htmlstring .= ' '; + size="3"'; + + if ($ueberschreibbar) + $htmlstring .= ' oninput="PunkteEingabe(' . $i . ')"'; + else + $htmlstring .= ' disabled="disabled"'; + + $htmlstring .= '/>'; } - + // Noten DropDown - if ($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) + if (($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) || $ueberschreibbar == false) $disabled = 'disabled="disabled"'; else $disabled = ''; @@ -1281,10 +1291,13 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } $htmlstring .= ''; $htmlstring .= " - - - - "; + "; + if ($ueberschreibbar) + { + $htmlstring .= ""; + } + $htmlstring .= " + "; } else { @@ -1370,13 +1383,18 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG $htmlstring .= ' ' . $pr_datum . ' ' . $pr_notenbezeichnung . ' - - '; + if ($ueberschreibbar) + { + $htmlstring .= + ' - - '; + onclick="' . $onclick . '">'; + } + $htmlstring .= + ' + '; } $htmlstring .= ""; $htmlstring .= ""; @@ -1386,12 +1404,16 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG { if (! is_null($note_lv) || ! is_null($znote)) { - $htmlstring .= " - "; + if ($ueberschreibbar) + { + $htmlstring .= + " - "; + onclick='pruefungAnlegen(\"" . $uid . "\",\"\",\"\",\"\",\"\")'>"; + } + $htmlstring .= ""; } else { @@ -1445,7 +1467,7 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } else { - if (! is_null($note_lv) || ! is_null($znote)) + if ((! is_null($note_lv) || ! is_null($znote)) && $ueberschreibbar) { $htmlstring .= " diff --git a/include/note.class.php b/include/note.class.php index 9936930db..b948f1be9 100644 --- a/include/note.class.php +++ b/include/note.class.php @@ -42,6 +42,7 @@ class note extends basis_db public $aktiv; // boolean public $lehre; // boolean public $offiziell; // boolean + public $lkt_ueberschreibbar; // boolean public $bezeichnung_mehrsprachig; // varchar (64)[] /** @@ -78,7 +79,8 @@ class note extends basis_db notenwert, aktiv, lehre, - offiziell, + offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note @@ -98,6 +100,7 @@ class note extends basis_db $this->lehre = $this->db_parse_bool($row->lehre); $this->aktiv = $this->db_parse_bool($row->aktiv); $this->offiziell = $this->db_parse_bool($row->offiziell); + $this->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); return true; } @@ -151,7 +154,7 @@ class note extends basis_db $idx = sprache::$index_arr[$key]; $qry .= " bezeichnung_mehrsprachig[$idx],"; } - $qry .= ' offiziell) VALUES('. + $qry .= ' offiziell, lkt_ueberschreibbar) VALUES('. $this->db_add_param($this->note).', '. $this->db_add_param($this->bezeichnung).', '. $this->db_add_param($this->anmerkung).', '. @@ -163,8 +166,9 @@ class note extends basis_db foreach($this->bezeichnung_mehrsprachig as $key=>$value) $qry .= $this->db_add_param($value).','; - $qry .= $this->db_add_param($this->offiziell, FHC_BOOLEAN).');'; - + $qry .= $this->db_add_param($this->offiziell, FHC_BOOLEAN); + $qry .= $this->db_add_param($this->lkt_ueberschreibbar, FHC_BOOLEAN).');'; + } else @@ -184,7 +188,8 @@ class note extends basis_db $qry .= " bezeichnung_mehrsprachig[$idx]=".$this->db_add_param($value).", "; } - $qry .= ' offiziell='.$this->db_add_param($this->offiziell, FHC_BOOLEAN).' '. + $qry .= ' offiziell='.$this->db_add_param($this->offiziell, FHC_BOOLEAN).', '. + $qry .= ' lkt_ueberschreibbar='.$this->db_add_param($this->lkt_ueberschreibbar, FHC_BOOLEAN).' '. 'WHERE note='.$this->db_add_param($this->note).';'; @@ -218,7 +223,8 @@ class note extends basis_db notenwert, aktiv, lehre, - offiziell, + offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note "; @@ -242,7 +248,8 @@ class note extends basis_db $n->notenwert = $row->notenwert; $n->aktiv = $this->db_parse_bool($row->aktiv); $n->lehre = $this->db_parse_bool($row->lehre); - $n->offiziell = $this->db_parse_bool($row->lehre); + $n->offiziell = $this->db_parse_bool($row->offiziell); + $n->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $n->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->result[] = $n; @@ -274,6 +281,7 @@ class note extends basis_db aktiv, lehre, offiziell, + lkt_ueberschreibbar, $bezeichnung_mehrsprachig FROM lehre.tbl_note @@ -299,7 +307,8 @@ class note extends basis_db $n->notenwert = $row->notenwert; $n->aktiv = $this->db_parse_bool($row->aktiv); $n->lehre = $this->db_parse_bool($row->lehre); - $n->offiziell = $this->db_parse_bool($row->lehre); + $n->offiziell = $this->db_parse_bool($row->offiziell); + $n->lkt_ueberschreibbar = $this->db_parse_bool($row->lkt_ueberschreibbar); $n->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->result[] = $n; diff --git a/locale/de-AT/benotungstool.php b/locale/de-AT/benotungstool.php index b8a34b83a..e8ef6d8d6 100644 --- a/locale/de-AT/benotungstool.php +++ b/locale/de-AT/benotungstool.php @@ -149,6 +149,7 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Prüfung anlegen für'; $this->phrasen['benotungstool/kreuzerltool']='Kreuzerltool'; $this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Der Student %s %s (%s) ist dieser Lehrveranstaltung nicht zugeordnet. Die Note wird nicht uebernommen!'; $this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student mit Matrikelnummer %s existiert nicht.'; +$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Für Student mit Matrikelnummer %s eingetragene Zeugnisote %s ist nicht überschreibbar'; $this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Fehlerhafte Note bei Student %s %s'; $this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='Derzeit gibt es keine Kreuzerllisten für diese Lehrveranstaltung'; $this->phrasen['benotungstool/notenuebersichtFuer']='Notenübersicht für'; diff --git a/locale/en-US/benotungstool.php b/locale/en-US/benotungstool.php index c70524f12..94b0e7891 100644 --- a/locale/en-US/benotungstool.php +++ b/locale/en-US/benotungstool.php @@ -148,6 +148,7 @@ $this->phrasen['benotungstool/pruefungAnlegenFuer']='Create an examination for ' $this->phrasen['benotungstool/kreuzerltool']='"Kreuzerl" tool'; $this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Student is not assigned to this course. The grade was not accepted!'; $this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Student with student ID number %s does not exist.'; +$this->phrasen['benotungstool/noteNichtUeberschreibbar']='Transcript grade %2$s for student with Personal identifier %1$s is not rewritable'; $this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Incorrect grade for student %s %s'; $this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='There are currently no checklists for this course'; $this->phrasen['benotungstool/notenuebersichtFuer']='Grade list for'; diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 581ee4388..a7fba3ba8 100755 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -506,6 +506,17 @@ if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;")) echo '
lehre.tbl_note: Spalte offiziell hinzugefuegt!
'; } +// Spalte lkt_ueberschreibbar in lehre.tbl_note +if(!$result = @$db->db_query("SELECT lkt_ueberschreibbar FROM lehre.tbl_note LIMIT 1;")) +{ + $qry = "ALTER TABLE lehre.tbl_note ADD COLUMN lkt_ueberschreibbar boolean NOT NULL DEFAULT true;"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
'; + else + echo '
lehre.tbl_note: Spalte lkt_ueberschreibbar hinzugefuegt!
'; +} + // Spalte bezeichnung_mehrsprachig in lehre.tbl_note if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM lehre.tbl_note LIMIT 1")) {