From 92e61170b99e37b5f983d0206350e4d86a768efe Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Thu, 6 Nov 2014 13:34:46 +0000 Subject: [PATCH] =?UTF-8?q?Zeitaufzeichnung=20aktualisiert=20um=20Servicek?= =?UTF-8?q?atalog=20abbilden=20zu=20k=C3=B6nnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 366 ++++++++++++++++--------- include/akadgrad.class.php | 2 +- include/benutzerberechtigung.class.php | 2 + include/datum.class.php | 31 +++ include/mitarbeiter.class.php | 22 +- include/organisationseinheit.class.php | 127 ++++++++- include/zeitaufzeichnung.class.php | 4 +- locale/de-AT/passwort.php | 8 +- locale/de-AT/zeitaufzeichnung.php | 16 +- locale/en-US/zeitaufzeichnung.php | 19 +- skin/images/arrow-next.png | Bin 0 -> 930 bytes skin/images/arrow-previous.png | Bin 0 -> 955 bytes system/checksystem.php | 11 + 13 files changed, 468 insertions(+), 140 deletions(-) create mode 100644 skin/images/arrow-next.png create mode 100644 skin/images/arrow-previous.png diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index f93a91811..8910b508d 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -58,6 +58,7 @@ $kunde_uid = (isset($_POST['kunde_uid'])?$_POST['kunde_uid']:''); $kartennummer = (isset($_POST['kartennummer'])?$_POST['kartennummer']:''); $filter = (isset($_GET['filter'])?$_GET['filter']:'foo'); $alle = (isset($_POST['alle'])?(isset($_POST['normal'])?false:true):false); +$angezeigte_tage = '50'; echo ' @@ -78,8 +79,8 @@ echo ' 59) + { + foo = minute/60; + foo = Math.floor(foo); + stunde = stunde+foo; + minute = minute-60*foo; + } + minute = (minute < 10 ? "0"+minute : minute); + tag = vonDatum.getDate(); + if (stunde >= 24) + { + foo = stunde/24; + foo = Math.floor(foo); + tag = tag+foo; + stunde = stunde-24; + } + tag = (tag < 10 ? "0"+tag : tag); + jahr = vonDatum.getFullYear(); + stunde = (stunde < 10 ? "0"+stunde : stunde); + + bisDatum = tag+\'.\'+monat+\'.\'+jahr+\' \'+stunde+\':\'+minute; + document.getElementById("bis").value = bisDatum; + } function uebernehmen1() { @@ -180,7 +222,7 @@ echo ' '; - -echo '

'.$p->t("zeitaufzeichnung/zeitaufzeichnung").'

'; +$bn = new benutzer(); + if(!$bn->load($user)) + die($p->t("zeitaufzeichnung/benutzerWurdeNichtGefunden",array($user))); + +echo '

'.$p->t("zeitaufzeichnung/zeitaufzeichnungVon").' '.$db->convert_html_chars($bn->vorname).' '.$db->convert_html_chars($bn->nachname).'

'; // Wenn Kartennummer übergeben wurde dann hole uid von Karteninhaber if($kartennummer != '') @@ -259,11 +304,11 @@ if(isset($_POST['save']) || isset($_POST['edit'])) if(!$zeit->save()) { - echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'
'; + echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.''; } else { - echo ''.$p->t("global/datenWurdenGespeichert").'
'; + echo ''.$p->t("global/datenWurdenGespeichert").''; // Nach dem Speichern in den neu Modus springen und als Von Zeit // das Ende des letzten Eintrages eintragen @@ -291,16 +336,18 @@ if(isset($_GET['type']) && $_GET['type']=='delete') if($zeit->uid==$user) { if($zeit->delete($zeitaufzeichnung_id)) - echo ''.$p->t("global/eintragWurdeGeloescht").'
'; + echo ''.$p->t("global/eintragWurdeGeloescht").''; else - echo ''.$p->t("global/fehlerBeimLoeschenDesEintrags").'
'; + echo ''.$p->t("global/fehlerBeimLoeschenDesEintrags").''; } else - echo ''.$p->t("global/keineBerechtigung").'!
'; + echo ''.$p->t("global/keineBerechtigung").'!'; } else - echo ''.$p->t("global/datensatzWurdeNichtGefunden").'
'; + echo ''.$p->t("global/datensatzWurdeNichtGefunden").''; } +else + echo ' '; //Laden der Daten zum aendern if(isset($_GET['type']) && $_GET['type']=='edit') @@ -338,31 +385,23 @@ if($projekt->getProjekteMitarbeiter($user)) { //if(count($projekt->result)>0) //{ - $bn = new benutzer(); - if(!$bn->load($user)) - die($p->t("zeitaufzeichnung/benutzerWurdeNichtGefunden",array($user))); - + echo " - - -
".$p->t("zeitaufzeichnung/zeitaufzeichnungVon")." - ".$db->convert_html_chars($bn->vorname)." ".$db->convert_html_chars($bn->nachname)." -
- ".$p->t("zeitaufzeichnung/neu")." + ".$p->t("zeitaufzeichnung/neu")."
"; //Formular - echo '

