mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-13 18:19:27 +00:00
Merge branch 'master' into FHBGLD-ZGV_Doktor_und_zgv_erfuellt
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
|
||||
// Deadline for Application given as Time-Interval after Semesterstart.
|
||||
$config['interval_blocking_application'] = 'P1M';
|
||||
|
||||
// Application submission period given by start- and enddate.
|
||||
$config['submit_application_start'] = '01.02.2021';
|
||||
$config['submit_application_end'] = '22.02.2021';
|
||||
|
||||
// Lehrveranstaltungen with these grades will be blocked for application
|
||||
$config['grades_blocking_application'] = array(
|
||||
5, // nicht genügend
|
||||
6, // angerechnet
|
||||
9, // noch nicht eingetragen
|
||||
13, // nicht erfolgreich absolviert
|
||||
14, // nicht bestanden,
|
||||
15, // nicht teilgenommen
|
||||
18 // unentschuldigt
|
||||
);
|
||||
@@ -23,6 +23,14 @@ $config['navigation_header'] = array(
|
||||
'expand' => true,
|
||||
'sort' => 10,
|
||||
'requiredPermissions' => 'basis/vilesci:r'
|
||||
),
|
||||
'oehbeitragsverwaltung' => array(
|
||||
'link' => site_url('codex/Oehbeitrag'),
|
||||
'icon' => '',
|
||||
'description' => 'Öhbeitragsverwaltung',
|
||||
'expand' => true,
|
||||
'sort' => 20,
|
||||
'requiredPermissions' => 'admin:w'
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -125,6 +133,13 @@ $config['navigation_header'] = array(
|
||||
'expand' => true,
|
||||
'sort' => 20,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
),
|
||||
'errormonitoring' => array(
|
||||
'link' => site_url('system/issues/Issues'),
|
||||
'description' => 'Fehler Monitoring',
|
||||
'expand' => true,
|
||||
'sort' => 20,
|
||||
'requiredPermissions' => 'system/issues_verwalten:r'
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -9,6 +9,13 @@
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
|
||||
},
|
||||
"requiredPermissions": {
|
||||
"type": "array"
|
||||
},
|
||||
"description": {
|
||||
"type": "array",
|
||||
},
|
||||
@@ -18,10 +25,6 @@
|
||||
"title": {
|
||||
"type": "array",
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"]
|
||||
},
|
||||
"sort": {
|
||||
"type": "integer"
|
||||
},
|
||||
@@ -67,5 +70,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["type", "name"]
|
||||
}
|
||||
"required": ["type", "name", "requiredPermissions"]
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,261 @@
|
||||
<?php
|
||||
|
||||
if (! defined("BASEPATH")) exit("No direct script access allowed");
|
||||
|
||||
class Oehbeitrag extends Auth_Controller
|
||||
{
|
||||
const STUDIENSEMESTER_START = 'WS2020';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'admin:r',// TODO which Berechtigung?
|
||||
'getOehbeitraege' => 'admin:r',
|
||||
'getValidStudiensemester' => 'admin:r',
|
||||
'addOehbeitrag' => 'admin:rw',
|
||||
'updateOehbeitrag' => 'admin:rw',
|
||||
'deleteOehbeitrag' => 'admin:rw'
|
||||
)
|
||||
);
|
||||
|
||||
$this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
$this->load->library('WidgetLib');
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$oehbeitraege = array();
|
||||
|
||||
$oehbeitragRes = $this->_loadOehbeitraege();
|
||||
|
||||
if (isError($oehbeitragRes))
|
||||
show_error(getError($oehbeitragRes));
|
||||
|
||||
if (hasData($oehbeitragRes))
|
||||
$oehbeitraege = getData($oehbeitragRes);
|
||||
|
||||
$this->load->view("codex/oehbeitrag.php", array('oehbeitraege' => $oehbeitraege));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all valid, i.e. unassigned, Studiensemester.
|
||||
*/
|
||||
public function getValidStudiensemester()
|
||||
{
|
||||
$oehbeitrag_id = $this->input->get('oehbeitrag_id');
|
||||
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
|
||||
|
||||
$studiensemester = array();
|
||||
|
||||
$studiensemesterres = $this->OehbeitragModel->getUnassignedStudiensemester(self::STUDIENSEMESTER_START, $oehbeitrag_id_arr);
|
||||
if (isError($studiensemesterres))
|
||||
{
|
||||
$this->outputJsonError(getError($studiensemesterres));
|
||||
return;
|
||||
}
|
||||
|
||||
if (hasData($studiensemesterres))
|
||||
$studiensemester = getData($studiensemesterres);
|
||||
|
||||
$this->outputJsonSuccess($studiensemester);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Öhbeiträge. Wrapper function for output as JSON.
|
||||
*/
|
||||
public function getOehbeitraege()
|
||||
{
|
||||
$this->outputJson($this->_loadOehbeitraege());
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an Öhbeitrag. Checks for errors beforehand.
|
||||
*/
|
||||
public function addOehbeitrag()
|
||||
{
|
||||
$studierendenbeitrag = $this->input->post('studierendenbeitrag');
|
||||
$versicherung = $this->input->post('versicherung');
|
||||
$von_studiensemester_kurzbz = $this->input->post('von_studiensemester_kurzbz');
|
||||
$bis_studiensemester_kurzbz = $this->input->post('bis_studiensemester_kurzbz');
|
||||
if ($bis_studiensemester_kurzbz == 'null')
|
||||
$bis_studiensemester_kurzbz = null;
|
||||
|
||||
if (!$this->_checkAmount($studierendenbeitrag))
|
||||
$this->outputJsonError('Ungültiger Studierendenbeitrag');
|
||||
elseif (!$this->_checkAmount($versicherung))
|
||||
$this->outputJsonError('Ungültige Versicherung');
|
||||
else
|
||||
{
|
||||
$vonBisCheck = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz);
|
||||
|
||||
if (isError($vonBisCheck))
|
||||
$this->outputJsonError(getError($vonBisCheck));
|
||||
else
|
||||
{
|
||||
$data = array(
|
||||
'studierendenbeitrag' => $studierendenbeitrag,
|
||||
'versicherung' => $versicherung,
|
||||
'von_studiensemester_kurzbz' => $von_studiensemester_kurzbz,
|
||||
'bis_studiensemester_kurzbz' => $bis_studiensemester_kurzbz
|
||||
);
|
||||
|
||||
$this->outputJson($this->OehbeitragModel->insert($data));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates an Öhbeitrag. Checks for errors beforehand.
|
||||
*/
|
||||
public function updateOehbeitrag()
|
||||
{
|
||||
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
|
||||
$data = $this->input->post("data");
|
||||
|
||||
if (!is_numeric($oehbeitrag_id) || isEmptyArray($data))
|
||||
{
|
||||
$this->outputJsonError("Ungültige Parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($data as $idx => $value)
|
||||
{
|
||||
if ($idx == 'studierendenbeitrag' || $idx == 'versicherung')
|
||||
{
|
||||
if (!$this->_checkAmount($value))
|
||||
{
|
||||
$this->outputJsonError("Ungültige(r) $idx");
|
||||
return;
|
||||
}
|
||||
}
|
||||
elseif ($idx == 'von_studiensemester_kurzbz' || $idx == 'bis_studiensemester_kurzbz')
|
||||
{
|
||||
$this->OehbeitragModel->addSelect('von_studiensemester_kurzbz, bis_studiensemester_kurzbz');
|
||||
$vonBisStudiensemesterRes = $this->OehbeitragModel->load($oehbeitrag_id);
|
||||
|
||||
if (!hasData($vonBisStudiensemesterRes))
|
||||
{
|
||||
$this->outputJsonError("Fehler beim Holen des Öhbeitrags");
|
||||
return;
|
||||
}
|
||||
|
||||
$vonBisStudiensemester = getData($vonBisStudiensemesterRes);
|
||||
|
||||
$von_studiensemester_kurzbz = isset($data['von_studiensemester_kurzbz'])
|
||||
? $data['von_studiensemester_kurzbz']
|
||||
: $vonBisStudiensemester[0]->von_studiensemester_kurzbz;
|
||||
|
||||
if (isset($data['bis_studiensemester_kurzbz']))
|
||||
{
|
||||
$bis_studiensemester_kurzbz = $data['bis_studiensemester_kurzbz'] = $data['bis_studiensemester_kurzbz'] == 'null' ? null : $data['bis_studiensemester_kurzbz'];
|
||||
}
|
||||
else
|
||||
$bis_studiensemester_kurzbz = $vonBisStudiensemester[0]->bis_studiensemester_kurzbz;
|
||||
|
||||
$checkStudiensemester = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id);
|
||||
|
||||
if (isError($checkStudiensemester))
|
||||
{
|
||||
$this->outputJsonError(getError($checkStudiensemester));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->outputJson($this->OehbeitragModel->update($oehbeitrag_id, $data));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an Öhbeitrag.
|
||||
*/
|
||||
public function deleteOehbeitrag()
|
||||
{
|
||||
$oehbeitrag_id = $this->input->post("oehbeitrag_id");
|
||||
|
||||
$this->outputJson($this->OehbeitragModel->delete($oehbeitrag_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads all Öhbeiträge sorted by date descending.
|
||||
* @return object
|
||||
*/
|
||||
private function _loadOehbeitraege()
|
||||
{
|
||||
$this->OehbeitragModel->addSelect('oehbeitrag_id, von_studiensemester_kurzbz, bis_studiensemester_kurzbz, studierendenbeitrag, versicherung, sem_von.start as von_datum, sem_bis.ende as bis_datum');
|
||||
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_von', 'tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz');
|
||||
$this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_bis', 'tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz', 'LEFT');
|
||||
$this->OehbeitragModel->addOrder('sem_von.start', 'DESC');
|
||||
return $this->OehbeitragModel->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an amount is numeric and not too big.
|
||||
* @param $amount
|
||||
* @return bool true if valid amount, false otherwise
|
||||
*/
|
||||
private function _checkAmount($amount)
|
||||
{
|
||||
return is_numeric($amount) && (float) $amount <= 99999.99;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a certain Von-Studiensemester is valid together with a Bis-Studiensemester.
|
||||
* Checks for correct format, Von-Studiensemester cannot be after the Bis-Studiensemester,
|
||||
* checks that semester are not overlapping with semester for existent Öhbeiträge.
|
||||
* @param string $von_studiensemester_kurzbz
|
||||
* @param string $bis_studiensemester_kurzbz
|
||||
* @param int $oehbeitrag_id öhbeitrag to ignore, i.e. which is assignable (id of Öhbeitrag of the passed semesters)
|
||||
* @return object array with true if assignable, with false if not
|
||||
*/
|
||||
private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id = null)
|
||||
{
|
||||
$regex = "/^(WS|SS)\d{4}$/";
|
||||
if (!preg_match($regex, $von_studiensemester_kurzbz))
|
||||
return error("Ungültiges Von-Studiensemester");
|
||||
|
||||
if (!preg_match($regex, $bis_studiensemester_kurzbz) && $bis_studiensemester_kurzbz != null)
|
||||
return error("Ungültiges Bis-Studiensemester");
|
||||
|
||||
$this->StudiensemesterModel->addSelect("start");
|
||||
$vonStudiensemesterRes = $this->StudiensemesterModel->load($von_studiensemester_kurzbz);
|
||||
|
||||
if (!hasData($vonStudiensemesterRes))
|
||||
return error("Fehler beim Holen von Von-Studiensemester");
|
||||
|
||||
$this->StudiensemesterModel->addSelect("start");
|
||||
$bisStudiensemesterRes = $this->StudiensemesterModel->load($bis_studiensemester_kurzbz);
|
||||
|
||||
if (!hasData($bisStudiensemesterRes))
|
||||
return error("Fehler beim Holen von Bis-Studiensemester");
|
||||
|
||||
$vonStudiensemester = getData($vonStudiensemesterRes)[0]->start;
|
||||
$bisStudiensemester = getData($bisStudiensemesterRes)[0]->start;
|
||||
|
||||
if ($bis_studiensemester_kurzbz != null && new DateTime($vonStudiensemester) > new DateTime($bisStudiensemester))
|
||||
return error("Von-Studiensemester größer als Bis-Studiensemester");
|
||||
|
||||
$oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null;
|
||||
|
||||
$assignableRes = $this->OehbeitragModel->checkIfStudiensemesterAssignable(
|
||||
$von_studiensemester_kurzbz,
|
||||
$bis_studiensemester_kurzbz,
|
||||
$oehbeitrag_id_arr
|
||||
);
|
||||
|
||||
if (isError($assignableRes))
|
||||
return $assignableRes;
|
||||
|
||||
if (hasData($assignableRes))
|
||||
{
|
||||
$assignable = getData($assignableRes)[0];
|
||||
|
||||
if (!$assignable)
|
||||
return error("Keine Zuweisung möglich, Semesterüberschneidung");
|
||||
}
|
||||
|
||||
return success("Studiensemester gültig");
|
||||
}
|
||||
}
|
||||
@@ -129,6 +129,7 @@ class Statusgrund extends Auth_Controller
|
||||
$aktiv = $this->input->post("aktiv") != null && $this->input->post("aktiv") == "on" ? true : false;
|
||||
$bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig");
|
||||
$beschreibung = $this->input->post("beschreibung");
|
||||
$statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz");
|
||||
|
||||
for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++)
|
||||
{
|
||||
@@ -177,7 +178,8 @@ class Statusgrund extends Auth_Controller
|
||||
$data = array(
|
||||
"aktiv" => $aktiv,
|
||||
"bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig,
|
||||
"beschreibung" => $beschreibung
|
||||
"beschreibung" => $beschreibung,
|
||||
"statusgrund_kurzbz" => $statusgrund_kurzbz
|
||||
);
|
||||
|
||||
$statusgrund = $this->StatusgrundModel->update($statusgrund_id, $data);
|
||||
@@ -196,6 +198,7 @@ class Statusgrund extends Auth_Controller
|
||||
$bezeichnung_mehrsprachig = $this->input->post("bezeichnung_mehrsprachig");
|
||||
$beschreibung = $this->input->post("beschreibung");
|
||||
$status_kurzbz = $this->input->post("status_kurzbz");
|
||||
$statusgrund_kurzbz = $this->input->post("statusgrund_kurzbz");
|
||||
|
||||
for ($i = 0; $i < count($bezeichnung_mehrsprachig); $i++)
|
||||
{
|
||||
@@ -245,7 +248,8 @@ class Statusgrund extends Auth_Controller
|
||||
"status_kurzbz" => $status_kurzbz,
|
||||
"aktiv" => $aktiv,
|
||||
"bezeichnung_mehrsprachig" => $bezeichnung_mehrsprachig,
|
||||
"beschreibung" => $beschreibung
|
||||
"beschreibung" => $beschreibung,
|
||||
"statusgrund_kurzbz" => $statusgrund_kurzbz
|
||||
);
|
||||
|
||||
$statusgrund = $this->StatusgrundModel->insert($data);
|
||||
|
||||
@@ -15,6 +15,11 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class AnrechnungJob extends JOB_Controller
|
||||
{
|
||||
const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht';
|
||||
|
||||
const ANRECHNUNGSTATUS_APPROVED = 'approved';
|
||||
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
|
||||
const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL = 'AnrechnungNotizSTGL';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@@ -23,6 +28,11 @@ class AnrechnungJob extends JOB_Controller
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->load->helper('url');
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,4 +94,320 @@ class AnrechnungJob extends JOB_Controller
|
||||
}
|
||||
$this->logInfo('End Anrechnung Grades Job', array('Number of Grades added'=>$cnt));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes Zeugnisnoten 'angerechnet', when Anrechnung is rejected afterwards.
|
||||
* E.g., when STGL first accepts, then withdraws and finally rejects the approvement.
|
||||
*/
|
||||
public function deleteAnrechnungGrades()
|
||||
{
|
||||
$this->logInfo('Start AnrechnungJob to delete Grades');
|
||||
|
||||
// Get all Zeungisnoten,
|
||||
// WHERE note is angerechnet
|
||||
// AND Anrechnung was rejected AFTER the Zeugnisnote was created
|
||||
$qry = '
|
||||
SELECT DISTINCT ON (status.anrechnung_id) anrechnung_id,
|
||||
status.status_kurzbz AS "last_anrechnungstatus",
|
||||
status.insertamum AS "last_anrechnungstatus_insertamum",
|
||||
zeugnisnote.insertamum AS "zeugnisdatum_insertamum",
|
||||
student.student_uid,
|
||||
zeugnisnote.lehrveranstaltung_id,
|
||||
zeugnisnote.studiensemester_kurzbz,
|
||||
note
|
||||
FROM lehre.tbl_zeugnisnote zeugnisnote
|
||||
JOIN public.tbl_student student USING (student_uid)
|
||||
JOIN lehre.tbl_anrechnung anrechnung
|
||||
ON (zeugnisnote.lehrveranstaltung_id = anrechnung.lehrveranstaltung_id)
|
||||
AND (student.prestudent_id = anrechnung.prestudent_id)
|
||||
AND (zeugnisnote.studiensemester_kurzbz = anrechnung.studiensemester_kurzbz)
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus status USING (anrechnung_id)
|
||||
WHERE note = 6
|
||||
AND status.insertamum > zeugnisnote.insertamum
|
||||
AND status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). '
|
||||
ORDER BY status.anrechnung_id, status.insertamum DESC
|
||||
';
|
||||
|
||||
$db = new DB_Model();
|
||||
$result = $db->execReadOnlyQuery($qry);
|
||||
$cnt = 0;
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||
|
||||
foreach (getData($result) as $row)
|
||||
{
|
||||
// Delete Zeugnisnote
|
||||
$this->ZeugnisnoteModel->delete(array(
|
||||
'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
|
||||
'student_uid' => $row->student_uid,
|
||||
'studiensemester_kurzbz' => $row->studiensemester_kurzbz
|
||||
));
|
||||
|
||||
// Count up
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
|
||||
$this->logInfo('End AnrechnungJob to delete Grades', array('Number of Grades deleted: ' => $cnt));
|
||||
}
|
||||
|
||||
// Send Sancho mail to STGL with yesterdays new Anrechnungen
|
||||
public function sendMailToSTGL()
|
||||
{
|
||||
$this->logInfo('Start AnrechnungJob to send emails to STGL about yesterdays new Anrechnungen.');
|
||||
|
||||
// Get all yesterdays Anrechnungen, that did not process further than first status
|
||||
// (If Anrechnung is new, but STGL already started the process yesterday,
|
||||
// he does not need to be informed about this new Anrechnung anymore)
|
||||
$this->AnrechnungModel->addSelect('anrechnung_id, studiensemester_kurzbz, lv.studiengang_kz, lv.bezeichnung, vorname, nachname');
|
||||
$this->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
|
||||
$this->AnrechnungModel->addOrder('lv.studiengang_kz, lv.bezeichnung');
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere(
|
||||
'(lehre.tbl_anrechnung.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE
|
||||
AND 1 = (SELECT COUNT(*) FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE status.anrechnung_id = tbl_anrechnung.anrechnung_id)'
|
||||
);
|
||||
|
||||
// Exit if there are no Anrechnungen
|
||||
if (!$anrechnungen = getData($result)) {
|
||||
$this->logInfo('ABORTED: Sending emails to STGL about yesterdays new Anrechnungen aborted - No new Anrechnungen found.');
|
||||
exit;
|
||||
}
|
||||
|
||||
$unique_studiengang_kz_arr = array_unique(array_column($anrechnungen, 'studiengang_kz'));
|
||||
|
||||
foreach ($unique_studiengang_kz_arr as $studiengang_kz)
|
||||
{
|
||||
// Get STG bezeichnung
|
||||
$this->StudiengangModel->addSelect('UPPER( typ || kurzbz ) AS "stg_bezeichnung"');
|
||||
$studiengang_bezeichnung = $this->StudiengangModel->load($studiengang_kz)->retval[0]->stg_bezeichnung;
|
||||
|
||||
// Get STGL mail address
|
||||
list ($to, $vorname) = self::_getSTGLMailAddress($studiengang_kz);
|
||||
|
||||
// Get HTML table with new Anrechnungen of that STG plus amount of them
|
||||
list ($anrechnungen_amount, $anrechnungen_table) = self::_getSTGLMailDataTable($studiengang_kz, $anrechnungen);
|
||||
|
||||
// Link to Antrag genehmigen dashboard
|
||||
$url =
|
||||
CIS_ROOT. 'cis/index.php?menu='.
|
||||
CIS_ROOT. 'cis/menu.php?content_id=&content='.
|
||||
CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI;
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'vorname' => $vorname,
|
||||
'studiengang' => $studiengang_bezeichnung,
|
||||
'anzahl' => $anrechnungen_amount,
|
||||
'datentabelle' => $anrechnungen_table,
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungAntragStellen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt'
|
||||
);
|
||||
}
|
||||
|
||||
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago.
|
||||
*/
|
||||
public function sendMailApproved(){
|
||||
|
||||
$this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were approved.');
|
||||
|
||||
// Get all yesterdays approvements
|
||||
$this->AnrechnungModel->addSelect('student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung');
|
||||
$this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus status', 'anrechnung_id');
|
||||
$this->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere(
|
||||
'(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND
|
||||
status.status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_APPROVED)
|
||||
);
|
||||
|
||||
// Exit if there are no approved Anrechnungen
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->logInfo('ABORTED sending emails to students, whose Anrechnungen were approved. No new approvements found.');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Loop through students
|
||||
foreach ($result->retval as $student)
|
||||
{
|
||||
$to = $student->student_uid. '@'. DOMAIN;
|
||||
|
||||
$anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
|
||||
|
||||
$text = 'Ihrem Antrag auf Anerkennung nachgewiesener Kenntnisse der Lehrveranstaltung "'.
|
||||
$student->bezeichnung. '" wurde stattgegeben.';
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname,
|
||||
'text' => $text
|
||||
);
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungGenehmigen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Sancho mail to students, whose Anrechnungen were rejected 24 hours ago.
|
||||
*/
|
||||
public function sendMailRejected(){
|
||||
|
||||
$this->logInfo('Start AnrechnungJob to send emails to students, whose Anrechnungen were rejected.');
|
||||
|
||||
$qry = '
|
||||
SELECT
|
||||
student.student_uid, vorname, nachname, geschlecht, lv.bezeichnung,
|
||||
(SELECT text FROM public.tbl_notizzuordnung JOIN public.tbl_notiz USING(notiz_id)
|
||||
WHERE tbl_notizzuordnung.anrechnung_id=tbl_anrechnung.anrechnung_id
|
||||
AND tbl_notiz.titel='. $this->db->escape(self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL).'
|
||||
ORDER BY tbl_notiz.insertamum DESC LIMIT 1) as text
|
||||
FROM lehre.tbl_anrechnung
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_student student USING(prestudent_id)
|
||||
JOIN public.tbl_benutzer benutzer ON (benutzer.uid = student.student_uid)
|
||||
JOIN public.tbl_person person USING(person_id)
|
||||
|
||||
WHERE EXISTS(SELECT 1 FROM lehre.tbl_anrechnung_anrechnungstatus status WHERE
|
||||
anrechnung_id=tbl_anrechnung.anrechnung_id AND
|
||||
(status.insertamum)::date = (NOW() - INTERVAL \'24 HOURS\')::DATE AND
|
||||
status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_REJECTED). ')
|
||||
';
|
||||
|
||||
$db = new DB_Model();
|
||||
$result = $db->execReadOnlyQuery($qry);
|
||||
|
||||
// Exit if there are no rejected Anrechnungen
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->logInfo('ABORTED sending emails to students, whose Anrechnungen were rejected. No new rejectments found.');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Loop through students
|
||||
foreach ($result->retval as $student)
|
||||
{
|
||||
$to = $student->student_uid. '@'. DOMAIN;
|
||||
|
||||
$anrede = $student->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
|
||||
|
||||
$text = <<<html
|
||||
wir haben Ihren Antrag auf Anerkennung nachgewiesener Kenntnisse geprüft und können die Lehrveranstaltung
|
||||
"$student->bezeichnung" leider nicht anrechnen, weil die Gleichwertigkeit nicht festgestellt werden konnte.<br><br>
|
||||
Begründung: $student->text
|
||||
html;
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'anrede_name' => $anrede. $student->vorname. ' '. $student->nachname,
|
||||
'text' => $text
|
||||
);
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungGenehmigen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Get STGL mail address
|
||||
private function _getSTGLMailAddress($studiengang_kz)
|
||||
{
|
||||
$result = $this->StudiengangModel->getLeitung($studiengang_kz);
|
||||
|
||||
// Get STGL mail address
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->uid. '@'. DOMAIN,
|
||||
$result->retval[0]->vorname
|
||||
);
|
||||
}
|
||||
// If not available, get assistance mail address
|
||||
else
|
||||
{
|
||||
$result = $this->StudiengangModel->load($studiengang_kz);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->email,
|
||||
''
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build HTML table with yesterdays new Anrechnungen of the given STG
|
||||
private function _getSTGLMailDataTable($studiengang_kz, $anrechnungen)
|
||||
{
|
||||
$html = '';
|
||||
$lv_bezeichnung = '';
|
||||
|
||||
// Filter Anrechnungen of given STG
|
||||
$anrechnungen = array_filter(
|
||||
$anrechnungen,
|
||||
function ($anrechnung) use (&$studiengang_kz) {
|
||||
return $anrechnung->studiengang_kz == $studiengang_kz;
|
||||
});
|
||||
|
||||
// Amount of Anrechnungen
|
||||
$amount = count($anrechnungen);
|
||||
|
||||
// HTML table body
|
||||
$html .= '
|
||||
<table style="width: 60%; border-collapse: collapse;" border="1" cellpadding="5">
|
||||
<tbody>
|
||||
';
|
||||
|
||||
foreach ($anrechnungen as $anrechnung)
|
||||
{
|
||||
// Head line for each LV bezeichnung
|
||||
if ($anrechnung->bezeichnung != $lv_bezeichnung)
|
||||
{
|
||||
$html .= '<tr><td><span><strong>' . $anrechnung->bezeichnung . '</strong></span></td></tr>';
|
||||
}
|
||||
|
||||
$lv_bezeichnung = $anrechnung->bezeichnung;
|
||||
|
||||
// Row for each Anrechnung / student
|
||||
$html .= '<tr><td><span>'. $anrechnung->vorname. ' '. $anrechnung->nachname. '</span></td></tr>';
|
||||
}
|
||||
|
||||
$html .= '
|
||||
</tbody>
|
||||
</table>
|
||||
';
|
||||
|
||||
return array($amount, $html);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
//if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class approveAnrechnungDetail extends Auth_Controller
|
||||
{
|
||||
@@ -15,6 +15,7 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
|
||||
|
||||
const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL = 'AnrechnungNotizSTGL';
|
||||
const ANRECHNUNG_NOTIZTITEL_EMPFEHLUNGSNOTIZ_BY_STGL = 'AnrechnungEmpfehlungsnotizSTGL';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -25,7 +26,10 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
'download' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'approve' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'reject' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'requestRecommendation' => 'lehre/anrechnung_genehmigen:rw'
|
||||
'requestRecommendation' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'withdraw' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'withdrawRequestRecommendation' => 'lehre/anrechnung_genehmigen:rw',
|
||||
'saveEmpfehlungsNotiz' => 'lehre/anrechnung_genehmigen:rw'
|
||||
)
|
||||
);
|
||||
|
||||
@@ -80,29 +84,23 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
self::_checkIfEntitledToReadAnrechnung($anrechnung_id);
|
||||
|
||||
// Get Anrechung data
|
||||
if (!$anrechnungData = getData($this->anrechnunglib->getAnrechnungData($anrechnung_id)))
|
||||
{
|
||||
show_error('Missing data for Anrechnung.');
|
||||
}
|
||||
$anrechnungData = $this->anrechnunglib->getAnrechnungData($anrechnung_id);
|
||||
|
||||
// Get Antrag data
|
||||
$antragData = $this->anrechnunglib->getAntragData(
|
||||
$anrechnungData->prestudent_id,
|
||||
$anrechnungData->studiensemester_kurzbz,
|
||||
$anrechnungData->lehrveranstaltung_id
|
||||
);
|
||||
|
||||
// Get Empfehlung data
|
||||
if(!$empfehlungData = getData($this->anrechnunglib->getEmpfehlungData($anrechnung_id)))
|
||||
{
|
||||
show_error('Missing data for recommendation');
|
||||
}
|
||||
$empfehlungData = $this->anrechnunglib->getEmpfehlungData($anrechnung_id);
|
||||
|
||||
// Get Genehmigung data
|
||||
if(!$genehmigungData = getData($this->anrechnunglib->getGenehmigungData($anrechnung_id)))
|
||||
{
|
||||
show_error('Missing data for recommendation');
|
||||
}
|
||||
$genehmigungData = $this->anrechnunglib->getGenehmigungData($anrechnung_id);
|
||||
|
||||
$viewData = array(
|
||||
'antragData' => $this->anrechnunglib->getAntragData(
|
||||
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
|
||||
$anrechnungData->studiensemester_kurzbz,
|
||||
$anrechnungData->lehrveranstaltung_id
|
||||
),
|
||||
'antragData' => $antragData,
|
||||
'anrechnungData' => $anrechnungData,
|
||||
'empfehlungData' => $empfehlungData,
|
||||
'genehmigungData' => $genehmigungData
|
||||
@@ -118,40 +116,30 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
{
|
||||
$data = $this->input->post('data');
|
||||
|
||||
if(isEmptyArray($data))
|
||||
// Validate data
|
||||
if (isEmptyArray($data))
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'approved'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$approved = getData($this->AnrechnungstatusModel->load('approved'))[0];
|
||||
$approved = getUserLanguage() == 'German'
|
||||
? $approved->bezeichnung_mehrsprachig[0]
|
||||
: $approved->bezeichnung_mehrsprachig[1];
|
||||
|
||||
// Get STGLs person data
|
||||
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
|
||||
{
|
||||
show_error('Failed retrieving person data');
|
||||
}
|
||||
|
||||
// Approve Anrechnung
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->approveAnrechnung($item['anrechnung_id'])))
|
||||
if ($this->anrechnunglib->approveAnrechnung($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_APPROVED,
|
||||
'status_bezeichnung' => $approved,
|
||||
'abgeschlossen_am' => (new DateTime())->format('d.m.Y'),
|
||||
'abgeschlossen_von' => $person->vorname. ' '. $person->nachname
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_APPROVED),
|
||||
'abgeschlossen_am' => (new DateTime())->format('d.m.Y'),
|
||||
'abgeschlossen_von' => $person->vorname. ' '. $person->nachname
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_APPROVED))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,40 +161,30 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
{
|
||||
$data = $this->input->post('data');
|
||||
|
||||
if(isEmptyArray($data))
|
||||
// Validate data
|
||||
if (isEmptyArray($data))
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'rejected'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$rejected = getData($this->AnrechnungstatusModel->load('rejected'))[0];
|
||||
$rejected = getUserLanguage() == 'German'
|
||||
? $rejected->bezeichnung_mehrsprachig[0]
|
||||
: $rejected->bezeichnung_mehrsprachig[1];
|
||||
|
||||
// Get STGLs person data
|
||||
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
|
||||
{
|
||||
show_error('Failed retrieving person data');
|
||||
}
|
||||
|
||||
// Reject Anrechnung
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Reject Anrechnung
|
||||
if(getData($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung'])))
|
||||
if ($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_REJECTED,
|
||||
'status_bezeichnung' => $rejected,
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_REJECTED),
|
||||
'abgeschlossen_am' => (new DateTime())->format('d.m.Y'),
|
||||
'abgeschlossen_von' => $person->vorname. ' '. $person->nachname
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_REJECTED))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +195,7 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError('Es wurden keine Anrechnungen genehmigt.');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,47 +211,165 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressLektor'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressLektor = getData($this->AnrechnungstatusModel->load('inProgressLektor'))[0];
|
||||
$inProgressLektor = getUserLanguage() == 'German'
|
||||
? $inProgressLektor->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressLektor->bezeichnung_mehrsprachig[1];
|
||||
$retval = array();
|
||||
$counter = 0;
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->requestRecommendation($item['anrechnung_id'])))
|
||||
// Check if Anrechnungs-LV has lector
|
||||
if (!$this->anrechnunglib->LVhasLector($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
// Count up LV with no lector
|
||||
$counter++;
|
||||
|
||||
// Break, if LV has no lector
|
||||
break;
|
||||
}
|
||||
|
||||
// Get full name of LV Leitung.
|
||||
// If LV Leitung is not present, get full name of LV lectors.
|
||||
$lector_arr = $this->anrechnunglib->getLectors($item['anrechnung_id']);
|
||||
$empfehlungsanfrage_an = !isEmptyArray($lector_arr)
|
||||
? implode(', ', array_column($lector_arr, 'fullname'))
|
||||
: '';
|
||||
|
||||
// Request Recommendation
|
||||
if($this->anrechnunglib->requestRecommendation($item['anrechnung_id']))
|
||||
{
|
||||
$retval[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR,
|
||||
'status_bezeichnung' => $inProgressLektor,
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR),
|
||||
'empfehlung_anrechnung' => null,
|
||||
'empfehlung_angefordert_am' => (new DateTime())->format('d.m.Y')
|
||||
'empfehlungsanfrageAm' => (new DateTime())->format('d.m.Y'),
|
||||
'empfehlungsanfrageAn' => $empfehlungsanfrage_an
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Output json to ajax
|
||||
if (isset($json) && !isEmptyArray($json))
|
||||
/**
|
||||
* Send mails to lectors
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!isEmptyArray($retval))
|
||||
{
|
||||
/**
|
||||
* Send mails to lectors
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!$this->_sendSanchoMailToLectors($json))
|
||||
{
|
||||
show_error('Failed sending emails');
|
||||
}
|
||||
self::_sendSanchoMailToLectors($retval);
|
||||
|
||||
return $this->outputJsonSuccess($json);
|
||||
// Output json to ajax
|
||||
return $this->outputJsonSuccess($retval);
|
||||
}
|
||||
else
|
||||
|
||||
// Output json to ajax
|
||||
if (isEmptyArray($retval) && $counter > 0)
|
||||
{
|
||||
return $this->outputJsonError('Es wurden keine Empfehlungen angefordert');
|
||||
return $this->outputJsonError(
|
||||
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
|
||||
);
|
||||
}
|
||||
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Withdraw approved / rejected Anrechnung and reset to 'inProgressDP'.
|
||||
*/
|
||||
public function withdraw()
|
||||
{
|
||||
$anrechnung_id = $this->input->post('anrechnung_id');
|
||||
|
||||
if (!is_numeric($anrechnung_id))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'errorFelderFehlen'));
|
||||
}
|
||||
|
||||
// Delete last status approved / rejected.
|
||||
// If last status is 'approved', Genehmigung is resetted.
|
||||
$result = $this->AnrechnungModel->withdrawApprovement($anrechnung_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
}
|
||||
|
||||
// Success output to AJAX
|
||||
$this->outputJsonSuccess(array(
|
||||
'status_bezeichnung' => $this->anrechnunglib->getLastAnrechnungstatus($anrechnung_id))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Withdraw request for reommendation and reset to 'inProgressDP'.
|
||||
* This is only possible if the lector has not provided a recommendation yet.
|
||||
*/
|
||||
public function withdrawRequestRecommendation()
|
||||
{
|
||||
$anrechnung_id = $this->input->post('anrechnung_id');
|
||||
|
||||
if (!is_numeric($anrechnung_id))
|
||||
{
|
||||
show_error('Wrong parameter.');
|
||||
}
|
||||
|
||||
// Get boolean empfehlung of given Anrechnung
|
||||
if (!$result = getData($this->AnrechnungModel->load($anrechnung_id))[0])
|
||||
{
|
||||
show_error('Failed loading Anrechnung');
|
||||
}
|
||||
|
||||
$empfehlung = $result->empfehlung_anrechnung;
|
||||
|
||||
// Get last Anrechnungstatus
|
||||
if (!$result = getData($this->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id))[0])
|
||||
{
|
||||
show_error('Failed loading last Anrechnungstatus');
|
||||
}
|
||||
|
||||
$last_status = $result->status_kurzbz;
|
||||
$anrechnungstatus_id = $result->anrechnungstatus_id;
|
||||
|
||||
// Return if Anrechnung was not waiting for recommendation or if Anrechnung has already been recommended
|
||||
if ($last_status != self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR || !is_null($empfehlung))
|
||||
{
|
||||
return $this->outputJsonError('No recommendation to withdraw.');
|
||||
}
|
||||
|
||||
// Reset status to 'inProgressDP'
|
||||
$result = $this->AnrechnungModel->deleteAnrechnungstatus($anrechnungstatus_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError('Could not withdraw this application.');
|
||||
}
|
||||
|
||||
// Success output to AJAX
|
||||
return $this->outputJsonSuccess(array(
|
||||
'status_bezeichnung' => $this->anrechnunglib->getLastAnrechnungstatus($anrechnung_id))
|
||||
);
|
||||
}
|
||||
|
||||
public function saveEmpfehlungsNotiz()
|
||||
{
|
||||
$anrechnung_id = $this->input->post('anrechnung_id');
|
||||
$notiz_id = $this->input->post('notiz_id');
|
||||
$empfehlungstext = $this->input->post('empfehlung_text');
|
||||
|
||||
// Validate data
|
||||
if (isEmptyString($anrechnung_id))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'systemFehler'));
|
||||
}
|
||||
|
||||
// Save Empfehlungstext
|
||||
$result = self::_saveEmpfehlungsNotiz($anrechnung_id, $empfehlungstext, $notiz_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
|
||||
}
|
||||
|
||||
// Output success message
|
||||
$this->outputJsonSuccess($this->p->t('ui', 'gespeichert'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,7 +387,11 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
// Check if user is entitled to read dms doc
|
||||
self::_checkIfEntitledToReadDMSDoc($dms_id);
|
||||
|
||||
$this->dmslib->download($dms_id);
|
||||
// Set filename to be used on downlaod
|
||||
$filename = $this->anrechnunglib->setFilenameOnDownload($dms_id);
|
||||
|
||||
// Download file
|
||||
$this->dmslib->download($dms_id, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -376,41 +476,6 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
show_error('You are not entitled to read this document');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail to student to inform if Anrechnung was approved or rejected
|
||||
* @param $mail_params
|
||||
*/
|
||||
private function _sendSanchoMailToStudent($anrechnung_id, $status_kurzbz)
|
||||
{
|
||||
$result = getData($this->anrechnunglib->getStudentData($anrechnung_id))[0];
|
||||
|
||||
// Get student name and mail address
|
||||
$to = $result->uid. '@'. DOMAIN;
|
||||
|
||||
$anrede = $result->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
|
||||
|
||||
$text = $status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED
|
||||
? 'Ihrem Antrag auf Anerkennung nachgewiesener Kenntnisse der Lehrveranstaltung "'.
|
||||
$result->lv_bezeichnung. '" wurde stattgegeben.'
|
||||
: 'wir haben Ihren Antrag auf Anerkennung nachgewiesener Kenntnisse geprüft und können die Lehrveranstaltung "'.
|
||||
$result->lv_bezeichnung. '" leider nicht anrechnen, weil die Gleichwertigkeit nicht festgestellt werden konnte.';
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'anrede_name' => $anrede. $result->vorname. ' '. $result->nachname,
|
||||
'text' => $text
|
||||
);
|
||||
|
||||
sendSanchoMail(
|
||||
'AnrechnungGenehmigen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen'
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail to lectors asking for recommendation. (first to LV-Leitung, if not present to all lectors of lv)
|
||||
* @param $mail_params
|
||||
@@ -439,6 +504,8 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
* **/
|
||||
$lector_arr = $this->_getLectors($anrechnung_arr);
|
||||
|
||||
|
||||
|
||||
// Send mail to lectors
|
||||
foreach ($lector_arr as $lector)
|
||||
{
|
||||
@@ -476,8 +543,8 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* Get lectors (prio for LV-Leitung, if not present to all lectors of LV.
|
||||
* Anyway this function will receive a unique array to avoid sending more mails to one and the same lector.
|
||||
* Get unique array of LV lectors.
|
||||
* Only get LV Leitung if present, otherwise all lectors of LV.
|
||||
* @param $anrechnung_arr
|
||||
* @return array
|
||||
*/
|
||||
@@ -521,11 +588,37 @@ class approveAnrechnungDetail extends Auth_Controller
|
||||
unset($lector->lvleiter);
|
||||
}
|
||||
|
||||
// Now make the lector array aka mail receivers unique
|
||||
// Make the lector array unique
|
||||
$lector_arr = array_unique($lector_arr, SORT_REGULAR);
|
||||
|
||||
return $lector_arr;
|
||||
|
||||
}
|
||||
|
||||
private function _saveEmpfehlungsNotiz($anrechnung_id, $empfehlungstext, $notiz_id)
|
||||
{
|
||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
||||
|
||||
if (!isEmptyString($notiz_id))
|
||||
{
|
||||
return $this->NotizModel->update(
|
||||
$notiz_id,
|
||||
array(
|
||||
'text' => $empfehlungstext,
|
||||
'updateamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'updatevon' => $this->_uid
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return $this->NotizModel->addNotizForAnrechnung(
|
||||
$anrechnung_id,
|
||||
self::ANRECHNUNG_NOTIZTITEL_EMPFEHLUNGSNOTIZ_BY_STGL,
|
||||
trim($empfehlungstext),
|
||||
$this->_uid
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,27 +62,21 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Get study semester
|
||||
$studiensemester_kurzbz = $this->input->get('studiensemester');
|
||||
|
||||
// Retrieve studiengaenge the user is entitled for
|
||||
if (isEmptyString($studiensemester_kurzbz))
|
||||
{
|
||||
$result = $this->StudiensemesterModel->getNearest();
|
||||
$studiensemester_kurzbz = getData($result)[0]->studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
// Get studiengaenge the user is entitled for
|
||||
if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ANRECHNUNG_GENEHMIGEN))
|
||||
{
|
||||
show_error(getError($studiengang_kz_arr));
|
||||
}
|
||||
|
||||
if (!is_string($studiensemester_kurzbz))
|
||||
{
|
||||
$studiensemester = $this->StudiensemesterModel->getNearest();
|
||||
if (hasData($studiensemester))
|
||||
{
|
||||
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
|
||||
}
|
||||
elseif (isError($studiensemester))
|
||||
{
|
||||
show_error(getError($studiensemester));
|
||||
}
|
||||
}
|
||||
|
||||
$viewData = array(
|
||||
'studiensemester_selected' => $studiensemester_kurzbz,
|
||||
'studiengaenge_entitled' => $studiengang_kz_arr
|
||||
@@ -98,33 +92,22 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
{
|
||||
$data = $this->input->post('data');
|
||||
|
||||
if(isEmptyArray($data))
|
||||
// Validate data
|
||||
if (isEmptyArray($data))
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'approved'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$approved = getData($this->AnrechnungstatusModel->load('approved'))[0];
|
||||
$approved = getUserLanguage() == 'German'
|
||||
? $approved->bezeichnung_mehrsprachig[0]
|
||||
: $approved->bezeichnung_mehrsprachig[1];
|
||||
|
||||
// Approve Anrechnung
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->approveAnrechnung($item['anrechnung_id'])))
|
||||
if ($this->anrechnunglib->approveAnrechnung($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_APPROVED,
|
||||
'status_bezeichnung' => $approved
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_APPROVED)
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_APPROVED))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,33 +129,22 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
{
|
||||
$data = $this->input->post('data');
|
||||
|
||||
if(isEmptyArray($data))
|
||||
// Validate data
|
||||
if (isEmptyArray($data))
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'rejected'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$rejected = getData($this->AnrechnungstatusModel->load('rejected'))[0];
|
||||
$rejected = getUserLanguage() == 'German'
|
||||
? $rejected->bezeichnung_mehrsprachig[0]
|
||||
: $rejected->bezeichnung_mehrsprachig[1];
|
||||
|
||||
// Reject Anrechnung
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Reject Anrechnung
|
||||
if(getData($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung'])))
|
||||
if ($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_REJECTED,
|
||||
'status_bezeichnung' => $rejected
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_REJECTED)
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_REJECTED))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,46 +171,59 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressLektor'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressLektor = getData($this->AnrechnungstatusModel->load('inProgressLektor'))[0];
|
||||
$inProgressLektor = getUserLanguage() == 'German'
|
||||
? $inProgressLektor->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressLektor->bezeichnung_mehrsprachig[1];
|
||||
$retval = array();
|
||||
$counter = 0;
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->requestRecommendation($item['anrechnung_id'])))
|
||||
// Check if Anrechnungs-LV has lector
|
||||
if (!$this->anrechnunglib->LVhasLector($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
// Count up LV with no lector
|
||||
$counter++;
|
||||
|
||||
// Continue loop, if LV has no lector
|
||||
continue;
|
||||
}
|
||||
|
||||
// Request Recommendation
|
||||
if($this->anrechnunglib->requestRecommendation($item['anrechnung_id']))
|
||||
{
|
||||
// Get full name of LV Leitung.
|
||||
// If LV Leitung is not present, get full name of LV lectors.
|
||||
$lector_arr = $this->anrechnunglib->getLectors($item['anrechnung_id']);
|
||||
$empfehlungsanfrage_an = !isEmptyArray($lector_arr)
|
||||
? implode(', ', array_column($lector_arr, 'fullname'))
|
||||
: '';
|
||||
|
||||
$retval[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR,
|
||||
'status_bezeichnung' => $inProgressLektor,
|
||||
'empfehlung_anrechnung' => null
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR),
|
||||
'empfehlung_anrechnung' => null,
|
||||
'empfehlungsanfrageAm' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'empfehlungsanfrageAn' => $empfehlungsanfrage_an
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Output json to ajax
|
||||
if (isset($json) && !isEmptyArray($json))
|
||||
/**
|
||||
* Send mails to lectors
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!isEmptyArray($retval))
|
||||
{
|
||||
/**
|
||||
* Send mails to lectors
|
||||
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
|
||||
* even if they are required for more recommendations
|
||||
* */
|
||||
if (!$this->_sendSanchoMailToLectors($json))
|
||||
{
|
||||
show_error('Failed sending emails');
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($json);
|
||||
self::_sendSanchoMailToLectors($retval);
|
||||
}
|
||||
else
|
||||
|
||||
// Output json to ajax
|
||||
if (isEmptyArray($retval) && $counter == 0)
|
||||
{
|
||||
return $this->outputJsonError('Es wurden keine Empfehlungen angefordert');
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($retval);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,7 +241,11 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
// Check if user is entitled to read dms doc
|
||||
self::_checkIfEntitledToReadDMSDoc($dms_id);
|
||||
|
||||
$this->dmslib->download($dms_id);
|
||||
// Set filename to be used on downlaod
|
||||
$filename = $this->anrechnunglib->setFilenameOnDownload($dms_id);
|
||||
|
||||
// Download file
|
||||
$this->dmslib->download($dms_id, $filename);
|
||||
}
|
||||
|
||||
|
||||
@@ -307,41 +296,6 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
show_error('You are not entitled to read this document');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail to student to inform if Anrechnung was approved or rejected
|
||||
* @param $mail_params
|
||||
*/
|
||||
private function _sendSanchoMailToStudent($anrechnung_id, $status_kurzbz)
|
||||
{
|
||||
$result = getData($this->anrechnunglib->getStudentData($anrechnung_id))[0];
|
||||
|
||||
// Get student name and mail address
|
||||
$to = $result->uid. '@'. DOMAIN;
|
||||
|
||||
$anrede = $result->geschlecht == 'w' ? 'Sehr geehrte Frau ' : 'Sehr geehrter Herr ';
|
||||
|
||||
$text = $status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED
|
||||
? 'Ihrem Antrag auf Anerkennung nachgewiesener Kenntnisse der Lehrveranstaltung "'.
|
||||
$result->lv_bezeichnung. '" wurde stattgegeben.'
|
||||
: 'wir haben Ihren Antrag auf Anerkennung nachgewiesener Kenntnisse geprüft und können die Lehrveranstaltung "'.
|
||||
$result->lv_bezeichnung. '" leider nicht anrechnen, weil die Gleichwertigkeit nicht festgestellt werden konnte.';
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'anrede_name' => $anrede. $result->vorname. ' '. $result->nachname,
|
||||
'text' => $text
|
||||
);
|
||||
|
||||
sendSanchoMail(
|
||||
'AnrechnungGenehmigen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Ihr Antrag ist abgeschlossen'
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail to lectors asking for recommendation. (first to LV-Leitung, if not present to all lectors of lv)
|
||||
* @param $mail_params
|
||||
@@ -456,6 +410,5 @@ class approveAnrechnungUebersicht extends Auth_Controller
|
||||
$lector_arr = array_unique($lector_arr, SORT_REGULAR);
|
||||
|
||||
return $lector_arr;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class CreateAnrechnung extends Auth_Controller
|
||||
{
|
||||
const BERECHTIGUNG_ANRECHNUNG_ANLEGEN = 'lehre/anrechnung_anlegen';
|
||||
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'lehre/anrechnung_anlegen:r',
|
||||
'getLVsByStudent' => 'lehre/anrechnung_anlegen:r',
|
||||
'create' => 'lehre/anrechnung_anlegen:rw'
|
||||
)
|
||||
);
|
||||
|
||||
// Load models
|
||||
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->load->model('education/Anrechnungstatus_model', 'AnrechnungstatusModel');
|
||||
$this->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
|
||||
// Load libraries
|
||||
$this->load->library('WidgetLib');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AnrechnungLib');
|
||||
$this->load->library('DmsLib');
|
||||
|
||||
// Load helpers
|
||||
$this->load->helper('form');
|
||||
$this->load->helper('url');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
'ui',
|
||||
'anrechnung',
|
||||
'person',
|
||||
'lehre'
|
||||
)
|
||||
);
|
||||
|
||||
// Load configs
|
||||
$this->load->config('anrechnung');
|
||||
|
||||
$this->_setAuthUID();
|
||||
|
||||
$this->setControllerId();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Get Studiensemester
|
||||
$studiensemester_kurzbz = $this->input->get('studiensemester');
|
||||
|
||||
// If no Studiensemester is given
|
||||
if (isEmptyString($studiensemester_kurzbz))
|
||||
{
|
||||
//...use the nearest Studiensemester
|
||||
$result = $this->StudiensemesterModel->getNearest();
|
||||
$studiensemester_kurzbz = getData($result)[0]->studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
// Get Studiengaenge the user is entitled for
|
||||
if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ANRECHNUNG_ANLEGEN))
|
||||
{
|
||||
show_error('Failed retrieving Studiengaenge');
|
||||
}
|
||||
|
||||
// Get Anrechnungsbegruendungen
|
||||
$this->load->model('education/Anrechnungbegruendung_model', 'AnrechnungbegruendungModel');
|
||||
$begruendung_arr = getData($this->AnrechnungbegruendungModel->load());
|
||||
|
||||
$viewData = array(
|
||||
'studiensemester_selected' => $studiensemester_kurzbz,
|
||||
'studiengaenge_entitled' => $studiengang_kz_arr,
|
||||
'begruendungen' => $begruendung_arr
|
||||
);
|
||||
|
||||
$this->load->view('lehre/anrechnung/createAnrechnung.php', $viewData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Lehrveranstaltungen from Student.
|
||||
*/
|
||||
public function getLVsByStudent()
|
||||
{
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
||||
|
||||
// Get Student UID
|
||||
$student_uid = $this->StudentModel->getUID($prestudent_id);
|
||||
|
||||
// Retrieve Lehrveranstaltungen from student
|
||||
$result = $this->LehrveranstaltungModel->getLvsByStudent($student_uid, $studiensemester_kurzbz);
|
||||
|
||||
// Exit, if student has no Lehrveranstaltungen
|
||||
if (!hasData($result))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'keineLVzugeteilt'));
|
||||
}
|
||||
|
||||
// Success response to AJAX
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Anrechnungsantrag.
|
||||
*
|
||||
* Saves Anrechnung and Anrechnungstatus.
|
||||
* Also saves Nachweisdokument to DMS.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
||||
$lehrveranstaltung_id = $this->input->post('lehrveranstaltung_id');
|
||||
$begruendung_id = $this->input->post('begruendung_id');
|
||||
$herkunftKenntnisse = $this->input->post('herkunftKenntnisse');
|
||||
|
||||
// Validate upload file
|
||||
if (empty($_FILES['uploadfile']['name']))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'errorUploadFehlt'));
|
||||
}
|
||||
|
||||
// Validate required data
|
||||
if (isEmptyString($begruendung_id) || isEmptyString($lehrveranstaltung_id))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'errorFelderFehlen'));
|
||||
}
|
||||
|
||||
// Exit if application already exists
|
||||
if (self::_applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('global', 'antragBereitsGestellt'));
|
||||
}
|
||||
|
||||
// Exit if Lehrveranstaltung was already graded with application blocking grades
|
||||
if (self::_LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id, $prestudent_id))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('anrechnung', 'antragBenotungBlockiert'));
|
||||
}
|
||||
|
||||
// Upload document
|
||||
$result = self::_uploadFile();
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError($result->retval);
|
||||
}
|
||||
|
||||
// Hold just inserted DMS ID
|
||||
$lastInsert_dms_id = $result->retval['dms_id'];
|
||||
|
||||
// Save Anrechnung and Anrechnungstatus
|
||||
$result = $this->AnrechnungModel->createAnrechnungsantrag(
|
||||
$prestudent_id,
|
||||
$studiensemester_kurzbz,
|
||||
$lehrveranstaltung_id,
|
||||
$begruendung_id,
|
||||
$lastInsert_dms_id,
|
||||
$herkunftKenntnisse
|
||||
);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
}
|
||||
|
||||
$lastInsert_anrechnung_id = getData($result);
|
||||
|
||||
// Success response to AJAX
|
||||
$this->outputJsonSuccess(array(
|
||||
'anrechnung_id' => $lastInsert_anrechnung_id,
|
||||
'msg' => $this->p->t('global', 'antragWurdeAngelegt')
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the UID of the logged user and checks if it is valid
|
||||
*/
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
if (!$this->_uid) show_error('User authentification failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if application already exists.
|
||||
*
|
||||
* @param $lehrveranstaltung_id
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $prestudent_id
|
||||
* @return bool
|
||||
*/
|
||||
private function _applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id)
|
||||
{
|
||||
$result = $this->AnrechnungModel->loadWhere(array(
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
return hasData($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload file via DMS library.
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _uploadFile()
|
||||
{
|
||||
$dms = array(
|
||||
'kategorie_kurzbz' => 'anrechnung',
|
||||
'version' => 0,
|
||||
'name' => $_FILES['uploadfile']['name'],
|
||||
'mimetype' => $_FILES['uploadfile']['type'],
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'insertvon' => $this->_uid
|
||||
);
|
||||
|
||||
// Upload document
|
||||
return $this->dmslib->upload($dms, 'uploadfile', array('pdf'));
|
||||
}
|
||||
|
||||
private function _LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id, $prestudent_id)
|
||||
{
|
||||
// Get Student UID
|
||||
$student_uid = $this->StudentModel->getUID($prestudent_id);
|
||||
|
||||
// Get Note of Lehrveranstaltung
|
||||
$this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel');
|
||||
$result = $this->LvgesamtnoteModel->load(array(
|
||||
'student_uid' => $student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id
|
||||
)
|
||||
);
|
||||
|
||||
// If Lehrveranstaltung has Note
|
||||
if (hasData($result))
|
||||
{
|
||||
$note = getData($result)[0]->note;
|
||||
|
||||
// Check if Note is a blocking grade
|
||||
if (in_array($note, $this->config->item('grades_blocking_application')))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,15 +6,13 @@ class requestAnrechnung extends Auth_Controller
|
||||
{
|
||||
const REQUEST_ANRECHNUNG_URI = '/lehre/anrechnung/RequestAnrechnung';
|
||||
const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht';
|
||||
|
||||
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_KF = 'inProgressKF';
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR = 'inProgressLektor';
|
||||
const ANRECHNUNGSTATUS_APPROVED = 'approved';
|
||||
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
|
||||
|
||||
const DEADLINE_INTERVAL_NACH_SEMESTERSTART = 'P1M'; // Deadline for application
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
@@ -25,22 +23,25 @@ class requestAnrechnung extends Auth_Controller
|
||||
'download' => 'student/anrechnung_beantragen:rw',
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Load models
|
||||
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
|
||||
|
||||
// Load libraries
|
||||
$this->load->library('WidgetLib');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AnrechnungLib');
|
||||
$this->load->library('DmsLib');
|
||||
|
||||
|
||||
// Load helpers
|
||||
$this->load->helper('form');
|
||||
$this->load->helper('url');
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
|
||||
|
||||
// Load configs
|
||||
$this->load->config('anrechnung');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
@@ -51,63 +52,59 @@ class requestAnrechnung extends Auth_Controller
|
||||
'lehre'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$this->_setAuthUID();
|
||||
|
||||
|
||||
$this->setControllerId();
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$studiensemester_kurzbz = $this->input->get('studiensemester');
|
||||
$lehrveranstaltung_id = $this->input->get('lv_id');
|
||||
|
||||
if (!is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
|
||||
|
||||
if (isEmptyString($lehrveranstaltung_id) || isEmptyString($studiensemester_kurzbz))
|
||||
{
|
||||
show_error('Missing correct parameter');
|
||||
}
|
||||
|
||||
|
||||
// Exit if user is not a student
|
||||
$result = $this->StudentModel->load(array('student_uid' => $this->_uid));
|
||||
|
||||
if (!hasData($result))
|
||||
{
|
||||
show_error('Cant load user');
|
||||
}
|
||||
|
||||
// Get Prestudent ID
|
||||
$prestudent_id = getData($result)[0]->prestudent_id;
|
||||
|
||||
// Check if application deadline is expired
|
||||
// $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz);
|
||||
$is_expired = false; // Set to false until Deadline is defined
|
||||
|
||||
$student = $this->StudentModel->load(array('student_uid' => $this->_uid));
|
||||
if (isSuccess($student) && hasData($student))
|
||||
{
|
||||
$prestudent_id = getData($student)[0]->prestudent_id;
|
||||
}
|
||||
else
|
||||
show_error('Cant load User');
|
||||
|
||||
$is_expired = self::_checkAntragDeadline(
|
||||
$this->config->item('submit_application_start'),
|
||||
$this->config->item('submit_application_end'),
|
||||
$studiensemester_kurzbz
|
||||
);
|
||||
|
||||
// Check if Lehrveranstaltung was already graded with application blocking grades
|
||||
$is_blocked = self::_LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id);
|
||||
|
||||
// Get Anrechung data
|
||||
$result = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
|
||||
if (!$anrechnungData = getData($result))
|
||||
{
|
||||
show_error(getError($anrechnungData));
|
||||
}
|
||||
|
||||
// Dont show who is progressing the application to the student
|
||||
if ($anrechnungData->status_kurzbz == self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL ||
|
||||
$anrechnungData->status_kurzbz == self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR ||
|
||||
$anrechnungData->status_kurzbz == self::ANRECHNUNGSTATUS_PROGRESSED_BY_KF)
|
||||
{
|
||||
$anrechnungData->status = getUserLanguage() == 'German' ? 'in Bearbeitung' : 'in process';
|
||||
}
|
||||
|
||||
$antragData = $this->anrechnunglib->getAntragData($this->_uid, $studiensemester_kurzbz, $lehrveranstaltung_id);
|
||||
$anrechnungData = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
|
||||
|
||||
// Get Antrag data
|
||||
$antragData = $this->anrechnunglib->getAntragData($prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id);
|
||||
|
||||
$viewData = array(
|
||||
'antragData' => $antragData,
|
||||
'anrechnungData' => $anrechnungData,
|
||||
'is_expired' => $is_expired,
|
||||
'disabled' => $is_expired && empty($anrechnungData->anrechnung_id) || !empty($anrechnungData->anrechnung_id)
|
||||
? 'disabled'
|
||||
: ''
|
||||
'is_blocked' => $is_blocked
|
||||
);
|
||||
|
||||
|
||||
$this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Apply Anrechnungsantrag and send to STGL
|
||||
*/
|
||||
@@ -117,104 +114,82 @@ class requestAnrechnung extends Auth_Controller
|
||||
$begruendung_id = $this->input->post('begruendung');
|
||||
$lehrveranstaltung_id = $this->input->post('lv_id');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester');
|
||||
$bestaetigung = $this->input->post('bestaetigung');
|
||||
|
||||
// Validate data
|
||||
if (empty($_FILES['uploadfile']['name']))
|
||||
{
|
||||
show_error('Missing upload file');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorUploadFehlt'));
|
||||
}
|
||||
|
||||
if (!is_numeric($begruendung_id) || !is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
|
||||
if (isEmptyString($begruendung_id) ||
|
||||
isEmptyString($anmerkung) ||
|
||||
isEmptyString($lehrveranstaltung_id) ||
|
||||
isEmptyString($studiensemester_kurzbz))
|
||||
{
|
||||
show_error('Missing correct parameter');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorFelderFehlen'));
|
||||
}
|
||||
|
||||
$student = $this->StudentModel->load(array('student_uid' => $this->_uid));
|
||||
if (isSuccess($student) && hasData($student))
|
||||
|
||||
if (isEmptyString($bestaetigung))
|
||||
{
|
||||
$prestudent_id = getData($student)[0]->prestudent_id;
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorBestaetigungFehlt'));
|
||||
}
|
||||
else
|
||||
show_error('Cant load User');
|
||||
|
||||
$result = $this->_getAnrechnung($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
|
||||
if (hasData($result))
|
||||
|
||||
// Exit if user is not a student
|
||||
$result = $this->StudentModel->load(array('student_uid' => $this->_uid));
|
||||
|
||||
if (!hasData($result))
|
||||
{
|
||||
show_error('Der Antrag wurde bereits gestellt');
|
||||
return $this->outputJsonError('Cant load user');
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
|
||||
// Get Prestudent ID
|
||||
$prestudent_id = getData($result)[0]->prestudent_id;
|
||||
|
||||
// Exit if application already exists
|
||||
if (self::_applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id))
|
||||
{
|
||||
return $this->outputJsonError($this->p->t('anrechnung', 'antragBereitsGestellt'));
|
||||
}
|
||||
|
||||
// Exit if application is not for actual studysemester
|
||||
if (!self::_applicationIsForActualSS($studiensemester_kurzbz))
|
||||
{
|
||||
return $this->outputJsonError($this->p->t('anrechnung', 'antragNurImAktSS'));
|
||||
}
|
||||
|
||||
// Upload document
|
||||
$dms = array(
|
||||
'kategorie_kurzbz' => 'anrechnung',
|
||||
'version' => 0,
|
||||
'name' => $_FILES['uploadfile']['name'],
|
||||
'mimetype' => $_FILES['uploadfile']['type'],
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'insertvon' => $this->_uid
|
||||
$result = self::_uploadFile();
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->outputJsonError($result->retval);
|
||||
}
|
||||
|
||||
// Hold just inserted DMS ID
|
||||
$lastInsert_dms_id = $result->retval['dms_id'];
|
||||
|
||||
// Save Anrechnung and Anrechnungstatus
|
||||
$result = $this->AnrechnungModel->createAnrechnungsantrag(
|
||||
$prestudent_id,
|
||||
$studiensemester_kurzbz,
|
||||
$lehrveranstaltung_id,
|
||||
$begruendung_id,
|
||||
$lastInsert_dms_id,
|
||||
$anmerkung
|
||||
);
|
||||
|
||||
if(isError($uploaddata = $this->dmslib->upload($dms, array('pdf'))))
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($uploaddata));
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
}
|
||||
|
||||
// Get PrestudentID
|
||||
$result = $this->_loadPrestudent($this->_uid, $studiensemester_kurzbz);
|
||||
|
||||
if (!$prestudent = getData($result)[0])
|
||||
{
|
||||
show_error('Failed retrieving prestudent');
|
||||
}
|
||||
|
||||
// Save Anrechnung
|
||||
$result = $this->AnrechnungModel->insert(array(
|
||||
'prestudent_id' => $prestudent->prestudent_id,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'begruendung_id' => $begruendung_id,
|
||||
'dms_id' => $uploaddata->retval['dms_id'],
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'anmerkung_student' => $anmerkung,
|
||||
'insertvon' => $this->_uid
|
||||
|
||||
// Output to AJAX
|
||||
$this->outputJsonSuccess(array(
|
||||
'antragdatum' => (new DateTime())->format('d.m.Y'),
|
||||
'dms_id' => $lastInsert_dms_id,
|
||||
'filename' => $_FILES['uploadfile']['name']
|
||||
));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error('Failed inserting Anrechnung');
|
||||
}
|
||||
|
||||
// Save Anrechnungstatus 'inProgressSTGL'
|
||||
$result = $this->AnrechnungModel->saveAnrechnungstatus($result->retval, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error('Failed saving Anrechnungstatus');
|
||||
}
|
||||
|
||||
// Transaction complete!
|
||||
$this->db->trans_complete();
|
||||
|
||||
if ($this->db->trans_status() === false || isError($result))
|
||||
{
|
||||
$this->db->trans_rollback();
|
||||
show_error($result->msg, EXIT_ERROR);
|
||||
}
|
||||
|
||||
// Send mail to STGL
|
||||
$mail_params = array(
|
||||
'studiengang_kz' => $prestudent->studiengang_kz,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMail($mail_params))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect(site_url(). self::REQUEST_ANRECHNUNG_URI. '?studiensemester='. $studiensemester_kurzbz. '&lv_id='. $lehrveranstaltung_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -241,53 +216,50 @@ class requestAnrechnung extends Auth_Controller
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
|
||||
if (!$this->_uid) show_error('User authentification failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Prestudent by uid and Studiensemester.
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return mixed
|
||||
*/
|
||||
private function _loadPrestudent($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
|
||||
$this->PrestudentstatusModel->addJoin('public.tbl_student', 'prestudent_id');
|
||||
return $this->PrestudentstatusModel->loadWhere(array(
|
||||
'student_uid' => $uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if application deadline is expired.
|
||||
*
|
||||
* @param $start Start date for application submission.
|
||||
* @param $ende End date for application submission.
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return bool True if semester start is more then 1 week ago
|
||||
* @return bool True if today is not during the start- and ending deadlines (= if is expired)
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _checkAntragDeadline($studiensemester_kurzbz)
|
||||
private function _checkAntragDeadline($start, $ende, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->StudiensemesterModel->addSelect('start');
|
||||
if (!$start = getData($this->StudiensemesterModel->load($studiensemester_kurzbz)))
|
||||
|
||||
// If start is not given, set to Semesterstart.
|
||||
if (!isset($start) || isEmptyString($start))
|
||||
{
|
||||
show_error(getError($start));
|
||||
$this->StudiensemesterModel->addSelect('start');
|
||||
$result = $this->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
$start = getData($result)[0]->start;
|
||||
}
|
||||
|
||||
$start = new DateTime($start[0]->start);
|
||||
|
||||
// If ende is not given, set to Semesterende.
|
||||
if (!isset($ende) || isEmptyString($ende))
|
||||
{
|
||||
$this->StudiensemesterModel->addSelect('ende');
|
||||
$result = $this->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
$ende = getData($result)[0]->ende;
|
||||
}
|
||||
|
||||
$today = new DateTime('today midnight');
|
||||
|
||||
// True if today > application deadline
|
||||
return ($today > $start->add((new DateInterval(self::DEADLINE_INTERVAL_NACH_SEMESTERSTART))));
|
||||
$start = new DateTime($start);
|
||||
$ende = new DateTime($ende);
|
||||
|
||||
// True if today is not during the start- and ending deadlines (= if is expired)
|
||||
return ($today <= $start || $today >= $ende);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if user is entitled to read dms doc
|
||||
* Check if user is entitled to read dms doc.
|
||||
*
|
||||
* @param $dms_id
|
||||
*/
|
||||
private function _checkIfEntitledToReadDMSDoc($dms_id)
|
||||
@@ -298,7 +270,7 @@ class requestAnrechnung extends Auth_Controller
|
||||
}
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere(array('dms_id' => $dms_id));
|
||||
|
||||
|
||||
if($result = getData($result)[0])
|
||||
{
|
||||
if ($result->prestudent_id == $student->prestudent_id)
|
||||
@@ -306,104 +278,92 @@ class requestAnrechnung extends Auth_Controller
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
show_error('You are not entitled to read this document');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Anrechnung by Lehrveranstaltung
|
||||
* Check if application already exists.
|
||||
*
|
||||
* @param $lehrveranstaltung_id
|
||||
* @return mixed
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $prestudent_id
|
||||
* @return bool
|
||||
*/
|
||||
private function _getAnrechnung($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id)
|
||||
private function _applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id)
|
||||
{
|
||||
$result = $this->AnrechnungModel->loadWhere(array(
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
return hasData($result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send mail to STGL (if not available, send to STGL assistance)
|
||||
* @param $mail_params
|
||||
* Check if applications' study semester is actual study semester.
|
||||
*
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return bool
|
||||
*/
|
||||
private function _sendSanchoMail($mail_params)
|
||||
private function _applicationIsForActualSS($studiensemester_kurzbz)
|
||||
{
|
||||
// Get STGL mail address, if available, otherwise get assistance mail address
|
||||
list ($to, $vorname) = $this->_getSTGLMailAddress($mail_params['studiengang_kz']);
|
||||
|
||||
// Get full name of student
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
if (!$student_name = getData($this->PersonModel->getFullName($this->_uid)))
|
||||
{
|
||||
show_error ('Failed retrieving person');
|
||||
}
|
||||
|
||||
// Get lehrveranstaltung bezeichnung
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
if (!$lehrveranstaltung = getData($this->LehrveranstaltungModel->load($mail_params['lehrveranstaltung_id']))[0])
|
||||
{
|
||||
show_error ('Failed retrieving person');
|
||||
}
|
||||
|
||||
// Link to Antrag genehmigen
|
||||
$url =
|
||||
CIS_ROOT. 'cis/index.php?menu='.
|
||||
CIS_ROOT. 'cis/menu.php?content_id=&content='.
|
||||
CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI;
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'vorname' => $vorname,
|
||||
'student_name' => $student_name,
|
||||
'lehrveranstaltung_bezeichnung' => $lehrveranstaltung->bezeichnung,
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
sendSanchoMail(
|
||||
'AnrechnungAntragStellen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt'
|
||||
);
|
||||
|
||||
return true;
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$result = $this->StudiensemesterModel->getNearest();
|
||||
$actual_ss = getData($result)[0]->studiensemester_kurzbz;
|
||||
|
||||
return $studiensemester_kurzbz == $actual_ss;
|
||||
}
|
||||
|
||||
// Get STGL mail address, if available, otherwise get assistance mail address
|
||||
private function _getSTGLMailAddress($stg_kz)
|
||||
|
||||
private function _LVhasBlockingGrades($studiensemester_kurzbz, $lehrveranstaltung_id)
|
||||
{
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$result = $this->StudiengangModel->getLeitung($stg_kz);
|
||||
|
||||
// Get STGL mail address, if available
|
||||
// Get Note of Lehrveranstaltung
|
||||
$this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel');
|
||||
$result = $this->LvgesamtnoteModel->load(array(
|
||||
'student_uid' => $this->_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id
|
||||
)
|
||||
);
|
||||
|
||||
// If Lehrveranstaltung has Note
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->uid. '@'. DOMAIN,
|
||||
$result->retval[0]->vorname
|
||||
);
|
||||
}
|
||||
// ...otherwise get assistance mail address
|
||||
else
|
||||
{
|
||||
$result = $this->StudiengangModel->load($stg_kz);
|
||||
|
||||
if (hasData($result))
|
||||
$note = getData($result)[0]->note;
|
||||
|
||||
// Check if Note is a blocking grade
|
||||
if (in_array($note, $this->config->item('grades_blocking_application')))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->email,
|
||||
''
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload file via DMS library.
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _uploadFile()
|
||||
{
|
||||
$dms = array(
|
||||
'kategorie_kurzbz' => 'anrechnung',
|
||||
'version' => 0,
|
||||
'name' => $_FILES['uploadfile']['name'],
|
||||
'mimetype' => $_FILES['uploadfile']['type'],
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'insertvon' => $this->_uid
|
||||
);
|
||||
|
||||
// Upload document
|
||||
return $this->dmslib->upload($dms, 'uploadfile', array('pdf'));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
//if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class reviewAnrechnungDetail extends Auth_Controller
|
||||
{
|
||||
@@ -78,23 +78,20 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
self::_checkIfEntitledToReadAnrechnung($anrechnung_id);
|
||||
|
||||
// Get Anrechung data
|
||||
if (!$anrechnungData = getData($this->anrechnunglib->getAnrechnungData($anrechnung_id)))
|
||||
{
|
||||
show_error('Missing data for Anrechnung.');
|
||||
}
|
||||
$anrechnungData = $this->anrechnunglib->getAnrechnungData($anrechnung_id);
|
||||
|
||||
// Get Antrag data
|
||||
$antragData = $this->anrechnunglib->getAntragData(
|
||||
$anrechnungData->prestudent_id,
|
||||
$anrechnungData->studiensemester_kurzbz,
|
||||
$anrechnungData->lehrveranstaltung_id
|
||||
);
|
||||
|
||||
// Get Empfehlung data
|
||||
if(!$empfehlungData = getData($this->anrechnunglib->getEmpfehlungData($anrechnung_id)))
|
||||
{
|
||||
show_error('Missing data for recommendation');
|
||||
}
|
||||
$empfehlungData = $this->anrechnunglib->getEmpfehlungData($anrechnung_id);
|
||||
|
||||
$viewData = array(
|
||||
'antragData' => $this->anrechnunglib->getAntragData(
|
||||
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
|
||||
$anrechnungData->studiensemester_kurzbz,
|
||||
$anrechnungData->lehrveranstaltung_id
|
||||
),
|
||||
'antragData' => $antragData,
|
||||
'anrechnungData' => $anrechnungData,
|
||||
'empfehlungData' => $empfehlungData
|
||||
);
|
||||
@@ -113,29 +110,23 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressDP'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressDP = getData($this->AnrechnungstatusModel->load('inProgressDP'))[0];
|
||||
$inProgressDP = getUserLanguage() == 'German'
|
||||
? $inProgressDP->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressDP->bezeichnung_mehrsprachig[1];
|
||||
|
||||
|
||||
// Get lectors person data
|
||||
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
|
||||
{
|
||||
show_error('Failed retrieving person data');
|
||||
return $this->outputJsonError('Failed retrieving person data');
|
||||
}
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])))
|
||||
if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'empfehlung_anrechnung' => 'true',
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL,
|
||||
'status_bezeichnung' => $inProgressDP,
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL),
|
||||
'empfehlung_am' => (new DateTime())->format('d.m.Y'),
|
||||
'empfehlung_von' => $person->vorname. ' '. $person->nachname
|
||||
);
|
||||
@@ -151,14 +142,14 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
* */
|
||||
if (!$this->_sendSanchoMails($json, true))
|
||||
{
|
||||
show_error('Failed sending emails');
|
||||
return $this->outputJsonError('Failed sending emails');
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($json);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError('Empfehlungen wurden nicht durchgeführt');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,29 +165,23 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressDP'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressDP = getData($this->AnrechnungstatusModel->load('inProgressDP'))[0];
|
||||
$inProgressDP = getUserLanguage() == 'German'
|
||||
? $inProgressDP->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressDP->bezeichnung_mehrsprachig[1];
|
||||
|
||||
// Get lectors person data
|
||||
if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
|
||||
{
|
||||
show_error('Failed retrieving person data');
|
||||
return $this->outputJsonError('Failed retrieving person data');
|
||||
}
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])))
|
||||
if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'empfehlung_anrechnung' => 'false',
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL,
|
||||
'status_bezeichnung' => $inProgressDP,
|
||||
'empfehlumg_am' => (new DateTime())->format('d.m.Y'),
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL),
|
||||
'empfehlung_am' => (new DateTime())->format('d.m.Y'),
|
||||
'empfehlung_von' => $person->vorname. ' '. $person->nachname
|
||||
);
|
||||
}
|
||||
@@ -208,14 +193,14 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
// Send mails to STGL (if not present STGL, send to STGL assistance)
|
||||
if (!$this->_sendSanchoMails($json, false))
|
||||
{
|
||||
show_error('Failed sending emails');
|
||||
return $this->outputJsonError('Failed sending emails');
|
||||
}
|
||||
|
||||
return $this->outputJsonSuccess($json);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError('Empfehlungen wurden nicht durchgeführt');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,8 +218,12 @@ class reviewAnrechnungDetail extends Auth_Controller
|
||||
|
||||
// Check if user is entitled to read dms doc
|
||||
self::_checkIfEntitledToReadDMSDoc($dms_id);
|
||||
|
||||
$this->dmslib->download($dms_id);
|
||||
|
||||
// Set filename to be used on downlaod
|
||||
$filename = $this->anrechnunglib->setFilenameOnDownload($dms_id);
|
||||
|
||||
// Download file
|
||||
$this->dmslib->download($dms_id, $filename);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,19 +62,13 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Get study semester
|
||||
$studiensemester_kurzbz = $this->input->get('studiensemester');
|
||||
|
||||
if (!is_string($studiensemester_kurzbz))
|
||||
if (isEmptyString($studiensemester_kurzbz))
|
||||
{
|
||||
$studiensemester = $this->StudiensemesterModel->getNearest();
|
||||
if (hasData($studiensemester))
|
||||
{
|
||||
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
|
||||
}
|
||||
elseif (isError($studiensemester))
|
||||
{
|
||||
show_error(getError($studiensemester));
|
||||
}
|
||||
$result = $this->StudiensemesterModel->getNearest();
|
||||
$studiensemester_kurzbz = getData($result)[0]->studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$viewData = array(
|
||||
@@ -95,24 +89,17 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
{
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressDP'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressDP = getData($this->AnrechnungstatusModel->load('inProgressDP'))[0];
|
||||
$inProgressDP = getUserLanguage() == 'German'
|
||||
? $inProgressDP->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressDP->bezeichnung_mehrsprachig[1];
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id'])))
|
||||
if($this->anrechnunglib->recommendAnrechnung($item['anrechnung_id']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'empfehlung_anrechnung' => 'true',
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL,
|
||||
'status_bezeichnung' => $inProgressDP
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -133,7 +120,7 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError('Empfehlungen wurden nicht durchgeführt');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,24 +136,16 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
||||
}
|
||||
|
||||
// Get statusbezeichnung for 'inProgressDP'
|
||||
$this->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$inProgressDP = getData($this->AnrechnungstatusModel->load('inProgressDP'))[0];
|
||||
$inProgressDP = getUserLanguage() == 'German'
|
||||
? $inProgressDP->bezeichnung_mehrsprachig[0]
|
||||
: $inProgressDP->bezeichnung_mehrsprachig[1];
|
||||
|
||||
foreach ($data as $item)
|
||||
{
|
||||
// Approve Anrechnung
|
||||
if(getData($this->anrechnunglib
|
||||
->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung'])))
|
||||
if($this->anrechnunglib->dontRecommendAnrechnung($item['anrechnung_id'], $item['begruendung']))
|
||||
{
|
||||
$json[]= array(
|
||||
'anrechnung_id' => $item['anrechnung_id'],
|
||||
'empfehlung_anrechnung' => 'false',
|
||||
'status_kurzbz' => self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL,
|
||||
'status_bezeichnung' => $inProgressDP
|
||||
'status_bezeichnung' => $this->anrechnunglib->getStatusbezeichnung(self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -184,7 +163,7 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->outputJsonError('Empfehlungen wurden nicht durchgeführt');
|
||||
return $this->outputJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +182,11 @@ class reviewAnrechnungUebersicht extends Auth_Controller
|
||||
// Check if user is entitled to read dms doc
|
||||
self::_checkIfEntitledToReadDMSDoc($dms_id);
|
||||
|
||||
$this->dmslib->download($dms_id);
|
||||
// Set filename to be used on downlaod
|
||||
$filename = $this->anrechnunglib->setFilenameOnDownload($dms_id);
|
||||
|
||||
// Download file
|
||||
$this->dmslib->download($dms_id, $filename);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class FAS_UDF extends Auth_Controller
|
||||
|
||||
if (isset($person_id) && is_numeric($person_id))
|
||||
{
|
||||
if ($this->PersonModel->hasUDF())
|
||||
if ($this->PersonModel->udfsExistAndDefined())
|
||||
{
|
||||
$personUdfs = $this->PersonModel->getUDFs($person_id);
|
||||
$data['person_id'] = $person_id;
|
||||
@@ -41,7 +41,7 @@ class FAS_UDF extends Auth_Controller
|
||||
|
||||
if (isset($prestudent_id) && is_numeric($prestudent_id))
|
||||
{
|
||||
if ($this->PrestudentModel->hasUDF())
|
||||
if ($this->PrestudentModel->udfsExistAndDefined())
|
||||
{
|
||||
$prestudentUdfs = $this->PrestudentModel->getUDFs($prestudent_id);
|
||||
$data['prestudent_id'] = $prestudent_id;
|
||||
|
||||
@@ -124,20 +124,20 @@ class InfoCenter extends Auth_Controller
|
||||
'saveAbsage' => 'infocenter:rw',
|
||||
'saveFreigabe' => 'infocenter:rw',
|
||||
'getNotiz' => 'infocenter:r',
|
||||
'saveNotiz' => 'infocenter:rw',
|
||||
'saveNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
'updateNotiz' => 'infocenter:rw',
|
||||
'reloadZgvPruefungen' => 'infocenter:r',
|
||||
'reloadMessages' => 'infocenter:r',
|
||||
'reloadDoks' => 'infocenter:r',
|
||||
'reloadNotizen' => 'infocenter:r',
|
||||
'reloadNotizen' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'reloadLogs' => 'infocenter:r',
|
||||
'outputAkteContent' => 'infocenter:r',
|
||||
'getPostponeDate' => 'infocenter:r',
|
||||
'outputAkteContent' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'getPostponeDate' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'park' => 'infocenter:rw',
|
||||
'unpark' => 'infocenter:rw',
|
||||
'setOnHold' => 'infocenter:rw',
|
||||
'removeOnHold' => 'infocenter:rw',
|
||||
'getStudienjahrEnd' => 'infocenter:r',
|
||||
'removeOnHold' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
'getStudienjahrEnd' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'setNavigationMenuArrayJson' => 'infocenter:r',
|
||||
'getAbsageData' => 'infocenter:r',
|
||||
'saveAbsageForAll' => 'infocenter:rw'
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Issues extends Auth_Controller
|
||||
{
|
||||
private $_uid;
|
||||
|
||||
const FUNKTION_KURZBZ = 'ass'; // // user having this funktion can see issues for oes assigned with this funktion
|
||||
const BERECHTIGUNG_KURZBZ = 'system/issues_verwalten'; // user having this permission can see issues for oes assigned with this permission
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => array(self::BERECHTIGUNG_KURZBZ.':r'),
|
||||
'changeIssueStatus' => array(self::BERECHTIGUNG_KURZBZ.':rw')
|
||||
)
|
||||
);
|
||||
|
||||
// Load libraries
|
||||
$this->load->library('IssuesLib');
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
'ui',
|
||||
'filter'
|
||||
)
|
||||
);
|
||||
|
||||
// Load models
|
||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
|
||||
|
||||
$this->_setAuthUID(); // sets property uid
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$oes_for_issues = $this->_getOesForIssues();
|
||||
|
||||
$this->load->view(
|
||||
'system/issues/issues',
|
||||
$oes_for_issues
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes issues status change
|
||||
*/
|
||||
public function changeIssueStatus()
|
||||
{
|
||||
$issue_ids = $this->input->post('issue_ids');
|
||||
$status_kurzbz = $this->input->post('status_kurzbz');
|
||||
$verarbeitetvon = $this->_uid;
|
||||
|
||||
$errors = array();
|
||||
foreach ($issue_ids as $issue_id)
|
||||
{
|
||||
$issueRes = $this->issueslib->changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon);
|
||||
|
||||
if (isError($issueRes))
|
||||
$errors[] = getError($issueRes);
|
||||
}
|
||||
|
||||
if (!isEmptyArray($errors))
|
||||
$this->outputJsonError(implode(", ", $errors));
|
||||
else
|
||||
$this->outputJsonSuccess("Status erfolgreich aktualisiert");
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the UID of the logged user and checks if it is valid
|
||||
*/
|
||||
private function _setAuthUID()
|
||||
{
|
||||
$this->_uid = getAuthUID();
|
||||
|
||||
if (!$this->_uid) show_error('User authentification failed');
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets oes of logged in user, which are needed to display issues of the user.
|
||||
* This includes oes assigned by a funktio and as the issue permission.
|
||||
* @return array
|
||||
*/
|
||||
private function _getOesForIssues()
|
||||
{
|
||||
// get oes of uid for which there is a current funktion
|
||||
$all_funktionen_oe_kurzbz = array();
|
||||
$oe_kurzbz_for_funktion = array();
|
||||
$benutzerfunktionRes = $this->BenutzerfunktionModel->getBenutzerFunktionByUid($this->_uid, null, date('Y-m-d'), date('Y-m-d'));
|
||||
|
||||
if (isError($benutzerfunktionRes))
|
||||
show_error(getError($benutzerfunktionRes));
|
||||
|
||||
if (hasData($benutzerfunktionRes))
|
||||
{
|
||||
foreach (getData($benutzerfunktionRes) as $benutzerfunktion)
|
||||
{
|
||||
$all_funktionen_oe_kurzbz[$benutzerfunktion->oe_kurzbz][] = $benutzerfunktion->funktion_kurzbz;
|
||||
|
||||
// separate oes for the funktion needed for displaying issues
|
||||
if ($benutzerfunktion->funktion_kurzbz == self::FUNKTION_KURZBZ)
|
||||
{
|
||||
$oe_kurzbz_for_funktion[] = $benutzerfunktion->oe_kurzbz;
|
||||
|
||||
// permission also for all oes under the oe for which funktion is assigend
|
||||
$childOesFunktionRes = $this->OrganisationseinheitModel->getChilds($benutzerfunktion->oe_kurzbz);
|
||||
|
||||
if (isError($childOesFunktionRes))
|
||||
show_error(getError($childOesFunktionRes));
|
||||
|
||||
if (hasData($childOesFunktionRes))
|
||||
{
|
||||
$childOesFunktion = getData($childOesFunktionRes);
|
||||
|
||||
foreach ($childOesFunktion as $childOeFunktion)
|
||||
{
|
||||
if (!in_array($childOeFunktion->oe_kurzbz, $oe_kurzbz_for_funktion))
|
||||
$oe_kurzbz_for_funktion[] = $childOeFunktion->oe_kurzbz;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add oes for which there is the "manage issues" Berechtigung
|
||||
if (!$oe_kurzbz_berechtigt = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_KURZBZ))
|
||||
show_error('Keine Berechtigung oder Fehler bei Berechtigungsprüfung');
|
||||
|
||||
$all_oe_kurzbz_berechtigt = array_unique(array_merge($oe_kurzbz_for_funktion, $oe_kurzbz_berechtigt));
|
||||
|
||||
return array(
|
||||
'all_funktionen_oe_kurzbz' => $all_funktionen_oe_kurzbz,
|
||||
'all_oe_kurzbz_berechtigt' => $all_oe_kurzbz_berechtigt
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -211,7 +211,7 @@ class Filters extends FHC_Controller
|
||||
public function setNavigationMenu()
|
||||
{
|
||||
// Generates the filters structure array
|
||||
$filterMenu = $this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE));
|
||||
$this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE));
|
||||
|
||||
$this->outputJsonSuccess('Success');
|
||||
}
|
||||
@@ -271,3 +271,4 @@ class Filters extends FHC_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@ class UDF extends FHC_Controller
|
||||
|
||||
// Loads the UDFLib with HTTP GET/POST parameters
|
||||
$this->_loadUDFLib();
|
||||
|
||||
// Checks if the caller is allow to use this UDF widget
|
||||
$this->_isAllowed();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
@@ -39,7 +36,6 @@ class UDF extends FHC_Controller
|
||||
*/
|
||||
public function saveUDFs()
|
||||
{
|
||||
$udfUniqueId = $this->input->post(self::UDF_UNIQUE_ID);
|
||||
$udfs = $this->input->post(UDFLib::UDFS_ARG_NAME);
|
||||
|
||||
if (!isEmptyString($udfs))
|
||||
@@ -47,7 +43,7 @@ class UDF extends FHC_Controller
|
||||
$jsonDecodedUDF = json_decode($udfs);
|
||||
if ($jsonDecodedUDF != null)
|
||||
{
|
||||
$this->outputJson($this->udflib->saveUDFs($udfUniqueId, $jsonDecodedUDF));
|
||||
$this->outputJson($this->udflib->saveUDFs($jsonDecodedUDF));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -63,17 +59,6 @@ class UDF extends FHC_Controller
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Checks if the user is allowed to use this UDFWidget
|
||||
*/
|
||||
private function _isAllowed()
|
||||
{
|
||||
if (!$this->udflib->isAllowed())
|
||||
{
|
||||
$this->terminateWithJsonError('You are not allowed to access to this content');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the UDFLib with the UDF_UNIQUE_ID parameter
|
||||
* If the parameter UDF_UNIQUE_ID is not given then the execution of the controller is terminated and
|
||||
@@ -105,3 +90,4 @@ class UDF extends FHC_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ class DB_Model extends CI_Model
|
||||
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
|
||||
|
||||
// If this table has UDF and the validation of them is ok
|
||||
if (isError($validate = $this->_manageUDFs($data, $this->dbTable))) return $validate;
|
||||
if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable))) return $validate;
|
||||
|
||||
// DB-INSERT
|
||||
$insert = $this->db->insert($this->dbTable, $data);
|
||||
@@ -137,7 +137,7 @@ class DB_Model extends CI_Model
|
||||
if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL);
|
||||
|
||||
// If this table has UDF and the validation of them is ok
|
||||
if (isError($validate = $this->_manageUDFs($data, $this->dbTable, $id))) return $validate;
|
||||
if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable, $id))) return $validate;
|
||||
|
||||
$tmpId = $id;
|
||||
|
||||
@@ -670,6 +670,7 @@ class DB_Model extends CI_Model
|
||||
/**
|
||||
* Returns all the UDF contained in this table ($dbTable)
|
||||
* If no UDF are present, an empty array will be returned
|
||||
* NOTE: only the UDFs that the logged user is allowed to read are loaded by this method
|
||||
*/
|
||||
public function getUDFs($id, $udfName = null)
|
||||
{
|
||||
@@ -700,9 +701,9 @@ class DB_Model extends CI_Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this table has the field udf_values
|
||||
* Checks if this table has the field udf_values and if there is a UDF definition for this table
|
||||
*/
|
||||
public function hasUDF()
|
||||
public function udfsExistAndDefined()
|
||||
{
|
||||
if ($this->fieldExists(UDFLib::COLUMN_NAME))
|
||||
{
|
||||
@@ -844,25 +845,25 @@ class DB_Model extends CI_Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper method for UDFLib->manageUDFs
|
||||
* Wrapper method for UDFLib->prepareUDFsWrite
|
||||
*/
|
||||
private function _manageUDFs(&$data, $schemaAndTable, $id = null)
|
||||
private function _prepareUDFsWrite(&$data, $schemaAndTable, $id = null)
|
||||
{
|
||||
$manageUDFs = success();
|
||||
$prepareUDFsWrite = success();
|
||||
|
||||
if ($this->hasUDF())
|
||||
if ($this->udfsExistAndDefined())
|
||||
{
|
||||
if ($id != null)
|
||||
{
|
||||
$manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable, $this->getUDFs($id));
|
||||
$prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable, $this->_getUDFsNoPerms($id));
|
||||
}
|
||||
else
|
||||
{
|
||||
$manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable);
|
||||
$prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable);
|
||||
}
|
||||
}
|
||||
|
||||
return $manageUDFs;
|
||||
return $prepareUDFsWrite;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -874,9 +875,10 @@ class DB_Model extends CI_Model
|
||||
*/
|
||||
private function _toPhp($result)
|
||||
{
|
||||
$udfs = false; // if UDFs are inside the given result set
|
||||
$toPhp = $result; // if there is nothing to convert then return the result from DB
|
||||
|
||||
// If it's an object its fields will be parsed to find booleans and arrays types
|
||||
// If it's an object its fields will be parsed to find booleans, arrays and UDFs types
|
||||
if (is_object($result))
|
||||
{
|
||||
$toBeConverterdArray = array(); // Fields to be converted
|
||||
@@ -884,40 +886,48 @@ class DB_Model extends CI_Model
|
||||
$this->executedQueryMetaData = $result->field_data(); // Fields information
|
||||
$this->executedQueryListFields = $result->list_fields(); // List of the retrieved fields
|
||||
|
||||
for ($i = 0; $i < count($this->executedQueryMetaData); $i++) // Looking for booleans and arrays
|
||||
// Looking for booleans, arrays and UDFs
|
||||
foreach ($this->executedQueryMetaData as $eqmd)
|
||||
{
|
||||
// If array type, boolean type OR a UDF
|
||||
if (strpos($this->executedQueryMetaData[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|
||||
|| $this->executedQueryMetaData[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE
|
||||
|| $this->udflib->isUDFColumn($this->executedQueryMetaData[$i]->name, $this->executedQueryMetaData[$i]->type))
|
||||
if (strpos($eqmd->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|
||||
|| $eqmd->type == DB_Model::PGSQL_BOOLEAN_TYPE
|
||||
|| $this->udflib->isUDFColumn($eqmd->name, $eqmd->type))
|
||||
{
|
||||
// Name and type of the field to be converted
|
||||
$toBeConverted = new stdClass();
|
||||
// Set the type of the field to be converted
|
||||
$toBeConverted->type = $this->executedQueryMetaData[$i]->type;
|
||||
// Set the name of the field to be converted
|
||||
$toBeConverted->name = $this->executedQueryMetaData[$i]->name;
|
||||
// Add the field to be converted to $toBeConverterdArray
|
||||
array_push($toBeConverterdArray, $toBeConverted);
|
||||
// If UDFs are inside this result set
|
||||
if ($this->udflib->isUDFColumn($eqmd->name, $eqmd->type))
|
||||
{
|
||||
$udfs = true;
|
||||
}
|
||||
else // all the other cases
|
||||
{
|
||||
// Name and type of the field to be converted
|
||||
$toBeConverted = new stdClass();
|
||||
// Set the type of the field to be converted
|
||||
$toBeConverted->type = $eqmd->type;
|
||||
// Set the name of the field to be converted
|
||||
$toBeConverted->name = $eqmd->name;
|
||||
// Add the field to be converted to $toBeConverterdArray
|
||||
array_push($toBeConverterdArray, $toBeConverted);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If there is something to convert, otherwhise don't lose time
|
||||
if (count($toBeConverterdArray) > 0)
|
||||
{
|
||||
// Returns the array of objects, each of them represents a DB record
|
||||
$resultsArray = $result->result();
|
||||
// Looping on results
|
||||
for ($i = 0; $i < count($resultsArray); $i++)
|
||||
{
|
||||
// Single element
|
||||
$resultElement = $resultsArray[$i];
|
||||
// Looping on fields to be converted
|
||||
for ($j = 0; $j < count($toBeConverterdArray); $j++)
|
||||
{
|
||||
// Single element
|
||||
$toBeConverted = $toBeConverterdArray[$j];
|
||||
// Returns the array of objects, each of them represents a DB record
|
||||
$resultsArray = $result->result();
|
||||
|
||||
// If in this result set there are UDFs then prepare them
|
||||
if ($udfs) $this->udflib->prepareUDFsRead($resultsArray, $this->dbTable);
|
||||
|
||||
// If there is something to convert, otherwhise don't waste time
|
||||
if (!isEmptyArray($toBeConverterdArray))
|
||||
{
|
||||
// Looping on results
|
||||
foreach ($resultsArray as $resultElement)
|
||||
{
|
||||
// Looping on fields to be converted
|
||||
foreach ($toBeConverterdArray as $toBeConverted)
|
||||
{
|
||||
// Array type
|
||||
if (strpos($toBeConverted->type, DB_Model::PGSQL_ARRAY_TYPE) !== false)
|
||||
{
|
||||
@@ -931,30 +941,12 @@ class DB_Model extends CI_Model
|
||||
{
|
||||
$resultElement->{$toBeConverted->name} = $this->pgBoolPhp($resultElement->{$toBeConverted->name});
|
||||
}
|
||||
// UDF
|
||||
elseif ($this->udflib->isUDFColumn($toBeConverted->name, $toBeConverted->type))
|
||||
{
|
||||
$jsonValues = json_decode($resultElement->{$toBeConverted->name}); // decode UDFs values
|
||||
if ($jsonValues != null) // if decode is ok
|
||||
{
|
||||
// For every UDF
|
||||
foreach ($jsonValues as $key => $value)
|
||||
{
|
||||
$resultElement->{$key} = $value; // create a new element called like the UDF
|
||||
}
|
||||
}
|
||||
unset($resultElement->{UDFLib::COLUMN_NAME}); // remove udf_values from the response
|
||||
}
|
||||
}
|
||||
}
|
||||
// Returns DB data as an array
|
||||
$toPhp = $resultsArray;
|
||||
}
|
||||
// And returns DB data as an array
|
||||
else
|
||||
{
|
||||
$toPhp = $result->result();
|
||||
}
|
||||
|
||||
// Returns DB data as an array
|
||||
$toPhp = $resultsArray;
|
||||
}
|
||||
|
||||
return $toPhp;
|
||||
@@ -998,4 +990,48 @@ class DB_Model extends CI_Model
|
||||
{
|
||||
if ($this->debugMode) $this->loglib->logDebug($this->db->last_query());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the UDF contained in this table ($dbTable)
|
||||
* If no UDF are present, an empty array will be returned
|
||||
* NOTE: it returns all the UDFs, does _not_ check the permissions
|
||||
*/
|
||||
private function _getUDFsNoPerms($id)
|
||||
{
|
||||
$udfs = array();
|
||||
|
||||
$this->db->select(UDFLib::COLUMN_NAME, true); // get only the UDF column
|
||||
|
||||
// Primary key management
|
||||
$tmpId = $id;
|
||||
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
if (isset($id[0]))
|
||||
{
|
||||
$tmpId = $this->_arrayCombine($this->pk, $id);
|
||||
}
|
||||
}
|
||||
elseif ($id != null)
|
||||
{
|
||||
$tmpId = array($this->pk => $id);
|
||||
}
|
||||
|
||||
// Read the record from the table
|
||||
$result = $this->db->get_where($this->dbTable, $tmpId);
|
||||
|
||||
// If was a success and there are data
|
||||
if ($result && count($result->result()) == 1)
|
||||
{
|
||||
// Get the UDF column and decode it from JSON
|
||||
$jsonValues = json_decode($result->result()[0]->{UDFLib::COLUMN_NAME});
|
||||
|
||||
// If the JSON convertion was fine convert the object to an array
|
||||
if ($jsonValues != null) $udfs = get_object_vars($jsonValues);
|
||||
}
|
||||
|
||||
return $udfs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -132,6 +132,32 @@ abstract class FHC_Controller extends CI_Controller
|
||||
{
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($mixed));
|
||||
}
|
||||
|
||||
protected function outputFile($fileObj)
|
||||
{
|
||||
if (file_exists($fileObj->file))
|
||||
{
|
||||
$finfo = new finfo(FILEINFO_MIME);
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: '. $finfo->file($fileObj->file));
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($fileObj->file));
|
||||
|
||||
if (isset($fileObj->disposition) && ($fileObj->disposition == 'inline' || $fileObj->disposition == 'attachment'))
|
||||
{
|
||||
header('Content-Disposition: '. $fileObj->disposition. '; filename="'. $fileObj->name. '"');
|
||||
}
|
||||
|
||||
readfile($fileObj->file);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -70,6 +70,19 @@ abstract class JQW_Controller extends JOB_Controller
|
||||
return $jobs;
|
||||
}
|
||||
|
||||
/**
|
||||
* To get all the jobs specified by the given parameters
|
||||
*/
|
||||
protected function getJobsByTypeStatus($type, $status)
|
||||
{
|
||||
$jobs = $this->jobsqueuelib->getJobsByTypeStatus($type, $status);
|
||||
|
||||
// If an error occurred then log it in database
|
||||
if (isError($jobs)) $this->logError(getError($jobs), array($type, $status));
|
||||
|
||||
return $jobs;
|
||||
}
|
||||
|
||||
/**
|
||||
* To get all the jobs specified by the given parameters
|
||||
*/
|
||||
|
||||
@@ -12,6 +12,7 @@ class AnrechnungLib
|
||||
|
||||
const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_LEKTOR = 'AnrechnungNotizLektor';
|
||||
const ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL = 'AnrechnungNotizSTGL';
|
||||
const ANRECHNUNG_NOTIZTITEL_EMPFEHLUNGSNOTIZ_BY_STGL = 'AnrechnungEmpfehlungsnotizSTGL';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -23,6 +24,10 @@ class AnrechnungLib
|
||||
$this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$this->ci->load->model('crm/Student_model', 'StudentModel');
|
||||
$this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
$this->ci->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->ci->load->model('person/Notiz_model', 'NotizModel');
|
||||
|
||||
$this->ci->load->library('DmsLib');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,16 +37,19 @@ class AnrechnungLib
|
||||
* @param $lv_id
|
||||
* @return StdClass
|
||||
*/
|
||||
public function getAntragData($uid, $studiensemester_kurzbz, $lv_id)
|
||||
public function getAntragData($prestudent_id, $studiensemester_kurzbz, $lv_id)
|
||||
{
|
||||
$antrag_data = new StdClass();
|
||||
|
||||
|
||||
// Get students UID.
|
||||
$uid = $this->ci->StudentModel->getUID($prestudent_id);
|
||||
|
||||
// Get lehrveranstaltung data. Break, if course is not assigned to student.
|
||||
if(!$lv = getData($this->ci->LehrveranstaltungModel->getLvByStudent($uid, $studiensemester_kurzbz, $lv_id))[0])
|
||||
{
|
||||
show_error('You are not assigned to this course yet.');
|
||||
}
|
||||
|
||||
|
||||
// Get the students personal data
|
||||
if (!$person = getData($this->ci->PersonModel->getByUid($uid))[0])
|
||||
{
|
||||
@@ -61,12 +69,18 @@ class AnrechnungLib
|
||||
}
|
||||
|
||||
// Get lectors of lehrveranstaltung
|
||||
$antrag_data->lektoren = array();
|
||||
if (!$lv_lektoren = getData($this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lv_id)))
|
||||
$result = $this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lv_id);
|
||||
if (isError($result))
|
||||
{
|
||||
show_error('Failed loading course lectors.');
|
||||
}
|
||||
|
||||
|
||||
$lv_lektoren_arr = hasData($result) ? getData($result) : array();
|
||||
|
||||
// Get latest ZGV
|
||||
$result = $this->ci->PrestudentModel->getLatestZGVBezeichnung($prestudent_id);
|
||||
$latest_zgv_bezeichnung = hasData($result) ? getData($result)[0]->bezeichnung : '';
|
||||
|
||||
// Set the given studiensemester
|
||||
$antrag_data->lv_id = $lv_id;
|
||||
$antrag_data->lv_bezeichnung = $lv->bezeichnung;
|
||||
@@ -76,7 +90,8 @@ class AnrechnungLib
|
||||
$antrag_data->nachname = $person->nachname;
|
||||
$antrag_data->matrikelnr = $student->matrikelnr;
|
||||
$antrag_data->stg_bezeichnung = $studiengang->bezeichnung;
|
||||
$antrag_data->lektoren = $lv_lektoren;
|
||||
$antrag_data->lektoren = $lv_lektoren_arr;
|
||||
$antrag_data->zgv = $latest_zgv_bezeichnung;
|
||||
|
||||
return $antrag_data;
|
||||
}
|
||||
@@ -107,8 +122,12 @@ class AnrechnungLib
|
||||
{
|
||||
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error('No Anrechnung with this anrechnung_id.');
|
||||
}
|
||||
|
||||
return success($anrechnung_data);
|
||||
return $anrechnung_data;
|
||||
|
||||
}
|
||||
|
||||
@@ -153,7 +172,7 @@ class AnrechnungLib
|
||||
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
|
||||
}
|
||||
|
||||
return success($anrechnung_data);
|
||||
return $anrechnung_data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -171,8 +190,8 @@ class AnrechnungLib
|
||||
$this->ci->AnrechnungModel->addSelect('tbl_benutzer.uid, tbl_prestudent.prestudent_id, tbl_person.person_id, tbl_anrechnung.studiensemester_kurzbz, vorname, nachname, geschlecht, tbl_lehrveranstaltung.bezeichnung AS "lv_bezeichnung"');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_student', 'prestudent_id');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_benutzer', 'uid=student_uid');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_person', 'tbl_benutzer.person_id=tbl_person.person_id');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_benutzer', 'uid = student_uid');
|
||||
$this->ci->AnrechnungModel->addJoin('public.tbl_person', 'tbl_benutzer.person_id = tbl_person.person_id');
|
||||
$this->ci->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id');
|
||||
|
||||
$result = $this->ci->AnrechnungModel->load($anrechnung_id);
|
||||
@@ -207,28 +226,53 @@ class AnrechnungLib
|
||||
$empfehlung_data->empfehlung = null;
|
||||
$empfehlung_data->empfehlung_von = '-';
|
||||
$empfehlung_data->empfehlung_am = '-';
|
||||
$empfehlung_data->empfehlung_angefordert_am = '-';
|
||||
$empfehlung_data->notiz = ''; // Begruendung, if not recommended
|
||||
|
||||
$empfehlung_data->empfehlungsanfrageAm = '-';
|
||||
$empfehlung_data->empfehlungsanfrageAn = '-';
|
||||
$empfehlung_data->begruendung = '-'; // Begruendung, if not recommended
|
||||
$empfehlung_data->notiz_id = ''; // Empfehlungsnotiz from STGL
|
||||
$empfehlung_data->notiz = ''; // Empfehlungsnotiz from STGL
|
||||
|
||||
|
||||
if(!$anrechnung = getData($this->ci->AnrechnungModel->load($anrechnung_id))[0])
|
||||
{
|
||||
show_error('Failed loading Anrechnung');
|
||||
}
|
||||
|
||||
// Get Empfehlungsnotiz
|
||||
$result = $this->ci->NotizModel->getNotizByAnrechnung(
|
||||
$anrechnung_id,
|
||||
self::ANRECHNUNG_NOTIZTITEL_EMPFEHLUNGSNOTIZ_BY_STGL
|
||||
);
|
||||
|
||||
if ($notiz = getData($result)[0])
|
||||
{
|
||||
$empfehlung_data->notiz_id = $notiz->notiz_id;
|
||||
$empfehlung_data->notiz = $notiz->text;
|
||||
}
|
||||
|
||||
// Get date, where recommendation was last requested
|
||||
$result = $this->ci->AnrechnungModel->getLastAnrechnungstatus(
|
||||
$anrechnung_id,
|
||||
self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR // when STLG asks for recommendation, status is set to in progress lektor
|
||||
);
|
||||
if ($result = getData($result)[0])
|
||||
|
||||
// If request for recommendation exists
|
||||
if (hasData($result))
|
||||
{
|
||||
$empfehlung_data->empfehlung_angefordert_am = (new DateTime($result->insertamum))->format('d.m.Y');
|
||||
$empfehlung_data->empfehlungsanfrageAm = (new DateTime($result->retval[0]->insertamum))->format('d.m.Y');
|
||||
|
||||
// Get lectors who received request for recommendation
|
||||
$lector_arr = self::getLectors($anrechnung_id);
|
||||
|
||||
if (!isEmptyArray($lector_arr))
|
||||
{
|
||||
$empfehlung_data->empfehlungsanfrageAn = implode(', ', array_column($lector_arr, 'fullname'));
|
||||
}
|
||||
}
|
||||
|
||||
if (is_null($anrechnung->empfehlung_anrechnung))
|
||||
{
|
||||
return success($empfehlung_data);
|
||||
return $empfehlung_data;
|
||||
}
|
||||
|
||||
// If Empfehlung is true or false
|
||||
@@ -260,15 +304,14 @@ class AnrechnungLib
|
||||
if (!$anrechnung->empfehlung_anrechnung)
|
||||
{
|
||||
// Get Ablehnungsbegruendung (only set, if Anrechnung was not recommended yet)
|
||||
$this->ci->load->model('person/Notiz_model', 'NotizModel');
|
||||
$result = $this->ci->NotizModel->getNotizByAnrechnung($anrechnung_id, self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_LEKTOR);
|
||||
if ($notiz = getData($result)[0])
|
||||
{
|
||||
$empfehlung_data->notiz = $notiz->text;
|
||||
$empfehlung_data->begruendung = $notiz->text;
|
||||
}
|
||||
}
|
||||
|
||||
return success($empfehlung_data);
|
||||
return $empfehlung_data;
|
||||
|
||||
}
|
||||
|
||||
@@ -300,9 +343,10 @@ class AnrechnungLib
|
||||
// Get date of approvement or rejection
|
||||
$result = $this->ci->AnrechnungModel->getApprovedOrRejected($anrechnung_id);
|
||||
|
||||
// If no approved or rejected Anrechnung exist, return basic genehmigung data object
|
||||
if (!$result = getData($result)[0])
|
||||
{
|
||||
return success($genehmigung_data);
|
||||
return $genehmigung_data;
|
||||
}
|
||||
|
||||
|
||||
@@ -331,9 +375,30 @@ class AnrechnungLib
|
||||
}
|
||||
}
|
||||
|
||||
return success($genehmigung_data);
|
||||
return $genehmigung_data;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Anrechnungstatusbezeichnung of given status_kurzbz in users language.
|
||||
*
|
||||
* @param $status_kurzbz
|
||||
* @return mixed
|
||||
*/
|
||||
public function getStatusbezeichnung ($status_kurzbz)
|
||||
{
|
||||
$this->ci->AnrechnungstatusModel->addSelect('bezeichnung_mehrsprachig');
|
||||
$result = $this->ci->AnrechnungstatusModel->load($status_kurzbz);
|
||||
|
||||
if (!hasData($result))
|
||||
{
|
||||
show_error('Failed retrieving Anrechnungstatusbezeichung');
|
||||
}
|
||||
|
||||
return getUserLanguage() == 'German'
|
||||
? $result->retval[0]->bezeichnung_mehrsprachig[0]
|
||||
: $result->retval[0]->bezeichnung_mehrsprachig[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get last Anrechnungstatusbezeichnung in users language.
|
||||
@@ -370,7 +435,7 @@ class AnrechnungLib
|
||||
// Exit if already approved or rejected
|
||||
if ($status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED || $status_kurzbz == self::ANRECHNUNGSTATUS_REJECTED)
|
||||
{
|
||||
return success(false); // dont approve
|
||||
return false; // dont approve
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
@@ -395,10 +460,10 @@ class AnrechnungLib
|
||||
if ($this->ci->db->trans_status() === false)
|
||||
{
|
||||
$this->ci->db->trans_rollback();
|
||||
return error($result->msg, EXIT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
return success(true); // approved
|
||||
return true; // approved
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -419,16 +484,14 @@ class AnrechnungLib
|
||||
// Exit if already approved or rejected
|
||||
if ($status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED || $status_kurzbz == self::ANRECHNUNGSTATUS_REJECTED)
|
||||
{
|
||||
return success(false); // dont reject
|
||||
return false; // dont reject
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
$this->ci->db->trans_start(false);
|
||||
|
||||
// Insert new status rejected
|
||||
$result = $this->ci->AnrechnungModel->saveAnrechnungstatus($anrechnung_id, self::ANRECHNUNGSTATUS_REJECTED);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
$this->ci->AnrechnungModel->saveAnrechnungstatus($anrechnung_id, self::ANRECHNUNGSTATUS_REJECTED);
|
||||
|
||||
// Add begruendung as notiz
|
||||
$this->ci->load->model('person/Notiz_model', 'NotizModel');
|
||||
@@ -438,8 +501,17 @@ class AnrechnungLib
|
||||
$begruendung,
|
||||
getAuthUID()
|
||||
);
|
||||
|
||||
// Transaction complete
|
||||
$this->ci->db->trans_complete();
|
||||
|
||||
if ($this->ci->db->trans_status() === false)
|
||||
{
|
||||
$this->ci->db->trans_rollback();
|
||||
return false;
|
||||
}
|
||||
|
||||
return success(true); // rejected
|
||||
return true; // rejected
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -462,7 +534,7 @@ class AnrechnungLib
|
||||
|| $status_kurzbz == self::ANRECHNUNGSTATUS_REJECTED
|
||||
|| $status_kurzbz == self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR)
|
||||
{
|
||||
return success(false); // dont ask for recommendation
|
||||
return false; // dont ask for recommendation
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
@@ -492,7 +564,7 @@ class AnrechnungLib
|
||||
return error($result->msg, EXIT_ERROR);
|
||||
}
|
||||
|
||||
return success(true); // recommended
|
||||
return true; // recommended
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -537,10 +609,10 @@ class AnrechnungLib
|
||||
if ($this->ci->db->trans_status() === false)
|
||||
{
|
||||
$this->ci->db->trans_rollback();
|
||||
return error($result->msg, EXIT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
return success(true); // recommended
|
||||
return true; // recommended
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -562,7 +634,7 @@ class AnrechnungLib
|
||||
// Exit if already approved or rejected
|
||||
if ($status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED || $status_kurzbz == self::ANRECHNUNGSTATUS_REJECTED)
|
||||
{
|
||||
return success(false); // dont approve
|
||||
return false; // dont approve
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
@@ -596,10 +668,125 @@ class AnrechnungLib
|
||||
if ($this->ci->db->trans_status() === false)
|
||||
{
|
||||
$this->ci->db->trans_rollback();
|
||||
return error($result->msg, EXIT_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
return success(true); // recommended
|
||||
return true; // recommended
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Filename that should be used on download
|
||||
* @param $dms_id
|
||||
* @return string|null
|
||||
*/
|
||||
public function setFilenameOnDownload($dms_id)
|
||||
{
|
||||
// Load Anrechnung
|
||||
$result = $this->ci->AnrechnungModel->loadWhere(array('dms_id' => $dms_id));
|
||||
|
||||
// Return null if no data found
|
||||
if (!hasData($result))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$prestudent_id = $result->retval[0]->prestudent_id;
|
||||
$lehrveranstaltung_id = $result->retval[0]->lehrveranstaltung_id;
|
||||
|
||||
// Get LV OrgForm
|
||||
$this->ci->LehrveranstaltungModel->addSelect('stg.orgform_kurzbz');
|
||||
$this->ci->LehrveranstaltungModel->addJoin('public.tbl_studiengang AS stg', 'studiengang_kz');
|
||||
$result = $this->ci->LehrveranstaltungModel->load($lehrveranstaltung_id);
|
||||
$orgform_kurzbz = hasData($result) ? '_'. $result->retval[0]->orgform_kurzbz : '';
|
||||
|
||||
// Get full name of student
|
||||
$this->ci->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->ci->PrestudentModel->addSelect('vorname, nachname');
|
||||
$this->ci->PrestudentModel->addJoin('public.tbl_person', 'person_id');
|
||||
$result = $this->ci->PrestudentModel->load($prestudent_id);
|
||||
$fullname = hasData($result) ? $result->retval[0]->vorname. $result->retval[0]->nachname : '';
|
||||
|
||||
// Return filename
|
||||
return 'Anrechnungsantrag'. $orgform_kurzbz .'_LV-'. $lehrveranstaltung_id. '_'. $fullname;
|
||||
}
|
||||
|
||||
public function LVhasLector($anrechnung_id)
|
||||
{
|
||||
$result = $this->ci->AnrechnungModel->load($anrechnung_id);
|
||||
if (!hasData($result))
|
||||
{
|
||||
showError('Anrechnung existiert nicht');
|
||||
}
|
||||
|
||||
// Get lectors of lehrveranstaltung
|
||||
$result = $this->ci->LehrveranstaltungModel->getLecturersByLv(
|
||||
$result->retval[0]->studiensemester_kurzbz,
|
||||
$result->retval[0]->lehrveranstaltung_id
|
||||
);
|
||||
|
||||
// Continue, if LV has no lector (there is no one to ask for recommendation)
|
||||
return hasData($result) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get LV Leitung. If not present, get all LV lectors.
|
||||
*
|
||||
* @param $anrechnung_id
|
||||
* @return array|bool
|
||||
*/
|
||||
public function getLectors($anrechnung_id)
|
||||
{
|
||||
$this->ci->AnrechnungModel->addSelect('lehrveranstaltung_id, studiensemester_kurzbz');
|
||||
$result = $this->ci->AnrechnungModel->load($anrechnung_id);
|
||||
|
||||
if (!hasData($result))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$lehrveranstaltung_id = getData($result)[0]->lehrveranstaltung_id;
|
||||
$studiensemester_kurzbz = getData($result)[0]->studiensemester_kurzbz;
|
||||
|
||||
// Get lectors
|
||||
$lector_arr = array();
|
||||
|
||||
$this->ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$result = $this->ci->LehrveranstaltungModel->getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id);
|
||||
|
||||
if (!$result = getData($result))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if lv has LV-Leitung
|
||||
$key = array_search(true, array_column($result, 'lvleiter'));
|
||||
|
||||
// If lv has LV-Leitung, keep only the one
|
||||
if ($key !== false)
|
||||
{
|
||||
$lector_arr[]= $result[$key];
|
||||
}
|
||||
// ...otherwise keep all lectors
|
||||
else
|
||||
{
|
||||
$lector_arr = array_merge($lector_arr, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* NOTE: This step is only done to make the array unique by uid, vorname and nachname in the following step
|
||||
* (e.g. if same lector is ones LV-Leitung and another time not, then array_unique would leave both.
|
||||
* But we wish to send only one email by to that one person)
|
||||
* **/
|
||||
foreach ($lector_arr as $lector)
|
||||
{
|
||||
unset($lector->lvleiter);
|
||||
$lector->fullname = $lector->vorname. ' '. $lector->nachname;
|
||||
}
|
||||
|
||||
// Now make the lector array aka mail receivers unique
|
||||
$lector_arr = array_unique($lector_arr, SORT_REGULAR);
|
||||
|
||||
return $lector_arr;
|
||||
}
|
||||
|
||||
// Return an object with Anrechnungdata
|
||||
@@ -631,12 +818,7 @@ class AnrechnungLib
|
||||
$this->ci->DmsVersionModel->addSelect('name');
|
||||
$result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $anrechnung->dms_id));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
}
|
||||
|
||||
$anrechnung_data->dokumentname = $result->retval[0]->name;
|
||||
$anrechnung_data->dokumentname = hasData($result) ? getData($result)[0]->name : '';
|
||||
|
||||
return $anrechnung_data;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class DmsLib
|
||||
class DmsLib extends FHC_Controller
|
||||
{
|
||||
const FILE_CONTENT_PROPERTY = 'file_content';
|
||||
|
||||
const FILE_INPUT_NAME = 'uploadfile'; // name of the HTML input tag containing the uploaded file
|
||||
|
||||
private $UPLOAD_PATH = DMS_PATH; // temporary directory to store the upload file
|
||||
|
||||
/**
|
||||
@@ -21,6 +20,34 @@ class DmsLib
|
||||
$this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel');
|
||||
$this->ci->load->model('content/DmsFS_model', 'DmsFSModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a DMS Document.
|
||||
* If no version is particularly given, the latest version is loaded.
|
||||
*
|
||||
* @param $dms_id
|
||||
* @param integer $version
|
||||
* @return array
|
||||
*/
|
||||
public function load($dms_id, $version = null)
|
||||
{
|
||||
if (is_numeric($dms_id))
|
||||
{
|
||||
$this->ci->DmsModel->addJoin('campus.tbl_dms_version', 'dms_id');
|
||||
$this->ci->DmsModel->addOrder('version', 'DESC');
|
||||
$this->ci->DmsModel->addLimit(1);
|
||||
|
||||
if (!is_numeric($version))
|
||||
{
|
||||
return $this->ci->DmsModel->load($dms_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->ci->DmsModel->loadWhere(array('dms_id' => $dms_id, 'version' => $version));
|
||||
}
|
||||
}
|
||||
return error('The parameter DMS ID must be a number');
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a DMS Document from the Filesystem
|
||||
@@ -95,19 +122,20 @@ class DmsLib
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Uploads a document and saves it to DMS
|
||||
* @param $dms DMS assoc array
|
||||
* @param array $allowed_types Default: all. Param example: array(jpg, pdf)
|
||||
* @param $field_name Name of the HTML uploadfile input name attribute
|
||||
* @param array $allowed_types Default: all. Param example: array(jpg, pdf)
|
||||
* @return array
|
||||
*/
|
||||
public function upload($dms, $allowed_types = array('*'))
|
||||
public function upload($dms, $field_name, $allowed_types = array('*'))
|
||||
{
|
||||
// Init upload configs
|
||||
$this->_loadUploadLibrary($allowed_types);
|
||||
|
||||
if (!$this->ci->upload->do_upload(DmsLib::FILE_INPUT_NAME))
|
||||
if (!$this->ci->upload->do_upload($field_name))
|
||||
{
|
||||
return error($this->ci->upload->display_errors());
|
||||
}
|
||||
@@ -132,46 +160,80 @@ class DmsLib
|
||||
// return result of uploaded data
|
||||
return success($upload_data); // data about the uploaded file
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Download a document
|
||||
* Download a document.
|
||||
*
|
||||
* @param $dms_id
|
||||
* @param string $filename $filename If String is given, it will be used as filename on download
|
||||
* @param string $disposition [inline | attachment]
|
||||
* Inline opens doc in new tab. Attachment displays download dialog box.
|
||||
*/
|
||||
public function download($dms_id)
|
||||
public function download($dms_id, $filename = null, $disposition = 'inline')
|
||||
{
|
||||
if (!is_numeric($dms_id))
|
||||
{
|
||||
show_error('Wrong parameter');
|
||||
}
|
||||
|
||||
$this->ci->DmsVersionModel->addSelect('filename');
|
||||
$result = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $dms_id));
|
||||
|
||||
$result = $this->getFileInfo($dms_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
show_error(getError($result));
|
||||
return error(getError($result));
|
||||
}
|
||||
|
||||
$filename = $result->retval[0]->filename;
|
||||
$file = DMS_PATH. $filename;
|
||||
|
||||
if (file_exists($file))
|
||||
$fileObj = getData($result);
|
||||
|
||||
// Change filename, if filename is provided
|
||||
if (is_string($filename))
|
||||
{
|
||||
$finfo = new finfo(FILEINFO_MIME);
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: '.$finfo->file($file));
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Pragma: public');
|
||||
header('Content-Length: ' . filesize($file));
|
||||
readfile($file);
|
||||
exit;
|
||||
$fileObj->name = $filename;
|
||||
}
|
||||
|
||||
// Add file disposition
|
||||
if ($disposition == 'attachment')
|
||||
{
|
||||
$fileObj->disposition = 'attachment';
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error('File does not exist');
|
||||
$fileObj->disposition = 'inline';
|
||||
}
|
||||
|
||||
// Output file
|
||||
if(!$this->outputFile($fileObj))
|
||||
{
|
||||
return error('Error on file output');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file information.
|
||||
*
|
||||
* @param $dms_id
|
||||
* @param integer $version
|
||||
* @return array with File Object.
|
||||
*/
|
||||
public function getFileInfo($dms_id, $version = null)
|
||||
{
|
||||
if (!is_numeric($dms_id))
|
||||
{
|
||||
return error('Wrong parameter');
|
||||
}
|
||||
|
||||
// Load file
|
||||
$result = $this->load($dms_id, $version);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return error(getError($result));
|
||||
}
|
||||
|
||||
// Store file information in fileObj
|
||||
$fileObj = new StdClass();
|
||||
$fileObj->filename = getData($result)[0]->filename;
|
||||
$fileObj->file = DMS_PATH. getData($result)[0]->filename;
|
||||
$fileObj->name = DMS_PATH. getData($result)[0]->name; // original users filename
|
||||
$fileObj->mimetype = DMS_PATH. getData($result)[0]->mimetype;
|
||||
|
||||
return success($fileObj);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -266,6 +266,7 @@ class FilterWidgetLib
|
||||
$whereParameters = array(
|
||||
'app' => $app,
|
||||
'dataset_name' => $datasetName,
|
||||
'person_id' => null,
|
||||
'default_filter' => true
|
||||
);
|
||||
|
||||
@@ -738,8 +739,10 @@ class FilterWidgetLib
|
||||
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
|
||||
|
||||
// Loads all the filters related to this page (same dataset_name and same app name)
|
||||
$filters = $this->_ci->FiltersModel->getFiltersByAppDatasetName(
|
||||
$session[self::APP], $session[self::DATASET_NAME]
|
||||
$filters = $this->_ci->FiltersModel->getFiltersByAppDatasetNamePersonId(
|
||||
$session[self::APP],
|
||||
$session[self::DATASET_NAME],
|
||||
getAuthPersonId()
|
||||
);
|
||||
|
||||
// If filters were loaded
|
||||
@@ -813,9 +816,6 @@ class FilterWidgetLib
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Return an unique string that identify this filter widget
|
||||
* NOTE: The default value is the URI where the FilterWidget is called
|
||||
@@ -857,6 +857,9 @@ class FilterWidgetLib
|
||||
$this->_filterUniqueId = $filterUniqueId;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* Generates a condition for a SQL where clause using the given applied filter definition.
|
||||
* By default an empty string is returned.
|
||||
@@ -972,3 +975,4 @@ class FilterWidgetLib
|
||||
return $pos;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Library for writing and reading issues (problems in fhcomplete system which need resolving)
|
||||
*/
|
||||
class IssuesLib
|
||||
{
|
||||
private $_ci; // Code igniter instance
|
||||
|
||||
const APP_INDEX = 'app';
|
||||
const INSERTVON_INDEX = 'insertvon';
|
||||
const FALLBACK_FEHLERCODE_INDEX = 'fallbackFehlercode';
|
||||
|
||||
const STATUS_NEU = 'new';
|
||||
const STATUS_IN_BEARBEITUNG = 'inProgress';
|
||||
const STATUS_BEHOBEN = 'resolved';
|
||||
|
||||
const ERRORTYPE_CODE = 'error';
|
||||
const WARNINGTYPE_CODE = 'warning';
|
||||
|
||||
public function __construct($params = null)
|
||||
{
|
||||
$this->_ci =& get_instance();
|
||||
|
||||
// Properties default values
|
||||
$this->_app = 'core';
|
||||
$this->_insertvon = 'system';
|
||||
$this->_fallbackFehlercode = 'UNKNOWN_ERROR';
|
||||
|
||||
// If parameters are given then overwrite the default values
|
||||
if (!isEmptyArray($params)) $this->setConfigs($params);
|
||||
|
||||
// load models
|
||||
$this->_ci->load->model('system/Issue_model', 'IssueModel');
|
||||
$this->_ci->load->model('system/Fehler_model', 'FehlerModel');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* Store configuration parameters for this lib
|
||||
*/
|
||||
public function setConfigs($params)
|
||||
{
|
||||
// If parameters are given then overwrite the default values
|
||||
if (!isEmptyArray($params))
|
||||
{
|
||||
if (isset($params[self::APP_INDEX])) $this->_app = $params[self::APP_INDEX];
|
||||
if (isset($params[self::INSERTVON_INDEX])) $this->_insertvon = $params[self::INSERTVON_INDEX];
|
||||
if (isset($params[self::FALLBACK_FEHLERCODE_INDEX])) $this->_fallbackFehlercode = $params[self::FALLBACK_FEHLERCODE_INDEX];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an Fhc issue, i.e. an internal, self-defined issue.
|
||||
* @param string $fehler_kurzbz short unique text name of the issue
|
||||
* @param int $person_id
|
||||
* @param string $oe_kurzbz
|
||||
* @param array $fehlertext_params params for sprint replace of error text in system.tbl_fehler
|
||||
* @return object success or error
|
||||
*/
|
||||
public function addFhcIssue($fehler_kurzbz, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null)
|
||||
{
|
||||
$fehlerRes = $this->_ci->FehlerModel->loadWhere(array('fehler_kurzbz' => $fehler_kurzbz));
|
||||
|
||||
if (hasData($fehlerRes))
|
||||
{
|
||||
$fehlercode = getData($fehlerRes)[0]->fehlercode;
|
||||
return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params);
|
||||
}
|
||||
else
|
||||
return error("Fehler $fehler_kurzbz nicht gefunden");
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an external issue, already defined externally by another system.
|
||||
* @param string $fehlercode_extern the error code in the external system
|
||||
* @param string $inhalt_extern error text in external system
|
||||
* @param int $person_id
|
||||
* @param int $oe_kurzbz
|
||||
* @param array $fehlertext_params params for replacement of parts of error text
|
||||
* @param bool $force_predefined if true, only predefined external issues are added
|
||||
* @return object success or error
|
||||
*/
|
||||
public function addExternalIssue($fehlercode_extern, $inhalt_extern, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $force_predefined = false)
|
||||
{
|
||||
if (isEmptyString($fehlercode_extern))
|
||||
return error("fehlercode_extern fehlt");
|
||||
|
||||
// get external fehlercode (unique for each app)
|
||||
$this->_ci->FehlerModel->addSelect('fehlercode');
|
||||
$fehlerRes = $this->_ci->FehlerModel->loadWhere(
|
||||
array(
|
||||
'fehlercode_extern' => $fehlercode_extern,
|
||||
'app' => $this->_app
|
||||
)
|
||||
);
|
||||
|
||||
if (isError($fehlerRes))
|
||||
return $fehlerRes;
|
||||
|
||||
$fehlerData = getData($fehlerRes)[0];
|
||||
|
||||
// check if there is a predefined custom error for the external issue
|
||||
if (hasData($fehlerRes))
|
||||
{
|
||||
// if found, use the code
|
||||
$fehlercode = $fehlerData->fehlercode;
|
||||
}
|
||||
elseif ($force_predefined === true)
|
||||
{
|
||||
// only added if predefined
|
||||
return success("No definition found - not added");
|
||||
}
|
||||
else
|
||||
{
|
||||
// if predefined error is not found, insert with fallback code
|
||||
$fehlercode = $this->_fallbackFehlercode;
|
||||
}
|
||||
|
||||
// add external issue
|
||||
return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params, $fehlercode_extern, $inhalt_extern);
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes status of an issue.
|
||||
* @param int $issue_id
|
||||
* @param string $status_kurzbz the new status
|
||||
* @param string $verarbeitetvon uid of person changing the status (needed for in Bearbeitung and behoben)
|
||||
* @return success or error
|
||||
*/
|
||||
public function changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon = null)
|
||||
{
|
||||
if (!isset($issue_id) || !is_numeric($issue_id))
|
||||
return error("Issue Id muss korrekt gesetzt sein.");
|
||||
|
||||
// check if given status is same as existing
|
||||
$this->_ci->IssueModel->addSelect('status_kurzbz');
|
||||
$currStatus = $this->_ci->IssueModel->load($issue_id);
|
||||
|
||||
if (hasData($currStatus))
|
||||
{
|
||||
if (getData($currStatus)[0]->status_kurzbz == $status_kurzbz)
|
||||
return success("Gleicher Status bereits gesetzt");
|
||||
}
|
||||
else
|
||||
return error("Fehler beim Holen des Status");
|
||||
|
||||
$data = array(
|
||||
'status_kurzbz' => $status_kurzbz,
|
||||
'updatevon' => $verarbeitetvon,
|
||||
'updateamum' => date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
if ($status_kurzbz == self::STATUS_NEU)
|
||||
{
|
||||
|
||||
$data['verarbeitetvon'] = null;
|
||||
}
|
||||
|
||||
if ($status_kurzbz == self::STATUS_NEU || $status_kurzbz == self::STATUS_IN_BEARBEITUNG)
|
||||
{
|
||||
$data['verarbeitetamum'] = null;
|
||||
}
|
||||
|
||||
if ($status_kurzbz == self::STATUS_IN_BEARBEITUNG || $status_kurzbz == self::STATUS_BEHOBEN)
|
||||
{
|
||||
if (isset($verarbeitetvon))
|
||||
$data['verarbeitetvon'] = $verarbeitetvon;
|
||||
else
|
||||
return error("Verarbeitetvon nicht gesetzt");
|
||||
}
|
||||
|
||||
if ($status_kurzbz == self::STATUS_BEHOBEN)
|
||||
$data['verarbeitetamum'] = date('Y-m-d H:i:s');
|
||||
|
||||
return $this->_ci->IssueModel->update(
|
||||
array(
|
||||
'issue_id' => $issue_id
|
||||
),
|
||||
$data
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an issue.
|
||||
* @param $fehlercode
|
||||
* @param int $person_id
|
||||
* @param string $oe_kurzbz
|
||||
* @param array $fehlertext_params
|
||||
* @param string $fehlercode_extern
|
||||
* @param string $inhalt_extern
|
||||
* @return object success or error
|
||||
*/
|
||||
private function _addIssue($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $fehlercode_extern = null, $inhalt_extern = null)
|
||||
{
|
||||
if (isEmptyString($person_id) && isEmptyString($oe_kurzbz))
|
||||
return error("Person_id oder oe_kurzbz muss gesetzt sein.");
|
||||
|
||||
// get fehlertextVorlage and replace it with params
|
||||
$fehlerRes = $this->_ci->FehlerModel->load($fehlercode);
|
||||
|
||||
if (hasData($fehlerRes))
|
||||
{
|
||||
$fehlertextVorlage = getData($fehlerRes)[0]->fehlertext;
|
||||
$fehlertext = isEmptyArray($fehlertext_params) ? $fehlertextVorlage : vsprintf($fehlertextVorlage, $fehlertext_params);
|
||||
|
||||
$openIssuesCountRes = $this->_ci->IssueModel->getOpenIssueCount($fehlercode, $person_id, $oe_kurzbz, $fehlercode_extern);
|
||||
|
||||
if (hasData($openIssuesCountRes))
|
||||
{
|
||||
// don't insert if issue is already open
|
||||
// already open - status new with same fehlercode or same fehlercode-extern (if set)
|
||||
$openIssueCount = getData($openIssuesCountRes)[0]->anzahl_open_issues;
|
||||
|
||||
if ($openIssueCount == 0)
|
||||
{
|
||||
return $this->_ci->IssueModel->insert(
|
||||
array(
|
||||
'fehlercode' => $fehlercode,
|
||||
'fehlercode_extern' => $fehlercode_extern,
|
||||
'inhalt' => $fehlertext,
|
||||
'inhalt_extern' => $inhalt_extern,
|
||||
'person_id' => $person_id,
|
||||
'oe_kurzbz' => $oe_kurzbz,
|
||||
'datum' => date('Y-m-d H:i:s'),
|
||||
'status_kurzbz' => self::STATUS_NEU,
|
||||
'insertvon' => $this->_insertvon
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
return success($openIssueCount);
|
||||
}
|
||||
else
|
||||
return error("Anzahl offener Issues konnte nicht ermittelt werden.");
|
||||
}
|
||||
else
|
||||
return error("Fehler $fehlercode nicht gefunden");
|
||||
}
|
||||
}
|
||||
@@ -72,6 +72,18 @@ class JobsQueueLib
|
||||
return $this->_ci->JobsQueueModel->loadWhere(array('status' => self::STATUS_NEW, 'type' => $type));
|
||||
}
|
||||
|
||||
/**
|
||||
* To get all the jobs specified by the given parameters
|
||||
*/
|
||||
public function getJobsByTypeStatus($type, $status)
|
||||
{
|
||||
$this->_ci->JobsQueueModel->resetQuery();
|
||||
|
||||
$this->_ci->JobsQueueModel->addOrder('creationtime', 'DESC');
|
||||
|
||||
return $this->_ci->JobsQueueModel->loadWhere(array('status' => $status, 'type' => $type));
|
||||
}
|
||||
|
||||
/**
|
||||
* To get all the jobs specified by the given parameters
|
||||
*/
|
||||
|
||||
+295
-126
@@ -30,13 +30,14 @@ class UDFLib
|
||||
// ...to specify permissions that are needed to use this TableWidget
|
||||
const REQUIRED_PERMISSIONS_PARAMETER = 'requiredPermissions';
|
||||
|
||||
const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
|
||||
const PERMISSION_TYPE_READ = 'r';
|
||||
const PERMISSION_TYPE_WRITE = 'w';
|
||||
|
||||
// ...to specify the primary key name and value
|
||||
const PRIMARY_KEY_NAME = 'primaryKeyName';
|
||||
const PRIMARY_KEY_VALUE = 'primaryKeyValue';
|
||||
|
||||
const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib
|
||||
const PERMISSION_TYPE = 'rw';
|
||||
|
||||
// HTML components
|
||||
const LABEL = 'title';
|
||||
const TITLE = 'description';
|
||||
@@ -76,10 +77,10 @@ class UDFLib
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* UDFWidget
|
||||
*/
|
||||
public function UDFWidget($args, $htmlArgs = array())
|
||||
{
|
||||
* UDFWidget
|
||||
*/
|
||||
public function UDFWidget($args, $htmlArgs = array())
|
||||
{
|
||||
if ((isset($args[self::SCHEMA_ARG_NAME]) && !isEmptyString($args[self::SCHEMA_ARG_NAME]))
|
||||
&& (isset($args[self::TABLE_ARG_NAME]) && !isEmptyString($args[self::TABLE_ARG_NAME])))
|
||||
{
|
||||
@@ -112,16 +113,17 @@ class UDFLib
|
||||
show_error(self::TABLE_ARG_NAME.' parameter is missing!');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* It renders the HTML of the UDF
|
||||
*
|
||||
* NOTE: When this method is called $widgetData contains different data from
|
||||
* parameter $args in the constructor
|
||||
*/
|
||||
public function displayUDFWidget(&$widgetData)
|
||||
public function displayUDFWidget(&$widgetData)
|
||||
{
|
||||
$field = null;
|
||||
$schema = $widgetData[self::SCHEMA_ARG_NAME]; // schema attribute
|
||||
$table = $widgetData[self::TABLE_ARG_NAME]; // table attribute
|
||||
|
||||
@@ -133,7 +135,7 @@ class UDFLib
|
||||
$udfResults = $this->_loadUDF($schema, $table); // loads UDF definition
|
||||
if (hasData($udfResults))
|
||||
{
|
||||
$udf = $udfResults->retval[0]; // only one record is loaded
|
||||
$udf = getData($udfResults)[0]; // only one record is loaded
|
||||
if (isset($udf->jsons))
|
||||
{
|
||||
$jsonSchemas = json_decode($udf->jsons); // decode the json schema
|
||||
@@ -155,7 +157,7 @@ class UDFLib
|
||||
$found = false; // used to check if the field is found or not in the json schema
|
||||
|
||||
$this->_sortJsonSchemas($jsonSchemasArray); // Sort the list of UDF by sort property
|
||||
|
||||
|
||||
// Loops through json schemas
|
||||
foreach ($jsonSchemasArray as $jsonSchema)
|
||||
{
|
||||
@@ -169,21 +171,37 @@ class UDFLib
|
||||
{
|
||||
show_error(sprintf('%s.%s: Attribute "name" not present in the json schema', $schema, $table));
|
||||
}
|
||||
// If the requiredPermissions property is not present then show an error
|
||||
if (!isset($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
|
||||
{
|
||||
show_error(sprintf('%s.%s: Attribute "requiredPermissions" not present in the json schema', $schema, $table));
|
||||
}
|
||||
|
||||
// Set the required permissions for this UDF
|
||||
$this->_setRequiredPermissions($jsonSchema->{self::NAME}, $jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER});
|
||||
|
||||
// If a UDF is specified and is present in the json schemas list or no UDF is specified
|
||||
if ((isset($field) && $field == $jsonSchema->{self::NAME}) || !isset($field))
|
||||
{
|
||||
// Set attributes using phrases
|
||||
$this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
// If the user has the permissions to read this field
|
||||
if ($this->_readAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
|
||||
{
|
||||
// Set attributes using phrases
|
||||
$this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
|
||||
// Set validation attributes
|
||||
$this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
// Set validation attributes
|
||||
$this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
|
||||
// Set name and id attributes
|
||||
$this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
// Set name and id attributes
|
||||
$this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
|
||||
// Render the HTML for this UDF
|
||||
$this->_render($jsonSchema, $widgetData);
|
||||
// Set if the field is in read only mode
|
||||
$this->_setReadOnly($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]);
|
||||
|
||||
// Render the HTML for this UDF
|
||||
$this->_render($jsonSchema, $widgetData);
|
||||
}
|
||||
// otherwise the UDF is not displayed
|
||||
|
||||
// If a UDf is specified and it was found then stop looking through this list
|
||||
if (isset($field) && $field == $jsonSchema->{self::NAME})
|
||||
@@ -213,12 +231,97 @@ class UDFLib
|
||||
show_error(sprintf('%s.%s: Does not contain "jsons" field', $schema, $table));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage UDFs
|
||||
* UDFs permissions check and convertion to read them from database
|
||||
*/
|
||||
public function manageUDFs(&$data, $schemaAndTable, $udfValues = null)
|
||||
public function prepareUDFsRead(&$data, $schemaAndTable, $udfValues = null)
|
||||
{
|
||||
$this->_ci->load->model('system/UDF_model', 'UDFModel');
|
||||
|
||||
// Retrieves UDFs definitions for this table
|
||||
$resultUDFsDefinitions = $this->_ci->UDFModel->getUDFsDefinitions($schemaAndTable);
|
||||
|
||||
// If an error occurred while reading from database
|
||||
if (isError($resultUDFsDefinitions))
|
||||
{
|
||||
$data = array(); // then set data as an empty array
|
||||
return; // and exit from this method
|
||||
}
|
||||
|
||||
// If there are no UDFs defined for this table the return
|
||||
if (!hasData($resultUDFsDefinitions)) return;
|
||||
|
||||
// If not an error and has data, decodes json that define the UDFs for this table
|
||||
$decodedUDFDefinitions = json_decode(
|
||||
getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION}
|
||||
);
|
||||
|
||||
// Looping on results, resultElement is an object that represent a database record
|
||||
foreach ($data as $resultElement)
|
||||
{
|
||||
// Decode the JSON column udf_values
|
||||
$udfColumn = json_decode($resultElement->{self::COLUMN_NAME});
|
||||
|
||||
// If this is not a valid JSON then skip to the next database record
|
||||
if ($udfColumn == null) continue;
|
||||
|
||||
// For each UDF column of this database record
|
||||
foreach (get_object_vars($udfColumn) as $columnName => $columnValue)
|
||||
{
|
||||
$udfColumnToBeRemoved = $columnName; // let's try to remove it
|
||||
|
||||
// Loops through the UDFs definitions
|
||||
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
|
||||
{
|
||||
// If the column exists in the UDF definition
|
||||
if ($columnName == $decodedUDFDefinition->{self::NAME})
|
||||
{
|
||||
$udfColumnToBeRemoved = null; // then keep it
|
||||
}
|
||||
}
|
||||
|
||||
// If in this record have been found a _not_ defined UDF then remove it
|
||||
if (!isEmptyString($udfColumnToBeRemoved)) unset($udfColumn->{$udfColumnToBeRemoved});
|
||||
}
|
||||
|
||||
// Loops through the UDFs definitions
|
||||
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
|
||||
{
|
||||
// Checks if the requiredPermissions is available and it is a valid array or a valid string
|
||||
if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|
||||
&& (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|
||||
|| !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})))
|
||||
{
|
||||
// Then check if the user has the permissions to read such UDF
|
||||
if (!$this->_readAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))
|
||||
{
|
||||
// If not then remove the UDF from the result set
|
||||
unset($udfColumn->{$decodedUDFDefinition->{self::NAME}});
|
||||
}
|
||||
}
|
||||
else // If not then remove the UDF from the result set
|
||||
{
|
||||
unset($udfColumn->{$decodedUDFDefinition->{self::NAME}});
|
||||
}
|
||||
}
|
||||
|
||||
// Add the defined and permitted UDF columns to the record set
|
||||
foreach (get_object_vars($udfColumn) as $columnName => $columnValue)
|
||||
{
|
||||
$resultElement->{$columnName} = $columnValue;
|
||||
}
|
||||
}
|
||||
|
||||
// And finally remove the UDFs column
|
||||
unset($resultElement->{self::COLUMN_NAME});
|
||||
}
|
||||
|
||||
/**
|
||||
* UDFs validation and permissions check to write them into database
|
||||
*/
|
||||
public function prepareUDFsWrite(&$data, $schemaAndTable, $udfValues = null)
|
||||
{
|
||||
$validate = success(true); // returned value
|
||||
// Contains a list of validation errors for the UDFs that have not passed the validation
|
||||
@@ -241,18 +344,34 @@ class UDFLib
|
||||
|
||||
// Decodes json that define the UDFs for this table
|
||||
$decodedUDFDefinitions = json_decode(
|
||||
$resultUDFsDefinitions->retval[0]->{self::COLUMN_JSON_DESCRIPTION}
|
||||
getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION}
|
||||
);
|
||||
|
||||
// Loops through the UDFs definitions
|
||||
for ($i = 0; $i < count($decodedUDFDefinitions); $i++)
|
||||
foreach ($decodedUDFDefinitions as $decodedUDFDefinition)
|
||||
{
|
||||
$decodedUDFDefinition = $decodedUDFDefinitions[$i]; // Definition of a single UDF
|
||||
// Checks if the requiredPermissions is available and it is a valid array or a valid string
|
||||
if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|
||||
&& (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})
|
||||
|| !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})))
|
||||
{
|
||||
// Then check if the user has the permissions to write such UDF
|
||||
if (!$this->_writeAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))
|
||||
{
|
||||
// If the logged user has no permissions then remove the UDF
|
||||
unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If no permissions have been defined for this UDF then remove it
|
||||
unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]);
|
||||
}
|
||||
|
||||
// Loops through the UDFs values that should be stored
|
||||
foreach ($udfsParameters as $key => $val)
|
||||
{
|
||||
$tmpValidate = success(true); // temporary variable used to store the returned value from _validateUDFs
|
||||
$tmpValidateArray = array(); // temporary variable used to store the returned value from _validateUDFs
|
||||
|
||||
// If this is the definition of this UDF
|
||||
if ($decodedUDFDefinition->{self::NAME} == $key)
|
||||
@@ -314,7 +433,7 @@ class UDFLib
|
||||
|
||||
if ($toBeValidated === true) // Checks if validation should be performed
|
||||
{
|
||||
$tmpValidate = $this->_validateUDFs(
|
||||
$tmpValidateArray = $this->_validateUDFs(
|
||||
$decodedUDFDefinition->{self::VALIDATION},
|
||||
$decodedUDFDefinition->{self::NAME},
|
||||
$val
|
||||
@@ -324,13 +443,13 @@ class UDFLib
|
||||
}
|
||||
|
||||
// If validation is ok copy the value that is to be stored into $toBeStoredUDFsArray
|
||||
if (isSuccess($tmpValidate))
|
||||
if (isEmptyArray($tmpValidateArray))
|
||||
{
|
||||
$toBeStoredUDFsArray[$key] = $val;
|
||||
}
|
||||
else // otherwise store the validation error in $notValidUDFsArray
|
||||
else // otherwise store the validation errors in $notValidUDFsArray
|
||||
{
|
||||
$notValidUDFsArray[] = $tmpValidate;
|
||||
$notValidUDFsArray = array_merge($notValidUDFsArray, $tmpValidateArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -344,11 +463,11 @@ class UDFLib
|
||||
}
|
||||
|
||||
// If the validation of all the supplied UDFs is ok
|
||||
if (count($notValidUDFsArray) == 0)
|
||||
if (isEmptyArray($notValidUDFsArray))
|
||||
{
|
||||
// An update is performed, then in this case it preserves the values
|
||||
// of the UDF that are not updated
|
||||
if (is_array($udfValues) && count($udfValues) > 0)
|
||||
if (!isEmptyArray($udfValues))
|
||||
{
|
||||
foreach ($udfValues as $fieldName => $fieldValue)
|
||||
{
|
||||
@@ -379,7 +498,7 @@ class UDFLib
|
||||
/**
|
||||
* isUDFColumn
|
||||
*/
|
||||
public function isUDFColumn($columnName, $columnType)
|
||||
public function isUDFColumn($columnName, $columnType = self::COLUMN_TYPE)
|
||||
{
|
||||
$isUDFColumn = false;
|
||||
|
||||
@@ -466,7 +585,7 @@ class UDFLib
|
||||
/**
|
||||
* Save UDFs
|
||||
*/
|
||||
public function saveUDFs($udfUniqueId, $udfs)
|
||||
public function saveUDFs($udfs)
|
||||
{
|
||||
// Read the all session for this udf widget
|
||||
$session = $this->getSession();
|
||||
@@ -490,30 +609,80 @@ class UDFLib
|
||||
// Returns the result of the database update operation to save UDFs
|
||||
return $dbModel->update(
|
||||
array($session[self::PRIMARY_KEY_NAME] => $session[self::PRIMARY_KEY_VALUE]),
|
||||
(array)$udfs
|
||||
get_object_vars($udfs)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if at least one of the permissions given as parameter (requiredPermissions) belongs
|
||||
* to the authenticated user, if confirmed then is allowed to use this UDFWidget.
|
||||
* If the parameter requiredPermissions is NOT given or is not present in the session,
|
||||
* then NO one is allow to use this UDFWidget
|
||||
* Wrapper method to permissionlib->hasAtLeastOne
|
||||
*/
|
||||
public function isAllowed($requiredPermissions = null)
|
||||
{
|
||||
$this->_ci->load->library('PermissionLib'); // Load permission library
|
||||
|
||||
// Gets the required permissions from the session if they are not provided as parameter
|
||||
$rq = $requiredPermissions;
|
||||
if ($rq == null) $rq = $this->getSessionElement(self::REQUIRED_PERMISSIONS_PARAMETER);
|
||||
|
||||
return $this->_ci->permissionlib->hasAtLeastOne($rq, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Checks if at least one of the permissions given as parameter belongs to the authenticated user in read mode
|
||||
* Wrapper method to permissionlib->hasAtLeastOne
|
||||
*/
|
||||
private function _readAllowed($requiredPermissions)
|
||||
{
|
||||
$readAllowed = false;
|
||||
|
||||
// If the user is logged then it is possible to check the permissions
|
||||
if (isLogged())
|
||||
{
|
||||
$this->_ci->load->library('PermissionLib'); // Load permission library
|
||||
|
||||
$readAllowed = $this->_ci->permissionlib->hasAtLeastOne(
|
||||
$requiredPermissions,
|
||||
self::PERMISSION_TABLE_METHOD,
|
||||
self::PERMISSION_TYPE_READ
|
||||
);
|
||||
} // otherwise it is not possible to check the permissions
|
||||
|
||||
return $readAllowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if at least one of the permissions given as parameter belongs to the authenticated user in write mode
|
||||
* Wrapper method to permissionlib->hasAtLeastOne
|
||||
*/
|
||||
private function _writeAllowed($requiredPermissions)
|
||||
{
|
||||
$writeAllowed = false;
|
||||
|
||||
// If the user is logged then it is possible to check the permissions
|
||||
if (isLogged())
|
||||
{
|
||||
$this->_ci->load->library('PermissionLib'); // Load permission library
|
||||
|
||||
$writeAllowed = $this->_ci->permissionlib->hasAtLeastOne(
|
||||
$requiredPermissions,
|
||||
self::PERMISSION_TABLE_METHOD,
|
||||
self::PERMISSION_TYPE_WRITE
|
||||
);
|
||||
} // otherwise it is not possible to check the permissions
|
||||
|
||||
return $writeAllowed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an array of required permissions for a UDF into the session
|
||||
*/
|
||||
private function _setRequiredPermissions($udfName, $permissions)
|
||||
{
|
||||
// Get the session for this UDFWidget
|
||||
$session = $this->getSession();
|
||||
|
||||
// If does _not_ exist yet in the session
|
||||
if (!isset($session[self::REQUIRED_PERMISSIONS_PARAMETER]))
|
||||
{
|
||||
$session[self::REQUIRED_PERMISSIONS_PARAMETER] = array();
|
||||
}
|
||||
|
||||
// Set the required permission in the session for this UDFWidget
|
||||
$session[self::REQUIRED_PERMISSIONS_PARAMETER][$udfName] = $permissions;
|
||||
|
||||
// Write into the session
|
||||
$this->setSession($session);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the block for UDFs
|
||||
@@ -544,12 +713,12 @@ class UDFLib
|
||||
{
|
||||
$udfsParameters = array();
|
||||
|
||||
foreach ($data as $key => $val)
|
||||
foreach ($data as $columnName => $columnValue)
|
||||
{
|
||||
if (substr($key, 0, 4) == self::COLUMN_PREFIX)
|
||||
if ($this->isUDFColumn($columnName))
|
||||
{
|
||||
$udfsParameters[$key] = $val; // stores UDF value into property UDFs
|
||||
unset($data[$key]); // remove from data
|
||||
$udfsParameters[$columnName] = $columnValue; // stores UDF value into property UDFs
|
||||
unset($data[$columnName]); // remove from data
|
||||
}
|
||||
}
|
||||
|
||||
@@ -645,29 +814,39 @@ class UDFLib
|
||||
}
|
||||
}
|
||||
|
||||
// If no UDF validation errors were raised, it's a success!!
|
||||
if (count($returnArrayValidation) == 0)
|
||||
{
|
||||
$returnArrayValidation = success(true);
|
||||
}
|
||||
|
||||
return $returnArrayValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name and id attribute of the HTML element
|
||||
*/
|
||||
private function _setNameAndId($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
/**
|
||||
* Disable the HTML element if in read only mode
|
||||
*/
|
||||
private function _setReadOnly($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
// If write permissions _not_ exist then set the field as disabled
|
||||
if (!$this->_writeAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}))
|
||||
{
|
||||
$htmlParameters[HTMLWidget::DISABLED] = HTMLWidget::DISABLED; // any values is fine
|
||||
}
|
||||
else // otherwise restore to default
|
||||
{
|
||||
if (isset($htmlParameters[HTMLWidget::DISABLED])) unset($htmlParameters[HTMLWidget::DISABLED]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name and id attribute of the HTML element
|
||||
*/
|
||||
private function _setNameAndId($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
$htmlParameters[HTMLWidget::HTML_ID] = $jsonSchema->{self::NAME};
|
||||
$htmlParameters[HTMLWidget::HTML_NAME] = $jsonSchema->{self::NAME};
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort the list of UDF by sort property
|
||||
*/
|
||||
private function _sortJsonSchemas(&$jsonSchemasArray)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort the list of UDF by sort property
|
||||
*/
|
||||
private function _sortJsonSchemas(&$jsonSchemasArray)
|
||||
{
|
||||
usort($jsonSchemasArray, function ($a, $b) {
|
||||
if (!isset($a->{self::SORT}))
|
||||
{
|
||||
@@ -684,13 +863,13 @@ class UDFLib
|
||||
|
||||
return ($a->{self::SORT} < $b->{self::SORT}) ? -1 : 1;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the UDF description by the given schema and table
|
||||
*/
|
||||
private function _loadUDF($schema, $table)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the UDF description by the given schema and table
|
||||
*/
|
||||
private function _loadUDF($schema, $table)
|
||||
{
|
||||
// Loads UDF model
|
||||
$this->_ci->load->model('system/UDF_model', 'UDFModel');
|
||||
|
||||
@@ -703,18 +882,7 @@ class UDFLib
|
||||
|
||||
if (isError($udfResults))
|
||||
{
|
||||
if (is_object($udfResults) && isset($udfResults->retval))
|
||||
{
|
||||
show_error(getError($udfResults));
|
||||
}
|
||||
elseif (is_string($udfResults))
|
||||
{
|
||||
show_error($udfResults);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error('UDFWidget: generic error occurred');
|
||||
}
|
||||
show_error(getError($udfResults));
|
||||
}
|
||||
elseif (!hasData($udfResults))
|
||||
{
|
||||
@@ -722,13 +890,13 @@ class UDFLib
|
||||
}
|
||||
|
||||
return $udfResults;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the HTML for the UDF
|
||||
*/
|
||||
private function _render($jsonSchema, &$widgetData)
|
||||
{
|
||||
/**
|
||||
* Render the HTML for the UDF
|
||||
*/
|
||||
private function _render($jsonSchema, &$widgetData)
|
||||
{
|
||||
// Checkbox
|
||||
if ($jsonSchema->{self::TYPE} == 'checkbox')
|
||||
{
|
||||
@@ -759,11 +927,11 @@ class UDFLib
|
||||
{
|
||||
$this->_renderDropdown($jsonSchema, $widgetData, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a dropdown element
|
||||
*/
|
||||
/**
|
||||
* Renders a dropdown element
|
||||
*/
|
||||
private function _renderDropdown($jsonSchema, &$widgetData, $multiple = false)
|
||||
{
|
||||
// Selected element/s
|
||||
@@ -792,7 +960,7 @@ class UDFLib
|
||||
$queryResult = $this->_ci->UDFModel->execReadOnlyQuery($jsonSchema->{self::LIST_VALUES}->sql);
|
||||
if (hasData($queryResult))
|
||||
{
|
||||
$parameters = $queryResult->retval;
|
||||
$parameters = getData($queryResult);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -805,8 +973,8 @@ class UDFLib
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a textarea element
|
||||
*/
|
||||
* Renders a textarea element
|
||||
*/
|
||||
private function _renderTextarea($jsonSchema, &$widgetData)
|
||||
{
|
||||
$text = null; // text value
|
||||
@@ -823,8 +991,8 @@ class UDFLib
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders an input text element
|
||||
*/
|
||||
* Renders an input text element
|
||||
*/
|
||||
private function _renderTextfield($jsonSchema, &$widgetData)
|
||||
{
|
||||
$text = null; // text value
|
||||
@@ -841,8 +1009,8 @@ class UDFLib
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a checkbox element
|
||||
*/
|
||||
* Renders a checkbox element
|
||||
*/
|
||||
private function _renderCheckbox($jsonSchema, &$widgetData)
|
||||
{
|
||||
// Set checkbox value if present in the DB
|
||||
@@ -861,11 +1029,11 @@ class UDFLib
|
||||
$checkboxWidgetUDF->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the attributes of the HTML element using the phrases system
|
||||
*/
|
||||
private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
/**
|
||||
* Sets the attributes of the HTML element using the phrases system
|
||||
*/
|
||||
private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
// By default set to null all the attributes
|
||||
$htmlParameters[HTMLWidget::LABEL] = null;
|
||||
$htmlParameters[HTMLWidget::TITLE] = null;
|
||||
@@ -893,7 +1061,7 @@ class UDFLib
|
||||
);
|
||||
if (hasData($tmpResult))
|
||||
{
|
||||
$htmlParameters[HTMLWidget::LABEL] = $tmpResult->retval[0]->text;
|
||||
$htmlParameters[HTMLWidget::LABEL] = getData($tmpResult)[0]->text;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -911,7 +1079,7 @@ class UDFLib
|
||||
);
|
||||
if (hasData($tmpResult))
|
||||
{
|
||||
$htmlParameters[HTMLWidget::TITLE] = $tmpResult->retval[0]->text;
|
||||
$htmlParameters[HTMLWidget::TITLE] = getData($tmpResult)[0]->text;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -929,17 +1097,17 @@ class UDFLib
|
||||
);
|
||||
if (hasData($tmpResult))
|
||||
{
|
||||
$htmlParameters[HTMLWidget::PLACEHOLDER] = $tmpResult->retval[0]->text;
|
||||
$htmlParameters[HTMLWidget::PLACEHOLDER] = getData($tmpResult)[0]->text;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the validation attributes of the HTML element using the configuration inside the json schema
|
||||
*/
|
||||
private function _setValidationAttributes($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
/**
|
||||
* Sets the validation attributes of the HTML element using the configuration inside the json schema
|
||||
*/
|
||||
private function _setValidationAttributes($jsonSchema, &$htmlParameters)
|
||||
{
|
||||
// Validation attributes set by default to null
|
||||
$htmlParameters[HTMLWidget::REGEX] = null;
|
||||
$htmlParameters[HTMLWidget::REQUIRED] = null;
|
||||
@@ -998,3 +1166,4 @@ class UDFLib
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Aufenthaltfoerderung_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_aufenthaltfoerderung';
|
||||
$this->pk = 'aufenthaltfoerderung_code';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
class Oehbeitrag_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_oehbeitrag';
|
||||
$this->pk = 'oehbeitrag_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets oehbeitrag data valid for a certain Studiensemester.
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @return object
|
||||
*/
|
||||
public function getByStudiensemester($studiensemester_kurzbz)
|
||||
{
|
||||
$qry = "WITH semstart AS (
|
||||
SELECT start FROM public.tbl_studiensemester
|
||||
WHERE studiensemester_kurzbz = ?
|
||||
)
|
||||
SELECT * FROM bis.tbl_oehbeitrag oehb
|
||||
JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz
|
||||
LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz
|
||||
JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date)
|
||||
ORDER BY semvon.start
|
||||
LIMIT 1";
|
||||
|
||||
return $this->execQuery($qry, array($studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Studiensemester for which no Oehbeitrag value assignment exists.
|
||||
* @param string $start_studiensemester_kurzbz semester before the given semester are ignored
|
||||
* @param array $excluded_oehbeitrag_id oehbeitraege to be ignored, i.e. which are assigned
|
||||
* @return object
|
||||
*/
|
||||
public function getUnassignedStudiensemester($start_studiensemester_kurzbz, $excluded_oehbeitrag_id = array())
|
||||
{
|
||||
$params = array($start_studiensemester_kurzbz);
|
||||
|
||||
$qry = "SELECT * FROM public.tbl_studiensemester sem
|
||||
WHERE sem.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)
|
||||
AND NOT EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag oeh
|
||||
JOIN public.tbl_studiensemester oeh_von ON oeh.von_studiensemester_kurzbz = oeh_von.studiensemester_kurzbz
|
||||
LEFT JOIN public.tbl_studiensemester oeh_bis ON oeh.bis_studiensemester_kurzbz = oeh_bis.studiensemester_kurzbz
|
||||
WHERE sem.start::date >= oeh_von.start::date AND (sem.start::date <= oeh_bis.start::date OR oeh_bis.studiensemester_kurzbz IS NULL)";
|
||||
|
||||
if (!isEmptyArray($excluded_oehbeitrag_id))
|
||||
{
|
||||
$qry .= " AND oehbeitrag_id NOT IN ?";
|
||||
$params[] = $excluded_oehbeitrag_id;
|
||||
}
|
||||
|
||||
$qry .= ") ORDER BY sem.start";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a Öhbeitrag can be assigned for a Studiensemester range.
|
||||
* @param string $von_studiensemester_kurzbz
|
||||
* @param string $bis_studiensemester_kurzbz
|
||||
* @param array $excluded_oehbeitrag_id oehbeitraege to ignore, i.e. which are assignable
|
||||
* @return object array with true if assignable, with false if not
|
||||
*/
|
||||
public function checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz = null, $excluded_oehbeitrag_id = array())
|
||||
{
|
||||
$params = array($von_studiensemester_kurzbz);
|
||||
|
||||
$allStdSemSpanQry = "SELECT count(studiensemester_kurzbz) as number_assigned FROM public.tbl_studiensemester sem
|
||||
WHERE start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)";
|
||||
|
||||
if ($bis_studiensemester_kurzbz != null)
|
||||
{
|
||||
$allStdSemSpanQry .= " AND (start <= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?))";
|
||||
$params[] = $bis_studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$allStdSemSpanQry .= " AND EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag
|
||||
JOIN public.tbl_studiensemester sem_von ON tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz
|
||||
LEFT JOIN public.tbl_studiensemester sem_bis ON tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz
|
||||
WHERE sem.start >= sem_von.start AND (sem.start <= sem_bis.start OR sem_bis.studiensemester_kurzbz IS NULL)";
|
||||
|
||||
if (!isEmptyArray($excluded_oehbeitrag_id))
|
||||
{
|
||||
$allStdSemSpanQry .= " AND oehbeitrag_id NOT IN ?";
|
||||
$params[] = $excluded_oehbeitrag_id;
|
||||
}
|
||||
|
||||
$allStdSemSpanQry .= ")";
|
||||
|
||||
$nrAssigned = $this->execQuery($allStdSemSpanQry, $params);
|
||||
|
||||
if (isError($nrAssigned))
|
||||
return $nrAssigned;
|
||||
|
||||
if (!hasData($nrAssigned))
|
||||
return error("Fehler bei Überprüfung der Möglichkeit der Semesterzuweisung");
|
||||
|
||||
return success(array(getData($nrAssigned)[0]->number_assigned == 0));
|
||||
}
|
||||
}
|
||||
@@ -291,7 +291,7 @@ class Prestudent_model extends DB_Model
|
||||
$prestudentdata->prestudentstatus = $lastStatusData;
|
||||
|
||||
|
||||
if ($this->hasUDF())
|
||||
if ($this->udfsExistAndDefined())
|
||||
{
|
||||
$prestudentdata->prestudentUdfs = $this->getUDFs($prestudent_id);
|
||||
}
|
||||
@@ -581,6 +581,35 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($person_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get latest ZGV Bezeichnung of Prestudent.
|
||||
*
|
||||
* @param $prestudent_id
|
||||
*/
|
||||
public function getLatestZGVBezeichnung($prestudent_id)
|
||||
{
|
||||
if (!is_numeric($prestudent_id))
|
||||
{
|
||||
show_error('Prestudent_id is not numeric.');
|
||||
}
|
||||
|
||||
$language_index = getUserLanguage() == 'German' ? 0 : 1;
|
||||
|
||||
$this->addSelect('
|
||||
COALESCE(
|
||||
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $language_index . ',
|
||||
array_to_json(zgv.bezeichnung::varchar[])->>' . $language_index . '
|
||||
) AS bezeichnung'
|
||||
);
|
||||
|
||||
$this->addJoin('bis.tbl_zgv zgv', 'zgv_code', 'LEFT');
|
||||
$this->addJoin('bis.tbl_zgvmaster zgvmaster', 'zgvmas_code', 'LEFT');
|
||||
|
||||
return $this->loadWhere(array(
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
}
|
||||
|
||||
public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester)
|
||||
{
|
||||
@@ -596,4 +625,34 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($person, $studiengang, $studienSemester));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets förderrelevant flag for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang
|
||||
* @param int $prestudent_id
|
||||
* @return object
|
||||
*/
|
||||
public function getFoerderrelevant($prestudent_id)
|
||||
{
|
||||
$query = 'SELECT COALESCE (ps.foerderrelevant, stg.foerderrelevant) AS foerderrelevant
|
||||
FROM public.tbl_prestudent ps
|
||||
LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE prestudent_id = ?';
|
||||
|
||||
return $this->execQuery($query, array($prestudent_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets bis standort_code for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang
|
||||
* @param int $prestudent_id
|
||||
* @return object
|
||||
*/
|
||||
public function getStandortCode($prestudent_id)
|
||||
{
|
||||
$query = 'SELECT COALESCE (ps.standort_code, stg.standort_code) AS standort_code
|
||||
FROM public.tbl_prestudent ps
|
||||
LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE prestudent_id = ?';
|
||||
|
||||
return $this->execQuery($query, array($prestudent_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class Statusgrund_model extends DB_Model
|
||||
$this->pk = "statusgrund_id";
|
||||
}
|
||||
|
||||
public function getStatus($status_kurzbz = null, $aktiv = null)
|
||||
public function getStatus($status_kurzbz = null, $aktiv = null, $statusgrund_kurzbz = null)
|
||||
{
|
||||
$this->addOrder('bezeichnung_mehrsprachig');
|
||||
$where = array();
|
||||
@@ -20,6 +20,8 @@ class Statusgrund_model extends DB_Model
|
||||
$where['status_kurzbz'] = $status_kurzbz;
|
||||
if (!is_null($aktiv))
|
||||
$where['aktiv'] = $aktiv;
|
||||
if (!is_null($statusgrund_kurzbz))
|
||||
$where['statusgrund_kurzbz'] = $statusgrund_kurzbz;
|
||||
|
||||
$status = $this->loadWhere($where);
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<?php
|
||||
class Anrechnung_model extends DB_Model
|
||||
{
|
||||
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
|
||||
|
||||
const ANRECHNUNGSTATUS_APPROVED = 'approved';
|
||||
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -12,6 +16,55 @@ class Anrechnung_model extends DB_Model
|
||||
$this->pk = 'anrechnung_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates new Anrechnungsantrag.
|
||||
* Saves new Anrechnung and sets Anrechnungstatus for the new Anrechnung.
|
||||
*
|
||||
* @param $prestudent_id
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $lehrveranstaltung_id
|
||||
* @param $begruendung_id
|
||||
* @param $dms_id DMS ID of uploaded Nachweisdokument
|
||||
* @param null $anmerkung_student = Herkunft der Kenntnisse
|
||||
* @return array
|
||||
*/
|
||||
public function createAnrechnungsantrag(
|
||||
$prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id,
|
||||
$begruendung_id, $dms_id, $anmerkung_student = null
|
||||
)
|
||||
{
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
// Save Anrechnung
|
||||
$result = $this->AnrechnungModel->insert(array(
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'begruendung_id' => $begruendung_id,
|
||||
'dms_id' => $dms_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'anmerkung_student' => $anmerkung_student,
|
||||
'insertvon' => $this->_uid
|
||||
));
|
||||
|
||||
// Store just inserted Anrechnung ID
|
||||
$lastInsert_anrechnung_id = $result->retval;
|
||||
|
||||
// Save Anrechnungstatus
|
||||
$this->AnrechnungModel->saveAnrechnungstatus($lastInsert_anrechnung_id, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL);
|
||||
|
||||
// Transaction complete
|
||||
$this->db->trans_complete();
|
||||
|
||||
if ($this->db->trans_status() === false)
|
||||
{
|
||||
$this->db->trans_rollback();
|
||||
return error('Failed inserting Anrechnung', EXIT_ERROR);
|
||||
}
|
||||
|
||||
return success($lastInsert_anrechnung_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save Anrechnungstatus.
|
||||
* @param $anrechnung_id
|
||||
@@ -83,4 +136,68 @@ class Anrechnung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, array($anrechnung_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Anrechnungstatus.
|
||||
*
|
||||
* @param $anrechnungstatus_id
|
||||
*/
|
||||
public function deleteAnrechnungstatus($anrechnungstatus_id){
|
||||
|
||||
$qry = '
|
||||
DELETE FROM lehre.tbl_anrechnung_anrechnungstatus
|
||||
WHERE anrechnungstatus_id = ?
|
||||
';
|
||||
|
||||
return $this->execQuery($qry, array($anrechnungstatus_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete last status approved / rejected.
|
||||
* If last status is 'approved', Genehmigung is resetted.
|
||||
*
|
||||
* @param $anrechnung_id
|
||||
* @return array
|
||||
*/
|
||||
public function withdrawApprovement($anrechnung_id)
|
||||
{
|
||||
// Get last Anrechnungstatus
|
||||
if (!$result = getData($this->AnrechnungModel->getLastAnrechnungstatus($anrechnung_id))[0])
|
||||
{
|
||||
return error('Failed loading Anrechnung');
|
||||
}
|
||||
|
||||
$last_status = $result->status_kurzbz;
|
||||
$anrechnungstatus_id = $result->anrechnungstatus_id;
|
||||
|
||||
// Exit, if last status is not approved / rejected
|
||||
if ($last_status != self::ANRECHNUNGSTATUS_APPROVED && $last_status != self::ANRECHNUNGSTATUS_REJECTED)
|
||||
{
|
||||
return error('Nothing to withdraw. Application is still in progress');
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
// If Anrechnung was approved
|
||||
if ($last_status == self::ANRECHNUNGSTATUS_APPROVED)
|
||||
{
|
||||
// Reset Genehmigung
|
||||
$this->AnrechnungModel->update($anrechnung_id, array('genehmigt_von' => NULL));
|
||||
}
|
||||
|
||||
// Delete last status approved / rejected
|
||||
$this->AnrechnungModel->deleteAnrechnungstatus($anrechnungstatus_id);
|
||||
|
||||
// Transaction complete
|
||||
$this->db->trans_complete();
|
||||
|
||||
if ($this->db->trans_status() === false)
|
||||
{
|
||||
$this->db->trans_rollback();
|
||||
return error('Failed withdrawing Genehmigung', EXIT_ERROR);
|
||||
}
|
||||
return success();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Anrechnungbegruendung_model extends DB_Model
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'lehre.tbl_anrechnung_begruendung';
|
||||
$this->pk = 'begruendung_id';
|
||||
}
|
||||
}
|
||||
@@ -169,18 +169,34 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
*/
|
||||
public function getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
|
||||
{
|
||||
$query = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
|
||||
CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter
|
||||
FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
|
||||
WHERE
|
||||
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
|
||||
tbl_person.person_id=tbl_benutzer.person_id AND
|
||||
lehrveranstaltung_id=? AND
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
|
||||
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
|
||||
studiensemester_kurzbz=?) AS a
|
||||
ORDER BY lvleiter DESC, nachname, vorname";
|
||||
$query = "SELECT
|
||||
*
|
||||
FROM
|
||||
(SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
|
||||
CASE WHEN
|
||||
EXISTS(
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter lvllem
|
||||
JOIN lehre.tbl_lehreinheit lvlle USING(lehreinheit_id)
|
||||
WHERE
|
||||
lehrfunktion_kurzbz='LV-Leitung'
|
||||
AND lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
|
||||
AND studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
|
||||
AND mitarbeiter_uid=tbl_benutzer.uid
|
||||
) THEN true ELSE false END as lvleiter
|
||||
FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
|
||||
WHERE
|
||||
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
|
||||
tbl_person.person_id=tbl_benutzer.person_id AND
|
||||
lehrveranstaltung_id=? AND
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
|
||||
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
|
||||
studiensemester_kurzbz=?
|
||||
) AS a
|
||||
ORDER BY lvleiter DESC, nachname, vorname";
|
||||
|
||||
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
|
||||
}
|
||||
@@ -273,7 +289,7 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, $parametersarray);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets Lehrveranstaltung and its Lehreinheiten (multiple rows possible).
|
||||
* Returns empty array if student has no Lehrveranstaltung.
|
||||
@@ -290,7 +306,7 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
AND studiensemester_kurzbz = ?
|
||||
AND lehrveranstaltung_id = ?;
|
||||
';
|
||||
|
||||
|
||||
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,29 @@ class Pruefung_model extends DB_Model
|
||||
$this->dbTable = 'campus.tbl_pruefung';
|
||||
$this->pk = 'pruefung_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Pruefungen of a person for a Studiensemester.
|
||||
* @param int $person_id
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @return object
|
||||
*/
|
||||
public function getByPerson($person_id, $studiensemester_kurzbz)
|
||||
{
|
||||
$qry = '
|
||||
SELECT prfg.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id,
|
||||
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung
|
||||
FROM public.tbl_person pers
|
||||
JOIN public.tbl_prestudent prst USING (person_id)
|
||||
JOIN public.tbl_student USING (prestudent_id)
|
||||
JOIN lehre.tbl_pruefung prfg USING (student_uid)
|
||||
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
|
||||
WHERE pers.person_id = ?
|
||||
AND le.studiensemester_kurzbz = ?
|
||||
ORDER BY prfg.datum, pruefung_id';
|
||||
|
||||
return $this->execQuery($qry, array($person_id, $studiensemester_kurzbz));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,125 @@ class Zeugnisnote_model extends DB_Model
|
||||
$this->pk = array('studiensemester_kurzbz', 'student_uid', 'lehrveranstaltung_id');
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets ECTS sums of completed courses (Zeugnisnoten) of a person for a Studiensemester.
|
||||
* If no valid Noten for the course were entered, 0 ects is returned.
|
||||
* @param int $person_id
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @param bool $aktiv
|
||||
* @param bool $lehre
|
||||
* @param bool $offiziell
|
||||
* @param bool $positiv
|
||||
* @return object
|
||||
*/
|
||||
public function getEctsSumsByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null)
|
||||
{
|
||||
$params = array();
|
||||
|
||||
$qry = "SELECT DISTINCT ON (prst.prestudent_id) pers.matr_nr, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz,
|
||||
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, COALESCE(summen.summe_ects, 0) AS summe_ects
|
||||
FROM public.tbl_person pers
|
||||
JOIN public.tbl_prestudent prst USING (person_id)
|
||||
JOIN public.tbl_prestudentstatus prstst USING (prestudent_id)
|
||||
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
|
||||
LEFT JOIN (
|
||||
SELECT zgnisnote.student_uid, prestudent_id, zgnisnote.studiensemester_kurzbz, sum(ects) AS summe_ects
|
||||
FROM public.tbl_student
|
||||
LEFT JOIN lehre.tbl_zeugnisnote zgnisnote USING(student_uid)
|
||||
LEFT JOIN lehre.tbl_note note ON zgnisnote.note = note.note
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
WHERE TRUE";
|
||||
|
||||
if (isset($aktiv))
|
||||
{
|
||||
$qry .= ' AND (note.aktiv = ?)';
|
||||
$params[] = $aktiv;
|
||||
}
|
||||
|
||||
if (isset($lehre))
|
||||
{
|
||||
$qry .= ' AND (note.lehre = ?)';
|
||||
$params[] = $lehre;
|
||||
}
|
||||
|
||||
if (isset($offiziell))
|
||||
{
|
||||
$qry .= ' AND (note.offiziell = ?)';
|
||||
$params[] = $offiziell;
|
||||
}
|
||||
|
||||
if (isset($positiv))
|
||||
{
|
||||
$qry .= ' AND (note.positiv = ?)';
|
||||
$params[] = $positiv;
|
||||
}
|
||||
|
||||
$qry .= " GROUP BY zgnisnote.studiensemester_kurzbz, zgnisnote.student_uid, prestudent_id
|
||||
) summen ON prst.prestudent_id = summen.prestudent_id AND prstst.studiensemester_kurzbz = summen.studiensemester_kurzbz
|
||||
WHERE pers.person_id = ?
|
||||
AND prstst.studiensemester_kurzbz = ?
|
||||
ORDER BY prst.prestudent_id";
|
||||
|
||||
$params[] = $person_id;
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets courses (Zeugnisnoten) of a person for a Studiensemester.
|
||||
* @param int $person_id
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @param bool $aktiv
|
||||
* @param bool $lehre
|
||||
* @param bool $offiziell
|
||||
* @param bool $positiv
|
||||
* @return object
|
||||
*/
|
||||
public function getByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null)
|
||||
{
|
||||
$params = array($person_id, $studiensemester_kurzbz);
|
||||
|
||||
$qry = "SELECT zgnisnote.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz,
|
||||
UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, note.note,
|
||||
note.bezeichnung AS note_bezeichnung
|
||||
FROM public.tbl_person pers
|
||||
JOIN public.tbl_prestudent prst USING (person_id)
|
||||
JOIN public.tbl_student USING (prestudent_id)
|
||||
JOIN lehre.tbl_zeugnisnote zgnisnote USING (student_uid)
|
||||
JOIN lehre.tbl_note note ON zgnisnote.note = note.note
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz
|
||||
WHERE pers.person_id = ?
|
||||
AND zgnisnote.studiensemester_kurzbz = ?";
|
||||
|
||||
if (isset($aktiv))
|
||||
{
|
||||
$qry .= ' AND note.aktiv = ?';
|
||||
$params[] = $aktiv;
|
||||
}
|
||||
|
||||
if (isset($lehre))
|
||||
{
|
||||
$qry .= ' AND note.lehre = ?';
|
||||
$params[] = $lehre;
|
||||
}
|
||||
|
||||
if (isset($offiziell))
|
||||
{
|
||||
$qry .= ' AND note.offiziell = ?';
|
||||
$params[] = $offiziell;
|
||||
}
|
||||
|
||||
if (isset($positiv))
|
||||
{
|
||||
$qry .= ' AND note.positiv = ?';
|
||||
$params[] = $positiv;
|
||||
}
|
||||
|
||||
$qry .= ' ORDER BY zgnisnote.benotungsdatum';
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +475,7 @@ class Studiengang_model extends DB_Model
|
||||
funktion_kurzbz = \'Leitung\'
|
||||
AND ( datum_von <= NOW() OR datum_von IS NULL )
|
||||
AND ( datum_bis >= NOW() OR datum_bis IS NULL )
|
||||
AND studiengang_kz = ' . $this->db->escape($studiengang_kz, FHC_INTEGER)
|
||||
AND studiengang_kz = ' . $this->db->escape($studiengang_kz)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -152,6 +152,7 @@ class Notiz_model extends DB_Model
|
||||
*/
|
||||
public function getNotizByTitel($person_id, $titel)
|
||||
{
|
||||
$this->addSelect('public.tbl_notiz.insertamum as insertnotiz, *');
|
||||
// Join with the table public.tbl_notizzuordnung using notiz_id
|
||||
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
|
||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id', 'LEFT');
|
||||
|
||||
@@ -152,34 +152,36 @@ class Person_model extends DB_Model
|
||||
*/
|
||||
public function getPersonStammdaten($person_id, $zustellung_only = false)
|
||||
{
|
||||
$this->addSelect('public.tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
|
||||
$this->addSelect('public.tbl_person.*, tbl_person.staatsbuergerschaft AS staatsbuergerschaft_code, tbl_person.geburtsnation AS geburtsnation_code,
|
||||
s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation');
|
||||
$this->addJoin('bis.tbl_nation s', 'public.tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT');
|
||||
$this->addJoin('bis.tbl_nation g', 'public.tbl_person.geburtsnation = g.nation_code', 'LEFT');
|
||||
|
||||
$person = $this->load($person_id);
|
||||
|
||||
if($person->error) return $person;
|
||||
if (isError($person)) return $person;
|
||||
|
||||
//return null if not found
|
||||
if(count($person->retval) < 1)
|
||||
if (!hasData($person))
|
||||
return success(null);
|
||||
|
||||
$this->KontaktModel->addDistinct();
|
||||
$this->KontaktModel->addSelect('kontakttyp, anmerkung, kontakt, zustellung');
|
||||
$this->KontaktModel->addOrder('kontakttyp');
|
||||
$this->KontaktModel->addOrder('insertamum', 'DESC');
|
||||
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustellung' => true) : array('person_id' => $person_id);
|
||||
$kontakte = $this->KontaktModel->loadWhere($where);
|
||||
if($kontakte->error) return $kontakte;
|
||||
if (isError($kontakte)) return $kontakte;
|
||||
|
||||
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustelladresse' => true) : array('person_id' => $person_id);
|
||||
$this->AdresseModel->addSelect('public.tbl_adresse.*, bis.tbl_nation.kurztext AS nationkurztext');
|
||||
$this->AdresseModel->addJoin('bis.tbl_nation', 'tbl_adresse.nation = tbl_nation.nation_code', 'LEFT');
|
||||
$this->AdresseModel->addOrder('insertamum', 'DESC');
|
||||
$adressen = $this->AdresseModel->loadWhere($where);
|
||||
if($adressen->error) return $adressen;
|
||||
if (isError($adressen)) return $adressen;
|
||||
|
||||
$stammdaten = $person->retval[0];
|
||||
$stammdaten->kontakte = $kontakte->retval;
|
||||
$stammdaten->adressen = $adressen->retval;
|
||||
$stammdaten = getData($person)[0];
|
||||
$stammdaten->kontakte = hasData($kontakte) ? getData($kontakte) : array();
|
||||
$stammdaten->adressen = hasData($adressen) ? getData($adressen) : array();
|
||||
|
||||
return success($stammdaten);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Fehler_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'system.tbl_fehler';
|
||||
$this->pk = 'fehlercode';
|
||||
}
|
||||
}
|
||||
@@ -57,19 +57,34 @@ class Filters_model extends DB_Model
|
||||
/**
|
||||
* Loads all filters by their app and dataset_name
|
||||
*/
|
||||
public function getFiltersByAppDatasetName($app, $dataset_name)
|
||||
public function getFiltersByAppDatasetNamePersonId($app, $dataset_name, $person_id)
|
||||
{
|
||||
$this->resetQuery(); // reset any previous built query
|
||||
$query = '
|
||||
(
|
||||
-- Global filters
|
||||
SELECT gs.filter_id,
|
||||
gs.person_id,
|
||||
gs.description
|
||||
FROM system.tbl_filters gs
|
||||
WHERE gs.app = ?
|
||||
AND gs.dataset_name = ?
|
||||
AND gs.person_id IS NULL
|
||||
ORDER BY gs.person_id DESC, gs.sort ASC
|
||||
)
|
||||
UNION ALL
|
||||
(
|
||||
-- Personal filters
|
||||
SELECT ps.filter_id,
|
||||
ps.person_id,
|
||||
ps.description
|
||||
FROM system.tbl_filters ps
|
||||
WHERE ps.app = ?
|
||||
AND ps.dataset_name = ?
|
||||
AND ps.person_id = ?
|
||||
ORDER BY ps.person_id DESC, ps.sort ASC
|
||||
)';
|
||||
|
||||
$this->addSelect('filter_id, person_id, description');
|
||||
$this->addOrder('person_id', 'DESC'); // sort descending on column person_id
|
||||
$this->addOrder('sort', 'ASC'); // sort on column sort
|
||||
|
||||
$filterParametersArray = array(
|
||||
'app' => $app,
|
||||
'dataset_name' => $dataset_name
|
||||
);
|
||||
|
||||
return $this->loadWhere($filterParametersArray);
|
||||
return $this->execQuery($query, array($app, $dataset_name, $app, $dataset_name, $person_id));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
class Issue_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'system.tbl_issue';
|
||||
$this->pk = 'issue_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets number of open (non-resolved) issues.
|
||||
* @param string $fehlercode unique error code
|
||||
* @param int $person_id if provided, only issues with this person_id are counted.
|
||||
* @param string $oe_kurzbz if provided, only issues with this oe_kurzbz are counted.
|
||||
* @param string $fehlercode_extern if provided, only issues with this external fehlercode are counted (for identifying issues from external systems).
|
||||
* @return Object success with number of issues or error
|
||||
*/
|
||||
public function getOpenIssueCount($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null)
|
||||
{
|
||||
$params = array($fehlercode);
|
||||
// issue exists for a fehlercode (or fehlercode_extern), person_id, oe_kurzbz, if not verarbeitet yet
|
||||
$qry = 'SELECT count(*) as anzahl_open_issues FROM system.tbl_issue
|
||||
WHERE fehlercode = ?
|
||||
AND verarbeitetamum IS NULL';
|
||||
|
||||
if (!isEmptyString($fehlercode_extern))
|
||||
{
|
||||
$qry .= ' AND fehlercode_extern = ?';
|
||||
$params[] = $fehlercode_extern;
|
||||
}
|
||||
|
||||
if (isset($person_id))
|
||||
{
|
||||
$qry .= ' AND person_id = ?';
|
||||
$params[] = $person_id;
|
||||
}
|
||||
|
||||
if (isset($oe_kurzbz))
|
||||
{
|
||||
$qry .= ' AND oe_kurzbz = ?';
|
||||
$params[] = $oe_kurzbz;
|
||||
}
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'ÖH-Beitragsverwaltung',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'tablesorter' => true,
|
||||
'dialoglib' => true,
|
||||
'ajaxlib' => true,
|
||||
'navigationwidget' => true,
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/codex/oehbeitrag.css'),
|
||||
'customJSs' => array('public/js/tablesort/tablesort.js', 'public/js/codex/oehbeitrag.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">
|
||||
Öhbeitragsverwaltung
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<button class="btn btn-default" id="addNewOeh">Neuen Öhbeitrag hinzufügen</button>
|
||||
<br />
|
||||
<br />
|
||||
<table class="table table-bordered table-condensed" id="oehbeitraegeTbl">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Gültig von</th>
|
||||
<th>Gültig bis</th>
|
||||
<th>Studierendenbetrag</th>
|
||||
<th>Versicherungsbetrag</th>
|
||||
<th id="actionHeading">Aktion</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -15,6 +15,7 @@
|
||||
<th>Aktiv</th>
|
||||
<th>Bezeichnung mehrsprachig</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Statusgrund</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -25,6 +26,7 @@
|
||||
<td><?php echo json_encode($s->aktiv); ?></td>
|
||||
<td><?php echo json_encode($s->bezeichnung_mehrsprachig); ?></td>
|
||||
<td><?php echo json_encode($s->beschreibung); ?></td>
|
||||
<td><?php echo json_encode($s->statusgrund_kurzbz); ?></td>
|
||||
<td><a href="../editGrund/<?php echo $s->statusgrund_id; ?>" target="StatusgrundBottom">Edit</a></td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
@@ -33,4 +35,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -81,6 +81,21 @@
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
StatusGrund:
|
||||
</td>
|
||||
<tr>
|
||||
</tr>
|
||||
<td>
|
||||
<input type="text" name="statusgrund_kurzbz" value="<?php echo $sg->statusgrund_kurzbz; ?>" /><br/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="center">
|
||||
<button type="submit">Save</button>
|
||||
|
||||
@@ -51,6 +51,16 @@
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
StatusGrund:
|
||||
</td>
|
||||
<tr>
|
||||
</tr>
|
||||
<td>
|
||||
<input type="text" name="statusgrund_kurzbz" value="" /><br/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="center">
|
||||
<button type="submit">Save</button>
|
||||
|
||||
@@ -12,7 +12,8 @@ $this->load->view(
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'anerkennungNachgewiesenerKenntnisse',
|
||||
'antragStellen'
|
||||
'antragStellen',
|
||||
'begruendung'
|
||||
),
|
||||
'ui' => array(
|
||||
'hilfeZuDieserSeite',
|
||||
@@ -36,7 +37,14 @@ $this->load->view(
|
||||
'lehrveranstaltung',
|
||||
'ects',
|
||||
'lektor',
|
||||
)
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'genehmigungAblehnungWirklichZuruecknehmen',
|
||||
'empfehlungsanforderungWirklichZuruecknehmen',
|
||||
'erfolgreichZurueckgenommen',
|
||||
'empfehlungPositivConfirmed',
|
||||
'empfehlungNegativConfirmed'
|
||||
)
|
||||
),
|
||||
'customCSSs' => array(
|
||||
'public/css/Tabulator.css'
|
||||
@@ -53,7 +61,7 @@ $this->load->view(
|
||||
<body>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- title -->
|
||||
<!-- header -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>
|
||||
@@ -62,298 +70,334 @@ $this->load->view(
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--end header -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span> 
|
||||
<span class="approveAnrechnungDetail-anrechnungInfoTooltip"
|
||||
data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="approveAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<table class="panel-body table table-bordered table-condensed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('person', 'student')); ?></td>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('person', 'personenkennzeichen'); ?></td>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></td>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></td>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></td>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'ects'); ?></td>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lektorInnen'); ?></td>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></td>
|
||||
<td><?php echo $anrechnungData->anmerkung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></td>
|
||||
<td>
|
||||
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Empfehlungsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form>
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<div class="panel panel-default" id="test">
|
||||
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></b></span> 
|
||||
<!-- <span class="approveAnrechnungDetail-empfehlungInfoTooltip"-->
|
||||
<!-- data-toggle="tooltip" data-placement="right"-->
|
||||
<!-- title="--><?php //echo $this->p->t('anrechnung', 'empfehlungInfoTooltipText'); ?><!--">-->
|
||||
<!-- <i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>-->
|
||||
<!-- </span>-->
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungVon'); ?>:
|
||||
<span id="approveAnrechnungDetail-empfehlungVon"><?php echo $empfehlungData->empfehlung_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungdatum'); ?>:
|
||||
<span id="approveAnrechnungDetail-empfehlungAm"><?php echo $empfehlungData->empfehlung_am ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-body" id="approveAnrechnungDetail-empfehlungDetail">
|
||||
|
||||
<div class="panel panel-default panel-body
|
||||
<?php echo is_null($empfehlungData->empfehlung) && $anrechnungData->status_kurzbz != 'inProgressLektor' ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-empfehlungDetail-empfehlungIsNull">
|
||||
<?php echo $this->p->t('anrechnung', 'keineEmpfehlungAngefordert'); ?>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default panel-body <?php echo
|
||||
is_null($empfehlungData->empfehlung) && $anrechnungData->status_kurzbz == 'inProgressLektor'
|
||||
? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-empfehlungDetail-empfehlungIsAngefordert">
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungAngefordertNochKeineEmpfehlung'); ?>
|
||||
<span id="approveAnrechnungDetail-empfehlungDetail-empfehlungAngefordertAm">
|
||||
<?php echo $empfehlungData->empfehlung_angefordert_am ?>
|
||||
</span>.
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success <?php echo $empfehlungData->empfehlung === true ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-empfehlungDetail-empfehlungIsTrue">
|
||||
<b><?php echo $this->p->t('anrechnung', 'empfehlungPositivConfirmed'); ?></b>
|
||||
</div>
|
||||
|
||||
<div class="<?php echo $empfehlungData->empfehlung === false ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-empfehlungDetail-empfehlungIsFalse">
|
||||
<div class="alert alert-danger">
|
||||
<b><?php echo $this->p->t('anrechnung', 'empfehlungNegativConfirmed'); ?></b>
|
||||
</div>
|
||||
<div class="well"><b><?php echo $this->p->t('global', 'begruendung'); ?>
|
||||
: </b>
|
||||
<span id="approveAnrechnungDetail-empfehlungDetail-begruendung"><?php echo htmlentities($empfehlungData->notiz) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-request-recommendation" class="btn btn-primary btn-w200"
|
||||
<?php echo is_null($empfehlungData->empfehlung) && $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAnfordern')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<!-- Genehmigungssdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<div class="panel panel-default">
|
||||
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'genehmigung'); ?></b></span> 
|
||||
<!-- <span class="approveAnrechnungDetail-genehmigungInfoTooltip"-->
|
||||
<!-- data-toggle="tooltip" data-placement="right"-->
|
||||
<!-- title="--><?php //echo $this->p->t('anrechnung', 'genehmigungInfoTooltipText'); ?><!--">-->
|
||||
<!-- <i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>-->
|
||||
<!-- </span>-->
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'abgeschlossenVon'); ?>:
|
||||
<span id="approveAnrechnungDetail-abgeschlossenVon"><?php echo $genehmigungData->abgeschlossen_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'abschlussdatum'); ?>:
|
||||
<span id="approveAnrechnungDetail-abgeschlossenAm"><?php echo $genehmigungData->abgeschlossen_am ?></span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-body" id="approveAnrechnungDetail-genehmigungDetail">
|
||||
|
||||
<div class="panel panel-default panel-body <?php echo is_null($genehmigungData->genehmigung) ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsNull">
|
||||
<?php echo $this->p->t('anrechnung', 'nochKeineGenehmigung'); ?>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success <?php echo $genehmigungData->genehmigung === true ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsPositiv">
|
||||
<b><?php echo $this->p->t('anrechnung', 'genehmigungPositiv'); ?></b>
|
||||
</div>
|
||||
|
||||
<div class="<?php echo $genehmigungData->genehmigung === false ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsNegativ">
|
||||
<div class="alert alert-danger">
|
||||
<b><?php echo $this->p->t('anrechnung', 'genehmigungNegativ'); ?></b>
|
||||
</div>
|
||||
<div class="well"><b><?php echo $this->p->t('global', 'begruendung'); ?>
|
||||
: </b>
|
||||
<span id="approveAnrechnungDetail-genehmigungDetail-begruendung"><?php echo htmlentities($genehmigungData->notiz) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form>
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<div class="panel panel-default panel-body" style="display: none"
|
||||
id="approveAnrechnungDetail-begruendung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-danger text-danger"><?php echo $this->p->t('anrechnung', 'genehmigungNegativQuestion'); ?></h4>
|
||||
<b> <?php echo $this->p->t('anrechnung', 'bitteBegruendungAngeben'); ?></b><br><br>
|
||||
<ul>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'genehmigungNegativPruefungNichtMoeglich'); ?></span>
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'genehmigungNegativKenntnisseNichtGleichwertig'); ?></span>
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li><?php echo $this->p->t('anrechnung', 'andereBegruendung'); ?></li>
|
||||
</ul>
|
||||
<br>
|
||||
<textarea class="form-control" name="begruendung"
|
||||
id="approveAnrechnungDetail-begruendung"
|
||||
rows="2" required></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-reject-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default panel-body" style="display: none"
|
||||
id="approveAnrechnungDetail-genehmigung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-success text-success"><?php echo $this->p->t('anrechnung', 'genehmigungPositivQuestion'); ?></h4>
|
||||
 <?php echo $this->p->t('anrechnung', 'genehmigungPositivSubquestion'); ?>
|
||||
<br><br>
|
||||
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-genehmigung-abbrechen"
|
||||
class="btn btn-default btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-approve-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-reject-anrechnung-ask" class="btn btn-danger btn-w200"
|
||||
<?php echo $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('global', 'ablehnen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-approve-anrechnung-ask" class="btn btn-primary btn-w200"
|
||||
<?php echo $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('global', 'genehmigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span> 
|
||||
<span class="approveAnrechnungDetail-anrechnungInfoTooltip"
|
||||
data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="approveAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
|
||||
<td><?php echo $antragData->zgv ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></th>
|
||||
<td><?php echo $anrechnungData->anmerkung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></th>
|
||||
<td>
|
||||
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Empfehlungsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default" id="approveAnrechnungDetail-empfehlung"
|
||||
data-empfehlung="<?php echo json_encode($empfehlungData->empfehlung) ?>">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></b></span> 
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungVon'); ?>:
|
||||
<span id="approveAnrechnungDetail-empfehlungVon"><?php echo $empfehlungData->empfehlung_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungdatum'); ?>:
|
||||
<span id="approveAnrechnungDetail-empfehlungAm"><?php echo $empfehlungData->empfehlung_am ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<form id="form-empfehlung">
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAm')); ?></th>
|
||||
<td id="approveAnrechnungDetail-empfehlungDetail-empfehlungsanfrageAm">
|
||||
<?php echo $empfehlungData->empfehlungsanfrageAm; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'empfehlungsanfrageAn'); ?></th>
|
||||
<td id="approveAnrechnungDetail-empfehlungDetail-empfehlungsanfrageAn">
|
||||
<?php echo $empfehlungData->empfehlungsanfrageAn; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAm')); ?></th>
|
||||
<td><?php echo $empfehlungData->empfehlung_am ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungVon')); ?></th>
|
||||
<td><?php echo $empfehlungData->empfehlung_von ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></th>
|
||||
<td id="approveAnrechnungDetail-empfehlungDetail-empfehlung"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('global', 'begruendung'); ?></th>
|
||||
<td id="approveAnrechnungDetail-empfehlungDetail-begruendung">
|
||||
<?php echo htmlentities($empfehlungData->begruendung) ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<form id="form-empfehlungNotiz">
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<input type="hidden" name="notiz_id"
|
||||
value="<?php echo $empfehlungData->notiz_id ?>">
|
||||
<div class="form-group">
|
||||
<label class="text-center">
|
||||
<?php echo ucfirst($this->p->t('global', 'notiz')); ?>
|
||||
</label>
|
||||
<textarea name="empfehlungText" rows="4"><?php echo htmlentities($empfehlungData->notiz) ?></textarea>
|
||||
</div>
|
||||
<input type="submit" class="btn btn-default pull-right" value="<?php echo ucfirst($this->p->t('ui', 'speichern')); ?>">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-withdraw-request-recommedation"
|
||||
class="btn btn-default btn-w200 <?php echo (is_null($empfehlungData->empfehlung) &&
|
||||
$anrechnungData->status_kurzbz == 'inProgressLektor') ? '' : 'hidden' ?>"
|
||||
type="button">
|
||||
<?php echo ucfirst($this->p->t('global', 'zuruecknehmen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-request-recommendation" class="btn btn-primary btn-w200"
|
||||
<?php echo is_null($empfehlungData->empfehlung) && $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAnfordern')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<!-- Genehmigungssdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'genehmigung'); ?></b></span> 
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'abgeschlossenVon'); ?>:
|
||||
<span id="approveAnrechnungDetail-abgeschlossenVon"><?php echo $genehmigungData->abgeschlossen_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'abschlussdatum'); ?>:
|
||||
<span id="approveAnrechnungDetail-abgeschlossenAm"><?php echo $genehmigungData->abgeschlossen_am ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body" id="approveAnrechnungDetail-genehmigungDetail">
|
||||
<!-- Infopanel: Noch nicht genehmigt / abgelehnt -->
|
||||
<div class="panel panel-default panel-body <?php echo is_null($genehmigungData->genehmigung) ? '' : 'hidden' ?>"
|
||||
id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsNull">
|
||||
<?php echo $this->p->t('anrechnung', 'nochKeineGenehmigung'); ?>
|
||||
</div>
|
||||
<!-- Infopanel: Genehmigt -->
|
||||
<div class="alert alert-success <?php echo $genehmigungData->genehmigung === true ? '' : 'hidden' ?>" id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsPositiv">
|
||||
<b><?php echo $this->p->t('anrechnung', 'genehmigungPositiv'); ?></b>
|
||||
</div>
|
||||
<!-- Infopanel: Abgelehnt -->
|
||||
<div class="<?php echo $genehmigungData->genehmigung === false ? '' : 'hidden' ?>" id="approveAnrechnungDetail-genehmigungDetail-genehmigungIsNegativ">
|
||||
<div class="alert alert-danger">
|
||||
<b><?php echo $this->p->t('anrechnung', 'genehmigungNegativ'); ?></b>
|
||||
</div>
|
||||
<div class="well"><b><?php echo $this->p->t('global', 'begruendung'); ?>
|
||||
: </b>
|
||||
<span id="approveAnrechnungDetail-genehmigungDetail-begruendung"><?php echo htmlentities($genehmigungData->notiz) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form>
|
||||
<input type="hidden" name="anrechnung_id" value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<!-- Ablehnen -->
|
||||
<div style="display: none" id="approveAnrechnungDetail-begruendung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-danger text-danger"><?php echo $this->p->t('anrechnung', 'genehmigungNegativQuestion'); ?></h4>
|
||||
<b> <?php echo $this->p->t('anrechnung', 'bitteBegruendungAngeben'); ?></b><br><br>
|
||||
<ul>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'genehmigungNegativPruefungNichtMoeglich'); ?></span>
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'genehmigungNegativKenntnisseNichtGleichwertig'); ?></span>
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'genehmigungNegativEmpfehlungstextUebernehmen'); ?></span>
|
||||
<span id="empfehlungstextUebernehmen" class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li><?php echo $this->p->t('anrechnung', 'andereBegruendung'); ?></li>
|
||||
</ul>
|
||||
<br>
|
||||
<textarea class="form-control" name="begruendung"
|
||||
id="approveAnrechnungDetail-begruendung"
|
||||
rows="2" required></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-reject-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Genehmigen -->
|
||||
<div style="display: none" id="approveAnrechnungDetail-genehmigung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-success text-success"><?php echo $this->p->t('anrechnung', 'genehmigungPositivQuestion'); ?></h4>
|
||||
  <?php echo $this->p->t('anrechnung', 'genehmigungPositivSubquestion'); ?>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-genehmigung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-approve-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Button Gehenhmigen / Ablehnen / Zurücknehmen -->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungDetail-withdraw-anrechnung-approvement"
|
||||
class="btn btn-default btn-w200 <?php echo ($anrechnungData->status_kurzbz == 'approved' ||
|
||||
$anrechnungData->status_kurzbz == 'rejected') ? '' : 'hidden' ?>"
|
||||
type="button">
|
||||
<?php echo ucfirst($this->p->t('global', 'zuruecknehmen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-reject-anrechnung-ask" class="btn btn-danger btn-w200"
|
||||
type="button"
|
||||
<?php echo $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('global', 'ablehnen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungDetail-approve-anrechnung-ask" class="btn btn-primary btn-w200"
|
||||
type="button"
|
||||
<?php echo $anrechnungData->status_kurzbz == 'inProgressDP' ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('global', 'genehmigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br><br><br><br>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<!-- -Statusleiste -->
|
||||
<div class="alert text-center">
|
||||
Status:
|
||||
<b><span class="text-uppercase" id="approveAnrechnungDetail-status_kurzbz"
|
||||
Status: <b><span class="text-uppercase" id="approveAnrechnungDetail-status_kurzbz"
|
||||
data-status_kurzbz="<?php echo $anrechnungData->status_kurzbz ?>">
|
||||
<?php echo $anrechnungData->status; ?>
|
||||
</span></b>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Infopanels -->
|
||||
<?php $this->load->view('lehre/anrechnung/reviewAnrechnungInfo'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!--end container-fluid-->
|
||||
</div><!--end page-wrapper-->
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
|
||||
@@ -13,11 +13,14 @@ $this->load->view(
|
||||
'tablewidget' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'begruendung'
|
||||
'begruendung',
|
||||
'zgv'
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'nachweisdokumente',
|
||||
'empfehlung',
|
||||
'empfehlungsanfrageAn',
|
||||
'empfehlungsanfrageAm',
|
||||
'confirmTextAntragHatBereitsEmpfehlung',
|
||||
'herkunft'
|
||||
),
|
||||
@@ -43,6 +46,7 @@ $this->load->view(
|
||||
'bitteMindEinenAntragWaehlen',
|
||||
'bitteBegruendungAngeben',
|
||||
'empfehlungWurdeAngefordert',
|
||||
'empfehlungWurdeAngefordertAusnahmeWoKeineLektoren',
|
||||
'anrechnungenWurdenGenehmigt',
|
||||
'anrechnungenWurdenAbgelehnt'
|
||||
),
|
||||
@@ -155,11 +159,12 @@ $this->load->view(
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungUebersicht-begruendung-abbrechen" class="btn btn-default btn-w200">
|
||||
<button id="approveAnrechnungUebersicht-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungUebersicht-reject-anrechnungen-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
@@ -173,11 +178,12 @@ $this->load->view(
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungUebersicht-empfehlung-abbrechen" class="btn btn-default btn-w200">
|
||||
<button id="approveAnrechnungUebersicht-empfehlung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="approveAnrechnungUebersicht-approve-anrechnungen-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
@@ -186,7 +192,7 @@ $this->load->view(
|
||||
<!-- Filter buttons / Submit buttons-->
|
||||
<div class="row">
|
||||
<!-- Filter buttons -->
|
||||
<div class="col-xs-3">
|
||||
<div class="col-xs-4 col-md-5">
|
||||
<div class="btn-toolbar" role="toolbar">
|
||||
<div class="btn-group" role="group">
|
||||
<button id="show-inProgressDP" class="btn btn-default btn-clearfilter" type="button"
|
||||
@@ -194,6 +200,11 @@ $this->load->view(
|
||||
title="<?php echo $this->p->t('ui', 'alleInBearbeitungSTGL'); ?>">
|
||||
<i class='fa fa-eye'></i>
|
||||
</button>
|
||||
<button id="show-inProgressLektor" class="btn btn-default btn-clearfilter" type="button"
|
||||
data-toggle="tooltip" data-placement="left"
|
||||
title="<?php echo $this->p->t('ui', 'alleInBearbeitungLektor'); ?>"><i
|
||||
class='fa fa-clock-o'></i>
|
||||
</button>
|
||||
<button id="show-recommended" class="btn btn-default btn-clearfilter" type="button"
|
||||
data-toggle="tooltip" data-placement="left"
|
||||
title="<?php echo $this->p->t('ui', 'nurEmpfohleneAnzeigen'); ?>"><i
|
||||
@@ -215,17 +226,23 @@ $this->load->view(
|
||||
class='fa fa-times'></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<a type="button" class="btn btn-default" style="margin-left: 20px;" href='<?php echo site_url('lehre/anrechnung/createAnrechnung') ?>' target='_blank'>
|
||||
<i class='fa fa-plus' aria-hidden='true'></i> <?php echo $this->p->t('global', 'antragAnlegen'); ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Action Buttons 'Genehmigen', Ablehnen, 'Empfehlung anfordern'-->
|
||||
<div class="col-xs-9">
|
||||
<div class="col-xs-8 col-md-7">
|
||||
<div class="pull-right">
|
||||
<button id="approveAnrechnungUebersicht-request-recommendation"
|
||||
class="btn btn-default btn-w200 btn-mr50"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAnfordern')); ?></button>
|
||||
class="btn btn-default btn-w200 btn-mr50" type="button">
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAnfordern')); ?></button>
|
||||
<button id="approveAnrechnungUebersicht-reject-anrechnungen-ask"
|
||||
class="btn btn-danger btn-w200"><?php echo ucfirst($this->p->t('global', 'ablehnen')); ?></button>
|
||||
class="btn btn-danger btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('global', 'ablehnen')); ?></button>
|
||||
<button id="approveAnrechnungUebersicht-approve-anrechnungen-ask"
|
||||
class="btn btn-primary btn-w200"><?php echo ucfirst($this->p->t('global', 'genehmigen')); ?></button>
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('global', 'genehmigen')); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
|
||||
const ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR = 'inProgressLektor';
|
||||
|
||||
$STUDIENSEMESTER = $studiensemester_selected;
|
||||
$STUDIENGAENGE_ENTITLED = implode(', ', $studiengaenge_entitled);
|
||||
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '0' : '1';
|
||||
@@ -14,12 +17,28 @@ $query = '
|
||||
anrechnung.studiensemester_kurzbz,
|
||||
stg.studiengang_kz,
|
||||
stg.bezeichnung AS "stg_bezeichnung",
|
||||
lv.orgform_kurzbz,
|
||||
(SELECT ausbildungssemester
|
||||
FROM public.tbl_prestudentstatus press
|
||||
WHERE press.prestudent_id = anrechnung.prestudent_id
|
||||
AND press.studiensemester_kurzbz = anrechnung.studiensemester_kurzbz
|
||||
AND press.status_kurzbz = \'Student\'),
|
||||
lv.bezeichnung AS "lv_bezeichnung",
|
||||
lv.ects,
|
||||
(person.nachname || \' \' || person.vorname) AS "student",
|
||||
begruendung.bezeichnung AS "begruendung",
|
||||
dmsversion.name AS "dokument_bezeichnung",
|
||||
anrechnung.anmerkung_student,
|
||||
(SELECT COALESCE(
|
||||
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . ',
|
||||
array_to_json(zgv.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . '
|
||||
) AS zgv
|
||||
FROM public.tbl_prestudent
|
||||
LEFT JOIN bis.tbl_zgv zgv USING (zgv_code)
|
||||
LEFT JOIN bis.tbl_zgvmaster zgvmaster USING (zgvmas_code)
|
||||
WHERE prestudent_id = anrechnung.prestudent_id
|
||||
) AS zgv,
|
||||
anrechnung.insertamum::date AS "antragsdatum",
|
||||
empfehlung_anrechnung,
|
||||
(SELECT status_kurzbz
|
||||
FROM lehre.tbl_anrechnungstatus
|
||||
@@ -33,13 +52,47 @@ $query = '
|
||||
JOIN public.tbl_person AS person USING (person_id)
|
||||
JOIN public.tbl_studiengang AS stg USING (studiengang_kz)
|
||||
JOIN lehre.tbl_lehrveranstaltung AS lv USING (lehrveranstaltung_id)
|
||||
JOIN campus.tbl_dms_version AS dmsversion USING (dms_id)
|
||||
LEFT JOIN campus.tbl_dms_version AS dmsversion USING (dms_id)
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus USING (anrechnung_id)
|
||||
JOIN lehre.tbl_anrechnung_begruendung AS begruendung USING (begruendung_id)
|
||||
)
|
||||
|
||||
SELECT anrechnungen.*,
|
||||
array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung"
|
||||
array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung",
|
||||
CASE
|
||||
WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL
|
||||
ELSE
|
||||
(SELECT insertamum::date
|
||||
FROM lehre.tbl_anrechnungstatus
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz)
|
||||
WHERE anrechnung_id = anrechnungen.anrechnung_id
|
||||
AND status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR . '\'
|
||||
ORDER BY insertamum DESC
|
||||
LIMIT 1)
|
||||
END "empfehlungsanfrageAm",
|
||||
CASE
|
||||
WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL
|
||||
ELSE
|
||||
(SELECT COALESCE(
|
||||
STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = TRUE),
|
||||
STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') FILTER (WHERE lvleiter = FALSE)
|
||||
) empfehlungsanfrageAn
|
||||
FROM (
|
||||
SELECT DISTINCT ON (benutzer.uid) uid, vorname, nachname,
|
||||
CASE WHEN lehrfunktion_kurzbz = \'LV-Leitung\' THEN TRUE ELSE FALSE END AS lvleiter
|
||||
FROM lehre.tbl_lehreinheit
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id)
|
||||
JOIN public.tbl_benutzer benutzer ON lema.mitarbeiter_uid = benutzer.uid
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
AND lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id
|
||||
AND lema.mitarbeiter_uid NOT like \'_Dummy%\'
|
||||
AND benutzer.aktiv = TRUE
|
||||
AND tbl_person.aktiv = TRUE
|
||||
ORDER BY benutzer.uid, lvleiter DESC, nachname, vorname
|
||||
) as tmp_lvlektoren
|
||||
)
|
||||
END "empfehlungsanfrageAn"
|
||||
FROM anrechnungen
|
||||
JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz)
|
||||
WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
@@ -59,21 +112,28 @@ $filterWidgetArray = array(
|
||||
'studiensemester_kurzbz',
|
||||
'studiengang_kz',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')),
|
||||
ucfirst($this->p->t('lehre', 'organisationsform')),
|
||||
'Semester',
|
||||
ucfirst($this->p->t('lehre', 'lehrveranstaltung')),
|
||||
'ECTS',
|
||||
ucfirst($this->p->t('person', 'studentIn')),
|
||||
ucfirst($this->p->t('global', 'begruendung')),
|
||||
ucfirst($this->p->t('anrechnung', 'nachweisdokumente')),
|
||||
ucfirst($this->p->t('anrechnung', 'herkunft')),
|
||||
ucfirst($this->p->t('global', 'zgv')),
|
||||
ucfirst($this->p->t('anrechnung', 'antragdatum')),
|
||||
ucfirst($this->p->t('anrechnung', 'empfehlung')),
|
||||
'status_kurzbz',
|
||||
'Status'
|
||||
'Status',
|
||||
ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAm')),
|
||||
ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAn'))
|
||||
),
|
||||
'datasetRepOptions' => '{
|
||||
height: func_height(this),
|
||||
layout: "fitColumns", // fit columns to width of table
|
||||
persistentLayout:true,
|
||||
persistentSort:true,
|
||||
persistentFilter:true,
|
||||
autoResize: false, // prevent auto resizing of table (false to allow adapting table size when cols are (de-)activated
|
||||
headerFilterPlaceholder: " ",
|
||||
index: "anrechnung_id", // assign specific column as unique id (important for row indexing)
|
||||
@@ -100,26 +160,32 @@ $filterWidgetArray = array(
|
||||
}
|
||||
}', // tabulator properties
|
||||
'datasetRepFieldsDefs' => '{
|
||||
anrechnung_id: {visible: false},
|
||||
lehrveranstaltung_id: {visible: false},
|
||||
begruendung_id: {visible: false},
|
||||
dms_id: {visible: false},
|
||||
studiensemester_kurzbz: {visible: false},
|
||||
studiengang_kz: {visible: false},
|
||||
anrechnung_id: {visible: false, headerFilter:"input"},
|
||||
lehrveranstaltung_id: {visible: false, headerFilter:"input"},
|
||||
begruendung_id: {visible: false, headerFilter:"input"},
|
||||
dms_id: {visible: false, headerFilter:"input"},
|
||||
studiensemester_kurzbz: {visible: false, headerFilter:"input"},
|
||||
studiengang_kz: {visible: false, headerFilter:"input"},
|
||||
stg_bezeichnung: {headerFilter:"input"},
|
||||
orgform_kurzbz: {headerFilter:"input"},
|
||||
ausbildungssemester: {headerFilter:"input"},
|
||||
lv_bezeichnung: {headerFilter:"input"},
|
||||
ects: {headerFilter:"input", align:"center"},
|
||||
student: {headerFilter:"input"},
|
||||
begruendung: {headerFilter:"input"},
|
||||
zgv: {visible: false, headerFilter:"input"},
|
||||
dokument_bezeichnung: {headerFilter:"input", formatter:"link", formatterParams:{
|
||||
labelField:"dokument_bezeichnung",
|
||||
url:function(cell){return "'. current_url() .'/download?dms_id=" + cell.getData().dms_id},
|
||||
target:"_blank"
|
||||
}},
|
||||
anmerkung_student: {headerFilter:"input"},
|
||||
antragsdatum: {align:"center", headerFilter:"input", mutator: mut_formatStringDate},
|
||||
empfehlung_anrechnung: {headerFilter:"input", align:"center", formatter: format_empfehlung_anrechnung, headerFilterFunc: hf_filterTrueFalse},
|
||||
status_kurzbz: {visible: false},
|
||||
status_bezeichnung: {headerFilter:"input"}
|
||||
status_kurzbz: {visible: false, headerFilter:"input"},
|
||||
status_bezeichnung: {headerFilter:"input"},
|
||||
empfehlungsanfrageAm: {visible: false, align:"center", headerFilter:"input", mutator: mut_formatStringDate},
|
||||
empfehlungsanfrageAn: {visible: false, headerFilter:"input"}
|
||||
}', // col properties
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => $this->p->t('anrechnung', 'neueAnrechnung'),
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'ajaxlib' => true,
|
||||
'dialoglib' => true,
|
||||
'tabulator' => true,
|
||||
'tablewidget' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'anerkennungNachgewiesenerKenntnisse',
|
||||
'antragWurdeGestellt',
|
||||
'antragBereitsGestellt',
|
||||
'antragBearbeiten'
|
||||
),
|
||||
'ui' => array(
|
||||
'hochladen'
|
||||
),
|
||||
'lehre' => array(
|
||||
'studiensemester',
|
||||
'studiengang',
|
||||
'lehrveranstaltung'
|
||||
)
|
||||
),
|
||||
'customJSs' => array(
|
||||
'public/js/bootstrapper.js',
|
||||
'public/js/lehre/anrechnung/createAnrechnung.js'
|
||||
),
|
||||
'customCSSs' => array(
|
||||
'public/css/lehre/anrechnung.css'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
|
||||
<!-- Title -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>
|
||||
<?php echo $this->p->t('anrechnung', 'neueAnrechnung'); ?>
|
||||
<small>| <?php echo $this->p->t('global', 'antragAnlegen'); ?></small>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Studiensemester Dropdown -->
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<form class="form-inline" action="" method="get">
|
||||
<div class="form-group">
|
||||
<?php
|
||||
echo $this->widgetlib->widget(
|
||||
'Studiensemester_widget',
|
||||
array(
|
||||
DropdownWidget::SELECTED_ELEMENT => $studiensemester_selected
|
||||
),
|
||||
array(
|
||||
'name' => 'studiensemester',
|
||||
'id' => 'studiensemester'
|
||||
)
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
<button type="submit"
|
||||
class="btn btn-default form-group">
|
||||
<?php echo ucfirst($this->p->t('ui', 'anzeigen')); ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- StudentInnen Table -->
|
||||
<div class="row">
|
||||
<div class="col-lg-10">
|
||||
<?php $this->load->view('lehre/anrechnung/createAnrechnungData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<!-- FORM START ------------------------------------------------------------------------------------------------------->
|
||||
<form id="createAnrechnung-form">
|
||||
<input name="prestudent_id" id="prestudent_id" type="hidden" value="" data-prestudent_id = "" >
|
||||
<input name="studiensemester_kurzbz" id="studiensemester_kurzbz" type="hidden" value="<?php echo $studiensemester_selected ?>">
|
||||
<div class="row">
|
||||
<div class="col-lg-10">
|
||||
<table class="table table-condensed table-bordered">
|
||||
<!-- StudentIn -->
|
||||
<tr>
|
||||
<th class="col-xs-5 col-lg-2"><label><?php echo $this->p->t('person', 'studentIn'); ?></label></th>
|
||||
<td><span id="student" class="pl-15"></span></td>
|
||||
</tr>
|
||||
<!-- Selectmenu Lehrveranstaltungen -->
|
||||
<tr>
|
||||
<th class="col-xs-5 col-lg-2"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?> *</th>
|
||||
<td>
|
||||
<select name="lehrveranstaltung_id" id="select-lehrveranstaltung" class="form-control select-w500">
|
||||
<option value="" <?php echo set_select('lehrveranstaltung', '', TRUE); ?> >
|
||||
<?php echo $this->p->t('ui', 'bitteWaehlen'); ?>
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Select Anrechnungbegruendungen -->
|
||||
<tr>
|
||||
<th class="col-xs-5 col-lg-2"><?php echo $this->p->t('global', 'begruendung'); ?> *</th>
|
||||
<td>
|
||||
<select name="begruendung_id" id="select-begruendung" class="form-control select-w500">
|
||||
<option value="" <?php echo set_select('begruendung', '', TRUE); ?> >
|
||||
<?php echo $this->p->t('ui', 'bitteWaehlen'); ?>
|
||||
</option>
|
||||
<?php foreach ($begruendungen as $begruendung) : ?>
|
||||
<option value="<?php echo $begruendung->begruendung_id ?>"
|
||||
<?php echo set_select('begruendung', $begruendung->begruendung_id); ?> >
|
||||
<?php echo ucfirst($begruendung->bezeichnung) ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Submit Herkunft der Kenntnisse -->
|
||||
<tr>
|
||||
<th class="col-xs-5 col-lg-2"><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></th>
|
||||
<td>
|
||||
<?php echo form_textarea(array(
|
||||
'name' => 'herkunftKenntnisse',
|
||||
'rows' => 1
|
||||
)); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Submit Upload Nachweisdokumente -->
|
||||
<tr>
|
||||
<th class="col-xs-5 col-lg-2"><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?> *</th>
|
||||
<td>
|
||||
<div><?php echo form_upload(array(
|
||||
'name' => 'uploadfile',
|
||||
'accept' => '.pdf',
|
||||
'size' => '50',
|
||||
'required' => 'required',
|
||||
'enctype' => "multipart/form-data"
|
||||
)); ?>
|
||||
</div>
|
||||
<a class="pull-right" id="download-nachweisdokumente"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-10">
|
||||
<!-- Submit Button -->
|
||||
<button class="btn btn-primary btn-w200 pull-right" id="createAnrechnung-submit" type="submit" value="submit">
|
||||
<?php echo $this->p->t('global', 'antragAnlegen'); ?>
|
||||
</button>
|
||||
<!-- Open new Anrechnung Button (hidden by default) -->
|
||||
<a type="button" class="btn btn-default btn-mr10 pull-right hidden" id="createAnrechnung-openAnrechnung" target="_blank"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<!-- FORM END --------------------------------------------------------------------------------------------------------->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
$STUDIENSEMESTER = $studiensemester_selected;
|
||||
$STUDIENGAENGE_ENTITLED = implode(', ', $studiengaenge_entitled);
|
||||
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '0' : '1';
|
||||
|
||||
$query = '
|
||||
SELECT pst.prestudent_id,
|
||||
person.person_id,
|
||||
pststatus.studienplan_id,
|
||||
stg.studiengang_kz,
|
||||
stg.bezeichnung AS "stg_bezeichnung",
|
||||
ausbildungssemester,
|
||||
nachname,
|
||||
vorname,
|
||||
(SELECT COALESCE(
|
||||
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . ',
|
||||
array_to_json(zgv.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . '
|
||||
) AS zgv
|
||||
FROM public.tbl_prestudent
|
||||
LEFT JOIN bis.tbl_zgv zgv USING (zgv_code)
|
||||
LEFT JOIN bis.tbl_zgvmaster zgvmaster USING (zgvmas_code)
|
||||
WHERE prestudent_id = pst.prestudent_id
|
||||
) AS zgv
|
||||
FROM public.tbl_prestudent pst
|
||||
JOIN public.tbl_prestudentstatus pststatus USING (prestudent_id)
|
||||
JOIN public.tbl_person person USING (person_id)
|
||||
JOIN public.tbl_student student USING (prestudent_id)
|
||||
JOIN public.tbl_benutzer benutzer ON benutzer.uid = student.student_uid
|
||||
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = pst.studiengang_kz
|
||||
WHERE pststatus.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
|
||||
AND pst.studiengang_kz IN (' . $STUDIENGAENGE_ENTITLED . ')
|
||||
AND benutzer.aktiv = true
|
||||
AND pststatus.status_kurzbz = \'Student\'
|
||||
ORDER BY "stg_bezeichnung", ausbildungssemester, nachname
|
||||
';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'tableUniqueId' => 'createAnrechnung',
|
||||
'requiredPermissions' => 'lehre/anrechnung_anlegen',
|
||||
'datasetRepresentation' => 'tabulator',
|
||||
'columnsAliases' => array(
|
||||
'prestudent_id',
|
||||
'person_id',
|
||||
'studienplan_id',
|
||||
'studiengang_kz',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')),
|
||||
'Semester',
|
||||
ucfirst($this->p->t('person', 'nachname')),
|
||||
ucfirst($this->p->t('person', 'vorname')),
|
||||
ucfirst($this->p->t('global', 'zgv'))
|
||||
),
|
||||
'datasetRepOptions' => '{
|
||||
height: 300,
|
||||
layout: "fitColumns", // fit columns to width of table
|
||||
persistentLayout:true,
|
||||
autoResize: false, // prevent auto resizing of table (false to allow adapting table size when cols are (de-)activated
|
||||
headerFilterPlaceholder: " ",
|
||||
index: "prestudent_id", // assign specific column as unique id (important for row indexing)
|
||||
selectable: 1, // allow row selection
|
||||
selectablePersistence:false, // deselect previously selected rows when table is filtered, sorted or paginated
|
||||
rowSelected: function(row) {
|
||||
func_rowSelected(row);
|
||||
},
|
||||
rowSelectionChanged:function(data, rows){
|
||||
func_rowSelectionChanged(data, rows);
|
||||
},
|
||||
tableWidgetHeader: false
|
||||
}',
|
||||
'datasetRepFieldsDefs' => '{
|
||||
prestudent_id: {visible: false, headerFilter:"input"},
|
||||
person_id: {visible: false, headerFilter:"input"},
|
||||
studienplan_id: {visible: false, headerFilter:"input"},
|
||||
studiengang_kz: {visible: false, headerFilter:"input"},
|
||||
stg_bezeichnung: {headerFilter:"input"},
|
||||
ausbildungssemester: {headerFilter:"input"},
|
||||
nachname: {headerFilter:"input"},
|
||||
vorname: {headerFilter:"input"},
|
||||
zgv: {headerFilter:"input"}
|
||||
}'
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('TableWidget', $filterWidgetArray);
|
||||
@@ -1,9 +1,12 @@
|
||||
<?php
|
||||
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
|
||||
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => $this->p->t('anrechnung', 'antragStellen'),
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'ajaxlib' => true,
|
||||
@@ -11,11 +14,23 @@ $this->load->view(
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'anerkennungNachgewiesenerKenntnisse',
|
||||
'antragStellen'
|
||||
'antragStellen',
|
||||
'antragWurdeGestellt',
|
||||
'antragBereitsGestellt',
|
||||
'bearbeitungGesperrt'
|
||||
),
|
||||
'ui' => array(
|
||||
'hilfeZuDieserSeite',
|
||||
'hochladen'
|
||||
'hochladen',
|
||||
'inBearbeitung',
|
||||
'neu',
|
||||
'maxZeichen',
|
||||
'errorBestaetigungFehlt',
|
||||
'systemfehler'
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'deadlineUeberschritten',
|
||||
'benotungDerLV'
|
||||
),
|
||||
'person' => array(
|
||||
'student',
|
||||
@@ -47,7 +62,7 @@ $this->load->view(
|
||||
<body>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- title -->
|
||||
<!-- header -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>
|
||||
@@ -56,185 +71,193 @@ $this->load->view(
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php echo form_open_multipart(current_url() . '/apply',
|
||||
['id' => 'requestAnrechnung-form'],
|
||||
['lv_id' => $antragData->lv_id, 'studiensemester' => $antragData->studiensemester_kurzbz]
|
||||
); ?>
|
||||
<!-- end header-->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<!-- Antragsdaten, Dokument Upload, Notiz-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="requestAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<table class="panel-body table table-bordered table-condensed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('person', 'student')); ?></td>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('person', 'personenkennzeichen'); ?></td>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></td>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></td>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></td>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'ects'); ?></td>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'lektor')); ?></td>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Antrag mit Checkboxen -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="well" style="border:solid black 3px">
|
||||
<span><?php echo $this->p->t('anrechnung', 'antragStellenText'); ?></span> 
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="1" required
|
||||
<?php echo $anrechnungData->begruendung_id == '1' ? 'checked' : ''; ?>
|
||||
<?php echo $disabled; ?>>
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenZeugnis'); ?> 
|
||||
<span id="requestAnrechnung-anrechnungGrundZeugnisTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundZeugnisTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="4" required
|
||||
<?php echo $anrechnungData->begruendung_id == '4' ? 'checked' : ''; ?>
|
||||
<?php echo $disabled; ?>>
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenPraxis'); ?> 
|
||||
<span id="requestAnrechnung-anrechnungGrundBerufTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundBerufTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Dokument Upload-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundAllgemeinTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-inline panel-body">
|
||||
<div class="form-group">
|
||||
<input type="file" id="requestAnrechnung-uploadfile"
|
||||
name="uploadfile" accept=".pdf" size="50"
|
||||
required <?php echo $disabled; ?>>
|
||||
</div>
|
||||
<span id="requestAnrechnung-uploadTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'uploadTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-question-circle-o" aria-hidden="true"></i>
|
||||
</span>
|
||||
<?php if (!empty($anrechnungData->dms_id)): ?>
|
||||
<a class="pull-right"
|
||||
href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Notiz -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="anmerkung" rows="2"
|
||||
required <?php echo $disabled; ?>><?php echo $anrechnungData->anmerkung; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Submit button 'Anrechnung beantragen'-->
|
||||
<div class="pull-right">
|
||||
<input type="submit" id="requestAnrechnung-submit" class="btn btn-primary"
|
||||
value="<?php echo $this->p->t('anrechnung', 'anrechnungBeantragen'); ?>" <?php echo $disabled; ?>>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Antragsdaten, Dokument Upload, Notiz-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form id="requestAnrechnung-form">
|
||||
<input type="hidden" name="lv_id" value="<?php echo $antragData->lv_id ?>">
|
||||
<input type="hidden" name="studiensemester" value="<?php echo $antragData->studiensemester_kurzbz ?>">
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="requestAnrechnung-antragdatum"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<table class="panel-body table table-bordered table-condensed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('lehre', 'lektorInnen')); ?></th>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Antrag mit Checkboxen -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="well" style="border:solid black 3px">
|
||||
<span><?php echo $this->p->t('anrechnung', 'antragStellenText'); ?></span> 
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="1" required
|
||||
<?php echo $anrechnungData->begruendung_id == '1' ? 'checked' : ''; ?> />
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenZeugnis'); ?> 
|
||||
<span id="requestAnrechnung-anrechnungGrundZeugnisTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundZeugnisTooltipText'); ?>" />
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="radio" name="begruendung" value="4" required
|
||||
<?php echo $anrechnungData->begruendung_id == '4' ? 'checked' : ''; ?>>
|
||||
<?php echo $this->p->t('anrechnung', 'antragStellenWegenPraxis'); ?> 
|
||||
<span id="requestAnrechnung-anrechnungGrundBerufTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundBerufTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Dokument Upload-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungGrundAllgemeinTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-inline panel-body">
|
||||
<div class="form-group">
|
||||
<input type="file" id="requestAnrechnung-uploadfile"
|
||||
name="uploadfile" accept=".pdf" size="50"
|
||||
required>
|
||||
</div>
|
||||
<span id="requestAnrechnung-uploadTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'uploadTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-question-circle-o" aria-hidden="true"></i>
|
||||
</span>
|
||||
<a class="pull-right <?php echo !empty($anrechnungData->dms_id) ? '' : 'hidden' ?>"
|
||||
id="requestAnrechnung-downloadDocLink"
|
||||
href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Herkunft der Kenntnisse -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<b><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></b> 
|
||||
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control" name="anmerkung" rows="1" id="requestAnrechnung-herkunftDerKenntnisse"
|
||||
maxlength="<?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?>" required><?php echo $anrechnungData->anmerkung; ?></textarea>
|
||||
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-herkunftDerKenntnisse-charCounter"><?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?></span></span></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Bestaetigung-->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="well" style="border:solid black 3px">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="bestaetigung" required>
|
||||
<b><?php echo $this->p->t('anrechnung', 'bestaetigungstext'); ?></b>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Button 'Anrechnung beantragen'-->
|
||||
<div class="pull-right">
|
||||
<input type="submit" id="requestAnrechnung-apply-anrechnung" class="btn btn-primary"
|
||||
value="<?php echo $this->p->t('anrechnung', 'anrechnungBeantragen'); ?>">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<br><br><br><br>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<div class="alert text-center">
|
||||
Status:
|
||||
<b><span class="text-uppercase" id="requestAnrechnung-status_kurzbz"
|
||||
<!-- Status panel -->
|
||||
<div class="alert text-center" id="requestAnrechnung-status">Status: <b><span class="text-uppercase" id="requestAnrechnung-status_kurzbz"
|
||||
data-status_kurzbz="<?php echo $anrechnungData->status_kurzbz ?>">
|
||||
<?php echo $anrechnungData->status; ?>
|
||||
</span></b>
|
||||
</div>
|
||||
<?php if ($is_expired): ?>
|
||||
<div class="alert alert-warning">
|
||||
<?php echo $this->p->t('global', 'bearbeitungGesperrt'); ?>
|
||||
<?php echo $is_expired && empty($antragData->anrechnung_id) ? ': ' . $this->p->t('anrechnung', 'deadlineUeberschritten') : ''; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<!-- Sperregrund panel (hidden by default) -->
|
||||
<div class="alert alert-danger text-center hidden" id="requestAnrechnung-sperre"
|
||||
data-anrechnung_id="<?php echo empty($anrechnungData->anrechnung_id) ? '' : $anrechnungData->anrechnung_id; ?>"
|
||||
data-expired="<?php echo json_encode($is_expired); ?>"
|
||||
data-blocked="<?php echo json_encode($is_blocked) ?>">
|
||||
</div>
|
||||
<br>
|
||||
<?php $this->load->view('lehre/anrechnung/requestAnrechnungImportant'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo form_close(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -34,7 +34,11 @@ $this->load->view(
|
||||
'lehrveranstaltung',
|
||||
'ects',
|
||||
'lektor',
|
||||
)
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'empfehlungPositivConfirmed',
|
||||
'empfehlungNegativConfirmed'
|
||||
)
|
||||
),
|
||||
'customCSSs' => array(
|
||||
'public/css/Tabulator.css'
|
||||
@@ -63,199 +67,240 @@ $this->load->view(
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span>
|
||||
</span> 
|
||||
<span class="reviewAnrechnungDetail-anrechnungInfoTooltip" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="reviewAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
|
||||
<td><?php echo $antragData->zgv ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></th>
|
||||
<td><?php echo $anrechnungData->anmerkung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></th>
|
||||
<td>
|
||||
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Antragsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'antrag'); ?></b></span>
|
||||
</span> 
|
||||
<span class="reviewAnrechnungDetail-anrechnungInfoTooltip" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('anrechnung', 'anrechnungInfoTooltipText'); ?>">
|
||||
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span class="pull-right"><?php echo $this->p->t('anrechnung', 'antragdatum'); ?>: <span
|
||||
id="reviewAnrechnung-status"><?php echo !empty($anrechnungData->anrechnung_id) ? $anrechnungData->insertamum : '-' ?></span></span>
|
||||
</div>
|
||||
<table class="panel-body table table-bordered table-condensed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('person', 'student')); ?></td>
|
||||
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('person', 'personenkennzeichen'); ?></td>
|
||||
<td><?php echo $antragData->matrikelnr ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></td>
|
||||
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></td>
|
||||
<td><?php echo $antragData->stg_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></td>
|
||||
<td><?php echo $antragData->lv_bezeichnung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'ects'); ?></td>
|
||||
<td><?php echo $antragData->ects ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('lehre', 'lektorInnen'); ?></td>
|
||||
<td>
|
||||
<?php $len = count($antragData->lektoren) - 1 ?>
|
||||
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
|
||||
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
|
||||
echo $key === $len ? '' : ', ' ?>
|
||||
<?php endforeach; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></td>
|
||||
<td><?php echo $anrechnungData->anmerkung ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></td>
|
||||
<td>
|
||||
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
|
||||
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Empfehlungsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></b></span>
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungVon'); ?>:
|
||||
<span id="reviewAnrechnungDetail-empfehlungVon"><?php echo $empfehlungData->empfehlung_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungdatum'); ?>:
|
||||
<span id="reviewAnrechnungDetail-empfehlungAm"><?php echo $empfehlungData->empfehlung_am ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Empfehlungsdaten -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default" id="reviewAnrechnungDetail-empfehlung" data-empfehlung="<?php echo json_encode($empfehlungData->empfehlung) ?>">
|
||||
<div class="panel-heading">
|
||||
<span class="text-uppercase"><b><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></b></span>
|
||||
<div class="pull-right">
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungVon'); ?>:
|
||||
<span id="reviewAnrechnungDetail-empfehlungVon"><?php echo $empfehlungData->empfehlung_von ?></span>
|
||||
 | 
|
||||
<?php echo $this->p->t('anrechnung', 'empfehlungdatum'); ?>:
|
||||
<span id="reviewAnrechnungDetail-empfehlungAm"><?php echo $empfehlungData->empfehlung_am ?></span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body" id="reviewAnrechnungDetail-empfehlungDetail">
|
||||
|
||||
<div class="panel panel-default panel-body <?php echo is_null($empfehlungData->empfehlung) ? '' : 'hidden' ?>"
|
||||
id="reviewAnrechnungDetail-empfehlungDetail-empfehlungIsNull">
|
||||
<?php echo $this->p->t('anrechnung', 'nochKeineEmpfehlung'); ?>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success <?php echo $empfehlungData->empfehlung === true ? '' : 'hidden' ?>"
|
||||
id="reviewAnrechnungDetail-empfehlungDetail-empfehlungIsTrue">
|
||||
<b><?php echo $this->p->t('anrechnung', 'empfehlungPositivConfirmed'); ?></b>
|
||||
</div>
|
||||
|
||||
<div class="<?php echo $empfehlungData->empfehlung === false ? '' : 'hidden' ?>"
|
||||
id="reviewAnrechnungDetail-empfehlungDetail-empfehlungIsFalse">
|
||||
<div class="alert alert-danger">
|
||||
<b><?php echo $this->p->t('anrechnung', 'empfehlungNegativConfirmed'); ?></b>
|
||||
</div>
|
||||
<div class="well"><b><?php echo $this->p->t('global', 'begruendung'); ?>
|
||||
: </b>
|
||||
<span id="reviewAnrechnungDetail-empfehlungDetail-begruendung"><?php echo htmlentities($empfehlungData->notiz) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form>
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<div class="panel panel-default panel-body" style="display: none"
|
||||
id="reviewAnrechnungDetail-begruendung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-danger text-danger"><?php echo $this->p->t('anrechnung', 'empfehlungNegativQuestion'); ?></h4>
|
||||
 
|
||||
<b> <?php echo $this->p->t('anrechnung', 'bitteBegruendungAngeben'); ?></b><br><br>
|
||||
<ul>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'empfehlungNegativPruefungNichtMoeglich'); ?></span> 
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'empfehlungNegativKenntnisseNichtGleichwertig'); ?></span> 
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li><?php echo $this->p->t('anrechnung', 'andereBegruendung'); ?></li>
|
||||
</ul>
|
||||
<br>
|
||||
<textarea class="form-control" name="begruendung"
|
||||
id="reviewAnrechnungDetail-begruendung"
|
||||
rows="2" required></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button Abbrechen & Bestaetigen-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-dont-recommend-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default panel-body" style="display: none"
|
||||
id="reviewAnrechnungDetail-empfehlung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-success text-success"><?php echo $this->p->t('anrechnung', 'empfehlungPositivQuestion'); ?></h4>
|
||||
 <?php echo $this->p->t('anrechnung', 'empfehlungPositivSubquestion'); ?>
|
||||
<br><br>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button Abbrechen & Bestaetigen-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-empfehlung-abbrechen"
|
||||
class="btn btn-default btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-recommend-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-dont-recommend-anrechnung-ask" class="btn btn-danger btn-w200"
|
||||
<?php echo is_null($empfehlungData->empfehlung) ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'nichtEmpfehlen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-recommend-anrechnung-ask" class="btn btn-primary btn-w200"
|
||||
<?php echo is_null($empfehlungData->empfehlung) ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<table class="table table-bordered table-condensed table-fixed">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungsanfrageAm')); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-empfehlungsanfrageAm">
|
||||
<?php echo $empfehlungData->empfehlungsanfrageAm; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'empfehlungsanfrageAn'); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-empfehlungsanfrageAn">
|
||||
<?php echo $empfehlungData->empfehlungsanfrageAn; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungAm')); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-empfehlungAm">
|
||||
<?php echo $empfehlungData->empfehlung_am ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlungVon')); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-empfehlungVon">
|
||||
<?php echo $empfehlungData->empfehlung_von ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'empfehlung'); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-empfehlung"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col-xs-4"><?php echo $this->p->t('global', 'begruendung'); ?></th>
|
||||
<td id="reviewAnrechnungDetail-empfehlungDetail-begruendung">
|
||||
<?php echo htmlentities($empfehlungData->begruendung) ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div>
|
||||
<label class="text-center">
|
||||
<?php echo ucfirst($this->p->t('global', 'notizDerSTGL')); ?>
|
||||
</label>
|
||||
<textarea rows="4" readonly><?php echo htmlentities($empfehlungData->notiz) ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form>
|
||||
<input type="hidden" name="anrechnung_id"
|
||||
value="<?php echo $anrechnungData->anrechnung_id ?>">
|
||||
<!-- Nicht empfehlen panel (hidden) -->
|
||||
<div class="panel panel-default panel-body" style="display: none" id="reviewAnrechnungDetail-begruendung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-danger text-danger"><?php echo $this->p->t('anrechnung', 'empfehlungNegativQuestion'); ?></h4>
|
||||
 
|
||||
<b> <?php echo $this->p->t('anrechnung', 'bitteBegruendungAngeben'); ?></b><br><br>
|
||||
<ul>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'empfehlungNegativPruefungNichtMoeglich'); ?></span> 
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><?php echo $this->p->t('anrechnung', 'empfehlungNegativKenntnisseNichtGleichwertig'); ?></span> 
|
||||
<span class="btn-copyIntoTextarea" data-toggle="tooltip"
|
||||
data-placement="right"
|
||||
title="<?php echo $this->p->t('ui', 'textUebernehmen'); ?>">
|
||||
<i class="fa fa-clipboard" aria-hidden="true"></i>
|
||||
</span>
|
||||
</li>
|
||||
<li><?php echo $this->p->t('anrechnung', 'andereBegruendung'); ?></li>
|
||||
</ul>
|
||||
<br>
|
||||
<textarea class="form-control" name="begruendung"
|
||||
id="reviewAnrechnungDetail-begruendung"
|
||||
rows="2" required></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Button Abbrechen & Bestaetigen-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-dont-recommend-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Empfehlen panel (hidden)-->
|
||||
<div class="panel panel-default panel-body" style="display: none" id="reviewAnrechnungDetail-empfehlung-panel">
|
||||
<div>
|
||||
<h4 class="panel panel-body panel-success text-success"><?php echo $this->p->t('anrechnung', 'empfehlungPositivQuestion'); ?></h4>
|
||||
 <?php echo $this->p->t('anrechnung', 'empfehlungPositivSubquestion'); ?>
|
||||
<br><br>
|
||||
</div>
|
||||
<br>
|
||||
<!-- Action Button Abbrechen & Bestaetigen-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-empfehlung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-recommend-anrechnung-confirm"
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Button Empfehlen / Nicht Empfehlen -->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungDetail-dont-recommend-anrechnung-ask" class="btn btn-danger btn-w200"
|
||||
type="button"
|
||||
<?php echo is_null($empfehlungData->empfehlung) ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'nichtEmpfehlen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungDetail-recommend-anrechnung-ask" class="btn btn-primary btn-w200"
|
||||
type="button"
|
||||
<?php echo is_null($empfehlungData->empfehlung) ? '' : 'disabled' ?>>
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseZero" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingZero">
|
||||
<div id="collapseZero" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingZero">
|
||||
<div class="panel-body">
|
||||
<?php echo $this->p->t('anrechnung', 'reviewAnrechnungInfoAntragVoraussetungenBody'); ?>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,8 @@ $this->load->view(
|
||||
'tablewidget' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'begruendung'
|
||||
'begruendung',
|
||||
'zgv'
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'nachweisdokumente',
|
||||
@@ -154,11 +155,12 @@ $this->load->view(
|
||||
<br>
|
||||
<!-- Action Button Abbrechen & Bestaetigen-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungUebersicht-begruendung-abbrechen" class="btn btn-default btn-w200">
|
||||
<button id="reviewAnrechnungUebersicht-begruendung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungUebersicht-dont-recommend-anrechnungen-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
@@ -172,11 +174,12 @@ $this->load->view(
|
||||
<br>
|
||||
<!-- Action Button 'Abbrechen'-->
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungUebersicht-empfehlung-abbrechen" class="btn btn-default btn-w200">
|
||||
<button id="reviewAnrechnungUebersicht-empfehlung-abbrechen"
|
||||
class="btn btn-default btn-w200" type="reset">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
<button id="reviewAnrechnungUebersicht-recommend-anrechnungen-confirm"
|
||||
class="btn btn-primary btn-w200">
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('ui', 'bestaetigen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
@@ -222,9 +225,11 @@ $this->load->view(
|
||||
<div class="col-xs-9">
|
||||
<div class="pull-right">
|
||||
<button id="reviewAnrechnungUebersicht-dont-recommend-anrechnungen-ask"
|
||||
class="btn btn-danger btn-w200"><?php echo ucfirst($this->p->t('anrechnung', 'nichtEmpfehlen')); ?></button>
|
||||
class="btn btn-danger btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'nichtEmpfehlen')); ?></button>
|
||||
<button id="reviewAnrechnungUebersicht-recommend-anrechnungen-ask"
|
||||
class="btn btn-primary btn-w200"><?php echo ucfirst($this->p->t('anrechnung', 'empfehlen')); ?></button>
|
||||
class="btn btn-primary btn-w200" type="button">
|
||||
<?php echo ucfirst($this->p->t('anrechnung', 'empfehlen')); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,6 +20,16 @@ $query = '
|
||||
begruendung.bezeichnung AS "begruendung",
|
||||
dmsversion.name AS "dokument_bezeichnung",
|
||||
anrechnung.anmerkung_student,
|
||||
(SELECT COALESCE(
|
||||
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . ',
|
||||
array_to_json(zgv.bezeichnung::varchar[])->>' . $LANGUAGE_INDEX . '
|
||||
) AS zgv
|
||||
FROM public.tbl_prestudent
|
||||
LEFT JOIN bis.tbl_zgv zgv USING (zgv_code)
|
||||
LEFT JOIN bis.tbl_zgvmaster zgvmaster USING (zgvmas_code)
|
||||
WHERE prestudent_id = anrechnung.prestudent_id
|
||||
) AS zgv,
|
||||
anrechnung.insertamum::date AS "antragsdatum",
|
||||
empfehlung_anrechnung,
|
||||
(SELECT status_kurzbz
|
||||
FROM lehre.tbl_anrechnungstatus
|
||||
@@ -33,7 +43,7 @@ $query = '
|
||||
JOIN public.tbl_person AS person USING (person_id)
|
||||
JOIN public.tbl_studiengang AS stg USING (studiengang_kz)
|
||||
JOIN lehre.tbl_lehrveranstaltung AS lv USING (lehrveranstaltung_id)
|
||||
JOIN campus.tbl_dms_version AS dmsversion USING (dms_id)
|
||||
LEFT JOIN campus.tbl_dms_version AS dmsversion USING (dms_id)
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus USING (anrechnung_id)
|
||||
JOIN lehre.tbl_anrechnung_begruendung AS begruendung USING (begruendung_id)
|
||||
)
|
||||
@@ -75,6 +85,8 @@ $filterWidgetArray = array(
|
||||
ucfirst($this->p->t('global', 'begruendung')),
|
||||
ucfirst($this->p->t('anrechnung', 'nachweisdokumente')),
|
||||
ucfirst($this->p->t('anrechnung', 'herkunft')),
|
||||
ucfirst($this->p->t('global', 'zgv')),
|
||||
ucfirst($this->p->t('anrechnung', 'antragdatum')),
|
||||
ucfirst($this->p->t('anrechnung', 'empfehlung')),
|
||||
'status_kurzbz',
|
||||
'Status'
|
||||
@@ -110,25 +122,27 @@ $filterWidgetArray = array(
|
||||
}
|
||||
}', // tabulator properties
|
||||
'datasetRepFieldsDefs' => '{
|
||||
anrechnung_id: {visible: false},
|
||||
lehrveranstaltung_id: {visible: false},
|
||||
begruendung_id: {visible: false},
|
||||
dms_id: {visible: false},
|
||||
studiensemester_kurzbz: {visible: false},
|
||||
studiengang_kz: {visible: false},
|
||||
anrechnung_id: {visible: false, headerFilter:"input"},
|
||||
lehrveranstaltung_id: {visible: false, headerFilter:"input"},
|
||||
begruendung_id: {visible: false, headerFilter:"input"},
|
||||
dms_id: {visible: false, headerFilter:"input"},
|
||||
studiensemester_kurzbz: {visible: false, headerFilter:"input"},
|
||||
studiengang_kz: {visible: false, headerFilter:"input"},
|
||||
stg_bezeichnung: {headerFilter:"input"},
|
||||
lv_bezeichnung: {headerFilter:"input"},
|
||||
ects: {headerFilter:"input", align:"center"},
|
||||
student: {headerFilter:"input"},
|
||||
begruendung: {headerFilter:"input"},
|
||||
zgv: {visible: false, headerFilter:"input"},
|
||||
dokument_bezeichnung: {headerFilter:"input", formatter:"link", formatterParams:{
|
||||
labelField:"dokument_bezeichnung",
|
||||
url:function(cell){return "'. current_url() .'/download?dms_id=" + cell.getData().dms_id},
|
||||
target:"_blank"
|
||||
}},
|
||||
anmerkung_student: {headerFilter:"input"},
|
||||
antragsdatum: {align:"center", headerFilter:"input", mutator: mut_formatStringDate},
|
||||
empfehlung_anrechnung: {headerFilter:"input", align:"center", formatter: format_empfehlung_anrechnung, headerFilterFunc: hf_filterTrueFalse},
|
||||
status_kurzbz: {visible: false},
|
||||
status_kurzbz: {visible: false, headerFilter:"input"},
|
||||
status_bezeichnung: {headerFilter:"input"}
|
||||
}', // col properties
|
||||
);
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
echo $this->udflib->UDFWidget(
|
||||
array(
|
||||
UDFLib::UDF_UNIQUE_ID => 'fasPersonUDFs',
|
||||
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
|
||||
UDFLib::SCHEMA_ARG_NAME => 'public',
|
||||
UDFLib::TABLE_ARG_NAME => 'tbl_person',
|
||||
UDFLib::PRIMARY_KEY_NAME => 'person_id',
|
||||
@@ -70,7 +69,6 @@
|
||||
echo $this->udflib->UDFWidget(
|
||||
array(
|
||||
UDFLib::UDF_UNIQUE_ID => 'fasPrestudentUDFs',
|
||||
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person',
|
||||
UDFLib::SCHEMA_ARG_NAME => 'public',
|
||||
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
|
||||
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
|
||||
@@ -109,3 +107,4 @@
|
||||
</body>
|
||||
|
||||
<?php $this->load->view("templates/footer"); ?>
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<?php foreach ($notizenbewerbung as $notiz): ?>
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?>
|
||||
<?php echo date_format(date_create($notiz->insertnotiz), 'd.m.Y H:i:s') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php (!isset($notiz->kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?>
|
||||
|
||||
@@ -184,6 +184,32 @@
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgNichtAbgeschickt",
|
||||
(
|
||||
SELECT COUNT(*)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND (sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
OR
|
||||
sg.studiengang_kz in('.$ADDITIONAL_STG.')
|
||||
)
|
||||
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
|
||||
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
|
||||
(SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '.$STUDIENSEMESTER.'))
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "AnzahlStgNichtAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
@@ -322,6 +348,7 @@
|
||||
ucfirst($this->p->t('global', 'abgeschickt')).' ('.$this->p->t('global', 'anzahl').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'gesendet').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'nichtGesendet').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'anzahlNichtGesendet').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')',
|
||||
'ZGV Nation BA',
|
||||
'ZGV Nation MA',
|
||||
|
||||
@@ -341,7 +341,6 @@
|
||||
echo $this->udflib->UDFWidget(
|
||||
array(
|
||||
UDFLib::UDF_UNIQUE_ID => 'infocenterPrestudentUDFs_'.$zgvpruefung->prestudent_id,
|
||||
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'infocenter',
|
||||
UDFLib::SCHEMA_ARG_NAME => 'public',
|
||||
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
|
||||
UDFLib::PRIMARY_KEY_NAME => 'prestudent_id',
|
||||
@@ -414,7 +413,7 @@
|
||||
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
|
||||
</option>
|
||||
<?php foreach ($intstatusgruende as $statusgrund): ?>
|
||||
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
|
||||
<option value="<?php echo $statusgrund->statusgrund_id ?>" data-kurzbz="<?php echo $statusgrund->statusgrund_kurzbz ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
@@ -553,3 +552,4 @@
|
||||
endforeach; // end foreach zgvpruefungen
|
||||
?>
|
||||
</div><!-- /.panel-group -->
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Fehler Monitoring',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'jquerycheckboxes' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'tablesorter' => true,
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/issues/issuesDataset.css', 'public/css/sbadmin2/tablesort_bootstrap.css'),
|
||||
'customJSs' => array('public/js/issues/issuesDataset.js', 'public/js/bootstrapper.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">
|
||||
Fehler Monitoring
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/issues/issuesData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,173 @@
|
||||
<?php
|
||||
|
||||
$PERSON_ID = getAuthPersonId();
|
||||
$ALL_FUNKTIONEN_OE_KURZBZ = "('" . implode("','", array_keys($all_funktionen_oe_kurzbz)) . "')";
|
||||
$ALL_OE_KURZBZ_BERECHTIGT = "('" . implode("','", $all_oe_kurzbz_berechtigt) . "')";
|
||||
$RELEVANT_PRESTUDENT_STATUS = "('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')";
|
||||
|
||||
// get issues for the oes of the uid or for the persons (students, oe-zuordnung) of the oes
|
||||
$query = "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
|
||||
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
|
||||
ftyp.bezeichnung_mehrsprachig[1] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[1] AS \"Fehlerstatus\",
|
||||
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
|
||||
fr.fehlertyp_kurzbz as \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
|
||||
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\"
|
||||
FROM system.tbl_issue iss
|
||||
JOIN system.tbl_fehler fr USING (fehlercode)
|
||||
JOIN system.tbl_fehlertyp ftyp USING (fehlertyp_kurzbz)
|
||||
JOIN system.tbl_issue_status stat USING (status_kurzbz)
|
||||
LEFT JOIN public.tbl_person pers ON iss.person_id = pers.person_id
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM system.tbl_fehler_zustaendigkeiten zst
|
||||
WHERE fehlercode = iss.fehlercode
|
||||
AND (
|
||||
person_id = ".$PERSON_ID." /* person_id in fehler_zustaendigkeit for individual persons */";
|
||||
|
||||
if (!isEmptyArray($all_funktionen_oe_kurzbz))
|
||||
{
|
||||
$query .= " OR (zst.oe_kurzbz IN $ALL_FUNKTIONEN_OE_KURZBZ AND zst.funktion_kurzbz IS NULL) /* if oe is specified in fehler_zustaendigkeiten */";
|
||||
|
||||
// check for each oe for each function if zustaendig
|
||||
foreach ($all_funktionen_oe_kurzbz as $oe_kurzbz => $funktionen_kurzbz)
|
||||
{
|
||||
foreach ($funktionen_kurzbz as $funktion_kurzbz)
|
||||
{
|
||||
$query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$query .= "))"; // close AND of exists, and exists
|
||||
|
||||
// show issue if it is assigend to oe of logged in user or to student of oe of logged in user
|
||||
if (!isEmptyArray($all_oe_kurzbz_berechtigt))
|
||||
{
|
||||
$query .= " OR iss.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT /* if issue is for oe */";
|
||||
|
||||
$query .= " OR (iss.oe_kurzbz IS NULL AND EXISTS ( /* if person_id of issue is a student of studiengang oe */
|
||||
SELECT 1 FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE person_id = iss.person_id
|
||||
AND stg.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT
|
||||
AND pss.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
|
||||
AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
|
||||
FROM public.tbl_prestudentstatus ps_finished
|
||||
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
|
||||
WHERE prestudent_id = ps.prestudent_id
|
||||
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
|
||||
AND datum::date + interval '2 months' < NOW()
|
||||
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
|
||||
AND person_id = ps.person_id
|
||||
AND prestudent_id <> ps_finished.prestudent_id
|
||||
AND tbl_studiensemester.start::date > sem_finished.start::date)
|
||||
)
|
||||
)
|
||||
)";
|
||||
}
|
||||
|
||||
$query .= " ORDER BY CASE
|
||||
WHEN iss.status_kurzbz = '".IssuesLib::STATUS_NEU."' THEN 0
|
||||
WHEN iss.status_kurzbz = '".IssuesLib::STATUS_IN_BEARBEITUNG."' THEN 1
|
||||
ELSE 2
|
||||
END,
|
||||
CASE
|
||||
WHEN fehlertyp_kurzbz = '".IssuesLib::ERRORTYPE_CODE."' THEN 0
|
||||
WHEN fehlertyp_kurzbz = '".IssuesLib::WARNINGTYPE_CODE."' THEN 1
|
||||
ELSE 2
|
||||
END,
|
||||
datum DESC, fehlercode, issue_id DESC";
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'app' => 'core',
|
||||
'datasetName' => 'issues',
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'tableUniqueId' => 'issues',
|
||||
'requiredPermissions' => 'admin',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'checkboxes' => 'issue_id',
|
||||
'columnsAliases' => array(
|
||||
'ID',
|
||||
'Fehlercode',
|
||||
'Fehlercode extern',
|
||||
'Datum',
|
||||
'Inhalt',
|
||||
'Inhalt extern',
|
||||
'PersonId',
|
||||
'OE',
|
||||
'Fehlertyp',
|
||||
'Fehlerstatus',
|
||||
'Verarbeitet von',
|
||||
'Verarbeitet am',
|
||||
'Applikation',
|
||||
'Fehlertypcode',
|
||||
'Statuscode',
|
||||
'Vorname',
|
||||
'Nachname'
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
if ($datasetRaw->{'Fehlercode extern'} == null)
|
||||
{
|
||||
$datasetRaw->{'Fehlercode extern'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Inhalt'} == null)
|
||||
{
|
||||
$datasetRaw->{'Inhalt'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Inhalt extern'} == null)
|
||||
{
|
||||
$datasetRaw->{'Inhalt extern'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'PersonId'} == null)
|
||||
{
|
||||
$datasetRaw->{'PersonId'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'OE'} == null)
|
||||
{
|
||||
$datasetRaw->{'OE'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Verarbeitet am'} == null)
|
||||
{
|
||||
$datasetRaw->{'Verarbeitet am'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'Verarbeitet von'} == null)
|
||||
{
|
||||
$datasetRaw->{'Verarbeitet von'} = '-';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
$mark = '';
|
||||
|
||||
if ($datasetRaw->Statuscode == IssuesLib::STATUS_BEHOBEN)
|
||||
$mark = "text-success";
|
||||
elseif ($datasetRaw->Statuscode == IssuesLib::STATUS_NEU || $datasetRaw->Statuscode == IssuesLib::STATUS_IN_BEARBEITUNG)
|
||||
{
|
||||
if ($datasetRaw->Fehlertypcode == IssuesLib::ERRORTYPE_CODE)
|
||||
{
|
||||
$mark = "text-danger";
|
||||
}
|
||||
elseif ($datasetRaw->Fehlertypcode == IssuesLib::WARNINGTYPE_CODE)
|
||||
{
|
||||
$mark = "text-warning";
|
||||
}
|
||||
}
|
||||
|
||||
return $mark;
|
||||
}
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
@@ -44,6 +44,8 @@
|
||||
<head>
|
||||
<title><?php printPageTitle($title); ?></title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<?php
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::HTML_NAME); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REQUIRED); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
|
||||
<?php
|
||||
$checked = '';
|
||||
if (${CheckboxWidget::VALUE_FIELD} === true)
|
||||
@@ -38,4 +39,5 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_VALUE); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
|
||||
>
|
||||
<?php
|
||||
$elements = ${DropdownWidget::WIDGET_DATA_ELEMENTS_ARRAY_NAME};
|
||||
@@ -72,3 +73,4 @@
|
||||
</div>
|
||||
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
|
||||
|
||||
@@ -29,9 +29,11 @@
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_LENGTH); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
|
||||
><?php echo ${TextareaWidget::TEXT}; ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
|
||||
|
||||
@@ -31,10 +31,12 @@
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::MAX_LENGTH); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::REGEX); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::TITLE); ?>
|
||||
<?php HTMLWidget::printAttribute(${HTMLWidget::HTML_ARG_NAME}, HTMLWidget::DISABLED, false); ?>
|
||||
value="<?php echo ${TextfieldWidget::VALUE}; ?>"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
<?php HTMLWidget::printEndBlock(${HTMLWidget::HTML_ARG_NAME}); ?>
|
||||
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
class HTMLWidget extends Widget
|
||||
{
|
||||
// The name of the array present in the data array given to the view that will render this widget
|
||||
const HTML_ARG_NAME = 'HTML';
|
||||
const HTML_ARG_NAME = 'HTML';
|
||||
const HTML_DEFAULT_VALUE = ''; // Default value of the html element
|
||||
const HTML_NAME = 'name'; // HTML name attribute
|
||||
const HTML_ID = 'id'; // HTML id attribute
|
||||
|
||||
// External block definition
|
||||
const EXTERNAL_BLOCK = 'externalBlock'; // External block name
|
||||
const EXTERNAL_START_BLOCK_HTML_TAG = '<div>'; // External block start tag
|
||||
const EXTERNAL_END_BLOCK_HTML_TAG = '</div>'; // External block end tag
|
||||
|
||||
// HTML attributes
|
||||
const LABEL = 'title';
|
||||
const HTML_NAME = 'name'; // HTML name attribute
|
||||
const HTML_ID = 'id'; // HTML id attribute
|
||||
|
||||
// External block definition
|
||||
const EXTERNAL_BLOCK = 'externalBlock'; // External block name
|
||||
const EXTERNAL_START_BLOCK_HTML_TAG = '<div>'; // External block start tag
|
||||
const EXTERNAL_END_BLOCK_HTML_TAG = '</div>'; // External block end tag
|
||||
|
||||
// HTML attributes
|
||||
const LABEL = 'title';
|
||||
const REGEX = 'regex';
|
||||
const TITLE = 'description';
|
||||
const REQUIRED = 'required-field';
|
||||
@@ -26,11 +26,12 @@ class HTMLWidget extends Widget
|
||||
const MAX_LENGTH = 'max-length';
|
||||
const MIN_LENGTH = 'min-length';
|
||||
const PLACEHOLDER = 'placeholder';
|
||||
const DISABLED = 'disabled';
|
||||
|
||||
/**
|
||||
* It gets also the htmlArgs array as parameter, it will be used to set the HTML properties
|
||||
*/
|
||||
public function __construct($name, $args = array(), $htmlArgs = array())
|
||||
/**
|
||||
* It gets also the htmlArgs array as parameter, it will be used to set the HTML properties
|
||||
*/
|
||||
public function __construct($name, $args = array(), $htmlArgs = array())
|
||||
{
|
||||
parent::__construct($name, $args);
|
||||
|
||||
@@ -38,11 +39,11 @@ class HTMLWidget extends Widget
|
||||
$this->_setHtmlProperties($htmlArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialising html properties, such as the id and name attributes of the HTML element
|
||||
*/
|
||||
private function _setHtmlProperties($htmlArgs)
|
||||
{
|
||||
/**
|
||||
* Initialising html properties, such as the id and name attributes of the HTML element
|
||||
*/
|
||||
private function _setHtmlProperties($htmlArgs)
|
||||
{
|
||||
// If $htmlArgs wasn't already stored in $this->_args
|
||||
if (!isset($this->_args[HTMLWidget::HTML_ARG_NAME]))
|
||||
{
|
||||
@@ -58,9 +59,9 @@ class HTMLWidget extends Widget
|
||||
$this->_args[HTMLWidget::HTML_ARG_NAME][$argName] = $argValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Prints an attribute name and eventually also the value extracted from $htmlArgs
|
||||
* Set $isValuePresent to false the value should not be displayed
|
||||
*/
|
||||
@@ -113,3 +114,4 @@ class HTMLWidget extends Widget
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
*/
|
||||
class UDFWidget extends HTMLWidget
|
||||
{
|
||||
private $_requiredPermissions; // The required permissions to use this UDF widget
|
||||
|
||||
private $_schema; // Schema name
|
||||
private $_table; // Table name
|
||||
private $_primaryKeyName; // Primary key name
|
||||
@@ -26,26 +24,16 @@ class UDFWidget extends HTMLWidget
|
||||
|
||||
$this->_initUDFWidget($args); // checks parameters and initialize properties
|
||||
|
||||
// Let's start if it's allowed
|
||||
// NOTE: If it is NOT allowed then no data are loaded
|
||||
if ($this->udflib->isAllowed($this->_requiredPermissions))
|
||||
{
|
||||
$this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]);
|
||||
}
|
||||
$this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by the WidgetLib, it renders the HTML of the UDF
|
||||
*/
|
||||
public function display($widgetData)
|
||||
public function display($widgetData)
|
||||
{
|
||||
// Let's start if it's allowed
|
||||
// NOTE: If it is NOT allowed then no data are loaded
|
||||
if ($this->_ci->udflib->isAllowed($this->_requiredPermissions))
|
||||
{
|
||||
$this->_ci->udflib->displayUDFWidget($widgetData);
|
||||
}
|
||||
}
|
||||
$this->_ci->udflib->displayUDFWidget($widgetData);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
@@ -60,18 +48,11 @@ class UDFWidget extends HTMLWidget
|
||||
// If here then everything is ok
|
||||
|
||||
// Initialize class properties
|
||||
$this->_requiredPermissions = null;
|
||||
$this->_schema = null;
|
||||
$this->_table = null;
|
||||
$this->_primaryKeyName = null;
|
||||
$this->_primaryKeyValue = null;
|
||||
|
||||
// Retrieved the required permissions parameter if present
|
||||
if (isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER]))
|
||||
{
|
||||
$this->_requiredPermissions = $args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER];
|
||||
}
|
||||
|
||||
// Retrieved the
|
||||
if (isset($args[UDFLib::SCHEMA_ARG_NAME]))
|
||||
{
|
||||
@@ -113,11 +94,6 @@ class UDFWidget extends HTMLWidget
|
||||
show_error('The parameter "'.UDFLib::UDF_UNIQUE_ID.'" must be specified');
|
||||
}
|
||||
|
||||
if (!isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER]))
|
||||
{
|
||||
show_error('The parameter "'.UDFLib::REQUIRED_PERMISSIONS_PARAMETER.'" must be specified');
|
||||
}
|
||||
|
||||
if (!isset($args[UDFLib::SCHEMA_ARG_NAME]))
|
||||
{
|
||||
show_error('The parameter "'.UDFLib::SCHEMA_ARG_NAME.'" must be specified');
|
||||
@@ -149,7 +125,6 @@ class UDFWidget extends HTMLWidget
|
||||
$this->udflib->setSession(
|
||||
array(
|
||||
UDFLib::UDF_UNIQUE_ID => $udfUniqueId, // table unique id
|
||||
UDFLib::REQUIRED_PERMISSIONS_PARAMETER => $this->_requiredPermissions, //
|
||||
UDFLib::SCHEMA_ARG_NAME => $this->_schema, //
|
||||
UDFLib::TABLE_ARG_NAME => $this->_table, //
|
||||
UDFLib::PRIMARY_KEY_NAME => $this->_primaryKeyName, //
|
||||
@@ -158,3 +133,4 @@ class UDFWidget extends HTMLWidget
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,248 +1,248 @@
|
||||
<?php
|
||||
/* Copyright (C) 2009 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
|
||||
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
|
||||
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
*/
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/person.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/student.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
|
||||
|
||||
$getuid=get_uid();
|
||||
$uid=$getuid;
|
||||
|
||||
if(isset($_GET['uid']))
|
||||
{
|
||||
//Studentenansicht
|
||||
$uid = $_GET['uid'];
|
||||
//Rechte Pruefen
|
||||
$allowed=false;
|
||||
|
||||
$student = new student();
|
||||
if(!$student->load($uid))
|
||||
die($p->t('global/fehlerBeimErmittelnDerUID'));
|
||||
|
||||
$stg_obj = new studiengang();
|
||||
if(!$stg_obj->load($student->studiengang_kz))
|
||||
die($p->t('global/fehlerBeimLesenAusDatenbank'));
|
||||
|
||||
//Berechtigung ueber das Berechtigungssystem
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($getuid);
|
||||
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
|
||||
$allowed=true;
|
||||
|
||||
//oder Lektor mit Betreuung dieses Studenten
|
||||
$qry = "SELECT 1
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
|
||||
WHERE
|
||||
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
|
||||
vw_benutzer.uid=".$db->db_add_param($getuid).";";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($db->db_num_rows($result)>0)
|
||||
{
|
||||
$allowed=true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$allowed)
|
||||
{
|
||||
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
|
||||
}
|
||||
}
|
||||
$htmlstr = '';
|
||||
$htmlstr1 = '';
|
||||
$vorname='';
|
||||
$nachname='';
|
||||
$zweitbetreuer = '';
|
||||
|
||||
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
|
||||
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
|
||||
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
|
||||
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
|
||||
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
|
||||
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
|
||||
tbl_projektbetreuer.person_id AS betreuer_person_id,
|
||||
tbl_projekttyp.bezeichnung AS prjbez, *,
|
||||
lehre.tbl_projektbetreuer.note as note,
|
||||
public.tbl_benutzer.aktiv as aktiv,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
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_projektarbeit.student_uid=".$db->db_add_param($uid)."
|
||||
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
|
||||
|
||||
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
|
||||
if(!$erg=$db->db_query($sql_query))
|
||||
{
|
||||
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
|
||||
$htmlstr .= "<thead><tr>\n";
|
||||
$htmlstr .= "
|
||||
<th>".$p->t('abgabetool/details')."</th>
|
||||
<th>".$p->t('lvplan/sem')."</th>
|
||||
<th>".$p->t('lvplan/stg')."</th>
|
||||
<th>".$p->t('global/mail')."</th>
|
||||
<th>".$p->t('abgabetool/betreuer')."</th>
|
||||
<th>".$p->t('abgabetool/typ')."</th>
|
||||
<th>".$p->t('abgabetool/titel')."</th>
|
||||
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
|
||||
$htmlstr .= "</tr></thead><tbody>\n";
|
||||
$i = 0;
|
||||
while($row=$db->db_fetch_object($erg))
|
||||
{
|
||||
$htmlstr1 = '';
|
||||
$zweitbetreuer_obj = new person();
|
||||
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
|
||||
{
|
||||
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
|
||||
}
|
||||
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
|
||||
$vorname=$row->vorname;
|
||||
$nachname=$row->nachname;
|
||||
$uid=$row->uid;
|
||||
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
|
||||
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
|
||||
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
|
||||
$htmlstr1 .= $zweitbetreuer;
|
||||
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
|
||||
|
||||
if (is_null($row->note) && $row->aktiv === 't')
|
||||
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
|
||||
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
|
||||
{
|
||||
$htmlstr .= "<td>";
|
||||
|
||||
if (!is_null($row->babgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
|
||||
|
||||
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "/";
|
||||
|
||||
if (!is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
|
||||
|
||||
$htmlstr .= "</td>";
|
||||
} else
|
||||
{
|
||||
$htmlstr .= "<td></td>";
|
||||
}
|
||||
|
||||
|
||||
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
|
||||
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
|
||||
$htmlstr .= " <td align= center>";
|
||||
|
||||
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
|
||||
JOIN public.tbl_benutzer USING(person_id)
|
||||
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
|
||||
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
|
||||
if($result_betr=$db->db_query($qry_betr))
|
||||
{
|
||||
if($row_betr=$db->db_fetch_object($result_betr))
|
||||
{
|
||||
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlstr.="UID unknown!";
|
||||
}
|
||||
}
|
||||
$htmlstr .= " </td>";
|
||||
$htmlstr .= " <td>".$htmlstr1." </td>\n";
|
||||
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
|
||||
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
|
||||
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
|
||||
$htmlstr .= " </tr>\n";
|
||||
$i++;
|
||||
}
|
||||
$htmlstr .= "</tbody></table>\n";
|
||||
}
|
||||
echo '
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Abgabesystem_Studentensicht</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[4,0]],
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>';
|
||||
|
||||
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
|
||||
if(trim($uid)!='')
|
||||
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0> ".$p->t('global/handbuch')."</a></div>";
|
||||
echo '</h1>';
|
||||
echo $htmlstr;
|
||||
echo '</body>
|
||||
</html>';
|
||||
?>
|
||||
<?php
|
||||
/* Copyright (C) 2009 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
|
||||
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
|
||||
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
*/
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/person.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/student.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
|
||||
|
||||
$getuid=get_uid();
|
||||
$uid=$getuid;
|
||||
|
||||
if(isset($_GET['uid']))
|
||||
{
|
||||
//Studentenansicht
|
||||
$uid = $_GET['uid'];
|
||||
//Rechte Pruefen
|
||||
$allowed=false;
|
||||
|
||||
$student = new student();
|
||||
if(!$student->load($uid))
|
||||
die($p->t('global/fehlerBeimErmittelnDerUID'));
|
||||
|
||||
$stg_obj = new studiengang();
|
||||
if(!$stg_obj->load($student->studiengang_kz))
|
||||
die($p->t('global/fehlerBeimLesenAusDatenbank'));
|
||||
|
||||
//Berechtigung ueber das Berechtigungssystem
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($getuid);
|
||||
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
|
||||
$allowed=true;
|
||||
|
||||
//oder Lektor mit Betreuung dieses Studenten
|
||||
$qry = "SELECT 1
|
||||
FROM
|
||||
lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
|
||||
WHERE
|
||||
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
|
||||
vw_benutzer.uid=".$db->db_add_param($getuid).";";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($db->db_num_rows($result)>0)
|
||||
{
|
||||
$allowed=true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$allowed)
|
||||
{
|
||||
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
|
||||
}
|
||||
}
|
||||
$htmlstr = '';
|
||||
$htmlstr1 = '';
|
||||
$vorname='';
|
||||
$nachname='';
|
||||
$zweitbetreuer = '';
|
||||
|
||||
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
|
||||
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
|
||||
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
|
||||
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
|
||||
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
|
||||
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
|
||||
tbl_projektbetreuer.person_id AS betreuer_person_id,
|
||||
tbl_projekttyp.bezeichnung AS prjbez, *,
|
||||
lehre.tbl_projektbetreuer.note as note,
|
||||
public.tbl_benutzer.aktiv as aktiv,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
|
||||
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
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_projektarbeit.student_uid=".$db->db_add_param($uid)."
|
||||
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
|
||||
|
||||
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
|
||||
if(!$erg=$db->db_query($sql_query))
|
||||
{
|
||||
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
|
||||
$htmlstr .= "<thead><tr>\n";
|
||||
$htmlstr .= "
|
||||
<th>".$p->t('abgabetool/details')."</th>
|
||||
<th>".$p->t('lvplan/sem')."</th>
|
||||
<th>".$p->t('lvplan/stg')."</th>
|
||||
<th>".$p->t('global/mail')."</th>
|
||||
<th>".$p->t('abgabetool/betreuer')."</th>
|
||||
<th>".$p->t('abgabetool/typ')."</th>
|
||||
<th>".$p->t('abgabetool/titel')."</th>
|
||||
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
|
||||
$htmlstr .= "</tr></thead><tbody>\n";
|
||||
$i = 0;
|
||||
while($row=$db->db_fetch_object($erg))
|
||||
{
|
||||
$htmlstr1 = '';
|
||||
$zweitbetreuer_obj = new person();
|
||||
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
|
||||
{
|
||||
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
|
||||
}
|
||||
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
|
||||
$vorname=$row->vorname;
|
||||
$nachname=$row->nachname;
|
||||
$uid=$row->uid;
|
||||
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
|
||||
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
|
||||
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
|
||||
$htmlstr1 .= $zweitbetreuer;
|
||||
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
|
||||
|
||||
if (is_null($row->note) && $row->aktiv === 't')
|
||||
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
|
||||
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
|
||||
{
|
||||
$htmlstr .= "<td>";
|
||||
|
||||
if (!is_null($row->babgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
|
||||
|
||||
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "/";
|
||||
|
||||
if (!is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
|
||||
|
||||
$htmlstr .= "</td>";
|
||||
} else
|
||||
{
|
||||
$htmlstr .= "<td></td>";
|
||||
}
|
||||
|
||||
|
||||
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
|
||||
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
|
||||
$htmlstr .= " <td align= center>";
|
||||
|
||||
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
|
||||
JOIN public.tbl_benutzer USING(person_id)
|
||||
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
|
||||
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
|
||||
if($result_betr=$db->db_query($qry_betr))
|
||||
{
|
||||
if($row_betr=$db->db_fetch_object($result_betr))
|
||||
{
|
||||
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlstr.="UID unknown!";
|
||||
}
|
||||
}
|
||||
$htmlstr .= " </td>";
|
||||
$htmlstr .= " <td>".$htmlstr1." </td>\n";
|
||||
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
|
||||
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
|
||||
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
|
||||
$htmlstr .= " </tr>\n";
|
||||
$i++;
|
||||
}
|
||||
$htmlstr .= "</tbody></table>\n";
|
||||
}
|
||||
echo '
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Abgabesystem_Studentensicht</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[4,0]],
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>';
|
||||
|
||||
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
|
||||
if(trim($uid)!='')
|
||||
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0> ".$p->t('global/handbuch')."</a></div>";
|
||||
echo '</h1>';
|
||||
echo $htmlstr;
|
||||
echo '</body>
|
||||
</html>';
|
||||
?>
|
||||
|
||||
@@ -166,13 +166,14 @@ $qry = 'SELECT
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
|
||||
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
|
||||
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
|
||||
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_note USING (note)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
|
||||
WHERE
|
||||
@@ -213,8 +214,8 @@ if($result = $db->db_query($qry))
|
||||
if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing
|
||||
$zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')';
|
||||
|
||||
if($row->note==6) //angerechnet
|
||||
$zusatz.='(ar)';
|
||||
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
|
||||
$zusatz.= '('. $row->anmerkung. ')';
|
||||
|
||||
if($row->mitarbeiter_uid!='') //mitarbeiter
|
||||
$zusatz.='(ma)';
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* Manfred Kindl <kindlm@technikum.wien.at>
|
||||
* Gerald Raab <raab@technikum-wien.at>
|
||||
* Alexei Karpenko <karpenko@technikum-wien.at>
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
@@ -44,6 +45,7 @@ require_once('../../../include/bisverwendung.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
|
||||
|
||||
$sprache = getSprache();
|
||||
$p=new phrasen($sprache);
|
||||
$sprache_obj = new sprache();
|
||||
@@ -88,7 +90,7 @@ $fieldheadings = array(
|
||||
'oe1' => $p->t("zeitaufzeichnung/oe"), 'oe2' => $p->t("zeitaufzeichnung/oe").'2', 'aktivitaet' => $p->t("zeitaufzeichnung/aktivitaet"),
|
||||
'service' => $p->t("zeitaufzeichnung/service"), 'start' => $p->t("zeitaufzeichnung/start"), 'ende' => $p->t("zeitaufzeichnung/ende"),
|
||||
'dauer' => $p->t("zeitaufzeichnung/dauer"), 'kunde' => $p->t("zeitaufzeichnung/kunde"), 'beschreibung' => $p->t("global/beschreibung"), 'aktion' => $p->t("global/aktion"),
|
||||
'datum' => $p->t("global/datum")
|
||||
'datum' => $p->t("global/datum"),'homeoffice' => $p->t("zeitaufzeichnung/homeoffice")
|
||||
);
|
||||
|
||||
if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung'))
|
||||
@@ -131,10 +133,13 @@ $bis_datum = (isset($_REQUEST['bis_datum'])?$_REQUEST['bis_datum']:date('d.m.Y')
|
||||
$bis_uhrzeit = (isset($_POST['bis_uhrzeit'])?$_POST['bis_uhrzeit']:date('H:i',mktime(date('H'), date('i')+10)));
|
||||
$bis = $bis_datum.' '.$bis_uhrzeit;
|
||||
|
||||
$homeoffice = (isset($_POST['homeoffice'])?true:false);
|
||||
$pause_von = (isset($_POST['pause_von'])?$_POST['pause_von']:date('H:i'));
|
||||
$pause_bis = (isset($_POST['pause_bis'])?$_POST['pause_bis']:date('H:i'));
|
||||
$von_pause = $von_datum.' '.$pause_von;
|
||||
$bis_pause = $bis_datum.' '.$pause_bis;
|
||||
$homeofficeChecked = '';
|
||||
//$reload = false;
|
||||
|
||||
$beschreibung = (isset($_POST['beschreibung'])?$_POST['beschreibung']:'');
|
||||
$service_id = (isset($_POST['service_id'])?$_POST['service_id']:'');
|
||||
@@ -221,7 +226,7 @@ echo '
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
resetProjekt()
|
||||
//resetProjekt()
|
||||
$( ".datepicker_datum" ).datepicker({
|
||||
changeMonth: true,
|
||||
changeYear: true,
|
||||
@@ -274,10 +279,38 @@ echo '
|
||||
$("#projekt").change(
|
||||
function()
|
||||
{
|
||||
getProjektphasen($(this).val());
|
||||
var uid = $("#uidpass").val();
|
||||
getProjektphasen($(this).val(),uid);
|
||||
}
|
||||
)
|
||||
|
||||
useCheckedDate();
|
||||
|
||||
$("#von_datum").change(
|
||||
function()
|
||||
{
|
||||
var uid = $("#uidpass").val();
|
||||
var Datum = $(this).val();
|
||||
Tag=Datum.substring(0,2);
|
||||
Monat=Datum.substring(3,5);
|
||||
Jahr=Datum.substring(6,10);
|
||||
var day = Jahr + "-" + Monat + "-" + Tag;
|
||||
checkBisverwendung(day,uid);
|
||||
}
|
||||
)
|
||||
|
||||
function isVisible()
|
||||
{
|
||||
resetPhasen()
|
||||
}
|
||||
|
||||
$("#triggerPhasenReset").bind("isVisible", isVisible);
|
||||
|
||||
$("#triggerPhasenReset").show("slow", function()
|
||||
{
|
||||
$(this).trigger("isVisible");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function setbisdatum()
|
||||
@@ -516,14 +549,20 @@ echo '
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function resetProjekt()
|
||||
{
|
||||
$("#projekt").val("");
|
||||
$("#projektphaseformgroup").hide();
|
||||
}
|
||||
|
||||
function getProjektphasen(projekt_kurzbz)
|
||||
function resetPhasen()
|
||||
{
|
||||
var uid = $("#uidpass").val();
|
||||
getProjektphasen($("#projekt").val(),uid);
|
||||
}
|
||||
|
||||
function getProjektphasen(projekt_kurzbz, uid)
|
||||
{
|
||||
$.ajax
|
||||
(
|
||||
@@ -533,7 +572,9 @@ echo '
|
||||
dataType: "json",
|
||||
data:
|
||||
{
|
||||
"uid":uid,
|
||||
"projekt_kurzbz":projekt_kurzbz
|
||||
|
||||
},
|
||||
success: function(json)
|
||||
{
|
||||
@@ -572,6 +613,48 @@ echo '
|
||||
);
|
||||
}
|
||||
|
||||
function appendProjektphasenzeiten(projektphase_id)
|
||||
{
|
||||
$.ajax
|
||||
(
|
||||
{
|
||||
type: "GET",
|
||||
url: "zeitaufzeichnung_projektphasenzeiten.php",
|
||||
dataType: "json",
|
||||
data:
|
||||
{
|
||||
"projektphase_id":projektphase_id
|
||||
|
||||
},
|
||||
success: function(json)
|
||||
{
|
||||
//append Projektphasenzeiten if any
|
||||
if (json.length > 0)
|
||||
{
|
||||
var projphasenhtml = "";
|
||||
for (var i = 0; i < json.length; i++)
|
||||
{
|
||||
projphasenhtml += "<option value = \'" + json[i].projektphase_id + "\'>";
|
||||
projphasenhtml += json[i].bezeichnung;
|
||||
if(json[i].start != \'\' && json[i].ende !=\'\')
|
||||
{
|
||||
projphasenhtml += " ( "+json[i].start+" - "+json[i].ende+" )";
|
||||
}
|
||||
projphasenhtml += "<\/option>";
|
||||
}
|
||||
|
||||
$("#projektphase").append(projphasenhtml);
|
||||
$("#projektphaseformgroup").show();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#projektphaseformgroup").hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Pausenblock
|
||||
|
||||
function checkPausenblock()
|
||||
@@ -651,6 +734,40 @@ echo '
|
||||
$("#pause_von").val("");
|
||||
$("#pause_bis").val("");
|
||||
}
|
||||
|
||||
function useCheckedDate(){
|
||||
var uid = $("#uidpass").val();
|
||||
var Datum = $("#von_datum").val();
|
||||
Tag=Datum.substring(0,2);
|
||||
Monat=Datum.substring(3,5);
|
||||
Jahr=Datum.substring(6,10);
|
||||
var checkedDay = Jahr + "-" + Monat + "-" + Tag;
|
||||
checkBisverwendung(checkedDay, uid);
|
||||
}
|
||||
|
||||
function checkBisverwendung(day, uid)
|
||||
{
|
||||
$.ajax({
|
||||
url: "zeitaufzeichnung_bisverwendung.php",
|
||||
data: {
|
||||
day: day,
|
||||
uid: uid
|
||||
},
|
||||
success: function (result)
|
||||
{
|
||||
if (result==\'true\')
|
||||
{
|
||||
$("#homeofficeBlock").show();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#homeofficeBlock").hide();
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
@@ -806,6 +923,39 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$zeit->projektphase_id = $data[7];
|
||||
if (isset($data[8]))
|
||||
$zeit->service_id = $data[8];
|
||||
if (isset($data[9]))
|
||||
{
|
||||
if (strtolower($data[9] == 'true'))
|
||||
{
|
||||
// check, ob homeoffice gemäß Bisverwendung
|
||||
$verwendung = new bisverwendung();
|
||||
$verwendung->getVerwendungDatum($data[0],$vonCSV);
|
||||
|
||||
foreach ($verwendung->result as $v)
|
||||
// echo "homeoffice für Tag " . $vonCSV . " ". $v->homeoffice . " " . $v->bisverwendung_id . "<br>";
|
||||
|
||||
if ($v->homeoffice)
|
||||
{
|
||||
|
||||
// echo "homeoffice erlaubt <br>";
|
||||
$zeit->homeoffice = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<span style="color:orange"><b>'.$p->t("zeitaufzeichnung/homeofficeNichtErlaubt", ($vonCSV)) .'</b></span><br>';
|
||||
|
||||
$zeit->homeoffice = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$zeit->homeoffice = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$zeit->homeoffice = false;
|
||||
}
|
||||
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
|
||||
if(!in_array($tag, $importtage_array))
|
||||
@@ -829,6 +979,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$pause->start = $ende_vorher;
|
||||
$pause->ende = $zeit->start;
|
||||
$pause->beschreibung = '';
|
||||
$pause->homeoffice = $homeoffice;
|
||||
if(!$pause->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span><br>';
|
||||
@@ -908,6 +1059,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$zeit->updatevon = $user;
|
||||
$zeit->projekt_kurzbz = $projekt_kurzbz;
|
||||
$zeit->projektphase_id = $projektphase_id;
|
||||
$zeit->homeoffice = $homeoffice;
|
||||
$zeit->service_id = $service_id;
|
||||
$zeit->kunde_uid = $kunde_uid;
|
||||
$saveerror = 0;
|
||||
@@ -924,8 +1076,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
}
|
||||
elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d')))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.</b></span><br>';
|
||||
echo '<p id="triggerPhasenReset"><span style="color:red" ><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").':
|
||||
Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.</b></span></p><br>';
|
||||
$saveerror = 1;
|
||||
|
||||
}
|
||||
elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT")
|
||||
{
|
||||
@@ -968,6 +1122,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$pause->insertvon = $user;
|
||||
$pause->uid = $user;
|
||||
$pause->aktivitaet_kurzbz = 'Pause';
|
||||
$pause->homeoffice = $homeoffice;
|
||||
$pause->start = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s');
|
||||
$pause->ende = $datum->formatDatum($bis_pause, $format='Y-m-d H:i:s');
|
||||
$pause->beschreibung = '';
|
||||
@@ -1055,13 +1210,12 @@ else
|
||||
echo '<b> </b>';
|
||||
|
||||
//Laden der Daten zum aendern
|
||||
if(isset($_GET['type']) && $_GET['type']=='edit')
|
||||
if (isset($_GET['type']) && $_GET['type'] == 'edit')
|
||||
{
|
||||
$zeit = new zeitaufzeichnung();
|
||||
|
||||
if($zeit->load($zeitaufzeichnung_id))
|
||||
if ($zeit->load($zeitaufzeichnung_id))
|
||||
{
|
||||
if($zeit->uid==$user)
|
||||
if ($zeit->uid == $user)
|
||||
{
|
||||
$uid = $zeit->uid;
|
||||
$aktivitaet_kurzbz = $zeit->aktivitaet_kurzbz;
|
||||
@@ -1072,13 +1226,15 @@ if(isset($_GET['type']) && $_GET['type']=='edit')
|
||||
$oe_kurzbz_2 = $zeit->oe_kurzbz_2;
|
||||
$projekt_kurzbz = $zeit->projekt_kurzbz;
|
||||
$projektphase_id = $zeit->projektphase_id;
|
||||
$homeoffice = $zeit->homeoffice;
|
||||
$homeoffice[0] == 't' ? $homeofficeChecked = 'checked' : $homeofficeChecked = '';
|
||||
$service_id = $zeit->service_id;
|
||||
$kunde_uid = $zeit->kunde_uid;
|
||||
|
||||
$projektphase = new projektphase();
|
||||
|
||||
$projektphasen = array();
|
||||
if($projektphase->getProjektphasen($projekt_kurzbz))
|
||||
|
||||
if ($projektphase->getProjectphaseForMitarbeiterByKurzBz($uid, $projekt_kurzbz))
|
||||
{
|
||||
foreach ($projektphase->result as $row)
|
||||
{
|
||||
@@ -1089,15 +1245,16 @@ if(isset($_GET['type']) && $_GET['type']=='edit')
|
||||
else
|
||||
{
|
||||
echo "<b>".$p->t("global/keineBerechtigungZumAendernDesDatensatzes")."</b>";
|
||||
$zeitaufzeichnung_id='';
|
||||
$zeitaufzeichnung_id = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Projekte holen zu denen der Benutzer zugeteilt ist
|
||||
$projekt = new projekt();
|
||||
|
||||
if($projekt->getProjekteMitarbeiter($user, true))
|
||||
if ($projekt->getProjekteMitarbeiter($user, true))
|
||||
{
|
||||
//if(count($projekt->result)>0)
|
||||
//{
|
||||
@@ -1324,36 +1481,48 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$selected = '';
|
||||
|
||||
echo '<option value="'.$db->convert_html_chars($row_projekt->projekt_kurzbz).'" '.$selected.'>'.$db->convert_html_chars($row_projekt->titel).'</option>';
|
||||
}
|
||||
echo '</SELECT><!--<input type="button" value="'.$p->t("zeitaufzeichnung/uebersicht").'" onclick="loaduebersicht();">-->';
|
||||
|
||||
//Projektphase
|
||||
$showprojphases = isset($projektphasen) && is_array($projektphasen) && count($projektphasen) > 0 && $projektfound;
|
||||
$hiddentext = $showprojphases ? "" : " style='display:none'";
|
||||
|
||||
echo
|
||||
'<span id="projektphaseformgroup"'.$hiddentext.'> '.
|
||||
$p->t("zeitaufzeichnung/projektphase").'
|
||||
<SELECT name="projektphase" id="projektphase">
|
||||
<OPTION value="" id="projektphasekeineausw">-- '.$p->t('zeitaufzeichnung/keineAuswahl').' --</OPTION>';
|
||||
|
||||
if ($showprojphases)
|
||||
{
|
||||
foreach ($projektphasen as $projektphase)
|
||||
{
|
||||
if ($projektphase_id == $projektphase->projektphase_id/* || $filter == $row_projekt->projekt_kurzbz*/)
|
||||
$selected = 'selected';
|
||||
else
|
||||
$selected = '';
|
||||
|
||||
echo '<option value="'.$db->convert_html_chars($projektphase->projektphase_id).'" '.$selected.'>'.$db->convert_html_chars($projektphase->bezeichnung).'</option>';
|
||||
}
|
||||
echo '</SELECT></span>';
|
||||
}
|
||||
echo '</td></tr>';
|
||||
}
|
||||
echo '</SELECT><!--<input type="button" value="'.$p->t("zeitaufzeichnung/uebersicht").'" onclick="loaduebersicht();">-->';
|
||||
|
||||
if ($za_simple == 0)
|
||||
//Projektphase
|
||||
$showprojphases = isset($projektphasen) && is_array($projektphasen) && count($projektphasen) > 0 && $projektfound;
|
||||
$hiddentext = $showprojphases ? "" : " style='display:none'";
|
||||
|
||||
echo
|
||||
'<span id="projektphaseformgroup"'.$hiddentext.'> '.
|
||||
$p->t("zeitaufzeichnung/projektphase").'
|
||||
<SELECT name="projektphase" id="projektphase">
|
||||
<OPTION value="" id="projektphasekeineausw">-- '.$p->t('zeitaufzeichnung/keineAuswahl').' --</OPTION>';
|
||||
|
||||
if ($showprojphases)
|
||||
{
|
||||
foreach ($projektphasen as $projektphase)
|
||||
{
|
||||
if (($projektphase->start != "" ) && ($projektphase->ende != " "))
|
||||
{
|
||||
$phasentext = " (". $datum->formatDatum($projektphase->start, 'd.m.Y'). " - ".
|
||||
$datum->formatDatum($projektphase->ende, 'd.m.Y'). ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
$phasentext = '';
|
||||
}
|
||||
|
||||
if ($projektphase_id == $projektphase->projektphase_id/* || $filter == $row_projekt->projekt_kurzbz*/)
|
||||
$selected = 'selected';
|
||||
else
|
||||
$selected = '';
|
||||
|
||||
echo '<option value="'.$db->convert_html_chars($projektphase->projektphase_id).'" '.$selected.'>'.$db->convert_html_chars($projektphase->bezeichnung). $phasentext.'</option>';
|
||||
}
|
||||
echo '</SELECT></span>';
|
||||
}
|
||||
echo '</td></tr>';
|
||||
}
|
||||
|
||||
echo "<input type ='hidden' value='$user'id=uidpass>";
|
||||
|
||||
if ($za_simple == 0)
|
||||
{
|
||||
// Service
|
||||
echo '<tr>
|
||||
@@ -1402,6 +1571,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s'));
|
||||
$bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s'));
|
||||
$diff = $bis_ts - $von_ts;
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
<td>'.$p->t("global/von").' - '.$p->t("global/bis").'</td>
|
||||
@@ -1444,6 +1614,20 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
</td>
|
||||
</tr>
|
||||
';
|
||||
|
||||
//Homeoffice Checkbox
|
||||
echo '
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="1">
|
||||
<span id="homeofficeBlock">
|
||||
<input type="checkbox" name="homeoffice" id="homeoffice" '. $homeofficeChecked . '>Homeoffice</input>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
';
|
||||
|
||||
//Beschreibung
|
||||
echo '<tr><td>'.$p->t("global/beschreibung").'</td><td colspan="3"><textarea style="font-size: 13px" name="beschreibung" cols="60" maxlength="256">'.$db->convert_html_chars($beschreibung).'</textarea></td></tr>';
|
||||
echo '<tr><td></td><td></td><td></td><td align="right">';
|
||||
@@ -1505,7 +1689,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
echo '<a href="?normal" style="text-decoration:none"><input type="button" value="'.$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage)).'"></a>';
|
||||
else
|
||||
echo '<a href="?alle" style="text-decoration:none"><input type="button" value="'.$p->t('zeitaufzeichnung/alleAnzeigen').'"></a>';
|
||||
//echo '<input type="submit" value="'.($alle===true?$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage)):$p->t('zeitaufzeichnung/alleAnzeigen')).'" name="'.($alle===true?'normal':'alle').'">';
|
||||
//echo '<input type="submit" value="'.($alle===true?$p->t('zeitaufzeichnung/xTageAnsicht', array(fehlt!)):$p->t('zeitaufzeichnung/alleAnzeigen')).'" name="'.($alle===true?'normal':'alle').'">';
|
||||
|
||||
$za = new zeitaufzeichnung();
|
||||
if(isset($_GET['filter']))
|
||||
@@ -1621,6 +1805,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000)
|
||||
$pausefehlt_str = '<span style="color:red; font-weight:bold;">-- Pause fehlt oder zu kurz --</span>';
|
||||
|
||||
|
||||
$tagessaldo = date('H:i', ($tagessaldo));
|
||||
$colspan = ($za_simple)?6:8;
|
||||
echo '<tr id="tag_row_'.$datum->formatDatum($tag,'d_m_Y').'"><td '.$style.' colspan="'.$colspan.'")>';
|
||||
@@ -1770,6 +1955,11 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"';
|
||||
if ($row->aktivitaet_kurzbz=='Pause' || $row->aktivitaet_kurzbz=='LehreExtern'|| $row->aktivitaet_kurzbz=='Ersatzruhe')
|
||||
$style .= ' style="color: grey;"';
|
||||
if($db->convert_html_chars($row->homeoffice)=='t')
|
||||
{
|
||||
$homeoffice = " - Homeoffice";
|
||||
}else
|
||||
$homeoffice="";
|
||||
$summe = $row->summe;
|
||||
$service = new service();
|
||||
$service->load($row->service_id);
|
||||
@@ -1785,7 +1975,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
{
|
||||
echo '<td '.$style.' > '.$db->convert_html_chars($row->oe_kurzbz_2).'</td>';
|
||||
}
|
||||
echo '<td '.$style.'>'.$db->convert_html_chars($row->aktivitaet_kurzbz).'</td>';
|
||||
echo '<td '.$style.'>'.$db->convert_html_chars($row->aktivitaet_kurzbz).($homeoffice).'</td>';
|
||||
if(!$za_simple)
|
||||
{
|
||||
echo '<td '.$style.' title = "'.$service->bezeichnung.'" > '.StringCut($db->convert_html_chars($service->bezeichnung),20,null,'...').' </td>';
|
||||
@@ -1919,8 +2109,8 @@ function getDataForCSV($rawdata, $fieldheadings, $za_simple = false)
|
||||
$datum = new datum();
|
||||
$csvData = array();
|
||||
//headers schreiben
|
||||
$csvData[] = ($za_simple) ? array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['ap'], $fieldheadings['oe1'], $fieldheadings['aktivitaet'], $fieldheadings['beschreibung'])
|
||||
: array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['ap'], $fieldheadings['oe1'], $fieldheadings['oe2'], $fieldheadings['aktivitaet'], $fieldheadings['service'], $fieldheadings['kunde'], $fieldheadings['beschreibung']);
|
||||
$csvData[] = ($za_simple) ? array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['ap'], $fieldheadings['oe1'], $fieldheadings['aktivitaet'], $fieldheadings['beschreibung'], $fieldheadings['homeoffice'])
|
||||
: array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['ap'], $fieldheadings['oe1'], $fieldheadings['oe2'], $fieldheadings['aktivitaet'], $fieldheadings['service'], $fieldheadings['kunde'], $fieldheadings['beschreibung'], $fieldheadings['homeoffice']);
|
||||
foreach ($rawdata as $zeitauf)
|
||||
{
|
||||
//Newline characters bei Beschreibung ersetzen
|
||||
@@ -1933,13 +2123,13 @@ function getDataForCSV($rawdata, $fieldheadings, $za_simple = false)
|
||||
if($za_simple)
|
||||
{
|
||||
$csvData[] = array($zeitauf->uid, $hauptdatum, $datum->formatDatum($zeitauf->start, 'H:i'),
|
||||
$bisdatum, $zeitauf->projekt_kurzbz, $zeitauf->projektphase_id, $zeitauf->oe_kurzbz_1, $zeitauf->aktivitaet_kurzbz, $beschreibung);
|
||||
$bisdatum, $zeitauf->projekt_kurzbz, $zeitauf->projektphase_id, $zeitauf->oe_kurzbz_1, $zeitauf->aktivitaet_kurzbz, $beschreibung, $zeitauf->homeoffice);
|
||||
}
|
||||
else
|
||||
{
|
||||
$servicebez = ($service->load($zeitauf->service_id))?$service->bezeichnung:"";
|
||||
$csvData[] = array($zeitauf->uid, $hauptdatum, $datum->formatDatum($zeitauf->start, 'H:i'), $bisdatum,
|
||||
$zeitauf->projekt_kurzbz, $zeitauf->projektphase_id, $zeitauf->oe_kurzbz_1, $zeitauf->oe_kurzbz_2, $zeitauf->aktivitaet_kurzbz, $servicebez, $zeitauf->kunde_uid, $beschreibung);
|
||||
$zeitauf->projekt_kurzbz, $zeitauf->projektphase_id, $zeitauf->oe_kurzbz_1, $zeitauf->oe_kurzbz_2, $zeitauf->aktivitaet_kurzbz, $servicebez, $zeitauf->kunde_uid, $beschreibung, $zeitauf->homeoffice);
|
||||
}
|
||||
}
|
||||
return $csvData;
|
||||
@@ -2014,7 +2204,7 @@ function getDataForProjectOverviewCSV($user)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
$titel = $prjp->projekt_kurzbz;
|
||||
$titel = $prjp->projekttitel;
|
||||
$projekt_kurzbz = $prjp->projekt_kurzbz;
|
||||
$projekt_phase = $prjp->bezeichnung;
|
||||
$projekt_phase_id = $prjp->projektphase_id;
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/* Copyright (C) 2021 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Author: Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* Checks, if there is the possibility for homeoffice for the given bisverwendung of
|
||||
* a certain date.
|
||||
*/
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/globals.inc.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/Excel/excel.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung.class.php');
|
||||
require_once('../../../include/projekt.class.php');
|
||||
require_once('../../../include/bisverwendung.class.php');
|
||||
|
||||
if ((isset($_GET['uid'])) && (isset($_GET['day'])))
|
||||
{
|
||||
$uid = get_uid();
|
||||
|
||||
//Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung
|
||||
//des uebergebenen Users anzeigen
|
||||
if (isset($_GET['uid']) && $_GET['uid'] != $uid)
|
||||
{
|
||||
$p = new phrasen();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($uid);
|
||||
|
||||
if ($rechte->isBerechtigt('admin'))
|
||||
{
|
||||
$uid = $_GET['uid'];
|
||||
}
|
||||
else
|
||||
{
|
||||
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
|
||||
}
|
||||
}
|
||||
|
||||
$day = $_GET['day'];
|
||||
|
||||
$verwendung = new bisverwendung();
|
||||
|
||||
$verwendung->getVerwendungDatum($uid, $day);
|
||||
$homeoffice = false;
|
||||
|
||||
foreach ($verwendung->result as $v)
|
||||
{
|
||||
if ($v->homeoffice)
|
||||
{
|
||||
$homeoffice = true;
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($homeoffice);
|
||||
|
||||
}
|
||||
@@ -559,9 +559,11 @@ $totalworktimewidth = 13;
|
||||
$worktimewidth = 14;
|
||||
$timecolumnswidth = 2 * $daywidth + $totalworktimewidth + $worktimewidth;
|
||||
|
||||
if ($nrProjects < 1)//no projekts - merge all cells and write notice
|
||||
if ($nrProjects < 1) //no projekts - write notice
|
||||
{
|
||||
$projektnames[] = "Keine Projekte vorhanden";
|
||||
$worksheet =& $workbook->addWorksheet('Tabelle');
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
$worksheet->write(0,0,'Für diesen Zeitraum sind keine Projekte zugeordnet');
|
||||
}
|
||||
|
||||
foreach ($projektnames as $projektname)
|
||||
|
||||
@@ -1,18 +1,59 @@
|
||||
<?php
|
||||
/* Copyright (C) 2021 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Oliver Hacker <hacker@technikum-wien.at>
|
||||
Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/basis_db.class.php');
|
||||
require_once('../../../include/projektphase.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
//Wenn User Administrator ist und UID uebergeben wurde, dann die Phasen
|
||||
//des uebergebenen Users anzeigen
|
||||
if (isset($_GET['uid']) && $user != $_GET['uid'])
|
||||
{
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
if ($rechte->isBerechtigt('admin'))
|
||||
{
|
||||
$user = $_GET['uid'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$p = new phrasen();
|
||||
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
|
||||
}
|
||||
}
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
if(isset($_GET['projekt_kurzbz'])) // TODO maybe check that phasen only shown if projekt is projekt of logged in user
|
||||
if (isset($_GET['projekt_kurzbz']))
|
||||
{
|
||||
$projekt_kurzbz = $_GET['projekt_kurzbz'];
|
||||
$projektphase = new projektphase();
|
||||
@@ -28,12 +69,12 @@ if(isset($_GET['projekt_kurzbz'])) // TODO maybe check that phasen only shown if
|
||||
array_push($pp_user_ids, $pp_user->projektphase_id);
|
||||
}
|
||||
|
||||
if($projektphase->getProjektphasen($projekt_kurzbz))
|
||||
if ($projektphase->getProjektphasen($projekt_kurzbz))
|
||||
{
|
||||
$result_obj = array();
|
||||
foreach($projektphase->result as $row)
|
||||
foreach ($projektphase->result as $row)
|
||||
{
|
||||
if(in_array($row->projektphase_id, $pp_user_ids))
|
||||
if (in_array($row->projektphase_id, $pp_user_ids))
|
||||
{
|
||||
$item['projektphase_id'] = $row->projektphase_id;
|
||||
$item['bezeichnung'] = $row->bezeichnung;
|
||||
|
||||
@@ -104,9 +104,11 @@ if(isset($_GET['show']))
|
||||
SELECT
|
||||
distinct on(tbl_frage.frage_id) *, tbl_gebiet.kurzbz as gebiet
|
||||
FROM
|
||||
testtool.tbl_frage
|
||||
JOIN testtool.tbl_ablauf USING(gebiet_id)
|
||||
JOIN testtool.tbl_frage_sprache USING(frage_id)
|
||||
testtool.tbl_frage ";
|
||||
if($stg_kz!='')
|
||||
$qry.=" JOIN testtool.tbl_ablauf USING(gebiet_id) ";
|
||||
|
||||
$qry.=" JOIN testtool.tbl_frage_sprache USING(frage_id)
|
||||
JOIN testtool.tbl_gebiet USING(gebiet_id)
|
||||
WHERE
|
||||
demo=false";
|
||||
|
||||
+736
-734
File diff suppressed because it is too large
Load Diff
+242
-201
@@ -33,7 +33,7 @@ $rechte->getBerechtigungen($user);
|
||||
if (! $rechte->isberechtigt('basis/dms', null, 's', null))
|
||||
die($rechte->errormsg);
|
||||
|
||||
?>
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//DE"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
@@ -160,6 +160,17 @@ if (! $rechte->isberechtigt('basis/dms', null, 's', null))
|
||||
beschreibungstext = beschreibungstext.replace(/Ze1l3numxbr/g, "\r\n");
|
||||
document.getElementById("beschreibung-textarea").value = beschreibungstext;
|
||||
}
|
||||
function updateSchlagworte(schlagworte)
|
||||
{
|
||||
document.getElementById("schlagworte-textarea").value = schlagworte;
|
||||
}
|
||||
function updateCisSuche(cisSuche)
|
||||
{
|
||||
if (cisSuche == true)
|
||||
document.getElementById("cis_suche_checkbox").checked = true;
|
||||
else
|
||||
document.getElementById("cis_suche_checkbox").checked = false;
|
||||
}
|
||||
|
||||
var __js_page_array = new Array();
|
||||
function js_toggle_container(conid)
|
||||
@@ -216,7 +227,7 @@ if (! $rechte->isberechtigt('basis/dms', null, 's', null))
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<body>
|
||||
<?php
|
||||
|
||||
$kategorie_kurzbz = isset($_REQUEST['kategorie_kurzbz']) ? $_REQUEST['kategorie_kurzbz'] : '';
|
||||
@@ -321,6 +332,7 @@ if (isset($_POST['fileupload']))
|
||||
$dms_id = $_POST['dms_id'];
|
||||
$beschreibung = $_POST['beschreibung'];
|
||||
$schlagworte = $_POST['schlagworte'];
|
||||
$mimetype = isset($_POST['mimetype']) ? $_POST['mimetype'] : '';
|
||||
$cis_suche = isset($_POST['cis_suche']) ? true : false;
|
||||
$ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
|
||||
$filename = uniqid();
|
||||
@@ -352,7 +364,14 @@ if (isset($_POST['fileupload']))
|
||||
|
||||
$dms->insertamum = date('Y-m-d H:i:s');
|
||||
$dms->insertvon = $user;
|
||||
$dms->mimetype = finfo_file($finfo, $uploadfile); // Davor deprecated: $_FILES['userfile']['type'];
|
||||
if ($mimetype != '')
|
||||
{
|
||||
$dms->mimetype = $mimetype;
|
||||
}
|
||||
else
|
||||
{
|
||||
$dms->mimetype = finfo_file($finfo, $uploadfile);
|
||||
}
|
||||
$dms->filename = $filename;
|
||||
$dms->name = $_FILES['userfile']['name'];
|
||||
$dms->beschreibung = $beschreibung;
|
||||
@@ -393,6 +412,7 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
|
||||
$version = $_POST['version'];
|
||||
$beschreibung = $_POST['beschreibung'];
|
||||
$schlagworte = $_POST['schlagworte'];
|
||||
$mimetype = isset($_POST['mimetype']) ? $_POST['mimetype'] : '';
|
||||
$cis_suche = isset($_POST['cis_suche']) ? true : false;
|
||||
|
||||
$dms = new dms();
|
||||
@@ -402,6 +422,14 @@ if (isset($_POST['action']) && $_POST['action'] == 'rename')
|
||||
$dms->beschreibung = $beschreibung;
|
||||
$dms->schlagworte = $schlagworte;
|
||||
$dms->cis_suche = $cis_suche;
|
||||
if ($mimetype != '')
|
||||
{
|
||||
$dms->mimetype = $mimetype;
|
||||
}
|
||||
else
|
||||
{
|
||||
$dms->mimetype = finfo_file($finfo, $uploadfile);
|
||||
}
|
||||
$dms->updateamum = date('Y-m-d H:i:s');
|
||||
$dms->updatevon = $user;
|
||||
|
||||
@@ -542,14 +570,14 @@ elseif ($chkatID != '')
|
||||
else
|
||||
{
|
||||
// Suche anzeigen
|
||||
echo '<div align="left"><h1>Dokument Auswählen</h1></div><div align="right"></div>
|
||||
<form action="'.$_SERVER['PHP_SELF'].'?searching=true&searchstring='.$searchstring.'" method="POST">
|
||||
<input type="text" name="searchstring" value="'.$searchstring.'" placeholder="#123 oder Text">
|
||||
<input type="submit" class="buttondesign" value="Suchen">
|
||||
echo '<div align="left"><h1>Dokument Auswählen</h1></div><div align="right"></div>
|
||||
<form action="'.$_SERVER['PHP_SELF'].'?searching=true&searchstring='.$searchstring.'" method="POST">
|
||||
<input type="text" name="searchstring" value="'.$searchstring.'" placeholder="#123 oder Text">
|
||||
<input type="submit" class="buttondesign" value="Suchen">
|
||||
</form>';
|
||||
|
||||
echo ' <table cellspacing=0>
|
||||
<tr>
|
||||
echo ' <table cellspacing=0>
|
||||
<tr>
|
||||
<td valign="top" nowrap style="border-right: 1px solid lightblue; border-top: 1px solid lightblue; padding-right:5px">';
|
||||
|
||||
// Link zu Admin-Oberfläche
|
||||
@@ -564,31 +592,31 @@ else
|
||||
echo '<ul>';
|
||||
drawKategorieMenue($dms->result);
|
||||
echo '</ul>';
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
OpenTreeToKategorie("'.$kategorie_kurzbz.'");
|
||||
});
|
||||
|
||||
//Klappt den Kategoriebaum auf, damit die ausgewaehlte Kategorie sichtbar ist
|
||||
function OpenTreeToKategorie(kategorie)
|
||||
{
|
||||
elem = document.getElementById(kategorie);
|
||||
if(elem.nodeName=="UL")
|
||||
elem.style.display="block";
|
||||
while(true)
|
||||
{
|
||||
if(!elem.parentNode)
|
||||
break;
|
||||
else
|
||||
elem = elem.parentNode;
|
||||
|
||||
if(elem.nodeName=="UL" && elem.className=="tabcontent")
|
||||
elem.style.display="block";
|
||||
}
|
||||
}
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
OpenTreeToKategorie("'.$kategorie_kurzbz.'");
|
||||
});
|
||||
|
||||
//Klappt den Kategoriebaum auf, damit die ausgewaehlte Kategorie sichtbar ist
|
||||
function OpenTreeToKategorie(kategorie)
|
||||
{
|
||||
elem = document.getElementById(kategorie);
|
||||
if(elem.nodeName=="UL")
|
||||
elem.style.display="block";
|
||||
while(true)
|
||||
{
|
||||
if(!elem.parentNode)
|
||||
break;
|
||||
else
|
||||
elem = elem.parentNode;
|
||||
|
||||
if(elem.nodeName=="UL" && elem.className=="tabcontent")
|
||||
elem.style.display="block";
|
||||
}
|
||||
}
|
||||
</script>';
|
||||
echo '</td>
|
||||
echo '</td>
|
||||
<td valign="top" style="border-top: 1px solid lightblue;">';
|
||||
// Dokumente der Ausgewaehlten Kategorie laden und Anzeigen
|
||||
$dms = new dms();
|
||||
@@ -714,7 +742,7 @@ else
|
||||
echo '&dpp='.$_GET['dpp'];
|
||||
}
|
||||
echo '&searching=true&searchstring='.$searchstring.'" method="POST" style="float:left"><input type="submit" class="buttondesign" name="100weiter" value="100 weiter" style="margin-left:2px"/><input type="hidden" name="searchstring" id="searchstring" value="'.$searchstring.'" /></form>';
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?searching=true&searchstring='.$searchstring.'&page='.$page.' method="POST" style="float:right">
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?searching=true&searchstring='.$searchstring.'&page='.$page.' method="POST" style="float:right">
|
||||
<input type="hidden" name="page" id="page" value="';
|
||||
if ($page == 0 || $page == '')
|
||||
{
|
||||
@@ -724,9 +752,9 @@ else
|
||||
{
|
||||
echo $page;
|
||||
}
|
||||
echo '">
|
||||
<input type="hidden" name="searchstring" id="searchstring" value="'.$searchstring.'" />
|
||||
<input type="hidden" name="searching" id="searchstring" value="'.$searching.'" />
|
||||
echo '">
|
||||
<input type="hidden" name="searchstring" id="searchstring" value="'.$searchstring.'" />
|
||||
<input type="hidden" name="searching" id="searchstring" value="'.$searching.'" />
|
||||
<select name="dpp" onchange="this.form.submit();" style="margin-left:20px;">';
|
||||
if (isset($_GET['dpp']))
|
||||
{
|
||||
@@ -765,14 +793,14 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
echo ' <option>10</option><option selected>20</option><option>30</option>
|
||||
<option>40</option><option>50</option><option>60</option>
|
||||
<option>70</option><option>80</option><option>90</option>
|
||||
<option>100</option><option>150</option><option>200</option>
|
||||
echo ' <option>10</option><option selected>20</option><option>30</option>
|
||||
<option>40</option><option>50</option><option>60</option>
|
||||
<option>70</option><option>80</option><option>90</option>
|
||||
<option>100</option><option>150</option><option>200</option>
|
||||
<option>500</option><option>1000</option><option>2000</option>';
|
||||
}
|
||||
echo '
|
||||
</select> Elemente pro Seite
|
||||
echo '
|
||||
</select> Elemente pro Seite
|
||||
</form>';
|
||||
}
|
||||
else
|
||||
@@ -898,7 +926,7 @@ else
|
||||
echo '&dpp='.$_GET['dpp'];
|
||||
}
|
||||
echo '" method="POST" style="float:left"><input type="submit" class="buttondesign" name="100weiter" value="100 weiter" style="margin-left:2px"/></form>';
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page='.$page.' method="POST" style="float:right">
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page='.$page.' method="POST" style="float:right">
|
||||
<input type="hidden" name="kategorie_kurzbz" id="kategorie_kurzbz" value="'.$kategorie_kurzbz.'" /><input type="hidden" name="page" id="page" value="';
|
||||
if ($page == 0 || $page == '')
|
||||
{
|
||||
@@ -908,7 +936,7 @@ else
|
||||
{
|
||||
echo $page;
|
||||
}
|
||||
echo '">
|
||||
echo '">
|
||||
<select name="dpp" onchange="this.form.submit();" style="margin-left:20px;">';
|
||||
if (isset($_GET['dpp']))
|
||||
{
|
||||
@@ -947,14 +975,14 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
echo ' <option>10</option><option selected>20</option><option>30</option>
|
||||
<option>40</option><option>50</option><option>60</option>
|
||||
<option>70</option><option>80</option><option>90</option>
|
||||
<option>100</option><option>150</option><option>200</option>
|
||||
echo ' <option>10</option><option selected>20</option><option>30</option>
|
||||
<option>40</option><option>50</option><option>60</option>
|
||||
<option>70</option><option>80</option><option>90</option>
|
||||
<option>100</option><option>150</option><option>200</option>
|
||||
<option>500</option><option>1000</option><option>2000</option>';
|
||||
}
|
||||
echo '
|
||||
</select> Elemente pro Seite
|
||||
echo '
|
||||
</select> Elemente pro Seite
|
||||
</form>';
|
||||
}
|
||||
else
|
||||
@@ -965,21 +993,21 @@ else
|
||||
}
|
||||
// drawFilesThumb($dms->result);
|
||||
|
||||
echo '
|
||||
</td>
|
||||
</tr>
|
||||
echo '
|
||||
</td>
|
||||
</tr>
|
||||
</table>';
|
||||
|
||||
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'sui'))
|
||||
{
|
||||
echo '
|
||||
<br>
|
||||
<a href="#Upload" onclick="return upload()">Neue Datei hochladen</a>
|
||||
<br>
|
||||
|
||||
<br><br>
|
||||
<div id="divupload">
|
||||
<hr>
|
||||
echo '
|
||||
<br>
|
||||
<a href="#Upload" onclick="return upload()">Neue Datei hochladen</a>
|
||||
<br>
|
||||
|
||||
<br><br>
|
||||
<div id="divupload">
|
||||
<hr>
|
||||
<span id="ueberschrift"></span>';
|
||||
if (isset($_REQUEST['searching']) && $_REQUEST['searching'] == 'true')
|
||||
{
|
||||
@@ -989,31 +1017,35 @@ else
|
||||
{
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$kategorie_kurzbz.'&page='.$page.'&dpp='.$dpp.'" method="POST" enctype="multipart/form-data">';
|
||||
}
|
||||
echo '
|
||||
<input type="hidden" name="kategorie_kurzbz" id="kategorie_kurzbz" value="'.$kategorie_kurzbz.'">
|
||||
<input type="hidden" name="dms_id" id="dms_id" value="">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Beschreibung</td>
|
||||
<td><textarea name="beschreibung" id="beschreibung-textarea" rows="1" cols="80" style="font-size: small;"></textarea></td>
|
||||
echo '
|
||||
<input type="hidden" name="kategorie_kurzbz" id="kategorie_kurzbz" value="'.$kategorie_kurzbz.'">
|
||||
<input type="hidden" name="dms_id" id="dms_id" value="">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Beschreibung</td>
|
||||
<td><textarea name="beschreibung" id="beschreibung-textarea" rows="1" cols="80" style="font-size: small;"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Schlagworte<br/>(Semikolon getrennt)</td>
|
||||
<td><textarea name="schlagworte" id="schlagworte-textarea" rows="2" cols="80" style="font-size: small;"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mimetype</td>
|
||||
<td><input type="text" name="mimetype" id="mimetype-input" size="50" maxlength="256" style="font-size: small;" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CIS-Suche</td>
|
||||
<td><input type="checkbox" name="cis_suche"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="file" name="userfile"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="projekt_kurzbz" value="'.$projekt_kurzbz.'">
|
||||
<input type="hidden" name="projektphase_id" value="'.$projektphase_id.'">
|
||||
<input type="submit" class="buttondesign" name="fileupload" value="Upload">
|
||||
</form>
|
||||
<td><input type="checkbox" id="cis_suche_checkbox" name="cis_suche"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="file" name="userfile"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="projekt_kurzbz" value="'.$projekt_kurzbz.'">
|
||||
<input type="hidden" name="projektphase_id" value="'.$projektphase_id.'">
|
||||
<input type="submit" class="buttondesign" name="fileupload" value="Upload">
|
||||
</form>
|
||||
<br>';
|
||||
$files = scandir(IMPORT_PATH);
|
||||
$files_count = count($files) - 2; // Minus zwei wegen "." und ".."
|
||||
@@ -1023,9 +1055,9 @@ else
|
||||
}
|
||||
if ($openupload)
|
||||
{
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
';
|
||||
if ($newVersionID != '')
|
||||
{
|
||||
@@ -1036,8 +1068,8 @@ else
|
||||
else
|
||||
echo 'upload();';
|
||||
|
||||
echo '
|
||||
});
|
||||
echo '
|
||||
});
|
||||
</script>';
|
||||
}
|
||||
}
|
||||
@@ -1057,56 +1089,58 @@ function drawAllVersions($id)
|
||||
$dms = new dms();
|
||||
$dms->getAllVersions($id);
|
||||
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t3").tablesorter(
|
||||
{
|
||||
sortList: [[0,1]], headers: {6:{sorter:false}},
|
||||
widgets: ["zebra"],
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<table style="width:70%" class="tablesorter" id="t3">
|
||||
<thead>
|
||||
<tr align="center">
|
||||
<th>Version</th>
|
||||
<th>Name</th>
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t3").tablesorter(
|
||||
{
|
||||
sortList: [[0,1]], headers: {6:{sorter:false}},
|
||||
widgets: ["zebra"],
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<table style="width:70%" class="tablesorter" id="t3">
|
||||
<thead>
|
||||
<tr align="center">
|
||||
<th>Version</th>
|
||||
<th>Name</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Schlagworte</th>
|
||||
<th>CIS-Suche</th>
|
||||
<th>CIS-Suche</th>
|
||||
<th>Kategorie</th>
|
||||
<th>Filename intern</th>
|
||||
<th>Datum</th>
|
||||
<th>User</th>
|
||||
</tr>
|
||||
<th>Filename intern</th>
|
||||
<th>Mimetype</th>
|
||||
<th>Datum</th>
|
||||
<th>User</th>
|
||||
</tr>
|
||||
</thead><tbody>';
|
||||
foreach ($dms->result as $dms_help)
|
||||
{
|
||||
echo '<tr>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->version.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->name.'</td>
|
||||
echo '<tr>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->version.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->name.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->beschreibung.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->schlagworte.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.($dms_help->cis_suche == 'true'?'Ja':'Nein').'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.($dms_help->cis_suche == 'true'?'Ja':'Nein').'</td>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->kategorie_kurzbz.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->filename.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->insertamum.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle;">'.$dms_help->insertvon.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle;">
|
||||
<ul class="sf-menu">
|
||||
<li><a style="font-size:small">Erweitert</a>
|
||||
<ul>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->filename.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle" align="center">'.$dms_help->mimetype.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle">'.$dms_help->insertamum.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle;">'.$dms_help->insertvon.'</td>
|
||||
<td style="padding: 1px; vertical-align:middle;">
|
||||
<ul class="sf-menu">
|
||||
<li><a style="font-size:small">Erweitert</a>
|
||||
<ul>
|
||||
<li><a href="dms.php?id='.$dms_help->dms_id.'&version='.$dms_help->version.'" style="font-size:small" target="_blank">Herunterladen</a></li>';
|
||||
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'su'))
|
||||
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?renameid='.$dms_help->dms_id.'&kategorie_kurzbz='.$dms_help->kategorie_kurzbz.'&dms_id='.$dms_help->dms_id.'&version='.$dms_help->version.'" style="font-size:small">Datei umbenennen</a></li>';
|
||||
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'suid'))
|
||||
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$dms_help->kategorie_kurzbz.'&versionid='.$dms_help->dms_id.'&dms_id='.$dms_help->dms_id.'&version='.$dms_help->version.'&delete" style="font-size:small">Löschen</a></li>';
|
||||
|
||||
echo '</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
echo '</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
echo '</tbody></table>';
|
||||
@@ -1121,41 +1155,41 @@ function drawFilesFromImport()
|
||||
|
||||
if ($handle = opendir(IMPORT_PATH))
|
||||
{
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t3").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]], headers: {1:{sorter:false}},
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
echo '<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t3").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]], headers: {1:{sorter:false}},
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
echo ' <h3>Files im Import Ordner</h3>
|
||||
<table class="tablesorter" id="t3" style="width: auto"> <form action ="'.$_SERVER['PHP_SELF'].'" method="POST" name="import" >
|
||||
echo ' <h3>Files im Import Ordner</h3>
|
||||
<table class="tablesorter" id="t3" style="width: auto"> <form action ="'.$_SERVER['PHP_SELF'].'" method="POST" name="import" >
|
||||
<thead><th>File</th><th></th></thead><tbody>';
|
||||
|
||||
while (false !== ($file = readdir($handle)))
|
||||
{
|
||||
if ($file != '.' && $file != '..')
|
||||
{
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
<span> '.$file.'</span>
|
||||
</td>
|
||||
<td>
|
||||
<a onclick="window.location=\'#divupload\'; document.import.importFile.value=\''.$file.'\';document.import.submit();" style="font-size:small">Upload</a>
|
||||
</td>
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
<span> '.$file.'</span>
|
||||
</td>
|
||||
<td>
|
||||
<a onclick="window.location=\'#divupload\'; document.import.importFile.value=\''.$file.'\';document.import.submit();" style="font-size:small">Upload</a>
|
||||
</td>
|
||||
</tr>';
|
||||
}
|
||||
}
|
||||
echo '
|
||||
<input type="hidden" name="dms_id_import" id="dms_id_import" value="">
|
||||
<input type="hidden" name="importFile" value="">
|
||||
<input type="hidden" name="kategorie_kurzbz" id="kategorie_kurzbz" value="'.$kategorie_kurzbz.'">
|
||||
<input type="hidden" name="projekt_kurzbz" value="'.$projekt_kurzbz.'">
|
||||
<input type="hidden" name="projektphase_id" value="'.$projektphase_id.'">
|
||||
echo '
|
||||
<input type="hidden" name="dms_id_import" id="dms_id_import" value="">
|
||||
<input type="hidden" name="importFile" value="">
|
||||
<input type="hidden" name="kategorie_kurzbz" id="kategorie_kurzbz" value="'.$kategorie_kurzbz.'">
|
||||
<input type="hidden" name="projekt_kurzbz" value="'.$projekt_kurzbz.'">
|
||||
<input type="hidden" name="projektphase_id" value="'.$projektphase_id.'">
|
||||
</form></tbody></table>';
|
||||
closedir($handle);
|
||||
}
|
||||
@@ -1247,44 +1281,44 @@ function drawFilesList($rows)
|
||||
|
||||
if (count($rows) > 0)
|
||||
{
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t2").tablesorter(
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t2").tablesorter(
|
||||
{';
|
||||
if ($suche == true)
|
||||
echo 'sortList: [[4,0],[1,1]], headers: {3:{sorter:false}},';
|
||||
else
|
||||
echo 'sortList: [[0,0]], headers: {2:{sorter:false}},';
|
||||
|
||||
echo '
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
echo '
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
';
|
||||
}
|
||||
|
||||
echo '
|
||||
<table class="tablesorter" id="t2">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Titel</th>
|
||||
echo '
|
||||
<table class="tablesorter" id="t2">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Titel</th>
|
||||
<th title="Version">V</th>';
|
||||
if ($suche == true)
|
||||
{
|
||||
echo '<th>Kategorie</th>';
|
||||
}
|
||||
echo '
|
||||
<th> </th>
|
||||
<th>ID</th>
|
||||
echo '
|
||||
<th> </th>
|
||||
<th>ID</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Schlagworte</th>
|
||||
<th>CIS-Suche</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<th>CIS-Suche</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
';
|
||||
$i = 0;
|
||||
foreach ($rows as $row)
|
||||
@@ -1295,8 +1329,8 @@ function drawFilesList($rows)
|
||||
else
|
||||
$i++;
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
echo '
|
||||
<tr>
|
||||
<td style="padding: 1px;">';
|
||||
if (array_key_exists($row->mimetype, $mimetypes))
|
||||
echo '<img title="'.$row->name.'" src="../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 15px">';
|
||||
@@ -1312,9 +1346,9 @@ function drawFilesList($rows)
|
||||
$newerVersionAlert = 'alert(\'Achtung!! Es gibt eine neuere Version dieses Dokuments. Es wird die aktuellste eingefügt.\');';
|
||||
}
|
||||
|
||||
echo '
|
||||
<a href="id://'.$row->dms_id.'/Auswahl" onclick="'.$newerVersionAlert.' FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">
|
||||
'.$newVersion.' '.$row->name.'</a>
|
||||
echo '
|
||||
<a href="id://'.$row->dms_id.'/Auswahl" onclick="'.$newerVersionAlert.' FileBrowserDialog.mySubmit('.$row->dms_id.'); return false;" style="font-size: small" title="'.$row->beschreibung.'">
|
||||
'.$newVersion.' '.$row->name.'</a>
|
||||
</td>';
|
||||
$datum = new datum();
|
||||
|
||||
@@ -1335,10 +1369,10 @@ function drawFilesList($rows)
|
||||
echo '<td style="padding: 1px;">';
|
||||
|
||||
// Upload einer neuen Version
|
||||
echo '<ul class="sf-menu">
|
||||
<li><a href="#" style="font-size:small">Erweitert</a>
|
||||
<ul>
|
||||
<li><a href="id://'.$row->dms_id.'/Auswahl" onclick="'.$newerVersionAlert.' FileBrowserDialog.mySubmit('.$row->dms_id.');" style="font-size:small">Auswählen</a></li>
|
||||
echo '<ul class="sf-menu">
|
||||
<li><a href="#" style="font-size:small">Erweitert</a>
|
||||
<ul>
|
||||
<li><a href="id://'.$row->dms_id.'/Auswahl" onclick="'.$newerVersionAlert.' FileBrowserDialog.mySubmit('.$row->dms_id.');" style="font-size:small">Auswählen</a></li>
|
||||
<li><a href="dms.php?id='.$row->dms_id.'&version='.$row->version.'" style="font-size:small" target="_blank">Herunterladen</a></li>';
|
||||
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'sui'))
|
||||
{
|
||||
@@ -1348,7 +1382,10 @@ function drawFilesList($rows)
|
||||
$beschreibungstext = str_replace('"', "D4n7ührung", $beschreibungstext);
|
||||
$beschreibungstext = str_replace("\\", "6Sl4sh", $beschreibungstext);
|
||||
$beschreibungstext = str_replace("\r\n", "Ze1l3numxbr", $beschreibungstext);
|
||||
echo $beschreibungstext.'\'); return upload(\''.$row->dms_id.'\',\''.$row->name.'\');" style="font-size:small">Neue Version hochladen</a></li>';
|
||||
echo $beschreibungstext.'\');
|
||||
updateSchlagworte(\''.$row->schlagworte.'\');
|
||||
updateCisSuche(\''.$row->cis_suche.'\');
|
||||
return upload(\''.$row->dms_id.'\',\''.$row->name.'\');" style="font-size:small">Neue Version hochladen</a></li>';
|
||||
}
|
||||
if (isset($_REQUEST['searching']) && $_REQUEST['searching'] == 'true')
|
||||
{
|
||||
@@ -1490,9 +1527,9 @@ function drawFilesList($rows)
|
||||
if ($rechte->isberechtigt('basis/dms', $kategorie->kategorie_oe_kurzbz, 'suid'))
|
||||
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?kategorie_kurzbz='.$row->kategorie_kurzbz.'&dms_id='.$row->dms_id.'&delete" onclick="return conf_del()" style="font-size:small" >Löschen</a></li>';
|
||||
}
|
||||
echo '
|
||||
</ul>
|
||||
</li>
|
||||
echo '
|
||||
</ul>
|
||||
</li>
|
||||
</ul>';
|
||||
echo '</td>';
|
||||
echo '<td style="padding: 1px;">'.$row->dms_id.'</td>';
|
||||
@@ -1540,29 +1577,33 @@ function drawRenameForm($dms_id, $version, $page = NULL, $dpp = NULL, $searching
|
||||
echo '&dpp='.$dpp;
|
||||
echo '" method="POST">';
|
||||
}
|
||||
echo '
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dateiname:</td>
|
||||
<td><input type="text" size="40" name="dateiname" value="'.$dms->convert_html_chars($dms->name).'"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beschreibung:</td>
|
||||
<td><textarea name="beschreibung" rows="2" cols="80" style="font-size: small;">'.$dms->convert_html_chars($dms->beschreibung).'</textarea></td>
|
||||
echo '
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dateiname:</td>
|
||||
<td><input type="text" size="40" name="dateiname" value="'.$dms->convert_html_chars($dms->name).'"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beschreibung:</td>
|
||||
<td><textarea name="beschreibung" rows="2" cols="80" style="font-size: small;">'.$dms->convert_html_chars($dms->beschreibung).'</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Schlagworte<br/>(Semikolon getrennt):</td>
|
||||
<td><textarea name="schlagworte" rows="2" cols="80" style="font-size: small;">'.$dms->convert_html_chars($dms->schlagworte).'</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mimetype</td>
|
||||
<td><input type="text" name="mimetype" size="80" maxlength="256" style="font-size: small;" value="'.$dms->convert_html_chars($dms->mimetype).'"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CIS-Suche:</td>
|
||||
<td><input type="checkbox" name="cis_suche" '.($dms->cis_suche == 'true'?'checked="checked"':'').'></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="action" value="rename">
|
||||
<input type="hidden" name="dms_id" value="'.$dms_id.'">
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="action" value="rename">
|
||||
<input type="hidden" name="dms_id" value="'.$dms_id.'">
|
||||
<input type="hidden" name="version" value="'.$version.'">';
|
||||
echo '<input type="submit" class="buttondesign" name="submit" value="Umbenennen">
|
||||
echo '<input type="submit" class="buttondesign" name="submit" value="Umbenennen">
|
||||
</form>';
|
||||
}
|
||||
else
|
||||
@@ -1603,8 +1644,8 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
|
||||
echo '&dpp='.$dpp;
|
||||
echo '" method="POST">';
|
||||
}
|
||||
echo '
|
||||
<select name="kategoriez">
|
||||
echo '
|
||||
<select name="kategoriez">
|
||||
<option value="auswahl">-- Bitte Auswählen --</option>';
|
||||
|
||||
foreach ($allKategorien->result as $kategorienResult)
|
||||
@@ -1619,8 +1660,8 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
|
||||
echo '<option '.$selected.' value="'.$kategorienResult->kategorie_kurzbz.'">'.$kategorienResult->bezeichnung.' ['.$kategorienResult->kategorie_kurzbz.']</option>';
|
||||
}
|
||||
|
||||
echo '</select>
|
||||
<input type="hidden" name="action" value="chkat">
|
||||
echo '</select>
|
||||
<input type="hidden" name="action" value="chkat">
|
||||
<input type="hidden" name="dms_id" value="'.$dms_id.'">';
|
||||
if (! is_null($page))
|
||||
echo '<input type="hidden" name="page" value="'.$page.'">';
|
||||
@@ -1629,6 +1670,6 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
|
||||
echo '<input type="submit" class="buttondesign" name="chkat_save" value="Speichern"></form>';
|
||||
}
|
||||
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -907,8 +907,10 @@ function StatistikPrintLVPlanungExcel()
|
||||
col = tree.columns ? tree.columns["stg_kz"] : "stg_kz";
|
||||
var studiengang_kz=tree.view.getCellText(tree.currentIndex,col);
|
||||
col = tree.columns ? tree.columns["sem"] : "sem";
|
||||
var semester=tree.view.getCellText(tree.currentIndex,col);
|
||||
var url = '<?php echo APP_ROOT ?>content/statistik/lvplanung.xls.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&studiensemester_kurzbz='+studiensemester;
|
||||
var semester = tree.view.getCellText(tree.currentIndex,col);
|
||||
col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
|
||||
var orgform = tree.view.getCellText(tree.currentIndex,col);
|
||||
var url = '<?php echo APP_ROOT ?>content/statistik/lvplanung.xls.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&studiensemester_kurzbz='+studiensemester+'&orgform_kurzbz='+orgform;
|
||||
}
|
||||
else if(document.getElementById('menu-content-tabs').selectedItem == document.getElementById('tab-organisationseinheit'))
|
||||
{
|
||||
|
||||
@@ -270,7 +270,7 @@ function FunktionDelete()
|
||||
// ****
|
||||
// * Speichert die Daten
|
||||
// ****
|
||||
function FunktionDetailSpeichern()
|
||||
function FunktionDetailSpeichern(kopie)
|
||||
{
|
||||
var funktion_kurzbz = document.getElementById('funktion-menulist-funktion').value;
|
||||
var oe_kurzbz = document.getElementById('funktion-menulist-oe_kurzbz').value;
|
||||
@@ -283,6 +283,9 @@ function FunktionDetailSpeichern()
|
||||
var bezeichnung = document.getElementById('funktion-textbox-bezeichnung').value;
|
||||
var wochenstunden = document.getElementById('funktion-textbox-wochenstunden').value;
|
||||
|
||||
if(kopie == true)
|
||||
var neu = true;
|
||||
|
||||
//Bei Mitarbeitern wird kein Studiengang mitgeschickt
|
||||
if(window.parent.document.getElementById('main-content-tabs').selectedItem==window.parent.document.getElementById('tab-mitarbeiter'))
|
||||
studiengang_kz_berecht='';
|
||||
@@ -412,6 +415,7 @@ function FunktionDetailDisableFields(val)
|
||||
document.getElementById('funktion-menulist-semester').disabled=val;
|
||||
document.getElementById('funktion-menulist-funktion').disabled=val;
|
||||
document.getElementById('funktion-button-speichern').disabled=val;
|
||||
document.getElementById('funktion-button-kopiespeichern').disabled=val;
|
||||
document.getElementById('funktion-box-datum_von').disabled=val;
|
||||
document.getElementById('funktion-box-datum_bis').disabled=val;
|
||||
document.getElementById('funktion-textbox-bezeichnung').disabled=val;
|
||||
|
||||
@@ -289,7 +289,8 @@ else
|
||||
</grid>
|
||||
<hbox>
|
||||
<spacer flex="1" />
|
||||
<button id="funktion-button-speichern" oncommand="FunktionDetailSpeichern()" label="Speichern" disabled="true"/>
|
||||
<button id="funktion-button-kopiespeichern" oncommand="FunktionDetailSpeichern(true)" label="Als Kopie speichern" disabled="true"/>
|
||||
<button id="funktion-button-speichern" oncommand="FunktionDetailSpeichern(false)" label="Speichern" disabled="true"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
<spacer/>
|
||||
|
||||
@@ -365,7 +365,7 @@ if(!$error)
|
||||
{
|
||||
if($row->summe>$max_stunden)
|
||||
{
|
||||
if(!$fixangestellt)
|
||||
if(!$fixangestellt && !$rechte->isBerechtigt('admin'))
|
||||
{
|
||||
if(!LehrauftragAufFirma($lem->mitarbeiter_uid))
|
||||
{
|
||||
@@ -402,6 +402,20 @@ if(!$error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Pruefen, ob Benutzer inaktiv ist. Wenn ja, eine Warnung ausgeben
|
||||
$benutzerAktiv = false;
|
||||
if(!$error)
|
||||
{
|
||||
$benutzer = new benutzer($lem->mitarbeiter_uid);
|
||||
$benutzerAktiv = $benutzer->bnaktiv;
|
||||
if (!$benutzerAktiv)
|
||||
{
|
||||
$return = true;
|
||||
$warnung = true;
|
||||
$errormsg = "Achtung: Der/Die Benutzer*in ist inaktiv!\nBitte informieren Sie die Personalbteilung.\n\nDaten wurden gespeichert.\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -610,7 +624,7 @@ if(!$error)
|
||||
if($row_std = $db->db_fetch_object($result_std))
|
||||
{
|
||||
//Grenze ueberschritten
|
||||
if($row_std->summe>=$max_stunden)
|
||||
if($row_std->summe>=$max_stunden && !$rechte->isBerechtigt('admin'))
|
||||
{
|
||||
$return = false;
|
||||
$error = true;
|
||||
|
||||
@@ -159,7 +159,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#gruppen"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="lehrveranstaltung-treecol-lektoren" label="Lektoren" flex="5" hidden="false" persist="hidden, width, ordinal"
|
||||
<treecol id="lehrveranstaltung-treecol-lektoren" label="Lehrende" flex="5" hidden="false" persist="hidden, width, ordinal"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#lektoren"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
|
||||
@@ -181,6 +181,13 @@ if(!$error)
|
||||
$verwendung->azgrelevant = false;
|
||||
else
|
||||
$verwendung->azgrelevant = '';
|
||||
|
||||
if($_POST['homeoffice']=='true')
|
||||
$verwendung->homeoffice = true;
|
||||
elseif($_POST['homeoffice']=='false')
|
||||
$verwendung->homeoffice = false;
|
||||
else
|
||||
$verwendung->homeoffice = '';
|
||||
|
||||
if($verwendung->save())
|
||||
{
|
||||
|
||||
@@ -1234,6 +1234,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
|
||||
inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value;
|
||||
zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked;
|
||||
azgrelevant = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked;
|
||||
homeoffice = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked;
|
||||
|
||||
if(verwendung_code=='1')
|
||||
{
|
||||
@@ -1293,6 +1294,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
|
||||
req.add('inkludierte_lehre', inkludierte_lehre);
|
||||
req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig);
|
||||
req.add('azgrelevant', azgrelevant);
|
||||
req.add('homeoffice', homeoffice);
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" ));
|
||||
zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" ));
|
||||
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
|
||||
homeoffice = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homeoffice" ));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -89,6 +90,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
|
||||
fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" ));
|
||||
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
|
||||
homeoffice = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homeoffice" ));
|
||||
//neuer Datensatz wird angelegt
|
||||
MitarbeiterVerwendungDetailNeu='true';
|
||||
|
||||
@@ -121,6 +123,15 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
{
|
||||
azgrelevant='Ja';
|
||||
}
|
||||
|
||||
if (!homeoffice)
|
||||
{
|
||||
homeoffice='Nein';
|
||||
}
|
||||
else
|
||||
{
|
||||
homeoffice='Ja';
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code;
|
||||
@@ -151,6 +162,11 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=false;
|
||||
else
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true;
|
||||
|
||||
if(homeoffice=='Nein')
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked=false;
|
||||
else
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-homeoffice').checked=true;
|
||||
MitarbeiterVerwendungDetailToggleHauptberuf();
|
||||
MitarbeiterVerwendungVerwendungChange();
|
||||
}
|
||||
|
||||
@@ -170,6 +170,10 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type
|
||||
<row>
|
||||
<label value="AZG-relevant" control="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
|
||||
<checkbox id="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Homeoffice" control="mitarbeiter-verwendung-detail-checkbox-homeoffice"/>
|
||||
<checkbox id="mitarbeiter-verwendung-detail-checkbox-homeoffice"/>
|
||||
</row>
|
||||
<row>
|
||||
<spacer />
|
||||
|
||||
@@ -29,6 +29,7 @@ require_once('../../include/benutzer.class.php');
|
||||
require_once('../../include/mitarbeiter.class.php');
|
||||
require_once('../../include/organisationseinheit.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/studiensemester.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
@@ -61,6 +62,11 @@ if(isset($_GET['uid']))
|
||||
else
|
||||
$uid = '';
|
||||
|
||||
if(isset($_GET['orgform_kurzbz']))
|
||||
$orgform_kurzbz = $_GET['orgform_kurzbz'];
|
||||
else
|
||||
$orgform_kurzbz = '';
|
||||
|
||||
$db = new basis_db();
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
@@ -68,8 +74,16 @@ $rechte->getBerechtigungen($user);
|
||||
|
||||
if($studiengang_kz != '')
|
||||
{
|
||||
if(!$rechte->isBerechtigt('assistenz', $studiengang_kz, 's'))
|
||||
die($rechte->errormsg);
|
||||
$studiengang_kz_arr = explode(',',$studiengang_kz);
|
||||
foreach ($studiengang_kz_arr AS $kennzahl)
|
||||
{
|
||||
if (!is_numeric($kennzahl))
|
||||
{
|
||||
die($kennzahl.' is not an iteger value');
|
||||
}
|
||||
if(!$rechte->isBerechtigt('assistenz', $kennzahl, 's'))
|
||||
die($rechte->errormsg);
|
||||
}
|
||||
}
|
||||
elseif($oe_kurzbz!='')
|
||||
{
|
||||
@@ -101,6 +115,9 @@ $oe_arr[''] = '';
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->getAll('typ, kurzbz', false);
|
||||
|
||||
$stsem = new studiensemester();
|
||||
|
||||
$previousStsem = $stsem->getPreviousFrom($stsem->getPreviousFrom($studiensemester_kurzbz));
|
||||
$qry = "
|
||||
SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
tbl_lehrveranstaltung.studiengang_kz,
|
||||
@@ -111,17 +128,21 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
tbl_lehreinheitmitarbeiter.stundensatz,
|
||||
tbl_lehreinheitmitarbeiter.semesterstunden lemss,
|
||||
tbl_lehreinheitmitarbeiter.planstunden,
|
||||
tbl_lehreinheitmitarbeiter.anmerkung as mitarbeiter_anmerkung,
|
||||
tbl_lehreinheit.stundenblockung,
|
||||
tbl_lehreinheit.wochenrythmus,
|
||||
tbl_lehreinheit.raumtyp,
|
||||
tbl_lehreinheit.raumtypalternativ,
|
||||
tbl_lehreinheit.anmerkung,
|
||||
tbl_lehreinheit.anmerkung as lehreinheit_anmerkung,
|
||||
tbl_lehreinheit.studiensemester_kurzbz,
|
||||
tbl_lehreinheit.start_kw,
|
||||
tbl_lehrveranstaltung.ects,
|
||||
tbl_lehrveranstaltung.semesterstunden,
|
||||
tbl_lehrveranstaltung.semesterstunden AS sws,
|
||||
tbl_lehrveranstaltung.lehrform_kurzbz,
|
||||
tbl_lehrveranstaltung.lehrveranstaltung_id,
|
||||
tbl_lehrveranstaltung.orgform_kurzbz,
|
||||
tbl_lehrveranstaltung.sprache,
|
||||
(
|
||||
SELECT nachname
|
||||
FROM PUBLIC.tbl_person
|
||||
@@ -149,6 +170,17 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung,
|
||||
FROM lehre.tbl_lehrform
|
||||
WHERE lehre.tbl_lehrform.lehrform_kurzbz = tbl_lehrveranstaltung.lehrform_kurzbz LIMIT 1
|
||||
) AS lv_type,
|
||||
(
|
||||
SELECT STRING_AGG(DISTINCT (person.nachname || ' ' || person.vorname), ', ')
|
||||
FROM lehre.tbl_lehrveranstaltung slv
|
||||
JOIN lehre.tbl_lehreinheit sle USING (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter slema USING (lehreinheit_id)
|
||||
JOIN PUBLIC.tbl_benutzer benutzer ON benutzer.uid = slema.mitarbeiter_uid
|
||||
JOIN PUBLIC.tbl_person person USING (person_id)
|
||||
WHERE lehre.tbl_lehreinheit.lehrveranstaltung_id = sle.lehrveranstaltung_id
|
||||
AND tbl_lehrveranstaltung.lehrform_kurzbz = slv.lehrform_kurzbz
|
||||
AND sle.studiensemester_kurzbz = " . $db->db_add_param($previousStsem) . "
|
||||
) AS vorjahr_lektor,
|
||||
tbl_lehrveranstaltung.lehrform_kurzbz
|
||||
FROM lehre.tbl_lehrveranstaltung
|
||||
JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id)
|
||||
@@ -156,7 +188,7 @@ JOIN lehre.tbl_lehreinheitmitarbeiter USING (lehreinheit_id)
|
||||
WHERE tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($studiensemester_kurzbz);
|
||||
|
||||
if($studiengang_kz!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz IN (".$studiengang_kz.")";
|
||||
|
||||
if($oe_kurzbz!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.oe_kurzbz=".$db->db_add_param($oe_kurzbz);
|
||||
@@ -167,6 +199,9 @@ if($semester!='')
|
||||
if($uid!='')
|
||||
$qry.=" AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=".$db->db_add_param($uid);
|
||||
|
||||
if($orgform_kurzbz!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.orgform_kurzbz=".$db->db_add_param($orgform_kurzbz);
|
||||
|
||||
$qry.=" ORDER BY tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.bezeichnung";
|
||||
|
||||
// Creating a workbook
|
||||
@@ -200,6 +235,10 @@ $worksheet->write($zeile,++$spalte,"LektorIn", $format_bold);
|
||||
$maxlength[$spalte]=6;
|
||||
$worksheet->write($zeile,++$spalte,"Fixangestellt", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
$worksheet->write($zeile,++$spalte,"Vorjahrslektor", $format_bold);
|
||||
$maxlength[$spalte]=12;
|
||||
$worksheet->write($zeile,++$spalte,"Wunschlektor", $format_bold);
|
||||
$maxlength[$spalte]=12;
|
||||
$worksheet->write($zeile,++$spalte,"Bezeichnung", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
$worksheet->write($zeile,++$spalte,"Semester", $format_bold);
|
||||
@@ -222,8 +261,12 @@ $worksheet->write($zeile,++$spalte,"Raum", $format_bold);
|
||||
$maxlength[$spalte]=4;
|
||||
$worksheet->write($zeile,++$spalte,"Raum alternativ", $format_bold);
|
||||
$maxlength[$spalte]=15;
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung", $format_bold);
|
||||
$maxlength[$spalte]=9;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung für LV Planung", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Anmerkung für Dpt/KF", $format_bold);
|
||||
$maxlength[$spalte]=25;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"LV-Leitung", $format_bold);
|
||||
$maxlength[$spalte]=9;
|
||||
@@ -240,6 +283,19 @@ $maxlength[$spalte]=9;
|
||||
$worksheet->write($zeile,++$spalte,"LV-Typ", $format_bold);
|
||||
$maxlength[$spalte]=9;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Organisationsform", $format_bold);
|
||||
$maxlength[$spalte]=15;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Sprache (LV)", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Software", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
$worksheet->write($zeile,++$spalte,"Start in KW", $format_bold);
|
||||
$maxlength[$spalte]=10;
|
||||
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
@@ -270,6 +326,10 @@ if($result = $db->db_query($qry))
|
||||
if($maxlength[$spalte]<mb_strlen($mitarbeiter->fixangestellt ? 'Ja' : 'Nein'))
|
||||
$maxlength[$spalte]=mb_strlen($mitarbeiter->fixangestellt ? 'Ja' : 'Nein');
|
||||
|
||||
$worksheet->write($zeile,++$spalte, $row->vorjahr_lektor);
|
||||
|
||||
$worksheet->write($zeile,++$spalte, '');
|
||||
|
||||
//Lehrfach
|
||||
$worksheet->write($zeile,++$spalte,$row->lf_bezeichnung);
|
||||
//if($maxlength[$spalte]<mb_strlen($row->lf_bezeichnung))
|
||||
@@ -334,10 +394,12 @@ if($result = $db->db_query($qry))
|
||||
$worksheet->write($zeile,++$spalte,$row->raumtypalternativ);
|
||||
if($maxlength[$spalte]<mb_strlen($row->raumtypalternativ))
|
||||
$maxlength[$spalte]=mb_strlen($row->raumtypalternativ);
|
||||
//Anmerkung
|
||||
$worksheet->write($zeile,++$spalte,$row->anmerkung);
|
||||
//if($maxlength[$spalte]<mb_strlen($row->anmerkung))
|
||||
//$maxlength[$spalte]=mb_strlen($row->anmerkung);
|
||||
|
||||
//Anmerkung für LV Planung
|
||||
$worksheet->write($zeile,++$spalte,$row->lehreinheit_anmerkung);
|
||||
|
||||
//Anmerkung für Dpt/KF
|
||||
$worksheet->write($zeile,++$spalte,$row->mitarbeiter_anmerkung);
|
||||
|
||||
//LV-Leitung
|
||||
$worksheet->write($zeile,++$spalte,$row->lv_leitung.' '.$row->lv_leitung_vorname);
|
||||
@@ -370,6 +432,19 @@ if($result = $db->db_query($qry))
|
||||
if($maxlength[$spalte]<mb_strlen($row->lv_type))
|
||||
$maxlength[$spalte]=mb_strlen($row->lv_type);
|
||||
|
||||
//Organisationsform
|
||||
$worksheet->write($zeile,++$spalte,$row->orgform_kurzbz);
|
||||
if($maxlength[$spalte]<mb_strlen($row->orgform_kurzbz))
|
||||
$maxlength[$spalte]=mb_strlen($row->orgform_kurzbz);
|
||||
|
||||
//Sprache (LV)
|
||||
$worksheet->write($zeile,++$spalte,$row->sprache);
|
||||
|
||||
//Software
|
||||
$worksheet->write($zeile,++$spalte,'');
|
||||
|
||||
//Start in KW
|
||||
$worksheet->write($zeile,++$spalte,$row->start_kw);
|
||||
}
|
||||
|
||||
//Betreuungen
|
||||
@@ -382,7 +457,8 @@ if($result = $db->db_query($qry))
|
||||
student_uid,
|
||||
stunden,
|
||||
tbl_projektbetreuer.stundensatz,
|
||||
tbl_projektbetreuer.person_id
|
||||
tbl_projektbetreuer.person_id,
|
||||
tbl_lehrveranstaltung.orgform_kurzbz
|
||||
FROM lehre.tbl_projektarbeit,
|
||||
lehre.tbl_lehreinheit,
|
||||
lehre.tbl_lehrveranstaltung,
|
||||
@@ -404,11 +480,14 @@ if($result = $db->db_query($qry))
|
||||
$qry.=" AND tbl_lehrveranstaltung.oe_kurzbz=".$db->db_add_param($oe_kurzbz);
|
||||
|
||||
if($studiengang_kz!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz IN(".$studiengang_kz.")";
|
||||
|
||||
if($semester!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester, FHC_INTEGER);
|
||||
|
||||
if($orgform_kurzbz!='')
|
||||
$qry.=" AND tbl_lehrveranstaltung.orgform_kurzbz=".$db->db_add_param($orgform_kurzbz);
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$spalte=0;
|
||||
@@ -501,7 +580,10 @@ if($result = $db->db_query($qry))
|
||||
$worksheet->write($zeile,++$spalte,$row->stunden*$row->stundensatz);
|
||||
if($maxlength[$spalte]<mb_strlen($row->stunden*$row->stundensatz))
|
||||
$maxlength[$spalte]=mb_strlen($row->stunden*$row->stundensatz);
|
||||
|
||||
//Organisationsform
|
||||
$worksheet->write($zeile,++$spalte,$row->orgform_kurzbz);
|
||||
if($maxlength[$spalte]<mb_strlen($row->orgform_kurzbz))
|
||||
$maxlength[$spalte]=mb_strlen($row->orgform_kurzbz);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ foreach ($mitarbeiterDAO->result as $key => $foo)
|
||||
array_multisort($nachname, SORT_ASC, $vorname, SORT_ASC, $mitarbeiterDAO->result);
|
||||
|
||||
$spalte = array('anrede','titelpre', 'vorname', 'vornamen', 'nachname', 'titelpost','gebdatum','svnr','ersatzkennzeichen',
|
||||
'aktiv','personalnummer', 'kurzbz','fixangestellt','lektor');
|
||||
'aktiv','personalnummer', 'kurzbz','fixangestellt','lektor','uid');
|
||||
$anzSpalten = count($spalte);
|
||||
|
||||
// Creating a workbook
|
||||
|
||||
@@ -110,10 +110,18 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
|
||||
{
|
||||
$db = new basis_db();
|
||||
|
||||
$studiengang_details = new studiengang();
|
||||
$studiengang_details->load($studiengang_kz);
|
||||
|
||||
if (!isset($studiengang_details->studiengang_kz))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$jahr = substr($studiensemester_kurzbz, 4);
|
||||
$art = substr($studiensemester_kurzbz, 0, 2);
|
||||
|
||||
if($studiengang_kz<0)
|
||||
if (($studiengang_kz < 0) || (isset($studiengang_details->typ) && ($studiengang_details->typ == 'l')))
|
||||
{
|
||||
$studiengang_kz=abs($studiengang_kz);
|
||||
//Lehrgang
|
||||
@@ -136,7 +144,17 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
|
||||
}
|
||||
if($art=='2' || $art=='4')
|
||||
$jahr = $jahr-1;
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
|
||||
|
||||
//FH-Burgenland - weil leider die AO Studiengänge aufgeteilt sind
|
||||
//(AO sind normal 9+erhalter Nummer, matrikelnr/personenkz wird auch im DVUH Extension berücksichtigt)
|
||||
if ($studiengang_kz >= 90010 && $studiengang_kz <= 90019)
|
||||
{
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.substr($studiengang_kz, 0, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
|
||||
}
|
||||
|
||||
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1";
|
||||
|
||||
@@ -640,11 +658,18 @@ if(!$error)
|
||||
$prestudent->aufnahmeschluessel = $_POST['aufnahmeschluessel'];
|
||||
$prestudent->facheinschlberuf = ($_POST['facheinschlberuf']=='true'?true:false);
|
||||
$prestudent->bismelden = ($_POST['bismelden']=='true'?true:false);
|
||||
$foerderrelevant = null;
|
||||
if ($_POST['foerderrelevant'] === 'true')
|
||||
$foerderrelevant = true;
|
||||
elseif ($_POST['foerderrelevant'] === 'false')
|
||||
$foerderrelevant = false;
|
||||
$prestudent->foerderrelevant = $foerderrelevant;
|
||||
$prestudent->dual = ($_POST['dual']=='true'?true:false);
|
||||
$prestudent->anmerkung = $_POST['anmerkung'];
|
||||
$prestudent->mentor = $_POST['mentor'];
|
||||
$prestudent->gsstudientyp_kurzbz = $_POST['gsstudientyp_kurzbz'];
|
||||
$prestudent->priorisierung = $_POST['priorisierung'];
|
||||
$prestudent->standort_code = $_POST['standort_code'];
|
||||
//$prestudent->insertamum = date('Y-m-d H:i:s');
|
||||
//$prestudent->insertvon = $user;
|
||||
$prestudent->updateamum = date('Y-m-d H:i:s');
|
||||
|
||||
@@ -79,6 +79,10 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/anrechnung/rdf#lehrveranstaltung_bez_kompatibel"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-anrechnungen-tree-status" label="Status" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/anrechnung/rdf#status" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-anrechnungen-tree-genehmigt_von" label="genehmigt von" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/anrechnung/rdf#genehmigt_von" />
|
||||
@@ -99,6 +103,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#begruendung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#lehrveranstaltung_id_kompatibel"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#lehrveranstaltung_bez_kompatibel"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#status"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#genehmigt_von"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/anrechnung/rdf#insertamum"/>
|
||||
</treerow>
|
||||
|
||||
@@ -512,7 +512,6 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
|
||||
<label value="Studientyp" control="student-detail-menulist-gsstudientyp"/>
|
||||
<menulist id="student-detail-menulist-gsstudientyp" disabled="true"
|
||||
datasources="<?php echo APP_ROOT ?>rdf/gsstudientyp.rdf.php" flex="1"
|
||||
@@ -525,6 +524,18 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<label value="Bisstandort" control="student-prestudent-menulist-bisstandort" id="student-prestudent-label-bisstandort"/>
|
||||
<menulist id="student-prestudent-menulist-bisstandort" disabled="true"
|
||||
datasources="<?php echo APP_ROOT ?>rdf/bisstandort.rdf.php?optional=true" flex="1"
|
||||
ref="http://www.technikum-wien.at/bisstandort/alle" >
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/bisstandort/rdf#standort_code"
|
||||
label="rdf:http://www.technikum-wien.at/bisstandort/rdf#bezeichnung"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<label value="Facheinschlaegig berufstaetig" control="student-prestudent-checkbox-facheinschlberuf" hidden="true"/>
|
||||
<checkbox id="student-prestudent-checkbox-facheinschlberuf" checked="true" disabled="true" hidden="true"/>
|
||||
</row>
|
||||
@@ -534,32 +545,43 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<columns>
|
||||
<column flex="1"/>
|
||||
<column flex="12"/>
|
||||
<column flex="3"/>
|
||||
<column flex="2"/>
|
||||
<column flex="2"/>
|
||||
<column flex="3"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="Anmerkung" control="student-prestudent-textbox-anmerkung"/>
|
||||
<textbox id="student-prestudent-textbox-anmerkung" disabled="true"/>
|
||||
<hbox>
|
||||
<label value="Bismelden" control="student-prestudent-checkbox-bismelden"/>
|
||||
<checkbox id="student-prestudent-checkbox-bismelden" checked="true" disabled="true"/>
|
||||
</hbox>
|
||||
<label value="Anmerkung" control="student-prestudent-textbox-anmerkung"/>
|
||||
<textbox id="student-prestudent-textbox-anmerkung" disabled="true"/>
|
||||
<hbox>
|
||||
<label value="Bismelden" control="student-prestudent-checkbox-bismelden"/>
|
||||
<checkbox id="student-prestudent-checkbox-bismelden" checked="true" disabled="true"/>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label value="Dual" control="student-prestudent-checkbox-dual"/>
|
||||
<checkbox id="student-prestudent-checkbox-dual" checked="false" disabled="true"/>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label value="Priorität" control="student-prestudent-textbox-priorisierung"/>
|
||||
<?php
|
||||
$readonly = 'readonly="true"';
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if($rechte->isBerechtigt('basis/prestudent'))
|
||||
$readonly = '';
|
||||
?>
|
||||
<textbox id="student-prestudent-textbox-priorisierung" disabled="true" <?php echo $readonly ?>/>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label value="Förderrelevant" id="student-prestudent-label-foerderrelevant" control="student-prestudent-menulist-foerderrelevant"/>
|
||||
<menulist id="student-prestudent-menulist-foerderrelevant" disabled="true">
|
||||
<menupopup>
|
||||
<menuitem value="" label="Wie Studiengang"/>
|
||||
<menuitem value="true" label="Ja"/>
|
||||
<menuitem value="false" label="Nein"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<label value="Priorität" control="student-prestudent-textbox-priorisierung"/>
|
||||
<?php
|
||||
$readonly = 'readonly="true"';
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if($rechte->isBerechtigt('basis/prestudent'))
|
||||
$readonly = '';
|
||||
?>
|
||||
<textbox id="student-prestudent-textbox-priorisierung" disabled="true" <?php echo $readonly ?>/>
|
||||
</hbox>
|
||||
</row>
|
||||
<row id="student-prestudent-row-mentor">
|
||||
<label value="MentorIn" control="student-prestudent-textbox-mentor"/>
|
||||
|
||||
@@ -126,6 +126,12 @@ else
|
||||
echo '
|
||||
<menu id="'.$id.'" label="'.$label.'">
|
||||
<menupopup>';
|
||||
|
||||
if ($id == 'student-toolbar-student')
|
||||
echo '<menuitem label="Student" oncommand="StudentUnterbrecherZuStudent()" disabled="false" tooltiptext="Status ändern auf Student"/>';
|
||||
if ($id == 'interessent-toolbar-zustudent')
|
||||
echo '<menuitem label="Student" oncommand="InteressentzuStudent()" disabled="false" tooltiptext="Status ändern auf Student"/>';
|
||||
|
||||
foreach($gruende[$status_kurzbz] as $row)
|
||||
{
|
||||
$commandWithID = str_replace('STATUSGRUNDID',$row['statusgrund_id'],$command);
|
||||
@@ -204,6 +210,21 @@ else
|
||||
<menuitem id="student-toolbar-filter-offenebuchungen" label="offene Buchungen" oncommand="StudentKontoFilterStudenten('konto')" disabled="false" tooltiptext="Liste aller Studenten mit offenen Buchungen"/>
|
||||
<menuitem id="student-toolbar-filter-studiengebuehr" label="nicht gebuchte Studiengebuehr" oncommand="StudentKontoFilterStudenten('studiengebuehr')" disabled="false" tooltiptext="Liste aller Studenten die noch nicht mit Studienbebuehr belastet wurden" />
|
||||
<menuitem id="student-toolbar-filter-zgvohnedatum" label="ZGV eingetragen ohne Datum" oncommand="StudentKontoFilterStudenten('zgvohnedatum')" disabled="false" tooltiptext="Liste aller Studenten die ZGV eingetragen haben bei denen aber kein ZGV Datum gesetzt ist" />
|
||||
<menu label="nach Statusgrund">
|
||||
<menupopup id="student-filter-statusgrund-menu-popup">
|
||||
<?php
|
||||
$statusgrund = new statusgrund();
|
||||
$statusgrund->getAll(true);
|
||||
|
||||
foreach($statusgrund->result as $row)
|
||||
{
|
||||
?>
|
||||
<menuitem id="student-toolbar-filter-statusgrund-<?php echo $row->statusgrund_id;?>" label="<?php echo $row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];?>" oncommand="StudentKontoFilterStudenten('stud-statusgrund-<?php echo $row->statusgrund_id; ?>')" disabled="false" tooltiptext="Liste aller Studenten mit Statusgrund <?php echo $row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];?>" />
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
<?php
|
||||
|
||||
@@ -1034,7 +1034,11 @@ function StudentAuswahl()
|
||||
StudentGesamtNotenTreeloaded=false;
|
||||
|
||||
stsem = getStudiensemester();
|
||||
var url = '<?php echo APP_ROOT ?>rdf/student.rdf.php?prestudent_id='+prestudent_id+'&studiensemester_kurzbz='+stsem+'&'+gettimestamp();
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'prestudent_id': prestudent_id,
|
||||
'studiensemester_kurzbz': stsem
|
||||
});
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
|
||||
getService(Components.interfaces.nsIRDFService);
|
||||
@@ -1157,6 +1161,8 @@ function StudentAuswahl()
|
||||
dual = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dual" ));
|
||||
gsstudientyp_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gsstudientyp_kurzbz" ));
|
||||
priorisierung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#priorisierung" ));
|
||||
foerderrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#foerderrelevant" ));
|
||||
standort_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#standort_code" ));
|
||||
|
||||
document.getElementById('student-prestudent-menulist-aufmerksamdurch').value=aufmerksamdurch_kurzbz;
|
||||
document.getElementById('student-prestudent-menulist-berufstaetigkeit').value=berufstaetigkeit_code;
|
||||
@@ -1210,6 +1216,8 @@ function StudentAuswahl()
|
||||
document.getElementById('student-prestudent-textbox-priorisierung').value=priorisierung;
|
||||
document.getElementById('student-prestudent-textbox-mentor').value=mentor;
|
||||
document.getElementById('student-detail-menulist-gsstudientyp').value=gsstudientyp_kurzbz;
|
||||
document.getElementById('student-prestudent-menulist-foerderrelevant').value=foerderrelevant;
|
||||
document.getElementById('student-prestudent-menulist-bisstandort').value=standort_code;
|
||||
|
||||
document.getElementById('student-detail-groupbox-caption').label='Zugangsvoraussetzung für '+nachname+' '+vorname;
|
||||
rollentree = document.getElementById('student-prestudent-tree-rolle');
|
||||
@@ -1733,12 +1741,14 @@ function StudentPrestudentDisableFields(val)
|
||||
document.getElementById('student-prestudent-menulist-aufnahmeschluessel').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-facheinschlberuf').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-bismelden').disabled=val;
|
||||
document.getElementById('student-prestudent-menulist-foerderrelevant').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-dual').disabled=val;
|
||||
document.getElementById('student-prestudent-button-save').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-anmerkung').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-priorisierung').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-mentor').disabled=val;
|
||||
document.getElementById('student-detail-menulist-gsstudientyp').disabled=val;
|
||||
document.getElementById('student-prestudent-menulist-bisstandort').disabled=val;
|
||||
|
||||
// Studiengang des angeklickten Prestudenten ermitteln
|
||||
var tree = document.getElementById('student-tree');
|
||||
@@ -1819,6 +1829,8 @@ function StudentPrestudentSave()
|
||||
priorisierung = document.getElementById('student-prestudent-textbox-priorisierung').value;
|
||||
mentor = document.getElementById('student-prestudent-textbox-mentor').value;
|
||||
gsstudientyp = document.getElementById('student-detail-menulist-gsstudientyp').value;
|
||||
foerderrelevant = document.getElementById('student-prestudent-menulist-foerderrelevant').value;
|
||||
standort_code = document.getElementById('student-prestudent-menulist-bisstandort').value;
|
||||
|
||||
if(zgvdatum!='' && !CheckDatum(zgvdatum))
|
||||
{
|
||||
@@ -1876,6 +1888,8 @@ function StudentPrestudentSave()
|
||||
req.add('priorisierung', priorisierung);
|
||||
req.add('mentor', mentor);
|
||||
req.add('gsstudientyp_kurzbz', gsstudientyp);
|
||||
req.add('foerderrelevant', foerderrelevant);
|
||||
req.add('standort_code', standort_code);
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
@@ -2616,11 +2630,48 @@ function StudentKontoFilter()
|
||||
kontotree.builder.addListener(StudentKontoTreeListener);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Generiert eine student.rdf URI
|
||||
// ****
|
||||
function buildStudentRDFURI(queryparams, tree)
|
||||
{
|
||||
var baseurl = "<?php echo APP_ROOT; ?>rdf/student.rdf.php";
|
||||
if ( typeof tree !== "undefined" )
|
||||
{
|
||||
var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
|
||||
queryparams.orgform = tree.view.getCellText(tree.currentIndex,col);
|
||||
}
|
||||
return _buildURI(baseurl, queryparams);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI
|
||||
// ****
|
||||
function _buildURI(baseurl, queryparams)
|
||||
{
|
||||
var str = [];
|
||||
var url = baseurl;
|
||||
for (var p in queryparams)
|
||||
{
|
||||
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
|
||||
{
|
||||
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p]));
|
||||
}
|
||||
}
|
||||
var querystring = str.join("&");
|
||||
if ( querystring.length > 0 )
|
||||
{
|
||||
url = url + '?' + querystring + '&' + gettimestamp();
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Setzt im Studententree einen vordefinierten Filter
|
||||
// ****
|
||||
function StudentKontoFilterStudenten(filter)
|
||||
{
|
||||
//alert(filter);
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree=document.getElementById('tree-verband');
|
||||
|
||||
@@ -2643,12 +2694,26 @@ function StudentKontoFilterStudenten(filter)
|
||||
var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex);
|
||||
var typ = getTreeCellText(tree, 'typ', tree.currentIndex);
|
||||
var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex);
|
||||
|
||||
|
||||
if(stsem=='')
|
||||
stsem = getStudiensemester();
|
||||
if(typ=='')
|
||||
typ='student';
|
||||
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2="+filter+"&buchungstyp="+buchungstyp+"&"+gettimestamp();
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'studiengang_kz': stg_kz,
|
||||
'semester': sem,
|
||||
'verband': ver,
|
||||
'gruppe': grp,
|
||||
'gruppe_kurzbz': gruppe,
|
||||
'studiensemester_kurzbz': stsem,
|
||||
'typ': typ,
|
||||
'filter2': filter,
|
||||
'buchungstyp': buchungstyp
|
||||
}, tree);
|
||||
|
||||
console.log(url);
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
@@ -2666,6 +2731,7 @@ function StudentKontoFilterStudenten(filter)
|
||||
treeStudent.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
|
||||
//alert(url);
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
StudentTreeDatasource = rdfService.GetDataSource(url);
|
||||
StudentTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
@@ -2707,7 +2773,18 @@ function StudentKontoFilterBuchungstyp()
|
||||
stsem = getStudiensemester();
|
||||
if(typ=='')
|
||||
typ='student';
|
||||
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?studiengang_kz="+stg_kz+"&semester="+sem+"&verband="+ver+"&gruppe="+grp+"&gruppe_kurzbz="+gruppe+"&studiensemester_kurzbz="+stsem+"&typ="+typ+"&filter2=buchungstyp;"+filter+"&"+gettimestamp();
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'studiengang_kz': stg_kz,
|
||||
'semester': sem,
|
||||
'verband': ver,
|
||||
'gruppe': grp,
|
||||
'gruppe_kurzbz': gruppe,
|
||||
'studiensemester_kurzbz': stsem,
|
||||
'typ': typ,
|
||||
'filter2': 'buchungstyp;' + filter
|
||||
}, tree);
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
@@ -5370,6 +5447,7 @@ function StudentAnrechnungAuswahl()
|
||||
lehrveranstaltung_id_kompatibel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#lehrveranstaltung_id_kompatibel" ));
|
||||
genehmigt_von = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#genehmigt_von" ));
|
||||
anzahl_notizen = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anzahl_notizen" ));
|
||||
status = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#status" ));
|
||||
|
||||
// Studiengang ermitteln
|
||||
var tree = document.getElementById('student-tree');
|
||||
@@ -5488,8 +5566,10 @@ function StudentSuche()
|
||||
document.getElementById('tree-verband').view.selection.clearSelection();
|
||||
|
||||
//Datasource setzten und Felder deaktivieren
|
||||
url = "<?php echo APP_ROOT; ?>rdf/student.rdf.php?filter="+encodeURIComponent(filter)+"&"+gettimestamp();
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'filter': filter
|
||||
});
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
|
||||
@@ -1,155 +1,159 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
|
||||
?>
|
||||
var StudentRolleStudiensemester_old;
|
||||
var StudentRolleAusbildungssemester_old;
|
||||
var StudentRolleStatusgrundDatasource;
|
||||
|
||||
// ****
|
||||
// * Laedt die Rolle
|
||||
// ****
|
||||
function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
if(status_kurzbz!='')
|
||||
{
|
||||
document.getElementById('student-rolle-grid-row-textbox').hidden=false;
|
||||
document.getElementById('student-rolle-grid-row-menulist').hidden=true;
|
||||
|
||||
StudentRolleStudiensemester_old=studiensemester_kurzbz;
|
||||
StudentRolleAusbildungssemester_old=ausbildungssemester;
|
||||
|
||||
//Daten holen
|
||||
var url = '<?php echo APP_ROOT ?>rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
|
||||
getService(Components.interfaces.nsIRDFService);
|
||||
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
|
||||
var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester);
|
||||
|
||||
var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf";
|
||||
|
||||
//RDF parsen
|
||||
var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" ));
|
||||
var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" ));
|
||||
var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" ));
|
||||
var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" ));
|
||||
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
|
||||
var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
|
||||
var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" ));
|
||||
var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" ));
|
||||
var neu = false;
|
||||
StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
StudentRolleStudiensemester_old='';
|
||||
StudentRolleAusbildungssemester_old='';
|
||||
|
||||
document.getElementById('student-rolle-grid-row-textbox').hidden=true;
|
||||
document.getElementById('student-rolle-grid-row-menulist').hidden=false;
|
||||
|
||||
//Defaultwerte bei Neuem Datensatz
|
||||
var status_kurzbz = 'Interessent';
|
||||
var studiensemester_kurzbz=window.opener.getStudiensemester();
|
||||
var ausbildungssemester='1';
|
||||
var datum = '<?php echo date('d.m.Y') ?>';
|
||||
var bestaetigt_datum = '<?php echo date('d.m.Y') ?>';
|
||||
var bewerbung_abgeschicktamum = '';
|
||||
var orgform_kurzbz = '';
|
||||
var studienplan_id = '';
|
||||
var anmerkung = '';
|
||||
var statusgrund_id = '';
|
||||
var rt_stufe = '';
|
||||
StudentRolleLoadStatusgrund(status_kurzbz);
|
||||
}
|
||||
|
||||
document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id;
|
||||
document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz;
|
||||
document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz;
|
||||
document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester;
|
||||
document.getElementById('student-rolle-datum-datum').value=datum;
|
||||
document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum;
|
||||
document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum;
|
||||
document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz;
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id);
|
||||
document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung;
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id);
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Speichern der Rolle
|
||||
// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil
|
||||
// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt
|
||||
// * kommt.
|
||||
// ****
|
||||
function StudentRolleSpeichern()
|
||||
{
|
||||
if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old))
|
||||
window.close();
|
||||
}
|
||||
|
||||
function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund');
|
||||
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp();
|
||||
|
||||
try
|
||||
{
|
||||
StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver);
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = menulistgrund.database.GetDataSources();
|
||||
while(oldDatasources.hasMoreElements())
|
||||
{
|
||||
menulistgrund.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
//Refresh damit die entfernten DS auch wirklich entfernt werden
|
||||
menulistgrund.builder.rebuild();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url);
|
||||
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
||||
menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource);
|
||||
menulistgrund.builder.rebuild();
|
||||
}
|
||||
|
||||
/**
|
||||
* Wenn das Dropdown fuer den Status geaendert wird, dann
|
||||
* werden die Statusgruende zu diesem Status geladen
|
||||
*/
|
||||
function StudentRolleChangeStatus()
|
||||
{
|
||||
var status = document.getElementById('student-rolle-menulist-status_kurzbz').value;
|
||||
StudentRolleLoadStatusgrund(status);
|
||||
}
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
|
||||
?>
|
||||
var StudentRolleStudiensemester_old;
|
||||
var StudentRolleAusbildungssemester_old;
|
||||
var StudentRolleStatusgrundDatasource;
|
||||
|
||||
// ****
|
||||
// * Laedt die Rolle
|
||||
// ****
|
||||
function StudentRolleInit(prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
if(status_kurzbz!='')
|
||||
{
|
||||
document.getElementById('student-rolle-grid-row-textbox').hidden=false;
|
||||
document.getElementById('student-rolle-grid-row-menulist').hidden=true;
|
||||
|
||||
StudentRolleStudiensemester_old=studiensemester_kurzbz;
|
||||
StudentRolleAusbildungssemester_old=ausbildungssemester;
|
||||
|
||||
//Daten holen
|
||||
var url = '<?php echo APP_ROOT ?>rdf/prestudentrolle.rdf.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&'+gettimestamp();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
|
||||
getService(Components.interfaces.nsIRDFService);
|
||||
|
||||
var dsource = rdfService.GetDataSourceBlocking(url);
|
||||
|
||||
var subject = rdfService.GetResource("http://www.technikum-wien.at/prestudentrolle/" + prestudent_id+"/"+status_kurzbz+"/"+studiensemester_kurzbz+"/"+ausbildungssemester);
|
||||
|
||||
var predicateNS = "http://www.technikum-wien.at/prestudentrolle/rdf";
|
||||
|
||||
//RDF parsen
|
||||
var datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#datum" ));
|
||||
var bestaetigt_datum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bestaetigt_am" ));
|
||||
var bewerbung_abgeschicktamum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bewerbung_abgeschicktamum" ));
|
||||
var orgform_kurzbz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#orgform_kurzbz" ));
|
||||
var studienplan_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#studienplan_id" ));
|
||||
var anmerkung= getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" ));
|
||||
var statusgrund_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#statusgrund_id" ));
|
||||
var rt_stufe = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rt_stufe" ));
|
||||
var neu = false;
|
||||
StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
StudentRolleStudiensemester_old='';
|
||||
StudentRolleAusbildungssemester_old='';
|
||||
|
||||
document.getElementById('student-rolle-grid-row-textbox').hidden=true;
|
||||
document.getElementById('student-rolle-grid-row-menulist').hidden=false;
|
||||
|
||||
//Defaultwerte bei Neuem Datensatz
|
||||
var status_kurzbz = 'Interessent';
|
||||
var studiensemester_kurzbz=window.opener.getStudiensemester();
|
||||
var ausbildungssemester='1';
|
||||
var datum = '<?php echo date('d.m.Y') ?>';
|
||||
var bestaetigt_datum = '<?php echo date('d.m.Y') ?>';
|
||||
var bewerbung_abgeschicktamum = '';
|
||||
var orgform_kurzbz = '';
|
||||
var studienplan_id = '';
|
||||
var anmerkung = '';
|
||||
var statusgrund_id = '';
|
||||
var rt_stufe = '';
|
||||
StudentRolleLoadStatusgrund(status_kurzbz);
|
||||
}
|
||||
|
||||
document.getElementById('student-rolle-textbox-prestudent_id').value=prestudent_id;
|
||||
document.getElementById('student-rolle-textbox-status_kurzbz').value=status_kurzbz;
|
||||
document.getElementById('student-rolle-menulist-studiensemester').value=studiensemester_kurzbz;
|
||||
document.getElementById('student-rolle-menulist-ausbildungssemester').value=ausbildungssemester;
|
||||
document.getElementById('student-rolle-datum-datum').value=datum;
|
||||
document.getElementById('student-rolle-datum-bestaetigt_datum').value=bestaetigt_datum;
|
||||
document.getElementById('student-rolle-datum-bewerbung_abgeschicktamum').value=bewerbung_abgeschicktamum;
|
||||
document.getElementById('student-rolle-menulist-orgform_kurzbz').value=orgform_kurzbz;
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-studienplan', studienplan_id);
|
||||
document.getElementById('student-rolle-textbox-anmerkung').value=anmerkung;
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-statusgrund', statusgrund_id);
|
||||
MenulistSelectItemOnValue('student-rolle-menulist-stufe', rt_stufe);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Speichern der Rolle
|
||||
// * Hierzu wird eine Funktion vom Aufrufenden Fenster gestartet weil
|
||||
// * es dann nicht zu Problemen mit den Zugriffen auf die anderen Fkt
|
||||
// * kommt.
|
||||
// ****
|
||||
function StudentRolleSpeichern()
|
||||
{
|
||||
if(window.opener.StudentRolleSpeichern(document, StudentRolleStudiensemester_old, StudentRolleAusbildungssemester_old))
|
||||
window.close();
|
||||
}
|
||||
|
||||
function StudentRolleLoadStatusgrund(status_kurzbz, statusgrund_id)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var menulistgrund = document.getElementById('student-rolle-menulist-statusgrund');
|
||||
|
||||
if (typeof statusgrund_id !== 'undefined')
|
||||
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp();
|
||||
else
|
||||
url='<?php echo APP_ROOT;?>rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&ts'+gettimestamp();
|
||||
|
||||
try
|
||||
{
|
||||
StudentRolleStatusgrundDatasource.removeXMLSinkObserver(StudentDetailRolleTreeSinkObserver);
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = menulistgrund.database.GetDataSources();
|
||||
while(oldDatasources.hasMoreElements())
|
||||
{
|
||||
menulistgrund.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
//Refresh damit die entfernten DS auch wirklich entfernt werden
|
||||
menulistgrund.builder.rebuild();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
StudentRolleStatusgrundDatasource = rdfService.GetDataSourceBlocking(url);
|
||||
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
StudentRolleStatusgrundDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
||||
menulistgrund.database.AddDataSource(StudentRolleStatusgrundDatasource);
|
||||
menulistgrund.builder.rebuild();
|
||||
}
|
||||
|
||||
/**
|
||||
* Wenn das Dropdown fuer den Status geaendert wird, dann
|
||||
* werden die Statusgruende zu diesem Status geladen
|
||||
*/
|
||||
function StudentRolleChangeStatus()
|
||||
{
|
||||
var status = document.getElementById('student-rolle-menulist-status_kurzbz').value;
|
||||
StudentRolleLoadStatusgrund(status);
|
||||
}
|
||||
|
||||
@@ -243,7 +243,8 @@ class anrechnung extends basis_db
|
||||
*/
|
||||
public function delete($anrechnung_id)
|
||||
{
|
||||
$qry = "DELETE FROM lehre.tbl_anrechnung WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id);
|
||||
$qry = "DELETE FROM lehre.tbl_anrechnung_anrechnungstatus WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id). "; ";
|
||||
$qry.= "DELETE FROM lehre.tbl_anrechnung WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
@@ -362,4 +363,43 @@ class anrechnung extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getLastAnrechnungstatus($anrechnung_id)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig');
|
||||
|
||||
$qry = '
|
||||
SELECT *, '. $bezeichnung_mehrsprachig. '
|
||||
FROM lehre.tbl_anrechnungstatus
|
||||
JOIN lehre.tbl_anrechnung_anrechnungstatus USING (status_kurzbz)
|
||||
WHERE anrechnung_id = ' . $this->db_add_param($anrechnung_id). '
|
||||
ORDER BY insertamum DESC
|
||||
LIMIT 1
|
||||
';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
$obj->anrechnungstatus_id = $row->anrechnungstatus_id;
|
||||
$obj->status_kurzbz = $row->status_kurzbz;
|
||||
$obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
|
||||
|
||||
$this->result[]= $obj;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Daten konnten nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Daten konnten nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,10 +509,11 @@ class betriebsmittelperson extends basis_db
|
||||
|
||||
/**
|
||||
* Sucht welche Person die uebergebene Kartennummer hat
|
||||
* @param $nummer Kartennummer
|
||||
* @param $nummer Kartennummer
|
||||
* @param boolean $checkRetour Optional. Default true. Checkt, ob die Karte bereits retourniert wurde. Wenn false werden auch bereits retournierte Karten zurückgegeben
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getKartenzuordnung($nummer)
|
||||
public function getKartenzuordnung($nummer, $checkRetour=true)
|
||||
{
|
||||
// fuehrende Nullen bei Kartennummern auch checken
|
||||
$qry='
|
||||
@@ -536,8 +537,12 @@ class betriebsmittelperson extends basis_db
|
||||
OR tbl_betriebsmittel.nummer2='.$this->db_add_param('00000'.$nummer).'
|
||||
)
|
||||
AND tbl_betriebsmittel.betriebsmitteltyp=\'Zutrittskarte\'
|
||||
AND (ausgegebenam<=now() OR ausgegebenam is NULL)
|
||||
AND (retouram>=now() OR retouram is NULL)';
|
||||
AND (ausgegebenam<=now() OR ausgegebenam is NULL)';
|
||||
|
||||
if ($checkRetour == true)
|
||||
{
|
||||
$qry .= ' AND (retouram>=now() OR retouram is NULL)';
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
|
||||
@@ -48,6 +48,7 @@ class bisverwendung extends basis_db
|
||||
public $inkludierte_lehre;
|
||||
public $zeitaufzeichnungspflichtig;
|
||||
public $azgrelevant;
|
||||
public $homeoffice;
|
||||
|
||||
public $ba1bez;
|
||||
public $ba2bez;
|
||||
@@ -124,6 +125,7 @@ class bisverwendung extends basis_db
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -257,13 +259,22 @@ class bisverwendung extends basis_db
|
||||
{
|
||||
$azgrelevant = 'null';
|
||||
}
|
||||
if(is_bool($this->homeoffice))
|
||||
{
|
||||
$homeoffice = $this->db_add_param($this->homeoffice, FHC_BOOLEAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
$homeoffice = 'null';
|
||||
}
|
||||
|
||||
if($new)
|
||||
{
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode,
|
||||
verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden,
|
||||
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig, azgrelevant) VALUES (".
|
||||
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig,
|
||||
azgrelevant, homeoffice) VALUES (".
|
||||
$this->db_add_param($this->ba1code, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->ba2code, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '.
|
||||
@@ -282,7 +293,8 @@ class bisverwendung extends basis_db
|
||||
$this->db_add_param($this->dv_art).','.
|
||||
$this->db_add_param($this->inkludierte_lehre).','.
|
||||
$zeitaufzeichnungspflichtig.','.
|
||||
$azgrelevant. ');';
|
||||
$azgrelevant.','.
|
||||
$homeoffice. ');';
|
||||
|
||||
}
|
||||
else
|
||||
@@ -307,7 +319,8 @@ class bisverwendung extends basis_db
|
||||
" dv_art=".$this->db_add_param($this->dv_art).",".
|
||||
" inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",".
|
||||
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.",".
|
||||
" azgrelevant =". $azgrelevant.
|
||||
" azgrelevant =". $azgrelevant.",".
|
||||
" homeoffice =". $homeoffice.
|
||||
" WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
@@ -401,6 +414,7 @@ class bisverwendung extends basis_db
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
@@ -458,6 +472,7 @@ class bisverwendung extends basis_db
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -517,6 +532,7 @@ class bisverwendung extends basis_db
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -571,6 +587,7 @@ class bisverwendung extends basis_db
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -625,6 +642,7 @@ class bisverwendung extends basis_db
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -688,6 +706,7 @@ class bisverwendung extends basis_db
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
@@ -373,7 +373,7 @@ class coodle extends basis_db
|
||||
WHERE
|
||||
(uid =".$this->db_add_param($uid, FHC_STRING, false)."
|
||||
OR ersteller_uid =".$this->db_add_param($uid, FHC_STRING, false).")
|
||||
AND endedatum >= CURRENT_DATE - interval '20 days';";
|
||||
AND endedatum >= CURRENT_DATE - interval '90 days';";
|
||||
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__). '/basis_db.class.php');
|
||||
require_once(dirname(__FILE__). '/sprache.class.php');
|
||||
require_once(dirname(__FILE__). '/functions.inc.php');
|
||||
|
||||
class lehrmodus extends basis_db
|
||||
{
|
||||
//Objekt Lehrmodus
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $lehrmodus_kurzbz;
|
||||
public $bezeichnung_mehrsprachig;
|
||||
public $aktiv;
|
||||
|
||||
/**
|
||||
* Konstruktor - Laedt optional einen Lehrmodus
|
||||
* @param lehrmodus_kurbz Lehrmodus der geladen werden soll
|
||||
*/
|
||||
public function __construct($lehrmodus_kurzbz = null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($lehrmodus_kurzbz != null)
|
||||
$this->load($lehrmodus_kurzbz);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert alle Lehrmodi aus der table tbl_lehrmodus
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = "SELECT *, ".$sprache->getSprachQuery('bezeichnung_mehrsprachig')."
|
||||
FROM lehre.tbl_lehrmodus";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$lehrmodus = new lehrmodus();
|
||||
|
||||
$lehrmodus->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lehrmodus->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
$lehrmodus->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row);
|
||||
|
||||
$this->result[] = $lehrmodus;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt einen Lehrmodus
|
||||
* @param lehrmodus_kurzbz ID des Datensatzes der zu laden ist
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load($lehrmodus_kurzbz)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = "SELECT
|
||||
*,".$sprache->getSprachQuery('bezeichnung_mehrsprachig')."
|
||||
FROM
|
||||
lehre.tbl_lehrmodus
|
||||
WHERE
|
||||
lehrmodus_kurzbz=".$this->db_add_param($lehrmodus_kurzbz).";";
|
||||
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Lesen vom Lehrmodus';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row);
|
||||
$this->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Lehrmodus mit dieser ID vorhanden';
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Baut die Datenstruktur für senden als JSON Objekt auf
|
||||
*/
|
||||
// public function cleanResult()
|
||||
// {
|
||||
// $data = array();
|
||||
// if(count($this->result)>0)
|
||||
// {
|
||||
// foreach ($this->result as $lm)
|
||||
// {
|
||||
// $obj = new stdClass();
|
||||
// $obj->lehrmodus_kurzbz = $lm->lehrmodus_kurzbz;
|
||||
// $data[] = $obj;
|
||||
// }
|
||||
// }
|
||||
// return $data;
|
||||
// }
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -58,6 +58,7 @@ class lehrveranstaltung extends basis_db
|
||||
public $bezeichnung_english; // varchar(256)
|
||||
public $orgform_kurzbz; // varchar(3)
|
||||
public $lehrtyp_kurzbz; // varchar(32)
|
||||
public $lehrmodus_kurzbz; //varchar(32)
|
||||
public $oe_kurzbz; // varchar(32)
|
||||
public $raumtyp_kurzbz; // varchar(16)
|
||||
public $anzahlsemester; // smallint
|
||||
@@ -68,6 +69,7 @@ class lehrveranstaltung extends basis_db
|
||||
public $farbe;
|
||||
public $lehrauftrag=true;
|
||||
|
||||
|
||||
public $studienplan_lehrveranstaltung_id;
|
||||
public $studienplan_lehrveranstaltung_id_parent;
|
||||
public $stpllv_pflicht=true;
|
||||
@@ -147,6 +149,7 @@ class lehrveranstaltung extends basis_db
|
||||
$this->bezeichnung_english = $row->bezeichnung_english;
|
||||
$this->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$this->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$this->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$this->oe_kurzbz = $row->oe_kurzbz;
|
||||
$this->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$this->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -225,6 +228,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -258,10 +262,12 @@ class lehrveranstaltung extends basis_db
|
||||
* @param $sort smallint Sortierung
|
||||
* @param $oe_kurzbz string Organisationseinheit
|
||||
* @param $lehrtyp string lehrtyp_kurzbz
|
||||
* @param $lehrmodus string lehrmodus_kurzbz
|
||||
* @param $orgform string Organisationsform
|
||||
* @param $lehrmodus string lehrmodus_kurzbz
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load_lva($studiengang_kz=null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null, $orgform=null)
|
||||
public function load_lva($studiengang_kz=null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null, $lehrmodus=null, $orgform=null)
|
||||
{
|
||||
//Variablen pruefen
|
||||
if($semester == "null")
|
||||
@@ -320,6 +326,9 @@ class lehrveranstaltung extends basis_db
|
||||
if(!is_null($lehrtyp))
|
||||
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
|
||||
|
||||
if(!is_null($lehrmodus))
|
||||
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
|
||||
|
||||
if(!is_null($orgform) && $orgform!='')
|
||||
$qry .= " AND orgform_kurzbz=".$this->db_add_param($orgform);
|
||||
|
||||
@@ -369,6 +378,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -497,6 +507,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -578,6 +589,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -740,40 +752,41 @@ class lehrveranstaltung extends basis_db
|
||||
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum,
|
||||
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
|
||||
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
|
||||
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo, lehrauftrag) VALUES (' .
|
||||
$this->db_add_param($this->studiengang_kz) . ', ' .
|
||||
$this->db_add_param($this->bezeichnung) . ', ' .
|
||||
$this->db_add_param($this->kurzbz) . ', ' .
|
||||
$this->db_add_param($this->lehrform_kurzbz) . ', ' .
|
||||
$this->db_add_param($this->semester) . ', ' .
|
||||
$this->db_add_param($this->ects) . ', ' .
|
||||
$this->db_add_param($this->semesterstunden) . ', ' .
|
||||
$this->db_add_param($this->anmerkung) . ', ' .
|
||||
$this->db_add_param($this->lehre, FHC_BOOLEAN) . ',' .
|
||||
$this->db_add_param($this->lehreverzeichnis) . ', ' .
|
||||
$this->db_add_param($this->aktiv, FHC_BOOLEAN) . ', ' .
|
||||
$this->db_add_param($this->insertamum) . ', ' .
|
||||
$this->db_add_param($this->insertvon) . ', ' .
|
||||
$this->db_add_param($this->planfaktor) . ', ' .
|
||||
$this->db_add_param($this->planlektoren) . ', ' .
|
||||
$this->db_add_param($this->planpersonalkosten) . ', ' .
|
||||
$this->db_add_param($this->plankostenprolektor) . ', ' .
|
||||
$this->db_add_param($this->updateamum) . ', ' .
|
||||
$this->db_add_param($this->updatevon) . ',' .
|
||||
$this->db_add_param($this->sort) . ',' .
|
||||
$this->db_add_param($this->zeugnis, FHC_BOOLEAN) . ',' .
|
||||
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN) . ',' .
|
||||
$this->db_add_param($this->sprache) . ',' .
|
||||
$this->db_add_param($this->koordinator) . ',' .
|
||||
$this->db_add_param($this->bezeichnung_english) . ',' .
|
||||
$this->db_add_param($this->orgform_kurzbz) . ',' .
|
||||
$this->db_add_param($this->incoming) . ',' .
|
||||
$this->db_add_param($this->lehrtyp_kurzbz) . ',' .
|
||||
$this->db_add_param($this->oe_kurzbz) . ',' .
|
||||
$this->db_add_param($this->raumtyp_kurzbz) . ',' .
|
||||
$this->db_add_param($this->anzahlsemester) . ',' .
|
||||
$this->db_add_param($this->semesterwochen) . ',' .
|
||||
$this->db_add_param($this->lvnr) .','.
|
||||
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo,
|
||||
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
|
||||
$this->db_add_param($this->studiengang_kz). ', '.
|
||||
$this->db_add_param($this->bezeichnung). ', '.
|
||||
$this->db_add_param($this->kurzbz). ', '.
|
||||
$this->db_add_param($this->lehrform_kurzbz). ', '.
|
||||
$this->db_add_param($this->semester). ', '.
|
||||
$this->db_add_param($this->ects). ', '.
|
||||
$this->db_add_param($this->semesterstunden). ', '.
|
||||
$this->db_add_param($this->anmerkung). ', '.
|
||||
$this->db_add_param($this->lehre, FHC_BOOLEAN). ','.
|
||||
$this->db_add_param($this->lehreverzeichnis). ', '.
|
||||
$this->db_add_param($this->aktiv, FHC_BOOLEAN). ', '.
|
||||
$this->db_add_param($this->insertamum). ', '.
|
||||
$this->db_add_param($this->insertvon). ', '.
|
||||
$this->db_add_param($this->planfaktor). ', '.
|
||||
$this->db_add_param($this->planlektoren). ', '.
|
||||
$this->db_add_param($this->planpersonalkosten). ', '.
|
||||
$this->db_add_param($this->plankostenprolektor). ', '.
|
||||
$this->db_add_param($this->updateamum). ', '.
|
||||
$this->db_add_param($this->updatevon). ','.
|
||||
$this->db_add_param($this->sort). ','.
|
||||
$this->db_add_param($this->zeugnis, FHC_BOOLEAN). ','.
|
||||
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN). ','.
|
||||
$this->db_add_param($this->sprache). ','.
|
||||
$this->db_add_param($this->koordinator). ','.
|
||||
$this->db_add_param($this->bezeichnung_english). ','.
|
||||
$this->db_add_param($this->orgform_kurzbz). ','.
|
||||
$this->db_add_param($this->incoming).','.
|
||||
$this->db_add_param($this->lehrtyp_kurzbz).','.
|
||||
$this->db_add_param($this->oe_kurzbz). ','.
|
||||
$this->db_add_param($this->raumtyp_kurzbz). ','.
|
||||
$this->db_add_param($this->anzahlsemester). ','.
|
||||
$this->db_add_param($this->semesterwochen). ','.
|
||||
$this->db_add_param($this->lvnr).','.
|
||||
$this->db_add_param($this->semester_alternativ).','.
|
||||
$this->db_add_param($this->farbe).','.
|
||||
$this->db_add_param($this->sws).','.
|
||||
@@ -783,7 +796,8 @@ class lehrveranstaltung extends basis_db
|
||||
$this->db_add_param($this->las).','.
|
||||
$this->db_add_param($this->benotung, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lvinfo, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN)
|
||||
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lehrmodus_kurzbz)
|
||||
.');';
|
||||
}
|
||||
else
|
||||
@@ -823,6 +837,7 @@ class lehrveranstaltung extends basis_db
|
||||
'bezeichnung_english=' . $this->db_add_param($this->bezeichnung_english) . ',' .
|
||||
'orgform_kurzbz=' . $this->db_add_param($this->orgform_kurzbz) . ',' .
|
||||
'lehrtyp_kurzbz=' . $this->db_add_param($this->lehrtyp_kurzbz) . ',' .
|
||||
'lehrmodus_kurzbz=' . $this->db_add_param($this->lehrmodus_kurzbz) . ',' .
|
||||
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ',' .
|
||||
'raumtyp_kurzbz=' . $this->db_add_param($this->raumtyp_kurzbz) . ',' .
|
||||
'anzahlsemester=' . $this->db_add_param($this->anzahlsemester, FHC_INTEGER) . ',' .
|
||||
@@ -936,6 +951,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -1029,6 +1045,7 @@ class lehrveranstaltung extends basis_db
|
||||
$l->bezeichnung_english = $row->bezeichnung_english;
|
||||
$l->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$l->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$l->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$l->oe_kurzbz = $row->oe_kurzbz;
|
||||
$l->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$l->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -1111,6 +1128,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -1209,6 +1227,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -1333,6 +1352,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->ects = $lv->ects;
|
||||
$obj->semesterstunden = $lv->semesterstunden;
|
||||
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
|
||||
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
|
||||
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
|
||||
$obj->stpllv_semester = $lv->stpllv_semester;
|
||||
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
|
||||
@@ -1398,6 +1418,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->semesterstunden = $lv->semesterstunden;
|
||||
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
|
||||
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
|
||||
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
|
||||
$obj->stpllv_semester = $lv->stpllv_semester;
|
||||
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
|
||||
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
|
||||
@@ -1550,6 +1571,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->farbe = $row->farbe;
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
@@ -1635,6 +1657,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->farbe = $row->farbe;
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
@@ -1750,6 +1773,9 @@ class lehrveranstaltung extends basis_db
|
||||
if(!is_null($lehrtyp))
|
||||
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
|
||||
|
||||
if(!is_null($lehrmodus))
|
||||
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
|
||||
|
||||
if(!is_null($semester))
|
||||
$qry .= " AND semester=".$this->db_add_param ($semester);
|
||||
|
||||
@@ -1800,6 +1826,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->lvnr = $row->lvnr;
|
||||
$lv_obj->semester_alternativ = $row->semester_alternativ;
|
||||
$lv_obj->farbe = $row->farbe;
|
||||
@@ -1925,6 +1952,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -2051,6 +2079,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$lv_obj->anzahlsemester = $row->anzahlsemester;
|
||||
@@ -2272,6 +2301,11 @@ class lehrveranstaltung extends basis_db
|
||||
$qry.=" AND tbl_lehrveranstaltung.lehrtyp_kurzbz=" . $this->db_add_param($lehrtyp_kurzbz, FHC_STRING);
|
||||
}
|
||||
|
||||
if (!is_null($lehrmodus_kurzbz))
|
||||
{
|
||||
$qry.=" AND tbl_lehrveranstaltung.lehrmodus_kurzbz=" . $this->db_add_param($lehrmodus_kurzbz, FHC_STRING);
|
||||
}
|
||||
|
||||
if (!is_null($semester))
|
||||
{
|
||||
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
|
||||
@@ -2315,6 +2349,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->bezeichnung_english = $row->bezeichnung_english;
|
||||
$obj->orgform_kurzbz = $row->orgform_kurzbz;
|
||||
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
|
||||
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
|
||||
$obj->anzahlsemester = $row->anzahlsemester;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user