From 60e36bb4b9c2fe31e804d260b0227a16b207e2a0 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Mon, 1 Jun 2026 11:30:36 +0200 Subject: [PATCH 01/11] change updateProjektarbeit call so that the abgabedatum actually only gets set when doing the endupload and not also when zusatzdaten are being edited, which can certainly be an earlier or even later date; --- .../controllers/api/frontend/v1/Abgabe.php | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index 901c7f284..b9b382af0 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -422,9 +422,16 @@ class Abgabe extends FHCAPI_Controller $this->checkAbgabeSignatur($paabgabe, $projektarbeit->student_uid); $signaturstatus = $paabgabe->signatur; - // update projektarbeit cols - $this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id, $sprache, $abstract, $abstract_en - , $schlagwoerter, $schlagwoerter_en, $seitenanzahl); + // update projektarbeit cols with zusatzdaten AND abgabedatum! + $this->ProjektarbeitModel->update($projektarbeit->projektarbeit_id, array( + 'sprache' => $sprache, + 'seitenanzahl' => $seitenanzahl, + 'abgabedatum' => date('Y-m-d'), + 'schlagwoerter_en' => $schlagwoerter_en, + 'schlagwoerter' => $schlagwoerter, + 'abstract' => $abstract, + 'abstract_en' => $abstract_en + )); // update paabgabe datum @@ -1466,9 +1473,15 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithError($this->p->t('abgabetool', 'c4noZuordnungBetreuerStudent'), 'general'); } - // update projektarbeit cols - $this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en - ,$schlagwoerter, $schlagwoerter_en, $seitenanzahl); + // update projektarbeit cols with zusatzdaten only + $this->ProjektarbeitModel->update($projektarbeit_id, array( + 'sprache' => $sprache, + 'seitenanzahl' => $seitenanzahl, + 'schlagwoerter_en' => $schlagwoerter_en, + 'schlagwoerter' => $schlagwoerter, + 'abstract' => $abstract, + 'abstract_en' => $abstract_en + )); $this->logLib->logInfoDB(array('zusatzdatenEditMitarbeiter', array( 'updatevon' => getAuthUID(), From d0d590ff8936980e053a2189c17dc809400d2dfa Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Mon, 1 Jun 2026 12:56:55 +0200 Subject: [PATCH 02/11] block the change of paabgabetyp if the termin has an upload associated (abgabedatum !== null) or has a note; TODO: block the same in multiedit! --- .../controllers/api/frontend/v1/Abgabe.php | 10 ++++++++++ .../Cis/Abgabetool/AbgabeMitarbeiterDetail.js | 2 +- system/phrasesupdate.php | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index b9b382af0..d80a98ced 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -854,6 +854,16 @@ class Abgabe extends FHCAPI_Controller $existingPaabgabeArr = getData($existingResult); if(count($existingPaabgabeArr) > 0) $existingPaabgabe = $existingPaabgabeArr[0]; + if($existingPaabgabe->note !== null || $existingPaabgabe->abgabedatum !== null) { + // check if a change of paabgabetyp is being attempted -> not allowed at this point + if($paabgabetyp_kurzbz !== $existingPaabgabe->paabgabetyp_kurzbz) { + $this->terminateWithError($this->p->t('abgabetool', 'c4abgabetypAendernNichtErlaubt')); + } + + + // check if a change of deadline aka datum is being attempted -> should not be allowed at this point? + } + $result = $this->PaabgabeModel->update( $paabgabe_id, array( diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js index fb564ad98..ee25abec5 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js @@ -817,7 +817,7 @@ export const AbgabeMitarbeiterDetail = {
'core', + 'category' => 'abgabetool', + 'phrase' => 'c4abgabetypAendernNichtErlaubt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ändern des Abgabetyps ist nach erfolgtem Upload oder einer erfolgten Benotung nicht erlaubt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'You are not allowed to change the submission type after the upload is complete or after grades have been assigned.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), // ABGABETOOL PHRASEN END array( 'app' => 'core', From 66e1e6ad8a335bbb3a99aaf5a6f72a9bc9652cd1 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Mon, 1 Jun 2026 15:59:38 +0200 Subject: [PATCH 03/11] studierendenbereich phrasenkey change so it gets inserted as a new phrase and not ignored like our phrasesupdate.php tends to do --- public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js | 2 +- system/phrasesupdate.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index e22a65dde..242313925 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -410,7 +410,7 @@ export const AbgabeStudentDetail = {
-
{{$capitalize( $p.t('abgabetool/c4abgabeStudentenbereich') )}}
+
{{$capitalize( $p.t('abgabetool/c4abgabeStudentenbereichv2') )}}

{{$capitalize( $p.t('person/student') ) }}: {{projektarbeit?.student}}

diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 9484c9338..0ff515c9c 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -43727,7 +43727,7 @@ array( array( 'app' => 'core', 'category' => 'abgabetool', - 'phrase' => 'c4abgabeStudentenbereich', + 'phrase' => 'c4abgabeStudentenbereichv2', 'insertvon' => 'system', 'phrases' => array( array( From c75e1f94165f0bda32fa27bf772a956cfb42c6a7 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Fri, 5 Jun 2026 10:12:03 +0200 Subject: [PATCH 04/11] WIP --- application/config/abgabe.php | 2 +- .../controllers/api/frontend/v1/Abgabe.php | 19 ++++++++++-------- .../models/education/Projektarbeit_model.php | 5 ++++- .../Cis/Abgabetool/AbgabeMitarbeiterDetail.js | 5 ++++- .../Cis/Abgabetool/AbgabeStudentDetail.js | 2 +- .../Cis/Abgabetool/AbgabetoolStudent.js | 2 +- system/phrasesupdate.php | 20 +++++++++++++++++++ 7 files changed, 42 insertions(+), 13 deletions(-) diff --git a/application/config/abgabe.php b/application/config/abgabe.php index e1cdfbfa7..dd059d047 100644 --- a/application/config/abgabe.php +++ b/application/config/abgabe.php @@ -29,7 +29,7 @@ $config['ALLOWED_NOTEN_ABGABETOOL'] = [10, 14]; // tbl_note pk // benotete projektarbeiten sperren weitere terminanlage & bearbeitung, diese noten sind ausnahmen dieser Regel // wie zB "Nicht beurteilt" & "Noch nicht eingetragen" $config['NONFINAL_NOTEN_ABGABETOOL'] = [9]; -$config['beurteilung_link_fallback'] = 'addons/fhtw/content/projektbeurteilung/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?'; +$config['beurteilung_link_fallback'] = 'cis/private/lehre/projektbeurteilungDocumentExport.php?projektarbeit_id=?&betreuerart_kurzbz=?&person_id=?'; $config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ERSTBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter'; $config['PROJEKTARBEITSBEURTEILUNG_MAIL_BASELINK_ZWEITBEGUTACHTER'] = 'index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter'; diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index d80a98ced..6e0ae2eef 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -848,8 +848,6 @@ class Abgabe extends FHCAPI_Controller // load existing entry of paabgabe and check if note has changed to negativ, to avoid sending when // only notiz has changed. - // TODO: what if paabgabe is a qualgate1, is benotet negativ and then its type is changed to gate2? - $existingResult = $this->PaabgabeModel->load($paabgabe_id); $existingPaabgabeArr = getData($existingResult); if(count($existingPaabgabeArr) > 0) $existingPaabgabe = $existingPaabgabeArr[0]; @@ -860,8 +858,10 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithError($this->p->t('abgabetool', 'c4abgabetypAendernNichtErlaubt')); } - - // check if a change of deadline aka datum is being attempted -> should not be allowed at this point? + // check if a change of deadline aka datum is being attempted -> notallowed at this point + if($datum !== $existingPaabgabe->datum) { + $this->terminateWithError($this->p->t('abgabetool', 'c4datumAendernNichtErlaubt')); + } } $result = $this->PaabgabeModel->update( @@ -1238,9 +1238,12 @@ class Abgabe extends FHCAPI_Controller private function getProjektbetreuerEmailByPersonID($person_id) { $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); $result = $this->ProjektarbeitModel->getProjektbetreuerEmailByPersonID($person_id); - $email = $this->getDataOrTerminateWithError($result, 'general'); - - return $email[0]->uid ? $email[0]->uid.'@'.DOMAIN : $email[0]->private_email; + if(hasData($result)) { + $email = getData($result); + return $email[0]->uid ? $email[0]->uid.'@'.DOMAIN : $email[0]->private_email; + } else { + return null; + } } //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API @@ -1629,7 +1632,7 @@ class Abgabe extends FHCAPI_Controller $email = $this->getProjektbetreuerEmailByProjektarbeitID($projektarbeit_id); - if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'c4fehlerMailBegutachterv2'), 'general'); + if(!$email) $this->terminateWithError('early fail', 'general'); $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index ef1759154..aaa0962b1 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -207,7 +207,10 @@ class Projektarbeit_model extends DB_Model campus.tbl_paabgabetyp.paabgabetyp_kurzbz, campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabe.abgabedatum, - campus.tbl_paabgabe.insertvon + campus.tbl_paabgabe.insertvon, + campus.tbl_paabgabe.updatevon, + campus.tbl_paabgabe.insertamum, + campus.tbl_paabgabe.updateamum FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz) WHERE campus.tbl_paabgabe.projektarbeit_id IN ? ORDER BY campus.tbl_paabgabe.datum"; diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js index ee25abec5..fd77ad347 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js @@ -905,7 +905,7 @@ export const AbgabeMitarbeiterDetail = {
{{ $capitalize( $p.t('abgabetool/c4actions') )}}
-
+
+
+ Your grey text here +
diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index 242313925..8cbe26e97 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -658,7 +658,7 @@ export const AbgabeStudentDetail = {