Index: openacs-4/packages/contacts/contacts.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/contacts.info,v
diff -u -r1.40 -r1.41
--- openacs-4/packages/contacts/contacts.info	19 Oct 2005 16:59:27 -0000	1.40
+++ openacs-4/packages/contacts/contacts.info	20 Oct 2005 16:05:31 -0000	1.41
@@ -43,7 +43,7 @@
 " section_name="Templates"/>
             <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="ConverttoJpg"  default="1" description="0 for no, 1 for yes. Flag to convert images to jpegs automatically" section_name="Photos"/>
             <parameter datatype="number"  min_n_values="1"  max_n_values="1"  name="DefaultPageSize"  default="50" description="The default page size for this contacts instance. Acceptable values are 0, 25, 50, 100 or 500. If set to 0 there will be no pagination which can be incredibly slow when you have more than a few hundred contacts."/>
-            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="DefaultPortletLayout"  default="/packages/contacts/lib/portlet" description="The src of the default portlet layout"/>
+            <parameter datatype="string"  min_n_values="1"  max_n_values="1"  name="DefaultPortletLayout"  default="/packages/project-manager/lib/portlet" description="The default portlet"/>
             <parameter datatype="number"  min_n_values="1"  max_n_values="1"  name="DefaultViewAttributes"  default="{email} {home_phone} {(h)} {work_phone} {(w)} {mobile_phone} {(m)}" description="The default attributes to view on the main contact page. This should be a list of attribute_name display_code to show for the attribute, the display code will only show up if the person/contact has a value for that attribute."/>
             <parameter datatype="number"  min_n_values="1"  max_n_values="1"  name="EmailAttachmentsAllowed"  default="1" description="1 for yes, 0 for no. Are email attachments allowed when sending messages?"/>
 	    <parameter datatype="number"  min_n_values="1"  max_n_values="1"  name="DisplayEmployersP" default="0" description="1 for yes, 0 for no. Display organization name behind username?"/>
Index: openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml,v
diff -u -r1.14 -r1.15
--- openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml	4 Oct 2005 08:48:36 -0000	1.14
+++ openacs-4/packages/contacts/catalog/contacts.de_DE.ISO-8859-1.xml	20 Oct 2005 16:05:33 -0000	1.15
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<message_catalog package_key="contacts" package_version="1.0d16" locale="de_DE" charset="ISO-8859-1">
+<message_catalog package_key="contacts" package_version="1.0d30" locale="de_DE" charset="ISO-8859-1">
 
   <msg key="--_select_a_group_--">-- eine Gruppe markieren --</msg>
   <msg key="--Create_New_Message--">-- Neue Nachricht erstellen --</msg>
@@ -75,6 +75,7 @@
   <msg key="complaint_status_help">Was ist der Status der Beschwerde</msg>
   <msg key="complaint_title_help">Kurze Bezeichnung, um die Beschwerde zu identifizieren</msg>
   <msg key="complaint_turnover_help">Umsatz, der mit dem Kunden im Bezug auf diese Beschwerde gemacht wurde </msg>
+  <msg key="Complaints">Beschwerden/Reklamationen:</msg>
   <msg key="Configuration_Error">KOnfigurationsfehler</msg>
   <msg key="Contact">Kontakt</msg>
   <msg key="Contact_-">Kontakt -&amp;gt;</msg>
@@ -114,7 +115,7 @@
   <msg key="does_not_contain_-">enth�lt nicht -&amp;gt;</msg>
   <msg key="does_not_exists">existiert nicht</msg>
   <msg key="Done">Erledigt</msg>
-  <msg key="Edit">�ndern</msg>
+  <msg key="Edit">Bearbeiten</msg>
   <msg key="Edit_a_Signature">Eine Signatur ver�ndern</msg>
   <msg key="Edit_complaint">Beschwerde ver�ndern</msg>
   <msg key="Edit_Details">Details �ndern</msg>
@@ -142,6 +143,7 @@
   <msg key="Footer">Fu�zeile</msg>
   <msg key="From">Von</msg>
   <msg key="Get">Lade</msg>
+  <msg key="Glossars">Glossare</msg>
   <msg key="Go">Suche</msg>
   <msg key="Go_to_search_results">Zu den Suchergebnissen gehen</msg>
   <msg key="Group">Gruppe</msg>
