mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-07 23:29:28 +00:00
Merge branch 'feature-15391/Positive_Zeitsperre'
This commit is contained in:
@@ -71,6 +71,16 @@ $config['navigation_header'] = array(
|
||||
'lehre/lehrauftrag_erteilen:r'
|
||||
)
|
||||
),
|
||||
'zverfueg' => array(
|
||||
'link' => site_url('lehre/lvplanung/AdminZeitverfuegbarkeit'),
|
||||
'description' => 'Zeitverfügbarkeit',
|
||||
'expand' => true,
|
||||
'sort' => 45,
|
||||
'requiredPermissions' => array(
|
||||
'lehre/zeitverfuegbarkeit:rw',
|
||||
'lehre/zeitverfuegbarkeit:rw'
|
||||
)
|
||||
),
|
||||
'zgvueberpruefung' => array(
|
||||
'link' => site_url('system/infocenter/ZGVUeberpruefung'),
|
||||
'description' => 'ZGV Überprüfung',
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
*/
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class LVPlanJob extends CLI_Controller
|
||||
class LVPlanJob extends JOB_Controller
|
||||
{
|
||||
/**
|
||||
* Initialize LVPlanJob Class
|
||||
@@ -149,4 +149,313 @@ class LVPlanJob extends CLI_Controller
|
||||
echo "Failed ".$fail."\n";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Mail to STGL, Kompetenzfeld and LV Planung about todays updated Zeitwuensche.
|
||||
* STGL gets list only of lectors who updated future assigend courses concerning their STG.
|
||||
* Kompetenzleitung gets list only of lectors who updated future assigend courses concerning their KF.
|
||||
* LVPlanung gets list of lectors who updated future assigend courses.
|
||||
*/
|
||||
public function mailUpdatedZeitwuensche()
|
||||
{
|
||||
// Load models
|
||||
$this->load->model('ressource/Stundenplandev_model', 'StundenplandevModel');
|
||||
$this->load->model('organisation/Studiensemester_model', 'StundiensemesterModel');
|
||||
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
// Load libs
|
||||
$this->load->library('MailLib');
|
||||
|
||||
// Load helpers
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
|
||||
// Start Log Message
|
||||
$this->logInfo('Mail updated Zeitwuensche started.');
|
||||
|
||||
// Get all lectors, who updated their Zeitwunsch today
|
||||
$db = new DB_Model();
|
||||
$result = $db->execReadOnlyQuery('
|
||||
SELECT
|
||||
zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz
|
||||
FROM
|
||||
campus.tbl_zeitwunsch_gueltigkeit zwg
|
||||
JOIN lehre.tbl_stundenplandev stpl
|
||||
ON(
|
||||
stpl.mitarbeiter_uid=zwg.mitarbeiter_uid
|
||||
AND stpl.datum BETWEEN zwg.von AND COALESCE(zwg.bis, \'2999-12-31\')
|
||||
AND (zwg.insertamum::date = (NOW()-\'1 days\'::interval)::date
|
||||
OR
|
||||
zwg.updateamum::date = (NOW()-\'1 days\'::interval)::date)
|
||||
AND stpl.datum > now()
|
||||
)
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
GROUP BY
|
||||
zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz
|
||||
');
|
||||
|
||||
if (!hasData($result))
|
||||
{
|
||||
return; // No updated Zeitwuensche today
|
||||
}
|
||||
|
||||
$uidByStg_arr = array(); // Mail data for Studiengang
|
||||
$uidByOe_arr = array(); // Mail data for Kompetenzfeld
|
||||
$uid_arr = array(); // Mail data for Kompetenzfeld
|
||||
|
||||
// Loop through lectors, who updated their Zeitwunsch today
|
||||
$changed_arr = getData($result);
|
||||
foreach ($changed_arr as $row)
|
||||
{
|
||||
|
||||
// Add unique lector array
|
||||
if (!in_array($row->mitarbeiter_uid, $uid_arr))
|
||||
{
|
||||
$uid_arr[]= $row->mitarbeiter_uid;
|
||||
}
|
||||
|
||||
// Build unique Studiengang array
|
||||
if (!array_key_exists($row->studiengang_kz, $uidByStg_arr))
|
||||
{
|
||||
$uidByStg_arr[$row->studiengang_kz] = array($row->mitarbeiter_uid);
|
||||
|
||||
}
|
||||
elseif (!in_array($row->mitarbeiter_uid, $uidByStg_arr[$row->studiengang_kz]))
|
||||
{
|
||||
$uidByStg_arr[$row->studiengang_kz][]= $row->mitarbeiter_uid;
|
||||
}
|
||||
|
||||
// Build unique Kompetenzfeld array
|
||||
if (!array_key_exists($row->oe_kurzbz, $uidByOe_arr))
|
||||
{
|
||||
$uidByOe_arr[$row->oe_kurzbz] = array($row->mitarbeiter_uid);
|
||||
|
||||
}
|
||||
elseif (!in_array($row->mitarbeiter_uid, $uidByOe_arr[$row->oe_kurzbz]))
|
||||
{
|
||||
$uidByOe_arr[$row->oe_kurzbz][]= $row->mitarbeiter_uid;
|
||||
}
|
||||
}
|
||||
|
||||
// Send mail to STG Assistenz
|
||||
$result = $this->_sendMailToStg($uidByStg_arr);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
|
||||
// Send mail to Kompetenzfeld Leitung
|
||||
$result = $this->_sendMailToKF($uidByOe_arr);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
|
||||
// Send mail to LV Planung
|
||||
$result = $this->_sendMailToLvPlanung($uid_arr);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->logError(getError($result));
|
||||
}
|
||||
|
||||
// End Log Message
|
||||
$this->logInfo('Mail updated Zeitwuensche ended.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Mail to STGL Assistance about lectors, who teach LV assigend to the STG, and who updated Zeitwuensche.
|
||||
*
|
||||
* @param $data_arr
|
||||
* @param $stg_bezeichnung
|
||||
*/
|
||||
private function _sendMailToStg($data_arr)
|
||||
{
|
||||
foreach ($data_arr as $stg_kurzbz => $uid_arr)
|
||||
{
|
||||
// Get STG eMail
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$result = $this->StudiengangModel->load($stg_kurzbz);
|
||||
$stgMail = $result->retval[0]->email;
|
||||
|
||||
$lektorenTabelle = '
|
||||
<table><thead>
|
||||
<tr>
|
||||
<th style="text-align:left">Name</th>
|
||||
<th style="text-align:left">UID</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
';
|
||||
|
||||
foreach($uid_arr as $uid)
|
||||
{
|
||||
$person = $this->PersonModel->getByUid($uid);
|
||||
$lektorenTabelle.= '
|
||||
<tr>
|
||||
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
|
||||
<td style="text-align:left">['. $uid. ']</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
|
||||
$lektorenTabelle.= '</tbody></table>';
|
||||
|
||||
$contentData_arr = array(
|
||||
'datentabelle' => $lektorenTabelle
|
||||
);
|
||||
|
||||
// Send mail
|
||||
if (!sendSanchoMail(
|
||||
'ZeitwunschUpdateMail',
|
||||
$contentData_arr,
|
||||
$stgMail,
|
||||
'Änderung von Zeitwünschen',
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg'
|
||||
))
|
||||
{
|
||||
$errorReceiverUid_arr[]= $stgMail;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($errorReceiverUid_arr))
|
||||
{
|
||||
return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ','));
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Mail to Kompetenzfeld about lectors, who teach LV assigend to the Kompetenzfeld, and who updated Zeitwuensche.
|
||||
*
|
||||
* @param $data_arr
|
||||
* @param $stg_bezeichnung
|
||||
*/
|
||||
private function _sendMailToKF($data_arr)
|
||||
{
|
||||
// Send mail to Komepetenzfeld Leitung
|
||||
foreach ($data_arr as $oe_kurzbz => $uid_arr)
|
||||
{
|
||||
// Get KF Leitung eMail
|
||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||
$result = $this->BenutzerfunktionModel->getBenutzerFunktionen(
|
||||
'Leitung',
|
||||
$oe_kurzbz,
|
||||
$activeoeonly = true,
|
||||
$activebenonly = true
|
||||
);
|
||||
|
||||
if(isSuccess($result) && hasData($result))
|
||||
{
|
||||
$empfaenger = array();
|
||||
|
||||
foreach(getData($result) as $row)
|
||||
$empfaenger[] = $row->uid. '@'. DOMAIN;
|
||||
$kfMail = implode(',',$empfaenger);
|
||||
|
||||
$lektorenTabelle = '
|
||||
<table><thead>
|
||||
<tr>
|
||||
<th style="text-align:left">Name</th>
|
||||
<th style="text-align:left">UID</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
';
|
||||
|
||||
foreach($uid_arr as $uid)
|
||||
{
|
||||
$person = $this->PersonModel->getByUid($uid);
|
||||
$lektorenTabelle.= '
|
||||
<tr>
|
||||
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
|
||||
<td style="text-align:left">['. $uid. ']</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
|
||||
$lektorenTabelle.= '</tbody></table>';
|
||||
|
||||
$contentData_arr = array(
|
||||
'datentabelle' => $lektorenTabelle
|
||||
);
|
||||
|
||||
// Send mail
|
||||
if (!sendSanchoMail(
|
||||
'ZeitwunschUpdateMail',
|
||||
$contentData_arr,
|
||||
$kfMail,
|
||||
'Änderung von Zeitwünschen',
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg'
|
||||
))
|
||||
{
|
||||
$errorReceiverUid_arr[]= $kfMail;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($errorReceiverUid_arr))
|
||||
{
|
||||
return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ','));
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Mail to LV Planung about all lectors who updated Zeitwuensche.
|
||||
*
|
||||
* @param $data_arr
|
||||
* @param $stg_bezeichnung
|
||||
*/
|
||||
private function _sendMailToLvPlanung($data_arr)
|
||||
{
|
||||
$lektorenTabelle = '
|
||||
<table><thead>
|
||||
<tr>
|
||||
<th style="text-align:left">Name</th>
|
||||
<th style="text-align:left">UID</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
';
|
||||
|
||||
foreach($data_arr as $lector)
|
||||
{
|
||||
$person = $this->PersonModel->getByUid($lector);
|
||||
$lektorenTabelle.= '
|
||||
<tr>
|
||||
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
|
||||
<td style="text-align:left">['. $lector. ']</td>
|
||||
</tr>
|
||||
';
|
||||
}
|
||||
|
||||
$lektorenTabelle.= '</tbody></table>';
|
||||
|
||||
$contentData_arr = array(
|
||||
'datentabelle' => $lektorenTabelle
|
||||
);
|
||||
|
||||
// Send mail
|
||||
if (!sendSanchoMail(
|
||||
'ZeitwunschUpdateMail',
|
||||
$contentData_arr,
|
||||
MAIL_LVPLAN,
|
||||
'Änderung von Zeitwünschen',
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg'
|
||||
))
|
||||
{
|
||||
$errorReceiver = MAIL_LVPLAN;
|
||||
}
|
||||
|
||||
if (isset($errorReceiver))
|
||||
{
|
||||
return error('Mail updated Zeitwuensche could not be sent to :'. $errorReceiver);
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,310 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class AdminZeitverfuegbarkeit extends Auth_Controller
|
||||
{
|
||||
const BERECHTIGUNG_ZEITVERFUEGBARKEIT = 'lehre/zeitverfuegbarkeit';
|
||||
private $_uid; // uid of the logged user
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'lehre/zeitverfuegbarkeit:rw',
|
||||
'saveZeitverfuegbarkeit' => 'lehre/zeitverfuegbarkeit:rw',
|
||||
'deleteZeitverfuegbarkeit' => 'lehre/zeitverfuegbarkeit:rw'
|
||||
)
|
||||
);
|
||||
|
||||
// Load models
|
||||
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel');
|
||||
|
||||
// Load libraries
|
||||
$this->load->library('PermissionLib');
|
||||
$this->load->library('AuthLib');
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
// Load helpers
|
||||
$this->load->helper('array');
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
'ui',
|
||||
'lehre'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_setAuthUID(); // sets property uid
|
||||
|
||||
$this->setControllerId(); // sets the controller id
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
public function index()
|
||||
{
|
||||
// Get Studiengaenge the user is entitled for
|
||||
$result = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ZEITVERFUEGBARKEIT);
|
||||
$studiengang_kz_arr = !isEmptyArray($result) ? $result : array();
|
||||
|
||||
// Get lectors of that Studiengaenge
|
||||
$result = $this->_getLehreinheitmitarbeiterByStg($studiengang_kz_arr);
|
||||
$lektor_arr = hasData($result) ? getData($result) : array();
|
||||
|
||||
// Get available Stundenplan Stunden
|
||||
$result = $this->_getStunden();
|
||||
$stunde_arr = hasData($result) ? getData($result) : array();
|
||||
|
||||
// Get actual Studiensemester to set min-limit Datepicker
|
||||
$result = $this->StudiensemesterModel->getAkt();
|
||||
$studsemStart = hasData($result) ? getData($result)[0]->start : '';
|
||||
|
||||
$view_data = array(
|
||||
'studiengang_kz_arr' => $studiengang_kz_arr,
|
||||
'lektor_arr' => $lektor_arr,
|
||||
'stunde_arr' => $stunde_arr,
|
||||
'studsemStart' => $studsemStart
|
||||
);
|
||||
|
||||
$this->load->view('lehre/lvplanung/adminZeitverfuegbarkeit.php', $view_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save or update Zeitverfuegbarkeit.
|
||||
*/
|
||||
public function saveZeitverfuegbarkeit()
|
||||
{
|
||||
$zeitsperre_id = $this->input->post('zeitsperre_id');
|
||||
$mitarbeiter_uid = $this->input->post('mitarbeiter_uid');
|
||||
$zeitsperretyp_kurzbz = $this->input->post('zeitsperretyp_kurzbz');
|
||||
$bezeichnung = $this->input->post('bezeichnung');
|
||||
$vonDatum = $this->input->post('vondatum');
|
||||
$vonStunde = isEmptyString($this->input->post('vonstunde')) ? null : $this->input->post('vonstunde');
|
||||
$bisDatum = $this->input->post('bisdatum');
|
||||
$bisStunde = isEmptyString($this->input->post('bisstunde')) ? null : $this->input->post('bisstunde');
|
||||
|
||||
$result = $this->_validate($this->input->post());
|
||||
if (isSuccess($result))
|
||||
{
|
||||
if (is_numeric($zeitsperre_id))
|
||||
{
|
||||
$result = $this->ZeitsperreModel->update(
|
||||
$zeitsperre_id,
|
||||
array(
|
||||
'vondatum' => $vonDatum,
|
||||
'vonstunde' => $vonStunde,
|
||||
'bisdatum' => $bisDatum,
|
||||
'bisstunde' => $bisStunde,
|
||||
'bezeichnung' => $bezeichnung
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = $this->ZeitsperreModel->save(
|
||||
$zeitsperretyp_kurzbz,
|
||||
$mitarbeiter_uid,
|
||||
$vonDatum,
|
||||
$bisDatum,
|
||||
$vonStunde,
|
||||
$bisStunde,
|
||||
$bezeichnung
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
}
|
||||
|
||||
$zeitsperre_id = getData($result);
|
||||
|
||||
// Success response to AJAX
|
||||
$this->outputJsonSuccess(array(
|
||||
'zeitsperre_id' => $zeitsperre_id,
|
||||
'msg' => $this->p->t('ui', 'gespeichert')
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Zeitverfuegbarkeit.
|
||||
*/
|
||||
public function deleteZeitverfuegbarkeit()
|
||||
{
|
||||
$zeitsperre_id = $this->input->post('zeitsperre_id');
|
||||
|
||||
if (!is_numeric($zeitsperre_id))
|
||||
{
|
||||
$this->terminateWithJsonError('Wählen Sie einen Lehrenden aus der Zeitverfügbarkeit-Tabelle aus.');
|
||||
}
|
||||
|
||||
// Load Zeitsperre
|
||||
$result = $this->ZeitsperreModel->load($zeitsperre_id);
|
||||
$delZsp = getData($result)[0];
|
||||
|
||||
// Delete
|
||||
$result = $this->ZeitsperreModel->delete($zeitsperre_id);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
}
|
||||
|
||||
// Store Deletion query
|
||||
$delQry = $this->db->last_query();
|
||||
|
||||
// Log deletion
|
||||
$this->_logDeletion($delZsp, $delQry);
|
||||
|
||||
$this->outputJsonSuccess(array('msg' => $this->p->t('ui', 'geloescht')));
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
/**
|
||||
* 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');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all lectors that are assigend to Lehreinheiten in actual or future semester.
|
||||
*
|
||||
* @param $studiengang_kz_arr Restrict only to given stg-
|
||||
* @return mixed
|
||||
*/
|
||||
private function _getLehreinheitmitarbeiterByStg($studiengang_kz_arr)
|
||||
{
|
||||
$this->MitarbeiterModel->addSelect('lema.mitarbeiter_uid, nachname, vorname');
|
||||
$this->MitarbeiterModel->addDistinct('lema.mitarbeiter_uid');
|
||||
$this->MitarbeiterModel->addJoin('lehre.tbl_lehreinheitmitarbeiter lema', 'tbl_mitarbeiter.mitarbeiter_uid = lema.mitarbeiter_uid');
|
||||
$this->MitarbeiterModel->addJoin('public.tbl_benutzer b', 'lema.mitarbeiter_uid = b.uid');
|
||||
$this->MitarbeiterModel->addJoin('public.tbl_person p', 'person_id');
|
||||
$this->MitarbeiterModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->MitarbeiterModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->MitarbeiterModel->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
|
||||
$this->MitarbeiterModel->addOrder('lema.mitarbeiter_uid');
|
||||
|
||||
// Return lektoren assigned to actual or future lehreinheiten
|
||||
return $this->MitarbeiterModel->loadWhere('
|
||||
lv.studiengang_kz IN (' . implode(', ', $studiengang_kz_arr) . ')
|
||||
AND b.aktiv
|
||||
AND personalnummer > 0
|
||||
AND NOW() <= ss.ende'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all available Stunden of Stundentabelle.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
private function _getStunden()
|
||||
{
|
||||
$this->load->model('ressource/Stunde_model', 'StundeModel');
|
||||
$this->StundeModel->addOrder('stunde');
|
||||
|
||||
return $this->StundeModel->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validaton checks performed on post data.
|
||||
*
|
||||
* @param $post
|
||||
* @return array|stdClass
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _validate($post)
|
||||
{
|
||||
if (isEmptyString($post['mitarbeiter_uid']))
|
||||
{
|
||||
return (error('LektorIn fehlt'));
|
||||
}
|
||||
|
||||
if (isEmptyString($post['bezeichnung']))
|
||||
{
|
||||
return (error('Notiz fehlt'));
|
||||
}
|
||||
|
||||
if (isEmptyString($post['vondatum']))
|
||||
{
|
||||
return error('Startdatum fehlt');
|
||||
}
|
||||
|
||||
if (isEmptyString($post['bisdatum']))
|
||||
{
|
||||
return error('Endedatum fehlt');
|
||||
}
|
||||
|
||||
if (new DateTime($post['bisdatum']) < new DateTime($post['vondatum']))
|
||||
{
|
||||
return error('Endedatum darf nicht VOR dem Startdatum liegen');
|
||||
}
|
||||
|
||||
// Check bisstunde not after vonstunde within same day
|
||||
if (new DateTime($post['bisdatum']) == new DateTime($post['vondatum']))
|
||||
{
|
||||
if (is_numeric($post['vonstunde']) && is_numeric($post['bisstunde'])
|
||||
&& $post['bisstunde'] < $post['vonstunde'])
|
||||
{
|
||||
return error('Am gleichen Tag darf Endstunde nicht VOR der Startstunde liegen');
|
||||
}
|
||||
}
|
||||
|
||||
// Check dates are > then start of actual Studiensemester
|
||||
$result = $this->StudiensemesterModel->getAkt();
|
||||
$studsemStart = hasData($result) ? getData($result)[0]->start : '';
|
||||
|
||||
if (new DateTime($post['vondatum']) < new DateTime($studsemStart) ||
|
||||
new DateTime($post['bisdatum']) < new DateTime($studsemStart))
|
||||
{
|
||||
return error('Start- und Endedatum können nur für das aktuelle oder künftige Studiensemester geplant werden');
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Log information of deleted Zeitsperre into log table.
|
||||
*
|
||||
* @param $delZsp object of deleted Zeitsperre
|
||||
* @param $delQry string of performed delete query
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
private function _logDeletion($delZsp, $delQry)
|
||||
{
|
||||
$beschreibung = 'Zeitverfügbarkeitlöschung '
|
||||
. $delZsp->mitarbeiter_uid. ' '
|
||||
. (new DateTime($delZsp->vondatum))->format('d.m.Y')
|
||||
. (is_null($delZsp->vonstunde) ? '(*)' : '('. $delZsp->vonstunde. ')')
|
||||
. '-'
|
||||
. (new DateTime($delZsp->bisdatum))->format('d.m.Y')
|
||||
. (is_null($delZsp->bisstunde) ? '(*)' : '('. $delZsp->bisstunde. ')')
|
||||
. '';
|
||||
|
||||
$this->load->model('system/Log_model', 'LogModel');
|
||||
return $this->LogModel->insert(array(
|
||||
'mitarbeiter_uid' => $this->_uid,
|
||||
'beschreibung' => substr($beschreibung, 0, 64),
|
||||
'sql' => $delQry
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm
|
||||
$body = _parseMailContent('Sancho_Mail_Template', $layout);
|
||||
|
||||
// Send mail
|
||||
$ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true);
|
||||
return $ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,20 @@ class Studiensemester_model extends DB_Model
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get actual Studiensemester.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAkt()
|
||||
{
|
||||
return $this->loadWhere(array(
|
||||
'start <= ' => 'NOW()',
|
||||
'ende >= ' => 'NOW()'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Get next study semester
|
||||
public function getNext()
|
||||
{
|
||||
@@ -167,15 +181,13 @@ class Studiensemester_model extends DB_Model
|
||||
if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d')))
|
||||
return success(array());
|
||||
|
||||
$query = "SELECT *
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE
|
||||
(ende > ?::date AND start < ?::date)
|
||||
OR start = ?::date
|
||||
OR ende = ?::date
|
||||
ORDER BY start DESC";
|
||||
$query = "
|
||||
SELECT *
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ( ?::date < ende AND ?::date > start )
|
||||
ORDER BY start DESC";
|
||||
|
||||
return $this->execQuery($query, array($from, $to, $from, $to));
|
||||
return $this->execQuery($query, array($from, $to));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,4 +61,98 @@ class Stundenplandev_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, $parametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Stundenplan data.
|
||||
*
|
||||
* @param null $lehrveranstaltung_id
|
||||
* @param null $studiensemester_kurzbz
|
||||
* @param null $lehreinheit_id
|
||||
* @param null $mitarbeiter_uid
|
||||
* @param null $student_uid
|
||||
* @param false $nurBevorstehende If true, only future data is retrieved.
|
||||
* @return array|false|stdClass|null
|
||||
*/
|
||||
public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
|
||||
{
|
||||
$params = array();
|
||||
|
||||
$qry = "SELECT
|
||||
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
||||
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
||||
array_agg(
|
||||
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
||||
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
||||
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
||||
array_agg(ort_kurzbz) as orte,
|
||||
array_agg(titel) as titel
|
||||
FROM
|
||||
lehre.tbl_stundenplandev as stpl
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE ";
|
||||
|
||||
if ($lehrveranstaltung_id != '')
|
||||
{
|
||||
$qry.="
|
||||
lehreinheit_id IN (
|
||||
SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
||||
WHERE lehrveranstaltung_id = ?
|
||||
AND studiensemester_kurzbz = ?
|
||||
)";
|
||||
|
||||
$params[]= $lehrveranstaltung_id;
|
||||
$params[]= $studiensemester_kurzbz;
|
||||
|
||||
}
|
||||
elseif ($lehreinheit_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id = ?";
|
||||
|
||||
$params[]= $lehreinheit_id;
|
||||
}
|
||||
elseif ($mitarbeiter_uid != '')
|
||||
{
|
||||
$qry.= "
|
||||
mitarbeiter_uid = ?
|
||||
AND lehreinheit_id IN (
|
||||
SELECT lehreinheit_id
|
||||
FROM lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
WHERE mitarbeiter_uid = ?
|
||||
AND studiensemester_kurzbz IN ( ? )
|
||||
)";
|
||||
$params[] = $mitarbeiter_uid;
|
||||
$params[] = $mitarbeiter_uid;
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
elseif ($student_uid != '')
|
||||
{
|
||||
$qry.="
|
||||
lehreinheit_id IN (
|
||||
SELECT lehreinheit_id
|
||||
FROM campus.vw_student_lehrveranstaltung
|
||||
WHERE uid = ?
|
||||
AND studiensemester_kurzbz = ?
|
||||
)";
|
||||
|
||||
$params[] = $student_uid;
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
if($nurBevorstehende)
|
||||
{
|
||||
$qry.= " AND stpl.datum >= NOW()::date ";
|
||||
}
|
||||
|
||||
$qry.= "
|
||||
GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id
|
||||
";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,47 @@ class Zeitsperre_model extends DB_Model
|
||||
$this->pk = 'zeitsperre_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Save or update Zeitsperre.
|
||||
*
|
||||
* @param $zeitsperretyp_kurzbz
|
||||
* @param $mitarbeiter_uid
|
||||
* @param $vonDatum
|
||||
* @param $bisDatum
|
||||
* @param null $vonStunde
|
||||
* @param null $bisStunde
|
||||
* @param null $bezeichnung
|
||||
* @param null $vertretung_uid
|
||||
* @param null $erreichbarkeit_kurzbz
|
||||
* @param null $freigabeamum
|
||||
* @param null $freigabevon
|
||||
* @return array
|
||||
*/
|
||||
public function save($zeitsperretyp_kurzbz, $mitarbeiter_uid, $vonDatum, $bisDatum,
|
||||
$vonStunde = null, $bisStunde = null, $bezeichnung = null, $vertretung_uid = null,
|
||||
$erreichbarkeit_kurzbz = null, $freigabeamum = null, $freigabevon = null)
|
||||
{
|
||||
return $this->insert(array(
|
||||
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
|
||||
'mitarbeiter_uid' => $mitarbeiter_uid,
|
||||
'vondatum' => $vonDatum,
|
||||
'bisdatum' => $bisDatum,
|
||||
'vonstunde' => $vonStunde,
|
||||
'bisstunde' => $bisStunde,
|
||||
'bezeichnung' => $bezeichnung,
|
||||
'vertretung_uid' => $vertretung_uid,
|
||||
'insertvon' => getAuthUID(),
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
|
||||
'freigabeamum' => $freigabeamum,
|
||||
'freigabevon' => $freigabevon
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Zeitsperre.
|
||||
* @return array|stdClass|null
|
||||
*/
|
||||
public function deleteEntriesForCurrentDay()
|
||||
{
|
||||
$today = date('Y-m-d');
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Zeitwunsch_gueltigkeit_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'campus.tbl_zeitwunsch_gueltigkeit';
|
||||
$this->pk = 'zeitwunsch_gueltigkeit_id';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Zeitverfuegbarkeit verwalten',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'momentjs' => true,
|
||||
'ajaxlib' => true,
|
||||
'tabulator' => true,
|
||||
'tablewidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'bis',
|
||||
'notiz'
|
||||
),
|
||||
'ui' => array(
|
||||
'systemfehler',
|
||||
'keineDatenVorhanden',
|
||||
'von',
|
||||
'bitteWaehlen',
|
||||
'speichern',
|
||||
'loeschen',
|
||||
'abbrechen'
|
||||
),
|
||||
'lehre' => array(
|
||||
'lektor'
|
||||
)
|
||||
),
|
||||
'widgets' => true,
|
||||
'dialoglib' => true,
|
||||
'customJSs' => array(
|
||||
'public/js/bootstrapper.js',
|
||||
'public/js/lehre/lvplanung/zverfueg.js'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
|
||||
<!-- title -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>Zeitverfügbarkeiten verwalten<small> | Punktuelle Zeitverfügbarkeiten von Lehrenden für die LV-Planung verwalten</small></h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- form -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form id="form-zeitverfuegbarkeit" class="form-horizontal">
|
||||
<input type="hidden" id="studsemStart" value="<?php echo $studsemStart ?>">
|
||||
<input type="hidden" id="zeitsperre_id" name="zeitsperre_id" value="">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="mitarbeiter_uid" class="col-sm-1 control-label">LektorIn: </label>
|
||||
<div class="col-sm-3">
|
||||
<select id="mitarbeiter_uid" name="mitarbeiter_uid" class="form-control select-w500" required>
|
||||
<option value="" >
|
||||
<?php echo $this->p->t('ui', 'bitteWaehlen'); ?>
|
||||
</option>
|
||||
<?php foreach ($lektor_arr as $lektor) : ?>
|
||||
<option value="<?php echo $lektor->mitarbeiter_uid ?>">
|
||||
<?php echo $lektor->nachname. ' '. $lektor->vorname ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="zverfueg" class="col-sm-1 control-label">Grund: </label>
|
||||
<div class="col-sm-3">
|
||||
<input type="text" id="zeitsperretyp_kurzbz" value="Zeitverfügbarkeit" name="zeitsperretyp_kurzbz" readonly />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="bezeichnung" class="col-sm-1 control-label">Notiz: </label>
|
||||
<div class="col-sm-3">
|
||||
<textarea type="" id="bezeichnung" name="bezeichnung" value="" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="vondatum" class="col-sm-1 control-label">Von: </label>
|
||||
<div class="col-sm-3">
|
||||
<input type="date" id="vondatum" name="vondatum" class="form-control zverfueg-datepicker" required>
|
||||
</div>
|
||||
<label for="vonstunde" class="col-sm-1 control-label">Stunde (inkl.): </label>
|
||||
<div class="col-sm-3">
|
||||
<select id="vonstunde" name="vonstunde" class="form-control select-w500">
|
||||
<option value="" >*</option>
|
||||
<?php foreach ($stunde_arr as $stunde) : ?>
|
||||
<option value="<?php echo $stunde->stunde ?>">
|
||||
<?php echo $stunde->stunde.
|
||||
' ['.
|
||||
(new DateTime($stunde->beginn))->format('H:i'). ' - '.
|
||||
(new DateTime($stunde->ende))->format('H:i').
|
||||
']' ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="bisdatum" class="col-sm-1 control-label">Bis: </label>
|
||||
<div class="col-sm-3">
|
||||
<input type="date" id="bisdatum" name="bisdatum" class="form-control zverfueg-datepicker" required>
|
||||
</div>
|
||||
<label for="bisstunde" class="col-sm-1 control-label">Stunde (inkl.): </label>
|
||||
<div class="col-sm-3">
|
||||
<select id="bisstunde" name="bisstunde" class="form-control select-w500">
|
||||
<option value="" >*</option>
|
||||
<?php foreach ($stunde_arr as $stunde) : ?>
|
||||
<option value="<?php echo $stunde->stunde ?>">
|
||||
<?php echo $stunde->stunde.
|
||||
' ['.
|
||||
(new DateTime($stunde->beginn))->format('H:i'). ' - '.
|
||||
(new DateTime($stunde->ende))->format('H:i').
|
||||
']' ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<button type="submit" id="btn-save" class="btn btn-primary btn-w200 pull-right">
|
||||
<?php echo ucfirst($this->p->t('ui', 'speichern')); ?>
|
||||
</button>
|
||||
<button type="button" id="btn-delete" class="btn btn-danger btn-w200 btn-mr5 pull-right" disabled
|
||||
data-toggle="tooltip" data-placement="right"
|
||||
title="Zum Löschen LektorIn aus Tabelle wählen">
|
||||
<?php echo ucfirst($this->p->t('ui', 'loeschen')); ?>
|
||||
</button>
|
||||
<button type="reset" id="btn-break" class="btn btn-default btn-w200 btn-mr5 pull-right">
|
||||
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- data table -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<?php $this->load->view('lehre/lvplanung/adminZeitverfuegbarkeitData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- end container -->
|
||||
</div><!-- end page-wrapper -->
|
||||
<br>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
$STUDIENGANG_KZ_ARR = $studiengang_kz_arr; // stg the user is entitled to administrate
|
||||
|
||||
$qry = '
|
||||
SELECT * FROM (
|
||||
SELECT DISTINCT ON (zeitsperre_id, zsp.mitarbeiter_uid) zeitsperre_id, zsp.mitarbeiter_uid,
|
||||
concat_ws(\' \', nachname, vorname) AS "lektor",
|
||||
vondatum, vonstunde, bisdatum, bisstunde, zsp.bezeichnung
|
||||
FROM public.tbl_person
|
||||
JOIN public.tbl_benutzer b USING (person_id)
|
||||
JOIN public.tbl_mitarbeiter ma ON (ma.mitarbeiter_uid = b.uid)
|
||||
JOIN lehre.tbl_lehreinheitmitarbeiter lema ON (lema.mitarbeiter_uid = b.uid)
|
||||
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiensemester ss USING (studiensemester_kurzbz)
|
||||
JOIN campus.tbl_zeitsperre zsp ON zsp.mitarbeiter_uid = lema.mitarbeiter_uid
|
||||
WHERE lv.studiengang_kz IN ('. implode (',', $STUDIENGANG_KZ_ARR). ')
|
||||
AND b.aktiv
|
||||
AND zsp.vondatum >= ss.start
|
||||
AND zeitsperretyp_kurzbz = \'ZVerfueg\'
|
||||
ORDER BY zeitsperre_id, zsp.mitarbeiter_uid
|
||||
) as tmp
|
||||
ORDER BY vondatum DESC
|
||||
';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $qry,
|
||||
'tableUniqueId' => 'adminZeitverfuegbarkeit',
|
||||
'requiredPermissions' => 'lehre/zeitverfuegbarkeit',
|
||||
'datasetRepresentation' => 'tabulator',
|
||||
'columnsAliases' => array(
|
||||
'ZeitsperreID',
|
||||
'UID',
|
||||
ucfirst($this->p->t('lehre', 'lektor')),
|
||||
ucfirst($this->p->t('ui', 'von')),
|
||||
'VonStunde',
|
||||
ucfirst($this->p->t('global', 'bis')),
|
||||
'BisStunde',
|
||||
ucfirst($this->p->t('global', 'notiz'))
|
||||
),
|
||||
'datasetRepOptions' => '{
|
||||
layout: "fitColumns", // fit columns to width of table
|
||||
autoResize: false, // prevent auto resizing of table (false to allow adapting table size when cols are (de-)activated
|
||||
headerFilterPlaceholder: " ",
|
||||
index: "zeitsperre_id", // assign specific column as unique id (important for row indexing)
|
||||
selectable: 1, // allow row selection
|
||||
tableWidgetHeader: false,
|
||||
rowSelected: function(row) {
|
||||
func_rowSelected(row);
|
||||
},
|
||||
rowDeselected: function(row) {
|
||||
func_rowDeselected(row);
|
||||
}
|
||||
}', // tabulator properties
|
||||
'datasetRepFieldsDefs' => '{
|
||||
zeitsperre_id: {visible:false},
|
||||
mitarbeiter_uid: {visible: true, headerFilter:"input"},
|
||||
lektor: {visible: true, headerFilter:"input"},
|
||||
vondatum: {visible: true, headerFilter:"input"},
|
||||
vonstunde: {visible: true, headerFilter:"input"},
|
||||
bisdatum: {visible: true, headerFilter:"input"},
|
||||
bisstunde: {visible: true, headerFilter:"input"},
|
||||
bezeichnung: {visible: true, headerFilter:"input"}
|
||||
}', // col properties
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('TableWidget', $filterWidgetArray);
|
||||
|
||||
?>
|
||||
@@ -690,7 +690,7 @@ if(count($zeit->result)>0)
|
||||
<td>".(isset($row_vertretung->kurzbz)?$row_vertretung->kurzbz:'')."</td>
|
||||
<td>".(isset($erreichbarkeit_arr[$row->erreichbarkeit])?$erreichbarkeit_arr[$row->erreichbarkeit]:'')."</td>
|
||||
<td align='center'>".($row->freigabeamum!=''?'Ja':'')."</td>";
|
||||
if ($row->zeitsperretyp_kurzbz == 'DienstV')
|
||||
if ($row->zeitsperretyp_kurzbz == 'DienstV' || $row->zeitsperretyp_kurzbz == 'ZVerfueg')
|
||||
$content_table .= '<td> </td>';
|
||||
else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
|
||||
$content_table .= '<td> </td>';
|
||||
@@ -702,7 +702,7 @@ if(count($zeit->result)>0)
|
||||
{
|
||||
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id&informSupervisor=True' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
|
||||
}
|
||||
elseif($row->zeitsperretyp_kurzbz!='Urlaub')
|
||||
elseif($row->zeitsperretyp_kurzbz!='Urlaub' && $row->zeitsperretyp_kurzbz != 'ZVerfueg')
|
||||
{
|
||||
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
|
||||
}
|
||||
@@ -762,6 +762,11 @@ if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row=$db->db_fetch_object($result))
|
||||
{
|
||||
if ($row->zeitsperretyp_kurzbz === 'ZVerfueg')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if($zeitsperre->zeitsperretyp_kurzbz == $row->zeitsperretyp_kurzbz)
|
||||
$content_form.= "<OPTION value='$row->zeitsperretyp_kurzbz' selected>$row->beschreibung</OPTION>";
|
||||
else
|
||||
|
||||
+637
-186
@@ -18,6 +18,7 @@
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
* Cristina Hainberger <hainberg@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* @brief bietet die Moeglichkeit zur Anzeige und
|
||||
@@ -29,10 +30,15 @@ require_once('../../../include/globals.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/zeitwunsch.class.php');
|
||||
require_once('../../../include/zeitwunsch_gueltigkeit.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung_gd.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/lehrveranstaltung.class.php');
|
||||
require_once('../../../include/lehreinheit.class.php');
|
||||
require_once('../../../include/lehrstunde.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/sprache.class.php');
|
||||
|
||||
@@ -49,63 +55,27 @@ $uid = get_uid();
|
||||
if(!check_lektor($uid))
|
||||
die($p->t('global/keineBerechtigungFuerDieseSeite'));
|
||||
|
||||
|
||||
$PHP_SELF = $_SERVER['PHP_SELF'];
|
||||
|
||||
if(isset($_GET['type']))
|
||||
$type=$_GET['type'];
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
// Nächstes Studiensemester
|
||||
$next_ss = new Studiensemester();
|
||||
$next_ss->getNextStudiensemester();
|
||||
|
||||
// Aktuelles Studiensemester
|
||||
$akt_ss = new Studiensemester();
|
||||
$akt_ss->load($akt_ss->getAkt());
|
||||
|
||||
// Dropdown: Aktuelles/naechstes Studiensemester zum Bearbeiten
|
||||
$selected_ss = (isset($_GET['stsem']) && is_string($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester
|
||||
|
||||
// Dropdown: Vergangene Studiensemester zum Kopieren
|
||||
$selected_past_ss = (isset($_GET['pastStsem']) && is_string($_GET['pastStsem'])) ? $_GET['pastStsem'] : null; // Default: null
|
||||
|
||||
//Stundentabelleholen
|
||||
if(! $result_stunde=$db->db_query('SELECT * FROM lehre.tbl_stunde ORDER BY stunde'))
|
||||
die($db->db_last_error());
|
||||
$num_rows_stunde=$db->db_num_rows($result_stunde);
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($type) && $type=='save')
|
||||
{
|
||||
$zw = new zeitwunsch();
|
||||
|
||||
for ($t=1;$t<7;$t++)
|
||||
{
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
$var='wunsch'.$t.'_'.$i;
|
||||
if(!isset($_POST[$var]))
|
||||
continue;
|
||||
$gewicht=$_POST[$var];
|
||||
$stunde=$i+1;
|
||||
|
||||
$zw->mitarbeiter_uid = $uid;
|
||||
$zw->stunde = $stunde;
|
||||
$zw->tag = $t;
|
||||
$zw->gewicht = $gewicht;
|
||||
$zw->updateamum = date('Y-m-d H:i:s');
|
||||
$zw->updatevon = $uid;
|
||||
|
||||
if (!$zw->exists($uid, $stunde, $t))
|
||||
{
|
||||
$zw->new = true;
|
||||
$zw->insertamum = date('Y-m-d H:i:s');
|
||||
$zw->insertvon = $uid;
|
||||
}
|
||||
else
|
||||
$zw->new = false;
|
||||
|
||||
if(!$zw->save())
|
||||
echo $zw->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$zw = new zeitwunsch();
|
||||
if(!$zw->loadPerson($uid))
|
||||
die($zw->errormsg);
|
||||
|
||||
$wunsch = $zw->zeitwunsch;
|
||||
|
||||
|
||||
// Personendaten
|
||||
$person = new benutzer();
|
||||
if(!$person->load($uid))
|
||||
@@ -114,11 +84,10 @@ if(!$person->load($uid))
|
||||
$ma = new mitarbeiter($uid);
|
||||
$fixangestellt = $ma->fixangestellt;
|
||||
|
||||
// Nächstes Studiensemester
|
||||
$ss = new Studiensemester();
|
||||
$ss->getNextStudiensemester();
|
||||
$next_ss = $ss->studiensemester_kurzbz;
|
||||
$current_ss = $ss->getakt();
|
||||
// Check, ob Bearbeitung des ZW gesperrt ist.
|
||||
// Gesperrt, wenn Lektor bereits zugewiesene LVs hat.
|
||||
// Sperre in jeden Fall aufgehoben, wenn ein ZW kopiert wird. (denn ist eine eventuelle Sperre bereits manuell aufgehoben worden)
|
||||
$isGesperrt = checkIsVerplant($uid, $selected_ss) && is_null($selected_past_ss); // boolean
|
||||
|
||||
// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern
|
||||
if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
|
||||
@@ -127,10 +96,10 @@ if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $current_ss;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $akt_ss->studiensemester_kurzbz;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $current_ss);
|
||||
$za_gd->load($uid, $akt_ss->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
@@ -147,10 +116,10 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss->studiensemester_kurzbz;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $next_ss);
|
||||
$za_gd->load($uid, $next_ss->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
@@ -162,14 +131,302 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
|
||||
}
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($_GET['type']) && $_GET['type'] == 'save')
|
||||
{
|
||||
// Letzte Zeitwunschgueltigkeit (ZWG) holen
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 1);
|
||||
$lastZwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft
|
||||
$lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false;
|
||||
$zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird
|
||||
|
||||
// Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden
|
||||
if (is_null($lastZwg))
|
||||
{
|
||||
// Wenn ZW fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn mindestens eine ZWG vorhanden
|
||||
if (!is_null($lastZwg))
|
||||
{
|
||||
// Wenn Zeitwunsch fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Wenn naechstes Studiensemester schon eine eigene ZWG hat
|
||||
if ($lastZwgStartsNextSemester)
|
||||
{
|
||||
// Nur Zeitwunsch dieser ZWG updaten
|
||||
$zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
|
||||
// Wenn naechstes Studiensemester keine eigene ZWG hat
|
||||
if (!$lastZwgStartsNextSemester)
|
||||
{
|
||||
// Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester
|
||||
updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende);
|
||||
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
/**
|
||||
* Check, ob aktuelles Studiensemester eine ZWG hat.
|
||||
* Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das
|
||||
* aktuelle Studiensemester noch keine ZWG.
|
||||
* */
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz);
|
||||
$akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Keine ZWG fuer aktuelles Studiensemester vorhanden.
|
||||
// Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN
|
||||
if (is_null($akt_ss_zwg))
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende);
|
||||
}
|
||||
|
||||
// ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER
|
||||
if ((!is_null($akt_ss_zwg)))
|
||||
{
|
||||
// Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten
|
||||
// Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird.
|
||||
if ((new DateTime($akt_ss_zwg->von))->format('Y-m-d') == (new Datetime())->format('Y-m-d'))
|
||||
{
|
||||
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis);
|
||||
|
||||
$zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen:
|
||||
// -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist)
|
||||
// -> sonst ist bis null
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis);
|
||||
|
||||
// Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern
|
||||
// NOTE: MUSS nach dem insert sein
|
||||
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime('yesterday'))->format('Y-m-d H:i:s'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert Zeitwunsch mit Zeitwunsch ZWG ID
|
||||
if (is_numeric($zw_zwg_id))
|
||||
{
|
||||
$zw = new zeitwunsch();
|
||||
|
||||
for ($t=1;$t<7;$t++)
|
||||
{
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
$var='wunsch'.$t.'_'.$i;
|
||||
if(!isset($_POST[$var]))
|
||||
continue;
|
||||
$gewicht=$_POST[$var];
|
||||
$stunde=$i+1;
|
||||
|
||||
$zw->mitarbeiter_uid = $uid;
|
||||
$zw->stunde = $stunde;
|
||||
$zw->tag = $t;
|
||||
$zw->gewicht = $gewicht;
|
||||
$zw->updateamum = date('Y-m-d H:i:s');
|
||||
$zw->updatevon = $uid;
|
||||
$zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id;
|
||||
|
||||
if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t))
|
||||
{
|
||||
$zw->new = true;
|
||||
$zw->insertamum = date('Y-m-d H:i:s');
|
||||
$zw->insertvon = $uid;
|
||||
}
|
||||
else
|
||||
{
|
||||
$zw->new = false;
|
||||
}
|
||||
|
||||
if(!$zw->save())
|
||||
echo $zw->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre
|
||||
// deaktiviert. Bearbeitungssperre wird gesetzt, wenn isGesperrt true ist. Deshalb hier mit false überschreiben.
|
||||
$isGesperrt = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunschgueltigkeit fuer Tabelle holen.
|
||||
* Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt.
|
||||
* Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen:
|
||||
* 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch)
|
||||
* 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester
|
||||
* 3: Default: Nächstes Studiensemesters
|
||||
*/
|
||||
$zwg = new zeitwunsch_gueltigkeit();
|
||||
$tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss;
|
||||
$zwg->getByStudiensemester($uid, $tmp_ss);
|
||||
$zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW
|
||||
|
||||
/**
|
||||
* Zeitwunsch fuer Tabelle holen
|
||||
* Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer
|
||||
* */
|
||||
$zw = new zeitwunsch();
|
||||
if (!$zw->loadByZWG($uid, $zwg_id))
|
||||
{
|
||||
die($zw->errormsg);
|
||||
}
|
||||
$wunsch = $zw->zeitwunsch;
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Erstellen einer neuen ZWG
|
||||
*/
|
||||
function insertZWG($uid, $von, $bis)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = true;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->von = $von;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->insertvon = $uid;
|
||||
if ($zwg->save())
|
||||
{
|
||||
return $zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Updaten einer bestehenden ZWG
|
||||
*/
|
||||
function updateZWG($uid, $zwg_id, $bis)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = false;
|
||||
$zwg->zeitwunsch_gueltigkeit_id = $zwg_id;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->updatevon = $uid;
|
||||
|
||||
if (!$zwg->save())
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check, ob Lektor bereits zugewiesene LVs hat
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return bool|void
|
||||
*/
|
||||
function checkIsVerplant($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$lstd = new Lehrstunde();
|
||||
if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true))
|
||||
{
|
||||
die($lstd->errormsg);
|
||||
}
|
||||
|
||||
return empty($lstd->result) ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Studiengaenge of STG assigend to LVs, to which lector is alredy assigend in
|
||||
* the given Studiensemester.
|
||||
*
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return array|void
|
||||
*/
|
||||
function getStgOfVerplant($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$stg_arr = array(); // Mail data for Studiengang
|
||||
|
||||
// Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit
|
||||
$lstd = new Lehrstunde();
|
||||
if (!$lstd->getStundenplanData(
|
||||
'stundenplandev',
|
||||
null,
|
||||
$studiensemester_kurzbz,
|
||||
null,
|
||||
$uid,
|
||||
null,
|
||||
true)) //...but only from now on
|
||||
{
|
||||
die($lstd->errormsg);
|
||||
}
|
||||
|
||||
// Loop through Stundenplan entries
|
||||
foreach ($lstd->result as $row)
|
||||
{
|
||||
// Get LE of Stundenplan entry
|
||||
$le = new Lehreinheit($row->lehreinheit_id);
|
||||
|
||||
// GET LV by LE of Stundenplan entry
|
||||
$lv = new Lehrveranstaltung($le->lehrveranstaltung_id);
|
||||
|
||||
// Build Studiengang array
|
||||
$stg_arr[] = $lv->studiengang_kz;
|
||||
}
|
||||
|
||||
// Make Studiengang array unique
|
||||
return array_unique($stg_arr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Studiengang eMail Addresses.
|
||||
* @param $stgKz_arr // Studiengang Kennzeichen Array
|
||||
* @return array
|
||||
*/
|
||||
function getStgMail($stgKz_arr)
|
||||
{
|
||||
$stgMail_arr = array();
|
||||
foreach($stgKz_arr as $stgKz)
|
||||
{
|
||||
$stg = new Studiengang($stgKz);
|
||||
$stgMail_arr[]= $stg->email;
|
||||
}
|
||||
return $stgMail_arr;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $p->t('zeitwunsch/zeitwunsch');?></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link href="../../../skin/flexcrollstyles.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
// Pruefen ob nur die erlaubten Werte verwendet wurden
|
||||
function checkvalues()
|
||||
@@ -194,181 +451,375 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
$(function() {
|
||||
// Bearbeitung deaktivieren, wenn Lektor zugewiesene LV im Studiensemester hat
|
||||
const isGesperrt = $('input[name=isGesperrt]').val();
|
||||
if (isGesperrt == 'true')
|
||||
{
|
||||
$('input[name=radioZWG]').attr("disabled", true);
|
||||
$('input[name=submit]').attr("disabled", true);
|
||||
}
|
||||
|
||||
// Bearbeitung aktivieren, wenn Lektor Aktivierungslink klickt
|
||||
$('#bearbeitung-aktivieren').click(function(){
|
||||
$('input[name=radioZWG]').attr("disabled", false);
|
||||
$('input[name=submit]').attr("disabled", false);
|
||||
|
||||
$('#divChangeZWG').removeClass('hidden');
|
||||
$('#divisGesperrt').addClass('hidden');
|
||||
});
|
||||
|
||||
// Bei Wechsel von Studiensemester die Seite mit GET params neu laden
|
||||
$('#stsem').change(function(){
|
||||
let studiensemester = $('option:selected', this).val();
|
||||
|
||||
window.location = '?stsem=' + studiensemester;
|
||||
});
|
||||
|
||||
// Bei Wechsel zwischen Zeitwunsch aendern / kopieren
|
||||
$("input[name='radioZWG']").change(function(){
|
||||
if ($(this).val() == 'copy')
|
||||
{
|
||||
$('#divCopyZWG').removeClass('hidden');
|
||||
$('#divChangeZWG').addClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#divCopyZWG').addClass('hidden');
|
||||
$('#divChangeZWG').removeClass('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
// Bei Wahl von vergangenem Studiensemester die Seite mit GET params neu laden
|
||||
$('#pastStsem').change(function(){
|
||||
let stsem = $('#stsem option:selected').val()
|
||||
let pastStsem = $('option:selected', this).val();
|
||||
|
||||
window.location = '?stsem='+ stsem + '&pastStsem=' + pastStsem;
|
||||
});
|
||||
|
||||
// Alle Werte ind Zeitwunschtabelle auf 1 setzen
|
||||
$('#empty-table').click(function(){
|
||||
$('#table-zeitwunsch tr td input').each(function() {
|
||||
$(this)
|
||||
.val(1)
|
||||
.parent().css('background-color', '#CCFFCC');
|
||||
});
|
||||
})
|
||||
|
||||
// Aenderungen in Zeitwunschtabelle zurücknehmen -> Seite neu laden
|
||||
$('#reload-table').click(function(){
|
||||
let studiensemester = $('option:selected', '#stsem').val();
|
||||
window.location = '?stsem=' + studiensemester;
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="flexcroll" style="outline: none;">
|
||||
<table>
|
||||
<table class="table">
|
||||
<?php if($fixangestellt && (defined('CIS_ZEITWUNSCH_GD') && CIS_ZEITWUNSCH_GD)): ?>
|
||||
<!--Erklärung zu Pausen bei geteilten Arbeitszeiten-->
|
||||
<tr>
|
||||
<td>
|
||||
<h1>Zustimmung zur Verplanung in geteilter Arbeitszeit</h1>
|
||||
<h3>Zustimmung zur Verplanung in geteilter Arbeitszeit</h3>
|
||||
|
||||
<form action="">
|
||||
<p>
|
||||
<?php
|
||||
echo $p->t('zeitwunsch/geteilteArbeitszeit');
|
||||
echo '<br><br>';
|
||||
$gd = new zeitaufzeichnung_gd();
|
||||
$gd->load($uid, $current_ss);
|
||||
$gd->load($uid, $akt_ss->studiensemester_kurzbz);
|
||||
if ( ! $gd->uid )
|
||||
{
|
||||
echo '<br><br><h3>Zustimmung für '.$current_ss.': ';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
|
||||
echo '</h3><br><br><input type="submit" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
|
||||
echo '<div class="radio">';
|
||||
echo '<b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': ';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
|
||||
echo '</label>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
|
||||
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
|
||||
echo '<br><br><h3>Zustimmung für '.$current_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
|
||||
echo '<br><br><b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
|
||||
}
|
||||
$gd = new zeitaufzeichnung_gd();
|
||||
$gd->load($uid, $next_ss);
|
||||
$gd->load($uid, $next_ss->studiensemester_kurzbz);
|
||||
if ( ! $gd->uid )
|
||||
{
|
||||
echo '<h3>Zustimmung für '.$next_ss.': ';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
|
||||
echo '</h3><br><br><input type="submit" name="submit" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
|
||||
echo '<div class="radio">';
|
||||
echo '<b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': ';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
|
||||
echo '</label>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
|
||||
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit" value="'.$p->t('global/speichern').'" style="float: right">';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
|
||||
echo '<h3>Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
|
||||
echo '<br><b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
|
||||
}
|
||||
//var_dump($gd);
|
||||
?>
|
||||
|
||||
</p>
|
||||
</form>
|
||||
<br><hr>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr>
|
||||
<td>
|
||||
<h1><?php echo $p->t('zeitwunsch/zeitwunsch');?></h1>
|
||||
<!--Auskommentiert von Kindl, da sich der Hilfetext nicht vom Anleitungtext auf der Seite unterscheidet
|
||||
<td class="ContentHeader" align="right">
|
||||
<A onclick="window.open('zeitwunsch_help.php','Hilfe', 'height=320,width=480,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');" class="hilfe" target="_blank">
|
||||
<font class="ContentHeader">
|
||||
<?php echo $p->t('zeitwunsch/help')?>
|
||||
</font>
|
||||
</A>
|
||||
</td>-->
|
||||
<?php
|
||||
echo "<h2>".$p->t('zeitwunsch/zeitwunschVon')." $person->titelpre $person->vorname $person->nachname $person->titelpost<br/></h2>";
|
||||
echo $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster')."<br/><br/>";
|
||||
echo '<FORM name="zeitwunsch" method="post" action="zeitwunsch.php?type=save" onsubmit="return checkvalues()">
|
||||
<TABLE>
|
||||
<TR>';
|
||||
|
||||
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
|
||||
for ($i=0;$i<$num_rows_stunde; $i++)
|
||||
{
|
||||
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
|
||||
$beginn=substr($beginn,0,5);
|
||||
$ende=$db->db_result($result_stunde,$i,'"ende"');
|
||||
$ende=substr($ende,0,5);
|
||||
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
|
||||
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
|
||||
}
|
||||
// FORM Begin
|
||||
echo '<form name="zeitwunsch" method="post" action="zeitwunsch.php?stsem='. $selected_ss. '&type=save" onsubmit="return checkvalues()">';
|
||||
echo '<input type="hidden" name="uid" value="'. $uid. '">';
|
||||
echo '<input type="hidden" name="isGesperrt" value="'. json_encode($isGesperrt). '">';
|
||||
|
||||
echo '</TR>';
|
||||
// Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester
|
||||
$next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
|
||||
$akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
|
||||
|
||||
for ($j=1; $j<7; $j++)
|
||||
{
|
||||
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
if (isset($wunsch[$j][$i+1]))
|
||||
$index=$wunsch[$j][$i+1];
|
||||
else
|
||||
$index=1;
|
||||
//$id='bgcolor';
|
||||
//$id.=$index+3;
|
||||
$bgcolor=$cfgStdBgcolor[$index+3];
|
||||
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
|
||||
}
|
||||
echo '</TR>';
|
||||
}
|
||||
echo '<h3>'. $p->t('zeitwunsch/gueltigIm');
|
||||
echo '<SELECT name="stsem" id="stsem">';
|
||||
echo '<OPTION value="'.$next_ss->studiensemester_kurzbz.'"'. $next_ss_selected. '>'. $next_ss->studiensemester_kurzbz.'</OPTION>';
|
||||
echo '<OPTION value="'.$akt_ss->studiensemester_kurzbz.'"'. $akt_ss_selected. '>'. $akt_ss->studiensemester_kurzbz.'</OPTION>';
|
||||
echo '</SELECT>';
|
||||
echo '</h3><br>';
|
||||
|
||||
echo '
|
||||
</TABLE><br>
|
||||
<INPUT type="hidden" name="uid" value="'.$uid.'">
|
||||
<INPUT type="submit" name="Abschicken" value="'.$p->t('global/speichern').'">
|
||||
';
|
||||
// Tabelle Zeitwunsch-Semesterplan
|
||||
echo '<table id="table-zeitwunsch" class="table table-default table-condensed table-bordered">';
|
||||
// Tabelle Kopfzeile
|
||||
echo '<tr>';
|
||||
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
|
||||
for ($i=0;$i<$num_rows_stunde; $i++)
|
||||
{
|
||||
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
|
||||
$beginn=substr($beginn,0,5);
|
||||
$ende=$db->db_result($result_stunde,$i,'"ende"');
|
||||
$ende=substr($ende,0,5);
|
||||
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
|
||||
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
|
||||
}
|
||||
echo '</tr>';
|
||||
// Tabelle Zellen
|
||||
for ($j=1; $j<7; $j++)
|
||||
{
|
||||
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
if (isset($wunsch[$j][$i+1]))
|
||||
$index=$wunsch[$j][$i+1];
|
||||
else
|
||||
$index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden
|
||||
|
||||
if($zw->updateamum!='')
|
||||
{
|
||||
echo '<font size="x-small">'.$p->t('zeitwunsch/letzteAenderung').': '.$datum_obj->formatDatum($zw->updateamum,'d.m.Y H:i:s').' '.$p->t('zeitwunsch/von').' '.$zw->updatevon.'</font>';
|
||||
}
|
||||
?>
|
||||
$bgcolor=$cfgStdBgcolor[$index+3];
|
||||
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
|
||||
}
|
||||
echo '</TR>';
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
</FORM>
|
||||
// Zeitwunsch aendern / kopieren
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-xs-12">';
|
||||
echo '<span>'. $p->t('zeitwunsch/erklaerungstext'). '</span><br>';
|
||||
echo '<hr>';
|
||||
echo '</div>'; // end col-xs-12
|
||||
echo '</div>'; // end row
|
||||
|
||||
<br>
|
||||
echo '<div class="row">';
|
||||
|
||||
<h2><?php echo $p->t('zeitwunsch/erklärung');?>:</h2>
|
||||
echo '<div class="col-xs-9">';
|
||||
// Radiobuttons aendern / kopieren
|
||||
$radioChangeChecked = is_null($selected_past_ss) ? 'checked' : '';
|
||||
$radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : '';
|
||||
|
||||
<?php
|
||||
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
|
||||
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
|
||||
?>
|
||||
</a>
|
||||
<P><?php echo $p->t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!<BR><BR>
|
||||
</P>
|
||||
<TABLE align=center>
|
||||
<TR>
|
||||
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
|
||||
<TH>
|
||||
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
|
||||
</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<!--<TR>
|
||||
<TD>
|
||||
<DIV align="right">0</DIV>
|
||||
</TD>
|
||||
<TD>keine Bedeutung</TD>
|
||||
</TR>-->
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">-1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">-2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierAufGarKeinenFall');?></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<h2><?php echo $p->t('zeitwunsch/folgendePunkteSindZuBeachten');?>:</h2>
|
||||
<OL>
|
||||
<LI><?php echo $p->t('zeitwunsch/verwendenSieDenWertNur');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/sperrenSieNurTermine');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/esSolltenFuerJedeStunde');?></LI>
|
||||
</OL>
|
||||
<P><?php echo $p->t('lvplan/fehlerUndFeedback');?> <A class="Item" href="mailto:<?php echo MAIL_LVPLAN;?>"><?php echo $p->t('lvplan/lvKoordinationsstelle');?></A>.</P>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
echo '<div class="radio">';
|
||||
echo '<span class="text-uppercase"><b>'.$p->t('zeitwunsch/fuer', array($selected_ss)). '</b></span>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<b><input type="radio" name="radioZWG" id="radioChangeZWG" value="change" '. $radioChangeChecked. '> '. $p->t('zeitwunsch/kopieren'). '</b>';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<b><input type="radio" name="radioZWG" id="radioCopyZWG" value="copy" '. $radioCopyChecked. '> '. $p->t('zeitwunsch/aendern'). '</b>';
|
||||
echo '</label>';
|
||||
if ($isGesperrt)
|
||||
{
|
||||
echo '<span class="label label-danger valign-top">'.$p->t('zeitwunsch/stundenBereitsVerplant', array($selected_ss)). '</span>';
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>'; // end col-xs-9
|
||||
|
||||
echo '<div class="col-xs-3" class="pull-left">';
|
||||
echo '<span><small><a id="empty-table" style="cursor: pointer">'. $p->t('zeitwunsch/werteAuf1setzen'). '</a></small></span><br>';
|
||||
echo '<span><small><a id="reload-table" style="cursor: pointer">'. $p->t('global/aenderungenZuruecksetzen'). '</a></small></span><br><br>';
|
||||
echo '</div>'; // end col-xs-3
|
||||
|
||||
$divChangeHidden = !is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
|
||||
$divCopyHidden = is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
|
||||
$divisGesperrtHidden = $isGesperrt ? '' : 'hidden';
|
||||
|
||||
echo '<div id="divChangeZWG" class="'. $divChangeHidden . '">';
|
||||
echo '<div class="col-xs-8 col-lg-7">';
|
||||
echo '<span>' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .'</span>';
|
||||
echo '</div>'; // end col
|
||||
echo '<div class="col-xs-1 col-lg-2">';
|
||||
// BLANK
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divChangeZWG
|
||||
|
||||
echo '<div id="divCopyZWG" class="'. $divCopyHidden . '">';
|
||||
echo '<div class="col-xs-7">';
|
||||
echo '<span>' . $p->t('zeitwunsch/kopierenText') .'</span>';
|
||||
echo '</div>'; // end col
|
||||
|
||||
$studiensemester = new Studiensemester();
|
||||
$tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz;
|
||||
$studiensemester->load($tmp_ss);
|
||||
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 4, true, $studiensemester->ende);
|
||||
$past_zwg_arr = $zwg->result;
|
||||
echo '<div class="col-xs-2">';
|
||||
echo '<select name="pastStsem" id="pastStsem" class="form form-control">';
|
||||
echo '<OPTION value="">-- '. $p->t("global/bitteWaehlen").' --</OPTION>';
|
||||
foreach($past_zwg_arr as $row)
|
||||
{
|
||||
$selected = $row->studiensemester_kurzbz == $selected_past_ss ? 'selected' : '';
|
||||
echo '<option value="'. $row->studiensemester_kurzbz. '" '. $selected. '>'. $row->studiensemester_kurzbz. '</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divCopyZWG
|
||||
|
||||
echo '<div id="divisGesperrt" class="'. $divisGesperrtHidden . '">';
|
||||
|
||||
// Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist
|
||||
$stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss);
|
||||
$stgMail_arr = getStgMail($stgKzOfVerplant_arr);
|
||||
|
||||
echo '<div class="col-xs-9">';
|
||||
echo '<div class="panel panel-danger">';
|
||||
echo '<div class="panel-body">';
|
||||
echo '<span class="text-danger"><b>'. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': </b></span>';
|
||||
echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, implode($stgMail_arr, '; '))). '
|
||||
<a id="bearbeitung-aktivieren" style="cursor:pointer;">'. $p->t("zeitwunsch/bearbeitungAktivieren"). '</a><br>
|
||||
<span><b>'. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . '</b></span>
|
||||
</span>';
|
||||
echo '</div>'; // end panel heading
|
||||
echo '</div>'; // end panel
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divisGesperrt
|
||||
|
||||
// Speichern - Button
|
||||
echo '<div class="col-xs-3">';
|
||||
echo '<input class="btn btn-default" style="width: 200px;" type="submit" name="submit" value="'.$p->t('global/speichern').'">';
|
||||
echo '</div>';
|
||||
|
||||
echo '</div>'; // end row
|
||||
echo '<hr>';
|
||||
?>
|
||||
</form>
|
||||
|
||||
<!-- Zeitwunsch Erklaerung -->
|
||||
<div class="row">
|
||||
<div class="col-xs-9">
|
||||
<span><b><?php echo $p->t('zeitwunsch/folgendePunkteSindZuBeachten');?>:</b></span>
|
||||
<UL class="unordered-list">
|
||||
<LI><?php echo $p->t('zeitwunsch/verwendenSieDenWertNur');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/sperrenSieNurTermine');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/esSolltenFuerJedeStunde');?></LI>
|
||||
</UL><br>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<br>
|
||||
<TABLE class="table table-condensed table-default table-bordered" align=center>
|
||||
<TR>
|
||||
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
|
||||
<TH>
|
||||
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
|
||||
</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[5]; ?>">
|
||||
<DIV align="right">2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[6]; ?>">
|
||||
<DIV align="right">1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<!--<TR>
|
||||
<TD>
|
||||
<DIV align="right">0</DIV>
|
||||
</TD>
|
||||
<TD>keine Bedeutung</TD>
|
||||
</TR>-->
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[2]; ?>">
|
||||
<DIV align="right">-1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[1]; ?>">
|
||||
<DIV align="right">-2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierAufGarKeinenFall');?></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Zeitsperre -->
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4><?php echo $p->t('zeitsperre/zeitsperren');?>:</h4>
|
||||
<?php
|
||||
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
|
||||
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
|
||||
?></a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -247,6 +247,10 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
|
||||
/>
|
||||
|
||||
</row>
|
||||
<row>
|
||||
<label value="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#zeitverfuegbarkeit"
|
||||
tooltiptext="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#lektor hat in diesem Studiensemester verfügbare Zeiten" class="tempus_lektor_verfuegbarezeit"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
||||
|
||||
@@ -681,12 +681,12 @@ while ($begin<=$ende)
|
||||
{
|
||||
$wunsch=new zeitwunsch();
|
||||
if ($type=='lektor')
|
||||
if ($wunsch->loadPerson($pers_uid,$datum))
|
||||
if ($wunsch->loadPerson($pers_uid,montag($datum)))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
|
||||
if ($wunsch->loadZwLE($lva_id,$datum))
|
||||
if ($wunsch->loadZwLE($lva_id,montag($datum)))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
|
||||
@@ -334,6 +334,29 @@ function onLektorSelect(event)
|
||||
}
|
||||
}
|
||||
|
||||
function LektorFunktionLoadZeitwunschAdminUrl(){
|
||||
|
||||
var treeLektor = document.getElementById('tree-lektor');
|
||||
var col = treeLektor.columns ? treeLektor.columns["uid"] : "uid";
|
||||
try
|
||||
{
|
||||
var uid = treeLektor.view.getCellText(treeLektor.currentIndex,col);
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
}
|
||||
|
||||
if (uid == '' || uid == undefined)
|
||||
{
|
||||
alert('LektorIn auswählen, um Zeitwünsche einsehen zu können.');
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
window.open('<?php echo APP_ROOT ?>vilesci/personen/zeitwunsch.php?uid=' + uid);
|
||||
}
|
||||
}
|
||||
|
||||
function loadURL(event)
|
||||
{
|
||||
var contentFrame = document.getElementById('contentFrame');
|
||||
|
||||
@@ -186,6 +186,8 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-semester-overlay.xu
|
||||
<vbox id="vbox-main">
|
||||
<popupset>
|
||||
<menupopup id="fasoverlay-lektor-tree-popup">
|
||||
<menuitem label="Zeitwünsche einsehen" oncommand="LektorFunktionLoadZeitwunschAdminUrl();" />
|
||||
<menuseparator />
|
||||
<menuitem label="Mail senden" oncommand="LektorFunktionMail();" />
|
||||
<menuseparator />
|
||||
<menuitem label="Entfernen" oncommand="LektorFunktionDel();" />
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
// Hintergrundfarben fuer Tabellen beim Zeitwunsch
|
||||
global $cfgStdBgcolor;
|
||||
$cfgStdBgcolor=array();
|
||||
$cfgStdBgcolor[0]="#CC0000";
|
||||
$cfgStdBgcolor[1]="#FF2200";
|
||||
$cfgStdBgcolor[2]="#FF9922";
|
||||
$cfgStdBgcolor[3]="#FFFF55";
|
||||
$cfgStdBgcolor[4]="#C0ECC3";
|
||||
$cfgStdBgcolor[5]="#48FA66";
|
||||
$cfgStdBgcolor[6]="#CCFFCC";
|
||||
$cfgStdBgcolor[0]="#CC0000"; // rot
|
||||
$cfgStdBgcolor[1]="#FF2200"; // hellrot
|
||||
$cfgStdBgcolor[2]="#FF9922"; // orange
|
||||
$cfgStdBgcolor[3]="#FFFF55"; // gelb
|
||||
$cfgStdBgcolor[4]="#C0ECC3"; // hellgrün mittel
|
||||
$cfgStdBgcolor[5]="#48FA66"; // dunkelgrün mittel
|
||||
$cfgStdBgcolor[6]="#CCFFCC"; // hellgrün heller
|
||||
$cfgStdBgcolor[7]="#59b359 "; // dunkelgrün dunkler
|
||||
|
||||
// Mehrsprachige Wochentage
|
||||
global $tagbez;
|
||||
|
||||
@@ -681,8 +681,11 @@ class lehreinheit extends basis_db
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_object($erg_zs);
|
||||
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
|
||||
return false;
|
||||
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
|
||||
{
|
||||
$this->errormsg = "Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -34,6 +34,8 @@ require_once(dirname(__FILE__).'/variable.class.php');
|
||||
|
||||
class lehrstunde extends basis_db
|
||||
{
|
||||
public $result = array();
|
||||
|
||||
public $stundenplan_id; /// @brief ID in der Datenbank
|
||||
public $lehreinheit_id; /// @brief id der Lehreinheit in der DB
|
||||
public $unr; // @brief Unterrichtsnummer
|
||||
@@ -876,8 +878,12 @@ class lehrstunde extends basis_db
|
||||
if ($anz_zs!=0)
|
||||
{
|
||||
$row = $this->db_fetch_object($erg_zs);
|
||||
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
|
||||
return true;
|
||||
|
||||
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
|
||||
{
|
||||
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1060,7 +1066,19 @@ class lehrstunde extends basis_db
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
|
||||
/**
|
||||
* Holt Studenplandaten.
|
||||
*
|
||||
* @param $db_stpl_table
|
||||
* @param null $lehrveranstaltung_id
|
||||
* @param null $studiensemester_kurzbz
|
||||
* @param null $lehreinheit_id
|
||||
* @param null $mitarbeiter_uid
|
||||
* @param null $student_uid
|
||||
* @param false $nurBevorstehende Wenn true, dann werden nur bevorstehende LVs abgefragt.
|
||||
* @return bool
|
||||
*/
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
|
||||
{
|
||||
|
||||
$qry = "SELECT
|
||||
@@ -1112,6 +1130,11 @@ class lehrstunde extends basis_db
|
||||
else
|
||||
return false;
|
||||
|
||||
if($nurBevorstehende)
|
||||
{
|
||||
$qry.= " AND datum >= NOW()::date ";
|
||||
}
|
||||
|
||||
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
|
||||
|
||||
@@ -1136,7 +1159,10 @@ class lehrstunde extends basis_db
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Einholen der Stundenplandaten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1235,7 +1235,9 @@ class wochenplan extends basis_db
|
||||
if (isset($wunsch[$i][$j]))
|
||||
{
|
||||
$index=$wunsch[$i][$j];
|
||||
if ($index==-3)
|
||||
|
||||
// Negative und positive Zeitsperren beruecksichtigen
|
||||
if ($index==-3 || $index == 4)
|
||||
{
|
||||
//Wenn eine Zeitsperre eingetragen ist, dann diese im Tooltiptext anzeigen
|
||||
$zeitsperre = new zeitsperre();
|
||||
|
||||
@@ -537,5 +537,60 @@ class zeitsperre extends basis_db
|
||||
return $this->bisdatum;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert die Zeitsperren eines Users innerhalb einer bestimmten Zeitspanne.
|
||||
* Einschränkung nach Zeitsperrentyp möglich.
|
||||
*
|
||||
* @param $uid
|
||||
* @param $von string Datum im Format YYYY-MM-DD
|
||||
* @param $bis string Datum im Format YYYY-MM-DD
|
||||
* @param null $zeitsperretyp_kurzbz
|
||||
* @return bool
|
||||
*/
|
||||
public function getVonBis($uid, $von, $bis, $zeitsperretyp_kurzbz = null)
|
||||
{
|
||||
$qry = '
|
||||
SELECT
|
||||
zeitsperre_id, zeitsperretyp_kurzbz, vondatum, vonstunde, bisdatum, bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
LEFT JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
|
||||
WHERE
|
||||
mitarbeiter_uid = '. $this->db_add_param($uid). '
|
||||
AND (
|
||||
(vondatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
|
||||
OR
|
||||
(bisdatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
|
||||
)';
|
||||
|
||||
if (!is_null($zeitsperretyp_kurzbz))
|
||||
{
|
||||
$qry.= '
|
||||
AND zeitsperretyp_kurzbz = '. $this->db_add_param($zeitsperretyp_kurzbz);
|
||||
}
|
||||
|
||||
if (!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
$obj->zeitsperre_id = $row->zeitsperre_id;
|
||||
$obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
|
||||
$obj->vondatum = $row->vondatum;
|
||||
$obj->vonstunde = $row->vonstunde;
|
||||
$obj->bisdatum = $row->bisdatum;
|
||||
$obj->bisstunde = $row->bisstunde;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+454
-374
@@ -1,374 +1,454 @@
|
||||
<?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(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class zeitwunsch extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $zeitwunsch;
|
||||
|
||||
//Tabellenspalten
|
||||
public $stunde; // smalint
|
||||
public $mitarbeiter_uid; // varchar(32)
|
||||
public $tag; // smalint
|
||||
public $gewicht; // smalint
|
||||
public $min_stunde;
|
||||
public $max_stunde;
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialisierung
|
||||
*
|
||||
*/
|
||||
private function init()
|
||||
{
|
||||
// Stundenraster abfragen
|
||||
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_object();
|
||||
$this->min_stunde=$row->min_stunde;
|
||||
$this->max_stunde=$row->max_stunde;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
if(mb_strlen($this->mitarbeiter_uid)>32)
|
||||
{
|
||||
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
|
||||
return false;
|
||||
}
|
||||
if($this->mitarbeiter_uid == '')
|
||||
{
|
||||
$this->errormsg = 'UID muss angegeben werden';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->stunde))
|
||||
{
|
||||
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->gewicht))
|
||||
{
|
||||
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->tag))
|
||||
{
|
||||
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert einen Zeitwunsch in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
|
||||
* angelegt, ansonsten der Datensatz upgedated
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
if($this->new)
|
||||
{
|
||||
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
|
||||
insertamum, insertvon, updateamum, updatevon) VALUES('.
|
||||
$this->db_add_param($this->mitarbeiter_uid).','.
|
||||
$this->db_add_param($this->tag, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->stunde, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->insertamum).','.
|
||||
$this->db_add_param($this->insertvon).','.
|
||||
$this->db_add_param($this->updateamum).','.
|
||||
$this->db_add_param($this->updatevon).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
|
||||
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
|
||||
' updateamum='.$this->db_add_param($this->updateamum).', '.
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
|
||||
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
|
||||
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch einer Person laden
|
||||
* @param uid
|
||||
* @param datum
|
||||
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
|
||||
*/
|
||||
public function loadPerson($uid,$datum=null)
|
||||
{
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid)))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Zeitwunsch der Personen in Lehreinheiten laden
|
||||
* @param $le_id LehreinheitID Array
|
||||
* @param $datum
|
||||
* @return true oder false
|
||||
*/
|
||||
public function loadZwLE($le_id,$datum=null)
|
||||
{
|
||||
//$this->init();
|
||||
// SUB-Select fuer LVAs
|
||||
$sql_query_leid='';
|
||||
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
|
||||
for ($i=0;$i<count($le_id);$i++)
|
||||
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
|
||||
$sql_query_leid=mb_substr($sql_query_leid,3);
|
||||
$sql_query_le.=$sql_query_leid;
|
||||
|
||||
// Schlechteste Zeitwuensche holen
|
||||
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
|
||||
FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid IN ('.$sql_query_le.') GROUP BY tag,stunde';
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
while($row = $this->db_fetch_object())
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
|
||||
// ***********************************************************
|
||||
// Zeitsperren fuer die aktuelle Woche holen
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid IN ($sql_query_le)
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob bereits ein Zeitwunsch eingetragen ist
|
||||
*
|
||||
* @param $uid
|
||||
* @param $stunde
|
||||
* @param $tag
|
||||
* @return true wenn vorhanden sonst false
|
||||
*/
|
||||
function exists($uid, $stunde, $tag)
|
||||
{
|
||||
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
|
||||
AND tag=".$this->db_add_param($tag, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()>0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?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(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class zeitwunsch extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $zeitwunsch;
|
||||
|
||||
//Tabellenspalten
|
||||
public $stunde; // smalint
|
||||
public $mitarbeiter_uid; // varchar(32)
|
||||
public $tag; // smalint
|
||||
public $gewicht; // smalint
|
||||
public $min_stunde;
|
||||
public $max_stunde;
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
public $zeitwunsch_id;
|
||||
public $zeitwunsch_gueltigkeit_id;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialisierung
|
||||
*
|
||||
*/
|
||||
private function init()
|
||||
{
|
||||
// Stundenraster abfragen
|
||||
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_object();
|
||||
$this->min_stunde=$row->min_stunde;
|
||||
$this->max_stunde=$row->max_stunde;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
if(mb_strlen($this->mitarbeiter_uid)>32)
|
||||
{
|
||||
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
|
||||
return false;
|
||||
}
|
||||
if($this->mitarbeiter_uid == '')
|
||||
{
|
||||
$this->errormsg = 'UID muss angegeben werden';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->stunde))
|
||||
{
|
||||
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->gewicht))
|
||||
{
|
||||
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->tag))
|
||||
{
|
||||
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert einen Zeitwunsch in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
|
||||
* angelegt, ansonsten der Datensatz upgedated
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
if($this->new)
|
||||
{
|
||||
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
|
||||
insertamum, insertvon, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES('.
|
||||
$this->db_add_param($this->mitarbeiter_uid).','.
|
||||
$this->db_add_param($this->tag, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->stunde, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->insertamum).','.
|
||||
$this->db_add_param($this->insertvon).','.
|
||||
$this->db_add_param($this->updateamum).','.
|
||||
$this->db_add_param($this->updatevon).','.
|
||||
$this->db_add_param($this->zeitwunsch_gueltigkeit_id).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
|
||||
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
|
||||
' updateamum='.$this->db_add_param($this->updateamum).', '.
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
|
||||
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
|
||||
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER). "
|
||||
AND zeitwunsch_gueltigkeit_id=".$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch einer Person zu bestimmter Zeitwunschgueltigkeit laden
|
||||
* @param $uid
|
||||
* @param $zeitwunsch_gueltigkeit_id
|
||||
* @return boolean
|
||||
*/
|
||||
public function loadByZWG($uid, $zeitwunsch_gueltigkeit_id)
|
||||
{
|
||||
$qry = '
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid = ' . $this->db_add_param($uid) . '
|
||||
AND zeitwunsch_gueltigkeit_id = ' . $this->db_add_param($zeitwunsch_gueltigkeit_id) . '
|
||||
ORDER BY tag, stunde
|
||||
';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde] = $row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->zeitwunsch_id = $row->zeitwunsch_id;
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Alle Zeitwuensche einer Person laden.
|
||||
* Um auf einen Zeitwunsch einer bestimmten Zeit, also innerhalb einer bestimmten Zeitwunschgueltigkeit
|
||||
* zu beschraenken, kann ein Datum mitgegeben werden.
|
||||
* @param uid
|
||||
* @param datum UNIX timestamp, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
|
||||
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
|
||||
*/
|
||||
public function loadPerson($uid,$datum=null)
|
||||
{
|
||||
// Default datum: jetzt
|
||||
if (is_null($datum))
|
||||
{
|
||||
$datum = time();
|
||||
}
|
||||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid=". $this->db_add_param($uid). "
|
||||
AND ". $this->db_add_param(date('Y-m-d', $datum)). " BETWEEN von AND COALESCE(bis,'2999-01-01');
|
||||
";
|
||||
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->zeitwunsch_id = $row->zeitwunsch_id;
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start). "
|
||||
-- Negative Zeitsperren sollen im Plan eine positive Zeitsperre 'ZVerfueg' overrulen
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN zeitsperretyp_kurzbz = 'ZVerfueg' THEN 1
|
||||
ELSE 2
|
||||
END;";
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Zeitsperren negativ (-3) gewichten.
|
||||
// Ausnahme: positive Zeitsperren: diese positiv (4) gewichten.
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch der Personen in Lehreinheiten laden
|
||||
* @param $le_id LehreinheitID Array
|
||||
* @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
|
||||
* @return true oder false
|
||||
*/
|
||||
public function loadZwLE($le_id, $datum = null)
|
||||
{
|
||||
// Default datum: jetzt
|
||||
if (is_null($datum))
|
||||
{
|
||||
$datum = time();
|
||||
}
|
||||
// SUB-Select fuer LVAs
|
||||
$sql_query_leid='';
|
||||
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
|
||||
for ($i=0;$i<count($le_id);$i++)
|
||||
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
|
||||
$sql_query_leid=mb_substr($sql_query_leid,3);
|
||||
$sql_query_le.=$sql_query_leid;
|
||||
|
||||
// Schlechteste Zeitwuensche holen
|
||||
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid IN ('.$sql_query_le.')
|
||||
AND '. $this->db_add_param(date('Y-m-d', $datum)). ' BETWEEN von AND COALESCE(bis,\'2999-01-01\')
|
||||
GROUP BY tag,stunde;';
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
while($row = $this->db_fetch_object())
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
|
||||
// ***********************************************************
|
||||
// Zeitsperren fuer die aktuelle Woche holen
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid IN ($sql_query_le)
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob bereits ein Zeitwunsch eingetragen ist
|
||||
*
|
||||
* @param $uid
|
||||
* @param $zwg_id
|
||||
* @param $stunde
|
||||
* @param $tag
|
||||
* @return true wenn vorhanden sonst false
|
||||
*/
|
||||
function exists($uid, $zwg_id, $stunde, $tag)
|
||||
{
|
||||
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
|
||||
AND tag=".$this->db_add_param($tag, FHC_INTEGER). "
|
||||
AND zeitwunsch_gueltigkeit_id = ".$this->db_add_param($zwg_id, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()>0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
require_once(dirname(__FILE__). '/basis_db.class.php');
|
||||
|
||||
class zeitwunsch_gueltigkeit extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $result = array();
|
||||
|
||||
public $zeitwunsch_gueltigkeit_id; // integer
|
||||
public $mitarbeiter_uid; // varchar 32
|
||||
public $von; // date
|
||||
public $bis; // date
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar 32
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // varchar 32
|
||||
|
||||
public $studiensemester_kurzbz;
|
||||
public $start;
|
||||
public $ende;
|
||||
|
||||
public function __construct($zeitwunsch_gueltigkeit_id = null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if (!is_null($zeitwunsch_gueltigkeit_id))
|
||||
{
|
||||
$this->load($zeitwunsch_gueltigkeit_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet eine Zeitwunschgueltigkeit.
|
||||
* @param $zeitwunsch_gueltigkeit_id
|
||||
* @return bool
|
||||
*/
|
||||
public function load($zeitwunsch_gueltigkeit_id)
|
||||
{
|
||||
if (!is_numeric($zeitwunsch_gueltigkeit_id))
|
||||
{
|
||||
$this->errormsg = 'Wrong parameter zeitwunsch_gueltigkeit_id.';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = '
|
||||
SELECT *, studiensemester_kurzbz, start, ende
|
||||
FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
|
||||
WHERE zeitwunsch_gueltigkeit_id = '.$this->db_add_param($zeitwunsch_gueltigkeit_id). '
|
||||
AND (von < ende AND COALESCE(bis, \'2999-12-31\'::date ) > start)
|
||||
ORDER BY start ASC
|
||||
LIMIT 1
|
||||
';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
$this->von = $row->von;
|
||||
$this->bis = $row->bis;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$this->start = $row->start;
|
||||
$this->ende = $row->ende;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert eine Zeitwunschgueltigkeit
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
if($this->new)
|
||||
{
|
||||
$qry = '
|
||||
INSERT INTO campus.tbl_zeitwunsch_gueltigkeit (mitarbeiter_uid, von, bis, insertvon)
|
||||
VALUES ('.
|
||||
$this->db_add_param($this->mitarbeiter_uid).', '.
|
||||
$this->db_add_param($this->von).', '.
|
||||
$this->db_add_param($this->bis).', '.
|
||||
$this->db_add_param($this->insertvon). ')
|
||||
RETURNING zeitwunsch_gueltigkeit_id;
|
||||
';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = '
|
||||
UPDATE campus.tbl_zeitwunsch_gueltigkeit SET'.
|
||||
' bis = '. $this->db_add_param($this->bis). ', '.
|
||||
' updateamum = NOW(), '.
|
||||
' updatevon = '.$this->db_add_param($this->updatevon).
|
||||
' WHERE zeitwunsch_gueltigkeit_id = ' .$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
|
||||
|
||||
}
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
// Wenn neuer Eintrag
|
||||
if ($this->new)
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
// ZWG ID des neuen ZWG Eintrags zurueckgeben
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern der Zeitwunschgueltigkeit';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet Zeitwunschgueltigkeiten einer UID mitsamt den zugehoerigen Studiensemestern.
|
||||
* @param $uid
|
||||
* @param numeric $limit limit = null liefert alle ZWG; limit = 1 liefert die letztgueltige Zeitwunsch-Gueltigkeit.
|
||||
* @param bool $activeOnly Wenn während des laufenden Semesters der Zeitwunsch geaendert werden, werden mehrere ZWG im Semester hinterlegt.
|
||||
* true liefert pro Studiensemester nur die letztgueltigen ZWG;
|
||||
* false liefert alle ZWG pro Studiensemester
|
||||
* @param string $bis string date, z.B. 2022-01-31
|
||||
* @return bool
|
||||
*/
|
||||
public function getByUID($uid, $limit = null, $activeOnly = true, $bis = null)
|
||||
{
|
||||
$qry = '
|
||||
WITH basic_select AS (
|
||||
SELECT *,
|
||||
row_number() over (PARTITION BY studiensemester_kurzbz ORDER BY von DESC) r
|
||||
FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
|
||||
WHERE mitarbeiter_uid = ' . $this->db_add_param($uid);
|
||||
|
||||
// Wenn Bis-Datum angegeben
|
||||
if (!is_null($bis))
|
||||
{
|
||||
// Zeitwuensche nur bis zum angegebenen Bis-Datum
|
||||
$qry.= '
|
||||
AND (von < ende AND '. $this->db_add_param($bis). '::date > start))
|
||||
';
|
||||
}
|
||||
// Wenn kein Bis-Datum angegeben ist
|
||||
else
|
||||
{
|
||||
// Zeitwuensche bis zum Semesterende des chronologisch letzten Zeitwunsches (also der ZWG, wo bis NULL ist)
|
||||
$qry.= '
|
||||
AND (von < ende AND COALESCE(bis, (SELECT ende FROM public.tbl_studiensemester WHERE von BETWEEN start AND ende)) > start))';
|
||||
}
|
||||
|
||||
$qry.= '
|
||||
SELECT *
|
||||
FROM basic_select
|
||||
';
|
||||
|
||||
// Wenn nur aktive Zeitwunschgueltigkeiten angezeigt werden sollen
|
||||
if ($activeOnly)
|
||||
{
|
||||
$qry.= ' WHERE r = 1';
|
||||
}
|
||||
|
||||
$qry.= ' ORDER BY von DESC, start DESC';
|
||||
|
||||
// Wenn Limit angegeben
|
||||
if (!is_null($limit))
|
||||
{
|
||||
$qry.= ' LIMIT '.$this->db_add_param($limit);
|
||||
}
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet Zeitwunschgueltigkeiten einer UID und eines bestimmten Semesters (defaultmaeßig nur die letztgueltige)
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param null $limit limit = null liefert alle ZWG des Studiensemesters; limit = 1 liefert die letztgueltige ZWG.
|
||||
* @return bool
|
||||
*/
|
||||
public function getByStudiensemester($uid, $studiensemester_kurzbz, $limit = 1)
|
||||
{
|
||||
$qry = '
|
||||
WITH studiensemester AS
|
||||
(
|
||||
SELECT studiensemester_kurzbz, start, ende
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE studiensemester_kurzbz = '.$this->db_add_param($studiensemester_kurzbz). '
|
||||
)
|
||||
|
||||
SELECT zwg.*, studiensemester_kurzbz, start, ende
|
||||
FROM campus.tbl_zeitwunsch_gueltigkeit zwg, studiensemester ss
|
||||
WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid). '
|
||||
AND (zwg.von < ss.ende AND COALESCE(zwg.bis, ss.ende) >= ss.start)
|
||||
ORDER BY von DESC, bis DESC
|
||||
';
|
||||
|
||||
// Wenn Limit angegeben
|
||||
if (!is_null($limit))
|
||||
{
|
||||
// Ausgabe limitieren
|
||||
$qry.= 'LIMIT '.$this->db_add_param($limit);
|
||||
}
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[]= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ $this->phrasen['global/pdfExport']='PDF Export';
|
||||
$this->phrasen['global/und']='und';
|
||||
$this->phrasen['global/oder']='oder';
|
||||
$this->phrasen['global/faelligAm']='Fällig am';
|
||||
$this->phrasen['global/aenderungenZuruecksetzen']= "Änderungen zurücksetzen";
|
||||
|
||||
$this->phrasen['global/username']='Username';
|
||||
$this->phrasen['global/vorname']='Vorname';
|
||||
|
||||
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Lehrverbände';
|
||||
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Übersicht der Lehrverbände';
|
||||
$this->phrasen['lvplan/fehlerUndFeedback']='Feedback geben';
|
||||
$this->phrasen['lvplan/lvKoordinationsstelle']='LV-Koordinationsstelle';
|
||||
$this->phrasen['lvplan/lvPlanung']='LV-Planung';
|
||||
$this->phrasen['lvplan/reservierungen']='Reservierungen';
|
||||
$this->phrasen['lvplan/reservierungWurdeGeloescht']='Reservierung wurde geloescht';
|
||||
$this->phrasen['lvplan/alleReservierungen']='Alle Reservierungen';
|
||||
|
||||
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Es duerfen nur die Werte -
|
||||
$this->phrasen['zeitwunsch/zeitwunsch']='Zeitwunsch';
|
||||
$this->phrasen['zeitwunsch/help']='HELP';
|
||||
$this->phrasen['zeitwunsch/zeitwunschVon']='Zeitwünsche von';
|
||||
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein.';
|
||||
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']="Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein. Klicken Sie danach auf 'Speichern'";
|
||||
$this->phrasen['zeitwunsch/letzteAenderung']='Letzte Änderung';
|
||||
$this->phrasen['zeitwunsch/von']='von';
|
||||
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='Das Formular zum Eintragen der Zeitsperren finden Sie %s hier';
|
||||
$this->phrasen['zeitwunsch/erklärung']='Erklärung';
|
||||
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Bitte kontrollieren/ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
|
||||
$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Bitte erstellen / ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
|
||||
$this->phrasen['zeitwunsch/wert']='Wert';
|
||||
$this->phrasen['zeitwunsch/bedeutung']='Bedeutung';
|
||||
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten';
|
||||
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Erklärung';
|
||||
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die';
|
||||
$this->phrasen['zeitwunsch/profil']='Profil';
|
||||
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
|
||||
$this->phrasen['zeitwunsch/gueltigIm']="Mein Zeitwunsch gültig im: ";
|
||||
$this->phrasen['zeitwunsch/erklaerungstext']="Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.<br>
|
||||
<br><b>Solange Sie keine Änderungen vornehmen, <u>wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.</u></b>";
|
||||
$this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen";
|
||||
$this->phrasen['zeitwunsch/kopierenText']="Wählen Sie rechts das gewünschte Studiensemester aus.
|
||||
Der Zeitwunsch wird dann <u>automatisch</u> in die Tabelle übernommen.<br>
|
||||
Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf 'Speichern'.";
|
||||
$this->phrasen['zeitwunsch/kopieren']= "ändern";
|
||||
$this->phrasen['zeitwunsch/aendern']= "kopieren von früherem Studiensemester ";
|
||||
$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant';
|
||||
$this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s  ';
|
||||
$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert';
|
||||
$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.<br>
|
||||
Bitte stimmen Sie sich vor einer Änderung <a href="mailto:%s">per Mail</a> mit den betroffenen Studiengängen ab.<br>
|
||||
Möchten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?';
|
||||
$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren';
|
||||
$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird über die Änderung per Mail informiert';
|
||||
?>
|
||||
|
||||
@@ -65,6 +65,7 @@ $this->phrasen['global/drucken']='Print';
|
||||
$this->phrasen['global/und']='and';
|
||||
$this->phrasen['global/oder']='or';
|
||||
$this->phrasen['global/faelligAm']='Due on';
|
||||
$this->phrasen['global/aenderungenZuruecksetzen']= "Reset changes";
|
||||
|
||||
$this->phrasen['global/username']='Username';
|
||||
$this->phrasen['global/vorname']='First Name';
|
||||
|
||||
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Teaching Groups';
|
||||
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Overview of Teaching Groups';
|
||||
$this->phrasen['lvplan/fehlerUndFeedback']='Send Feedback';
|
||||
$this->phrasen['lvplan/lvKoordinationsstelle']='Course-Coordination Office';
|
||||
$this->phrasen['lvplan/lvPlanung']='Course-Planning Office';
|
||||
$this->phrasen['lvplan/reservierungen']='Reservations';
|
||||
$this->phrasen['lvplan/reservierungWurdeGeloescht'] = 'Reservation successfully deleted';
|
||||
$this->phrasen['lvplan/alleReservierungen']='All reservations';
|
||||
|
||||
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Invalid input. Only the va
|
||||
$this->phrasen['zeitwunsch/zeitwunsch']='Preferred teaching time';
|
||||
$this->phrasen['zeitwunsch/help']='HELP';
|
||||
$this->phrasen['zeitwunsch/zeitwunschVon']='Preferred teaching times for';
|
||||
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid.';
|
||||
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid and click "Save"';
|
||||
$this->phrasen['zeitwunsch/letzteAenderung']='Last Update';
|
||||
$this->phrasen['zeitwunsch/von']='from';
|
||||
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='The form for entering times when you are unavailable to teach can be found %s here';
|
||||
$this->phrasen['zeitwunsch/erklärung']='Explanation';
|
||||
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Please check/change your preferred teaching times and click "Save"';
|
||||
$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Please enter / change your preferred teaching times and click "Save"';
|
||||
$this->phrasen['zeitwunsch/wert']='Value';
|
||||
$this->phrasen['zeitwunsch/bedeutung']='Meaning';
|
||||
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time';
|
||||
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Explanation';
|
||||
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the ';
|
||||
$this->phrasen['zeitwunsch/profil']='Profile';
|
||||
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
|
||||
$this->phrasen['zeitwunsch/gueltigIm']="My preferred times valid in: ";
|
||||
$this->phrasen['zeitwunsch/erklaerungstext']="You can edit your preferred times directly in the table or copy a your preferred times from a previous semester.<br>
|
||||
<b>As long as you do not make any changes, your preferred times will be carried over to the next study semester.</b>";
|
||||
$this->phrasen['zeitwunsch/werteAuf1setzen']="Set all values to 1";
|
||||
$this->phrasen['zeitwunsch/kopierenText']="Select the desired semester on the right.
|
||||
Your preferred time of that semester is then <u> automatically </u> transferred to the table.<br>
|
||||
Make changes if necessary and then click on 'Save'.";
|
||||
$this->phrasen['zeitwunsch/kopieren']= "change";
|
||||
$this->phrasen['zeitwunsch/aendern']= "copy from a previous semester";
|
||||
$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for %s';
|
||||
$this->phrasen['zeitwunsch/fuer']='Preferred time for %s  ';
|
||||
$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled';
|
||||
$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.</span><br>
|
||||
Please agree <a href="mailto:%s">per Mail</a> with the degree programs concerned, before making a change.<br>
|
||||
Would you still like to continue without agreement or after having agreed?';
|
||||
$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing';
|
||||
$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: The field of competence will be informed of your changes by email';
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
$(function(){
|
||||
var studiensemesterStart = $("#studsemStart").val();
|
||||
|
||||
Zverfueg.initDatepicker(studiensemesterStart);
|
||||
|
||||
$('#form-zeitverfuegbarkeit').submit(function(e){
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
let zeitsperre_id = this.zeitsperre_id.value;
|
||||
let mitarbeiter_uid = this.mitarbeiter_uid.value;
|
||||
let lektor = this.mitarbeiter_uid.options[this.mitarbeiter_uid.selectedIndex].text;
|
||||
let bezeichnung = this.bezeichnung.value;
|
||||
let vondatum = this.vondatum.value;
|
||||
let vonstunde = this.vonstunde.value;
|
||||
let bisdatum = this.bisdatum.value;
|
||||
let bisstunde = this.bisstunde.value;
|
||||
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/saveZeitverfuegbarkeit",
|
||||
{
|
||||
zeitsperre_id: zeitsperre_id,
|
||||
mitarbeiter_uid: mitarbeiter_uid,
|
||||
bezeichnung: bezeichnung,
|
||||
zeitsperretyp_kurzbz: 'ZVerfueg',
|
||||
vondatum: vondatum,
|
||||
vonstunde: vonstunde,
|
||||
bisdatum: bisdatum,
|
||||
bisstunde: bisstunde
|
||||
},
|
||||
{
|
||||
successCallback: function (data, textStatus, jqXHR)
|
||||
{
|
||||
if (FHC_AjaxClient.isError(data))
|
||||
{
|
||||
FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
|
||||
}
|
||||
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
if (zeitsperre_id == '')
|
||||
{
|
||||
// Add row
|
||||
$('#tableWidgetTabulator').tabulator('addRow', {
|
||||
zeitsperre_id: FHC_AjaxClient.getData(data).zeitsperre_id,
|
||||
mitarbeiter_uid: mitarbeiter_uid,
|
||||
lektor: lektor,
|
||||
vondatum: vondatum,
|
||||
vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
|
||||
bisdatum: bisdatum,
|
||||
bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
|
||||
bezeichnung: bezeichnung
|
||||
}, true); // true adds new row on top
|
||||
}
|
||||
else {
|
||||
$('#tableWidgetTabulator').tabulator('updateData', [{
|
||||
zeitsperre_id: zeitsperre_id,
|
||||
vondatum: vondatum,
|
||||
vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
|
||||
bisdatum: bisdatum,
|
||||
bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
|
||||
bezeichnung: bezeichnung
|
||||
}]);
|
||||
}
|
||||
|
||||
// Reset form
|
||||
Zverfueg.resetFormFields();
|
||||
|
||||
// Disable form elements
|
||||
Zverfueg.disableFormElements();
|
||||
|
||||
// Display success message
|
||||
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
|
||||
}
|
||||
},
|
||||
errorCallback: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
|
||||
}
|
||||
}
|
||||
);
|
||||
})
|
||||
|
||||
$('#btn-delete').click(function() {
|
||||
let zeitsperre_id = $('#zeitsperre_id').val();
|
||||
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/deleteZeitverfuegbarkeit",
|
||||
{
|
||||
zeitsperre_id: zeitsperre_id,
|
||||
},
|
||||
{
|
||||
successCallback: function (data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.isError(data)) {
|
||||
FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
|
||||
}
|
||||
|
||||
if (FHC_AjaxClient.hasData(data)) {
|
||||
|
||||
// Delete row
|
||||
let row = $('#tableWidgetTabulator').tabulator('getRow', zeitsperre_id);
|
||||
row.delete(zeitsperre_id);
|
||||
|
||||
// Reset form
|
||||
Zverfueg.resetFormFields();
|
||||
|
||||
// Disable form elements
|
||||
Zverfueg.disableFormElements();
|
||||
|
||||
// Display delete message
|
||||
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
|
||||
}
|
||||
},
|
||||
errorCallback: function (jqXHR, textStatus, errorThrown)
|
||||
{
|
||||
FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#btn-break').click(function () {
|
||||
Zverfueg.disableFormElements();
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
var Zverfueg = {
|
||||
initDatepicker: function (studiensemesterStart) {
|
||||
|
||||
// Prevent opening HTMl date picker
|
||||
$('input[type=date]').on('click', function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$.datepicker.setDefaults($.datepicker.regional['de']);
|
||||
$( ".zverfueg-datepicker" ).datepicker({
|
||||
"dateFormat": "yy-mm-dd",
|
||||
"minDate": $.datepicker.formatDate('yy-mm-dd', new Date(studiensemesterStart))
|
||||
});
|
||||
},
|
||||
resetFormFields: function(){
|
||||
$('#form-zeitverfuegbarkeit')
|
||||
.trigger('reset')
|
||||
.find('input:hidden[name=zeitsperre_id]').val('')
|
||||
.find('textarea[name=bezeichnung]').val('');
|
||||
},
|
||||
disableFormElements: function (){
|
||||
$('#btn-delete').prop('disabled', true).tooltip('enable');
|
||||
$('#mitarbeiter_uid').prop('disabled', false);
|
||||
},
|
||||
enableFormElements: function (){
|
||||
$('#btn-delete').prop('disabled', false).tooltip('disable');
|
||||
$('#mitarbeiter_uid').prop('disabled', true);
|
||||
}
|
||||
}
|
||||
|
||||
// TABULATOR FUNCTIONS
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
function func_rowSelected(row){
|
||||
Zverfueg.enableFormElements();
|
||||
|
||||
// Set form fields
|
||||
$('#zeitsperre_id').val(row.getData().zeitsperre_id);
|
||||
$('#mitarbeiter_uid').val(row.getData().mitarbeiter_uid);
|
||||
$('#bezeichnung').val(row.getData().bezeichnung);
|
||||
$('#vondatum').datepicker('setDate', row.getData().vondatum);
|
||||
$('#bisdatum').datepicker('setDate', row.getData().bisdatum);
|
||||
$('#vonstunde').val(row.getData().vonstunde);
|
||||
$('#bisstunde').val(row.getData().bisstunde);
|
||||
}
|
||||
|
||||
function func_rowDeselected(row){
|
||||
Zverfueg.resetFormFields();
|
||||
Zverfueg.disableFormElements();
|
||||
Zverfueg.resetFormFields();
|
||||
}
|
||||
@@ -40,6 +40,8 @@ require_once('../include/mitarbeiter.class.php');
|
||||
require_once('../include/zeitaufzeichnung_gd.class.php');
|
||||
require_once('../include/lehreinheitmitarbeiter.class.php');
|
||||
require_once('../include/vertrag.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/zeitsperre.class.php');
|
||||
|
||||
$uid=get_uid();
|
||||
$error_msg='';
|
||||
@@ -63,7 +65,7 @@ if (isset($_GET['sem']))
|
||||
else
|
||||
$sem=0;
|
||||
if (isset($_GET['lektor']))
|
||||
$lektor=$_GET['lektor'];
|
||||
$lektor=$_GET['lektor'];
|
||||
else
|
||||
$lektor=$uid;
|
||||
if (isset($_GET['ver']))
|
||||
@@ -136,6 +138,14 @@ if (!$error_msg)
|
||||
die ('Fehler bei Methode getLehreinheitLVPL(): '.$lehreinheit->errormsg);
|
||||
$lva=$lehreinheit->lehreinheiten;
|
||||
$rdf_url='http://www.technikum-wien.at/lehreinheit-lvplan/';
|
||||
|
||||
// Positive Zeitsperre 'Zeitverfuegbarkeit' holen
|
||||
$ss = new Studiensemester($studiensemester);
|
||||
|
||||
$zeitsperre = new Zeitsperre();
|
||||
$zeitsperre->getVonBis($lektor, $ss->start, $ss->ende, 'ZVerfueg');
|
||||
|
||||
$zeitverfuegbarkeit = count($zeitsperre->result) > 0 ? 'Zeit verfügbar' : '';
|
||||
?>
|
||||
|
||||
<RDF:RDF
|
||||
@@ -395,6 +405,7 @@ if ($anz>0)
|
||||
<LVA:anzahl_notizen>'.$anzahl_notizen.'</LVA:anzahl_notizen>
|
||||
<LVA:lehreinheit_id>'.$l->lehreinheit_id[0].'</LVA:lehreinheit_id>
|
||||
<LVA:vertragsstatus>'.$vertragsstatus.'</LVA:vertragsstatus>
|
||||
<LVA:zeitverfuegbarkeit>'. $zeitverfuegbarkeit. '</LVA:zeitverfuegbarkeit>
|
||||
</RDF:Description>
|
||||
</RDF:li>';
|
||||
}
|
||||
|
||||
@@ -20,6 +20,12 @@ label.tempus_vertrag_info
|
||||
font-size: x-small
|
||||
}
|
||||
|
||||
label.tempus_lektor_verfuegbarezeit
|
||||
{
|
||||
font-weight: bold;
|
||||
color: green;
|
||||
}
|
||||
|
||||
label.kalenderwoche
|
||||
{
|
||||
font-size: medium;
|
||||
|
||||
+150
-2
@@ -5940,7 +5940,6 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_zeita
|
||||
echo 'Index fuer campus.tbl_zeitaufzeichnung.uid hinzugefuegt<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Change size of wawi.tbl_kostenstelle.kostenstelle_nr from character varying(4) to character varying(6)
|
||||
if ($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='wawi' AND TABLE_NAME='tbl_kostenstelle' AND COLUMN_NAME = 'kostenstelle_nr' AND character_maximum_length < 6"))
|
||||
{
|
||||
@@ -5965,6 +5964,126 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI
|
||||
echo '<br>Added column behebung_parameter to table system.tbl_issue';
|
||||
}
|
||||
|
||||
// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data
|
||||
if($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_schema LIKE 'campus' AND table_name = 'tbl_zeitwunsch_gueltigkeit'"))
|
||||
{
|
||||
if ($db->db_fetch_object($result) == false)
|
||||
{
|
||||
$qry = "
|
||||
CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
|
||||
(
|
||||
zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
|
||||
mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
|
||||
von DATE,
|
||||
bis DATE,
|
||||
insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
|
||||
insertvon CHARACTER VARYING(32),
|
||||
updateamum TIMESTAMP WITHOUT TIME ZONE,
|
||||
updatevon CHARACTER VARYING(32)
|
||||
);
|
||||
|
||||
CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
-- Add Primary Key
|
||||
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
|
||||
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
|
||||
|
||||
-- Add Permissions
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
|
||||
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
|
||||
GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
|
||||
|
||||
-- Initial data migration
|
||||
INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
|
||||
(
|
||||
mitarbeiter_uid,
|
||||
von,
|
||||
bis,
|
||||
insertamum,
|
||||
insertvon,
|
||||
updateamum,
|
||||
updatevon
|
||||
)
|
||||
SELECT * FROM
|
||||
(
|
||||
-- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
|
||||
SELECT DISTINCT mitarbeiter_uid,
|
||||
(SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
|
||||
NULL::DATE AS \"ende\",
|
||||
NOW(),
|
||||
'system',
|
||||
NOW(),
|
||||
'system'
|
||||
FROM campus.tbl_zeitwunsch
|
||||
ORDER BY mitarbeiter_uid
|
||||
) AS init_data
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch
|
||||
if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_zeitwunsch' AND column_name IN ('zeitwunsch_id', 'zeitwunsch_gueltigkeit_id')"))
|
||||
{
|
||||
if ($db->db_num_rows($result) <> 2)
|
||||
{
|
||||
$qry = "
|
||||
ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
|
||||
|
||||
-- Add primary key and foreign key
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_id INTEGER;
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_gueltigkeit_id INTEGER;
|
||||
|
||||
-- Add comments
|
||||
COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
|
||||
COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
|
||||
|
||||
CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
|
||||
UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
|
||||
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
|
||||
UPDATE campus.tbl_zeitwunsch
|
||||
SET zeitwunsch_gueltigkeit_id = (
|
||||
SELECT zeitwunsch_gueltigkeit_id
|
||||
FROM campus.tbl_zeitwunsch_gueltigkeit zwg
|
||||
WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
|
||||
);
|
||||
|
||||
-- Set primary key and foreign key NOT NULL
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
|
||||
|
||||
-- Set permissions
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
|
||||
";
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitwunsch: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo '<br>campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
|
||||
}
|
||||
}
|
||||
|
||||
// Add index beschreibung to system.tbl_webservicelog
|
||||
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservicelog_beschreibung'"))
|
||||
{
|
||||
@@ -5979,6 +6098,34 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
|
||||
}
|
||||
}
|
||||
|
||||
// Insert postive Zeitsperre 'Zeitverfuegbarkeit' to tbl_zeitsperretyp
|
||||
if($result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitsperretyp WHERE zeitsperretyp_kurzbz = 'ZVerfueg';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO campus.tbl_zeitsperretyp(zeitsperretyp_kurzbz, beschreibung) VALUES('ZVerfueg', 'Zeitverfügbarkeit');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitsperretyp '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'campus.tbl_zeitsperretyp: Added value \'ZVerfueg\'<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add permission to administrate zeitverfuegbarkeiten
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/zeitverfuegbarkeit';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/zeitverfuegbarkeit', 'Zeitverfuegbarkeit verwalten');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' system.tbl_berechtigung: Added permission for lehre/zeitverfuegbarkeit<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -6071,7 +6218,8 @@ $tabellen=array(
|
||||
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
|
||||
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
|
||||
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
|
||||
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
|
||||
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon", "zeitwunsch_id", "zeitwunsch_gueltigkeit_id"),
|
||||
"campus.tbl_zeitwunsch_gueltigkeit" => array("zeitwunsch_gueltigkeit_id","mitarbeiter_uid","von","bis","insertamum","insertvon", "updateamum","updatevon"),
|
||||
"fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"),
|
||||
"fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"),
|
||||
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz","zeitaufzeichnung"),
|
||||
|
||||
@@ -1554,6 +1554,26 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'geloescht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gelöscht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deleted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
|
||||
+388
-40
@@ -32,6 +32,9 @@ require_once('../../include/functions.inc.php');
|
||||
require_once('../../include/globals.inc.php');
|
||||
require_once('../../include/datum.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/zeitwunsch.class.php');
|
||||
require_once('../../include/zeitwunsch_gueltigkeit.class.php');
|
||||
require_once('../../include/studiensemester.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
|
||||
@@ -48,6 +51,7 @@ if (!isset($uid))
|
||||
{
|
||||
die( "uid nicht gesetzt");
|
||||
}
|
||||
|
||||
$uid_benutzer = get_uid();
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
@@ -58,46 +62,240 @@ if(!$rechte->isBerechtigt('mitarbeiter', null, 's'))
|
||||
$datum_obj = new datum();
|
||||
$updatevon = 0;
|
||||
|
||||
//Stundentabelleholen
|
||||
if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde"))
|
||||
die($db->db_last_error());
|
||||
$num_rows_stunde=$db->db_num_rows($result_stunde);
|
||||
// Nächstes Studiensemester
|
||||
$next_ss = new Studiensemester();
|
||||
$next_ss->getNextStudiensemester();
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($_POST['save']))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid'))
|
||||
die($rechte->errormsg);
|
||||
// Aktuelles Studiensemester
|
||||
$akt_ss = new Studiensemester();
|
||||
$akt_ss->load($akt_ss->getAkt());
|
||||
|
||||
for ($t=1;$t<7;$t++)
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
$var='wunsch'.$t.'_'.$i;
|
||||
//echo $$var;
|
||||
$gewicht=$_POST[$var];
|
||||
$stunde=$i+1;
|
||||
$query="SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$db->db_add_param($uid)." AND stunde=".$db->db_add_param($stunde, FHC_INTEGER)." AND tag=".$db->db_add_param($t, FHC_INTEGER);
|
||||
if(! $erg_wunsch=$db->db_query($query))
|
||||
die($db->db_last_error());
|
||||
$num_rows_wunsch=$db->db_num_rows($erg_wunsch);
|
||||
if ($num_rows_wunsch==0)
|
||||
{
|
||||
$query="INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, stunde, tag, gewicht, updateamum, updatevon) VALUES (".$db->db_add_param($uid).", ".$db->db_add_param($stunde).", ".$db->db_add_param($t).", ".$db->db_add_param($gewicht).", now(), ".$db->db_add_param($uid_benutzer).")";
|
||||
if(!($erg=$db->db_query($query)))
|
||||
die($db->db_last_error());
|
||||
}
|
||||
elseif ($num_rows_wunsch==1)
|
||||
{
|
||||
$query="UPDATE campus.tbl_zeitwunsch SET gewicht=".$db->db_add_param($gewicht).", updateamum=now(), updatevon=".$db->db_add_param($uid_benutzer)." WHERE mitarbeiter_uid=".$db->db_add_param($uid)." AND stunde=".$db->db_add_param($stunde)." AND tag=".$db->db_add_param($t);
|
||||
if(!($erg=$db->db_query($query)))
|
||||
die($db->db_last_error());
|
||||
}
|
||||
else
|
||||
die("Zuviele Eintraege!");
|
||||
}
|
||||
}
|
||||
// Zeitwunschgueltigkeiten nach Semester selektierbar
|
||||
$selected_ss = (isset($_GET['stsem']) && !empty($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester
|
||||
|
||||
if(!($erg=$db->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$db->db_add_param($uid))))
|
||||
// Default: Letzte Zeitwunschgueltigkeit (ZWG) holen
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 1);
|
||||
$selected_zwg = !empty($zwg->result) ? $zwg->result[0] : null; // NULL, wenn Lektor noch gar keinen ZW hinterlegt hat
|
||||
|
||||
// Zeitwunschgueltigkeit ueber Dropdown ZWG gewaehlt
|
||||
if (isset($_GET['zwg_id']))
|
||||
{
|
||||
$selected_zwg = !empty($_GET['zwg_id']) ? new Zeitwunsch_gueltigkeit($_GET['zwg_id']) : null;
|
||||
}
|
||||
|
||||
//Stundentabelleholen
|
||||
if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde"))
|
||||
die($db->db_last_error());
|
||||
$num_rows_stunde=$db->db_num_rows($result_stunde);
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($_POST['save']))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid'))
|
||||
die($rechte->errormsg);
|
||||
|
||||
$selected_ss = isset($_POST['stsem']) ? $_POST['stsem'] : die('Studiensemester fehlt');
|
||||
|
||||
// Letzte Zeitwunschgueltigkeit (ZWG) holen
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 1);
|
||||
$lastZwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft
|
||||
$lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false;
|
||||
$zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird
|
||||
|
||||
// Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden
|
||||
if (is_null($lastZwg))
|
||||
{
|
||||
// Wenn ZW fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null, $uid_benutzer);
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null, $uid_benutzer);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn mindestens eine ZWG vorhanden
|
||||
if (!is_null($lastZwg))
|
||||
{
|
||||
// Wenn Zeitwunsch fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Wenn naechstes Studiensemester schon eine eigene ZWG hat
|
||||
if ($lastZwgStartsNextSemester)
|
||||
{
|
||||
// Nur Zeitwunsch dieser ZWG updaten
|
||||
$zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
|
||||
// Wenn naechstes Studiensemester keine eigene ZWG hat
|
||||
if (!$lastZwgStartsNextSemester)
|
||||
{
|
||||
// Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester
|
||||
updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende, $uid_benutzer);
|
||||
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null, $uid_benutzer);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
/**
|
||||
* Check, ob aktuelles Studiensemester eine ZWG hat.
|
||||
* Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das
|
||||
* aktuelle Studiensemester noch keine ZWG.
|
||||
* */
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz);
|
||||
$akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Keine ZWG fuer aktuelles Studiensemester vorhanden.
|
||||
// Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN
|
||||
if (is_null($akt_ss_zwg))
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester
|
||||
$zw_zwg_id = insertZWG(
|
||||
$uid,
|
||||
(new DateTime())->format('Y-m-d H:i:s'),
|
||||
$akt_ss->ende,
|
||||
$uid_benutzer
|
||||
);
|
||||
}
|
||||
|
||||
// ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER
|
||||
if ((!is_null($akt_ss_zwg)))
|
||||
{
|
||||
// Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten
|
||||
// Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird.
|
||||
if ((new DateTime($akt_ss_zwg->insertamum))->format('Y-m-d') == (new Datetime())->format('Y-m-d'))
|
||||
{
|
||||
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis, $uid_benutzer);
|
||||
|
||||
$zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen:
|
||||
// -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist)
|
||||
// -> sonst ist bis null
|
||||
$zw_zwg_id = insertZWG(
|
||||
$uid,
|
||||
(new DateTime())->format('Y-m-d H:i:s'),
|
||||
$akt_ss_zwg->bis,
|
||||
$uid_benutzer
|
||||
);
|
||||
|
||||
// Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern
|
||||
// NOTE: MUSS nach dem insert sein
|
||||
updateZWG(
|
||||
$uid,
|
||||
$akt_ss_zwg->zeitwunsch_gueltigkeit_id,
|
||||
(new DateTime('yesterday'))->format('Y-m-d H:i:s'),
|
||||
$uid_benutzer
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert Zeitwunsch mit Zeitwunsch ZWG ID
|
||||
if (is_numeric($zw_zwg_id))
|
||||
{
|
||||
for ($t = 1; $t < 7; $t++)
|
||||
{
|
||||
for ($i = 0; $i < $num_rows_stunde; $i++)
|
||||
{
|
||||
$var = 'wunsch' . $t . '_' . $i;
|
||||
//echo $$var;
|
||||
$gewicht = $_POST[$var];
|
||||
$stunde = $i + 1;
|
||||
$query = "SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=" . $db->db_add_param($uid) . " AND zeitwunsch_gueltigkeit_id =" . $db->db_add_param($zw_zwg_id) . " AND stunde=" . $db->db_add_param($stunde, FHC_INTEGER) . " AND tag=" . $db->db_add_param($t, FHC_INTEGER);
|
||||
if (!$erg_wunsch = $db->db_query($query))
|
||||
die($db->db_last_error());
|
||||
$num_rows_wunsch = $db->db_num_rows($erg_wunsch);
|
||||
if ($num_rows_wunsch == 0) {
|
||||
$query = "INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, stunde, tag, gewicht, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES (" . $db->db_add_param($uid) . ", " . $db->db_add_param($stunde) . ", " . $db->db_add_param($t) . ", " . $db->db_add_param($gewicht) . ", now(), " . $db->db_add_param($uid_benutzer) . ", " . $db->db_add_param($zw_zwg_id) . ")";
|
||||
if (!($erg = $db->db_query($query)))
|
||||
die($db->db_last_error());
|
||||
} elseif ($num_rows_wunsch == 1) {
|
||||
$query = "UPDATE campus.tbl_zeitwunsch SET gewicht=" . $db->db_add_param($gewicht) . ", updateamum=now(), updatevon=" . $db->db_add_param($uid_benutzer) . " WHERE mitarbeiter_uid=" . $db->db_add_param($uid) . " AND zeitwunsch_gueltigkeit_id=" . $db->db_add_param($zw_zwg_id) . " AND stunde=" . $db->db_add_param($stunde) . " AND tag=" . $db->db_add_param($t);
|
||||
if (!($erg = $db->db_query($query)))
|
||||
die($db->db_last_error());
|
||||
}
|
||||
else
|
||||
die("Zuviele Eintraege!");
|
||||
}
|
||||
}
|
||||
$selected_zwg = new Zeitwunsch_gueltigkeit($zw_zwg_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Erstellen einer neuen ZWG
|
||||
*/
|
||||
function insertZWG($uid, $von, $bis, $admin_uid)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = true;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->von = $von;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->insertvon = $admin_uid;
|
||||
if ($zwg->save())
|
||||
{
|
||||
return $zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Updaten einer bestehenden ZWG
|
||||
*/
|
||||
function updateZWG($uid, $zwg_id, $bis, $admin_uid)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = false;
|
||||
$zwg->zeitwunsch_gueltigkeit_id = $zwg_id;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->updatevon = $admin_uid;
|
||||
|
||||
if (!$zwg->save())
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Tabellendaten
|
||||
/**
|
||||
* Zeitwunschgueltigkeit
|
||||
* Wurde ueber Dropdown gewaehlt (kann auch null sein, wenn noch kein Zeitwunsch vorliegt)
|
||||
* ODER ueber Speichernbutton neu erstellt / upgedatet
|
||||
*/
|
||||
$selected_zwg_id = !is_null($selected_zwg) ? $selected_zwg->zeitwunsch_gueltigkeit_id : '';
|
||||
|
||||
if(!($erg=$db->db_query("
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitwunsch
|
||||
WHERE mitarbeiter_uid = ". $db->db_add_param($uid). "
|
||||
AND zeitwunsch_gueltigkeit_id = ". $db->db_add_param(($selected_zwg_id))
|
||||
)))
|
||||
die($db->db_last_error());
|
||||
$num_rows=$db->db_num_rows($erg);
|
||||
for ($i=0;$i<$num_rows;$i++)
|
||||
@@ -135,12 +333,77 @@ $updatevon = 0;
|
||||
<title>Profil</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
|
||||
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
// Bei Wechsel von Zeitwunschgueltigkeit die Seite mit GET params neu laden
|
||||
$('#zwg').change(function(){
|
||||
var uid = $('input[name="uid"]').val();
|
||||
var zeitwunsch_gueltigkeit_id = $('option:selected', this).val();
|
||||
var studiensemester = $('option:selected', this).data('stsem');
|
||||
|
||||
window.location = '?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<h2>Zeitwünsche von <?php echo $person->titelpre.' '.$person->vornamen.' '.$person->nachname. ' '.$person->titelpost; ?></h2>
|
||||
<h2>Zeitwünsche von <?php echo $person->titelpre.' '.$person->vorname.' '.$person->nachname. ' '.$person->titelpost; ?></h2>
|
||||
<span>Zeitwunschgueltigkeit:</span>
|
||||
<?php
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, null, false);
|
||||
$zwg_arr = $zwg->result;
|
||||
|
||||
// Dropdown
|
||||
echo '<select name="zwg" id="zwg" class="form form-control">';
|
||||
|
||||
// Wenn nächstes Studiensemester keine Zeitwunschgueltigkeit hat...
|
||||
if (!empty($zwg_arr) && $zwg_arr[0]->von < $next_ss->start)
|
||||
{
|
||||
// ...naechstes Studiensemester 'neu anlegen' als Option anzeigen
|
||||
echo '<OPTION value="" data-stsem="'. $next_ss->studiensemester_kurzbz. '">'
|
||||
. $next_ss->studiensemester_kurzbz.' [ neu anlegen ]
|
||||
</OPTION>';
|
||||
}
|
||||
|
||||
// Vorhandene Zeitwunschgueltigkeiten
|
||||
foreach($zwg_arr as $row)
|
||||
{
|
||||
$von = (new DateTime($row->von))->format('d.m.Y');
|
||||
$bis = !is_null($row->bis) ? (new DateTime($row->bis))->format('d.m.Y') : "offen";
|
||||
$selected = !empty($selected_zwg_id) && $row->zeitwunsch_gueltigkeit_id == $selected_zwg_id && $row->studiensemester_kurzbz == $selected_ss ? ' selected ' : '';
|
||||
|
||||
echo '<option value="'. $row->zeitwunsch_gueltigkeit_id. '" data-stsem="'. $row->studiensemester_kurzbz. '"'. $selected. '>'.
|
||||
$row->studiensemester_kurzbz. ' [ '. $von. '  - ' . $bis. ' ]
|
||||
</option>';
|
||||
}
|
||||
// Wenn aktuelles Studiensemester keine Zeitwunschgueltigkeit hat, das naechste aber schon
|
||||
if (count($zwg_arr) == 1 && ($zwg_arr[0]->von >= $next_ss->start))
|
||||
{
|
||||
// ...aktuelles Studiensemester 'neu anlegen' als Option anzeigen
|
||||
$selected = $selected_ss == $akt_ss->studiensemester_kurzbz ? "selected" : '';
|
||||
echo '<OPTION value="" data-stsem="'. $akt_ss->studiensemester_kurzbz. '" '. $selected. ' >'. $akt_ss->studiensemester_kurzbz.' [ neu anlegen ]</OPTION>';
|
||||
}
|
||||
|
||||
// Wenn es noch keine Zeitwuensche gibt
|
||||
if (empty($zwg_arr))
|
||||
{
|
||||
// Optionen zum Anlegen einer Zeitwunschgueltigkeit fuer das aktuelle / naechste Studiensemester
|
||||
$selected = $selected_ss == $akt_ss->studiensemester_kurzbz ? 'selected' : '';
|
||||
echo '<OPTION value="" data-stsem="'. $next_ss->studiensemester_kurzbz. '">'. $next_ss->studiensemester_kurzbz.' [ neu anlegen ]</OPTION>';
|
||||
echo '<OPTION value="" data-stsem="'. $akt_ss->studiensemester_kurzbz. '" '. $selected. ' >'. $akt_ss->studiensemester_kurzbz.' [ neu anlegen ]</OPTION>';
|
||||
}
|
||||
echo '</select>';
|
||||
?>
|
||||
<br><br>
|
||||
|
||||
<FORM name="zeitwunsch" method="post" action="zeitwunsch.php?type=save">
|
||||
<INPUT type="hidden" name="uid" value="<?php echo $uid; ?>">
|
||||
<INPUT type="hidden" name="zwg_id" value="<?php echo $selected_zwg_id; ?>">
|
||||
<INPUT type="hidden" name="stsem" value="<?php echo $selected_ss; ?>">
|
||||
<TABLE width="100%" border="1" cellspacing="0" cellpadding="0">
|
||||
<TR>
|
||||
<?php
|
||||
@@ -194,10 +457,24 @@ $updatevon = 0;
|
||||
?>
|
||||
<br/>
|
||||
<br/>
|
||||
<INPUT type="hidden" name="uid" value="<?php echo $uid; ?>">
|
||||
<?php
|
||||
if($rechte->isBerechtigt('mitarbeiter/zeitwuensche', null, 'suid'))
|
||||
echo '<INPUT type="submit" name="save" value="Speichern">'
|
||||
{
|
||||
/**
|
||||
* Disablen des Speicherbuttons und Textanzeige, wenn die gewaehlte Zeitwunschgueltigkeit nicht
|
||||
*die letztgueltige fuer das aktuelle / naechste Studiensemester ist.
|
||||
**/
|
||||
$disabled = getDisabledString($uid, $selected_zwg, $akt_ss, $next_ss); // return 'disabled' oder ''
|
||||
|
||||
// Speichern Button
|
||||
echo '<INPUT type="submit" name="save" value="Speichern" '. $disabled. '>';
|
||||
|
||||
if (!empty($disabled))
|
||||
{
|
||||
echo '<span style="color: red"><small> Es können nur Zeitwünsche im aktuellen oder im nächsten Studiensemester bearbeitet werden.<br>
|
||||
      Falls mehrere Zeitwünsche im aktuellen Semester gespeichert sind, kann nur der letztgültige geändert werden.</small></span>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</FORM>
|
||||
<br>
|
||||
@@ -248,4 +525,75 @@ $updatevon = 0;
|
||||
</OL>
|
||||
<P> </P>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
// Bei Wechsel von Zeitwunschgueltigkeit die Seite mit GET params neu laden
|
||||
//$('#zwg').change(function(){
|
||||
// let uid = $('input[name="uid"]').val();
|
||||
// let zeitwunsch_gueltigkeit_id = $('option:selected', this).val();
|
||||
// let studiensemester = $('option:selected', this).data('stsem');
|
||||
//
|
||||
// // window.location = '?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester;
|
||||
// window.open = <?php //echo $_SERVER['PHP_SELF'] ?>// + '?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester;
|
||||
//});
|
||||
});
|
||||
function submitZwg(obj){
|
||||
// console.log(obj);
|
||||
// console.log(obj.options[obj. selectedIndex].getAttribute('data-stsem'));
|
||||
// var selectedValue = document.getElementById("zwg").value;
|
||||
// console.log(selectedValue);
|
||||
// console.log(document.getElementById("zwg"));
|
||||
// console.log(document.getElementById("zwg").getAttribute('data'));
|
||||
// console.log($(selectElem).val());
|
||||
// console.log($(selectElem).selected);
|
||||
// console.log($('option:selected', this));
|
||||
// console.log($('option:selected', this).val());
|
||||
// let uid = $('input[name="uid"]').val();
|
||||
// let zeitwunsch_gueltigkeit_id = $('option:selected', obj).val();
|
||||
// let studiensemester = $('option:selected', obj).data('stsem');
|
||||
|
||||
|
||||
let uid = document.getElementById("uid").value;
|
||||
let zeitwunsch_gueltigkeit_id = document.getElementById("zwg").value;
|
||||
let studiensemester = obj.options[obj.selectedIndex].getAttribute('data-stsem');
|
||||
console.log(uid);
|
||||
console.log(zeitwunsch_gueltigkeit_id);
|
||||
console.log(studiensemester);
|
||||
// window.location = '?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester;
|
||||
|
||||
//window.open('<?php //echo APP_ROOT ?>//vilesci/personen/zeitwunsch.php?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester,"","chrome, status=no, width=500, height=350, centerscreen, resizable");
|
||||
window.open('<?php echo $_SERVER['PHP_SELF'] ?>?uid=' + uid + '&zwg_id=' + zeitwunsch_gueltigkeit_id + '&stsem=' + studiensemester);
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
|
||||
function getDisabledString($uid, $selected_zwg, $akt_ss, $next_ss){
|
||||
// Disablen des Speicherbuttons und Textanzeige, wenn die gewaehlte Zeitwunschgueltigkeit nicht
|
||||
// die letztgueltige fuer das aktuelle / naechste Studiensemester ist.
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz);
|
||||
$lastZwg_id_aktStudsem = empty($zwg->result) ? '' : $zwg->result[0]->zeitwunsch_gueltigkeit_id;
|
||||
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByStudiensemester($uid, $next_ss->studiensemester_kurzbz);
|
||||
$lastZwg_id_nextStudsem = empty($zwg->result) ? '' : $zwg->result[0]->zeitwunsch_gueltigkeit_id;
|
||||
|
||||
return (
|
||||
is_null($selected_zwg)
|
||||
|| !is_null($selected_zwg)
|
||||
&& (
|
||||
$selected_zwg->zeitwunsch_gueltigkeit_id == $lastZwg_id_aktStudsem
|
||||
|| $selected_zwg->zeitwunsch_gueltigkeit_id == $lastZwg_id_nextStudsem
|
||||
)
|
||||
)
|
||||
? ''
|
||||
: 'disabled';
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user