mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-15 14:02:17 +00:00
Neue Notenübersicht für Studenten
- Ansicht aller LVs die der Studierende lt Studienplan besuchen muss - Lehrveranstaltungen die ausserhalb des Studienplanes besucht wurden - Notendurchschnitt pro Semester und über alle Semester nur für Studienplanrelevante LVs - Neuer Menüpunkt im FAS für Zugriff auf die Notenliste
This commit is contained in:
@@ -0,0 +1,349 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* List all grades of a Student
|
||||
*/
|
||||
class Gradelist extends Auth_Controller
|
||||
{
|
||||
private $_grades; // Array of Grades
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
if (! defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
class StudienplanLib
|
||||
{
|
||||
/**
|
||||
* Loads model OrganisationseinheitModel
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
if(isset($course['note']) && isset($grades[$course['note']]))
|
||||
$gradeclass = ($grades[$course['note']]['positiv']?'gradelist_row_grade_positiv':'gradelist_row_grade_negativ');
|
||||
else
|
||||
$gradeclass = '';
|
||||
?>
|
||||
<tr class="gradelist_row_<?php echo $course['lehrtyp_kurzbz']; ?> gradelist_row_depth_<?php echo $depth; ?>">
|
||||
<td><?php echo $course['bezeichnung']; ?></td>
|
||||
<td align="right"><?php echo (isset($course['ects'])?$course['ects']:''); ?></td>
|
||||
<td class="<?php echo $gradeclass; ?>">
|
||||
<?php
|
||||
if (isset($course['note']) && isset($grades[$course['note']]['anmerkung']))
|
||||
echo $grades[$course['note']]['anmerkung'];
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
$this->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'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
<?php echo ucfirst($this->p->t('global', 'uebersicht')); ?> -
|
||||
<?php echo $person->vorname.' '.$person->nachname.' ('.$user.')';?>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<b><?php echo $this->p->t('lehre', 'notendurchschnitt'); ?>:</b>
|
||||
<?php echo $courses['overall']['notendurchschnitt'] ?><br>
|
||||
<b><?php echo $this->p->t('lehre', 'gewichteternotendurchschnitt'); ?>:</b>
|
||||
<?php echo $courses['overall']['notendurchschnittgewichtet'] ?><br>
|
||||
<b><?php echo $this->p->t('lehre', 'ects'); ?>:</b>
|
||||
<?php echo $courses['overall']['ectssumme_positiv'] ?><br>
|
||||
<br>
|
||||
<?php
|
||||
foreach ($courses['semester'] as $sem => $row_semester)
|
||||
{
|
||||
$this->load->view('person/gradelist/semester.php', $row_semester);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
$semesterdata = $data;
|
||||
$tableid='table-semester-'.$semesterdata['studiensemester_kurzbz'];
|
||||
?>
|
||||
<div id="accordion_<?php echo $tableid;?>">
|
||||
<div class="panel-group">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading" id="headingcollapse_<?php echo $tableid;?>">
|
||||
<a class="btn btn-link"
|
||||
data-toggle="collapse"
|
||||
data-target="#collapse_<?php echo $tableid;?>"
|
||||
aria-expanded="true"
|
||||
aria-controls="collapse_<?php echo $tableid;?>"
|
||||
>
|
||||
<?php
|
||||
echo $semesterdata['studiensemester_kurzbz'].' - '.
|
||||
$semesterdata['ausbildungssemester'].'. '.$this->p->t('lehre','ausbildungssemester').' - '.
|
||||
$semesterdata['status'].' | '.
|
||||
$semesterdata['ectssumme_positiv'];
|
||||
if(isset($semesterdata['ectssumme_nonstpl']))
|
||||
echo ' + '.$semesterdata['ectssumme_nonstpl'];
|
||||
echo ' '.$this->p->t('lehre','ects');
|
||||
?>
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapse_<?php echo $tableid;?>"
|
||||
class="panel-collapse collapse"
|
||||
aria-labelledby="headingcollapse_<?php echo $tableid;?>"
|
||||
data-parent="#accordion_<?php echo $tableid;?>"
|
||||
>
|
||||
<div class="panel-body">
|
||||
<?php
|
||||
if (is_array($lvs) && count($lvs) > 0):
|
||||
|
||||
echo '<h4>Lehrveranstaltungen laut Studienplan '.$semesterdata['studienplan_bezeichnung'].'</h4>';
|
||||
?>
|
||||
<table id="<?php echo $tableid;?>" class="gradetable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
|
||||
<th><?php echo $this->p->t('lehre','ects');?></th>
|
||||
<th><?php echo $this->p->t('lehre','note');?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($lvs as $row_course)
|
||||
{
|
||||
Gradelist::printRow($row_course, 0);
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th style="text-align: right">
|
||||
<?php
|
||||
echo (isset($semesterdata['ectssumme_positiv'])?$semesterdata['ectssumme_positiv']:'');
|
||||
|
||||
if (isset($semesterdata['ectssumme'])
|
||||
&& isset($semesterdata['ectssumme_positiv'])
|
||||
&& $semesterdata['ectssumme'] != $semesterdata['ectssumme_positiv'])
|
||||
{
|
||||
echo ' ('.$semesterdata['ectssumme'].')';
|
||||
}
|
||||
?>
|
||||
</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php
|
||||
endif;
|
||||
if (isset($lvs_nonstpl) && count($lvs_nonstpl) > 0):
|
||||
?>
|
||||
<h2><?php echo $this->p->t('lehre','nichtstudienplanrelevanteKurse'); ?></h2>
|
||||
<table id="<?php echo $tableid;?>_nonstpl" class="gradetable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
|
||||
<th><?php echo $this->p->t('lehre','ects');?></th>
|
||||
<th><?php echo $this->p->t('lehre','note');?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
if(is_array($lvs_nonstpl))
|
||||
{
|
||||
foreach ($lvs_nonstpl as $row_course)
|
||||
{
|
||||
Gradelist::printRow($row_course, 0);
|
||||
}
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th style="text-align: right"><?php echo (isset($semesterdata['ectssumme_nonstpl'])?number_format($semesterdata['ectssumme_nonstpl'],2):''); ?></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<b><?php echo $this->p->t('lehre','notendurchschnitt');?>:</b>
|
||||
<?php echo (isset($semesterdata['notendurchschnitt'])?$semesterdata['notendurchschnitt']:'');?>
|
||||
<b><?php echo $this->p->t('lehre','gewichteternotendurchschnitt');?>:</b>
|
||||
<?php echo (isset($semesterdata['notendurchschnittgewichtet'])?$semesterdata['notendurchschnittgewichtet']:'');?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@ foreach($addon_obj->result as $addon)
|
||||
<command id="menu-statistic-notenspiegel:command" oncommand="StatistikPrintNotenspiegel('html');"/>
|
||||
<command id="menu-statistic-notenspiegel-excel:command" oncommand="StatistikPrintNotenspiegel('xls');"/>
|
||||
<command id="menu-statistic-notenspiegel-excel-erweitert:command" oncommand="StatistikPrintNotenspiegelErweitert('xls');"/>
|
||||
<command id="menu-statistic-notenspiegel-student:command" oncommand="StatistikPrintNotenspiegelStudent();"/>
|
||||
<command id="menu-statistic-substatistik-studentenprosemester-excel:command" oncommand="StatistikPrintStudentenProSemester('xls');"/>
|
||||
<command id="menu-statistic-substatistik-studentenprosemester-html:command" oncommand="StatistikPrintStudentenProSemester('');"/>
|
||||
<command id="menu-statistic-substatistik-alvsstatistik-excel:command" oncommand="StatistikPrintALVSStatistik('xls');"/>
|
||||
@@ -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;"/>
|
||||
<menuitem
|
||||
id = "menu-statistic-notenspiegel-student"
|
||||
key = "menu-statistic-notenspiegel-student:key"
|
||||
label = "&menu-statistic-notenspiegel-student.label;"
|
||||
command = "menu-statistic-notenspiegel-student:command"
|
||||
accesskey = "&menu-statistic-notenspiegel-student.accesskey;"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</menupopup>
|
||||
|
||||
@@ -1077,6 +1077,26 @@ function StatistikPrintNotenspiegelErweitert(typ)
|
||||
window.open('<?php echo APP_ROOT ?>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('<?php echo APP_ROOT ?>index.ci.php/person/gradelist/index/'+student_uid,'Notenspiegel');
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Liefert eine statistik ueber die Anzahl der Interessenten/Bewerber Studenten
|
||||
// ****
|
||||
|
||||
@@ -114,6 +114,10 @@
|
||||
<!ENTITY menu-statistic-notenspiegel.label "Notenspiegel HTML">
|
||||
<!ENTITY menu-statistic-notenspiegel.accesskey "H">
|
||||
|
||||
<!ENTITY menu-statistic-notenspiegel-student.key "S">
|
||||
<!ENTITY menu-statistic-notenspiegel-student.label "Notenspiegel Student">
|
||||
<!ENTITY menu-statistic-notenspiegel-student.accesskey "S">
|
||||
|
||||
<!ENTITY menu-statistic-substatistik-bewerberstatistik.label "BewerberInnenstatistik">
|
||||
<!ENTITY menu-statistic-substatistik-bewerberstatistik.accesskey "B">
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -25,7 +25,10 @@ var FHC_PhrasesLib = {
|
||||
* @param {Object} params : parameters to be replaced instead of {<parameter name>} 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))
|
||||
|
||||
@@ -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'),
|
||||
|
||||
+120
-6
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user