@@ -156,7 +158,7 @@
   <msg key="History">Historie</msg>
   <msg key="In_Searches">Suchen</msg>
   <msg key="in_the_search">in der Suche</msg>
-  <msg key="invalid">ung�ltig</msg>
+  <msg key="invalid">Unberechtigt</msg>
   <msg key="Invalid_Object_Type">ung�ltiger Objekttyp</msg>
   <msg key="irrelevant">irrelevant</msg>
   <msg key="is_-">ist -&gt;</msg>
@@ -362,6 +364,7 @@
   <msg key="Object_id">object_id</msg>
   <msg key="odd">ungerade</msg>
   <msg key="of">von</msg>
+  <msg key="Offers">Angebote</msg>
   <msg key="open">Offen</msg>
   <msg key="or">oder</msg>
   <msg key="Ordering">Reihenfolge</msg>
@@ -395,6 +398,7 @@
   <msg key="Processes">Prozesse</msg>
   <msg key="PROJECT">PROJEKT</msg>
   <msg key="Project">Projekt:</msg>
+  <msg key="Projects">Projekte</msg>
   <msg key="Public">�ffentlicher</msg>
   <msg key="Public_Messages">�ffentliche Nachrichten</msg>
   <msg key="Public_Page">�ffentliche Seite</msg>
@@ -458,9 +462,9 @@
   <msg key="Subject_is_required">Betreff muss ausgef�llt werden</msg>
   <msg key="Subquery">(Unter)Abfrage</msg>
   <msg key="subquery_help">Die (Unter)Abfrage, die durchgef�hrt wird, um das Ergebnis zu holen.</msg>
-  <msg key="Summary">Zusammenfassung</msg>
+  <msg key="Summary">�bersicht</msg>
   <msg key="Summary_View">�berblick</msg>
-  <msg key="Supplier">Freelancer:</msg>
+  <msg key="Supplier">Bearbeiter:</msg>
   <msg key="Table">Tabelle</msg>
   <msg key="Tasks">Aufgaben</msg>
   <msg key="The_action_specified_is_invalid">Die spezifizierte Aktion ist ung�ltig</msg>
@@ -476,10 +480,10 @@
   <msg key="this_var_name">Dieser &quot;Variablen Name&quot; existiert schon</msg>
   <msg key="Times">Zeiten</msg>
   <msg key="Title">Titel</msg>
-  <msg key="Title_1">Titel:</msg>
+  <msg key="Title_1">Grund:</msg>
   <msg key="To">zu</msg>
   <msg key="True">richtig</msg>
-  <msg key="Turnover">Umsatz:</msg>
+  <msg key="Turnover">Auftragswert:</msg>
   <msg key="Type">Typ</msg>
   <msg key="Update">Update</msg>
   <msg key="Update_filenames">Update Dateinamen</msg>
@@ -488,7 +492,7 @@
   <msg key="Upload_File">Datei hochladen</msg>
   <msg key="Upload_More">Mehrere Dateien uploaden</msg>
   <msg key="User_Account_Information">Informationen zu dem User Account</msg>
-  <msg key="valid">G�ltig</msg>
+  <msg key="valid">Berechtigt</msg>
   <msg key="Var_name">Variablen Name</msg>
   <msg key="var_name_help">Name der Variable, die in der erweiterten Suche verwendent werden soll.</msg>
   <msg key="View_all_roles">Alle Rollen ansehen</msg>
Index: openacs-4/packages/contacts/lib/contact-complaint-form.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/lib/contact-complaint-form.tcl,v
diff -u -r1.13 -r1.14
--- openacs-4/packages/contacts/lib/contact-complaint-form.tcl	16 Oct 2005 12:43:54 -0000	1.13
+++ openacs-4/packages/contacts/lib/contact-complaint-form.tcl	20 Oct 2005 16:05:33 -0000	1.14
@@ -47,7 +47,7 @@
     set emp_options [list]
     lappend emp_options [list "- - - - - -" ""]
     set employee_list [contact::util::get_employees -organization_id $customer_id]
