mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 15:04:04 +00:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f48bc4992 | ||
|
|
95c3354886 | ||
|
|
8d58bef718 |
@@ -215,6 +215,17 @@ class Student extends FHCAPI_Controller
|
||||
]
|
||||
);
|
||||
|
||||
$this->form_validation->set_rules('verband', 'Verband', 'callback_validateDropdown', [
|
||||
'validateDropdown' => $this->p->t('ui', 'error_fieldRequired', ['dropdown' => 'Verband'])
|
||||
]);
|
||||
$this->form_validation->set_rules('semester', 'Semester', 'callback_validateDropdown', [
|
||||
'validateDropdown' => $this->p->t('ui', 'error_fieldRequired', ['dropdown' => 'Semester'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('gruppe', 'Gruppe', 'callback_validateDropdown', [
|
||||
'validateDropdown' => $this->p->t('ui', 'error_fieldRequired', ['dropdown' => 'Gruppe'])
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('alias', 'Alias', 'regex_match[/^[-a-z0-9\_\.]*[a-z0-9]{1,}\.[-a-z0-9\_]{1,}$/]',
|
||||
[
|
||||
'regex_match' => $this->p->t('ui', 'error_fieldInvalidAlias')
|
||||
@@ -790,6 +801,13 @@ class Student extends FHCAPI_Controller
|
||||
return !!$value;
|
||||
}
|
||||
|
||||
public function validateDropdown($value)
|
||||
{
|
||||
if ($value === false || $value === 'false')
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates input data. Terminates with validation errors, if invalid.
|
||||
*/
|
||||
|
||||
@@ -360,7 +360,8 @@ class Benutzerfunktion_model extends DB_Model
|
||||
SELECT DISTINCT ps.prestudent_id, bf.datum_von, bf.datum_bis
|
||||
FROM public.tbl_benutzerfunktion bf
|
||||
JOIN public.tbl_benutzer bn USING (uid)
|
||||
JOIN public.tbl_prestudent ps USING (person_id)
|
||||
JOIN public.tbl_student stud ON (stud.student_uid = bn.uid)
|
||||
JOIN public.tbl_prestudent ps USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
@@ -387,10 +388,11 @@ class Benutzerfunktion_model extends DB_Model
|
||||
public function isJgv($semester, $prestudent_id)
|
||||
{
|
||||
$query = "
|
||||
SELECT ps.prestudent_id, ss.start as von, ss.ende as bis
|
||||
SELECT DISTINCT ps.prestudent_id, bf.datum_von, bf.datum_bis
|
||||
FROM public.tbl_benutzerfunktion bf
|
||||
JOIN public.tbl_benutzer bn USING (uid)
|
||||
JOIN public.tbl_prestudent ps USING (person_id)
|
||||
JOIN public.tbl_student stud ON (stud.student_uid = bn.uid)
|
||||
JOIN public.tbl_prestudent ps USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||
WHERE ss.studiensemester_kurzbz = ?
|
||||
|
||||
@@ -115,11 +115,31 @@ export default {
|
||||
this.$refs.newGroupModal.show()
|
||||
},
|
||||
changeLvb(params) {
|
||||
let data = { semester: params.semester };
|
||||
if (params.verband && params.verband != " ") {
|
||||
data.verband = params.verband;
|
||||
if (params.gruppe && params.gruppe != " ")
|
||||
data.gruppe = params.gruppe;
|
||||
let data = {
|
||||
semester: params.semester,
|
||||
verband: params.verband,
|
||||
gruppe: params.gruppe
|
||||
};
|
||||
if (params.verband == null)
|
||||
{
|
||||
data.verband = "";
|
||||
if (params.gruppe == null)
|
||||
data.gruppe = "";
|
||||
}
|
||||
|
||||
const dropdowns = {
|
||||
semester: this.$p.t('lehre/semester'),
|
||||
verband: this.$p.t('lehre/verband'),
|
||||
gruppe: this.$p.t('lehre/gruppe')
|
||||
};
|
||||
|
||||
for (const [key, label] of Object.entries(dropdowns)) {
|
||||
if (params[key] === false) {
|
||||
this.$fhcAlert.alertError(
|
||||
this.$p.t('ui/alert_chooseEntry', { dropdown: label })
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let endpoint;
|
||||
|
||||
@@ -17,8 +17,8 @@ export default {
|
||||
return {
|
||||
lvbList: [],
|
||||
selectedSemester: false,
|
||||
selectedVerband: false,
|
||||
selectedGruppe: false
|
||||
selectedVerband: undefined, //to distinguish from null and false
|
||||
selectedGruppe: undefined //to distinguish from null and false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -63,11 +63,10 @@ export default {
|
||||
get() {
|
||||
if (this.semester === false)
|
||||
return false;
|
||||
if (this.selectedVerband !== false) {
|
||||
if (this.lvbListVerband.some(item => item.verband == this.selectedVerband))
|
||||
return this.selectedVerband;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.selectedVerband !== undefined)
|
||||
return this.selectedVerband;
|
||||
|
||||
if (Array.isArray(this.students)) {
|
||||
const first = this.students.find(Boolean);
|
||||
if (this.lvbListVerband.every(item => item.verband != first.verband))
|
||||
@@ -86,13 +85,11 @@ export default {
|
||||
},
|
||||
gruppe: {
|
||||
get() {
|
||||
if (this.verband === false)
|
||||
return false;
|
||||
if (this.selectedGruppe !== false) {
|
||||
if (this.lvbListGruppe.some(item => item.gruppe == this.selectedGruppe))
|
||||
return this.selectedGruppe;
|
||||
return false;
|
||||
}
|
||||
if (this.verband === false || this.verband === null)
|
||||
return null;
|
||||
if (this.selectedGruppe !== undefined)
|
||||
return this.selectedGruppe;
|
||||
|
||||
if (Array.isArray(this.students)) {
|
||||
const first = this.students.find(Boolean);
|
||||
if (this.lvbListGruppe.every(item => item.gruppe != first.gruppe))
|
||||
@@ -195,6 +192,7 @@ export default {
|
||||
v-model="semester"
|
||||
class="form-select"
|
||||
>
|
||||
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||
<option v-for="semester in stgSemester">{{ semester }}</option>
|
||||
</select>
|
||||
<span
|
||||
@@ -208,25 +206,27 @@ export default {
|
||||
class="form-select"
|
||||
:disabled="semester === false"
|
||||
>
|
||||
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||
<option v-for="verband in semesterVerband">{{ verband }}</option>
|
||||
<option :value="null"></option>
|
||||
</select>
|
||||
<span
|
||||
class="input-group-text"
|
||||
:class="{'text-muted': verband === false}"
|
||||
>
|
||||
{{ $p.t('lehre/gruppe') }}
|
||||
</span>
|
||||
<select
|
||||
v-model="gruppe"
|
||||
class="form-select"
|
||||
:disabled="verband === false"
|
||||
>
|
||||
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||
<option v-for="gruppe in verbandGruppe">{{ gruppe }}</option>
|
||||
<option :value="null"></option>
|
||||
</select>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
:disabled="gruppe === false && verband === false"
|
||||
>
|
||||
{{ $p.t('ui/change') }}
|
||||
</button>
|
||||
|
||||
@@ -65,6 +65,12 @@ export default {
|
||||
} else {
|
||||
const { semester, verband, gruppe } = drop;
|
||||
const params = { semester, verband, gruppe };
|
||||
//if the student is dragged into a parent category (eg.BEL-1), reset verband, gruppe to ""
|
||||
if (!params.verband)
|
||||
params.verband = "";
|
||||
if (!params.gruppe)
|
||||
params.gruppe = "";
|
||||
|
||||
endpoint = drag.map(student => [
|
||||
this.getStudentAjaxId(student),
|
||||
ApiStvDetails.saveStudent(
|
||||
|
||||
@@ -62551,6 +62551,26 @@ I have been informed that I am under no obligation to consent to the transmissio
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'alert_chooseEntry',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte einen Wert aus dem DropDown {dropdown} wählen!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please select a value of dropdown {dropdown}!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'lehre',
|
||||
|
||||
Reference in New Issue
Block a user