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:
Andreas Österreicher
2019-02-13 15:52:51 +01:00
parent 0289ab85b5
commit 7662edd061
17 changed files with 858 additions and 24 deletions
@@ -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);
}
}
}
+72
View File
@@ -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;
}
}
+7 -7
View File
@@ -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>
+2 -1
View File
@@ -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
+7
View File
@@ -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>
+20
View File
@@ -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
// ****
+4
View File
@@ -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">
+23
View File
@@ -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;
}
+5 -1
View File
@@ -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;
}
}
+40
View File
@@ -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;
}
+4 -1
View File
@@ -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))
+1
View File
@@ -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
View File
@@ -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(