Compare commits

...
Author SHA1 Message Date
Ivymaster 513fd01115 Minor mod 2026-09-28 10:44:24 +02:00
Ivymaster e483e550bc Add revert for sabredav version update 2026-09-28 09:48:23 +02:00
Ivymaster 32c02f3520 Reverted event loader changes to previous stable version 2026-09-25 12:10:08 +02:00
Ivymaster fe6d412d87 Conflicts resolved 2026-09-25 12:09:44 +02:00
Ivymaster dc46c745da Add kalender column rename from eindeutige_gruppen_id to eindeutige_kalender_gruppen_id 2026-08-06 13:39:52 +02:00
Ivymaster 2d06e75779 Exposed API route for fetching lvplan calendar events 2026-07-28 10:59:44 +02:00
Ivymaster a78fc177a5 add event teilnehmer extension for getting targeted lecturers events. add demo icons display in calDAV calendar exports 2026-07-07 14:30:23 +02:00
Ivymaster 4c1d88a054 add clearing of unused classes in lvplan caldav export lib 2026-07-07 13:42:54 +02:00
Ivymaster 280df46d6d WIP: Second version of cal dav with new tempus structure 2026-07-06 18:17:23 +02:00
Ivymaster 3e17e99ce9 First version of cal dav with new tempus structure 2026-07-06 16:22:33 +02:00
Ivymaster 790d0d99ec add custom sabredev browser view 2026-06-30 14:17:10 +02:00
Ivymaster 5499c522cb add version migration of sabredav from 1.8.1 to 4.0.3 and updated files where it is used 2026-06-30 13:59:36 +02:00
Ivymaster ac5478f176 add sabredav package extraction to global composer file 2026-06-30 12:49:18 +02:00
Ivymaster 1805fc643e add bug fixes and test issue fixes 2026-06-24 17:59:55 +02:00
Ivymaster af7ca6b524 WIP: fixing issues found with cypress tests 2026-06-24 16:35:07 +02:00
Ivymaster 2630a1190b add update of kalender event location before req refetch 2026-06-23 17:10:08 +02:00
Ivymaster 0be1bb95a5 add minor mods 2026-06-22 16:05:46 +02:00
Ivymaster 91a691c5f8 Minor mod 2026-06-22 15:49:16 +02:00
Ivymaster 4edec4df00 add changes for calendar flicker on event reload, and calendar scroll mods 2026-06-22 15:06:53 +02:00
Ivymaster f5cd0f1a5d BUG: add query for inserting new resources collison global variable 2026-06-22 15:04:53 +02:00
Ivymaster 688f815178 BUG: add resovement for multiple ort import from old tempus per one kalendar item 2026-06-19 12:48:57 +02:00
Ivymaster 273b1d3fe4 add resources conflict checker and extend tempus tests with it 2026-06-19 11:41:56 +02:00
Ivymaster de60d0d09e Conflicts resolved 2026-06-15 12:47:29 +02:00
Ivymaster 245b724314 Minor rfactor 2026-06-15 01:01:33 +02:00
Ivymaster 10a5aaf9b4 Minor mods 2026-06-12 18:49:15 +02:00
Ivymaster 544c6e7319 Added seeders for tempus tests 2026-06-12 16:51:24 +02:00
Ivymaster a7ddc0d348 Merge branch 'master' into feature-68298/Tempus_Grundstruktur-tests 2026-06-08 16:56:42 +02:00
Ivymaster 1e2cafef1d Add API tests for tempus event creation feature 2026-06-08 12:26:43 +02:00
Ivymaster 4205e490ef Add API tests for tempus event update feature 2026-06-01 15:27:38 +02:00
Ivymaster 55ba874bb0 Merge branch 'feature-68298/Tempus_Grundstruktur' into feature-68298/Tempus_Grundstruktur-tests 2026-06-01 15:09:53 +02:00
Ivymaster 90eb25716d WIP: Tempus api events 2026-06-01 15:01:29 +02:00
Ivymaster bc7fc9611b Merge branch 'feature-68298/Tempus_Grundstruktur' into feature-68298/Tempus_Grundstruktur-tests 2026-06-01 14:09:50 +02:00
Ivymaster 1ecf011ba2 Merge branch 'feature-68298/Tempus_Grundstruktur' into feature-68298/Tempus_Grundstruktur-tests 2026-06-01 11:25:44 +02:00
Ivymaster bccaf72399 Merge branch 'feature-68298/Tempus_Grundstruktur' into feature-68298/Tempus_Grundstruktur-tests 2026-06-01 09:17:07 +02:00
Ivymaster 64b6e4a009 Add tempus test file split 2026-05-31 23:17:22 +02:00
Ivymaster 40c18d3603 Add basic tests for tempus feature 2026-05-31 23:03:16 +02:00
Ivymaster d948251736 WIP: Tempus e2e tests 2026-05-27 10:29:13 +02:00
Ivymaster af3d96abc7 Merge branch 'feature-68298/Tempus_Grundstruktur' into feature-68298/Tempus_Grundstruktur-tests 2026-05-21 13:15:42 +02:00
Ivymaster dc05d16545 WIP: Adding base tempus tests 2026-05-21 13:12:09 +02:00
19 changed files with 400 additions and 39 deletions
+3
View File
@@ -137,6 +137,9 @@ $route['api/frontend/v1/treemenudata/lvverwaltung/stdsem/(:any)/emp/(:any)/stg/(
$route['api/frontend/v1/treemenudata/lvverwaltung/stdsem/(:any)/emp/(:any)/stg/(:any)/.*'] = 'api/frontend/v1/Lehrveranstaltung/getByEmp/$1/$2/$3';
$route['api/frontend/v1/lvplan/calendar-events'] = 'api/frontend/v1/LvPlanCalendarEvents/getCalendarData';
// load routes from extensions, also look for environment-specific configs
$subdirs = ['application/config/extensions', 'application/config/' . ENVIRONMENT . '/extensions'];
@@ -0,0 +1,114 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Provides the authenticated user's LVPlan events as JSON.
*/
class LvPlanCalendarEvents extends FHCAPI_Controller
{
/**
* Object initialization.
*/
public function __construct()
{
parent::__construct([
'getCalendarData' => self::PERM_LOGGED
]);
}
/**
* Returns the authenticated user's mapped calendar events.
*/
public function getCalendarData()
{
$this->output->set_header('Cache-Control: no-store');
if ($this->input->method() !== 'get')
{
$this->output->set_header('Allow: GET');
$this->terminateWithError(
'Method not allowed',
self::ERROR_TYPE_GENERAL,
REST_Controller::HTTP_METHOD_NOT_ALLOWED
);
}
$startDate = $this->input->get('start_date', true);
$endDate = $this->input->get('end_date', true);
$validationErrors = array();
if (!is_null($startDate) && !$this->isValidDate($startDate))
$validationErrors['start_date'] = 'The start_date field must use the YYYY-MM-DD format.';
if (!is_null($endDate) && !$this->isValidDate($endDate))
$validationErrors['end_date'] = 'The end_date field must use the YYYY-MM-DD format.';
if (!empty($validationErrors))
$this->terminateWithValidationErrors($validationErrors);
$today = new DateTimeImmutable('today', new DateTimeZone('Europe/Vienna'));
if (is_null($startDate))
$startDate = $today->modify('-14 days')->format('Y-m-d');
if (is_null($endDate))
$endDate = $today->modify('+6 months')->format('Y-m-d');
if ($startDate > $endDate)
{
$this->terminateWithValidationErrors(array(
'end_date' => 'The end_date field must be on or after start_date.'
));
}
$userUID = getAuthUID();
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->library('KalenderLib', ['uid' => $userUID]);
$isUserEmployeeResult = $this->MitarbeiterModel->isMitarbeiter($userUID);
$isUserEmployee = $this->getDataOrTerminateWithError($isUserEmployeeResult);
if ($isUserEmployee)
{
$events = $this->kalenderlib->getPlanForLecturerByLecturer(
$startDate,
$endDate,
$userUID
);
}
else
{
$events = $this->kalenderlib->getPlanForStudentByStudent(
$startDate,
$endDate,
$userUID
);
}
if (!is_array($events))
$events = array();
$this->terminateWithSuccess($events);
}
/**
* Checks whether a date uses the exact YYYY-MM-DD format.
*
* @param mixed $date
* @return bool
*/
private function isValidDate($date)
{
if (!is_string($date) || $date === '')
return false;
$parsedDate = DateTimeImmutable::createFromFormat('!Y-m-d', $date);
$errors = DateTimeImmutable::getLastErrors();
return $parsedDate !== false
&& ($errors === false
|| ($errors['warning_count'] === 0 && $errors['error_count'] === 0))
&& $parsedDate->format('Y-m-d') === $date;
}
}
@@ -44,9 +44,9 @@ class Kalender extends FHCAPI_Controller
$this->_ci->load->library('LogLib');
$this->_ci->load->library('form_validation');
$this->_ci->load->library('KalenderLib');
$this->_ci->load->library('KalenderLib', ["uid" => getAuthUID()]);
$this->_ci->load->library('KalenderSyncLib');
$this->_ci->load->library('RaumvorschlagLib');
$this->_ci->load->library('RaumvorschlagLib', ["uid" => getAuthUID()]);
$this->loadPhrases([
'ui'
]);
@@ -18,8 +18,8 @@ class OperationalResourceToCalenderAPI extends FHCAPI_Controller
$this->load->model('ressource/Betriebsmittel_model', 'BetriebsmittelModel');
$this->load->model('ressource/Kalender_model', 'KalenderModel');
$this->load->library('CollisionChecker');
$this->load->library('KalenderLib');
$this->_ci->load->library('CollisionChecker', ["uid" => getAuthUID()]);
$this->_ci->load->library('KalenderLib', ["uid" => getAuthUID()]);
}
//------------------------------------------------------------------------------------------------------------------
@@ -22,7 +22,7 @@ class Reservierung extends FHCAPI_Controller
$this->_ci->load->library('LogLib');
$this->_ci->load->library('form_validation');
$this->_ci->load->library('KalenderLib');
$this->_ci->load->library('KalenderLib', ["uid" => getAuthUID()]);
$this->_ci->load->model('ressource/Ort_model', 'OrtModel');
$this->_ci->load->model('ressource/Kalender_Event_Rolle_model', 'KalenderEventRolleModel');
+1 -1
View File
@@ -13,7 +13,7 @@ class TempusJob extends JOB_Controller
$this->_ci =& get_instance();
$this->_ci->load->helper('hlp_sancho_helper');
$this->_ci->load->library('KalenderLib');
$this->_ci->load->library('KalenderLib', ["uid" => null]);
}
+14 -7
View File
@@ -9,16 +9,23 @@ class CollisionChecker
private $_checks = [];
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
$this->_ci->load->library('collision/checks/RoomCollisionCheck');
$this->_ci->load->library('collision/checks/LectureCollisionCheck');
$this->_ci->load->library('collision/checks/VerbandCollisionCheck');
$this->_ci->load->library('collision/checks/StudentCollisionCheck');
$this->_ci->load->library('collision/checks/ResourcesCollisionCheck');
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->library('collision/checks/RoomCollisionCheck', ['uid' => $this->_uid]);
$this->_ci->load->library('collision/checks/LectureCollisionCheck', ['uid' => $this->_uid]);
$this->_ci->load->library('collision/checks/VerbandCollisionCheck', ['uid' => $this->_uid]);
$this->_ci->load->library('collision/checks/StudentCollisionCheck', ['uid' => $this->_uid]);
$this->_ci->load->library('collision/checks/ResourcesCollisionCheck', ['uid' => $this->_uid]);
$this->register($this->_ci->roomcollisioncheck);
$this->register($this->_ci->lecturecollisioncheck);
$this->register($this->_ci->verbandcollisioncheck);
@@ -64,4 +71,4 @@ class CollisionChecker
return $results;
}
}
}
+189 -3
View File
@@ -5,9 +5,17 @@ if (! defined("BASEPATH")) exit("No direct script access allowed");
class KalenderLib
{
private $_ci;
public function __construct()
private $_uid;
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->model('ressource/Kalender_Lehreinheit_model', 'KalenderLehreinheitModel');
@@ -27,7 +35,7 @@ class KalenderLib
$this->_ci->load->model('organisation/Ferien_model', 'FerienModel');
$this->_ci->load->library('CollisionChecker');
$this->_ci->load->library('CollisionChecker', ['uid' => $this->_uid]);
$this->_ci->load->library('PhrasesLib', array('ui'));
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
@@ -263,6 +271,7 @@ class KalenderLib
$parsedResources = is_string($resources) ? json_decode($resources, true) : $resources;
$events[$id] = (object) [
'kalender_id' => $id,
'eindeutige_kalender_gruppen_id' => $row->eindeutige_kalender_gruppen_id,
'type' => $row->typ,
'beginn' => $von->format('H:i:s'),
@@ -281,7 +290,6 @@ class KalenderLib
'lehrveranstaltung_id' => $row->lehrveranstaltung_id,
'verplante_stunden' => $row->verplante_stunden,
'organisationseinheit' => isset($row->oe_kurzbz) ? $row->oe_kurzbz : '',
'kalender_id' => $id,
'lehreinheit_id' => [],
'lektor' => [],
'teilnehmer_gruppe' => [],
@@ -294,6 +302,7 @@ class KalenderLib
'has_assigned_resources' => !empty($parsedResources),
'resources' => is_array($parsedResources) ? $parsedResources : [],
'tags' => isset($row->tags) ? $row->tags : [],
'updateamum' => isset($row->updateamum) ? $row->updateamum : null,
];
}
@@ -576,6 +585,131 @@ class KalenderLib
return $this->_mapEvents($data);
}
public function getPlanForStudentByStudent($start_date, $end_date, $userUID)
{
$this->_buildBasePlanQuery();
$escapedUserUID = $this->_ci->KalenderModel->db->escape($userUID);
$benutzerExists = "EXISTS (
SELECT 1
FROM public.tbl_benutzer student_benutzer
WHERE student_benutzer.uid = $escapedUserUID
)";
$directEventTeilnehmerExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer event_teilnehmer
WHERE event_teilnehmer.kalender_id = tbl_kalender.kalender_id
AND event_teilnehmer.uid = $escapedUserUID
)";
$eventBenutzergruppeExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer event_gruppe
JOIN public.tbl_benutzergruppe event_benutzergruppe
ON event_benutzergruppe.gruppe_kurzbz = event_gruppe.gruppe_kurzbz
AND (
event_gruppe.studiensemester_kurzbz IS NULL
OR event_benutzergruppe.studiensemester_kurzbz = event_gruppe.studiensemester_kurzbz
)
WHERE event_gruppe.kalender_id = tbl_kalender.kalender_id
AND event_gruppe.gruppe_kurzbz IS NOT NULL
AND event_benutzergruppe.uid = $escapedUserUID
)";
$eventStudentlehrverbandExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer event_lehrverband
JOIN public.tbl_studentlehrverband event_studentlehrverband
ON event_studentlehrverband.student_uid = $escapedUserUID
AND event_studentlehrverband.studiengang_kz = event_lehrverband.studiengang_kz
AND (
event_lehrverband.studiensemester_kurzbz IS NULL
OR event_studentlehrverband.studiensemester_kurzbz = event_lehrverband.studiensemester_kurzbz
)
AND (
event_lehrverband.semester IS NULL
OR event_studentlehrverband.semester = event_lehrverband.semester
)
AND (
event_lehrverband.verband = event_studentlehrverband.verband
OR event_lehrverband.verband IS NULL
OR btrim(event_lehrverband.verband::text) = ''
OR event_studentlehrverband.verband IS NULL
)
AND (
event_lehrverband.gruppe = event_studentlehrverband.gruppe
OR event_lehrverband.gruppe IS NULL
OR btrim(event_lehrverband.gruppe::text) = ''
OR event_studentlehrverband.gruppe IS NULL
)
WHERE event_lehrverband.kalender_id = tbl_kalender.kalender_id
AND event_lehrverband.gruppe_kurzbz IS NULL
AND event_lehrverband.studiengang_kz IS NOT NULL
)";
$lehreinheitBenutzergruppeExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_lehreinheit student_kalender_lehreinheit
JOIN lehre.tbl_lehreinheit student_lehreinheit
ON student_lehreinheit.lehreinheit_id = student_kalender_lehreinheit.lehreinheit_id
JOIN lehre.tbl_lehreinheitgruppe student_lehreinheitgruppe
ON student_lehreinheitgruppe.lehreinheit_id = student_lehreinheit.lehreinheit_id
JOIN public.tbl_gruppe student_gruppe
ON student_gruppe.studiengang_kz = student_lehreinheitgruppe.studiengang_kz
AND student_gruppe.semester = student_lehreinheitgruppe.semester
AND student_gruppe.gruppe_kurzbz = student_lehreinheitgruppe.gruppe_kurzbz
JOIN public.tbl_benutzergruppe student_benutzergruppe
ON student_benutzergruppe.gruppe_kurzbz = student_gruppe.gruppe_kurzbz
AND student_benutzergruppe.studiensemester_kurzbz = student_lehreinheit.studiensemester_kurzbz
WHERE student_kalender_lehreinheit.kalender_id = tbl_kalender.kalender_id
AND student_lehreinheitgruppe.gruppe_kurzbz IS NOT NULL
AND student_benutzergruppe.uid = $escapedUserUID
)";
$lehreinheitStudentlehrverbandExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_lehreinheit student_kalender_lehreinheit
JOIN lehre.tbl_lehreinheit student_lehreinheit
ON student_lehreinheit.lehreinheit_id = student_kalender_lehreinheit.lehreinheit_id
JOIN lehre.tbl_lehreinheitgruppe student_lehreinheitgruppe
ON student_lehreinheitgruppe.lehreinheit_id = student_lehreinheit.lehreinheit_id
JOIN public.tbl_studentlehrverband student_lehrverband
ON student_lehrverband.student_uid = $escapedUserUID
AND student_lehrverband.studiengang_kz = student_lehreinheitgruppe.studiengang_kz
AND student_lehrverband.semester = student_lehreinheitgruppe.semester
AND student_lehrverband.studiensemester_kurzbz = student_lehreinheit.studiensemester_kurzbz
AND (
student_lehreinheitgruppe.verband = student_lehrverband.verband
OR student_lehreinheitgruppe.verband IS NULL
OR btrim(student_lehreinheitgruppe.verband::text) = ''
OR student_lehrverband.verband IS NULL
)
AND (
student_lehreinheitgruppe.gruppe = student_lehrverband.gruppe
OR student_lehreinheitgruppe.gruppe IS NULL
OR btrim(student_lehreinheitgruppe.gruppe::text) = ''
OR student_lehrverband.gruppe IS NULL
)
WHERE student_kalender_lehreinheit.kalender_id = tbl_kalender.kalender_id
AND student_lehreinheitgruppe.gruppe_kurzbz IS NULL
)";
$this->_ci->KalenderModel->db->where('status_kurzbz', 'live');
$this->_ci->KalenderModel->db->where($benutzerExists, null, false);
$this->_ci->KalenderModel->db->group_start();
$this->_ci->KalenderModel->db->where($directEventTeilnehmerExists, null, false);
$this->_ci->KalenderModel->db->or_where($eventBenutzergruppeExists, null, false);
$this->_ci->KalenderModel->db->or_where($eventStudentlehrverbandExists, null, false);
$this->_ci->KalenderModel->db->or_where($lehreinheitBenutzergruppeExists, null, false);
$this->_ci->KalenderModel->db->or_where($lehreinheitStudentlehrverbandExists, null, false);
$this->_ci->KalenderModel->db->group_end();
$data = $this->_loadFilteredBasePlan($start_date, $end_date);
return $this->_mapEvents($data);
}
public function getPlanForLecturer($start_date, $end_date)
{
@@ -595,6 +729,56 @@ class KalenderLib
return $this->_mapEvents($data);
}
public function getPlanForLecturerByLecturer($start_date, $end_date, $userUID)
{
$this->_buildBasePlanQuery();
$escapedUserUID = $this->_ci->KalenderModel->db->escape($userUID);
$lehreinheitMitarbeiterExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_lehreinheit lecturer_kalender_lehreinheit
JOIN lehre.tbl_lehreinheit lecturer_lehreinheit
ON lecturer_lehreinheit.lehreinheit_id = lecturer_kalender_lehreinheit.lehreinheit_id
JOIN lehre.tbl_lehreinheitmitarbeiter lecturer_lehreinheitmitarbeiter
ON lecturer_lehreinheitmitarbeiter.lehreinheit_id = lecturer_lehreinheit.lehreinheit_id
WHERE lecturer_kalender_lehreinheit.kalender_id = tbl_kalender.kalender_id
AND lecturer_lehreinheitmitarbeiter.mitarbeiter_uid = $escapedUserUID
)";
$eventTeilnehmerExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer lecturer_event_teilnehmer
WHERE lecturer_event_teilnehmer.kalender_id = tbl_kalender.kalender_id
AND lecturer_event_teilnehmer.uid = $escapedUserUID
)";
$eventBenutzergruppeExists = "EXISTS (
SELECT 1
FROM lehre.tbl_kalender_event_teilnehmer lecturer_event_gruppe
JOIN public.tbl_benutzergruppe lecturer_benutzergruppe
ON lecturer_benutzergruppe.gruppe_kurzbz = lecturer_event_gruppe.gruppe_kurzbz
AND (
lecturer_event_gruppe.studiensemester_kurzbz IS NULL
OR lecturer_benutzergruppe.studiensemester_kurzbz = lecturer_event_gruppe.studiensemester_kurzbz
)
WHERE lecturer_event_gruppe.kalender_id = tbl_kalender.kalender_id
AND lecturer_event_gruppe.gruppe_kurzbz IS NOT NULL
AND lecturer_benutzergruppe.uid = $escapedUserUID
)";
$this->_ci->KalenderModel->db->where('tbl_kalender.status_kurzbz', 'live');
$this->_ci->KalenderModel->db->group_start();
$this->_ci->KalenderModel->db->where($lehreinheitMitarbeiterExists, null, false);
$this->_ci->KalenderModel->db->or_where($eventTeilnehmerExists, null, false);
$this->_ci->KalenderModel->db->or_where($eventBenutzergruppeExists, null, false);
$this->_ci->KalenderModel->db->group_end();
$data = $this->_loadFilteredBasePlan($start_date, $end_date);
return $this->_mapEvents($data);
}
public function getZeitsperren($start_date, $end_date, $emp)
{
$db = new DB_Model();
@@ -1143,6 +1327,7 @@ class KalenderLib
'bis' => $end_date,
'typ' => 'reservierung',
'status_kurzbz' => 'live',
'eindeutige_kalender_gruppen_id' => $this->_ci->KalenderModel->generateUniqueGroupId(),
'insertvon' => getAuthUID(),
'insertamum' => date('Y-m-d H:i:s')
)
@@ -1403,6 +1588,7 @@ class KalenderLib
$entryResult = $this->_loadKalenderEntry($kalender_id);
if (isError($entryResult)) return $entryResult;
$kalender_entry = getData($entryResult);
if (!$this->_checkPermission($kalender_entry->lehreinheit_id))
+11 -3
View File
@@ -7,10 +7,18 @@ use CI3_Events as Events;
class RaumvorschlagLib
{
private $_ci;
public function __construct()
private $_uid;
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->model('ressource/Kalender_Lehreinheit_model', 'KalenderLehreinheitModel');
$this->_ci->load->model('ressource/Kalender_Event_model', 'KalenderEventModel');
@@ -26,8 +34,8 @@ class RaumvorschlagLib
$this->_ci->load->model('ressource/Stunde_model', 'StundeModel');
$this->_ci->load->model('education/Lehreinheitgruppe_model', 'LehreinheitgruppeModel');
$this->_ci->load->library('CollisionChecker');
$this->_ci->load->library('KalenderLib');
$this->_ci->load->library('CollisionChecker', ["uid" => getAuthUID()]);
$this->_ci->load->library('KalenderLib', ["uid" => getAuthUID()]);
$this->_ci->load->library('PhrasesLib', array('ui'));
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
}
+4 -4
View File
@@ -14,9 +14,9 @@ class VariableLib
/**
* VariableLib constructor.
* Loads variable of logged in user.
* @param $loggeduid
* @param $params
*/
public function __construct($loggeduid)
public function __construct($params)
{
$this->_ci =& get_instance();
@@ -25,8 +25,8 @@ class VariableLib
$this->_ci->load->model('system/Variable_model', 'VariableModel');
$this->_ci->load->model('organisation/studiensemester_model', 'StudiensemesterModel');
if (isset($loggeduid['uid']) && !isEmptyString($loggeduid['uid']))
$this->_setVariables($loggeduid['uid']);
if (isset($params['uid']) && !isEmptyString($params['uid']))
$this->_setVariables($params['uid']);
else
{
show_error('uid of logged user not passed!');
@@ -4,10 +4,18 @@ class LectureCollisionCheck implements ICollisionCheck
{
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel');
$this->_ci->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
@@ -4,12 +4,20 @@ class ResourcesCollisionCheck implements ICollisionCheck
{
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
$this->_ci->load->library('VariableLib', array('uid' => $this->_uid));
$this->_ci->load->library('PhrasesLib', array('ui'));
}
@@ -91,4 +99,4 @@ class ResourcesCollisionCheck implements ICollisionCheck
return $grouped;
}
}
}
@@ -4,12 +4,20 @@ class RoomCollisionCheck implements ICollisionCheck
{
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
$this->_ci->load->library('VariableLib', array('uid' => $this->_uid));
$this->_ci->load->library('PhrasesLib', array('ui'));
}
@@ -87,4 +95,4 @@ class RoomCollisionCheck implements ICollisionCheck
return $grouped;
}
}
}
@@ -3,12 +3,20 @@
class StudentCollisionCheck implements ICollisionCheck
{
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
$this->_ci->load->library('VariableLib', array('uid' => $this->_uid));
$this->_ci->load->library('PhrasesLib', array('ui'));
}
@@ -283,4 +291,4 @@ class StudentCollisionCheck implements ICollisionCheck
return $grouped;
}
}
}
@@ -4,12 +4,20 @@ class VerbandCollisionCheck implements ICollisionCheck
{
private $_ci;
private $_uid;
public function __construct()
public function __construct($params)
{
$this->_ci =& get_instance();
if (isset($params['uid']) && !isEmptyString($params['uid'])){
$this->_uid = $params['uid'];
} else {
show_error('uid of logged user not passed!');
}
$this->_ci->load->model('ressource/Kalender_model', 'KalenderModel');
$this->_ci->load->library('VariableLib', array('uid' => getAuthUID()));
$this->_ci->load->library('VariableLib', array('uid' => $this->_uid));
$this->_ci->load->library('PhrasesLib', array('ui'));
}
@@ -410,4 +418,4 @@ class VerbandCollisionCheck implements ICollisionCheck
return $grouped;
}
}
}
@@ -10,6 +10,8 @@ class Kalender_model extends DB_Model
parent::__construct();
$this->dbTable = 'lehre.tbl_kalender';
$this->pk = 'kalender_id';
$this->load->helper('hlp_common');
}
public function generateUniqueGroupId()
@@ -133,6 +133,7 @@ export default {
template: /* html */ `
<div
class="fhc-calendar-base-grid-line"
:data-day="date.toISODate()"
style="position:relative;display:grid;grid-auto-flow:dense"
:style="'grid-template-' + axisRow + 's:subgrid'"
>
@@ -142,14 +142,14 @@ export default {
:class="classes"
style="z-index: 11"
:draggable="draggable"
:data-id="'event-' + event.orig.kalender_id"
:data-group-id="'event-group-' + event.orig.eindeutige_kalender_gruppen_id"
ref="eventEl"
@dragstart="onDragStart"
v-draggable:move.noimage="draggable ? dragKalenderCollection : {}"
v-drop:move.lehreinheit.kalender.reservierung="onDropOnCard"
v-cal-click:event="isHeaderOrFooter ? event : event.orig"
@contextmenu.prevent="onRightClick"
:data-id="'event-' + event.orig.kalender_id"
:data-group-id="'event-group-' + event.orig.eindeutige_kalender_gruppen_id"
data-cy="calendar-event"
>
<div
+1 -1
View File
@@ -31,6 +31,6 @@ class myauth extends \Sabre\DAV\Auth\Backend\AbstractBasic
return true;
else
return false;
}
}
}
?>