diff --git a/application/controllers/person/Gradelist.php b/application/controllers/person/Gradelist.php
new file mode 100644
index 000000000..bf179ad35
--- /dev/null
+++ b/application/controllers/person/Gradelist.php
@@ -0,0 +1,349 @@
+ array('student:r', 'student/noten:r')
+ )
+ );
+
+ // Loads models
+ $this->load->model('person/person_model', 'PersonModel');
+ $this->load->model('organisation/studiengang_model', 'StudiengangModel');
+ $this->load->model('crm/student_model', 'StudentModel');
+ $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
+ $this->load->model('education/zeugnisnote_model', 'ZeugnisnoteModel');
+ $this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel');
+ $this->load->model('codex/note_model', 'NoteModel');
+
+ $this->loadPhrases(
+ array(
+ 'global',
+ 'person',
+ 'lehre',
+ 'ui'
+ )
+ );
+
+ $result_noten = $this->NoteModel->load();
+ foreach ($result_noten->retval as $row)
+ {
+ $this->_grades[$row->note]['positiv'] = $row->positiv;
+ $this->_grades[$row->note]['anmerkung'] = $row->anmerkung;
+ $this->_grades[$row->note]['notenwert'] = $row->notenwert;
+ }
+ }
+
+ /**
+ * Print all Grades of a person
+ * @param $uid UID of the Person
+ */
+ public function index($uid = null)
+ {
+ if (is_null($uid))
+ $uid = getAuthUID();
+
+ // load student
+ $student = $this->StudentModel->load(array($uid));
+ if (!isSuccess($student) || !hasData($student))
+ {
+ echo "You have no Permission or User does not exists";
+ exit;
+ }
+
+ // Check if logged in User has permission to see grades of this person
+ $stg = $this->StudiengangModel->load($student->retval[0]->studiengang_kz);
+ if (!$this->hasPermission($uid, $stg->retval[0]->oe_kurzbz))
+ {
+ echo "You have no Permission or User does not exists";
+ exit;
+ }
+ $person = $this->PersonModel->getByUid($uid);
+
+ $courses = $this->loadCourseInformation($student->retval[0]->prestudent_id, $student->retval[0]->student_uid);
+
+ $data = array (
+ "user" => $uid,
+ "person" => $person->retval[0],
+ "courses" => $courses,
+ "grades" => $this->_grades
+ );
+
+ $this->load->view('person/gradelist/gradelist.php', $data);
+ }
+
+ /**
+ * Check if the Logged in User has permission to see the grades of this person
+ * @param $uid UID of the Person we want to see
+ * @param $oe_kurzbz Organisation Unit of the Person we want to see
+ * @return true if the logged in User is allowed to see the content, false if not
+ */
+ private function hasPermission($uid, $oe_kurzbz)
+ {
+ $loggedinUser = getAuthUID();
+ if($uid != $loggedinUser)
+ {
+ $this->load->library('PermissionLib');
+ if($this->permissionlib->isBerechtigt('student/noten','s',$oe_kurzbz))
+ {
+ return true;
+ }
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+ /**
+ * Loads the Courses and Grades of the Student
+ *
+ * @param $prestudent_id of the Student
+ * @return array with the courses
+ */
+ private function loadCourseInformation($prestudent_id, $uid)
+ {
+ $this->load->library('StudienplanLib');
+
+ // Get status of Student
+ $result_status = $this->PrestudentstatusModel->getStatusByFilter($prestudent_id);
+
+ if (isError($result_status) || !hasData($result_status))
+ {
+ return error('No Status Found');
+ }
+
+ // Get Courses from studyplan for each semester of the student
+ foreach ($result_status->retval as $row_status)
+ {
+ if (in_array($row_status->status_kurzbz,
+ array('Student','Diplomand','Incoming','Abbrecher','Unterbrecher','Absolvent')))
+ {
+ // LVs fuer das Semester holen lt Studienplan
+ $lvtree = $this->studienplanlib->getLehrveranstaltungTree(
+ $row_status->studienplan_id,
+ $row_status->ausbildungssemester,
+ true
+ );
+ $courses['semester'][$row_status->studiensemester_kurzbz]['lvs'] = $lvtree;
+ $courses['semester'][$row_status->studiensemester_kurzbz]['lvs_nonstpl'] = array();
+
+ $result_stpl = $this->StudienplanModel->load($row_status->studienplan_id);
+ if(isSuccess($result_stpl) && hasData($result_stpl))
+ {
+ $stpl_bezeichnung = $result_stpl->retval[0]->bezeichnung;
+ }
+ else
+ $stpl_bezeichnung = 'unknown';
+
+ $courses['semester'][$row_status->studiensemester_kurzbz]['data'] = array(
+ 'status' => $row_status->status_kurzbz,
+ 'ausbildungssemester' => $row_status->ausbildungssemester,
+ 'studiensemester_kurzbz' => $row_status->studiensemester_kurzbz,
+ 'studienplan_id' => $row_status->studienplan_id,
+ 'studienplan_bezeichnung' => $stpl_bezeichnung,
+ );
+ }
+ }
+
+ // Load Grades and add to studyplan
+ $result_zeugnis = $this->ZeugnisnoteModel->loadWhere(array("student_uid" => $uid));
+
+ if (isSuccess($result_zeugnis) && hasData($result_zeugnis))
+ {
+ foreach ($courses['semester'] as $key=>$value)
+ {
+ $this->fillNotenPart(
+ $result_zeugnis,
+ $courses['semester'][$key]['lvs'],
+ $value['data']['studiensemester_kurzbz']
+ );
+ }
+ }
+
+ // Build Array of Courses that are not part of the studyplan
+ foreach ($result_zeugnis->retval as $row_noten)
+ {
+ if (!isset($row_noten->found))
+ {
+ $result_lv = $this->LehrveranstaltungModel->load($row_noten->lehrveranstaltung_id);
+ $courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array(
+ 'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id,
+ 'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz,
+ 'pflicht' => false,
+ 'bezeichnung' => $result_lv->retval[0]->bezeichnung,
+ 'ects' => $result_lv->retval[0]->ects,
+ 'note' => $row_noten->note,
+ 'datum' => $row_noten->benotungsdatum
+ );
+ if(!isset($courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl']))
+ $courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] = 0;
+ $courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] += $result_lv->retval[0]->ects;
+ }
+ }
+
+ $sum_gradeweighted_overall = 0;
+ $sum_ectsweighted_overall = 0;
+ $sum_grades_overall = 0;
+ $num_grades_overall = 0;
+ $sum_ects_overall = 0;
+ $sum_ects_positiv_overall = 0;
+
+ // Calculate Sum and Average
+ foreach ($courses['semester'] as $stsem => $row_lvs)
+ {
+ $grades = $this->getGrades($row_lvs['lvs']);
+
+ $num_grades = 0;
+ $sum_ects = 0;
+ $sum_ects_positiv = 0;
+ $sum_grades = 0;
+ $notendurchschnitt = 0;
+ $sum_gradeweighted = 0;
+ $sum_ectsweighted = 0;
+
+ foreach ($grades as $row)
+ {
+ if ($this->_grades[$row['note']]['notenwert'] != '')
+ {
+ $num_grades++;
+ $sum_grades += $this->_grades[$row['note']]['notenwert'];
+
+ $sum_ectsweighted += $row['ects'];
+ $sum_gradeweighted += $row['ects'] * $this->_grades[$row['note']]['notenwert'];
+ }
+ $sum_ects += $row['ects'];
+ if ($this->_grades[$row['note']]['positiv'])
+ $sum_ects_positiv += $row['ects'];
+ }
+ if ($num_grades > 0)
+ $notendurchschnitt = $sum_grades / $num_grades;
+ else
+ $notendurchschnitt = 0;
+
+ if ($sum_ectsweighted > 0)
+ $notendurchschnittgewichtet = $sum_gradeweighted / $sum_ectsweighted;
+ else
+ $notendurchschnittgewichtet = 0;
+
+ $num_grades_overall += $num_grades;
+ $sum_grades_overall += $sum_grades;
+ $sum_gradeweighted_overall += $sum_gradeweighted;
+ $sum_ectsweighted_overall += $sum_ectsweighted;
+ $sum_ects_overall += $sum_ects;
+ $sum_ects_positiv_overall += $sum_ects_positiv;
+
+ $courses['semester'][$stsem]['data']['notendurchschnitt'] = number_format($notendurchschnitt, 2);
+ $courses['semester'][$stsem]['data']['notendurchschnittgewichtet'] = number_format($notendurchschnittgewichtet, 2);
+ $courses['semester'][$stsem]['data']['ectssumme'] = number_format($sum_ects,2);
+ $courses['semester'][$stsem]['data']['ectssumme_positiv'] = number_formaT($sum_ects_positiv,2);
+ }
+
+ if ($num_grades_overall > 0)
+ $notendurchschnitt = $sum_grades_overall / $num_grades_overall;
+ else
+ $notendurchschnitt = 0;
+
+ if ($sum_ectsweighted_overall > 0)
+ $notendurchschnittgewichtet = $sum_gradeweighted_overall / $sum_ectsweighted_overall;
+ else
+ $notendurchschnittgewichtet = 0;
+
+ $courses['overall'] = array(
+ 'notendurchschnitt' => number_format($notendurchschnitt, 2),
+ 'notendurchschnittgewichtet' => number_format($notendurchschnittgewichtet, 2),
+ 'ectssumme' => $sum_ects_overall,
+ 'ectssumme_positiv' => $sum_ects_positiv_overall
+ );
+ return $courses;
+ }
+
+ /**
+ * Combines the Studyplan Courses recursively with the Grades of the Student
+ * Grades that are found in the Studyplan are marked, the others are added to a separate list
+ * @param $noten reference to array of all grades.
+ * @param $courses reference to array of all courses.
+ * @param $studiensemester_kurzbz Studiensemester of the Course and Grades
+ */
+ private function fillNotenPart(&$noten, &$courses, $studiensemester_kurzbz)
+ {
+ foreach ($courses as $key => $value)
+ {
+ foreach ($noten->retval as $notenkey => $row_noten)
+ {
+ if ($row_noten->lehrveranstaltung_id == $value['lehrveranstaltung_id']
+ && $row_noten->studiensemester_kurzbz == $studiensemester_kurzbz)
+ {
+ $courses[$key]['note'] = $row_noten->note;
+ $courses[$key]['datum'] = $row_noten->benotungsdatum;
+ $noten->retval[$notenkey]->found = true;
+ }
+ if (isset($value['childs']))
+ $this->fillNotenPart($noten, $courses[$key]['childs'], $studiensemester_kurzbz);
+ }
+ }
+ }
+
+ /**
+ * Reads all the Courses recursivly and Returns an Array with the Grades and ECTS
+ * @param $courses array of courses
+ * @return array with grades and ects
+ */
+ public function getGrades($courses)
+ {
+ $grades = array();
+ foreach ($courses as $row)
+ {
+ if (isset($row['note']) && $row['note'] != '')
+ {
+ $grades[] = array(
+ 'note' => $row['note'],
+ 'ects' => $row['ects']
+ );
+ }
+
+ if ($row['childs'])
+ {
+ $childgrades = $this->getGrades($row['childs']);
+ $grades = array_merge($grades, $childgrades);
+ }
+ }
+ return $grades;
+ }
+
+ /**
+ * Helper Function to Display recursive Courses
+ * @param $course array if courses
+ * @param $depth integer defines the number parent elements
+ */
+ static function printRow($course, $depth)
+ {
+ $ci =& get_instance();
+ $ci->load->view('person/gradelist/course.php',
+ array(
+ 'course' => $course,
+ 'depth' => $depth
+ )
+ );
+
+ if (isset($course['childs']))
+ {
+ foreach ($course['childs'] as $row_course)
+ Gradelist::printRow($row_course, $depth + 1);
+ }
+ }
+}
diff --git a/application/libraries/StudienplanLib.php b/application/libraries/StudienplanLib.php
new file mode 100644
index 000000000..c40120721
--- /dev/null
+++ b/application/libraries/StudienplanLib.php
@@ -0,0 +1,72 @@
+ci =& get_instance();
+
+ // Loads model Organisationseinheit_model
+ $this->ci->load->model('organisation/Studienplan_model', 'StudienplanModel');
+ }
+
+ public function getLehrveranstaltungTree($studienplan_id, $semester, $studplan = null)
+ {
+ $tree = array();
+ $data = $this->ci->StudienplanModel->getStudienplanLehrveranstaltung($studienplan_id, $semester);
+ if(isSuccess($data) && hasData($data))
+ {
+ $this->lehrveranstaltungen = $data->retval;
+ foreach($this->lehrveranstaltungen as $row)
+ {
+ if (!is_null($studplan) && $row->export != $studplan)
+ continue;
+
+ if (is_null($row->studienplan_lehrveranstaltung_id_parent))
+ {
+ $treeitem = array(
+ 'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
+ 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz,
+ 'pflicht' => $row->pflicht,
+ 'bezeichnung' => $row->bezeichnung,
+ 'ects' => $row->ects
+ );
+ $childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id);
+ if(is_array($childs) && count($childs) > 0)
+ $treeitem['childs'] = $childs;
+ $tree[] = $treeitem;
+ }
+ }
+ }
+ return $tree;
+ }
+
+ private function getChildElements($studienplan_lehrveranstaltung_id)
+ {
+ $subtree = array();
+
+ foreach($this->lehrveranstaltungen as $row)
+ {
+ if($studienplan_lehrveranstaltung_id == $row->studienplan_lehrveranstaltung_id_parent)
+ {
+ $treeitem = array(
+ 'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
+ 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz,
+ 'pflicht' => $row->pflicht,
+ 'bezeichnung' => $row->bezeichnung,
+ 'ects' => $row->ects
+ );
+ $childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id);
+ if(is_array($childs))
+ $treeitem['childs'] = $childs;
+ $subtree[] = $treeitem;
+ }
+ }
+ return $subtree;
+ }
+}
diff --git a/application/models/crm/Student_model.php b/application/models/crm/Student_model.php
index 0d03fd50f..532658208 100644
--- a/application/models/crm/Student_model.php
+++ b/application/models/crm/Student_model.php
@@ -14,13 +14,13 @@ class Student_model extends DB_Model
}
// ****
-// * Generiert die Matrikelnummer
-// * FORMAT: 0710254001
-// * 07 = Jahr
-// * 1/2/0 = WS/SS/incoming
-// * 0254 = Studiengangskennzahl vierstellig
-// * 001 = Laufende Nummer
-// ****
+ // * Generiert die Matrikelnummer
+ // * FORMAT: 0710254001
+ // * 07 = Jahr
+ // * 1/2/0 = WS/SS/incoming
+ // * 0254 = Studiengangskennzahl vierstellig
+ // * 001 = Laufende Nummer
+ // ****
public function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
{
$jahr = mb_substr($studiensemester_kurzbz, 4);
diff --git a/application/models/organisation/Studienplan_model.php b/application/models/organisation/Studienplan_model.php
index 5fe7ef44d..2c3b36c03 100644
--- a/application/models/organisation/Studienplan_model.php
+++ b/application/models/organisation/Studienplan_model.php
@@ -11,35 +11,46 @@ class Studienplan_model extends DB_Model
$this->dbTable = "lehre.tbl_studienplan";
$this->pk = "studienplan_id";
}
-
+
public function getStudienplaene($studiengang_kz)
{
$this->addJoin("lehre.tbl_studienordnung", "studienordnung_id");
-
+
return $this->loadWhere(array("studiengang_kz" => $studiengang_kz));
}
-
+
public function getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester = null, $orgform_kurzbz = null)
{
$this->addJoin("lehre.tbl_studienordnung", "studienordnung_id");
$this->addJoin("lehre.tbl_studienplan_semester", "studienplan_id");
-
+
$whereArray = array(
"tbl_studienplan.aktiv" => "TRUE",
"tbl_studienordnung.studiengang_kz" => $studiengang_kz,
"tbl_studienplan_semester.studiensemester_kurzbz" => $studiensemester_kurzbz
);
-
+
if(!is_null($ausbildungssemester))
{
$whereArray["tbl_studienplan_semester.semester"] = $ausbildungssemester;
}
-
+
if(!is_null($orgform_kurzbz))
{
$whereArray["orgform_kurzbz"] = $orgform_kurzbz;
}
-
+
return $this->StudienplanModel->loadWhere($whereArray);
}
-}
\ No newline at end of file
+
+ public function getStudienplanLehrveranstaltung($studienplan_id, $semester)
+ {
+ $this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id');
+ $this->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id');
+ $this->addOrder('tbl_lehrveranstaltung.sort');
+ return $this->loadWhere(array(
+ 'studienplan_id' => $studienplan_id,
+ 'tbl_studienplan_lehrveranstaltung.semester' => $semester
+ ));
+ }
+}
diff --git a/application/views/person/gradelist/course.php b/application/views/person/gradelist/course.php
new file mode 100644
index 000000000..1f1f1911b
--- /dev/null
+++ b/application/views/person/gradelist/course.php
@@ -0,0 +1,16 @@
+
+
+ |
+ |
+
+
+ |
+
diff --git a/application/views/person/gradelist/gradelist.php b/application/views/person/gradelist/gradelist.php
new file mode 100644
index 000000000..f00978294
--- /dev/null
+++ b/application/views/person/gradelist/gradelist.php
@@ -0,0 +1,52 @@
+load->view(
+ 'templates/FHC-Header',
+ array(
+ 'title' => 'Gradelist',
+ 'jquery' => true,
+ 'jqueryui' => true,
+ 'bootstrap' => true,
+ 'fontawesome' => true,
+ 'ajaxlib' => true,
+ 'customCSSs' => array(
+ 'public/css/tools/gradelist.css'
+ ),
+ 'customJSs' => array(
+ 'public/js/bootstrapper.js'
+ )
+ )
+ );
+?>
+
+
+
+
+
+
+ p->t('lehre', 'notendurchschnitt'); ?>:
+
+ p->t('lehre', 'gewichteternotendurchschnitt'); ?>:
+
+ p->t('lehre', 'ects'); ?>:
+
+
+ $row_semester)
+ {
+ $this->load->view('person/gradelist/semester.php', $row_semester);
+ }
+ ?>
+
+
+
+
+
+
+load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/person/gradelist/semester.php b/application/views/person/gradelist/semester.php
new file mode 100644
index 000000000..ae9bbc5bc
--- /dev/null
+++ b/application/views/person/gradelist/semester.php
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+ 0):
+
+ echo '
Lehrveranstaltungen laut Studienplan '.$semesterdata['studienplan_bezeichnung'].'
';
+ ?>
+
+
+
+ | p->t('lehre','lehrveranstaltung');?> |
+ p->t('lehre','ects');?> |
+ p->t('lehre','note');?> |
+
+
+
+
+
+
+
+ |
+
+
+ |
+ |
+
+
+
+ 0):
+ ?>
+
p->t('lehre','nichtstudienplanrelevanteKurse'); ?>
+
+
+
+ | p->t('lehre','lehrveranstaltung');?> |
+ p->t('lehre','ects');?> |
+ p->t('lehre','note');?> |
+
+
+
+
+
+
+
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php
index f48c97cc1..6a96eb6f9 100644
--- a/application/views/templates/FHC-Header.php
+++ b/application/views/templates/FHC-Header.php
@@ -93,10 +93,11 @@
// NavigationWidget CSS
if ($navigationwidget === true) generateCSSsInclude('public/css/NavigationWidget.css');
+ generateCSSsInclude('public/css/fhcomplete.css');
+
// Eventually required CSS
generateCSSsInclude($customCSSs); // Eventually required CSS
-
// --------------------------------------------------------------------------------------------------------
// Javascripts
diff --git a/content/fas.xul.php b/content/fas.xul.php
index 9f31ec1c3..6f6c3a19a 100644
--- a/content/fas.xul.php
+++ b/content/fas.xul.php
@@ -110,6 +110,7 @@ foreach($addon_obj->result as $addon)
+
@@ -371,6 +372,12 @@ foreach($addon_obj->result as $addon)
label = "&menu-statistic-notenspiegel.label;"
command = "menu-statistic-notenspiegel:command"
accesskey = "&menu-statistic-notenspiegel.accesskey;"/>
+
diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php
index a4a2c4347..0e8f5fb12 100644
--- a/content/fasoverlay.js.php
+++ b/content/fasoverlay.js.php
@@ -1077,6 +1077,26 @@ function StatistikPrintNotenspiegelErweitert(typ)
window.open('content/statistik/notenspiegel_erweitert.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel');
}
+function StatistikPrintNotenspiegelStudent()
+{
+ var tree = document.getElementById('student-tree');
+ var data='';
+ //Wenn nichts markiert wurde -> alle exportieren
+ if(tree.currentIndex==-1)
+ {
+ alert("Bitte zuerst einen Studenten markieren");
+ return;
+ }
+
+ var student_uid = getTreeCellText(tree, 'student-treecol-uid', tree.currentIndex);
+ if (student_uid == '')
+ {
+ alert('Markierte Person ist kein Student');
+ return;
+ }
+ window.open('index.ci.php/person/gradelist/index/'+student_uid,'Notenspiegel');
+}
+
// ****
// * Liefert eine statistik ueber die Anzahl der Interessenten/Bewerber Studenten
// ****
diff --git a/locale/de-AT/fas.dtd b/locale/de-AT/fas.dtd
index cad80671f..1fb4fde7f 100644
--- a/locale/de-AT/fas.dtd
+++ b/locale/de-AT/fas.dtd
@@ -114,6 +114,10 @@
+
+
+
+
diff --git a/public/css/fhcomplete.css b/public/css/fhcomplete.css
new file mode 100644
index 000000000..1f8de48b9
--- /dev/null
+++ b/public/css/fhcomplete.css
@@ -0,0 +1,23 @@
+.page-header {
+ margin: 10px 0 5px;
+}
+h1 {
+ font-size: 2rem;
+}
+h2 {
+ font-size: 1.8rem;
+}
+h3 {
+ font-size: 1.6rem;
+}
+
+h4 {
+ font-size: 1.4rem;
+}
+h5 {
+ font-size: 1.2rem;
+}
+h6 {
+ font-size: 1rem;
+
+}
diff --git a/public/css/sbadmin2/tablesort_bootstrap.css b/public/css/sbadmin2/tablesort_bootstrap.css
index e190f77e3..d10d7306e 100644
--- a/public/css/sbadmin2/tablesort_bootstrap.css
+++ b/public/css/sbadmin2/tablesort_bootstrap.css
@@ -19,6 +19,10 @@
border-bottom: #ccc 2px solid !important;
}
+/* Remove black border at top of table footer */
+.tablesorter-default tfoot > tr > th {
+ border-top: #ccc 2px solid !important;
+}
/* set colors of zebra widget */
table.tablesorter tbody tr.even td, table.tablesorter tbody tr.even:hover, table.tablesorter tbody tr.even td:hover{
background-color: #ffff;
@@ -57,4 +61,4 @@ table.tablesort-hover tr:hover, .tablesort-active{
/* bring datepicker to front */
#ui-datepicker-div{
z-index: 9999 !important;
-}
\ No newline at end of file
+}
diff --git a/public/css/tools/gradelist.css b/public/css/tools/gradelist.css
new file mode 100644
index 000000000..68c7fff36
--- /dev/null
+++ b/public/css/tools/gradelist.css
@@ -0,0 +1,40 @@
+.gradetable > thead > tr > th{
+ border-bottom: 1px solid black;
+}
+.gradetable > tbody > tr > td{
+ border-bottom: 1px solid #eeeeee;
+}
+.gradetable > tfoot > tr > th {
+ border-top: 1px solid black;
+}
+.gradelist_row_lv {
+}
+.gradelist_row_modul > td {
+ border-bottom: 1px solid black;
+ background-color: #eeeeee;
+}
+
+.gradelist_row_grade_positiv {
+ color: green;
+}
+.gradelist_row_grade_negativ {
+ color: red;
+}
+.gradelist_row_depth_1 > td:first-child {
+ padding-left: 15px !important;
+}
+.gradelist_row_depth_2 > td:first-child {
+ padding-left: 30px !important;
+}
+.gradelist_row_depth_3 > td:first-child {
+ padding-left: 45px !important;
+}
+.gradelist_row_depth_4 > td:first-child {
+ padding-left: 60px !important;
+}
+.gradelist_row_depth_5 > td:first-child {
+ padding-left: 75px !important;
+}
+.gradelist_row_depth_6 > td:first-child {
+ padding-left: 90px !important;
+}
diff --git a/public/js/PhrasesLib.js b/public/js/PhrasesLib.js
index 64b10759d..adedfa33d 100644
--- a/public/js/PhrasesLib.js
+++ b/public/js/PhrasesLib.js
@@ -25,7 +25,10 @@ var FHC_PhrasesLib = {
* @param {Object} params : parameters to be replaced instead of {} in phraseObj.text
* @returns {String} : phrase-text
*/
- t: function(category, phrase, params = {}) {
+ t: function(category, phrase, params) {
+
+ if (typeof(params)=='undefined')
+ params = {};
// Checks if FHC_JS_PHRASES_STORAGE_OBJECT is an array
if ($.isArray(FHC_JS_PHRASES_STORAGE_OBJECT))
diff --git a/system/checksystem.php b/system/checksystem.php
index 73b16e3b3..7bdf96446 100644
--- a/system/checksystem.php
+++ b/system/checksystem.php
@@ -92,6 +92,7 @@ $beschreibung=1;
$berechtigungen = array(
array('admin','Super User Rechte'),
array('assistenz','Assistenz'),
+ array('student','Defaultberechtigung für Studierende'),
array('basis/addon','Addons verwalten'),
array('basis/ampel','Ampeln Administrieren'),
array('basis/ampeluebersicht','Ampel Übersicht für Leiter'),
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 4f9d885d0..95cefaa85 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -1519,7 +1519,6 @@ $phrases = array(
)
)
),
-
array(
'app' => 'core',
'category' => 'filter',
@@ -1541,9 +1540,6 @@ $phrases = array(
)
),
-
-
-
//**************************** CORE/person
array(
'app' => 'core',
@@ -2207,8 +2203,126 @@ $phrases = array(
)
)
),
-
-
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'ects',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'notendurchschnitt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Notendurchschnitt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Grade average',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'gewichteternotendurchschnitt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'gewichteter Notendurchschnitt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'weighted grade point average',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'note',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Note',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Grade',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'lehrveranstaltung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Lehrveranstaltung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Course',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'nichtstudienplanrelevanteKurse',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nicht studienplanrelevante Lehrveranstaltung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'additional Courses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
//********************** INFOCENTER/infocenter
array(