| |
1 |
1 |
# Expects the following optional parameters (in each combination): |
| |
2 |
2 |
# |
| |
3 |
3 |
# recipient_id - to filter mails for a single receiver |
| |
4 |
4 |
# sender_id - to filter mails for a single sender |
| |
5 |
5 |
# package_id - to filter mails for a package instance |
| |
6 |
6 |
# object_id - to filter mails for a object_id |
| |
|
7 |
# page - to filter the pagination |
| |
|
8 |
# page_size - to know how many rows show (optional default to 25) |
| |
7 |
9 |
# show_filter_p - to show or not the filters in the inlcude, default to "t" |
| |
8 |
10 |
# elements - a list of elements to show in the list template. If not provided will show all elements. |
| |
9 |
11 |
# Posible elemets are: sender_id recipient_id package_id subject object_id file_ids body sent_date |
| |
10 |
12 |
|
| |
11 |
13 |
ad_page_contract { |
| |
12 |
14 |
|
| |
13 |
15 |
@author Nima Mazloumi |
| |
14 |
16 |
@creation-date Mon May 30 17:55:50 CEST 2005 |
| |
15 |
17 |
@cvs-id $Id$ |
| |
16 |
18 |
} -query { |
| |
17 |
19 |
recipient_id:optional |
| |
18 |
20 |
{emp_mail_f:optional 1} |
| |
19 |
21 |
sender_id:optional |
| |
20 |
22 |
package_id:optional |
| |
21 |
23 |
object_id:optional |
| |
22 |
24 |
{orderby:optional "recipient_id"} |
| |
23 |
25 |
} -properties { |
| |
24 |
26 |
show_filter_p |
| |
25 |
27 |
acs_mail_log:multirow |
| |
26 |
28 |
context:onevalue |
| |
27 |
29 |
} |
| |
28 |
30 |
|
| |
29 |
31 |
set page_title [ad_conn instance_name] |
| |
30 |
32 |
set context [list "index"] |
| |
31 |
33 |
|
| |
|
34 |
if { [info exist object_id] && [empty_string_p $object_id] } { |
| |
|
35 |
unset object_id |
| |
|
36 |
} |
| |
|
37 |
|
| |
32 |
38 |
if { ![exists_and_not_null show_filter_p] } { |
| |
33 |
39 |
set show_filter_p "t" |
| |
34 |
40 |
} |
| |
35 |
41 |
|
| |
|
42 |
if { ![exists_and_not_null page_size] } { |
| |
|
43 |
set page_size 10 |
| |
|
44 |
} |
| |
|
45 |
|
| |
36 |
46 |
set tracking_url [apm_package_url_from_key "mail-tracking"] |
| |
37 |
47 |
# Wich elements will be shown on the list template |
| |
38 |
48 |
set rows_list [list] |
| |
39 |
49 |
if {![exists_and_not_null elements] } { |
| |
40 |
50 |
set rows_list [list sender_id {} recipient_id {} package_id {} subject {} object_id {} file_ids {} body {} sent_date {}] |
| |
41 |
51 |
} else { |
| |
42 |
52 |
foreach element $elements { |
| |
43 |
53 |
lappend rows_list $element |
| |
44 |
54 |
lappend rows_list [list] |
| |
45 |
55 |
} |
| |
46 |
56 |
} |
| |
47 |
57 |
|
| |
48 |
58 |
set filters [list \ |
| |
49 |
59 |
sender_id { |
| |
50 |
60 |
label "[_ mail-tracking.Sender]" |
| |
51 |
61 |
where_clause "sender_id = :sender_id" |
| |
52 |
62 |
} \ |
| |
53 |
63 |
object_id { |
| |
54 |
64 |
label "[_ mail-trackin.Object_id]" |
| |
55 |
65 |
where_clause "object_id = :object_id" |
|
| |
64 |
74 |
if { [exists_and_not_null recipient_id] } { |
| |
65 |
75 |
set recipient_where_clause " and recipient_id = $recipient_id" |
| |
66 |
76 |
} |
| |
67 |
77 |
|
| |
68 |
78 |
if { [apm_package_installed_p organizations] && [exists_and_not_null recipient_id]} { |
| |
69 |
79 |
set org_p [organization::organization_p -party_id $recipient_id] |
| |
70 |
80 |
if { $org_p } { |
| |
71 |
81 |
lappend filters emp_mail_f { |
| |
72 |
82 |
label "[_ mail-tracking.Emails_to]" |
| |
73 |
83 |
values { {"[_ mail-tracking.Organization]" 1} { "[_ mail-tracking.Employees]" 2 }} |
| |
74 |
84 |
} |
| |
75 |
85 |
} |
| |
76 |
86 |
|
| |
77 |
87 |
if { $org_p && [string equal $emp_mail_f 2] } { |
| |
78 |
88 |
set emp_list [contact::util::get_employees -organization_id $recipient_id] |
| |
79 |
89 |
lappend emp_list $recipient_id |
| |
80 |
90 |
set recipient_where_clause " and recipient_id in ([template::util::tcl_to_sql_list $emp_list])" |
| |
81 |
91 |
} |
| |
82 |
92 |
} |
| |
83 |
93 |
|
| |
|
94 |
|
| |
|
95 |
|
| |
|
96 |
|
| |
84 |
97 |
template::list::create \ |
| |
85 |
98 |
-name messages \ |
| |
86 |
99 |
-selected_format normal \ |
| |
87 |
100 |
-multirow messages \ |
| |
88 |
|
-key acs_mail_log_id \ |
| |
|
101 |
-key acs_mail_log.log_id \ |
| |
|
102 |
-page_size $page_size \ |
| |
|
103 |
-page_flush_p 0 \ |
| |
|
104 |
-page_query_name "messages_pagination" \ |
| |
89 |
105 |
-row_pretty_plural "[_ mail-tracking.messages]" \ |
| |
90 |
106 |
-elements { |
| |
91 |
107 |
sender_id { |
| |
92 |
108 |
label "[_ mail-tracking.Sender]" |
| |
93 |
109 |
display_template { |
| |
94 |
110 |
@messages.sender@ |
| |
95 |
111 |
} |
| |
96 |
112 |
} |
| |
97 |
113 |
recipient_id { |
| |
98 |
114 |
label "[_ mail-tracking.Recipient]" |
| |
99 |
115 |
display_template { |
| |
100 |
116 |
@messages.receiver@ |
| |
101 |
117 |
} |
| |
102 |
118 |
} |
| |
103 |
119 |
package_id { |
| |
104 |
120 |
label "[_ mail-tracking.Package]" |
| |
105 |
121 |
display_template { |
| |
106 |
122 |
<a href="@messages.package_url@">@messages.package_name@</a> |
| |
107 |
123 |
} |
| |
108 |
124 |
} |
|
| |
141 |
157 |
orderby package_id |
| |
142 |
158 |
label "[_ mail-tracking.Package]" |
| |
143 |
159 |
} |
| |
144 |
160 |
subject { |
| |
145 |
161 |
orderby subject |
| |
146 |
162 |
label "[_ mail-tracking.Subject]" |
| |
147 |
163 |
} |
| |
148 |
164 |
sent_date { |
| |
149 |
165 |
orderby sent_date |
| |
150 |
166 |
label "[_ mail-tracking.Sent_Date]" |
| |
151 |
167 |
} |
| |
152 |
168 |
} -formats { |
| |
153 |
169 |
normal { |
| |
154 |
170 |
label "Table" |
| |
155 |
171 |
layout table |
| |
156 |
172 |
row $rows_list |
| |
157 |
173 |
} |
| |
158 |
174 |
} -filters $filters \ |
| |
159 |
175 |
|
| |
160 |
176 |
|
| |
161 |
|
set orderby [template::list::orderby_clause -name "messages" -orderby] |
| |
162 |
|
|
| |
163 |
177 |
db_multirow -extend { file_ids object_url sender receiver package_name package_url url_message_id download_files} messages select_messages { } { |
| |
164 |
178 |
set sender "" |
| |
165 |
179 |
set receiver "" |
| |
166 |
180 |
if { [catch { set sender [person::name -person_id $sender_id] } errMsg] } { |
| |
167 |
181 |
# We will try to see if it's a contact and has an email. This will break |
| |
168 |
182 |
# if the contacts package is not installed so this is why we need to put |
| |
169 |
183 |
# it inside a catch |
| |
170 |
184 |
if { [catch { set sender [contact::email -party_id $sender_id] } errorMsg] } { |
| |
171 |
185 |
set sender "" |
| |
172 |
186 |
} |
| |
173 |
187 |
} |
| |
174 |
188 |
if { [catch { set receiver [person::name -person_id $recipient_id]} errMsg] } { |
| |
175 |
189 |
# We will try to see if it's a contact and has an email. This will break |
| |
176 |
190 |
# if the contacts package is not installed so this is why we need to put |
| |
177 |
191 |
# it inside a catch |
| |
178 |
192 |
if { [catch { set receiver [contact::email -party_id $recipient_id] } errorMsg] } { |
| |
179 |
193 |
set receiver "" |
| |
180 |
194 |
} |
| |
181 |
195 |
} |
| |
182 |
196 |
|