mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 00:24:35 +00:00
Merge branch 'feature-69176/Studierendenverwaltung_Berichte' into studvw_2025-11_rc2
This commit is contained in:
@@ -183,6 +183,7 @@ class Verband extends FHCAPI_Controller
|
|||||||
$this->StudiengangModel->addOrder('semester');
|
$this->StudiengangModel->addOrder('semester');
|
||||||
|
|
||||||
if ($org_form !== null) {
|
if ($org_form !== null) {
|
||||||
|
$this->StudiengangModel->addSelect("v.orgform_kurzbz");
|
||||||
$this->StudiengangModel->db->group_start();
|
$this->StudiengangModel->db->group_start();
|
||||||
$this->StudiengangModel->db->where('v.semester', 0);
|
$this->StudiengangModel->db->where('v.semester', 0);
|
||||||
$this->StudiengangModel->db->or_where('v.orgform_kurzbz', $org_form);
|
$this->StudiengangModel->db->or_where('v.orgform_kurzbz', $org_form);
|
||||||
|
|||||||
@@ -16,11 +16,15 @@
|
|||||||
padding: .5rem 1rem;
|
padding: .5rem 1rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
.fhc-app-menu li a.disabled {
|
||||||
|
--bs-link-opacity: .5;
|
||||||
|
}
|
||||||
.fhc-app-menu li a.active,
|
.fhc-app-menu li a.active,
|
||||||
.fhc-app-menu li a:hover {
|
.fhc-app-menu li a:hover {
|
||||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||||
background: var(--surface-hover);
|
background: var(--surface-hover);
|
||||||
}
|
}
|
||||||
|
.fhc-app-menu li a.disabled,
|
||||||
.fhc-app-menu li a.active {
|
.fhc-app-menu li a.active {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,5 +64,6 @@ export default {
|
|||||||
{{ menu.description }}
|
{{ menu.description }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<slot />
|
||||||
</ul>`
|
</ul>`
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -133,6 +133,8 @@ export default {
|
|||||||
studiengangKz: undefined,
|
studiengangKz: undefined,
|
||||||
studiengangKuerzel: '',
|
studiengangKuerzel: '',
|
||||||
studiensemesterKurzbz: this.defaultSemester,
|
studiensemesterKurzbz: this.defaultSemester,
|
||||||
|
selected_semester: undefined,
|
||||||
|
selected_orgform: undefined,
|
||||||
lists: {
|
lists: {
|
||||||
nations: [],
|
nations: [],
|
||||||
sprachen: [],
|
sprachen: [],
|
||||||
@@ -141,6 +143,44 @@ export default {
|
|||||||
verbandEndpoint: ApiStvVerband
|
verbandEndpoint: ApiStvVerband
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
appMenuExtraItems() {
|
||||||
|
const extraItems = [];
|
||||||
|
|
||||||
|
if (this.studiengangKz !== undefined && this.selected_semester !== undefined) {
|
||||||
|
const studiengang_kz = String(this.studiengangKz);
|
||||||
|
const semester = String(this.selected_semester);
|
||||||
|
const orgform = this.selected_orgform || '';
|
||||||
|
|
||||||
|
extraItems.push({
|
||||||
|
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||||
|
+ 'content/statistik/notenspiegel.php?type=xls'
|
||||||
|
+ '&studiengang_kz=' + studiengang_kz
|
||||||
|
+ '&semester=' + semester
|
||||||
|
+ '&orgform=' + orgform,
|
||||||
|
description: 'stv/grade_report_xls'
|
||||||
|
});
|
||||||
|
extraItems.push({
|
||||||
|
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||||
|
+ 'content/statistik/notenspiegel_erweitert.php?typ=xls'
|
||||||
|
+ '&studiengang_kz=' + studiengang_kz
|
||||||
|
+ '&semester=' + semester
|
||||||
|
+ '&orgform=' + orgform,
|
||||||
|
description: 'stv/grade_report_xls_extended'
|
||||||
|
});
|
||||||
|
extraItems.push({
|
||||||
|
link: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||||
|
+ 'content/statistik/notenspiegel.php?type=html'
|
||||||
|
+ '&studiengang_kz=' + studiengang_kz
|
||||||
|
+ '&semester=' + semester
|
||||||
|
+ '&orgform=' + orgform,
|
||||||
|
description: 'stv/grade_report_html'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return extraItems;
|
||||||
|
}
|
||||||
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'url_studiensemester_kurzbz': function (newVal, oldVal) {
|
'url_studiensemester_kurzbz': function (newVal, oldVal) {
|
||||||
if (newVal !== oldVal) {
|
if (newVal !== oldVal) {
|
||||||
@@ -211,7 +251,7 @@ export default {
|
|||||||
+ data.person_id
|
+ data.person_id
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
onSelectVerband( {link, studiengang_kz}) {
|
onSelectVerband({ link, studiengang_kz, semester, orgform_kurzbz }) {
|
||||||
let urlpath = String(link);
|
let urlpath = String(link);
|
||||||
if (!urlpath.match(/\/prestudent/))
|
if (!urlpath.match(/\/prestudent/))
|
||||||
{
|
{
|
||||||
@@ -220,6 +260,8 @@ export default {
|
|||||||
this.$refs.stvList.updateUrl(ApiStv.students.verband(urlpath));
|
this.$refs.stvList.updateUrl(ApiStv.students.verband(urlpath));
|
||||||
|
|
||||||
this.studiengangKz = studiengang_kz;
|
this.studiengangKz = studiengang_kz;
|
||||||
|
this.selected_semester = semester;
|
||||||
|
this.selected_orgform = orgform_kurzbz;
|
||||||
const stg = this.lists.stgs.find((element) => {
|
const stg = this.lists.stgs.find((element) => {
|
||||||
return (element.studiengang_kz === this.studiengangKz);
|
return (element.studiengang_kz === this.studiengangKz);
|
||||||
});
|
});
|
||||||
@@ -511,7 +553,31 @@ export default {
|
|||||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" :aria-label="$p.t('ui/schliessen')"></button>
|
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" :aria-label="$p.t('ui/schliessen')"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="offcanvas-body">
|
<div class="offcanvas-body">
|
||||||
<app-menu app-identifier="stv" />
|
<app-menu app-identifier="stv">
|
||||||
|
<li class="dropend">
|
||||||
|
<a
|
||||||
|
class="dropdown-toggle"
|
||||||
|
href="#"
|
||||||
|
role="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false"
|
||||||
|
:class="{ disabled: !appMenuExtraItems.length }"
|
||||||
|
data-bs-popper-config='{"strategy":"fixed"}'
|
||||||
|
>
|
||||||
|
{{ $p.t('stv/grade_report') }}
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu p-0">
|
||||||
|
<li
|
||||||
|
v-for="(item, key) in appMenuExtraItems"
|
||||||
|
:key="key"
|
||||||
|
>
|
||||||
|
<a class="dropdown-item" :href="item.link" target="_blank">
|
||||||
|
{{ $p.t(item.description) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</app-menu>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
<nav id="sidebarMenu" class="bg-light offcanvas offcanvas-start col-md p-md-0 h-100">
|
<nav id="sidebarMenu" class="bg-light offcanvas offcanvas-start col-md p-md-0 h-100">
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ export default {
|
|||||||
},
|
},
|
||||||
onSelectTreeNode(node) {
|
onSelectTreeNode(node) {
|
||||||
if (node.data.link)
|
if (node.data.link)
|
||||||
this.$emit('selectVerband', {link: node.data.link, studiengang_kz: node.data.stg_kz});
|
this.$emit('selectVerband', {link: node.data.link, studiengang_kz: node.data.stg_kz, semester: node.data.semester, orgform_kurzbz: node.data.orgform_kurzbz});
|
||||||
},
|
},
|
||||||
mapNodesToNoSemReloadNodes(result, node) {
|
mapNodesToNoSemReloadNodes(result, node) {
|
||||||
if (node.data.no_sem_reload)
|
if (node.data.no_sem_reload)
|
||||||
|
|||||||
@@ -39360,6 +39360,86 @@ array(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'app' => 'core',
|
||||||
|
'category' => 'stv',
|
||||||
|
'phrase' => 'grade_report',
|
||||||
|
'insertvon' => 'system',
|
||||||
|
'phrases' => array(
|
||||||
|
array(
|
||||||
|
'sprache' => 'German',
|
||||||
|
'text' => 'Notenspiegel',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sprache' => 'English',
|
||||||
|
'text' => 'Grade report',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'app' => 'core',
|
||||||
|
'category' => 'stv',
|
||||||
|
'phrase' => 'grade_report_xls',
|
||||||
|
'insertvon' => 'system',
|
||||||
|
'phrases' => array(
|
||||||
|
array(
|
||||||
|
'sprache' => 'German',
|
||||||
|
'text' => 'Notenspiegel EXCEL',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sprache' => 'English',
|
||||||
|
'text' => 'Grade report EXCEL',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'app' => 'core',
|
||||||
|
'category' => 'stv',
|
||||||
|
'phrase' => 'grade_report_xls_extended',
|
||||||
|
'insertvon' => 'system',
|
||||||
|
'phrases' => array(
|
||||||
|
array(
|
||||||
|
'sprache' => 'German',
|
||||||
|
'text' => 'Notenspiegel erweitert EXCEL',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sprache' => 'English',
|
||||||
|
'text' => 'Grade report extended EXCEL',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'app' => 'core',
|
||||||
|
'category' => 'stv',
|
||||||
|
'phrase' => 'grade_report_html',
|
||||||
|
'insertvon' => 'system',
|
||||||
|
'phrases' => array(
|
||||||
|
array(
|
||||||
|
'sprache' => 'German',
|
||||||
|
'text' => 'Notenspiegel HTML',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sprache' => 'English',
|
||||||
|
'text' => 'Grade report HTML',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'app' => 'core',
|
'app' => 'core',
|
||||||
'category' => 'stv',
|
'category' => 'stv',
|
||||||
|
|||||||
Reference in New Issue
Block a user