Index: openacs-4/packages/contacts/lib/contacts-master.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/lib/contacts-master.tcl,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/contacts/lib/contacts-master.tcl 17 Jun 2005 08:58:17 -0000 1.4
+++ openacs-4/packages/contacts/lib/contacts-master.tcl 19 Jun 2005 07:00:28 -0000 1.5
@@ -8,20 +8,17 @@
if { [site_node::get_package_url -package_key "tasks"] != "" } {
set prefix "/contacts/"
-} else {
- set prefix "${package_url}"
-}
-if { [site_node::get_package_url -package_key "tasks"] != "" } {
set tasks_enabled_p 1
} else {
+ set prefix "${package_url}"
set tasks_enabled_p 0
}
set link_list [list]
lappend link_list "${prefix}"
lappend link_list "[_ contacts.Contacts]"
-if { ![parameter::get -boolean -parameter "ForceSearchBeforeAdd" -default "0"] || !${tasks_enabled_p} } {
+if { ![parameter::get -boolean -parameter "ForceSearchBeforeAdd" -default "0"] && !${tasks_enabled_p} } {
lappend link_list "${prefix}add/person"
lappend link_list "[_ contacts.Add_Person]"
Index: openacs-4/packages/contacts/tcl/contact-search-condition-type-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contact-search-condition-type-procs.tcl,v
diff -u -N -r1.1 -r1.2
--- openacs-4/packages/contacts/tcl/contact-search-condition-type-procs.tcl 19 Jun 2005 05:02:29 -0000 1.1
+++ openacs-4/packages/contacts/tcl/contact-search-condition-type-procs.tcl 19 Jun 2005 07:00:28 -0000 1.2
@@ -549,17 +549,15 @@
set interval "[lindex $var_list 1] [lindex $var_list 2]"
switch $operand {
in_search {
- set search_id [lindex $var_list 2]
+ set search_id [lindex $var_list 1]
set search_link "[contact::search::title -search_id $search_id]"
set output_pretty "[_ contacts.lt_Contact_in_the_search_search_link]"
- ns_log notice "contact::party_id_in_sub_search_clause -search_id $search_id"
set output_code [contact::party_id_in_sub_search_clause -search_id $search_id]
}
not_in_search {
- set search_id [lindex $var_list 2]
+ set search_id [lindex $var_list 1]
set search_link "[contact::search::title -search_id $search_id]"
set output_pretty "[_ contacts.lt_Contact_not_in_the_search_search_link]"
- ns_log notice "contact::party_id_in_sub_search_clause -search_id $search_id"
set output_code [contact::party_id_in_sub_search_clause -search_id $search_id -not]
}
update {
Index: openacs-4/packages/contacts/tcl/contact-search-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contact-search-procs.tcl,v
diff -u -N -r1.10 -r1.11
--- openacs-4/packages/contacts/tcl/contact-search-procs.tcl 19 Jun 2005 05:02:29 -0000 1.10
+++ openacs-4/packages/contacts/tcl/contact-search-procs.tcl 19 Jun 2005 07:00:28 -0000 1.11
@@ -45,6 +45,16 @@
return [db_string select_title {} -default {}]
}
+ad_proc -public contact::search::get {
+ -search_id:required
+ -array:required
+} {
+ Get the info on an ams_attribute
+} {
+ upvar 1 $array row
+ db_1row select_search_info {} -column_array row
+}
+
ad_proc -public contact::search::update {
{-search_id ""}
{-title ""}
@@ -186,6 +196,63 @@
return $result
}
+
+ad_proc -public contact::search_pretty {
+ {-search_id}
+ {-format "text/html"}
+} {
+ Get the search in human readable format. Cached
+} {
+ return [util_memoize [list ::contact::search_pretty_not_cached -search_id $search_id -format $format]]
+}
+
+
+ad_proc -public contact::search_pretty_not_cached {
+ {-search_id}
+ {-format "text/html"}
+} {
+ Get the search in human readable format
+} {
+ set conditions [list]
+ db_foreach selectqueries {
+ select type, var_list from contact_search_conditions where search_id = :search_id
+ } {
+ lappend conditions [contacts::search::condition_type -type $type -request pretty -var_list $var_list]
+ }
+
+ if { [llength $conditions] > 0 } {
+
+ contact::search::get -search_id $search_id -array "search_info"
+
+ if { $search_info(object_type) == "person" } {
+ set object_type [_ contacts.people]
+ } elseif { $search_info(object_type) == "organization" } {
+ set object_type [_ contacts.organizations]
+ } else {
+ set object_type [_ contacts.people_or_organizations]
+ }
+
+ set results "[_ contacts.Search_for_all_object_type_where]\n"
+
+ if { $search_info(all_or_any) == "all" } {
+ append results [join $conditions "\n[_ contacts.and] "]
+ } else {
+ append results [join $conditions "\n[_ contacts.or] "]
+ }
+
+ if { $format == "text/html" } {
+ set results [ad_enhanced_text_to_html $results]
+ } else {
+ set results [ad_enhanced_text_to_plain_text $results]
+ }
+
+ return $results
+ } else {
+ return {}
+ }
+}
+
+
ad_proc -public contact::search::query_clause {
{-and:boolean}
{-query ""}
@@ -309,7 +376,7 @@
lappend where_clauses "$party_id in ( select organization_id from organizations )"
}
db_foreach select_queries {} {
- lappend where_clauses [contact::search::translate -type $type -var_list $var_list -to code -revision_id $revision_id -party_id $party_id]
+ lappend where_clauses [contacts::search::condition_type -type $type -request sql -var_list $var_list -revision_id $revision_id -party_id $party_id]
}
} else {
set operator "and"
@@ -329,30 +396,3 @@
return $result
}
-
-ad_proc -public contact::search::translate {
- {-type}
- {-var_list}
- {-to "code"}
- {-party_id}
- {-revision_id}
-} {
- returns the group_id for which this group is a component, if none then it return null
-} {
- set output_pretty [contacts::search::condition_type -type $type -request pretty -var_list $var_list -party_id $party_id -revision_id $revision_id]
- set output_code [contacts::search::condition_type -type $type -request sql -var_list $var_list -party_id $party_id -revision_id $revision_id]
- if { ![exists_and_not_null output_pretty] || ![exists_and_not_null output_code] } {
- if { [exists_and_not_null error_message] } {
- error "[_ contacts.lt_The_query_type_var_li]"
- } else {
- error "[_ contacts.lt_The_query_type_var_li_1]"
- }
- } else {
- switch $to {
- code { return $output_code }
- pretty { return $output_pretty }
- }
- }
-}
-
-
Index: openacs-4/packages/contacts/tcl/contact-search-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/tcl/contact-search-procs.xql,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/contacts/tcl/contact-search-procs.xql 16 Jun 2005 20:51:58 -0000 1.3
+++ openacs-4/packages/contacts/tcl/contact-search-procs.xql 19 Jun 2005 07:00:28 -0000 1.4
@@ -15,6 +15,14 @@
+
+
+ select *
+ from contact_searches
+ where search_id = :search_id
+
+
+
select parties.party_id
Index: openacs-4/packages/contacts/www/search.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/search.tcl,v
diff -u -N -r1.11 -r1.12
--- openacs-4/packages/contacts/www/search.tcl 19 Jun 2005 05:02:29 -0000 1.11
+++ openacs-4/packages/contacts/www/search.tcl 19 Jun 2005 07:00:28 -0000 1.12
@@ -72,7 +72,7 @@
append form_elements {
{object_type:text(hidden) {value $object_type}}
{object_type_pretty:text(inform) {label {[_ contacts.Search_for]}} {value "$object_type_pretty"} {after_html "[_ contacts.which_match]"}}
- {all_or_any:text(select),optional {label ""} {options {{[_ contacts.All] all} {[_ contacts.Any] any}}} {after_html "[_ contacts.lt_of_the_following_cond]
"}}
+ {all_or_any:text(select),optional {label ""} {options {{[_ contacts.All] all} {[_ contacts.Any] any}}} {after_html "[_ contacts.lt_of_the_following_cond]"}}
}
} else {
set object_type_options [list]
@@ -87,13 +87,17 @@
if { $search_exists_p } {
- set query_pretty ""
+ set conditions [list]
db_foreach selectqueries {
select type as query_type, var_list as query_var_list from contact_search_conditions where search_id = :search_id
} {
- append query_pretty "- [contact::search::translate -type $query_type -var_list $query_var_list -to pretty -party_id "party_id" -revision_id "cr.revisions.revision_id"]
"
+ lappend conditions [contacts::search::condition_type -type $query_type -request pretty -var_list $query_var_list]
}
- append query_pretty "
"
+ if { [llength $conditions] > 0 } {
+ set query_pretty ""
+ } else {
+ set query_pretty ""
+ }
lappend form_elements [list query:text(hidden),optional]
lappend form_elements [list query_pretty:text(inform),optional [list label {}] [list value $query_pretty]]
Index: openacs-4/packages/contacts/www/searches.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/contacts/www/searches.tcl,v
diff -u -N -r1.1 -r1.2
--- openacs-4/packages/contacts/www/searches.tcl 14 Jun 2005 06:08:28 -0000 1.1
+++ openacs-4/packages/contacts/www/searches.tcl 19 Jun 2005 07:00:28 -0000 1.2
@@ -26,10 +26,6 @@
-selected_format $format \
-key search_id \
-elements {
- object_type {
- label {Type}
- display_col object_type
- }
title {
label {#contacts.Title#}
display_col title
@@ -98,22 +94,14 @@
set copy_url [export_vars -base search-action -url {search_id {owner_id $user_id} {action copy} return_url}]
lappend search_ids $search_id
- db_foreach selectqueries {
- select type as query_type, var_list as query_var_list from contact_search_conditions where search_id = :search_id
- } {
- if { [exists_and_not_null query] } {
- append query "
"
- }
- append query "[contact::search::translate -type $query_type -var_list $query_var_list -to pretty -party_id "party_id" -revision_id "cr.revisions.revision_id"]"
- }
-
}
# Since contact::search::results_count can if not cached required two db queries
# when this is included in the multirow code block above it can hang due to a lack
# of db pools. So it has to be done here.
template::multirow foreach searches {
set results [contact::search::results_count -search_id $search_id]
+ set query [contact::search_pretty -search_id $search_id]
}
list::write_output -name searches