-    foreach employee_id $employee_list {
+    foreach emp_id $employee_list {
 	set emp_name [contact::name -party_id $emp_id]
 	append emp_name " ([contact::email -party_id $emp_id])"
 	lappend emp_options [list $emp_name $emp_id]
Index: openacs-4/packages/contacts/lib/mail-tracking-portlet.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/lib/mail-tracking-portlet.adp,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/contacts/lib/mail-tracking-portlet.adp	19 Oct 2005 17:01:38 -0000	1.1
+++ openacs-4/packages/contacts/lib/mail-tracking-portlet.adp	20 Oct 2005 16:05:33 -0000	1.2
@@ -9,7 +9,7 @@
         <td>
 	    <include
       		src="/packages/mail-tracking/lib/messages"
-      		party_id="@party_id@"
+      		recipient_id="@party_id@"
         </td>
       </tr>
     </table>
Index: openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl,v
diff -u -r1.16 -r1.17
--- openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl	19 Oct 2005 18:06:35 -0000	1.16
+++ openacs-4/packages/contacts/tcl/contacts-callback-procs.tcl	20 Oct 2005 16:05:34 -0000	1.17
@@ -157,12 +157,23 @@
     @error 
 } {
     set community_id [dotlrn_community::get_community_id]
-    
-    set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"]
-    
-    set contact_list ""
-    foreach party_id $contact_organizations {
-	set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]]
+    set project_id [wieners::process::project_from_project_folder -folder_id $folder_id]
+
+    if {[empty_string_p $project_id]} {
+	# no project -> mail to all organization contacts
+	set contact_organizations [application_data_link::get_linked -from_object_id $community_id -to_object_type "organization"]
+	set contact_list ""
+	foreach party_id $contact_organizations {
+	    set contact_list [concat $contact_list [contact::util::get_employees -organization_id $party_id]]
+	}
+    } else {
+	# project -> mail to project contact
+	db_1row get_project_contact {
+	    select p.contact_id as contact_list
+	    from pm_projects p, cr_items i
+	    where i.latest_revision = p.project_id
+	    and i.item_id = :project_id
+	}
     }
 	
     if {[exists_and_not_null contact_list]} {
@@ -171,9 +182,15 @@
 	upvar party_ids contact_ids_loc
 	set contact_ids_loc $contact_list
 	upvar return_url return_loc
-	set return_loc "/contacts/$party_id"
+	# set return_loc "/contacts/$party_id"
 	lappend local_var "Mail to contact" "/contacts/message" "Mail to contact"
 	lappend local_list "party_ids"
+
+	if {![empty_string_p $project_id]} {
+	    lappend local_list "context_id"
+	    upvar context_id context_id
+	    set context_id $project_id
+	}
     }
 }
 
Index: openacs-4/packages/contacts/www/mail-tracking.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/mail-tracking.adp,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/contacts/www/mail-tracking.adp	19 Oct 2005 17:01:38 -0000	1.1
+++ openacs-4/packages/contacts/www/mail-tracking.adp	20 Oct 2005 16:05:34 -0000	1.2
@@ -1,2 +1,3 @@
+<master src="/packages/contacts/lib/contact-master" />
 <property name="party_id">@party_id@</property>
-<include src="/packages/contacts/lib/mail-tracking-portlet" recipient_id="@party_id@">
\ No newline at end of file
+<include src="/packages/mail-tracking/lib/messages" recipient_id="@party_id@">
\ No newline at end of file
Index: openacs-4/packages/contacts/www/mail-tracking.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/mail-tracking.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/contacts/www/mail-tracking.tcl	19 Oct 2005 17:01:38 -0000	1.1
+++ openacs-4/packages/contacts/www/mail-tracking.tcl	20 Oct 2005 16:05:34 -0000	1.2
@@ -3,14 +3,17 @@
     @author Al-Faisal El-Dajani (faisal.dajani@gmail.com)
     @creation-date 2005-10-18
 } {
-    {party_id:integer}
+    {party_id ""}
+}
 
-} -validate {
-    contact_exists -requires {party_id} {
-	if {![contact::exists_p -party_id $party_id]} {
-	    ad_complain "[_ contacts.lt_The_contact_specified]"
-	}
+foreach optional_param {sender_id recipient_id page page_size page_flush_p orderby object_id} {
+    if {![info exists $optional_param]} {
+	set $optional_param {}
     }
 }
-#??
+
+if {![exists_and_not_null party_id]} {
+    set party_id $sender_id
+}
+
 ad_return_template
\ No newline at end of file