diff --git a/.gitignore b/.gitignore index 8ebe61e25..f2e4d7bdb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ tests/codeception/tests/unit.suite.yml /sparks/* /webdav/google.php system/sql/ +.ptp-sync* \ No newline at end of file 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('global', 'uebersicht')); ?> - + vorname.' '.$person->nachname.' ('.$user.')';?> +

+
+
+
+ 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/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 9baac9ea6..67c4dcf38 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -9,6 +9,7 @@ $LOGDATA_NAME_PARKED = '\'Parked\''; $LOGTYPE_KURZBZ = '\'Processstate\''; $STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\''; + $ADDITIONAL_STG = '10021,10027'; $query = ' WITH currentOrNextStudiensemester AS ( @@ -64,7 +65,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bestaetigtam IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND NOT EXISTS ( SELECT 1 FROM tbl_prestudentstatus spss @@ -83,7 +87,10 @@ AND pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bestaetigtam IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss) AND NOT EXISTS ( SELECT 1 @@ -104,7 +111,11 @@ AND pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bestaetigtam IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND ( + sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss) AND NOT EXISTS ( SELECT 1 @@ -125,7 +136,10 @@ AND pss.bewerbung_abgeschicktamum IS NOT NULL AND pss.bestaetigtam IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss) AND NOT EXISTS ( SELECT 1 @@ -146,7 +160,10 @@ AND pss.bewerbung_abgeschicktamum IS NULL AND pss.bestaetigtam IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss) AND NOT EXISTS ( SELECT 1 @@ -166,7 +183,10 @@ WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.') AND pss.bewerbung_abgeschicktamum IS NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.start >= NOW()) AND NOT EXISTS ( SELECT 1 @@ -206,7 +226,10 @@ FROM public.tbl_prestudent sps JOIN public.tbl_studiengang ssg USING(studiengang_kz) WHERE sps.person_id = p.person_id - AND ssg.typ IN ('.$STUDIENGANG_TYP.') + AND (ssg.typ IN ('.$STUDIENGANG_TYP.') + OR + ssg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND '.$INTERESSENT_STATUS.' = ( SELECT spss.status_kurzbz FROM public.tbl_prestudentstatus spss diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 2a64f2478..c59702a65 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -7,6 +7,7 @@ 'bootstrap' => true, 'fontawesome' => true, 'jqueryui' => true, + 'dialoglib' => true, 'ajaxlib' => true, 'tablesorter' => true, 'tinymce' => true, diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index b3ee8c9e5..be8a4fe7f 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -6,6 +6,7 @@ $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; $LOGDATA_NAME = '\'Login with code\', \'New application\''; $REJECTED_STATUS = '\'Abgewiesener\''; + $ADDITIONAL_STG = '10021,10027'; $query = ' SELECT @@ -51,7 +52,10 @@ JOIN public.tbl_studiengang sg USING(studiengang_kz) WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.bestaetigtam is not null AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC @@ -65,7 +69,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC LIMIT 1 @@ -78,7 +85,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) AND NOT EXISTS ( SELECT 1 @@ -97,7 +107,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) LIMIT 1 ) AS "StgAbgeschickt", @@ -167,7 +180,10 @@ FROM public.tbl_prestudent ps JOIN public.tbl_studiengang sg USING(studiengang_kz) WHERE ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND EXISTS ( SELECT 1 FROM public.tbl_prestudentstatus pss diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php index 2a976771b..fd1d2a607 100644 --- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php +++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php @@ -5,6 +5,7 @@ $STUDIENGANG_TYP = '\'b\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; $LOGDATA_NAME = '\'Login with code\', \'New application\''; + $ADDITIONAL_STG = '10021,10027'; $query = ' SELECT @@ -41,7 +42,10 @@ JOIN public.tbl_studiengang sg USING(studiengang_kz) WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC LIMIT 1 @@ -54,7 +58,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC LIMIT 1 @@ -67,7 +74,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) LIMIT 1 ) AS "AnzahlAbgeschickt", @@ -79,7 +89,10 @@ WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.' AND pss.bewerbung_abgeschicktamum IS NOT NULL AND ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW()) LIMIT 1 ) AS "StgAbgeschickt", @@ -167,7 +180,10 @@ FROM public.tbl_prestudent ps JOIN public.tbl_studiengang sg USING(studiengang_kz) WHERE ps.person_id = p.person_id - AND sg.typ IN ('.$STUDIENGANG_TYP.') + AND (sg.typ IN ('.$STUDIENGANG_TYP.') + OR + sg.studiengang_kz in('.$ADDITIONAL_STG.') + ) AND EXISTS ( SELECT 1 FROM public.tbl_prestudentstatus pss diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 785ac0184..6a96eb6f9 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -18,15 +18,16 @@ $addons = isset($addons) ? $addons : false; $ajaxlib = isset($ajaxlib) ? $ajaxlib : false; $bootstrap = isset($bootstrap) ? $bootstrap : false; + $dialoglib = isset($dialoglib) ? $dialoglib : false; $filterwidget = isset($filterwidget) ? $filterwidget : false; $fontawesome = isset($fontawesome) ? $fontawesome : false; $jquery = isset($jquery) ? $jquery : false; $jqueryui = isset($jqueryui) ? $jqueryui : false; $jquerytreetable = isset($jquerytreetable) ? $jquerytreetable : false; $navigationwidget = isset($navigationwidget) ? $navigationwidget : false; + $pivotui = isset($pivotui) ? $pivotui : false; $sbadmintemplate = isset($sbadmintemplate) ? $sbadmintemplate : false; $tablesorter = isset($tablesorter) ? $tablesorter : false; - $pivotui = isset($pivotui) ? $pivotui : false; $tinymce = isset($tinymce) ? $tinymce : false; ?> @@ -51,16 +52,12 @@ // Bootstrap CSS if ($bootstrap === true) generateCSSsInclude('vendor/twbs/bootstrap/dist/css/bootstrap.min.css'); + // jQuery treetable + if ($jquerytreetable === true) generateCSSsInclude('vendor/ludo/jquery-treetable/css/jquery.treetable.css'); + // Font Awesome CSS if ($fontawesome === true) generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css'); - // Table sorter CSS - if ($tablesorter === true) - { - generateCSSsInclude('vendor/mottie/tablesorter/dist/css/theme.default.min.css'); - generateCSSsInclude('vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css'); - } - // PivotUI CSS if ($pivotui === true) { @@ -74,8 +71,12 @@ generateCSSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css'); } - // jQuery treetable - if ($jquerytreetable === true) generateCSSsInclude('vendor/ludo/jquery-treetable/css/jquery.treetable.css'); + // Table sorter CSS + if ($tablesorter === true) + { + generateCSSsInclude('vendor/mottie/tablesorter/dist/css/theme.default.min.css'); + generateCSSsInclude('vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css'); + } // -------------------------------------------------------------------------------------------------------- // From public folder @@ -83,16 +84,20 @@ // AjaxLib CSS if ($ajaxlib === true) generateCSSsInclude('public/css/AjaxLib.css'); + // DialogLib CSS + if ($dialoglib === true) generateCSSsInclude('public/css/DialogLib.css'); + // FilterWidget CSS if ($filterwidget === true) generateCSSsInclude('public/css/FilterWidget.css'); // NavigationWidget CSS if ($navigationwidget === true) generateCSSsInclude('public/css/NavigationWidget.css'); + generateCSSsInclude('public/css/fhcomplete.css'); + // Eventually required CSS generateCSSsInclude($customCSSs); // Eventually required CSS - // -------------------------------------------------------------------------------------------------------- // Javascripts @@ -120,6 +125,16 @@ // Bootstrap JS if ($bootstrap === true) generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js'); + // jQuery treetable + // NOTE: keep it after jQuery includes + if ($jquerytreetable === true) generateJSsInclude('vendor/ludo/jquery-treetable/jquery.treetable.js'); + + // PivotUI CSS + if ($pivotui === true) + { + generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js'); + } + // Table sorter JS if ($tablesorter === true) { @@ -128,12 +143,6 @@ generateJSsInclude('vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js'); } - // PivotUI CSS - if ($pivotui === true) - { - generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js'); - } - // Tinymce JS if ($tinymce === true) generateJSsInclude('vendor/tinymce/tinymce/tinymce.min.js'); @@ -146,29 +155,31 @@ generateBackwardCompatibleJSMsIe('vendor/scottjehl/Respond/dest/respond.min.js'); } - // jQuery treetable - if ($jquerytreetable === true) generateJSsInclude('vendor/ludo/jquery-treetable/jquery.treetable.js'); - // -------------------------------------------------------------------------------------------------------- // From public folder + // DialogLib JS + if ($dialoglib === true) generateJSsInclude('public/js/DialogLib.js'); + // AjaxLib JS // NOTE: must be called before including others JS libraries that use it if ($ajaxlib === true) generateJSsInclude('public/js/AjaxLib.js'); - // PhrasesLib JS - if ($phrases != null) generateJSsInclude('public/js/PhrasesLib.js'); - // FilterWidget JS if ($filterwidget === true) generateJSsInclude('public/js/FilterWidget.js'); // NavigationWidget JS if ($navigationwidget === true) generateJSsInclude('public/js/NavigationWidget.js'); + // PhrasesLib JS + if ($phrases != null) generateJSsInclude('public/js/PhrasesLib.js'); + // Load addon hooks JS + // NOTE: keep it as the latest but one if ($addons === true) generateAddonsJSsInclude($calledPath.'/'.$calledMethod); // Eventually required JS + // NOTE: keep it as the latest generateJSsInclude($customJSs); ?> diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php index 5935ad69c..963a11301 100644 --- a/cis/private/lehre/abgabe_student.php +++ b/cis/private/lehre/abgabe_student.php @@ -109,7 +109,11 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb LEFT JOIN public.tbl_studiengang USING(studiengang_kz) LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz) WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom') - AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer' OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter' OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter') + AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer' + OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter' + OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer' + OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter' + OR tbl_projektbetreuer.betreuerart_kurzbz='Zweitbegutachter') AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php index c2e0672e8..4a80434a8 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php @@ -129,7 +129,7 @@ if (!empty($anmeldungen)) { $date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s"); $date = strtotime($date); - $date = $date+(60*$pruefungsintervall*($count)); + $date = $date+(60*$pruefungsintervall*($anmeldung->reihung-1)); $date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("H:i",$date); $count++; } diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php index 0a35ba284..d647289fa 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -248,7 +248,7 @@ $rechte->getBerechtigungen($uid); { $date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s"); $date = strtotime($date); - $date = $date+(60*$pruefungsintervall*($count)); + $date = $date+(60*$pruefungsintervall*($anmeldung->reihung-1)); $date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("H:i",$date); $count++; } diff --git a/cis/private/pers_in_grp.php b/cis/private/pers_in_grp.php index b44b8db0d..8c3fea036 100644 --- a/cis/private/pers_in_grp.php +++ b/cis/private/pers_in_grp.php @@ -50,35 +50,142 @@ echo ' - - - - - - - - + '; + + include('../../include/meta/jquery.php'); + include('../../include/meta/jquery-tablesorter.php'); + +?> + - ' . $p->t('mailverteiler/personenImVerteiler') . ' + +' . $p->t('mailverteiler/personenImVerteiler') . ' '; $qry = "SELECT - uid, vorname, nachname + uid, vorname, nachname, geschlecht, fixangestellt FROM campus.vw_benutzer JOIN tbl_benutzergruppe USING (uid) + LEFT JOIN + public.tbl_mitarbeiter ON (uid = mitarbeiter_uid) WHERE gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz); @@ -96,16 +203,29 @@ $qry = "SELECT $qry .= " ORDER BY nachname, vorname"; + +echo '

'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'

'; +echo '' . $p->t('mailverteiler/mailAnAlleSenden') . ''; + if ($result = $db->db_query($qry)) { - echo '

' . $row = $db->db_num_rows($result) . ' ' . $p->t('mailverteiler/personen'); + echo '

' . $row = $db->db_num_rows($result) . ' ' . $p->t('mailverteiler/personen') . '

'; } -echo ' +echo ' +
+ + + '; @@ -113,11 +233,14 @@ if ($result = $db->db_query($qry)) { while ($row = $db->db_fetch_object($result)) { - echo ""; - echo " "; - echo " "; - echo " "; - echo ""; + echo ''; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ''; } } echo ' diff --git a/cis/private/stud_in_grp.php b/cis/private/stud_in_grp.php index 8854ebc11..abf3a67a1 100644 --- a/cis/private/stud_in_grp.php +++ b/cis/private/stud_in_grp.php @@ -32,26 +32,124 @@ echo ' - - - - - - - - - + +'.$p->t('mailverteiler/personenImVerteiler').''; @@ -64,7 +162,7 @@ if (!isset($_GET['kz'])) if (isset($_GET['all'])) { $qry = "SELECT - vorname, nachname, uid + vorname, nachname, uid, geschlecht FROM campus.vw_student WHERE @@ -77,7 +175,7 @@ if (isset($_GET['all'])) else { $qry = "SELECT - vorname, nachname, uid + vorname, nachname, uid, geschlecht FROM campus.vw_student WHERE @@ -95,16 +193,25 @@ else $qry.= ' ORDER BY nachname, vorname'; } +echo '

'.$p->t('mailverteiler/anleitungstextMailPersInGroup').'

'; +echo '' . $p->t('mailverteiler/mailAnAlleSenden') . ''; if ($result = $db->db_query($qry)) { - echo '

'.$row=$db->db_num_rows($result).' '.$p->t('mailverteiler/personen'); + echo '

'.$row=$db->db_num_rows($result).' '.$p->t('mailverteiler/personen').'

'; } echo '
+ +    + + + ' . $p->t('global/nachname') . ' ' . $p->t('global/vorname') . '' . $p->t('global/geschlecht') . '' . $p->t('global/fixangestellt') . ' ' . $p->t('global/mail') . '
$row->nachname$row->vorname$row->uid@" . DOMAIN . "
'.$row->nachname.''.$row->vorname.''.strtoupper($row->geschlecht).''.($row->fixangestellt != '' ? ($row->fixangestellt == 't' ? 'Ja' : 'Nein') :'-').''.$row->uid .'@' . DOMAIN . '
+ + '; @@ -114,9 +221,11 @@ if ($result = $db->db_query($qry)) while ($row = $db->db_fetch_object($result)) { echo ""; + echo ' '; echo " "; echo " "; - echo " "; + echo ' '; + echo ' '; echo ""; } } diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php old mode 100755 new mode 100644 diff --git a/cms/admin.php b/cms/admin.php index ddf0dd34a..89308f019 100644 --- a/cms/admin.php +++ b/cms/admin.php @@ -144,7 +144,8 @@ if(isset($_POST['NewContent'])) protect: [ /\<\/?(audio[^>]+|audio)\>/g, // Protect und ], /\<\/?(source[^>]+)\>/g, // Protect ], /\<\/?(video[^>]+|video)\>/g // Protect und ], - ], + ], + valid_elements: "*[*]", // Allow all attributes in all Tags. Documentation see: https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@valid_elements/ file_browser_callback: "FHCFileBrowser", diff --git a/content/Tempus.pdf b/content/Tempus.pdf deleted file mode 100644 index 3cdd18de2..000000000 Binary files a/content/Tempus.pdf and /dev/null differ 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/content/statistik/notenspiegel.php b/content/statistik/notenspiegel.php index 7f5cfb20f..d9cb3dca0 100644 --- a/content/statistik/notenspiegel.php +++ b/content/statistik/notenspiegel.php @@ -164,6 +164,11 @@ if($typ=='xls') $format_bold_center->setAlign('center'); $format_bold_center->setBorder(1); + $format_bold_left =& $workbook->addFormat(); + $format_bold_left->setBold(); + $format_bold_left->setAlign('left'); + $format_bold_left->setBorder(1); + $format_number =& $workbook->addFormat(); $format_number->setNumFormat('0.00'); $format_number->setBorder(1); @@ -208,9 +213,13 @@ if($typ=='xls') $maxlength[$spalte]=10; $worksheet->write($zeile,++$spalte,'Vorname', $format_bold); $maxlength[$spalte]=10; + $worksheet->write($zeile, ++$spalte, 'V', $format_bold); + $maxlength[$spalte] = 2; + $worksheet->write($zeile, ++$spalte, 'G', $format_bold); + $maxlength[$spalte] = 2; $worksheet->write($zeile,++$spalte,'Personenkennzeichen', $format_bold); - $maxlength[$spalte]=20; - $maxheaderheight=20; + $maxlength[$spalte] = 20; + $maxheaderheight = 20; while($row_lva = $db->db_fetch_object($result_lva)) { @@ -252,7 +261,9 @@ if($typ=='xls') $worksheet->write($zeile,++$spalte,$row_student->vorname, $format_bold); if($maxlength[$spalte]vorname)) $maxlength[$spalte]=strlen($row_student->vorname); - $worksheet->write($zeile,++$spalte,$row_student->matrikelnr, $format_bold); + $worksheet->write($zeile, ++$spalte, $row_student->verband, $format_bold); + $worksheet->write($zeile, ++$spalte, $row_student->gruppe, $format_bold_left); + $worksheet->write($zeile, ++$spalte,$row_student->matrikelnr, $format_bold); //Alle Zeugnisnoten des Studierenden holen $noten = array(); @@ -341,7 +352,7 @@ if($typ=='xls') } $zeile++; - $spalte=2; + $spalte = 4; $worksheet->write($zeile,$spalte,'Notendurchschnitt', $format_bold); $summe_schnitt=0; @@ -385,8 +396,10 @@ if($typ=='xls') //Zellen der 1. Zeile verbinden $worksheet->setMerge(0,0,0,$spalte); - //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind - $worksheet->setRow(1,$maxheaderheight*5); + //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind, aber nicht größer als 300 + if ($maxheaderheight * 5 > 300) + $maxheaderheight = 60; + $worksheet->setRow(1, $maxheaderheight * 5); //Ausdruck auf 1 Seite anpassen $worksheet->fitToPages(1,1); diff --git a/content/statistik/notenspiegel_erweitert.php b/content/statistik/notenspiegel_erweitert.php index 5975a89ea..acaa91611 100644 --- a/content/statistik/notenspiegel_erweitert.php +++ b/content/statistik/notenspiegel_erweitert.php @@ -236,6 +236,11 @@ if ($typ == 'xls') $format_bold_center->setBold(); $format_bold_center->setAlign('center'); $format_bold_center->setBorder(1); + + $format_bold_left =& $workbook->addFormat(); + $format_bold_left->setBold(); + $format_bold_left->setAlign('left'); + $format_bold_left->setBorder(1); $format_bold_noborder =& $workbook->addFormat(); $format_bold_noborder->setBold(); @@ -306,8 +311,13 @@ if ($typ == 'xls') $maxlength[$spalte] = 10; $worksheet->write($zeile, ++$spalte, 'Vorname', $format_bold); $maxlength[$spalte] = 10; + $worksheet->write($zeile, ++$spalte, 'V', $format_bold); + $maxlength[$spalte] = 2; + $worksheet->write($zeile, ++$spalte, 'G', $format_bold); + $maxlength[$spalte] = 2; $worksheet->write($zeile, ++$spalte, 'Personenkennzeichen', $format_bold); - $maxlength[$spalte] = 32; + $maxlength[$spalte] = 35; + $maxheaderheight = 20; while ($row_lva = $db->db_fetch_object($result_lva)) @@ -351,6 +361,8 @@ if ($typ == 'xls') $worksheet->write($zeile, ++$spalte, $row_student->vorname, $format_bold); if ($maxlength[$spalte] < strlen($row_student->vorname)) $maxlength[$spalte] = strlen($row_student->vorname); + $worksheet->write($zeile, ++$spalte, $row_student->verband, $format_bold); + $worksheet->write($zeile, ++$spalte, $row_student->gruppe, $format_bold_left); $worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold); //Alle Zeugnisnoten des Studierenden holen @@ -479,7 +491,7 @@ if ($typ == 'xls') } } $zeile++; - $spalte = 2; + $spalte = 4; $worksheet->write($zeile, $spalte, 'Notendurchschnitt', $format_bold); $summe_schnitt = 0; @@ -517,7 +529,7 @@ if ($typ == 'xls') $zeile += 5; $legendzeile = $zeile; - $startcolumn = 2; + $startcolumn = 4; //Farblegende $bezeichnungen = array(); @@ -563,7 +575,7 @@ if ($typ == 'xls') for($i = 1; $i <= $totalmergefarb; $i++) $worksheet->write($legendzeile, $startcolumn + $i, "", $format_colored_nichtzugeteilt); - $startcolumn = $currentcolumn = 9; + $startcolumn = $currentcolumn = 11; //Notenlegende //optimale Länge in kleinsten Einheiten - Notenspalten @@ -651,7 +663,9 @@ if ($typ == 'xls') for($i = 1; $i <= $spalte; $i++) $worksheet->write(0, $i, "", $format_bold_center); - //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind + //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind, aber nicht größer als 300 + if ($maxheaderheight * 5 > 300) + $maxheaderheight = 60; $worksheet->setRow(1, $maxheaderheight * 5); //Ausdruck auf 1 Seite anpassen diff --git a/content/statistik/studentenexportextended.xls.php b/content/statistik/studentenexportextended.xls.php index 1743380f3..094132394 100644 --- a/content/statistik/studentenexportextended.xls.php +++ b/content/statistik/studentenexportextended.xls.php @@ -260,6 +260,8 @@ function draw_content($row) $prestudent->getLastStatus($row->prestudent_id); $status = $prestudent->status_kurzbz; $orgform = $prestudent->orgform_kurzbz; + $prio_relativ = new prestudent(); + $prio_relativ = $prio_relativ->getRelativePriorisierungFromAbsolut($row->prestudent_id, $row->priorisierung); $i = 0; @@ -647,10 +649,11 @@ function draw_content($row) $worksheet->write($zeile, $i, $row->rt_gesamtpunkte); $i++; - //RT_Gesamtpunkte - if (mb_strlen($row->priorisierung) > $maxlength[$i]) - $maxlength[$i] = mb_strlen($row->priorisierung); - $worksheet->write($zeile, $i, $row->priorisierung); + //Priorisierung + $prio = $prio_relativ.' ('.$row->priorisierung.')'; + if (mb_strlen($prio) > $maxlength[$i]) + $maxlength[$i] = mb_strlen($prio); + $worksheet->write($zeile, $i, $prio); $i++; // UDF diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index b509b2711..0a6f4f076 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -365,14 +365,14 @@ else class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/student/rdf#aufnahmegruppe_kurzbz" onclick="StudentTreeSort()"/> - '; @@ -2123,9 +2139,17 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); { //echo ''; @@ -2149,7 +2176,8 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); { echo ''; //echo ''; @@ -2157,7 +2185,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); } else { - echo ''; + echo ''; } $orte = new Reihungstest(); $orte->getOrteReihungstest($reihungstest->reihungstest_id); @@ -2175,9 +2203,14 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) echo '*'; echo ')'; - echo ' '; - if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'suid')) + if ($rechte->isBerechtigt('lehre/reihungstestOrt', $stg_rechtecheck->oe_kurzbz, 'sui')) + { + echo ' '; + } + if ($rechte->isBerechtigt('lehre/reihungstestOrt', $stg_rechtecheck->oe_kurzbz, 'suid')) + { echo ''; $arbeitsplaetze_sum = $arbeitsplaetze_sum + $orte_array[$row->ort_kurzbz]; } @@ -2227,7 +2260,7 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); ?> - isBerechtigt('lehre/reihungstestOeffentlich', $reihungstest->studiengang_kz, 'suid') ? '' : 'style="display:none"') ?>> + isBerechtigt('lehre/reihungstestOeffentlich', $stg_rechtecheck->oe_kurzbz, 'suid') ? '' : 'style="display:none"') ?>> -
+ +    + + + '.$p->t('global/nachname').' '.$p->t('global/vorname').'' . $p->t('global/geschlecht') . ' '.$p->t('global/mail').'
$row->nachname$row->vorname$row->uid@".DOMAIN."'.strtoupper($row->geschlecht).''.$row->uid .'@' . DOMAIN . '
'; echo ''; + if ($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'sui')) + { + echo ''; + echo ''; + echo ''; + } + else + { + echo 'Keine Berechtigung zum Zuteilen von Studienplänen'; + } + echo ''; echo ''; foreach ($studienplaene->result AS $row) @@ -2135,7 +2159,10 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr)); echo ''; echo ''; - echo ''; + if ($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'suid')) + { + echo ''; + } echo ''; } //echo '
'; - echo ''; - echo ''; - echo '
 '.$studienplan->bezeichnung.' ('.$studienplan->studienplan_id.')
Ort'; - if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'sui')) + + if ($rechte->isBerechtigt('lehre/reihungstestOrt', $stg_rechtecheck->oe_kurzbz, 'sui')) { echo ''; echo 'Keine Berechtigung zum zuteilen von RäumenKeine Berechtigung zum Zuteilen von Räumen'; + } echo '
Öffentlich oeffentlich ? 'checked="checked"' : '' ?>> @@ -2245,19 +2278,24 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
 
- - Kopie erstellen'; - - if($rechte->isBerechtigt('lehre/reihungstest', null, 'suid')) + { + if($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'sui')) + { + echo ''; + echo ''; + } + } + else + { + echo ''; + } + + if($rechte->isBerechtigt('lehre/reihungstest', $stg_rechtecheck->oe_kurzbz, 'suid')) { $anzahl_teilnehmer = new reihungstest(); $anzahl_teilnehmer = $anzahl_teilnehmer->getTeilnehmerAnzahl($reihungstest_id);