merge master into feature-55991/FHC4_Studierendenverwaltung_Gruppen

This commit is contained in:
ma0068
2025-04-22 13:58:27 +02:00
381 changed files with 25452 additions and 4371 deletions
+28 -14
View File
@@ -1,5 +1,7 @@
/* basic */
@import '../components/searchbar/searchbar.css';
@import '../components/Sprachen.css';
html {
font-size: 0.875em;
}
@@ -7,6 +9,7 @@ html {
/* variables */
:root {
--fhc-cis-primary: #00649c;
--fhc-cis-primary-hover: #005585;
--fhc-cis-header-px: 1rem;
--fhc-cis-header-py: .5rem;
--fhc-cis-main-px: 1.5rem;
@@ -32,6 +35,8 @@ html {
--fhc-cis-menu-lvl-5-color: #000;
--fhc-cis-menu-lvl-5-bg-hover: #eceff1;
--fhc-cis-menu-lvl-5-color-hover: #000;
--fhc-cis-grade-positive: rgb(0, 128, 0);
--fhc-cis-grade-negative: rgb(128, 0, 0);
}
@media (min-width: 992px) {
:root {
@@ -48,6 +53,8 @@ html {
}
}
/* buttons */
#cis-header .btn-level-1,
#cis-header .btn-level-1 + .btn,
@@ -341,7 +348,7 @@ html {
background-color: var(--fhc-cis-primary);
}
#nav-user-btn img {
object-fit: cover;
object-fit: contain;
height: calc(var(--fhc-cis-header-height) - 2 * var(--fhc-cis-header-py));
width: calc(var(--fhc-cis-header-height) - 2 * var(--fhc-cis-header-py));
}
@@ -352,7 +359,7 @@ html {
}
#nav-user-menu img {
object-fit: cover;
object-fit: contain;
height: calc( 3 * var(--fhc-cis-header-py));
}
@@ -482,8 +489,7 @@ html {
}
.fhc-entry:hover{
background-color:#005585 !important;
color:white !important;
filter: brightness(120%) !important;
}
.fhc-entry.btn:focus {
@@ -500,8 +506,8 @@ html {
transition-timing-function: ease-out,ease-out;
}
[selected].fhc-entry {
background-color: #00649C !important;
[selected="true"].fhc-entry {
filter: brightness(120%);
}
@media screen and ( max-width: 767px ) {
@@ -518,29 +524,29 @@ html {
}
@media screen and ( max-width: 576px ) {
.searchbar_icon img {
#nav-search .searchbar_results .searchbar_icon img {
max-width: 65px !important;
}
.searchbar_icon i {
#nav-search .searchbar_results .searchbar_icon i {
font-size: 3em !important;
}
.searchbar_grid {
#nav-search .searchbar_results .searchbar_grid {
grid-template-columns: [icon] 75px [data] auto;
}
.searchbar_table,
.searchbar_tablerow,
.searchbar_tablecell {
#nav-search .searchbar_results .searchbar_table,
#nav-search .searchbar_results .searchbar_tablerow,
#nav-search .searchbar_results .searchbar_tablecell {
display: block;
}
.searchbar_tablecell.searchbar_label {
#nav-search .searchbar_results .searchbar_tablecell.searchbar_label {
font-weight: bold;
}
.searchbar_tablecell.searchbar_value {
#nav-search .searchbar_results .searchbar_tablecell.searchbar_value {
padding-left: 2.5rem;
overflow-wrap: anywhere;
}
@@ -565,4 +571,12 @@ html {
.height-enter-from,
.height-leave-to {
height: 0px;
}
.zusatzinfo h2 {
font-size: 1.5em;
}
.dashboard-item {
overscroll-behavior: none;
}
+28
View File
@@ -52,6 +52,31 @@ html {
height: 0;
}
/* Dropdown AbschlusspruefungList.js */
.tabulator-row {
overflow: visible !important;
}
.tabulator-cell {
overflow: visible !important;
}
.p-dropdown-item{
z-index: 1201 !important;
}
.l-dropdown-item{
z-index: 1301 !important;
}
.tabulator-row .dropdown-menu {
position: absolute;
z-index: 1204; /* Ensure it's above other elements */
}
.tabulator-table {
overflow: visible !important;
}
@media (min-width: 768px) {
#sidebarMenu {
visibility: visible!important;
@@ -113,3 +138,6 @@ html {
.has-filter .fa-filter {
color: var(--bs-success);
}
.override_filtercmpt_actions_style div.d-flex.align-items-baseline {
align-items: end !important;
}
+12 -3
View File
@@ -126,9 +126,10 @@
}
.tabulator-cell .btn {
padding: 0 .7rem;
min-height: 25px;
min-width: 25px;
padding: 0 .375rem;
font-size: calc(1rem - 2px / 1.5); /* substract border (2 x 1px) modified by the line-height (1.5) */
border-radius: .2rem;
vertical-align: baseline;
}
.tabulator-row.tabulator-selectable:focus {
@@ -147,3 +148,11 @@
border-color:#ADB5BD !important;
box-shadow: none !important;
}
/**
* Make keyboard-focused list items look like the mouse-hovered list items
*/
.tabulator-edit-list .tabulator-edit-list-item.focused {
color: #fff;
background: #1d68cd;
}
+1
View File
@@ -0,0 +1 @@
@import '../../vendor/olifolkerd/tabulator6/dist/css/tabulator_simple.min.css';
+1 -5
View File
@@ -67,9 +67,5 @@
.tabulator {
font-size: 1rem;
}
.tabulator-cell .btn {
padding: 0 .375rem;
font-size: .875rem;
border-radius: .2rem;
}
+11
View File
@@ -0,0 +1,11 @@
.sprachen-entry{
background-color: var(--fhc-cis-primary-hover);
}
[selected="true"].sprachen-entry {
background-color: var(--fhc-cis-primary);
}
.sprachen-entry.btn {
border-radius: 0 !important;
}
+52 -35
View File
@@ -1,5 +1,6 @@
:root{
--fhc-calendar-pane-height: calc(100vh - 220px);
--fhc-calendar-past: #F5E9D7
}
.fhc-calendar-week-page-header {
@@ -49,7 +50,8 @@
.fhc-calendar-week-page > div {
/*transform: translate(-0.75em, -0.75em);*/
/*width: calc(100% + 1.5em);*/
height: calc(100% + 1.5em);
/*height: calc(100% + 1.5em);*/
max-height: 100%;
}
.fhc-calendar-week-page > div > div {
padding-left: 3em;
@@ -105,7 +107,6 @@
.fhc-calendar-day-page .events {
display: grid;
grid-template-columns: 3em 1fr;
margin-left: -3em;
/*min-height: 266.6666666667%;*/
}
.fhc-calendar-day-page .events .day {
@@ -131,19 +132,19 @@
.fhc-calendar-md .fhc-calendar-month-page-day.active {
border-color: var(--bs-secondary);
}
.fhc-calendar-lg .fhc-calendar-month-page-day .events,
.fhc-calendar-md .fhc-calendar-month-page-day .events {
display: block;
overflow: auto;
font-size: 0.7em;
}
.fhc-calendar-lg .fhc-calendar-month-page-day .events span,
.fhc-calendar-md .fhc-calendar-month-page-day .events span {
display: block;
margin: 0.2em;
padding: 0.1em 0.4em;
border-radius: 0.1em;
}
/*.fhc-calendar-lg .fhc-calendar-month-page-day .events,*/
/*.fhc-calendar-md .fhc-calendar-month-page-day .events {*/
/* display: block;*/
/* overflow: auto;*/
/* font-size: 0.7em;*/
/*}*/
/*.fhc-calendar-lg .fhc-calendar-month-page-day .events span,*/
/*.fhc-calendar-md .fhc-calendar-month-page-day .events span {*/
/* display: block;*/
/* margin: 0.2em;*/
/* padding: 0.1em 0.4em;*/
/* border-radius: 0.1em;*/
/*}*/
.fhc-calendar-lg .fhc-calendar-years .col-4,
.fhc-calendar-md .fhc-calendar-years .col-4 {
padding: 0.09375em 0;
@@ -185,8 +186,24 @@
aspect-ratio: 1;
}
.fhc-calendar-past {
background-color: var(--fhc-calendar-past);
border-color: #E8E8E8;
opacity: 0.5;
}
.fhc-calendar-month-page-day-highlight {
background-color: #f5f5f5;
/*background-color: #f5f5f5;*/
/*background-color: red;*/
}
.fhc-highlight-week {
/*border-color: black !important;*/
}
.fhc-highlight-day {
box-shadow: inset 0 0 0 2px black !important;
}
.fhc-calendar-sm .fhc-calendar-month-page-day.active .no,
@@ -200,25 +217,25 @@
background-color: rgba(var(--bs-secondary-rgb), 0.25);
border-radius: 50%;
}
.fhc-calendar-sm .fhc-calendar-month-page-day .no,
.fhc-calendar-xs .fhc-calendar-month-page-day .no {
display: flex;
align-items: center;
justify-content: center;
width: 80%;
height: 80%;
margin: 10%;
}
.fhc-calendar-sm .fhc-calendar-month-page-day .events,
.fhc-calendar-xs .fhc-calendar-month-page-day .events {
position: absolute;
bottom: 0;
left: 10%;
width: 80%;
height: 10%;
overflow: hidden;
display: flex;
}
/*.fhc-calendar-sm .fhc-calendar-month-page-day .no,*/
/*.fhc-calendar-xs .fhc-calendar-month-page-day .no {*/
/* display: flex;*/
/* align-items: center;*/
/* justify-content: center;*/
/* width: 80%;*/
/* height: 80%;*/
/* margin: 10%;*/
/*}*/
/*.fhc-calendar-sm .fhc-calendar-month-page-day .events,*/
/*.fhc-calendar-xs .fhc-calendar-month-page-day .events {*/
/* position: absolute;*/
/* bottom: 0;*/
/* left: 10%;*/
/* width: 80%;*/
/* height: 10%;*/
/* overflow: hidden;*/
/* display: flex;*/
/*}*/
.fhc-calendar-sm .fhc-calendar-month-page-day .events span,
.fhc-calendar-xs .fhc-calendar-month-page-day .events span {
overflow: hidden;
+71 -1
View File
@@ -2,6 +2,45 @@
--news-widget-height: 1;
}
/* media query for sm sizes */
@media (min-width :576px) {
.fhc-news-menu-item {
/* padding: top right bottom left */
padding:0em 0em 0em 0em !important;
}
}
/* media query for md sizes */
@media (min-width :768px) {
.fhc-news-menu-item {
/* padding: top right bottom left */
padding: 0.3em 0.3em 0.3em 0.3em !important;
}
}
/* media query for lg sizes */
@media (min-width :992px) {
.fhc-news-menu-item {
/* padding: top right bottom left */
padding: 0.3em 0.3em 0.3em 0.3em !important;
}
}
/* media query for xl sizes */
@media (min-width :1200px) {
.fhc-news-menu-item {
/* padding: top right bottom left */
padding: 1em 1em 0.3em 1em !important;
}
}
/* media query for xxl sizes */
@media (min-width :1400px) {
.fhc-news-menu-item {
/* padding: top right bottom left */
padding: 1.2em 1.2em 0.3em 1.2em !important;
}
}
.widgets-news img
{
max-width: 100%;
@@ -17,7 +56,6 @@
align-items: center;
background-color: #00649c;
border: 1px solid #f1f1f1;
font-size: 16px;
cursor: pointer;
transition: background-color 0.2s ease, border-color 0.2s ease; /* Smooth transition */
}
@@ -70,3 +108,35 @@
.fhc-carousel .carousel-item-end {
transition: transform 0.44s ease-in-out, opacity 0.8s ease-in-out;
}
.carousel-control-prev,
.carousel-control-next {
opacity: 0;
transition: opacity 0.3s ease;
}
/* Show the buttons when the carousel is hovered */
.carousel:hover .carousel-control-prev,
.carousel:hover .carousel-control-next {
opacity: 1;
}
.fhc-news-text{
font-size: 0.75em;
}
.fhc-news-xs {
font-size: 0.6em;
}
.fhc-news-sm {
font-size: 0.7em;
}
.fhc-news-md {
font-size: 1.1em;
}
.fhc-news-lg {
font-size: 1.4em;
}
+1 -1
View File
@@ -1747,7 +1747,7 @@
}
.p-button.p-button-icon-only {
width: 2.357rem;
padding: 0.5rem 0;
padding: 0.375rem 0; /* NOTE(chris): button padding-y from BS */
}
.p-button.p-button-icon-only .p-button-icon-left,
.p-button.p-button-icon-only .p-button-icon-right {
+10 -1
View File
@@ -582,7 +582,16 @@ var FHC_TableWidget = {
options.columns = arrayTabulatorColumns;
options.data = data.dataset;
options.persistence = (typeof options.persistence == 'undefined') ? true : options.persistence; // enables persistence (default store in localStorage if available, else in cookie)
let defaultPersistence = {
sort: true,
columns: true,
filter: false,
headerFilter: false,
group: false,
page: false,
}
options.persistence = (typeof options.persistence == 'undefined') ? defaultPersistence : options.persistence; // enables persistence (default store in localStorage if available, else in cookie)
options.persistenceID = (typeof options.persistenceID == 'undefined') ? data.tableUniqueId : options.persistenceID; // persistenceID to store persistence data seperately for multiple tables
options.movableColumns = (typeof options.movableColumns == 'undefined') ? true : options.movableColumns; // allows changing column order
options.tooltipsHeader = (typeof options.tooltipsHeader == 'undefined') ? true : options.tooltipsHeader; // set header tooltip with column title
+10
View File
@@ -0,0 +1,10 @@
export default {
getAuthUID() {
return this.$fhcApi.get(
'/api/frontend/v1/AuthInfo/getAuthUID',
{ }
);
},
};
+10
View File
@@ -14,6 +14,16 @@ export default {
);
},
update: function ({ bookmark_id, url, title, tag=null}) {
return this.$fhcApi.post(
`/api/frontend/v1/Bookmark/update/${bookmark_id}`
, {
url: url,
title: title
}
);
},
insert: function ({url, title, tag}) {
return this.$fhcApi.post(
`/api/frontend/v1/Bookmark/insert`
+18 -13
View File
@@ -10,31 +10,36 @@ export default {
}
);
},
news(limit) {
return this.$fhcApi.get(
"/api/frontend/v1/Cms/news",
{
limit: limit
}
);
},
getNews(page = 1, page_size = 10) {
//api function used for the news View that renders the html
getNews(page = 1, page_size = 10, sprache) {
return this.$fhcApi.get(
"/api/frontend/v1/Cms/getNews",
{
page,
page_size,
sprache,
},
);
},
//api function used for the widget component
news(limit) {
return this.$fhcApi.get(
"/api/frontend/v1/Cms/news",
{
limit: limit
}
);
},
getNewsRowCount: function () {
return this.$fhcApi.get(
"/api/frontend/v1/Cms/getNewsRowCount",
{}
);
},
getNewsExtra: function(){
return this.$fhcApi.get(
"/api/frontend/v1/Cms/getStudiengangInfoForNews",
{}
);
}
}
+6
View File
@@ -0,0 +1,6 @@
export default {
async getViewData() {
const url = `/api/frontend/v1/Cis4FhcApi/getViewData`;
return this.$fhcApi.get(url, null, null)
},
}
+25
View File
@@ -0,0 +1,25 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getLvMenu(lvid, studiensemester_kurzbz) {
return {
method: 'get',
url: `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`
};
}
};
+25
View File
@@ -0,0 +1,25 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getAuthUID() {
return {
method: 'get',
url: '/api/frontend/v1/AuthInfo/getAuthUID'
};
}
};
+22
View File
@@ -0,0 +1,22 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
import person from "./betriebsmittel/person.js";
export default {
person
};
@@ -0,0 +1,63 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getAllBetriebsmittel(type, id) {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + type + '/' + id
};
},
addNewBetriebsmittel(person_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' + person_id,
params
};
},
loadBetriebsmittel(betriebsmittelperson_id) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id
};
},
updateBetriebsmittel(betriebsmittelperson_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,
params
};
},
deleteBetriebsmittel(betriebsmittelperson_id) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' + betriebsmittelperson_id
};
},
getTypenBetriebsmittel() {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/'
};
},
loadInventarliste(query) {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' + query
};
}
};
+37
View File
@@ -0,0 +1,37 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
updatePersonUnrulyStatus(person_id, unruly) {
const params = { person_id, unruly }
const url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';
return {
method: 'post',
url,
params
};
},
filterPerson(params, base = '') {
// TODO(chris): seems to be called from nowhere?
const url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';
return {
method: 'post',
url,
params
};
}
};
+25
View File
@@ -0,0 +1,25 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getViewData() {
return {
method: 'get',
url: '/api/frontend/v1/Cis4FhcApi/getViewData'
};
}
};
+25
View File
@@ -0,0 +1,25 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getMenu() {
return {
method: 'get',
url: '/api/frontend/v1/CisMenu/getMenu'
};
}
};
+64
View File
@@ -0,0 +1,64 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
content(content_id, version=null, sprache=null, sichtbar=null) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/content',
params: {
content_id,
...(version ? { version } : {}),
...(sprache ? { sprache } : {}),
...(sichtbar ? { sichtbar } : {})
}
};
},
//api function used for the news View that renders the html
getNews(page = 1, page_size = 10, sprache) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/getNews',
params: {
page,
page_size,
sprache
},
};
},
//api function used for the widget component
news(limit) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/news',
params: { limit }
};
},
getNewsRowCount() {
return {
method: 'get',
url: '/api/frontend/v1/Cms/getNewsRowCount'
};
},
getNewsExtra() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Cms/getStudiengangInfoForNews'
};
}
};
+95
View File
@@ -0,0 +1,95 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
saveCustomFilter(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/saveCustomFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
customFilterName: wsParams.customFilterName
}
};
},
removeCustomFilter(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/removeCustomFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterId: wsParams.filterId
}
};
},
applyFilterFields(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/applyFilterFields',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterFields: wsParams.filterFields
}
};
},
addFilterField(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/addFilterField',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterField: wsParams.filterField
}
};
},
removeFilterField(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/removeFilterField',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterField: wsParams.filterField
}
};
},
getFilterById(wsParams) {
return {
method: 'get',
url: '/api/frontend/v1/filter/getFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterId: wsParams.filterId
}
};
},
getFilter(wsParams) {
return {
method: 'get',
url: '/api/frontend/v1/filter/getFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType
}
};
}
};
+39
View File
@@ -0,0 +1,39 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getStudentenMail(lehreinheit_id) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Lehre/lvStudentenMail',
params: { lehreinheit_id }
};
},
getLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {
return {
method: 'get',
url: `/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`
};
},
getStudentPruefungen(lehrveranstaltung_id) {
return {
method: 'get',
url: `/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`
};
}
};
+33
View File
@@ -0,0 +1,33 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getHeader(navigation_page) {
return {
method: 'get',
url: '/api/frontend/v1/navigation/header',
params: { navigation_page }
};
},
getMenu(navigation_page) {
return {
method: 'get',
url: '/api/frontend/v1/navigation/menu',
params: { navigation_page }
};
}
};
+22
View File
@@ -0,0 +1,22 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
import person from "./notiz/person.js";
export default {
person
};
+87
View File
@@ -0,0 +1,87 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getNotizen(id, type) {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getNotizen/' + id + '/' + type
};
},
getUid() {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getUid/'
};
},
addNewNotiz(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
params
};
},
loadNotiz(notiz_id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/loadNotiz/',
params: {
notiz_id
}
};
},
loadDokumente(notiz_id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/loadDokumente/',
params: {
notiz_id
}
};
},
deleteNotiz(notiz_id, type_id, id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/deleteNotiz/',
params: {
notiz_id,
type_id,
id
}
};
},
updateNotiz(notiz_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
params
};
},
getMitarbeiter(event) {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event
};
},
isBerechtigt(id, type_id) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/isBerechtigt/'
};
}
};
+26
View File
@@ -0,0 +1,26 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getContentID(ort_kurbz) {
return {
method: 'get',
url: '/api/frontend/v1/Ort/ContentID',
params: { ort_kurzbz: ort_kurbz }
};
}
};
+45
View File
@@ -0,0 +1,45 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
loadCategory(category) {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/loadModule/' + category
};
},
setLanguage(categories,language) {
const params = {categories, language}
return {
method: 'post',
url: '/api/frontend/v1/phrasen/setLanguage',
params
};
},
getLanguage() {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/getLanguage'
};
},
getActiveDbLanguages() {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/getAllLanguages'
};
}
};
+73
View File
@@ -0,0 +1,73 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getView(uid) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/getView/${uid}`
};
},
fotoSperre(value) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/fotoSperre/${value}`
};
},
isStudent(uid) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/isStudent',
params: { uid }
};
},
isMitarbeiter(uid) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/isMitarbeiter/${uid}`
};
},
getZustellAdresse() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/getZustellAdresse'
};
},
getZustellKontakt() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/getZustellKontakt'
};
},
getGemeinden(nation, zip) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`
};
},
getAllNationen() {
return {
method: 'get',
url: '/api/frontend/v1/Profil/getAllNationen'
};
}
};
+110
View File
@@ -0,0 +1,110 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
//! API calls for profil update requests
getStatus() {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/getStatus'
};
},
getTopic() {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/getTopic'
};
},
acceptProfilRequest({profil_update_id, uid, status_message, topic, requested_change}) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/acceptProfilRequest',
params: {
profil_update_id,
uid,
status_message,
topic,
requested_change
}
};
},
denyProfilRequest({profil_update_id, uid, topic, status_message}) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/denyProfilRequest',
params: {
profil_update_id,
uid,
topic,
status_message
}
};
},
insertFile(dms, replace = null) {
return {
method: 'post',
url: `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,
params: dms
};
},
getProfilRequestFiles(requestID) {
return {
method: 'get',
url: `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`
};
},
selectProfilRequest(uid = null, id = null) {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/selectProfilRequest',
params: {
...(uid ? { uid } : {}),
...(id ? { id } : {})
}
};
},
insertProfilRequest(topic, payload, fileID = null) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/insertProfilRequest',
params: {
topic,
payload,
...(fileID ? { fileID } : {})
}
};
},
updateProfilRequest(topic, payload, ID, fileID = null) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/updateProfilRequest',
params: {
topic,
payload,
ID,
...(fileID ? { fileID } : {})
}
};
},
deleteProfilRequest(requestID) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/deleteProfilRequest',
params: { requestID }
};
}
};
+26
View File
@@ -0,0 +1,26 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
search(params) {
return {
method: 'post',
url: '/api/frontend/v1/searchbar/search',
params
};
}
};
+32
View File
@@ -0,0 +1,32 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
studiengangInformation() {
return {
method: 'get',
url: '/api/frontend/v1/Studgang/getStudiengangInfo'
};
},
getStudiengangByKz(studiengang_kz) {
return {
method: 'get',
url: '/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz',
params: { studiengang_kz }
};
}
};
+28
View File
@@ -0,0 +1,28 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
import abmeldung from "./studstatus/abmeldung.js";
import unterbrechung from "./studstatus/unterbrechung.js";
import wiederholung from "./studstatus/wiederholung.js";
import leitung from "./studstatus/leitung.js";
export default {
abmeldung,
unterbrechung,
wiederholung,
leitung
};
@@ -0,0 +1,45 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(antrag_id, prestudent_id) {
const url = '/api/frontend/v1/studstatus/abmeldung/'
+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
return {
method: 'get',
url
};
},
create(studiensemester, prestudent_id, grund) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/abmeldung/createAntrag',
params: {
studiensemester,
prestudent_id,
grund
}
};
},
cancel(antrag_id) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',
params: { antrag_id }
};
}
};
+100
View File
@@ -0,0 +1,100 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getStgs() {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getActiveStgs'
};
},
getAntraege(url, config, params) {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getAntraege/' + url
};
},
getHistory(antrag_id) {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id
};
},
getPrestudents(query, signal) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/getPrestudents',
params: { query }
};
},
approve(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/approveAntrag',
params: antrag
};
},
reject(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/rejectAntrag',
params: antrag
};
},
reopen(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/reopenAntrag',
params: antrag
};
},
pause(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/pauseAntrag',
params: antrag
};
},
unpause(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/unpauseAntrag',
params: antrag
};
},
object(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/objectAntrag',
params: antrag
};
},
approveObjection(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/approveObjection',
params: antrag
};
},
denyObjection(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/denyObjection',
params: antrag
};
}
};
@@ -0,0 +1,49 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(antrag_id, prestudent_id) {
const url = '/api/frontend/v1/studstatus/unterbrechung/'
+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
return {
method: 'get',
url
};
},
create(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/unterbrechung/createAntrag',
params: {
studiensemester,
prestudent_id,
grund,
datum_wiedereinstieg,
attachment
}
};
},
cancel(antrag_id) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/unterbrechung/cancelAntrag',
params: {
antrag_id
}
};
}
};
@@ -0,0 +1,63 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(prestudent_id) {
const url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;
return {
method: 'get',
url
};
},
getLvs(antrag_id) {
const url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;
return {
method: 'get',
url
};
},
create(prestudent_id, studiensemester) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/createAntrag',
params: {
prestudent_id,
studiensemester
}
};
},
cancel(prestudent_id, studiensemester) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',
params: {
prestudent_id,
studiensemester
}
};
},
saveLvs(forbiddenLvs, mandatoryLvs) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/saveLvs',
params: {
forbiddenLvs,
mandatoryLvs
}
};
}
};
+66
View File
@@ -0,0 +1,66 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getRoomInfo(ort_kurzbz, start_date, end_date) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/getRoomplan',
params: { ort_kurzbz, start_date, end_date }
};
},
getStundenplan(start_date, end_date, lv_id) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/getStundenplan',
params: { start_date, end_date, lv_id }
};
},
getStunden() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/Stunden'
};
},
getOrtReservierungen(ort_kurzbz, start_date, end_date) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/Reservierungen/${ort_kurzbz}`,
params: { start_date, end_date }
};
},
getStundenplanReservierungen(start_date, end_date) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/Reservierungen',
params: { start_date, end_date }
};
},
getLehreinheitStudiensemester(lehreinheit_id) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/getLehreinheitStudiensemester/${lehreinheit_id}`
};
},
studiensemesterDateInterval(date) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/studiensemesterDateInterval/${date}`
};
},
};
+48
View File
@@ -0,0 +1,48 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
import app from './stv/app.js';
import lists from './stv/lists.js';
import verband from './stv/verband.js';
import students from './stv/students.js';
import filter from './stv/filter.js';
import konto from './stv/konto.js';
import kontakt from './stv/kontakt.js';
import prestudent from './stv/prestudent.js';
import status from './stv/status.js';
import details from './stv/details.js';
import exam from './stv/exam.js';
import abschlusspruefung from './stv/abschlusspruefung.js';
import grades from './stv/grades.js';
import mobility from './stv/mobility.js';
export default {
app,
lists,
verband,
students,
filter,
konto,
kontakt,
prestudent,
status,
details,
exam,
abschlusspruefung,
grades,
mobility
};
@@ -0,0 +1,111 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getAbschlusspruefung(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + uid
};
},
addNewAbschlusspruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/',
params
};
},
loadAbschlusspruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/',
params: { id }
};
},
updateAbschlusspruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/',
params
};
},
deleteAbschlusspruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/',
params: { id }
};
},
getTypenAbschlusspruefung() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/'
};
},
getTypenAntritte() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/'
};
},
getBeurteilungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/'
};
},
getAkadGrade(studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/getAkadGrade/',
params: { studiengang_kz }
};
},
getTypStudiengang(studiengang_kz) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/',
params: { studiengang_kz }
};
},
getMitarbeiter(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString
};
},
getPruefer(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString
};
},
getNoten() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getNoten/'
};
},
checkForExistingExams(uids) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/',
params: { uid }
};
}
};
+31
View File
@@ -0,0 +1,31 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
configStudent() {
return {
method: 'get',
url: 'api/frontend/v1/stv/config/student'
};
},
configStudents() {
return {
method: 'get',
url: 'api/frontend/v1/stv/config/students'
};
}
};
+32
View File
@@ -0,0 +1,32 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(prestudent_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/get/' + prestudent_id
};
},
save(prestudent_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/save/' + prestudent_id,
params
};
},
};
+101
View File
@@ -0,0 +1,101 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getPruefungen(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getPruefungen/' + uid
};
},
loadPruefung(pruefung_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id
};
},
getTypenPruefungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getTypenPruefungen'
};
},
getAllLehreinheiten(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/getAllLehreinheiten/',
params
};
},
getLvsByStudent(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid
};
},
getLvsandLesByStudent(uid, semester) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester
};
},
getLvsAndMas(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid
};
},
getMitarbeiterLv(id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id
};
},
getNoten() {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getNoten'
};
},
checkZeugnisnoteLv(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/',
params
};
},
addPruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/insertPruefung/',
params
};
},
updatePruefung(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/updatePruefung/' + id,
params
};
},
deletePruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/deletePruefung/' + id
};
}
};
+32
View File
@@ -0,0 +1,32 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getStg() {
return {
method: 'get',
url: 'api/frontend/v1/stv/filter/getStg'
};
},
setStg(studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/filter/setStg',
params: { studiengang_kz }
};
}
};
+96
View File
@@ -0,0 +1,96 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
list() {
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/list'
};
},
getCertificate(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all
};
},
getTeacherProposal(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all
};
},
getRepeaterGrades(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all
};
},
updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/updateCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz,
note
}
};
},
deleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/deleteCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
}
};
},
copyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
}
};
},
copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',
params: {
studierendenantrag_lehrveranstaltung_id
}
};
},
getGradeFromPoints(points, lehrveranstaltung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/getGradeFromPoints',
params: { points, lehrveranstaltung_id }
};
}
};
+28
View File
@@ -0,0 +1,28 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
import address from './kontakt/address.js';
import bankaccount from './kontakt/bankaccount.js';
import contact from './kontakt/contact.js';
import company from './kontakt/company.js';
export default {
address,
bankaccount,
contact,
company
};
@@ -0,0 +1,71 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getAdressen/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewAddress/' + uid,
params
};
},
load(address_id){
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadAddress/',
params: { address_id }
};
},
update(address_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,
params
};
},
delete(address_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteAddress/',
params: { address_id }
};
},
getTypes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getAdressentypen/'
};
},
getPlaces(plz) {
return {
method: 'get',
url: 'api/frontend/v1/stv/address/getPlaces/' + plz
};
},
getNations() {
return {
method: 'get',
url: 'api/frontend/v1/stv/address/getNations/'
};
}
};
@@ -0,0 +1,53 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getBankverbindung/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + uid,
params
};
},
load(bankverbindung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadBankverbindung/',
params: { bankverbindung_id }
};
},
update(bankverbindung_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
params
};
},
delete(bankverbindung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteBankverbindung/',
params: { bankverbindung_id }
};
}
};
@@ -0,0 +1,25 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getFirmen/' + searchString
};
}
};
@@ -0,0 +1,65 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getKontakte/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewContact/' + uid,
params
};
},
load(kontakt_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadContact/',
params: { kontakt_id }
};
},
update(kontakt_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
params
};
},
delete(kontakt_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteContact/',
params: { kontakt_id }
};
},
getTypes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getKontakttypen/'
};
},
getStandorteByFirma(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString
};
}
};
+74
View File
@@ -0,0 +1,74 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(person_id, only_open, studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/get',
params: {
person_id,
only_open,
studiengang_kz
}
};
},
checkDoubles(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/checkDoubles',
params,
config: {
confirmErrorHandler: error => true
}
};
},
insert(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/insert',
params
};
},
counter(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/counter',
params
};
},
edit(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/update',
params
};
},
delete(buchungsnr) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/delete',
params: { buchungsnr }
};
},
getBuchungstypen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/konto/getBuchungstypen'
};
}
};
+55
View File
@@ -0,0 +1,55 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getSprachen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getSprachen'
};
},
getGeschlechter() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getGeschlechter'
};
},
getAusbildungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getAusbildungen'
};
},
getStgs() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStgs'
};
},
getOrgforms() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getOrgforms'
};
},
getStudiensemester() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStudiensemester'
};
}
};
+128
View File
@@ -0,0 +1,128 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getMobilitaeten(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getMobilitaeten/' + uid
};
},
getProgramsMobility() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getProgramsMobility/'
};
},
addNewMobility(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/insertMobility/',
params
};
},
loadMobility(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/loadMobility/' + bisio_id
};
},
updateMobility(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/updateMobility/',
params
};
},
deleteMobility(bisio_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id
};
},
getLVList(studiengang_kz) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz
};
},
getAllLehreinheiten(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/getAllLehreinheiten/',
params
};
},
getLvsandLesByStudent(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid
};
},
getPurposes(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getPurposes/' + bisio_id
};
},
getSupports(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getSupports/' + bisio_id
};
},
getListPurposes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getListPurposes/'
};
},
getListSupports() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getListSupports/'
};
},
deleteMobilityPurpose(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id,
params
};
},
addMobilityPurpose(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id,
params
};
},
deleteMobilitySupport(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id,
params
};
},
addMobilitySupport(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id,
params
};
}
};
+150
View File
@@ -0,0 +1,150 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
//------------- Prestudent.js------------------------------------------------------
get(prestudent_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/prestudent/get/' + prestudent_id
};
},
updatePrestudent(prestudent_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
params
};
},
getBezeichnungZGV() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungZGV/'
};
},
getBezeichnungMZgv() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungMZgv/'
};
},
getBezeichnungDZgv() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungDZgv/'
};
},
getStgs() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStgs/'
};
},
getAusbildung() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getAusbildung/'
};
},
getAufmerksamdurch() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getAufmerksamdurch/'
};
},
getBerufstaetigkeit() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBerufstaetigkeit/'
};
},
getTypenStg() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getTypenStg/'
};
},
getBisstandort() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBisstandort/'
};
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getHistoryPrestudent/' + prestudent_id
};
},
getMaxSem(studiengang_kzs) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/getMaxSemester/',
params: { studiengang_kzs }
};
},
advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/advanceStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/confirmStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
isLastStatus(id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/isLastStatus/' + id
};
},
deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/deleteStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
getLastBismeldestichtag() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getLastBismeldestichtag/'
};
},
//------------- History.js------------------------------------------------------
getHistoryPrestudents(person_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + person_id
};
},
};
+98
View File
@@ -0,0 +1,98 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
//------------- Modal.js------------------------------------------------------
insertStatus(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/insertStatus/' + id,
params
};
},
loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/loadStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
updateStatus({
prestudent_id,
status_kurzbz,
studiensemester_kurzbz,
ausbildungssemester
}, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/updateStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester,
params
};
},
getStudienplaene(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id
};
},
getStudiengang(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id
};
},
getStatusgruende() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getStatusgruende/'
};
},
getStati() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStati/'
};
},
//------------- Dropdown.js------------------------------------------------------
addStudent(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/addStudent/' + id,
params
};
},
changeStatus(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/changeStatus/' + id,
params
};
},
getStatusarray() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getStatusarray/'
};
}
};
+50
View File
@@ -0,0 +1,50 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
uid(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/uid/' + uid
};
},
prestudent(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/prestudent/' + prestudent_id
};
},
person(person_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/person/' + person_id
};
},
verband(relative_path) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/' + relative_path
};
},
check(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/check',
params
};
}
};
+43
View File
@@ -0,0 +1,43 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
get(path) {
let url = 'api/frontend/v1/stv/verband';
if (path)
url += '/' + path;
return {
method: 'get',
url
};
},
favorites: {
get() {
return {
method: 'get',
url: 'api/frontend/v1/stv/favorites'
};
},
set(favorites) {
return {
method: 'post',
url: 'api/frontend/v1/stv/favorites/set',
params: { favorites }
};
}
}
};
+37
View File
@@ -0,0 +1,37 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
open() {
return {
method: 'get',
url: '/api/frontend/v1/Ampeln/open'
};
},
all() {
return {
method: 'get',
url: '/api/frontend/v1/Ampeln/all'
};
},
confirm(ampel_id) {
return {
method: 'get',
url: `/api/frontend/v1/Ampeln/confirm/${ampel_id}`
};
}
};
+45
View File
@@ -0,0 +1,45 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
getBookmarks() {
return {
method: 'get',
url: '/api/frontend/v1/Bookmark/getBookmarks'
};
},
delete(bookmark_id) {
return {
method: 'get',
url: `/api/frontend/v1/Bookmark/delete/${bookmark_id}`
};
},
update({ bookmark_id, url, title, tag=null }) {
return {
method: 'post',
url: `/api/frontend/v1/Bookmark/update/${bookmark_id}`,
params: { url, title }
};
},
insert({ url, title, tag }) {
return {
method: 'post',
url: `/api/frontend/v1/Bookmark/insert`,
params: { url, title, tag }
};
}
};
+9 -1
View File
@@ -33,11 +33,16 @@ import ort from "./ort.js";
import cms from "./cms.js";
import lehre from "./lehre.js";
import addons from "./addons.js";
import studiengang from "./studiengang.js";
import menu from "./menu.js";
import dashboard from "./dashboard.js";
import authinfo from "./authinfo.js";
export default {
search,
phrasen,
navigation,
dashboard,
filter,
studstatus,
profil,
@@ -52,5 +57,8 @@ export default {
ort,
cms,
lehre,
addons
addons,
studiengang,
menu,
authinfo,
};
+6
View File
@@ -13,4 +13,10 @@ export default {
, {}
);
},
getStudentPruefungen(lehrveranstaltung_id){
return this.$fhcApi.get(
`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`
, {}
);
}
}
+9
View File
@@ -0,0 +1,9 @@
export default {
getMenu: function () {
return this.$fhcApi.get(
"/api/frontend/v1/CisMenu/getMenu",
{}
);
}
}
+4 -4
View File
@@ -5,8 +5,8 @@ export default {
getUid(){
return this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');
},
addNewNotiz(id, formData) {
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
addNewNotiz(form, id, formData) {
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
formData
);
},
@@ -27,8 +27,8 @@ export default {
id
});
},
updateNotiz(notiz_id, formData){
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
updateNotiz(form, notiz_id, formData){
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
formData
);
},
+16
View File
@@ -0,0 +1,16 @@
export default {
studiengangInformation: function () {
return this.$fhcApi.get(
"/api/frontend/v1/Studgang/getStudiengangInfo",
{}
);
},
getStudiengangByKz: function (studiengang_kz) {
return this.$fhcApi.get(
"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz",
{
"studiengang_kz": studiengang_kz
}
);
}
}
+8 -2
View File
@@ -6,10 +6,10 @@ export default {
{ ort_kurzbz, start_date, end_date}
);
},
getStundenplan(start_date, end_date) {
getStundenplan(start_date, end_date, lv_id) {
return this.$fhcApi.get(
'/api/frontend/v1/Stundenplan/getStundenplan',
{ start_date, end_date }
{ start_date, end_date, lv_id }
);
},
getStunden() {
@@ -36,4 +36,10 @@ export default {
{}
);
},
studiensemesterDateInterval(date) {
return this.$fhcApi.get(
`/api/frontend/v1/Stundenplan/studiensemesterDateInterval/${date}`,
{}
);
},
};
+17 -1
View File
@@ -3,6 +3,14 @@ import students from './stv/students.js';
import filter from './stv/filter.js';
import konto from './stv/konto.js';
import group from './stv/group.js';
import kontakt from './stv/kontakt.js';
import prestudent from './stv/prestudent.js';
import status from './stv/status.js';
import details from './stv/details.js';
import exam from './stv/exam.js';
import abschlusspruefung from './stv/abschlusspruefung.js';
import grades from './stv/grades.js';
import mobility from './stv/mobility.js';
export default {
verband,
@@ -10,10 +18,18 @@ export default {
filter,
konto,
group,
kontakt,
prestudent,
status,
details,
exam,
abschlusspruefung,
grades,
mobility,
configStudent() {
return this.$fhcApi.get('api/frontend/v1/stv/config/student');
},
configStudents() {
return this.$fhcApi.get('api/frontend/v1/stv/config/students');
}
};
};
+48
View File
@@ -0,0 +1,48 @@
export default {
getAbschlusspruefung (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);
},
addNewAbschlusspruefung(form, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data
);
},
loadAbschlusspruefung(id){
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});
},
updateAbschlusspruefung(form, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data
);
},
deleteAbschlusspruefung(id){
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});
},
getTypenAbschlusspruefung(){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');
},
getTypenAntritte(){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');
},
getBeurteilungen(){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');
},
getAkadGrade(studiengang_kz){
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});
},
getTypStudiengang(studiengang_kz){
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});
},
getMitarbeiter(searchString){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);
},
getPruefer(searchString){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);
},
getNoten(){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');
},
checkForExistingExams(uids) {
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}
);
}
}
+10
View File
@@ -0,0 +1,10 @@
export default {
get(prestudent_id) {
return this.$fhcApi.post('api/frontend/v1/stv/student/get/' + prestudent_id);
},
save(form, prestudent_id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/student/save/' + prestudent_id,
data
);
},
}
+41
View File
@@ -0,0 +1,41 @@
export default {
getPruefungen(url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);
},
loadPruefung(pruefung_id){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);
},
getTypenPruefungen(){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');
},
getAllLehreinheiten(data){
return this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)
},
getLvsByStudent(uid){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)
},
getLvsandLesByStudent(uid, semester){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);
},
getLvsAndMas(uid){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)
},
getMitarbeiterLv(id){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)
},
getNoten(){
return this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');
},
checkZeugnisnoteLv(data){
return this.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)
},
addPruefung(form, data){
return this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);
},
updatePruefung(form, id, data){
return this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);
},
deletePruefung(id){
return this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)
}
}
+72
View File
@@ -0,0 +1,72 @@
export default {
list() {
return this.$fhcApi.get('api/frontend/v1/stv/grades/list');
},
getCertificate(prestudent_id, all) {
all = all ? '/all' : '';
return this.$fhcApi.get('api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all);
},
getTeacherProposal(prestudent_id, all) {
all = all ? '/all' : '';
return this.$fhcApi.get('api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all);
},
getRepeaterGrades(prestudent_id, all) {
all = all ? '/all' : '';
return this.$fhcApi.get('api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all);
},
updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/grades/updateCertificate',
{
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz,
note
},
{
errorHeader: lehrveranstaltung_bezeichnung
}
);
},
deleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/grades/deleteCertificate',
{
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
},
{
errorHeader: lehrveranstaltung_bezeichnung
}
);
},
copyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',
{
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
},
{
errorHeader: lehrveranstaltung_bezeichnung
}
);
},
copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',
{
studierendenantrag_lehrveranstaltung_id
},
{
errorHeader: lv_bezeichnung
}
);
},
getGradeFromPoints(points, lehrveranstaltung_id, manualErrorHandling) {
const config = manualErrorHandling ? {errorHandling: false} : {};
return this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints', {points, lehrveranstaltung_id}, config);
}
}
+82
View File
@@ -0,0 +1,82 @@
export default {
//------------- address.js-----------
getAdressen (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);
},
addNewAddress(form, id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,
data
);
},
loadAddress(address_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});
},
updateAddress(form, address_id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,
data
);
},
deleteAddress(address_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});
},
getPlaces(plz) {
return this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);
},
getFirmen(searchString) {
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);
},
getNations() {
return this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');
},
getAdressentypen() {
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');
},
//------------- bankverbindung.js-----------
getBankverbindung (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);
},
addNewBankverbindung(form, id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,
data
);
},
loadBankverbindung(bankverbindung_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});
},
updateBankverbindung(form, bankverbindung_id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
data
);
},
deleteBankverbindung(bankverbindung_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});
},
//------------- contact.js-----------
getKontakte (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);
},
addNewContact(form, id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,
data
);
},
loadContact(kontakt_id){
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});
},
updateContact(form, kontakt_id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
data
);
},
deleteContact(kontakt_id) {
return this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});
},
getStandorteByFirma(searchString){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);
},
getKontakttypen(){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');
}
};
+6 -6
View File
@@ -14,19 +14,19 @@ export default {
return config;
},
checkDoubles(data) {
return this.$fhcApi.post('api/frontend/v1/stv/konto/checkDoubles', data, {
checkDoubles(form, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {
confirmErrorHandler: error => true
});
},
insert(data) {
return this.$fhcApi.post('api/frontend/v1/stv/konto/insert', data);
insert(form, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);
},
counter(data) {
return this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);
},
edit(data) {
return this.$fhcApi.post('api/frontend/v1/stv/konto/update', data);
edit(form, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);
},
delete(buchungsnr) {
return this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});
+54
View File
@@ -0,0 +1,54 @@
export default {
getMobilitaeten (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);
},
getProgramsMobility(){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');
},
addNewMobility(form, data){
return this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);
},
loadMobility(bisio_id){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);
},
updateMobility(form, data){
return this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);
},
deleteMobility(bisio_id){
return this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);
},
getLVList(studiengang_kz){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);
},
getAllLehreinheiten(data){
return this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)
},
getLvsandLesByStudent(uid){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);
},
getPurposes(url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);
},
getSupports(url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);
},
getListPurposes() {
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');
},
getListSupports() {
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');
},
deleteMobilityPurpose(params) {
return this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);
},
addMobilityPurpose(params) {
return this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);
},
deleteMobilitySupport(params) {
return this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);
},
addMobilitySupport(params) {
return this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);
},
}
+84
View File
@@ -0,0 +1,84 @@
export default {
//------------- Prestudent.js------------------------------------------------------
get(prestudent_id){
return this.$fhcApi.post('api/frontend/v1/stv/prestudent/get/' + prestudent_id);
},
updatePrestudent(form, prestudent_id, data){
return this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
data
);
},
getBezeichnungZGV() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');
},
getBezeichnungMZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');
},
getBezeichnungDZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');
},
getStgs() {
return this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');
},
getAusbildung() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');
},
getAufmerksamdurch() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');
},
getBerufstaetigkeit() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');
},
getTypenStg() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');
},
getBisstandort() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);
},
getMaxSem(studiengang_kzs) {
return this.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});
},
advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
isLastStatus(id) {
return this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);
},
deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
getLastBismeldestichtag() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');
},
//------------- History.js------------------------------------------------------
getHistoryPrestudents (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);
},
}
+60
View File
@@ -0,0 +1,60 @@
export default {
//------------- Modal.js------------------------------------------------------
insertStatus(form, id, data) {
return this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,
data
);
},
loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/status/loadStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
updateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {
return this.$fhcApi.post(
form,
'api/frontend/v1/stv/status/updateStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester,
data
);
},
getStudienplaene(prestudent_id) {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);
},
getStudiengang(prestudent_id) {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);
},
getStatusgruende() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');
},
getStati() {
return this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');
},
//------------- Dropdown.js------------------------------------------------------
addStudent(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,
data,
{errorHeader: id}
);
},
changeStatus(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,
data,
{errorHeader: id}
);
},
getStatusarray() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');
}
}
+26
View File
@@ -0,0 +1,26 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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, see <https://www.gnu.org/licenses/>.
*/
export default {
load({ ciModel, pk }) {
return {
method: 'post',
url: '/api/frontend/v1/udf/load/' + ciModel,
params: pk
};
}
};
@@ -23,7 +23,7 @@ import {CoreRESTClient} from '../../RESTClient.js';
import {CoreFetchCmpt} from '../../components/Fetch.js';
import {BismeldestichtagAPIs} from './API.js';
import Phrasen from '../../plugin/Phrasen.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
const bismeldestichtagApp = Vue.createApp({
data: function() {
@@ -237,4 +237,4 @@ const bismeldestichtagApp = Vue.createApp({
}
});
bismeldestichtagApp.use(Phrasen).mount('#main');
bismeldestichtagApp.use(PluginsPhrasen).mount('#main');
+16 -14
View File
@@ -1,9 +1,7 @@
import FhcSearchbar from "../components/searchbar/searchbar.js";
import CisMenu from "../components/Cis/Menu.js";
import FhcApi from '../plugin/FhcApi.js';
import Phrasen from '../plugin/Phrasen.js';
import fhcapifactory from "./api/fhcapifactory.js";
Vue.$fhcapi = fhcapifactory;
import PluginsPhrasen from '../plugins/Phrasen.js';
import ApiSearchbar from '../api/factory/searchbar.js';
const app = Vue.createApp({
name: 'CisApp',
@@ -27,13 +25,12 @@ const app = Vue.createApp({
defaultaction: {
type: "link",
action: function(data) {
return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router+
"/Cis/Profil/View/"+data.uid;
}
},
return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router+
"/Cis/Profil/View/"+data.uid;
}
},
childactions: []
},
},
student: {
defaultaction: {
type: "link",
@@ -114,10 +111,15 @@ const app = Vue.createApp({
},
methods: {
searchfunction: function(searchsettings) {
return Vue.$fhcapi.search.search(searchsettings);
},
return this.$api.call(ApiSearchbar.search(searchsettings));
}
}
});
app.use(FhcApi);
app.use(Phrasen);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
app.use(PluginsPhrasen);
app.mount('#cis-header');
-44
View File
@@ -1,44 +0,0 @@
import BsConfirm from "../../components/Bootstrap/Confirm.js";
import CmsNews from "../../components/Cis/Cms/News.js";
import CmsContent from "../../components/Cis/Cms/Content.js";
import Phrasen from "../../plugin/Phrasen.js";
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers";
const app = Vue.createApp({
name: 'CmsApp',
components: {
CmsNews,
CmsContent,
},
mounted() {
document.querySelectorAll("#cms [data-confirm]").forEach((el) => {
el.addEventListener("click", (evt) => {
evt.preventDefault();
BsConfirm.popup(el.dataset.confirm)
.then(() => {
Axios.get(el.href)
.then((res) => {
// TODO(chris): check for success then show message and/or reload
location = location;
})
.catch((err) => console.error("ERROR:", err));
})
.catch(() => {});
});
});
document.querySelectorAll("#cms [data-href]").forEach((el) => {
el.href = el.dataset.href.replace(
/^ROOT\//,
FHC_JS_DATA_STORAGE_OBJECT.app_root
);
});
},
});
setScrollbarWidth();
app.use(primevue.config.default, { zIndex: { overlay: 9999 } });
app.use(Phrasen, {reload: true});
app.mount("#cms");
//#cms [data-confirm], #cms [data-href]
+3 -3
View File
@@ -1,5 +1,5 @@
import Phrasen from '../../plugin/Phrasen.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers";
import PluginsPhrasen from '../../plugins/Phrasen.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
const app = Vue.createApp({
name: 'DocumentsApp',
@@ -89,5 +89,5 @@ const app = Vue.createApp({
setScrollbarWidth();
app.use(Phrasen, {reload: true});
app.use(PluginsPhrasen);
app.mount('#content');
-13
View File
@@ -1,13 +0,0 @@
import Info from "../../components/Cis/Mylv/Semester/Studiengang/Lv/Info.js";
import Phrasen from "../../plugin/Phrasen.js";
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers";
const app = Vue.createApp({
components: {
Info
}
})
setScrollbarWidth();
app.use(Phrasen, { reload: true }).mount('#content');
-14
View File
@@ -1,14 +0,0 @@
import MylvStudent from "../../../components/Cis/Mylv/Student.js";
import Phrasen from "../../../plugin/Phrasen.js";
import {setScrollbarWidth} from "../../../helpers/CssVarCalcHelpers";
const app = Vue.createApp({
name: 'MyLvStudentApp',
components: {
MylvStudent
}
})
setScrollbarWidth();
app.use(Phrasen, {reload: true}).mount('#content');
+7 -3
View File
@@ -1,6 +1,9 @@
import ProfilUpdateView from "../../components/Cis/ProfilUpdate/ProfilUpdateView.js";
import Phrasen from "../../plugin/Phrasen.js";
import PluginsPhrasen from "../../plugins/Phrasen.js";
import ApiProfilUpdate from '../../api/factory/profilUpdate.js';
// TODO: sobald in verwendung den vue router pfad zu ProfilUpdateView definieren und diese app in component auslagern
const app = Vue.createApp({
name: 'ProfilUpdateRequestsApp',
components: {
@@ -21,7 +24,8 @@ const app = Vue.createApp({
},
methods: {},
created() {
this.$fhcApi.factory.profilUpdate.getStatus()
this.$api
.call(ApiProfilUpdate.getStatus())
.then((response) => {
this.profilUpdateStates = response.data;
})
@@ -30,4 +34,4 @@ const app = Vue.createApp({
});
},
});
app.use(Phrasen).mount("#content");
app.use(PluginsPhrasen).mount("#content");
-19
View File
@@ -1,19 +0,0 @@
import Phrasen from "../../plugin/Phrasen.js";
import RoomInformation from "../../components/Cis/Mylv/RoomInformation.js";
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers";
const app = Vue.createApp({
name: 'RoomInformationApp',
components: {
RoomInformation
},
data() {
return {
}
}
});
setScrollbarWidth();
app.use(Phrasen);
app.mount('#content');
-163
View File
@@ -1,163 +0,0 @@
import FhcCalendar from "../../components/Calendar/Calendar.js";
import Phrasen from "../../plugin/Phrasen.js";
import CalendarDate from "../../composables/CalendarDate.js";
import LvModal from "../../components/Cis/Mylv/LvModal.js";
import LvInfo from "../../components/Cis/Mylv/LvInfo.js"
import LvMenu from "../../components/Cis/Mylv/LvMenu.js"
const app = Vue.createApp({
name: 'StundenplanApp',
data() {
return {
lv_id: null,
events: null,
calendarDate: new CalendarDate(new Date()),
currentlySelectedEvent: null,
currentDay: new Date(),
minimized: false,
}
},
components: {
FhcCalendar, LvModal, LvMenu, LvInfo
},
computed:{
weekFirstDay: function () {
return this.calendarDateToString(this.calendarDate.cdFirstDayOfWeek);
},
weekLastDay: function () {
return this.calendarDateToString(this.calendarDate.cdLastDayOfWeek);
},
monthFirstDay: function () {
return this.calendarDateToString(this.calendarDate.cdFirstDayOfCalendarMonth);
},
monthLastDay: function () {
return this.calendarDateToString(this.calendarDate.cdLastDayOfCalendarMonth);
},
},
methods:{
setSelectedEvent: function (event) {
this.currentlySelectedEvent = event;
},
getLvID: function () {
this.lv_id = window.location.pathname
},
selectDay: function(day){
this.currentDay = day;
},
showModal: function(event){
this.currentlySelectedEvent = event;
Vue.nextTick(() => {
this.$refs.lvmodal.show();
});
},
updateRange: function ({start,end}) {
let checkDate = (date) => {
return date.m != this.calendarDate.m || date.y != this.calendarDate.y;
}
// only load month data if the month or year has changed
if (checkDate(new CalendarDate(start)) && checkDate(new CalendarDate(end))){
// reset the events before querying the new events to activate the loading spinner
this.events = null;
this.calendarDate = new CalendarDate(end);
Vue.nextTick(() => {
this.loadEvents();
});
}
},
calendarDateToString: function (calendarDate) {
return calendarDate instanceof CalendarDate ?
[calendarDate.y, calendarDate.m + 1, calendarDate.d].join('-') :
null;
},
loadEvents: function(){
Promise.allSettled([
this.$fhcApi.factory.stundenplan.getStundenplan(this.monthFirstDay, this.monthLastDay),
this.$fhcApi.factory.stundenplan.getStundenplanReservierungen(this.monthFirstDay, this.monthLastDay)
]).then((result) => {
let promise_events = [];
result.forEach((promise_result) => {
if (promise_result.status === 'fulfilled' && promise_result.value.meta.status === "success") {
let data = promise_result.value.data;
// adding additional information to the events
if (data && data.forEach) {
data.forEach((el, i) => {
el.id = i;
if (el.type === 'reservierung') {
el.color = '#' + (el.farbe || 'FFFFFF');
} else {
el.color = '#' + (el.farbe || 'CCCCCC');
}
el.start = new Date(el.datum + ' ' + el.beginn);
el.end = new Date(el.datum + ' ' + el.ende);
});
}
promise_events = promise_events.concat(data);
}
})
this.events = promise_events;
});
},
},
created()
{
this.loadEvents();
this.getLvID();
},
template:/*html*/`
<h2>{{$p.t('lehre/stundenplan')}}</h2>
<hr>
<lv-modal v-if="currentlySelectedEvent" :event="currentlySelectedEvent" ref="lvmodal" />
<fhc-calendar @selectedEvent="setSelectedEvent" :initial-date="currentDay" @change:range="updateRange" :events="events" initial-mode="week" show-weeks @select:day="selectDay" v-model:minimized="minimized">
<template #monthPage="{event,day,isSelected}">
<span class="fhc-entry" :class="{'selectedEvent':isSelected}" style="color:white" :style="{'background-color': event.color}">
{{event.topic}}
</span>
</template>
<template #weekPage="{event,day,isSelected}">
<div @click="showModal(event?.orig)" type="button" :class="{'selectedEvent':isSelected}" class="fhc-entry border border-secondary border d-flex flex-column align-items-center justify-content-evenly h-100">
<span>{{event?.orig.topic}}</span>
<span v-for="lektor in event?.orig.lektor">{{lektor.kurzbz}}</span>
<span>{{event?.orig.ort_kurzbz}}</span>
</div>
</template>
<template #dayPage="{event,day,mobile}">
<div @click="mobile? showModal(event?.orig):null" type="button" class="fhc-entry border border-secondary border row m-0 h-100 justify-content-center align-items-center text-center">
<div class="col ">
<p>Lehrveranstaltung:</p>
<p class="m-0">{{event?.orig.topic}}</p>
</div>
<div class="col ">
<p>Lektor:</p>
<p class="m-0" v-for="lektor in event?.orig.lektor">{{lektor.kurzbz}}</p>
</div>
<div class="col ">
<p>Ort: </p>
<p class="m-0">{{event?.orig.ort_kurzbz}}</p>
</div>
</div>
</template>
<template #pageMobilContent="{lvMenu}">
<h3 >{{$p.t('lvinfo','lehrveranstaltungsinformationen')}}</h3>
<div class="w-100">
<lv-info :event="currentlySelectedEvent" />
</div>
<h3 >Lehrveranstaltungs Menu</h3>
<lv-menu :containerStyles="['p-0']" :rowStyles="['m-0']" v-show="lvMenu" :menu="lvMenu" />
</template>
<template #pageMobilContentEmpty >
<h3>Keine Lehrveranstaltungen</h3>
</template>
</fhc-calendar>
`
});
app.use(Phrasen, {reload: true});
app.mount('#content');
-18
View File
@@ -1,18 +0,0 @@
import {CoreNavigationCmpt} from '../components/navigation/Navigation.js';
import CoreDashboard from '../components/Dashboard/Dashboard.js';
import FhcApi from '../../plugin/FhcApi.js';
import Phrasen from '../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'DashboardApp',
data: () => ({
appSideMenuEntries: {}
}),
components: {
CoreNavigationCmpt,
CoreDashboard
}
})
app.use(FhcApi);
app.use(Phrasen);
app.mount('#main');
+2 -4
View File
@@ -1,7 +1,6 @@
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
import DashboardAdmin from '../../components/Dashboard/Admin.js';
import FhcApi from '../../plugin/FhcApi.js';
import Phrasen from '../../plugin/Phrasen.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'AdminApp',
@@ -13,6 +12,5 @@ const app = Vue.createApp({
DashboardAdmin
}
});
app.use(FhcApi);
app.use(Phrasen);
app.use(PluginsPhrasen);
app.mount('#main');
+263 -14
View File
@@ -1,20 +1,269 @@
import FhcDashboard from '../../components/Dashboard/Dashboard.js';
import FhcApi from '../../plugin/FhcApi.js';
import Phrasen from '../../plugin/Phrasen.js';
import { setScrollbarWidth } from "../../helpers/CssVarCalcHelpers";
import PluginsPhrasen from '../../plugins/Phrasen.js';
import contrast from '../../directives/contrast.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
import Stundenplan, {DEFAULT_MODE_STUNDENPLAN} from "../../components/Cis/Stundenplan/Stundenplan.js";
import MylvStudent from "../../components/Cis/Mylv/Student.js";
import Profil from "../../components/Cis/Profil/Profil.js";
import CmsNews from "../../components/Cis/Cms/News.js";
import CmsContent from "../../components/Cis/Cms/Content.js";
import Info from "../../components/Cis/Mylv/Semester/Studiengang/Lv/Info.js";
import RoomInformation, {DEFAULT_MODE_RAUMINFO} from "../../components/Cis/Mylv/RoomInformation.js";
const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
const router = VueRouter.createRouter({
history: VueRouter.createWebHistory(`/${ciPath}`),
routes: [
{
path: `/Cis/Profil/View/:uid`,
name: 'ProfilView',
component: Profil,
props: true
},
{
path: `/Cis/Profil`,
name: 'Profil',
component: Profil,
props: true
},
// Redirect old links to new format
{
path: "/CisVue/Cms/getRoomInformation/:ort_kurzbz",
name: "RoomInformationOld",
component: RoomInformation,
redirect: (to) => {
return { // redirect to longer Rauminfo url and map params
name: "RoomInformation",
params: { // in this case always populate other params since they are not optional
ort_kurzbz: to.params.ort_kurzbz,
mode: DEFAULT_MODE_RAUMINFO,
focus_date: new Date().toISOString().split("T")[0]
},
};
},
},
{
path: `/CisVue/Cms/getRoomInformation/:mode/:focus_date/:ort_kurzbz`,
name: 'RoomInformation',
component: RoomInformation,
props: (route) => { // validate and set mode/focus date if for some reason missing
const validModes = ["Month", "Week", "Day"];
// check mode string
const mode = route.params.mode &&
validModes.includes(route.params.mode.charAt(0).toUpperCase() + route.params.mode.slice(1).toLowerCase())
? route.params.mode.charAt(0).toUpperCase() + route.params.mode.slice(1).toLowerCase()
: DEFAULT_MODE_RAUMINFO;
// default to today date if not provided
const d = new Date(route.params.focus_date)
const focus_date = !isNaN(d) ? route.params.focus_date : new Date().toISOString().split("T")[0];
// for consistency reasons format the props into one object but actually use a new name to we dont collide with
// existing viewData declaration written from codeigniter 3 into routerview tag
return {
propsViewData: {
mode,
focus_date,
ort_kurzbz: route.params.ort_kurzbz
}
};
},
beforeEnter: (to, from, next) => {
// missing mode or focus_date -> set defaults
if (!to.params.mode || !to.params.focus_date) {
next({
name: "RoomInformation",
params: {
mode: to.params.mode || DEFAULT_MODE_RAUMINFO,
focus_date: to.params.focus_date || new Date().toISOString().split("T")[0],
ort_kurzbz: route.params.ort_kurzbz
}
});
} else {
next();
}
}
},
{
path: `/CisVue/Cms/Content/:content_id`,
name: 'Content',
component: CmsContent,
props: true
},
{
path: `/CisVue/Cms/News`,
name: 'News',
component: CmsNews,
props: true
},
{
path: `/Cis/MyLv`,
name: 'MyLv',
component: MylvStudent,
props: true
},
{
path: `/Cis/MyLv/Info/:studien_semester/:lehrveranstaltung_id`,
name: 'LvInfo',
component: Info,
props: true
},
// Redirect old links to new format
{
// only trigger on first param being numeric to avoid paths like "Stundenplan/Month" entering here
path: "/Cis/Stundenplan/:lv_id(\\d+)",
name: "StundenplanOld",
component: Stundenplan,
redirect: (to) => {
return { // redirect to longer Stundenplan url and map params
name: "Stundenplan",
params: {
lv_id: to.params.lv_id
},
};
},
},
{
path: `/Cis/Stundenplan/:mode?/:focus_date?/:lv_id?`,
name: 'Stundenplan',
component: Stundenplan,
props: (route) => { // validate and set mode/focus date if for some reason missing
const validModes = ["Month", "Week", "Day"];
// check mode string
const mode = route.params.mode &&
validModes.includes(route.params.mode.charAt(0).toUpperCase() + route.params.mode.slice(1).toLowerCase())
? route.params.mode.charAt(0).toUpperCase() + route.params.mode.slice(1).toLowerCase()
: DEFAULT_MODE_STUNDENPLAN;
// default to today date if not provided or string forms invalid date
const d = new Date(route.params.focus_date)
const focus_date = !isNaN(d) ? route.params.focus_date : new Date().toISOString().split("T")[0];
// for consistency reasons format the props into one object but actually use a new name to we dont collide with
// existing viewData declaration written from codeigniter 3 into routerview tag
return {
propsViewData: {
mode,
focus_date,
lv_id: route.params.lv_id
}
};
},
beforeEnter: (to, from, next) => {
// missing mode or focus_date -> set defaults
if (!to.params.mode || !to.params.focus_date) {
next({
name: "Stundenplan",
params: {
mode: to.params.mode || DEFAULT_MODE_STUNDENPLAN,
focus_date: to.params.focus_date || new Date().toISOString().split("T")[0],
lv_id: to.params.lv_id
}
});
} else {
next();
}
}
},
{
path: `/Cis4`,
name: 'Cis4',
component: FhcDashboard,
props: {dashboard: 'CIS'},
},
{
path: `/`,
name: 'FhcDashboard',
component: FhcDashboard,
props: {dashboard: 'CIS'},
},
{
path: '/:pathMatch(.*)*',
name: 'Fallback',
component: FhcDashboard,
props: {dashboard: 'CIS'},
redirect: () => {
return {
name: "Cis4",
params: {
dashboard: 'CIS'
},
};
},
},
]
})
const app = Vue.createApp({
name: 'FhcApp',
data: () => ({
appSideMenuEntries: {}
}),
components: {
FhcDashboard
}
name: 'FhcApp',
data: () => ({
appSideMenuEntries: {}
}),
components: {},
computed: {
isMobile() {
return /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
},
provide() {
return { // provide injectable & watchable language property
language: Vue.computed(() => this.$p.user_language)
}
},
methods: {
isInternalRoute(href) {
const internalBase = window.location.origin
return href.startsWith(internalBase);
},
handleClick(event) {
const target = event.target.closest('a');
if (target && this.isInternalRoute(target.href)) {
const url = new URL(target.href)
const path = url.pathname
const base = this.$router.options.history.base
const route = path.replace(base, '') || '/'
// let click event propagate normally if we dont route internally
const res = this.$router.resolve(route)
if(!res?.matched?.length || res.name === 'Fallback') return
event.preventDefault(); // Prevent browser navigation
if(this.isMobile) { // toggle the menu
const navMain = document.getElementById('nav-main');
// fix unwanted toggle from off to on for some links on mobile
if(navMain.classList.contains('show')){
document.getElementById('nav-main-btn').click();
}
}
this.$router.push(route);
}
}
},
mounted() {
document.addEventListener('click', this.handleClick);
},
beforeUnmount() {
document.removeEventListener('click', this.handleClick);
},
});
// kind of a bandaid for bad css on some pages to avoid horizontal scroll
setScrollbarWidth();
app.use(FhcApi);
app.use(Phrasen);
app.mount('#content');
app.use(router);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
app.use(PluginsPhrasen);
app.directive('contrast', contrast);
app.mount('#fhccontent');
+2 -2
View File
@@ -21,7 +21,7 @@ import {LogsViewerTabulatorEventHandlers} from './TabulatorSetup.js';
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
import Phrasen from '../../plugin/Phrasen.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
const logsViewerApp = Vue.createApp({
data: function() {
@@ -42,5 +42,5 @@ const logsViewerApp = Vue.createApp({
}
});
logsViewerApp.use(Phrasen).mount('#main');
logsViewerApp.use(PluginsPhrasen).mount('#main');
+5 -3
View File
@@ -18,7 +18,7 @@
import FhcStudentenverwaltung from "../components/Stv/Studentenverwaltung.js";
import fhcapifactory from "./api/fhcapifactory.js";
import Phrasen from "../plugin/Phrasen.js";
import PluginsPhrasen from "../plugins/Phrasen.js";
const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
@@ -34,7 +34,9 @@ const router = VueRouter.createRouter({
]
});
const app = Vue.createApp();
const app = Vue.createApp({
name: 'StudentenverwaltungApp'
});
app
.use(router)
@@ -43,5 +45,5 @@ app
overlay: 1100
}
})
.use(Phrasen)
.use(PluginsPhrasen)
.mount('#main');
+2 -2
View File
@@ -1,7 +1,7 @@
import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag.js";
import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js";
import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js";
import Phrasen from '../../plugin/Phrasen.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'AntragApp',
@@ -21,5 +21,5 @@ const app = Vue.createApp({
}
});
app
.use(Phrasen, {reload: true})
.use(PluginsPhrasen)
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';
import Phrasen from '../../../plugin/Phrasen.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'LeitungApp',
@@ -8,6 +8,6 @@ const app = Vue.createApp({
}
});
app
.use(Phrasen)
.use(PluginsPhrasen)
.use(primevue.config.default,{zIndex: {overlay: 9999}})
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';
import Phrasen from '../../../plugin/Phrasen.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'LvzuweisungApp',
@@ -13,5 +13,5 @@ const app = Vue.createApp({
}
});
app
.use(Phrasen)
.use(PluginsPhrasen)
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';
import Phrasen from '../../../plugin/Phrasen.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
const app = Vue.createApp({
name: 'StudentApp',
@@ -8,5 +8,5 @@ const app = Vue.createApp({
}
});
app
.use(Phrasen)
.use(PluginsPhrasen)
.mount('#wrapper');
@@ -17,9 +17,7 @@
import LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';
import {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';
import FhcAlert from '../../../plugin/FhcAlert.js';
import FhcApi from "../../../plugin/FhcApi.js";
import Phrasen from "../../../plugin/Phrasen.js";
import PluginsPhrasen from "../../../plugins/Phrasen.js";
const lvTemplatesApp = Vue.createApp({
@@ -32,7 +30,5 @@ const lvTemplatesApp = Vue.createApp({
lvTemplatesApp
.use(primevue.config.default,{zIndex: {overlay: 9999}})
.use(FhcAlert)
.use(FhcApi)
.use(Phrasen)
.use(PluginsPhrasen)
.mount('#main')
@@ -35,24 +35,53 @@ export default {
return {
tabulatorOptions: {
ajaxURL: 'dummy',
ajaxRequestFunc: this.endpoint.getAllBetriebsmittel,
ajaxParams: () => {
return {
type: this.typeId,
id: this.id
};
},
ajaxRequestFunc: () => this.$api.call(
this.endpoint.getAllBetriebsmittel(this.typeId, this.id)
),
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Nummer", field: "nummer", width: 150},
{title: "PersonId", field: "person_id", visible: false},
{title: "Typ", field: "betriebsmitteltyp", width: 125},
{title: "Anmerkung", field: "anmerkung", visible: false},
{title: "Retourdatum", field: "format_retour", width: 128},
{
title: "Retourdatum",
field: "retouram",
width: 128,
formatter: function (cell) {
const dateStr = cell.getValue();
if (!dateStr) return "";
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour12: false
});
}
},
{title: "Beschreibung", field: "beschreibung"},
{title: "UID", field: "uid", width: 87},
{title: "Kaution", field: "kaution", visible: false},
{title: "Ausgabedatum", field: "format_ausgabe", width: 144, visible: false},
{
title: "Ausgabedatum",
field: "ausgegebenam",
width: 144,
visible: false,
formatter: function (cell) {
const dateStr = cell.getValue();
if (!dateStr) return "";
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour12: false
});
}
},
{title: "Betriebsmittel ID", field: "betriebsmittel_id", visible: false},
{title: "Betriebsmittelperson ID", field: "betriebsmittelperson_id", visible: false},
{
@@ -66,7 +95,7 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-print"></i>';
button.title = bernahmebestätigung drucken';
button.title = this.$p.t('betriebsmittel', 'btn_printUebernahmebestaetigung');
let cellData = cell.getData();
button.addEventListener(
'click',
@@ -82,7 +111,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Betriebsmittel bearbeiten';
button.title = this.$p.t('betriebsmittel', 'btn_editBetriebsmittel');
button.addEventListener(
'click',
(event) =>
@@ -93,7 +122,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Betriebsmittel löschen';
button.title = this.$p.t('betriebsmittel', 'btn_deleteBetriebsmittel');
button.addEventListener(
'click',
() =>
@@ -117,26 +146,43 @@ export default {
event: 'tableBuilt',
handler: async() => {
await this.$p.loadCategory(['wawi', 'global', 'infocenter']);
await this.$p.loadCategory(['wawi', 'global', 'infocenter', 'betriebsmittel', 'person']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('nummer').component.updateDefinition({
title: this.$p.t('wawi', 'nummer')
});
cm.getColumnByField('betriebsmitteltyp').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('format_retour').component.updateDefinition({
cm.getColumnByField('retouram').component.updateDefinition({
title: this.$p.t('wawi', 'retourdatum')
});
cm.getColumnByField('beschreibung').component.updateDefinition({
title: this.$p.t('global', 'beschreibung')
});
cm.getColumnByField('kaution').component.updateDefinition({
title: this.$p.t('infocenter', 'kaution')
});
cm.getColumnByField('format_ausgabe').component.updateDefinition({
cm.getColumnByField('ausgegebenam').component.updateDefinition({
title: this.$p.t('wawi', 'ausgabedatum')
});
cm.getColumnByField('betriebsmittel_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittel_id')
});
cm.getColumnByField('betriebsmittelperson_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittelperson_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('uid').component.updateDefinition({
title: this.$p.t('person', 'uid')
});
}
}
],
@@ -171,7 +217,9 @@ export default {
.then(result => result
? betriebsmittelperson_id
: Promise.reject({handled: true}))
.then(this.endpoint.deleteBetriebsmittel)
.then(betriebsmittelperson_id => this.$api.call(
this.endpoint.deleteBetriebsmittel(betriebsmittelperson_id))
)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
window.scrollTo(0, 0);
@@ -184,8 +232,8 @@ export default {
this.formData.uid = this.uid;
if (this.formData.betriebsmitteltyp == 'Inventar')
this.formData.betriebsmittel_id = this.formData.inventarData?.betriebsmittel_id;
return this.endpoint
.addNewBetriebsmittel(this.$refs.betriebsmittelData, this.id, this.formData)
return this.$refs.betriebsmittelData
.call(this.endpoint.addNewBetriebsmittel(this.id, this.formData))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.betriebsmittelModal.hide();
@@ -198,8 +246,11 @@ export default {
updateBetriebsmittel(betriebsmittelperson_id) {
if (this.formData.betriebsmitteltyp == 'Inventar')
this.formData.betriebsmittel_id = this.formData.inventarData?.betriebsmittel_id;
return this.endpoint
.updateBetriebsmittel(this.$refs.betriebsmittelData, betriebsmittelperson_id, this.formData)
return this.$refs.betriebsmittelData
.call(this.endpoint.updateBetriebsmittel(
betriebsmittelperson_id,
this.formData
))
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.betriebsmittelModal.hide();
@@ -212,8 +263,8 @@ export default {
loadBetriebsmittel(betriebsmittelperson_id) {
this.resetModal();
this.statusNew = false;
return this.endpoint
.loadBetriebsmittel(betriebsmittelperson_id)
return this.$api
.call(this.endpoint.loadBetriebsmittel(betriebsmittelperson_id))
.then(result => {
this.formData = result.data;
})
@@ -221,8 +272,8 @@ export default {
},
searchInventar(event) {
const encodedQuery = encodeURIComponent(event.query);
return this.endpoint
.loadInventarliste(encodedQuery)
return this.$api
.call(this.endpoint.loadInventarliste(encodedQuery))
.then(result => {
this.filteredInventar = result.data;
});
@@ -244,8 +295,8 @@ export default {
}
},
created() {
return this.endpoint
.getTypenBetriebsmittel()
return this.$api
.call(this.endpoint.getTypenBetriebsmittel())
.then(result => {
this.listBetriebsmitteltyp = result.data;
})
@@ -261,7 +312,7 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Betriebsmittel"
:new-btn-label="this.$p.t('ui', 'betriebsmittel')"
@click:new="actionNewBetriebsmittel"
>
</core-filter-cmpt>
@@ -278,7 +329,7 @@ export default {
<div class="row mb-3">
<form-input
type="select"
:label="$p.t('global/typ')"
:label="$p.t('global/typ') + ' *'"
name="betriebsmitteltyp"
v-model="formData.betriebsmitteltyp"
:disabled="!statusNew"
+1
View File
@@ -1,6 +1,7 @@
import BsModal from './Modal.js';
export default {
name: 'BootstrapAlert',
components: {
BsModal
},
@@ -1,6 +1,7 @@
import BsAlert from './Alert.js';
export default {
name: 'BootstrapConfirm',
mixins: [
BsAlert
],
+9 -4
View File
@@ -1,6 +1,7 @@
import Phrasen from '../../plugin/Phrasen.js';
//import Phrasen from '../../plugin/Phrasen.js';
export default {
name: 'BootstrapModal',
data: () => ({
modal: null
}),
@@ -77,6 +78,7 @@ export default {
return new Promise((resolve,reject) => {
const instance = Vue.createApp({
name: 'ModalTmpApp',
setup() {
return () => Vue.h(BsModal, {...{
class: 'fade'
@@ -104,9 +106,12 @@ export default {
instance.use(primevue.config.default, {zIndex: {overlay: 9999}})
}
instance.use(Phrasen); // TODO(chris): find a more dynamic way
instance.mount(wrapper);
document.body.appendChild(wrapper);
//instance.use(Phrasen); // TODO(chris): find a more dynamic way
import('../../plugins/Phrasen.js').then((Phrasen) => {
instance.use(Phrasen.default);
instance.mount(wrapper);
document.body.appendChild(wrapper);
});
});
},
template: `<div ref="modal" class="bootstrap-modal modal" tabindex="-1" @[\`hide.bs.modal\`]="$emit('hideBsModal')" @[\`hidden.bs.modal\`]="$emit('hiddenBsModal')" @[\`hidePrevented.bs.modal\`]="$emit('hidePreventedBsModal')" @[\`show.bs.modal\`]="$emit('showBsModal')" >

Some files were not shown because too many files have changed in this diff Show More