diff --git a/content/betriebsmitteloverlay.js.php b/content/betriebsmitteloverlay.js.php index d58514f80..7039e4769 100644 --- a/content/betriebsmitteloverlay.js.php +++ b/content/betriebsmitteloverlay.js.php @@ -328,11 +328,13 @@ function BetriebsmittelDetailSpeichern() alert('RetourAm Datum ist ungueltig'); return false; } + /* + Hex-Nummern sind nun auch erlaubt if(betriebsmitteltyp=='Zutrittskarte' && isNaN(nummer)) { alert('Bei Zutrittskarten muss die Nummer eine gueltige Zahl sein'); return false; - } + }*/ if(window.parent.document.getElementById('main-content-tabs').selectedItem==window.parent.document.getElementById('tab-studenten')) studiengang_kz=window.parent.document.getElementById('student-prestudent-menulist-studiengang_kz').value; else diff --git a/content/dragboard.js.php b/content/dragboard.js.php index b376f3f05..1e83adff1 100644 --- a/content/dragboard.js.php +++ b/content/dragboard.js.php @@ -416,7 +416,28 @@ var listObserver= var aktion=evt.target.getAttribute("aktion"); aktion+="_set"; var paramList="?dragtype="+type+"&dragdatum="+dragdatum+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit+"&old_ort="+old_ort+idList+"&aktion="+aktion; - + idList = TimeTableWeekGetMarkedIdList(); + paramList = paramList+idList; + + //die Buttons die verschoben werden grau einfaerben + var styleNow=evt.target.getAttribute("style"); + evt.target.setAttribute("style",styleNow+"color:gray;"); + + var items = document.getElementsByTagName('button'); + for each(var button in items) + { + if(button.id && button.id.startsWith('buttonSTPL')) + { + marked = button.getAttribute('marked'); + if(marked=='true') + { + var styleNow=button.getAttribute("style"); + button.setAttribute("style",styleNow+"color:gray;"); + } + } + } + + transferData.data=new TransferData(); transferData.data.addDataForFlavour("application/tempus-lehrstunde",paramList); } @@ -496,8 +517,8 @@ var boardObserver= url+="&mime="+dropdata.flavour.contentType; //IDs der Stunden die verschoben werden dazuhaengen - idList = TimeTableWeekGetMarkedIdList(); - url+=idList; + //idList = TimeTableWeekGetMarkedIdList(); + //url+=idList; if(new_ort=='' && ort=='') { alert('Es muss ein Ort gewaehlt werden'); diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index dae132057..96b6694a0 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -1775,6 +1775,9 @@ if(!$error) if($_POST['betriebsmitteltyp']=='Zutrittskarte' || $_POST['betriebsmitteltyp']=='Schluessel') { + if($_POST['betriebsmitteltyp']=='Zutrittskarte') + $_POST['nummer']=$bm->transform_kartennummer($_POST['nummer']); + //Das speichern von Zutrittskarten ohne Nummern verhindern if($_POST['betriebsmitteltyp']=='Zutrittskarte' && $_POST['nummer']=='') { diff --git a/include/betriebsmittel.class.php b/include/betriebsmittel.class.php index 9b947d360..68e226766 100644 --- a/include/betriebsmittel.class.php +++ b/include/betriebsmittel.class.php @@ -195,6 +195,11 @@ class betriebsmittel extends basis_db return false; } + //bei Zutrittskarten sicherstellen, dass die Nummer richtig kodiert ist + if($this->betriebsmitteltyp=='Zutrittskarte') + { + $this->nummer = $this->transform_kartennummer($this->nummer); + } $this->afa=(!isset($this->afa) || empty($this->afa)?$this->default_afa_jahre:$this->afa); if($new) { @@ -1071,5 +1076,29 @@ class betriebsmittel extends basis_db return $where; } + + /** + * Es sind mehrere Kartenlesegeraete im Umlauf + * Manche Geraete liefern die Kartennummer hexcodiert zurueck. + * Diese muessen erst in das richtige Format transformiert werden + * zusaetzlich werden die fuehrenden nullen entfernt + * + * @param $kartennummer + * @return $kartennummer + */ + function transform_kartennummer($kartennummer) + { + $kartennummer = trim($kartennummer); + //Kartennummern die im Hex-Format sind werden umgewandelt + if (!is_numeric($kartennummer)) + { + $kartennummer=substr($kartennummer,strlen($kartennummer)-2,2).substr($kartennummer,strlen($kartennummer)-4,2). substr($kartennummer,strlen($kartennummer)-6,2).substr($kartennummer,0,2); + $kartennummer=hexdec( $kartennummer); + } + + //Fuehrende nullen entfernen + $kartennummer = preg_replace("/^0*/", "", $kartennummer); + return $kartennummer; + } } ?> diff --git a/vilesci/stammdaten/betriebsmittel_uebersicht.php b/vilesci/stammdaten/betriebsmittel_uebersicht.php index bec83a296..73cec2cc1 100644 --- a/vilesci/stammdaten/betriebsmittel_uebersicht.php +++ b/vilesci/stammdaten/betriebsmittel_uebersicht.php @@ -25,6 +25,7 @@ require_once('../../config/vilesci.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/studiengang.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/betriebsmittel.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -64,22 +65,24 @@ $htmlstr.=' if(isset($_GET['searchstr']) || isset($_POST['bmsuche'])) { + $bm_obj = new betriebsmittel(); if (isset($_POST['bmsuche'])) { $bmsuche=strtoupper($_POST['bmsuche']); - $bmsuche = ereg_replace("^0*", "", $bmsuche); - + $kartennummer = $bm_obj->transform_kartennummer($bmsuche); + $sql_query="SELECT * FROM public.vw_betriebsmittelperson - WHERE upper(uid) LIKE '%".addslashes($bmsuche)."%' OR upper(nachname) LIKE '%".addslashes($bmsuche)."%' OR upper(vorname) LIKE '%".addslashes($bmsuche)."%' - OR upper(nummer) LIKE '%".addslashes($bmsuche)."%' OR upper(nummerintern) LIKE '%".addslashes($bmsuche)."%' - LIMIT 30"; + WHERE upper(nummer) LIKE '%".addslashes($kartennummer)."%' LIMIT 30"; //echo $sql_query; } else { $sql_query = 'SELECT * FROM public.vw_betriebsmittelperson '; if(!empty($searchstr)) - $sql_query.=" where uid ~* '".addslashes($searchstr)."' OR nummer ~* '".addslashes($searchstr)."' OR nummerintern ~* '".addslashes($searchstr)."' OR nachname ~* '".addslashes($searchstr)."' OR vorname ~* '".addslashes($searchstr)."' "; + { + $kartennummer = $bm_obj->transform_kartennummer($searchstr); + $sql_query.=" where uid ~* '".addslashes($searchstr)."' OR nummer ~* '".addslashes($searchstr)."' OR nummer ~* '".addslashes($kartennummer)."' OR nachname ~* '".addslashes($searchstr)."' OR vorname ~* '".addslashes($searchstr)."' "; + } $sql_query.=" ORDER BY nummer "; if(empty($searchstr)) $sql_query.=" LIMIT 100 ";