From 7975f77a1df8e4c92219b5c6d769e7b52b26f23f Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 14 Dec 2015 08:29:03 +0100 Subject: [PATCH] =?UTF-8?q?Mehrsprachige=20Felder=20f=C3=BCr=20Dokumentenb?= =?UTF-8?q?eschreibung=20k=C3=B6nnen=20nun=20in=20der=20GUI=20editiert=20w?= =?UTF-8?q?erden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dokument.class.php | 98 +++++++++--- vilesci/stammdaten/studiengang_dokumente.php | 153 +++++++++++++++---- 2 files changed, 197 insertions(+), 54 deletions(-) diff --git a/include/dokument.class.php b/include/dokument.class.php index 28611a591..deccd6ba8 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -42,6 +42,9 @@ class dokument extends basis_db public $ext_id; public $onlinebewerbung; + public $bezeichnung_mehrsprachig; + public $dokumentbeschreibung_mehrsprachig; + /** * Konstruktor - Laedt optional ein Dokument * @param $dokument_kurzbz @@ -216,15 +219,43 @@ class dokument extends basis_db if($new) { - $qry = 'INSERT INTO public.tbl_dokument(dokument_kurzbz, bezeichnung) VALUES('. - $this->db_add_param($this->dokument_kurzbz).','. - $this->db_add_param($this->bezeichnung).');'; + $qry = 'INSERT INTO public.tbl_dokument(dokument_kurzbz, '; + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" bezeichnung_mehrsprachig[$idx],"; + } + + foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" dokumentbeschreibung_mehrsprachig[$idx],"; + } + $qry.='bezeichnung) VALUES('. + $this->db_add_param($this->dokument_kurzbz).','; + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + $qry.=$this->db_add_param($value).','; + foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value) + $qry.=$this->db_add_param($value).','; + $this->db_add_param($this->bezeichnung).');'; + } else { $qry = 'UPDATE public.tbl_dokument SET '. - 'bezeichnung = '.$this->db_add_param($this->bezeichnung). - 'WHERE dokument_kurzbz = '.$this->db_add_param($this->dokument_kurzbz); + 'bezeichnung = '.$this->db_add_param($this->bezeichnung).','; + foreach($this->bezeichnung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" bezeichnung_mehrsprachig[$idx]=".$this->db_add_param($value).","; + } + foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" dokumentbeschreibung_mehrsprachig[$idx]=".$this->db_add_param($value).","; + } + $qry = mb_substr($qry,0,-1); + $qry.='WHERE dokument_kurzbz = '.$this->db_add_param($this->dokument_kurzbz); } if($this->db_query($qry)) @@ -455,7 +486,8 @@ class dokument extends basis_db */ public function loadDokumentStudiengang($dokument_kurzbz, $studiengang_kz) { - $qry="SELECT * FROM public.tbl_dokumentstudiengang + $sprache = new sprache(); + $qry="SELECT *,".$sprache->getSprachQuery('beschreibung_mehrsprachig')." FROM public.tbl_dokumentstudiengang WHERE studiengang_kz=".$this->db_add_param($studiengang_kz)." AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); @@ -468,6 +500,7 @@ class dokument extends basis_db $this->studiengang_kz = $row->studiengang_kz; $this->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung); $this->pflicht = $this->db_parse_bool($row->pflicht); + $this->beschreibung_mehrsprachig = $sprache->parseSprachResult('beschreibung_mehrsprachig',$row); return true; } else @@ -521,18 +554,35 @@ class dokument extends basis_db { if(!$this->existsDokumentStudiengang($this->dokument_kurzbz, $this->studiengang_kz)) { - $qry='INSERT INTO public.tbl_dokumentstudiengang (dokument_kurzbz, studiengang_kz, pflicht, onlinebewerbung) + $qry='INSERT INTO public.tbl_dokumentstudiengang (dokument_kurzbz, studiengang_kz,'; + foreach($this->beschreibung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" beschreibung_mehrsprachig[$idx],"; + } + + $qry.=' pflicht, onlinebewerbung) VALUES ('. $this->db_add_param($this->dokument_kurzbz).','. - $this->db_add_param($this->studiengang_kz,FHC_INTEGER).','. - $this->db_add_param($this->pflicht,FHC_BOOLEAN).','. + $this->db_add_param($this->studiengang_kz,FHC_INTEGER).','; + + foreach($this->beschreibung_mehrsprachig as $key=>$value) + $qry.=$this->db_add_param($value).','; + + $qry.= $this->db_add_param($this->pflicht,FHC_BOOLEAN).','. $this->db_add_param($this->onlinebewerbung,FHC_BOOLEAN).')'; } else { $qry = 'UPDATE public.tbl_dokumentstudiengang SET - onlinebewerbung='.$this->db_add_param($this->onlinebewerbung, FHC_BOOLEAN).', - pflicht='.$this->db_add_param($this->pflicht, FHC_BOOLEAN).' + onlinebewerbung='.$this->db_add_param($this->onlinebewerbung, FHC_BOOLEAN).','; + + foreach($this->beschreibung_mehrsprachig as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" beschreibung_mehrsprachig[$idx]=".$this->db_add_param($value).","; + } + $qry.=' pflicht='.$this->db_add_param($this->pflicht, FHC_BOOLEAN).' WHERE dokument_kurzbz='.$this->db_add_param($this->dokument_kurzbz).' AND studiengang_kz='.$this->db_add_param($this->studiengang_kz); @@ -556,7 +606,11 @@ class dokument extends basis_db */ public function loadDokumenttyp($dokument_kurzbz) { - $qry="SELECT * FROM public.tbl_dokument + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); + + $qry="SELECT *, ".$bezeichnung_mehrsprachig.",".$dokumentbeschreibung_mehrsprachig." FROM public.tbl_dokument WHERE dokument_kurzbz =".$this->db_add_param($dokument_kurzbz).";"; if($this->db_query($qry)) @@ -565,6 +619,8 @@ class dokument extends basis_db { $this->dokument_kurzbz = $row->dokument_kurzbz; $this->bezeichnung = $row->bezeichnung; + $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); + $this->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row); return true; } } @@ -623,7 +679,7 @@ class dokument extends basis_db } } - + /** * Liefert die Beschreibungstexte des uebergebenen Dokuments und der uebergebenen Studiengaenge * @param array $studiengangs_kz Array mit den Studiengangskennzahlen @@ -634,16 +690,16 @@ class dokument extends basis_db $sprache = new sprache(); $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - - $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, - $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig - FROM public.tbl_dokumentstudiengang - JOIN public.tbl_dokument using (dokument_kurzbz) + + $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, + $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig + FROM public.tbl_dokumentstudiengang + JOIN public.tbl_dokument using (dokument_kurzbz) WHERE dokument_kurzbz=".$this->db_add_param($dokument_kurzbz, FHC_STRING)." AND (dokumentbeschreibung_mehrsprachig IS NOT NULL OR beschreibung_mehrsprachig IS NOT NULL) AND studiengang_kz IN (".implode(",", $studiengangs_kz).") ORDER BY studiengang_kz"; - + if($result = $this->db_query($qry)) { while($row = $this->db_fetch_object($result)) @@ -663,7 +719,7 @@ class dokument extends basis_db $this->errormsg="Fehler bei der Abfrage aufgetreten"; return false; } - + } /** @@ -700,7 +756,7 @@ class dokument extends basis_db $this->errormsg = 'Studiengang_kz ist ungueltig'; return false; } - + $qry = "SELECT * FROM diff --git a/vilesci/stammdaten/studiengang_dokumente.php b/vilesci/stammdaten/studiengang_dokumente.php index 59939067f..fcb4feea4 100644 --- a/vilesci/stammdaten/studiengang_dokumente.php +++ b/vilesci/stammdaten/studiengang_dokumente.php @@ -1,22 +1,22 @@ * @@ -26,10 +26,15 @@ require_once('../../include/functions.inc.php'); require_once('../../include/studiengang.class.php'); require_once('../../include/dokument.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/sprache.class.php'); $stg_kz = isset($_REQUEST['stg_kz']) ? $_REQUEST['stg_kz'] : '0'; $dokument_kurzbz = isset($_REQUEST['dokument_kurzbz']) ? $_REQUEST['dokument_kurzbz'] : ''; $onlinebewerbung = isset($_REQUEST['onlinebewerbung']); +$pflicht = isset($_POST['pflicht']); + +$sprache = new sprache(); +$sprache->getAll(true); $action=isset($_GET['action'])?$_GET['action']:''; if(isset($_POST['add'])) @@ -40,7 +45,7 @@ if(isset($_POST['saveDoc'])) $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); - +$db = new basis_db(); if(!$rechte->isBerechtigt('basis/studiengang', $stg_kz, 'suid')) die('Sie haben keine Berechtigung für diese Seite'); @@ -52,7 +57,16 @@ if($action=='add') $dokument->dokument_kurzbz = $dokument_kurzbz; $dokument->studiengang_kz = $stg_kz; $dokument->onlinebewerbung = $onlinebewerbung; - $dokument->pflicht = filter_input(INPUT_POST, 'pflicht', FILTER_VALIDATE_BOOLEAN); + $dokument->pflicht = $pflicht; + + $beschreibung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['beschreibung_mehrsprachig_'.$row_sprache->sprache])) + $beschreibung_mehrsprachig[$row_sprache->sprache]=$_POST['beschreibung_mehrsprachig_'.$row_sprache->sprache]; + } + $dokument->beschreibung_mehrsprachig = $beschreibung_mehrsprachig; + $dokument->saveDokumentStudiengang(); } } @@ -102,13 +116,13 @@ if($action=='saveDoc') { $dokBezeichnung=isset($_POST['dokument_bezeichnung'])?$_POST['dokument_bezeichnung']:''; $dokKurzbz=isset($_POST['dokument_kurzbz'])?$_POST['dokument_kurzbz']:''; - + if($dokBezeichnung!='') { $dokument=new dokument(); $dokument->dokument_kurzbz=$dokKurzbz; $dokument->bezeichnung=$dokBezeichnung; - + if($dokument->saveDokument(true)) { echo 'Dokument hinzugefügt'; @@ -129,16 +143,16 @@ echo ' Zuordnung Studiengang - Dokumente @@ -167,7 +185,7 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') $dokument = new dokument(); if(!$dokument->deleteDokumenttyp($_GET['dokument_kurzbz'])) echo $dokument->errormsg; - + } } if(isset($_POST['saveDokumenttyp'])) @@ -180,6 +198,22 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') else $neu=false; + $bezeichnung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache])) + $bezeichnung_mehrsprachig[$row_sprache->sprache]=$_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; + } + $dokument->bezeichnung_mehrsprachig = $bezeichnung_mehrsprachig; + + $dokumentbeschreibung_mehrsprachig=array(); + foreach($sprache->result as $row_sprache) + { + if(isset($_POST['dokumentbeschreibung_mehrsprachig_'.$row_sprache->sprache])) + $dokumentbeschreibung_mehrsprachig[$row_sprache->sprache]=$_POST['dokumentbeschreibung_mehrsprachig_'.$row_sprache->sprache]; + } + $dokument->dokumentbeschreibung_mehrsprachig = $dokumentbeschreibung_mehrsprachig; + if(!$dokument->saveDokument($neu)) echo $dokument->errormsg; } @@ -188,7 +222,7 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') $dokument->getAllDokumente(); echo ' -
+ @@ -203,7 +237,7 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') - + '; } @@ -230,17 +264,49 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') echo ' - +
'; - // Lichtbil und Zeugnis duerfen nicht geloescht werden da diese fuer Bildupload und + // Lichtbil und Zeugnis duerfen nicht geloescht werden da diese fuer Bildupload und // Zeugnisarchivierung verwendet werden if(!in_array($row->dokument_kurzbz,array('Lichtbil','Zeugnis'))) echo ''; @@ -211,7 +245,7 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') echo ' '.$row->dokument_kurzbz.''.$row->bezeichnung.''.$row->bezeichnung.'
+ + - + - - + + + + + + + + '; + foreach($sprache->result as $s) + { + echo ' + + + + '; + foreach($sprache->result as $s) + { + echo ''; + } + + echo ' + + + + +
Kurzbezeichnung -
Bezeichnung + +
Bezeichnung Mehrsprachig
'.$s->sprache.''; + echo ''; + } + echo ' +
Dokumentbeschreibung Mehrsprachig
'.$s->sprache.''; + echo '
'; } @@ -295,10 +361,21 @@ else '.$dok->bezeichnung.' - Zuordnung löschen + + + + '; } + + $dok = new dokument(); + if($action=='edit') + { + if(!$dok->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) + die('Failed to load:'.$dok->errormsg); + } + echo ' @@ -306,18 +383,28 @@ else - - - - + echo ''; + echo ''; + foreach($sprache->result as $s) + { + echo ''; + } + echo '
Beschreibung '.$s->sprache.''; + echo '
'; + echo ' + + onlinebewerbung?'checked="checked"':'').'> + + pflicht?'checked="checked"':'').'> - +