mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 15:04:04 +00:00
Merge branch 'master' into feature/78128-quick-copy-full-name-and-title
This commit is contained in:
@@ -197,3 +197,11 @@ $config['unterbrechung_enabled'] = true;
|
||||
*/
|
||||
$config['wiederholung_enabled'] = true;
|
||||
|
||||
/**
|
||||
* Modal with Infotext of TLC
|
||||
* if true, there will be shown an info modal in the studentsView after the first button ABMELDUNG
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
$config['showInfoModalAbmeldung'] = true;
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@ class Mylv extends Auth_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'Student' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Studiensemester' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Lvs' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Info' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Pruefungen' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
|
||||
'Student' => self::PERM_LOGGED,
|
||||
'Studiensemester' => self::PERM_LOGGED,
|
||||
'Lvs' => self::PERM_LOGGED,
|
||||
'Info' => self::PERM_LOGGED,
|
||||
'Pruefungen' => self::PERM_LOGGED
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,8 @@ class Studierendenantrag extends FHC_Controller
|
||||
|
||||
// Load language phrases
|
||||
$this->loadPhrases([
|
||||
'studierendenantrag'
|
||||
'studierendenantrag',
|
||||
'ui'
|
||||
]);
|
||||
|
||||
$this->load->config('studierendenantrag');
|
||||
|
||||
@@ -30,6 +30,12 @@ if(defined('CIS4')){
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
$config = $this->load->config('studierendenantrag');
|
||||
$showInfoModalAbmeldung = $this->config->item('showInfoModalAbmeldung');
|
||||
?>
|
||||
|
||||
<div id="wrapper">
|
||||
|
||||
<div class="fhc-header">
|
||||
@@ -43,17 +49,75 @@ if(defined('CIS4')){
|
||||
<h4><?= $array['bezeichnungStg']; ?> (<?= $array['bezeichnungOrgform']; ?>)</h4>
|
||||
|
||||
<?php foreach ($array['allowedNewTypes'] as $type) { ?>
|
||||
|
||||
<div class="alert alert-secondary">
|
||||
<p><?= $this->p->t('studierendenantrag', 'calltoaction_' . $type); ?></p>
|
||||
<hr>
|
||||
<a
|
||||
href="<?= site_url('lehre/Studierendenantrag/' . strtolower($type) . '/' . $prestudent_id); ?>"
|
||||
class="btn btn-outline-secondary"
|
||||
>
|
||||
<i class="fa fa-plus"></i> <?= $this->p->t('studierendenantrag', 'antrag_typ_' . $type); ?>
|
||||
</a>
|
||||
<p><?= $this->p->t('studierendenantrag', 'calltoaction_' . $type); ?></p>
|
||||
<hr>
|
||||
<?php
|
||||
if($type == 'Abmeldung' && $showInfoModalAbmeldung){
|
||||
$href = "#modalinfo" . $prestudent_id;
|
||||
}
|
||||
else
|
||||
$href = site_url('lehre/Studierendenantrag/' . strtolower($type) . '/' . $prestudent_id);
|
||||
?>
|
||||
|
||||
<a
|
||||
href="<?= $href ?>"
|
||||
class="btn btn-outline-secondary"
|
||||
<?php if($type == 'Abmeldung' && $showInfoModalAbmeldung): ?>
|
||||
data-bs-toggle="modal"
|
||||
<?php endif; ?>
|
||||
>
|
||||
<i class="fa fa-plus"></i> <?= $this->p->t('studierendenantrag', 'antrag_typ_' . $type); ?>
|
||||
</a>
|
||||
|
||||
<!-- Modal -->
|
||||
<div
|
||||
class="modal fade"
|
||||
id="modalinfo<?= $prestudent_id; ?>"
|
||||
tabindex="-1"
|
||||
aria-labelledby="modalinfoLabel<?= $prestudent_id; ?>"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5
|
||||
class="modal-title"
|
||||
id="modalinfoLabel<?= $prestudent_id; ?>"
|
||||
> <?= $this->p->t('studierendenantrag', 'info_consultation'); ?>
|
||||
</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php
|
||||
$hrefUnterbrechung = site_url('lehre/Studierendenantrag/unterbrechung/' . $prestudent_id);
|
||||
?>
|
||||
<div class="modal-body">
|
||||
<div
|
||||
class="form-control"
|
||||
style="width: 100%; height: 250px;overflow:auto; white-space: normal;"
|
||||
><?= $this->p->t('studierendenantrag', 'modalHinweistext_Abmeldung', ['linkUnterbrechung' => $hrefUnterbrechung] ); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-outline-primary" data-bs-dismiss="modal"><?= $this->p->t('ui', 'cancel'); ?></button>
|
||||
<a
|
||||
href="<?= site_url('lehre/Studierendenantrag/abmeldung/' . $prestudent_id); ?>"
|
||||
class="btn btn-outline-primary"
|
||||
> <?= $this->p->t('studierendenantrag', 'link_Abmeldung'); ?>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
@@ -205,7 +269,7 @@ if(defined('CIS4')){
|
||||
</a>
|
||||
<lv-popup
|
||||
id="modallv<?= $antrag->studierendenantrag_id; ?>"
|
||||
antrag-id = "<?= $antrag->studierendenantrag_id; ?>"
|
||||
:antrag-id = "<?= $antrag->studierendenantrag_id; ?>"
|
||||
>
|
||||
<?= $this->p->t('studierendenantrag', 'my_lvs'); ?>
|
||||
</lv-popup>
|
||||
|
||||
@@ -402,7 +402,7 @@ export default {
|
||||
name="foto"
|
||||
@actionbutton-clicked="sendInfomail"
|
||||
>
|
||||
<img alt="No Image" :src="noImageSrc" class="w-100">
|
||||
<img alt="No Image" :src="noImageSrc" />
|
||||
</form-input>
|
||||
<form-input
|
||||
v-if="!config.hiddenFields.includes('anmerkung')"
|
||||
|
||||
@@ -31,6 +31,11 @@ export default {
|
||||
teacherLoaded: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
gradeListLink() {
|
||||
return this.$api.getUri('/person/gradelist/index/' + this.modelValue.uid);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reload() {
|
||||
this.$refs.zeugnis.$refs.table.reloadTable();
|
||||
@@ -69,13 +74,21 @@ export default {
|
||||
const savedPath = window.localStorage.getItem(LOCAL_STORAGE_ID);
|
||||
this.stdsem = savedPath || '';
|
||||
},
|
||||
template: `
|
||||
template: /* html */`
|
||||
<div class="stv-details-noten d-flex flex-column overflow-hidden">
|
||||
<div class="mb-3">
|
||||
<select class="form-select" v-model="stdsem" @input="saveStdsem">
|
||||
<option value="">{{ $p.t('ui/current_semester') }}</option>
|
||||
<option value="true">{{ $p.t('ui/all_semester') }}</option>
|
||||
</select>
|
||||
<div class="d-flex justify-content-between my-2">
|
||||
<div>
|
||||
<select class="form-select" v-model="stdsem" @input="saveStdsem">
|
||||
<option value="">{{ $p.t('ui/current_semester') }}</option>
|
||||
<option value="true">{{ $p.t('ui/all_semester') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<a :href="gradeListLink" target="_blank">
|
||||
{{ $p.t('stv/grades_gradelist') }}
|
||||
<i class="fa-solid fa-arrow-up-right-from-square"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
|
||||
@@ -107,7 +107,6 @@ export const CoreFilterCmpt = {
|
||||
default: [],
|
||||
},
|
||||
},
|
||||
inject: ["language"],
|
||||
data: function () {
|
||||
return {
|
||||
uuid: 0,
|
||||
@@ -247,6 +246,9 @@ export const CoreFilterCmpt = {
|
||||
...{ title: filterTitles[el.name] },
|
||||
}));
|
||||
},
|
||||
language() {
|
||||
return this.$p.user_language;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
"language.value": {
|
||||
@@ -917,7 +919,23 @@ export const CoreFilterCmpt = {
|
||||
if (!this.tableBuilt) {
|
||||
return {};
|
||||
} else if (this.tabulator.options.locale) {
|
||||
return this.tabulator.getLang().columns;
|
||||
let result = this.tabulator.getLang().columns;
|
||||
const columnFieldTitlePairs = this.tabulator
|
||||
.getColumns()
|
||||
.map((column) => {
|
||||
const definition = column.getDefinition();
|
||||
return [definition.field, definition.title];
|
||||
});
|
||||
columnFieldTitlePairs.forEach((fieldTitlePair) => {
|
||||
if (
|
||||
fieldTitlePair[0]?.length &&
|
||||
fieldTitlePair[1]?.length &&
|
||||
!(fieldTitlePair[0] in result)
|
||||
) {
|
||||
result[fieldTitlePair[0]] = fieldTitlePair[1];
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
return this.tabulator.getColumns().reduce((res, col) => {
|
||||
res[col.getField()] = col.getDefinition().title;
|
||||
|
||||
@@ -41596,6 +41596,26 @@ array(
|
||||
)
|
||||
),
|
||||
// grades
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'stv',
|
||||
'phrase' => 'grades_gradelist',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienverlauf',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Grade list',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'stv',
|
||||
@@ -62325,6 +62345,72 @@ I have been informed that I am under no obligation to consent to the transmissio
|
||||
)
|
||||
),
|
||||
// StudVw legacy Bis Links ende
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
'phrase' => 'link_Abmeldung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Weiter zur Abmeldung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Continue to De-registration',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
'phrase' => 'modalHinweistext_Abmeldung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Bevor du deine Abmeldung abschließt, möchten wir dir gerne ein Gespräch anbieten. Vielleicht gibt es Fragen, Unsicherheiten oder Herausforderungen, bei denen wir dich unterstützen können.<br>
|
||||
<br>Du kannst dich jederzeit unverbindlich an deine Studiengangsassistenz, Studiengangsleitung oder das <a href='https://cis.technikum-wien.at/cis.php/CisVue/Cms/content/9248' target='_blank'>Student Support Team</a> wenden. Ein Gespräch ist natürlich freiwillig – manchmal hilft es aber, gemeinsam Optionen zu besprechen, zum Beispiel auch eine vorübergehende
|
||||
<a href={linkUnterbrechung} target='_blank'>Studienunterbrechung</a>.
|
||||
<br><br>Wenn du deine Abmeldung fortsetzen möchtest, kannst du das selbstverständlich tun.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "Before you finalize your deregistration, we would like to offer you a consultation. Perhaps you have questions, uncertainties, or challenges that we can help you with. <br>
|
||||
<br>You can contact your program assistant, program director, or the <a href='https://cis.technikum-wien.at/cis.php/CisVue/Cms/content/9248' target='_blank'>Student Support Team</a> at any time without obligation. A consultation is, of course, voluntary; however, sometimes it helps to discuss options together, such as a
|
||||
<a href={linkUnterbrechung} target='_blank'>temporary break</a> from your studies.
|
||||
<br><br>If you wish to proceed with your deregistration, you can, of course, do so.",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
'phrase' => 'info_consultation',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hinweis Beratungsgespräch',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Note Consultation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user