'; + echo '
'; echo ''; //Projekt echo ' - '; echo ''; //OE_KURZBZ_1 - echo ' + echo ''; - echo ''; - echo ''; + //echo ''; + //echo ''; + //echo ''; //OE_KURZBZ_2 - echo ' - '; + echo ''; //Aktivitaet echo ''; - echo ''; + + // Service echo ' - '; - /* echo ' - - - ';*/ // person für Kundenvoransicht laden $kunde_name = ''; @@ -499,22 +540,30 @@ if($projekt->getProjekteMitarbeiter($user)) '; - echo ''; + echo ''; //Start/Ende + $von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s')); + $bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s')); + $diff = $bis_ts - $von_ts; echo ' - - + + - '; //Beschreibung - echo ''; + echo ''; echo '
'.$p->t("zeitaufzeichnung/projekt").'
'.$p->t("zeitaufzeichnung/organisationseinheit1").''.$p->t("zeitaufzeichnung/organisationseinheiten").' '; - echo '
'.$p->t("zeitaufzeichnung/organisationseinheit2").''.$p->t("zeitaufzeichnung/organisationseinheit2").'
'.$p->t("zeitaufzeichnung/aktivitaet").''; + echo ''.$p->t("zeitaufzeichnung/aktivitaet").''; - $qry = "SELECT * FROM fue.tbl_aktivitaet ORDER by beschreibung"; + $qry = "SELECT * FROM fue.tbl_aktivitaet ORDER by sort,beschreibung"; if($result = $db->db_query($qry)) { echo ''; } echo '
'.$p->t('zeitaufzeichnung/service').'
'.$p->t('zeitaufzeichnung/kunde').' -
'.$p->t("zeitaufzeichnung/oderKartennummerOptional").'
  
 
'.$p->t("global/von").'  - -       - - + '.$p->t("global/von").' - '.$p->t("global/bis").' + +   + +   + + + min. + +   + + '.$p->t("global/bis").'  -
'.$p->t("global/beschreibung").'
'.$p->t("global/beschreibung").'
'; //SpeichernButton if($zeitaufzeichnung_id=='') @@ -527,7 +576,7 @@ if($projekt->getProjekteMitarbeiter($user)) } echo '
'; echo '
'; - echo ''; + echo '

'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'

