Index: inc/class.boconfig.inc.php =================================================================== RCS file: /cvsroot/phpgroupware/projects/inc/class.boconfig.inc.php,v retrieving revision 1.18 diff -u -r1.18 class.boconfig.inc.php --- inc/class.boconfig.inc.php 2 May 2004 00:11:55 -0000 1.18 +++ inc/class.boconfig.inc.php 3 May 2004 16:27:15 -0000 @@ -408,5 +408,63 @@ { $this->soconfig->save_event($values); } + + /** + * Configure the worktime statusmail. The method can used for get and set the configuration (mail_type => (off | weekly | monthly). + * @param array $values contains the action (get or set) and the value set by the user + * @return mixed array when get the configuration; boolean if set the configuration: true if config was saved, otherwise false + */ + function config_worktime_statusmail($values) + { + if(!isset($values['action'])) + return false; + + $config = CreateObject('phpgwapi.config','projects'); + $config->read_repository(); + + switch($values['action']) + { + case 'get': + if(isset($config->config_data['worktime_statusmail'])) + $mail_type = $config->config_data['worktime_statusmail']; + else + $mail_type = 'off'; + + return $mail_type; + break; + case 'save': + if(!isset($values['mail_type'])) + return false; + + switch($values['mail_type']) + { + case 'off': + $mail_type = 'off'; + break; + case 'weekly': + $mail_type = 'weekly'; + break; + case 'monthly': + $mail_type = 'monthly'; + break; + default: + return false; + break; + } + + $config->value('worktime_statusmail', $mail_type); + $config->save_repository(); + + // set async service + $start = mktime(0,0,0,1,1,2003); // from specified date + $this->boprojects->update_async($mail_type, $start); + + return true; + break; + default: + return false; + break; + } + } } ?> Index: inc/class.boprojects.inc.php =================================================================== RCS file: /cvsroot/phpgroupware/projects/inc/class.boprojects.inc.php,v retrieving revision 1.132 diff -u -r1.132 class.boprojects.inc.php --- inc/class.boprojects.inc.php 2 May 2004 20:56:52 -0000 1.132 +++ inc/class.boprojects.inc.php 3 May 2004 16:27:15 -0000 @@ -54,7 +54,8 @@ 'read_abook' => True, 'read_single_contact' => True, 'return_value' => True, - 'change_owner' => True + 'change_owner' => True, + 'async_worktime_statusmail' => True ); function boprojects($is_active=False, $action = '') @@ -2108,5 +2109,322 @@ } return False; } + + /** + * Send all employees a project status mail. This method is called by async servoce. + * @param array $date contains the last async date + * @return boolean true if successfully send mails, otherwise false + */ + function async_worktime_statusmail($data=array()) + { + set_time_limit(0); + $accounts = CreateObject('phpgwapi.accounts'); + + if(($data == false) || !is_array($data) || + !isset($data['mail_type']) || !isset($data['last_date']) + ) + return false; + + $mail_type = $data['mail_type']; + $start_date = $data['last_date']; + $end_date = time(); + + // create list of employees + $employees = $this->read_projects_acl(true); + + if(is_array($employees)) + { + // for each employee crceate and send status mail + while(list($no_use, $employee_id) = each($employees)) + { + $prefs = CreateObject('phpgwapi.preferences', $employee_id); + + // create employee output + $body = ''; + + $employee_lid = $employee_pname = $employee_lname = ''; + $accounts->get_account_name($employee_id, $employee_lid, $employee_pname, $employee_lname); + $fullname = $employee_pname.' '.$employee_lname; + + $employee_email = $prefs->email_address($employee_id); + if(!$employee_email) + { + error_log("No email address found for ".$fullname." (employee_id = ".$employee_lid.")"); + continue; + } + + // get worktimes for employee + $worktimes = $this->get_emp_worktimes($employee_id, $start_date, $end_date, 'edate'); + if(!$worktimes) + continue; + + // create mail + $timelen = date('d.m.Y', $start_date).' - '.date('d.m.Y', $end_date); + $subject = lang('time tracker').': '.$timelen; + $newline = "\r\n"; + + $body .= str_repeat('=',75).$newline; + $body .= $this->format_string(lang('time tracker'), 25); + $body .= $this->format_string($timelen, 25, '', ' ', STR_PAD_MIDDLE); + $body .= $this->format_string($fullname, 25, '...', ' ', STR_PAD_LEFT).$newline; + $body .= str_repeat('=',75).$newline; + $body .= $newline.$newline; + + while(list($no_use,$project_id) = each($worktimes['projects'])) + { + $project_data = $worktimes[$project_id]['project_data']; + $project_hours = $worktimes[$project_id]['hour_data']; + + $body .= str_repeat('-',75).$newline; + $proj_title_name = lang('Project').': '.$project_data['project_title']; + $body .= $this->format_string($proj_title_name, 60).' '; + $body .= $this->format_string($project_data['project_number'], 14, '...', ' ', STR_PAD_LEFT); + $body .= $newline; + $body .= str_repeat('-',75).$newline; + + $found_hours = false; + while(list($hour_id, $hour_data) = each($project_hours)) + { + $found_hours = true; + $hour = $this->format_minutes($hour_data['minutes']).' '.$hour_data['descr']; + $body .= $this->format_string($hour, 65).' '; + $body .= $this->format_string(lang($hour_data['status']), 9, '...', ' ', STR_PAD_LEFT); + $body .= $newline; + } + + if($found_hours == false) + { + $body .= 'keine Stunden erfasst'.$newline; + } + + $body .= str_repeat('-',75).$newline; + $body .= $this->format_minutes($project_data['sum_minutes']).' '.lang('total').' '.lang('Project').$newline; + $body .= str_repeat('-',75).$newline; + $body .= $newline.$newline; + } + + $body .= str_repeat('=',75).$newline; + $body .= $this->format_minutes($worktimes['sum_minutes']).' '.lang('total').' '.lang('all').' '.lang('projects').$newline; + $body .= str_repeat('=',75).$newline; + + // send mail + if(!is_object($GLOBALS['phpgw']->send)) + { + $GLOBALS['phpgw']->send = CreateObject('phpgwapi.send'); + } + + $sender = $employee_email; + $to = $employee_email; + $subject = $GLOBALS['phpgw']->send->encode_subject($subject); + + $returncode = $GLOBALS['phpgw']->send->msg('email',$to,$subject,$body,'','','','',$sender); + if (!$returncode) // not nice, but better than failing silently + { + error_log('fail to send status mail ('.$employee_email.') for '.$fullname); + } + + } // end while employee + } // end if employee + + $this->update_async($mail_type, $end_date); + return true; + } + + /** + * Gets the projects and tracked worktimes of en employee between a start and end date + * @param integer $employee_id the account id of the employee + * @param integer $start_date timestamp of start date + * @param integer $end_date timestamp of end date + * @param string $date_type specifies the type of calculating the worktimes: 'sdate' means start date of a worktime must between start and end date; 'edate' means end date of a worktime must between start and end date; 'both' means start or end date of a worktime must between start and end date + * @return array contain all projects of employee and the tracked worktimes + */ + function get_emp_worktimes($employee_id, $start_date=0, $end_date=0, $date_type='both') + { + $worktimes = array(); + $worktimes['sum_minutes'] = 0; + $worktimes['projects'] = array(); + + // set employee id as account id + $this->soprojects->account = $employee_id; // will be used in soprojects + $this->sohours->account = $employee_id; // will be used in sohours + + // get list of employee projects + $projects_empl = $this->soprojects->get_acl_projects(); + + while(is_array($projects_empl) && (list(, $project_id) = each($projects_empl))) + { + $project = $this->soprojects->read_single_project($project_id); + if(!$project || !is_array($project)) + continue; + + if($project['status'] != 'active') + continue; + + // create project output + $project_data = array( + 'project_number' => $project['number'], + 'project_title' => $project['title'], + 'project_sdate' => $project['sdate'], + 'project_edate' => $project['edate'], + 'project_coord' => $project['coordinator'], + 'project_prio' => $project['priority'], + 'project_minutes' => 0 + ); + $worktimes['projects'][] = $project_id; + $worktimes[$project_id]['project_data'] = $project_data; + + // for each project get tracked worktime data + $values_hours = array( + 'project_id' => $project_id, + 'filter' => 'yours', + 'action' => 'all', + 'limit' => false, + 'order' => 'end_date' + ); + $hours = $this->sohours->read_hours($values_hours); + while(is_array($hours) && (list(, $hour) = each($hours))) + { + if($date_type == 'sdate') + { // sdate between start and end date + if(! ( ($start_date < $hour['sdate']) && ($hour['sdate'] < $end_date) ) ) + { + continue; + } + } + elseif($date_type == 'edate') + { // edate between start and end date + if(! ( ($start_date < $hour['edate']) && ($hour['edate'] < $end_date) ) ) + { + continue; + } + } + elseif($date_type == 'both') + { // sdate and edate between start and end date + if(! ( ( ($start_date < $hour['sdate']) && ($hour['sdate'] < $end_date) ) + && ( ($start_date < $hour['edate']) && ($hour['edate'] < $end_date) ) + ) + ) + { + continue; + } + } + + // create output with desc, day and tracked time + $hour_data = array( + 'descr' => $hour['hours_descr'], + 'status' => $hour['status'], + 'sdate' => $hour['sdate'], + 'edate' => $hour['edate'], + 'minutes' => $hour['minutes'] + ); + $worktimes[$project_id]['hour_data'][$hour['hours_id']] = $hour_data; + + // create output with project tracked time sum + $worktimes[$project_id]['project_data']['sum_minutes'] += $hour['minutes']; + } + + if(!isset($worktimes[$project_id]['hour_data'])) + $worktimes[$project_id]['hour_data'] = array(); + + // sum up tracked worktime for all projects + $worktimes['sum_minutes'] += $worktimes[$project_id]['project_data']['sum_minutes']; + + }// end for each project + + return $worktimes; + } + + /** + * Update the async service for the worktime status mail. + * @param string $mail_type specifies the type of status mail repetition (off | weekly | monthly). + * @param integer $last_date timestamp of the last async. + * @return boolean true if update successful, otherwise false + */ + function update_async($mail_type, $last_date) + { + $async = CreateObject('phpgwapi.asyncservice'); + $aid = 'projects-worktime-statusmail'; + + if($mail_type == 'off') + { + // delete old async + $async->delete($aid); + } + else + { + switch($mail_type) + { + case 'weekly': + $times = array( + 'dow' => '1' + ); + break; + case 'monthly': + // first day in each month 0am + $times = array( + 'day' => 1 + ); + break; + default: + return false; + break; + } + + $async_data = array( + 'id' => $aid, + 'next' => $async->next_run($times), + 'times' => $times, + 'account_id' => $GLOBALS['phpgw_info']['user']['account_id'], + 'method' => 'projects.boprojects.async_worktime_statusmail', + 'data' => array( + 'last_date' => $last_date, + 'mail_type' => $mail_type + ) + ); + + $async->write($async_data); + } + + return true; + } + + /** + * Convert a minutes in a hours and minutes string like hh:mm + * @param integer $minutes the minutes to convert + * @return string the formated string with hh:mm + */ + function format_minutes($minutes = 0) + { + $h = (int) floor($minutes / 60); + $m = (int) floor($minutes % 60); + $time_str = sprintf("%02.2d:%02.2d", $h, $m); // hh:mm + return $this->format_string($time_str, 6, '', ' ', STR_PAD_LEFT); + } + + /** + * Pad and format a given string on a certain position. If string is leesser than padlen the string will be filled with the specified padstr. + * @param string $str the given string + * @param integer $padlen specifies the pad position + * @param string $trim specifies the string which is used when reduce the string + * @param string $padstr specifies the string for filling the given string up to the specified padlen + * @return string the padded and formated string + */ + function format_string($str, $padlem, $trim='...', $padstr=' ', $padtype=STR_PAD_RIGHT) + { + $strlen = strlen($str); + $trimlen = strlen($trim); + $sublen = $padlem-$trimlen; + + if($strlen > $sublen) + { + $str = substr($str,0,$sublen).$trim; + } + else + { + $str = str_pad($str, $padlem, $padstr, $padtype); + } + return $str; + } + } ?> Index: inc/class.uiconfig.inc.php =================================================================== RCS file: /cvsroot/phpgroupware/projects/inc/class.uiconfig.inc.php,v retrieving revision 1.27 diff -u -r1.27 class.uiconfig.inc.php --- inc/class.uiconfig.inc.php 2 May 2004 20:56:52 -0000 1.27 +++ inc/class.uiconfig.inc.php 3 May 2004 16:27:16 -0000 @@ -37,18 +37,19 @@ var $public_functions = array ( - 'edit_activity' => True, - 'list_activities' => True, - 'list_admins' => True, - 'list_roles' => True, - 'list_employees' => True, - 'edit_admins' => True, - 'abook' => True, - 'preferences' => True, - 'delete_pa' => True, - 'list_employees' => True, - 'list_events' => True, - 'edit_employee_factor' => True + 'edit_activity' => True, + 'list_activities' => True, + 'list_admins' => True, + 'list_roles' => True, + 'list_employees' => True, + 'edit_admins' => True, + 'abook' => True, + 'preferences' => True, + 'delete_pa' => True, + 'list_employees' => True, + 'list_events' => True, + 'edit_employee_factor' => True, + 'config_worktime_statusmail' => True ); function uiconfig() @@ -1171,6 +1172,65 @@ $GLOBALS['phpgw']->template->set_var('anon_mainscreen_checked',($prefs['mainscreen_showevents']?' CHECKED':'')); $GLOBALS['phpgw']->template->pfp('out','prefs'); + } + + function config_worktime_statusmail() + { + $mail_type = get_var('mail_type',array('POST','GET')); + $message = ' '; + + $this->set_app_langs(); + + if (isset($_POST['save'])) + { + $values = array('action' => 'save', 'mail_type' => $mail_type); + if($this->boconfig->config_worktime_statusmail($values) == true) + $message = lang('setting has been saved'); + else + $message = lang('setting has not been saved'); + } + + if(isset($_POST['done'])) + { + $GLOBALS['phpgw']->redirect_link('/admin/index.php'); + } + + $header_info = lang('config worktime statusmail'); + + $GLOBALS['phpgw_info']['flags']['app_header'] = lang('projects') . ': ' . $header_info; + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + + $GLOBALS['phpgw']->template->set_file(array('config' => 'config_worktime_statusmail.tpl')); + + $link_data['menuaction'] = 'projects.uiconfig.config_worktime_statusmail'; + $GLOBALS['phpgw']->template->set_var('action_url',$GLOBALS['phpgw']->link('/index.php',$link_data)); + $GLOBALS['phpgw']->template->set_var('worktime_statusmail_desc',lang('worktime statusmail')); + $GLOBALS['phpgw']->template->set_var('opt_off_desc',lang('off')); + $GLOBALS['phpgw']->template->set_var('opt_weekly_desc',lang('weekly')); + $GLOBALS['phpgw']->template->set_var('opt_monthly_desc',lang('monthly')); + $GLOBALS['phpgw']->template->set_var('message',$message); + + $mail_type_off = ''; + $mail_type_weekly = ''; + $mail_type_monthly = ''; + + $values = array('action' => 'get'); + $mail_type_selected = $this->boconfig->config_worktime_statusmail($values); + + switch($mail_type_selected) + { + case 'off': $mail_type_off = ' selected'; break; + case 'weekly': $mail_type_weekly = ' selected'; break; + case 'monthly': $mail_type_monthly = ' selected'; break; + default: $mail_type_off = ' selected'; break; + } + + $GLOBALS['phpgw']->template->set_var('selected_off', $mail_type_off); + $GLOBALS['phpgw']->template->set_var('selected_weekly', $mail_type_weekly); + $GLOBALS['phpgw']->template->set_var('selected_monthly', $mail_type_monthly); + + $GLOBALS['phpgw']->template->pfp('out','config'); } } ?> Index: inc/hook_admin.inc.php =================================================================== RCS file: /cvsroot/phpgroupware/projects/inc/hook_admin.inc.php,v retrieving revision 1.20 diff -u -r1.20 hook_admin.inc.php --- inc/hook_admin.inc.php 12 Jan 2004 17:25:27 -0000 1.20 +++ inc/hook_admin.inc.php 3 May 2004 16:27:16 -0000 @@ -15,6 +15,7 @@ $file = Array ( 'Site Configuration' => $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname), + 'Worktime statusmail' => $GLOBALS['phpgw']->link('/index.php','menuaction=projects.uiconfig.config_worktime_statusmail'), 'managing committee' => $GLOBALS['phpgw']->link('/index.php','menuaction=projects.uiconfig.list_admins&action=pmanager'), 'project administrators' => $GLOBALS['phpgw']->link('/index.php','menuaction=projects.uiconfig.list_admins&action=pad'), 'sales department' => $GLOBALS['phpgw']->link('/index.php','menuaction=projects.uiconfig.list_admins&action=psale'), Index: setup/phpgw_de.lang =================================================================== RCS file: /cvsroot/phpgroupware/projects/setup/phpgw_de.lang,v retrieving revision 1.36 diff -u -r1.36 phpgw_de.lang --- setup/phpgw_de.lang 22 Apr 2004 13:32:24 -0000 1.36 +++ setup/phpgw_de.lang 3 May 2004 16:27:16 -0000 @@ -1,240 +1,246 @@ -+ jobs projects de + Jobs -accounting common de Abrechnung -accounting factor projects de Abrechnungsfaktor -accounting factor for project projects de Abrechnungsfaktor für Projekt -accounting system projects de Abrechnungsart -active projects de Aktiv -activities projects de Tätigkeiten -activity projects de Tätigkeit -activity %1 has been added projects de Tätigkeit %1 wurde hinzugefügt. -activity %1 has been updated projects de Tätigkeit %1 wurde überarbeitet. -activity id projects de Tätigkeits-ID -add activity projects de Tätigkeit hinzufügen -Add job projects de Job hinzufügen -add milestone projects de Meilenstein hinzufügen -add project projects de Projekt hinzufügen -add work hours projects de Arbeitsstunden hinzufügen -administrator projects de Administrator -administrator list projects de Administrator Liste -amount projects de Betrag -anonymous public projects de Anonym öffentlich -archive projects de Archiv -are you sure you want to delete this activity projects de Sind Sie sicher, dass Sie diese Tätigkeit löschen wollen ? -are you sure you want to delete this project projects de Sind Sie sicher, dass Sie dieses Projekt löschen wollen ? -assign projects de Zuordnen -assign roles and events projects de Rollen und Ereignisse zuordnen -assignment has been deleted projects de Zuordnung wurde gelöscht. -assignment has been saved projects de Zuordnung wurde gespeichert. -assignment to project projects de Zuordnung zu Projekt -assignment to project %1 projects de Zuordnung zu Projekt %1 -assignment to role projects de Zuordnung zu Rolle -available projects de Verfügbar -bill per hour projects de Preis pro Stunde -bill per hour/workunit projects de Preis pro Stunde/Arbeitseinheit -bill per workunit projects de Preis pro Arbeitseinheit -billable projects de Abrechenbar -billable activities projects de Abrechenbare Aktivitäten -billed projects de Bezahlt -billed only projects de nur bezahlte -bookable activities projects de Buchbare Aktivitäten -budget projects de Budget -budget limit projects de Budget Limit -budget planned projects de Geplantes Budget -budget sum of all sub projects is bigger than the budget of the main project projects de Die Budgetsumme aller Unterprojekte ist größer als das Budget des Hauptprojektes.. -calculate projects de Berechnen -changed start date and end date projects de Start- und Enddatum wurden geändert. -changed start date and end date of projects bellow projects de Start- und Enddatum der im Folgenden aufgelisteten Projekte wurden geändert. -changes of project data projects de Änderungen von Projektdaten -closed projects de Abgeschlossen -color legend projects de Farblegende -continue projects de Fortsetzen -coordinator common de Koordinator -creator projects de Ersteller -customer projects de Kunde -customer nr projects de Kunden-Nr. -date created projects de Erstellungs-Datum -date due of milestone %1 of project %2 has been updated projects de Fälligkeit des Meilensteines %1 von Projekt %2 wurde geändert. -date due planned projects de Geplantes Enddatum -definition per project admin de Definition per Projekt -delete hours projects de Stunden löschen -description can not exceed 8000 characters in length projects de Beschreibung darf 8000 Zeichen nicht überschreiten. -discount projects de Rabatt -distance projects de Entfernung -Do you also want to delete all sub projects projects de Wollen Sie auch alle Unterprojekte löschen? -edit activity projects de Tätigkeit überarbeiten -Edit administrator list projects de Administratorliste bearbeiten -edit salesmen list projects de Liste der Verkäufer bearbeiten -edit job projects de Job bearbeiten -edit manager list projects de Liste der Vorstandsmitglieder bearbeiten -edit milestones projects de Meilensteine bearbeiten -edit project projects de Projekt bearbeiten -edit roles and events projects de Rollen und Ereignisse bearbeiten -edit work hours projects de Arbeitsstunden bearbeiten -employee projects de Mitarbeiter -employees projects de Mitarbeiter -end date has changed projects de Enddatum wurde geändert -ending date can not be after parent projects date due projects de Enddatum kann nicht hinter dem Enddatum des übergeordneten Projektes liegen. -ending date can not be after projects date due projects de Enddatum kann nicht hinter dem Enddatum des Projektes liegen. -ending date can not be before start date projects de Startdatum kann nicht hinter dem Enddatum liegen. -entry projects de Eintrag -event projects de Einträge -events common de Ereignisse -exact accounting [hh.mm] admin de Exakte Abrechnung [hh.mm] -external reference projects de Externe Referenz -extra budget projects de Extra Budget -extra budget sum of all sub projects is bigger than the extra budget of the main project projects de Summe des Extra Budgets aller Unterprojekte ist größer als das Extra Budget des Hauptprojektes. -factor employee projects de Faktor Mitarbeiter -factor project projects de Faktor Projekt -factor has been saved projects de Faktor wurede gespeichert. -from projects de Von -gantt chart projects de Gantt Chart -gantt chart from %1 to %2 projects de Gantt Chart von %1 bis %2 -generate activity id projects de Activitäts ID generieren ? -generate job id projects de Job ID generieren ? -generate project id projects de Projekt ID generieren ? -has reached projects de wurde erreicht -hours projects de Stunden -hours limit projects de Stunden Limit -hours of work day admin de Anzahl der Stunden eines Arbeitstages -id can not exceed 250 characters in length projects de ID darf 250 Zeichen nicht überschreiten. -if using activities admin de Wenn Tätigkeiten benutzt werden -if you are an administrator, please edit the site configuration for projects in the admin section projects de Sind Sie ein Administrator, bearbeiten Sie bitte die Konfiguration für Projekte in der Admin Sektion. -if you are not an administrator, please inform the administrator to configure projects projects de Sind Sie kein Administrator, informieren Sie bitte den Administrator zum Konfigurieren der Projekte Anwendung . -investment nr projects de Investitions-Nr -invoicing method projects de Art der Abrechnung -invoicing of work time admin de Arbrechnung von Arbeitszeit -job projects de Job -job has been added projects de Job wurde hinzugefügt. -job has been updated projects de Job wurde bearbeitet. -job id projects de Job-ID -job list projects de Jobliste -job manager projects de Jobmanager -jobs common de Jobs -large projects de Groß -last update projects de letzte Aktualisierung -list activities projects de Tätigkeitenliste -list budget projects de Budgetliste -list jobs projects de Jobliste -list projects projects de Projektliste -list work hours projects de Arbeitsstundenliste -main project projects de Hauptprojekt -manager projects de Vorstandsmitglied -managing committee admin de Vorstand -manager list projects de Liste der Vorstandsmitglieder -manuell entries projects de Manuelle Einträge -milestone projects de Meilenstein -milestones common de Meilensteine -milestone date due projects de Fälligkeit des Meilensteins -milestone has been deleted projects de Meilenstein wurde gelöscht. -milestone has been saved projects de Meilenstein wurde gespeichert. -minutes per workunit projects de Minuten pro Arbeitseinheit -month projects de Monat -move start date if pervious projects end date changes admin de Startdatum verschieben, wenn sich das Enddatum des vorausgehenden Projektes ändert -new date due of milestone %1: %2 projects de Neuer Fälligkeitstermin des Meilensteines %1: %2. -new end date projects de Neues Enddatum -new milestone projects de Neuer Meilenstein -new start date projects de Neues Startdatum -new project projects de Neues Projekt -nonactive common de Nicht aktiv -not billable projects de nicht abzurechnen -number projects de Nummer -old end date projects de Altes Enddatum -old start date projects de Altes Startdatum -open projects de Offen -open popup window projects de Popup Fenster öffnen -overall projects de Gesammt -parent project projects de Übergeordnetes Projekt -pause projects de Pause -per day projects de pro Tag -per hour projects de pro Stunde -per hour/workunit projects de pro Stunde/Arbeitseinheit -per workunit common de pro Arbeitseinheit -percent projects de Prozent -planned projects de Geplant -planned time sum of all sub projects is bigger than the planned time of the main project projects de Die Summe der geplanten Zeit aller Unterprojekte ist größer als die des Hauptprojektes. -please choose a project coordinator projects de Bitte wählen Sie einen Projekt Koordinator. -please choose activities for the project projects de Bitte wählen Sie Tätigkeiten für das Projekt. -please enter a remark projects de Bitte geben Sie einen Betreff an. -please choose the accounting system for the project projects de Bitte wählen Sie die Abrechnungsart. -please choose the columns to list in the projects preferences section projects de Bitte wählen Sie die Listenspalten in den Benutzereinstellungen für Projekte. -please specify the budget projects de Bitte geben Sie das Budget an. -please enter an id projects de Bitte geben Sie eine ID an. -please enter the bill projects de Bitte geben Sie den Preis pro Arbeitseinheit an. -please enter the minutes per workunit projects de Bitte geben Sie die Minuten pro Arbeitseinheit an. -please set the accounting factor for the project projects de Bitte geben Sie den Abrechnungsfaktor des Projektes an. -please specify the currency in the global preferences section common de Bitte geben Sie die Währung in der globalen Sektion der Benutzereinstellungen an. -please specify the budget projects de Bitte geben Sie das Budget an. -previous projects de Vorprojekt -previous project projects de Vorprojekt -previous projects end date has changed projects de Das Enddatum des Vorprojektes wurde geändert -processor projects de Bearbeiter -project projects de Projekt -project accounting admin de Projektabrechnung -project %1 has been saved projects de Projekt %1 wurde gespeichert. -project %1 has been updated projects de Projekt %1 wurde bearbeitet. -project administrators admin de Projektadministratoren -project date due projects en Projektfälligkeit -project dependencies common en Projektabhängigkeiten -project id common de Projekt-ID -projects common de Projekte -project url projects de Projekt URL -projects, which are assigned as sequencing projects de Nachfolgende Projekte -quality check projects de Qualität -reference projects de Referenz -remark projects de Betreff -remark can not exceed 8000 characters in length projects en Betreff darf 8000 Zeichen nicht überschreiten. -remark required projects de Betreff notwendig -result projects de Resultat -role projects de Rolle -roles common de Rollen -sales department admin de Vertrieb -salesman projects de Verkäufer -salesmen list projects de Liste der Verkäufer -save factor projects de Faktor speichern -save milestone projects de Milestone speichern -columns to show in the projects list projects de Spalten zum anzeigen in der Projektliste -select factor projects de Faktor auswählen -select groups projects de Gruppen auswählen -select main project projects de Hauptprojekt auswählen -select project projects de Projekt auswählen -select users projects de Benutzer auswählen -sequencing project projects de Nachfolgendes Projekt -show gantt chart projects de Gantt Chart anzeigen -start projects de Start -start date planned projects de Geplantes Startdatum -start date can not be before parent projects start date projects de Startdatum kann nicht vor dem Startdatum des übergeordneten Projektes liegen. -statistics projects de Statistiken -stop projects de Stop -sub project level %1 projects de Unterprojekt Level %1 -sum budget projects de Summe Budget -test projects de Test -that id has been used already projects de Diese ID ist bereits in Benutzung. -the choosen previous project does not have an end date specified projects de Für das gewählte Vorprojekt wurde kein Enddatum angegeben. -till projects de Bis -time of journey projects de Reisezeit -time planned projects de geplante Zeit -time tracker projects de Time Tracker -time used projects de verbrauchte Zeit -title can not exceed 250 characters in length projects de Titel darf 250 Zeichen nicht überschreiten. -use activities admin de Tätigkeiten benutzen -used billable projects de Verbraucht abzurechnen -used not billable projects de Verbraucht nicht abzurechnen -used total projects de Verbraucht total -user statistic projects de Benutzer Statistik -user statistics projects de Benutzer Statistiken -view gantt chart projects de Gantt Chart anzeigen -view employees projects de Mitarbeiter anzeigen -view job projects de Job anzeigen -view project projects de Projekt anzeigen -view projects projects de Projekte anzeigen -view work hours projects de Arbeitsstunden anzeigen -work date projects de Arbeitsdatum -work hours projects de Arbeitsstunden -work time projects de Arbeitszeit -workunit projects de Arbeitseinheit -workunits projects de Arbeitseinheiten -You have entered an invalid date due projects de Sie haben ein ungültiges Fälligkeitsdatum angegeben. -you have entered an invalid start date projects de Sie haben ein ungültiges Startdatum angegeben. -You have entered an invalid planned start date projects de Sie haben ein ungültiges geplantes Startdatum angegeben. -You have entered an invalid planned end date projects de Sie haben ein ungültiges geplantes Enddatum angegeben. -You have selected an invalid activity projects de Sie haben eine ungültige Tätigkeit angegeben. \ No newline at end of file ++ jobs projects de + Jobs +accounting common de Abrechnung +accounting factor projects de Abrechnungsfaktor +accounting factor for project projects de Abrechnungsfaktor für Projekt +accounting system projects de Abrechnungsart +active projects de Aktiv +activities projects de Tätigkeiten +activity projects de Tätigkeit +activity %1 has been added projects de Tätigkeit %1 wurde hinzugefügt. +activity %1 has been updated projects de Tätigkeit %1 wurde überarbeitet. +activity id projects de Tätigkeits-ID +add activity projects de Tätigkeit hinzufügen +Add job projects de Job hinzufügen +add milestone projects de Meilenstein hinzufügen +add project projects de Projekt hinzufügen +add work hours projects de Arbeitsstunden hinzufügen +administrator projects de Administrator +administrator list projects de Administrator Liste +amount projects de Betrag +anonymous public projects de Anonym öffentlich +archive projects de Archiv +are you sure you want to delete this activity projects de Sind Sie sicher, dass Sie diese Tätigkeit löschen wollen ? +are you sure you want to delete this project projects de Sind Sie sicher, dass Sie dieses Projekt löschen wollen ? +assign projects de Zuordnen +assign roles and events projects de Rollen und Ereignisse zuordnen +assignment has been deleted projects de Zuordnung wurde gelöscht. +assignment has been saved projects de Zuordnung wurde gespeichert. +assignment to project projects de Zuordnung zu Projekt +assignment to project %1 projects de Zuordnung zu Projekt %1 +assignment to role projects de Zuordnung zu Rolle +available projects de Verfügbar +bill per hour projects de Preis pro Stunde +bill per hour/workunit projects de Preis pro Stunde/Arbeitseinheit +bill per workunit projects de Preis pro Arbeitseinheit +billable projects de Abrechenbar +billable activities projects de Abrechenbare Aktivitäten +billed projects de Bezahlt +billed only projects de nur bezahlte +bookable activities projects de Buchbare Aktivitäten +budget projects de Budget +budget limit projects de Budget Limit +budget planned projects de Geplantes Budget +budget sum of all sub projects is bigger than the budget of the main project projects de Die Budgetsumme aller Unterprojekte ist größer als das Budget des Hauptprojektes.. +calculate projects de Berechnen +changed start date and end date projects de Start- und Enddatum wurden geändert. +changed start date and end date of projects bellow projects de Start- und Enddatum der im Folgenden aufgelisteten Projekte wurden geändert. +changes of project data projects de Änderungen von Projektdaten +closed projects de Abgeschlossen +color legend projects de Farblegende +continue projects de Fortsetzen +coordinator common de Koordinator +creator projects de Ersteller +customer projects de Kunde +customer nr projects de Kunden-Nr. +date created projects de Erstellungs-Datum +date due of milestone %1 of project %2 has been updated projects de Fälligkeit des Meilensteines %1 von Projekt %2 wurde geändert. +date due planned projects de Geplantes Enddatum +definition per project admin de Definition per Projekt +delete hours projects de Stunden löschen +description can not exceed 8000 characters in length projects de Beschreibung darf 8000 Zeichen nicht überschreiten. +discount projects de Rabatt +distance projects de Entfernung +Do you also want to delete all sub projects projects de Wollen Sie auch alle Unterprojekte löschen? +edit activity projects de Tätigkeit überarbeiten +Edit administrator list projects de Administratorliste bearbeiten +edit salesmen list projects de Liste der Verkäufer bearbeiten +edit job projects de Job bearbeiten +edit manager list projects de Liste der Vorstandsmitglieder bearbeiten +edit milestones projects de Meilensteine bearbeiten +edit project projects de Projekt bearbeiten +edit roles and events projects de Rollen und Ereignisse bearbeiten +edit work hours projects de Arbeitsstunden bearbeiten +employee projects de Mitarbeiter +employees projects de Mitarbeiter +end date has changed projects de Enddatum wurde geändert +ending date can not be after parent projects date due projects de Enddatum kann nicht hinter dem Enddatum des übergeordneten Projektes liegen. +ending date can not be after projects date due projects de Enddatum kann nicht hinter dem Enddatum des Projektes liegen. +ending date can not be before start date projects de Startdatum kann nicht hinter dem Enddatum liegen. +entry projects de Eintrag +event projects de Einträge +events common de Ereignisse +exact accounting [hh.mm] admin de Exakte Abrechnung [hh.mm] +external reference projects de Externe Referenz +extra budget projects de Extra Budget +extra budget sum of all sub projects is bigger than the extra budget of the main project projects de Summe des Extra Budgets aller Unterprojekte ist größer als das Extra Budget des Hauptprojektes. +factor employee projects de Faktor Mitarbeiter +factor project projects de Faktor Projekt +factor has been saved projects de Faktor wurede gespeichert. +from projects de Von +gantt chart projects de Gantt Chart +gantt chart from %1 to %2 projects de Gantt Chart von %1 bis %2 +generate activity id projects de Activitäts ID generieren ? +generate job id projects de Job ID generieren ? +generate project id projects de Projekt ID generieren ? +has reached projects de wurde erreicht +hours projects de Stunden +hours limit projects de Stunden Limit +hours of work day admin de Anzahl der Stunden eines Arbeitstages +id can not exceed 250 characters in length projects de ID darf 250 Zeichen nicht überschreiten. +if using activities admin de Wenn Tätigkeiten benutzt werden +if you are an administrator, please edit the site configuration for projects in the admin section projects de Sind Sie ein Administrator, bearbeiten Sie bitte die Konfiguration für Projekte in der Admin Sektion. +if you are not an administrator, please inform the administrator to configure projects projects de Sind Sie kein Administrator, informieren Sie bitte den Administrator zum Konfigurieren der Projekte Anwendung . +investment nr projects de Investitions-Nr +invoicing method projects de Art der Abrechnung +invoicing of work time admin de Arbrechnung von Arbeitszeit +job projects de Job +job has been added projects de Job wurde hinzugefügt. +job has been updated projects de Job wurde bearbeitet. +job id projects de Job-ID +job list projects de Jobliste +job manager projects de Jobmanager +jobs common de Jobs +large projects de Groß +last update projects de letzte Aktualisierung +list activities projects de Tätigkeitenliste +list budget projects de Budgetliste +list jobs projects de Jobliste +list projects projects de Projektliste +list work hours projects de Arbeitsstundenliste +main project projects de Hauptprojekt +manager projects de Vorstandsmitglied +managing committee admin de Vorstand +manager list projects de Liste der Vorstandsmitglieder +manuell entries projects de Manuelle Einträge +milestone projects de Meilenstein +milestones common de Meilensteine +milestone date due projects de Fälligkeit des Meilensteins +milestone has been deleted projects de Meilenstein wurde gelöscht. +milestone has been saved projects de Meilenstein wurde gespeichert. +minutes per workunit projects de Minuten pro Arbeitseinheit +month projects de Monat +move start date if pervious projects end date changes admin de Startdatum verschieben, wenn sich das Enddatum des vorausgehenden Projektes ändert +new date due of milestone %1: %2 projects de Neuer Fälligkeitstermin des Meilensteines %1: %2. +new end date projects de Neues Enddatum +new milestone projects de Neuer Meilenstein +new start date projects de Neues Startdatum +new project projects de Neues Projekt +nonactive common de Nicht aktiv +not billable projects de nicht abzurechnen +number projects de Nummer +old end date projects de Altes Enddatum +old start date projects de Altes Startdatum +open projects de Offen +open popup window projects de Popup Fenster öffnen +overall projects de Gesammt +parent project projects de Übergeordnetes Projekt +pause projects de Pause +per day projects de pro Tag +per hour projects de pro Stunde +per hour/workunit projects de pro Stunde/Arbeitseinheit +per workunit common de pro Arbeitseinheit +percent projects de Prozent +planned projects de Geplant +planned time sum of all sub projects is bigger than the planned time of the main project projects de Die Summe der geplanten Zeit aller Unterprojekte ist größer als die des Hauptprojektes. +please choose a project coordinator projects de Bitte wählen Sie einen Projekt Koordinator. +please choose activities for the project projects de Bitte wählen Sie Tätigkeiten für das Projekt. +please enter a remark projects de Bitte geben Sie einen Betreff an. +please choose the accounting system for the project projects de Bitte wählen Sie die Abrechnungsart. +please choose the columns to list in the projects preferences section projects de Bitte wählen Sie die Listenspalten in den Benutzereinstellungen für Projekte. +please specify the budget projects de Bitte geben Sie das Budget an. +please enter an id projects de Bitte geben Sie eine ID an. +please enter the bill projects de Bitte geben Sie den Preis pro Arbeitseinheit an. +please enter the minutes per workunit projects de Bitte geben Sie die Minuten pro Arbeitseinheit an. +please set the accounting factor for the project projects de Bitte geben Sie den Abrechnungsfaktor des Projektes an. +please specify the currency in the global preferences section common de Bitte geben Sie die Währung in der globalen Sektion der Benutzereinstellungen an. +please specify the budget projects de Bitte geben Sie das Budget an. +previous projects de Vorprojekt +previous project projects de Vorprojekt +previous projects end date has changed projects de Das Enddatum des Vorprojektes wurde geändert +processor projects de Bearbeiter +project projects de Projekt +project accounting admin de Projektabrechnung +project %1 has been saved projects de Projekt %1 wurde gespeichert. +project %1 has been updated projects de Projekt %1 wurde bearbeitet. +project administrators admin de Projektadministratoren +project date due projects en Projektfälligkeit +project dependencies common en Projektabhängigkeiten +project id common de Projekt-ID +projects common de Projekte +project url projects de Projekt URL +projects, which are assigned as sequencing projects de Nachfolgende Projekte +quality check projects de Qualität +reference projects de Referenz +remark projects de Betreff +remark can not exceed 8000 characters in length projects en Betreff darf 8000 Zeichen nicht überschreiten. +remark required projects de Betreff notwendig +result projects de Resultat +role projects de Rolle +roles common de Rollen +sales department admin de Vertrieb +salesman projects de Verkäufer +salesmen list projects de Liste der Verkäufer +save factor projects de Faktor speichern +save milestone projects de Milestone speichern +columns to show in the projects list projects de Spalten zum anzeigen in der Projektliste +select factor projects de Faktor auswählen +select groups projects de Gruppen auswählen +select main project projects de Hauptprojekt auswählen +select project projects de Projekt auswählen +select users projects de Benutzer auswählen +sequencing project projects de Nachfolgendes Projekt +show gantt chart projects de Gantt Chart anzeigen +start projects de Start +start date planned projects de Geplantes Startdatum +start date can not be before parent projects start date projects de Startdatum kann nicht vor dem Startdatum des übergeordneten Projektes liegen. +statistics projects de Statistiken +stop projects de Stop +sub project level %1 projects de Unterprojekt Level %1 +sum budget projects de Summe Budget +test projects de Test +that id has been used already projects de Diese ID ist bereits in Benutzung. +the choosen previous project does not have an end date specified projects de Für das gewählte Vorprojekt wurde kein Enddatum angegeben. +till projects de Bis +time of journey projects de Reisezeit +time planned projects de geplante Zeit +time tracker projects de Time Tracker +time used projects de verbrauchte Zeit +title can not exceed 250 characters in length projects de Titel darf 250 Zeichen nicht überschreiten. +use activities admin de Tätigkeiten benutzen +used billable projects de Verbraucht abzurechnen +used not billable projects de Verbraucht nicht abzurechnen +used total projects de Verbraucht total +user statistic projects de Benutzer Statistik +user statistics projects de Benutzer Statistiken +view gantt chart projects de Gantt Chart anzeigen +view employees projects de Mitarbeiter anzeigen +view job projects de Job anzeigen +view project projects de Projekt anzeigen +view projects projects de Projekte anzeigen +view work hours projects de Arbeitsstunden anzeigen +work date projects de Arbeitsdatum +work hours projects de Arbeitsstunden +work time projects de Arbeitszeit +workunit projects de Arbeitseinheit +workunits projects de Arbeitseinheiten +You have entered an invalid date due projects de Sie haben ein ungültiges Fälligkeitsdatum angegeben. +you have entered an invalid start date projects de Sie haben ein ungültiges Startdatum angegeben. +You have entered an invalid planned start date projects de Sie haben ein ungültiges geplantes Startdatum angegeben. +You have entered an invalid planned end date projects de Sie haben ein ungültiges geplantes Enddatum angegeben. +You have selected an invalid activity projects de Sie haben eine ungültige Tätigkeit angegeben. +worktime statusmail common de Arbeitszeit Statusmail +weekly projects de wöchentlich +monthly projects de monatlich +off projects de deaktiviert +setting has been saved projects de Einstellungen wurden gespeichert +setting has not been saved projects de Einstellungen wurden nicht gespeichert Index: setup/phpgw_en.lang =================================================================== RCS file: /cvsroot/phpgroupware/projects/setup/phpgw_en.lang,v retrieving revision 1.49 diff -u -r1.49 phpgw_en.lang --- setup/phpgw_en.lang 25 Mar 2004 15:21:36 -0000 1.49 +++ setup/phpgw_en.lang 3 May 2004 16:27:16 -0000 @@ -236,3 +236,9 @@ You have entered an invalid planned start date projects en You have entered an invalid planned start date. You have entered an invalid planned end date projects en You have entered an invalid planned end date. You have selected an invalid activity projects en You have selected an invalid activity. +worktime statusmail common de Worktime Statusmail +weekly projects de weekly +monthly projects de monthly +off projects de off +setting has been saved projects de Setting was saved +setting has not been saved projects de Setting was not saved Index: templates/default/config_worktime_statusmail.tpl =================================================================== RCS file: templates/default/config_worktime_statusmail.tpl diff -N templates/default/config_worktime_statusmail.tpl --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/default/config_worktime_statusmail.tpl 3 May 2004 16:27:16 -0000 @@ -0,0 +1,24 @@ +

+
+ + + + + + + + + + + + + + +
{message}
{worktime_statusmail_desc}: + +
+
\ No newline at end of file