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,}$/]',
|
$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')
|
'regex_match' => $this->p->t('ui', 'error_fieldInvalidAlias')
|
||||||
@@ -790,6 +801,13 @@ class Student extends FHCAPI_Controller
|
|||||||
return !!$value;
|
return !!$value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function validateDropdown($value)
|
||||||
|
{
|
||||||
|
if ($value === false || $value === 'false')
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validates input data. Terminates with validation errors, if invalid.
|
* 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
|
SELECT DISTINCT ps.prestudent_id, bf.datum_von, bf.datum_bis
|
||||||
FROM public.tbl_benutzerfunktion bf
|
FROM public.tbl_benutzerfunktion bf
|
||||||
JOIN public.tbl_benutzer bn USING (uid)
|
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_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||||
WHERE ss.studiensemester_kurzbz = ?
|
WHERE ss.studiensemester_kurzbz = ?
|
||||||
@@ -387,10 +388,11 @@ class Benutzerfunktion_model extends DB_Model
|
|||||||
public function isJgv($semester, $prestudent_id)
|
public function isJgv($semester, $prestudent_id)
|
||||||
{
|
{
|
||||||
$query = "
|
$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
|
FROM public.tbl_benutzerfunktion bf
|
||||||
JOIN public.tbl_benutzer bn USING (uid)
|
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_prestudentstatus pss ON (ps.prestudent_id = pss.prestudent_id)
|
||||||
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
JOIN public.tbl_studiensemester ss ON (pss.studiensemester_kurzbz = ss.studiensemester_kurzbz)
|
||||||
WHERE ss.studiensemester_kurzbz = ?
|
WHERE ss.studiensemester_kurzbz = ?
|
||||||
|
|||||||
@@ -115,11 +115,31 @@ export default {
|
|||||||
this.$refs.newGroupModal.show()
|
this.$refs.newGroupModal.show()
|
||||||
},
|
},
|
||||||
changeLvb(params) {
|
changeLvb(params) {
|
||||||
let data = { semester: params.semester };
|
let data = {
|
||||||
if (params.verband && params.verband != " ") {
|
semester: params.semester,
|
||||||
data.verband = params.verband;
|
verband: params.verband,
|
||||||
if (params.gruppe && params.gruppe != " ")
|
gruppe: params.gruppe
|
||||||
data.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;
|
let endpoint;
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ export default {
|
|||||||
return {
|
return {
|
||||||
lvbList: [],
|
lvbList: [],
|
||||||
selectedSemester: false,
|
selectedSemester: false,
|
||||||
selectedVerband: false,
|
selectedVerband: undefined, //to distinguish from null and false
|
||||||
selectedGruppe: false
|
selectedGruppe: undefined //to distinguish from null and false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -63,11 +63,10 @@ export default {
|
|||||||
get() {
|
get() {
|
||||||
if (this.semester === false)
|
if (this.semester === false)
|
||||||
return false;
|
return false;
|
||||||
if (this.selectedVerband !== false) {
|
|
||||||
if (this.lvbListVerband.some(item => item.verband == this.selectedVerband))
|
if (this.selectedVerband !== undefined)
|
||||||
return this.selectedVerband;
|
return this.selectedVerband;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (Array.isArray(this.students)) {
|
if (Array.isArray(this.students)) {
|
||||||
const first = this.students.find(Boolean);
|
const first = this.students.find(Boolean);
|
||||||
if (this.lvbListVerband.every(item => item.verband != first.verband))
|
if (this.lvbListVerband.every(item => item.verband != first.verband))
|
||||||
@@ -86,13 +85,11 @@ export default {
|
|||||||
},
|
},
|
||||||
gruppe: {
|
gruppe: {
|
||||||
get() {
|
get() {
|
||||||
if (this.verband === false)
|
if (this.verband === false || this.verband === null)
|
||||||
return false;
|
return null;
|
||||||
if (this.selectedGruppe !== false) {
|
if (this.selectedGruppe !== undefined)
|
||||||
if (this.lvbListGruppe.some(item => item.gruppe == this.selectedGruppe))
|
return this.selectedGruppe;
|
||||||
return this.selectedGruppe;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (Array.isArray(this.students)) {
|
if (Array.isArray(this.students)) {
|
||||||
const first = this.students.find(Boolean);
|
const first = this.students.find(Boolean);
|
||||||
if (this.lvbListGruppe.every(item => item.gruppe != first.gruppe))
|
if (this.lvbListGruppe.every(item => item.gruppe != first.gruppe))
|
||||||
@@ -195,6 +192,7 @@ export default {
|
|||||||
v-model="semester"
|
v-model="semester"
|
||||||
class="form-select"
|
class="form-select"
|
||||||
>
|
>
|
||||||
|
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||||
<option v-for="semester in stgSemester">{{ semester }}</option>
|
<option v-for="semester in stgSemester">{{ semester }}</option>
|
||||||
</select>
|
</select>
|
||||||
<span
|
<span
|
||||||
@@ -208,25 +206,27 @@ export default {
|
|||||||
class="form-select"
|
class="form-select"
|
||||||
:disabled="semester === false"
|
:disabled="semester === false"
|
||||||
>
|
>
|
||||||
|
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||||
<option v-for="verband in semesterVerband">{{ verband }}</option>
|
<option v-for="verband in semesterVerband">{{ verband }}</option>
|
||||||
|
<option :value="null"></option>
|
||||||
</select>
|
</select>
|
||||||
<span
|
<span
|
||||||
class="input-group-text"
|
class="input-group-text"
|
||||||
:class="{'text-muted': verband === false}"
|
|
||||||
>
|
>
|
||||||
{{ $p.t('lehre/gruppe') }}
|
{{ $p.t('lehre/gruppe') }}
|
||||||
</span>
|
</span>
|
||||||
<select
|
<select
|
||||||
v-model="gruppe"
|
v-model="gruppe"
|
||||||
class="form-select"
|
class="form-select"
|
||||||
:disabled="verband === false"
|
|
||||||
>
|
>
|
||||||
|
<option :value="false" disabled> -- {{ $p.t('exam/keineAuswahl') }} -- </option>
|
||||||
<option v-for="gruppe in verbandGruppe">{{ gruppe }}</option>
|
<option v-for="gruppe in verbandGruppe">{{ gruppe }}</option>
|
||||||
|
<option :value="null"></option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
:disabled="gruppe === false && verband === false"
|
|
||||||
>
|
>
|
||||||
{{ $p.t('ui/change') }}
|
{{ $p.t('ui/change') }}
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -65,6 +65,12 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
const { semester, verband, gruppe } = drop;
|
const { semester, verband, gruppe } = drop;
|
||||||
const params = { semester, verband, gruppe };
|
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 => [
|
endpoint = drag.map(student => [
|
||||||
this.getStudentAjaxId(student),
|
this.getStudentAjaxId(student),
|
||||||
ApiStvDetails.saveStudent(
|
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(
|
array(
|
||||||
'app' => 'core',
|
'app' => 'core',
|
||||||
'category' => 'lehre',
|
'category' => 'lehre',
|
||||||
|
|||||||
Reference in New Issue
Block a user