'; echo '
'; $za = new zeitaufzeichnung(); @@ -538,7 +587,7 @@ if($projekt->getProjekteMitarbeiter($user)) if ($alle==true) $za->getListeUser($user, ''); else - $za->getListeUser($user); + $za->getListeUser($user, $angezeigte_tage); } $summe=0; @@ -546,121 +595,186 @@ if($projekt->getProjekteMitarbeiter($user)) if(count($za->result)>0) { //Uebersichtstabelle + $woche=date('W'); echo ' + + + - - + + + + + - - '; $tag=null; + $woche=date('W'); $tagessumme='00:00'; + $pausesumme='00:00'; + $wochensumme='00:00'; $datum_obj = new datum(); + $tagesbeginn = ''; + $tagesende = ''; + $wochensaldo = '00:00'; + $pflichtpause = false; foreach($za->result as $row) { $datumtag = $datum_obj->formatDatum($row->start, 'Y-m-d'); + + // Nach jedem Tag eine Summenzeile einfuegen if(is_null($tag)) $tag = $datumtag; if($tag!=$datumtag) + { + $style = ''; + $style = 'style="background-color:#DCE4EF; font-size: 8pt;"'; + list($h1, $m1) = explode(':', $pausesumme); + $pausesumme = $h1*3600+$m1*60; + $tagessaldo = $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s'))-$datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s'))-3600; + if ($tagessaldo>=18000 && $pflichtpause==false) + { + $pausesumme = $pausesumme+1800; + } + + $tagessaldo = $tagessaldo-$pausesumme; + $tagessaldo = date('H:i', ($tagessaldo)); + echo ' + + + + '; + + $tag=$datumtag; + $tagessumme='00:00'; + $pausesumme='00:00'; + $tagesbeginn = ''; + $tagesende = ''; + $pflichtpause = false; + $wochensaldo = $datum_obj->sumZeit($wochensaldo,$tagessaldo ); + } + // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen + $datumwoche = $datum_obj->formatDatum($row->start, 'W'); + if(is_null($woche)) + $woche = $datumwoche; + if($woche!=$datumwoche) { echo ' - - - - - - - - - - - + + + +
'.$p->t("eventkalender/kw").' '.$woche.'
'.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/aktivitaet").' '.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").' '.$p->t("zeitaufzeichnung/start").' '.$p->t("zeitaufzeichnung/ende").' '.$p->t("zeitaufzeichnung/dauer").' '.$p->t("global/beschreibung").''.$p->t("global/organisationseinheit").''.$p->t("global/organisationseinheit").' '.$p->t("global/aktion").'
'.$p->t("zeitaufzeichnung/summeEintraege").':
+ '.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'
+ '.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').': +
'.$tagessumme.'
'.$tagessaldo.'
'.date('H:i', ($pausesumme-3600)).'
'.$p->t("zeitaufzeichnung/tagessumme").''.$tagessumme.''.$p->t("zeitaufzeichnung/wochensummeEintraege").':
'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':
'.$wochensumme.'
'.$wochensaldo.'
'; echo ' - +
+ + + - - + + + + + - - '; - $tag=$datumtag; + $woche=$datumwoche; + $wochensumme='00:00'; $tagessumme='00:00'; + $pausesumme='00:00'; + $wochensaldo = '00:00'; } - $tagessumme = $datum_obj->sumZeit($tagessumme, $row->diff); + + $wochensumme = $datum_obj->sumZeit($wochensumme, $row->diff); + if ($row->aktivitaet_kurzbz=='Pause') + { + $pausesumme = $datum_obj->sumZeit($pausesumme, $row->diff); + list($h1, $m1) = explode(':', $row->diff); + if ($m1>=30 || $h1>0) + { + $pflichtpause = true; + } + } + else + $tagessumme = $datum_obj->sumZeit($tagessumme, $row->diff); + $style = ''; + if ($row->zeitaufzeichnung_id == $zeitaufzeichnung_id) + $style = 'style="border-top: 3px solid #8DBDD8; border-bottom: 3px solid #8DBDD8"'; + if ($row->aktivitaet_kurzbz=='Pause') + $style .= ' style="color: grey;"'; $summe = $row->summe; + $service = new service(); + $service->load($row->service_id); echo ' - - - - - - - - - - - + + + + + + + + + + + \n"; - echo " \n"; echo " \n"; + + if ($tagesbeginn=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format='Y-m-d H:i:s'))) + $tagesbeginn = $row->start; + + if ($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) + $tagesende = $row->ende; } - echo ' - - - - - - - - - - - - - - - - -
'.$p->t("eventkalender/kw").' '.$datumwoche.'
'.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/aktivitaet").' '.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").' '.$p->t("zeitaufzeichnung/start").' '.$p->t("zeitaufzeichnung/ende").' '.$p->t("zeitaufzeichnung/dauer").' '.$p->t("global/beschreibung").''.$p->t("global/organisationseinheit").''.$p->t("global/organisationseinheit").' '.$p->t("global/aktion").'
'.$db->convert_html_chars($row->zeitaufzeichnung_id).''.$db->convert_html_chars($row->projekt_kurzbz).''.$db->convert_html_chars($row->aktivitaet_kurzbz).''.$db->convert_html_chars($row->uid).''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->start)).''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->ende)).''.$db->convert_html_chars($row->diff).'beschreibung)).'">'.$db->convert_html_chars($row->beschreibung).''.$db->convert_html_chars($row->oe_kurzbz_1).''.$db->convert_html_chars($row->oe_kurzbz_2).''; + '.$db->convert_html_chars($row->zeitaufzeichnung_id).''.$db->convert_html_chars($row->uid).''.$db->convert_html_chars($row->projekt_kurzbz).''.$db->convert_html_chars($row->oe_kurzbz_1).''.$db->convert_html_chars($row->oe_kurzbz_2).''.$db->convert_html_chars($row->aktivitaet_kurzbz).''.StringCut($db->convert_html_chars($service->bezeichnung),20,null,'...').''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->start)).''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->ende)).''.$db->convert_html_chars($row->diff).'beschreibung)).'">'.StringCut($db->convert_html_chars($row->beschreibung),20,null,'...').''; if(!isset($_GET['filter']) || $row->uid==$user) echo ''.$p->t("global/bearbeiten").''; echo ""; + echo " "; if(!isset($_GET['filter']) || $row->uid==$user) echo ''.$p->t("global/loeschen").''; echo "
'.$p->t("zeitaufzeichnung/tagessumme").''.$tagessumme.'
'; + echo ''; + if ($alle===false) + echo ' + + '.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).' + + '; + echo ''; - echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); + //echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); Aukommentiert. Irrelevant } /* } @@ -677,4 +791,4 @@ else echo ' '; -?> +?> \ No newline at end of file diff --git a/include/akadgrad.class.php b/include/akadgrad.class.php index 3004d5769..efc2550b3 100644 --- a/include/akadgrad.class.php +++ b/include/akadgrad.class.php @@ -117,7 +117,7 @@ class akadgrad extends basis_db } /** - * Liefert den Akademischen Grad eines Studenten gemaess Studienordnung + * Liefert den Akademischen Grad eines Studenten aus der Tabelle Akadgrad * @param student_uid */ public function getAkadgradStudent($student_uid) diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index 00cd07929..d4ff04017 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -384,6 +384,8 @@ class benutzerberechtigung extends basis_db FROM system.tbl_benutzerrolle JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz) WHERE tbl_benutzerfunktion.uid=".$this->db_add_param($uid)." + AND (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) + AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) UNION diff --git a/include/datum.class.php b/include/datum.class.php index c1cdf3874..554f0daba 100644 --- a/include/datum.class.php +++ b/include/datum.class.php @@ -238,6 +238,37 @@ class datum return $h1.':'.$m1; } + /** + * Subtrahiert 2 Zeiten ($zeit1-$zeit2) Stunde:Minute + * Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten + * zB 12:10 + 23:15 = 35:25 + * + * @param $zeit1 + * @param $zeit2 + * @return subtraktion der beiden zeiten im Format Stunden:Minuten + */ + public function subZeit($zeit1, $zeit2) + { + list($h1, $m1) = explode(':', $zeit1); + list($h2, $m2) = explode(':', $zeit2); + + $m1 -=$m2; +//echo $h1.','.$m1.','.$h2.','.$m2; + if($m1>=60) + { + $uebertrag = (int)($m1/60); + $h1+= $uebertrag; + } + $m1=$m1%60; + $h1+=-$h2; + if($m1<10) + $m1='0'.$m1; + if($h1<10) + $h1='0'.$h1; + + return $h1.':'.$m1; + } + /** * Prueft und Liefert ein Datum im angegeben Format * fuer die Formatierung wird die Funktion formatDatum verwendet diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index bff413b49..dfb2588e8 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -388,15 +388,19 @@ class mitarbeiter extends benutzer } /** - * Liefert Mitarbeiter die einem eine Funktion in den uebergebenen Studiengaengen haben + * Liefert Mitarbeiter, die eine Funktion in den uebergebenen Studiengaengen haben. + * Optional datum_von und datum_bis fuer die Funktion ansonsten now() * * @param $lektor * @param $fixangestellt * @param $stge Array mit Studiengaengen * @param $fkt_kurzbz + * @param $order + * @param $datum_von + * @param $datum_bis * @return boolean */ - public function getMitarbeiterStg($lektor=true,$fixangestellt, $stge, $fkt_kurzbz, $order='studiengang_kz, nachname, vorname, kurzbz') + public function getMitarbeiterStg($lektor=true,$fixangestellt, $stge, $fkt_kurzbz, $order='studiengang_kz, nachname, vorname, kurzbz', $datum_von='', $datum_bis='') { $sql_query='SELECT DISTINCT campus.vw_mitarbeiter.*, studiengang_kz FROM campus.vw_mitarbeiter JOIN public.tbl_benutzerfunktion USING (uid) JOIN public.tbl_studiengang USING(oe_kurzbz) @@ -420,6 +424,20 @@ class mitarbeiter extends benutzer { $sql_query.=" AND funktion_kurzbz=".$this->db_add_param($fkt_kurzbz); } + if(!is_null($datum_von)) + { + if($datum_von=='') + $sql_query.=" AND (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now())"; + else + $sql_query.=" AND (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=".$this->db_add_param($datum_von).")"; + } + if(!is_null($datum_bis)) + { + if($datum_bis=='') + $sql_query.=" AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())"; + else + $sql_query.=" AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=".$this->db_add_param($datum_bis).")"; + } if ($stge!=null) { $in=''; diff --git a/include/organisationseinheit.class.php b/include/organisationseinheit.class.php index 0f22e5aa6..e1a7ba205 100644 --- a/include/organisationseinheit.class.php +++ b/include/organisationseinheit.class.php @@ -61,9 +61,12 @@ class organisationseinheit extends basis_db /** * Liefert alle Organisationseinheiten + * @param $aktiv + * @param $lehre + * @param $order Sortierreihenfolge. Standard: organisationseinheittyp_kurzbz, oe_kurzbz * @return true wenn ok, false im Fehlerfall */ - public function getAll($aktiv=null, $lehre=null) + public function getAll($aktiv=null, $lehre=null, $order='organisationseinheittyp_kurzbz, oe_kurzbz') { $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE 1=1"; @@ -73,7 +76,7 @@ class organisationseinheit extends basis_db if(!is_null($lehre)) $qry.=" AND lehre=".$this->db_add_param($lehre, FHC_BOOLEAN); - $qry .=" ORDER BY organisationseinheittyp_kurzbz, oe_kurzbz"; + $qry .=" ORDER BY ".$order; if($this->db_query($qry)) { @@ -550,5 +553,125 @@ class organisationseinheit extends basis_db return false; } } + + /** + * Sucht nach einer Organisationseinheit + * @param type $oetyp_kurzbz + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function search($searchItem) + { + $qry = 'SELECT * FROM public.tbl_organisationseinheit WHERE + (LOWER(bezeichnung) LIKE LOWER(\'%'.(implode(' ',$searchItem)).'%\') OR + LOWER(organisationseinheittyp_kurzbz) LIKE LOWER(\'%'.(implode(' ',$searchItem)).'%\')) + ORDER BY organisationseinheittyp_kurzbz, bezeichnung;'; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new organisationseinheit(); + + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->oe_parent_kurzbz = $row->oe_parent_kurzbz; + $obj->bezeichnung = $row->bezeichnung; + $obj->organisationseinheittyp_kurzbz = $row->organisationseinheittyp_kurzbz; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->mailverteiler = $this->db_parse_bool($row->mailverteiler); + $obj->lehre = $this->db_parse_bool($row->lehre); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Organisationseinheiten'; + return false; + } + } + + /** + * Laedt alle Organisationseinheiten, sortiert nach den am haeufigsten vom User in der Zeitaufzeichnung verwendeten + * + *

Optionaler Zeitraum (Tage in die Vergangenheit), in denen die OE verwendet wurde
+ * Optionale Anzahl an Ereignissen im angegebenen Zeitraum, um die OE zu beruecksichtigen

+ * + * @param string $user uid + * @param integer $zeitraum Anzahl Tage in die Vergangenheit, die fuer das Auftreten der OE beruecksichtigt werden sollen + * @param integer $anzahl_ereignisse default: 3 Wie oft soll diese OE mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden + * @param boolean $aktiv + */ + public function getFrequent($user, $zeitraum=null, $anzahl_ereignisse='3', $aktiv=null) + { + if(!is_numeric($anzahl_ereignisse)) + { + $this->errormsg = "anzahl_ereignisse muss eine gueltige Zahl sein"; + return false; + } + + if (!is_null($zeitraum) && $zeitraum>0 && is_numeric($zeitraum)) + $zeit = "AND tbl_zeitaufzeichnung.start>=(now()::date-$zeitraum)"; + else + $zeit = ""; + + $qry = "SELECT + oe_kurzbz, + oe_parent_kurzbz, + bezeichnung, + organisationseinheittyp_kurzbz, + aktiv, + lehre, + sum(a.anzahl) AS anzahl FROM ( + SELECT + tbl_organisationseinheit.*, + (SELECT COUNT (tbl_zeitaufzeichnung.*) FROM campus.tbl_zeitaufzeichnung + WHERE tbl_organisationseinheit.oe_kurzbz IN (tbl_zeitaufzeichnung.oe_kurzbz_1,tbl_zeitaufzeichnung.oe_kurzbz_2) AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)." + $zeit) AS anzahl + FROM public.tbl_organisationseinheit + WHERE + (SELECT COUNT (tbl_zeitaufzeichnung.*) FROM campus.tbl_zeitaufzeichnung + WHERE tbl_organisationseinheit.oe_kurzbz IN (tbl_zeitaufzeichnung.oe_kurzbz_1,tbl_zeitaufzeichnung.oe_kurzbz_2) AND tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)." + $zeit) > $anzahl_ereignisse + GROUP BY tbl_organisationseinheit.oe_kurzbz, tbl_organisationseinheit.oe_parent_kurzbz, tbl_organisationseinheit.bezeichnung, tbl_organisationseinheit.organisationseinheittyp_kurzbz, tbl_organisationseinheit.aktiv, tbl_organisationseinheit.lehre, anzahl + + UNION + + SELECT + tbl_organisationseinheit.*, + '0' AS anzahl + FROM public.tbl_organisationseinheit"; + + if(!is_null($aktiv)) + $qry.=" WHERE aktiv=".$this->db_add_param($aktiv, FHC_BOOLEAN); + + $qry .=" ) AS a + GROUP BY oe_kurzbz,oe_parent_kurzbz,bezeichnung,organisationseinheittyp_kurzbz,aktiv,lehre + ORDER BY anzahl DESC, bezeichnung"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new organisationseinheit(); + + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->oe_parent_kurzbz = $row->oe_parent_kurzbz; + $obj->bezeichnung = $row->bezeichnung; + $obj->organisationseinheittyp_kurzbz = $row->organisationseinheittyp_kurzbz; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->lehre = $this->db_parse_bool($row->lehre); + $obj->anzahl = $row->anzahl; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Organisationseinheiten'; + return false; + } + } } ?> diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index ed4753609..d2206acd9 100644 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -302,8 +302,8 @@ class zeitaufzeichnung extends basis_db /** * Laedt die Zeitaufzeichnungen eines Users. Default: Die letzten 40 Tage - * @param $user - * @param $days deafult: 40 Tage + * @param string $user + * @param integer $days deafult: 40 Tage */ public function getListeUser($user, $days='40') { diff --git a/locale/de-AT/passwort.php b/locale/de-AT/passwort.php index 717a4ddda..272a887f0 100644 --- a/locale/de-AT/passwort.php +++ b/locale/de-AT/passwort.php @@ -2,13 +2,13 @@ $this->phrasen['passwort/Title']='Passwort ändern'; $this->phrasen['passwort/PasswortAenderFuer']='Passwort ändern für User %s %s ( %s )'; $this->phrasen['passwort/InfotextPolicy']='Das Passwort muss zumindest 8 Zeichen enthalten, davon mindestens 1 Großbuchstabe, -1 Kleinbuchstabe und eine Ziffer!

-Das Passwort darf keine Leerzeichen und Umlaute enthalten!
+1 Kleinbuchstabe und eine Ziffer.
+Das Passwort darf keine Leerzeichen und Umlaute enthalten.
Erlaubte Sonderzeichen sind: -$#[]{}!().,*:;_'; $this->phrasen['passwort/AltesPasswort']='Altes Passwort'; $this->phrasen['passwort/NeuesPasswort']='Neues Passwort'; -$this->phrasen['passwort/PasswortWiederholung']='Wiederholung des neuen Passwort'; +$this->phrasen['passwort/PasswortWiederholung']='Wiederholung des neuen Passworts'; $this->phrasen['passwort/PasswortAendern']='Passwort ändern'; $this->phrasen['passwort/MinLaenge']='Das neue Passwort muss mindestens 8 Zeichen lang sein.'; $this->phrasen['passwort/Grossbuchstabe']='Das neue Passwort muss mindestens einen Grossbuchstaben enthalten.'; @@ -24,7 +24,7 @@ $this->phrasen['passwort/NoHttps']='ACHTUNG - Sie verwenden eine unverschlüssel $this->phrasen['passwort/ZuHttpsWechseln']='Jetzt zu verschlüsselter Verbindung wechseln'; $this->phrasen['passwort/CaptchaEingabe']='Tippen Sie die angezeigten
Zeichen in das untere Feld.'; $this->phrasen['passwort/ReloadCaptcha']='Ich kann das Bild nicht lesen - neu laden'; -$this->phrasen['passwort/PasswortWaehlen']='Bitte wählen Sie ein Passwort für Ihren Account'; +$this->phrasen['passwort/PasswortWaehlen']='Bitte wählen Sie ein Passwort für Ihren Account.'; $this->phrasen['passwort/AccountAktivierung']='Account Aktivierung'; ?> diff --git a/locale/de-AT/zeitaufzeichnung.php b/locale/de-AT/zeitaufzeichnung.php index d6b78594a..0c5ea5199 100644 --- a/locale/de-AT/zeitaufzeichnung.php +++ b/locale/de-AT/zeitaufzeichnung.php @@ -16,6 +16,8 @@ $this->phrasen['zeitaufzeichnung/sieSindDerzeitKeinenProjektenZugeordnet']='Sie $this->phrasen['zeitaufzeichnung/fehlerBeimErmittelnDerProjekte']='Fehler beim Ermitteln der Projekte'; $this->phrasen['zeitaufzeichnung/organisationseinheit1']='Organisationseinheit 1'; $this->phrasen['zeitaufzeichnung/organisationseinheit2']='Organisationseinheit 2'; +$this->phrasen['zeitaufzeichnung/organisationseinheiten']='Organisationseinheit(en)'; +$this->phrasen['zeitaufzeichnung/oe']='OE'; $this->phrasen['zeitaufzeichnung/service']='Service'; $this->phrasen['zeitaufzeichnung/kunde']='Kunde'; $this->phrasen['zeitaufzeichnung/alsNeuenEintragSpeichern']='Als neuen Eintrag speichern'; @@ -24,8 +26,20 @@ $this->phrasen['zeitaufzeichnung/oderKartennummerOptional']='oder Kartennummer ( $this->phrasen['zeitaufzeichnung/nameEingeben']='Name eingeben'; $this->phrasen['zeitaufzeichnung/aktuelleZeitLaden']='Aktuelle Zeit laden'; $this->phrasen['zeitaufzeichnung/alsEndzeitUebernehmen']='Als Endzeit übernehmen'; -$this->phrasen['zeitaufzeichnung/uebersicht']='Übersicht'; +$this->phrasen['zeitaufzeichnung/alsStartzeitUebernehmen']='Als Startzeit übernehmen'; +$this->phrasen['zeitaufzeichnung/uebersicht']='Projektübersicht'; $this->phrasen['zeitaufzeichnung/zeitraumAuffallendHoch']='Achtung, eingegebener Zeitraum ist auffallend hoch. \nDaten wurden gespeichert.'; $this->phrasen['zeitaufzeichnung/bisDatumKleinerAlsVonDatum']='Das Bis-Datum darf nicht kleiner als das Von-Datum sein'; $this->phrasen['zeitaufzeichnung/tagessumme']='Tagessumme:'; +$this->phrasen['zeitaufzeichnung/wochensumme']='Wochensumme:'; +$this->phrasen['zeitaufzeichnung/wochensummeEintraege']='Wochensumme Einträge'; +$this->phrasen['zeitaufzeichnung/wochensummeArbeitszeit']='Wochensumme Arbeitszeit'; +$this->phrasen['zeitaufzeichnung/xTageAnsicht']='%s Tage Ansicht'; +$this->phrasen['zeitaufzeichnung/endeXTageAnsicht']='Ende der %s Tage Ansicht'; +$this->phrasen['zeitaufzeichnung/alleAnzeigen']='Alle anzeigen'; +$this->phrasen['zeitaufzeichnung/alleEintraege']='Alle Einträge'; +$this->phrasen['zeitaufzeichnung/summeEintraege']='Summe Einträge'; +$this->phrasen['zeitaufzeichnung/arbeitszeit']='Arbeitszeit'; +$this->phrasen['zeitaufzeichnung/pause']='Pausen';'inkl. 30 min. Pflichtpause'; +$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='inkl. 30 min. Pflichtpause'; ?> diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php index b353da0a0..8588a045f 100644 --- a/locale/en-US/zeitaufzeichnung.php +++ b/locale/en-US/zeitaufzeichnung.php @@ -16,6 +16,8 @@ $this->phrasen['zeitaufzeichnung/sieSindDerzeitKeinenProjektenZugeordnet']='You $this->phrasen['zeitaufzeichnung/fehlerBeimErmittelnDerProjekte']='Error retrieving project data'; $this->phrasen['zeitaufzeichnung/organisationseinheit1']='Organisation Unit 1'; $this->phrasen['zeitaufzeichnung/organisationseinheit2']='Organisation Unit 2'; +$this->phrasen['zeitaufzeichnung/organisationseinheiten']='Organisation Unit(s)'; +$this->phrasen['zeitaufzeichnung/oe']='OU'; $this->phrasen['zeitaufzeichnung/service']='Service'; $this->phrasen['zeitaufzeichnung/kunde']='Client'; $this->phrasen['zeitaufzeichnung/alsNeuenEintragSpeichern']='Save as new'; @@ -24,7 +26,20 @@ $this->phrasen['zeitaufzeichnung/oderKartennummerOptional']='or number of card ( $this->phrasen['zeitaufzeichnung/nameEingeben']='Enter name'; $this->phrasen['zeitaufzeichnung/aktuelleZeitLaden']='Load current time'; $this->phrasen['zeitaufzeichnung/alsEndzeitUebernehmen']='Transfer to endtime'; -$this->phrasen['zeitaufzeichnung/uebersicht']='Overview'; +$this->phrasen['zeitaufzeichnung/alsStartzeitUebernehmen']='Transfer to starttime'; +$this->phrasen['zeitaufzeichnung/uebersicht']='Projectoverview'; $this->phrasen['zeitaufzeichnung/zeitraumAuffallendHoch']='Warning! Period entered is noticeably long. \nDates were saved.'; -$this->phrasen['zeitaufzeichnung/bisDatumKleinerAlsVonDatum']='The "To" date may not be earlier than the "From" date.'; +$this->phrasen['zeitaufzeichnung/bisDatumKleinerAlsVonDatum']='The \'To\' date may not be earlier than the \'From\' date.'; +$this->phrasen['zeitaufzeichnung/tagessumme']='Total day:'; +$this->phrasen['zeitaufzeichnung/wochensumme']='Total week:'; +$this->phrasen['zeitaufzeichnung/wochensummeEintraege']='Total week'; +$this->phrasen['zeitaufzeichnung/wochensummeArbeitszeit']='Total week working time'; +$this->phrasen['zeitaufzeichnung/xTageAnsicht']='%s days view'; +$this->phrasen['zeitaufzeichnung/endeXTageAnsicht']='End of %s days view'; +$this->phrasen['zeitaufzeichnung/alleAnzeigen']='Show all'; +$this->phrasen['zeitaufzeichnung/alleEintraege']='All entries'; +$this->phrasen['zeitaufzeichnung/summeEintraege']='Total'; +$this->phrasen['zeitaufzeichnung/arbeitszeit']='Working time'; +$this->phrasen['zeitaufzeichnung/pause']='Breaks'; +$this->phrasen['zeitaufzeichnung/inklusicePlichtpause']='incl. 30 min. lunch break'; ?> \ No newline at end of file diff --git a/skin/images/arrow-next.png b/skin/images/arrow-next.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3f65d33d303315f0d8d9dd03c7e7e2427d4950 GIT binary patch literal 930 zcmV;T16}-yP)b zm0M^XRTPH5HM8gBV(mpKDJa$_Z|#GH3N?w)f>s1UMXmZGQl%7pX-P>7f}&tiq(1aT zP)ljdLx@@mDPl`Bh9;&enie%Q#!J+svBm_`ljO{0&t5*9IdzgY(T8-w&&-B3-`fA$ zi`k;8T#fLq3ibbj8=Hf!`X=+>l7rQ;d2QV-?>9CVb}uOyV8_ERRIj^vt-Jr}^J`7#mgi;JV)-V&XlM@pz)^Qubt9p3w))KZP8v6Cty-~c zRl~=9ZT*|}%9hiw>&TVBk{`E*J%R4u*)k_V)uAX(9bH4M2p)H=X<%%8)E(<;`P*81 z@8<{N{{IBOvg2J&{nVa86~&Rd6sHcSmeg5NwcJ*BHyV2!{p9dWDJ(v9>J8g5$L0J= zsk213L}W|EX-H&4k~AVoLt+~ery;Q|@y+iixR{RdYHa50=@ zc;Z`>a*MNG;dVYeab$LCdg4%TZMthga6bIN!w)=6m3OItX9Q0?*00)%Kf9c^j>EIlQ#1Qc zA57l?;H7zB5ee#>%FD+$>_Y(0NEvPf-v}qi-lVpshC8o+i1CprJ$AfhX7ZQl+3(t2 zH&6>05s6eaF&WeV1%>gq+V-!$Z0APe-Os&PsP>n$@w!Jj_x-uF^Rtr^!@atFw9gFz zHT*jWDk5oR$3Ecq9kAr&;el~2&q-4lO(_RF6KKCrtkj_?;y0348J zvVd8%$N30LAs>C(5f2Uy_MAE5UP~ip7D;y%aK4(KDFy_}Bhr4nHU9O7(L-n7bFEo! zk}1x<%d6Z9Rkb2Q1|nz80wzuLs~`JES_Y1~?yQi@K`QVBC;_3W>YRUtl<7g%+ko=a zR2)dofzERo0gb zl}%_|RTze!@0@e*&7V^HBN&Y|1&xTHg2tGcEZQg$sloamid{(QrYma`p)R6`8xe$x zE=)JAVs%lCB0?>;8x67IczQ|E_9Y~NZ8{U=yn5|bNt zZ{FN-`>T5f542e0(zO_A*m+=BT65yYyKmi^zpwkzroe@3VKxTmpO<#Qo$9}PN9Ubg z_Xgiie@@TlL5!nPUT}-K{lP!##V{MR`u1A(tAcYQ;T_gAofzD<^P1~6-C!rCJ_VE{ zO?Y9~Tg^rcf*`V-pKddeGBNcDMl99@d@*?#BMu`5 zYb=66M96P>ym1t{;b7mot2ey7qkmV+`Nb)IK6?gh0-Om*H6=|GtZ^8z_|#xB$4MHa zD6$$jKjIFyZ|rzxApcm)!!tZo00$ zhq5n{niALwE`qSx617;GS}jp)^&B)CQmI@XtfQKK{hHtR*X)JiW5*8{*M}YSbUs87 z1lYjfLPHRlDtrlQago7TL4k#H%e?#y8Bg9ja)0mkw!Y3Mr7-(3 zYAQUqh^+o!nj9Hs){H z=}ylcLsNMD&@1I~F^*P_E-*KL76XJLlGGgAOs=NizD)j@|COP{pFB8!alR|pGZbnf z#AOW%WB!5iMHYZ^rc$=oSgzquXnvZ7!rRH-LgDnu&rXb&7mKAv<@GDAIZiV9I`7ewn;fJhF#0jl@vQT*g_QU!iIgs_I1~i>lhOu8{-W_eYbl%HYh8>o&{o zBxWuf-PgfmU=b*(s!IKhkt#g^qHK3{6G$e_R6k`ID61~NDss8UR75P*@7&g@Hcf4! d1W0rh$lr11Sh~C<&aD6d002ovPDHLkV1hiw#cluq literal 0 HcmV?d00001 diff --git a/system/checksystem.php b/system/checksystem.php index f1fa21fd8..1f2ca0cd4 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2108,6 +2108,17 @@ if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_studienplan_lehrveranst echo ' lehre.tbl_studienplan_lehrveranstaltung: Spalte sort hinzugefuegt!
'; } +// Spalte sort in fue.tbl_aktivitaet +if(!$result = @$db->db_query("SELECT sort FROM fue.tbl_aktivitaet LIMIT 1;")) +{ + $qry = "ALTER TABLE fue.tbl_aktivitaet ADD COLUMN sort integer;"; + + if(!$db->db_query($qry)) + echo 'fue.tbl_aktivitaet: '.$db->db_last_error().'
'; + else + echo ' fue.tbl_aktivitaet: Spalte sort hinzugefuegt!
'; +} + echo '


'; $tabellen=array(