From d889756302fb632d0b7519a5a92b4242610013aa Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 5 Feb 2025 11:03:19 +0100 Subject: [PATCH] update(Calendar exports): viewdata update --- .../controllers/api/frontend/v1/AuthInfo.php | 52 +++++++++++++++++++ .../organisation/Studiensemester_model.php | 2 +- public/js/api/authinfo.js | 10 ++++ public/js/api/fhcapifactory.js | 4 +- .../components/Cis/Stundenplan/Stundenplan.js | 15 ++++-- 5 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 application/controllers/api/frontend/v1/AuthInfo.php create mode 100644 public/js/api/authinfo.js diff --git a/application/controllers/api/frontend/v1/AuthInfo.php b/application/controllers/api/frontend/v1/AuthInfo.php new file mode 100644 index 000000000..1362aee18 --- /dev/null +++ b/application/controllers/api/frontend/v1/AuthInfo.php @@ -0,0 +1,52 @@ +. + */ + +if (!defined('BASEPATH')) exit('No direct script access allowed'); + +class AuthInfo extends FHCAPI_Controller +{ + + /** + * Object initialization + */ + public function __construct() + { + parent::__construct([ + 'getAuthUID' => self::PERM_LOGGED, + ]); + + $this->uid = getAuthUID(); + $this->pid = getAuthPersonID(); + } + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * returns the uid of the currently logged in user + * @access public + * + */ + public function getAuthUID() + { + $this->terminateWithSuccess(['uid'=>$this->uid]); + } + + +} + diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index 22a7ca604..0ea5b9328 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -181,7 +181,7 @@ class Studiensemester_model extends DB_Model $query = " SELECT studiensemester_kurzbz, start, ende FROM public.tbl_studiensemester - WHERE ( ende >= ?::date AND start <= ?::date ) OR ( ende >= ?::date + '45 days'::interval AND start <= ?::date + '45 days'::interval ) + WHERE ( ende >= ?::date AND start <= ?::date ) OR ( ende >= ?::date + '-45 days'::interval AND start <= ?::date + '-45 days'::interval ) ORDER BY start DESC LIMIT 1"; diff --git a/public/js/api/authinfo.js b/public/js/api/authinfo.js new file mode 100644 index 000000000..618cf2e26 --- /dev/null +++ b/public/js/api/authinfo.js @@ -0,0 +1,10 @@ + +export default { + getAuthUID() { + return this.$fhcApi.get( + '/api/frontend/v1/AuthInfo/getAuthUID', + { } + ); + }, + +}; \ No newline at end of file diff --git a/public/js/api/fhcapifactory.js b/public/js/api/fhcapifactory.js index 04744409b..378d979ab 100644 --- a/public/js/api/fhcapifactory.js +++ b/public/js/api/fhcapifactory.js @@ -35,7 +35,8 @@ import lehre from "./lehre.js"; import addons from "./addons.js"; import studiengang from "./studiengang.js"; import menu from "./menu.js"; -import dashboard from "./dashboard"; +import dashboard from "./dashboard.js"; +import authinfo from "./authinfo.js"; export default { search, @@ -59,4 +60,5 @@ export default { addons, studiengang, menu, + authinfo, }; diff --git a/public/js/components/Cis/Stundenplan/Stundenplan.js b/public/js/components/Cis/Stundenplan/Stundenplan.js index 1f301aca5..d35c9c536 100644 --- a/public/js/components/Cis/Stundenplan/Stundenplan.js +++ b/public/js/components/Cis/Stundenplan/Stundenplan.js @@ -17,8 +17,12 @@ export const Stundenplan = { studiensemester_kurzbz:null, studiensemester_start:null, studiensemester_ende:null, + uid:null, } }, + props: [ + "viewData", + ], watch: { weekFirstDay: { handler: async function (newValue) { @@ -31,21 +35,18 @@ export const Stundenplan = { immediate: true, } }, - props: [ - "viewData", - ], components: { FhcCalendar, LvModal, LvMenu, LvInfo }, computed:{ downloadLinks: function(){ - if(!this.studiensemester_start || !this.studiensemester_ende)return; + if(!this.studiensemester_start || !this.studiensemester_ende || !this.uid )return; let start = new Date(this.studiensemester_start); start = Math.floor(start.getTime()/1000); let ende = new Date(this.studiensemester_ende); ende = Math.floor(ende.getTime() / 1000); - let download_link = (format, version = "", target = "") => `${FHC_JS_DATA_STORAGE_OBJECT.app_root}cis/private/lvplan/stpl_kalender.php?type=student&pers_uid=${this.viewData.uid}&begin=${start}&ende=${ende}&format=${format}${version ? '&version=' + version : ''}${target ? '&target=' + target : ''}`; + let download_link = (format, version = "", target = "") => `${FHC_JS_DATA_STORAGE_OBJECT.app_root}cis/private/lvplan/stpl_kalender.php?type=student&pers_uid=${this.uid}&begin=${start}&ende=${ende}&format=${format}${version ? '&version=' + version : ''}${target ? '&target=' + target : ''}`; return [{ title: "excel", icon: 'fa-solid fa-file-excel', link: download_link('excel') }, { title: "csv", icon: 'fa-solid fa-file-csv', link: download_link('csv') }, { title: "ical1", icon: 'fa-regular fa-calendar', link: download_link('ical', '1', 'ical') }, { title: "ical2", icon: 'fa-regular fa-calendar', link: download_link('ical', '2', 'ical') }]; }, lv_id() { // computed so we can theoretically change path/lva selection and reload without page refresh @@ -149,6 +150,10 @@ export const Stundenplan = { }, created() { + this.$fhcApi.factory.authinfo.getAuthUID().then((res) => res.data) + .then(data=>{ + this.uid = data.uid; + }) this.loadEvents(); }, beforeUnmount() {