Index: openacs-4/packages/acs-admin/www/users/complex-search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/users/complex-search.tcl,v diff -u -N -r1.20 -r1.21 --- openacs-4/packages/acs-admin/www/users/complex-search.tcl 27 Jul 2018 08:43:07 -0000 1.20 +++ openacs-4/packages/acs-admin/www/users/complex-search.tcl 27 Jul 2018 08:54:02 -0000 1.21 @@ -5,7 +5,9 @@ many days ago they registered, and how many times they have visited. - This page should be reusable but that has not been tested. See TIP#125 + This page is based on "search.tcl", so in theory it should + reusable but that has not been tested. See "search.tcl" for + details. @cvs-id $Id$ Index: openacs-4/packages/acs-authentication/lib/local-search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/lib/local-search.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-authentication/lib/local-search.adp 27 Jul 2018 08:54:02 -0000 1.3 @@ -0,0 +1 @@ + Index: openacs-4/packages/acs-authentication/lib/local-search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/lib/local-search.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-authentication/lib/local-search.tcl 27 Jul 2018 08:54:02 -0000 1.8 @@ -0,0 +1,79 @@ +# creation-date 2007-01-21 +# author Dave Bauer (dave@solutiongrove.com) +# includable search form +# results should be appended to multirow called users +# ADP level +# default local authority search + +ad_form -name user-search -method GET -export {authority_id object_id} -form { + {search_text:text(text),optional + {label "Search"} + } +} -on_request { + element set_value user-search search_text $search_text +} -on_submit { + +} +if {![info exists orderby]} { + set orderby "" +} +set search_text [string tolower $search_text] +set search_terms [list] +foreach term [split $search_text] { + lappend search_terms $term +} + +set name_search "'()'" +if {[llength $search_terms]} { + set name_search "([join $search_terms |])" +} + +set system_name [ad_system_name] + db_foreach get_users " +select +first_names, +last_name, +email, +username, +user_id, +authority_id +from cc_users +where +( + lower(first_names) ~ :name_search + or lower(last_name) ~ :name_search +) +or lower(username) like '%' || :search_text || '%' +or lower(email) like '%' || :search_text || '%' +" { + +set status [list] +if {[info exists object_id]} { + set group_member_p [permission::permission_p -object_id $object_id -party_id $user_id -privilege $privilege] + set status "" + +} else { + set group_member_p [group::member_p -group_id $group_id -user_id $user_id -cascade] + set group_name [group::get_element -element group_name -group_id $group_id] + if {$group_member_p} { + lappend status "[_ acs-authentication.Member_of_group_name]" + } else { + lappend status "[_ acs-authentication.Not_a_member_of_group_name]" + } + set status [join $status "
"] +} + template::multirow -ulevel 2 -local append users $first_names $last_name $username $email $status $group_member_p "" "" "" $user_id $authority_id +} + +set orderby_list [split $orderby ,] +lassign $orderby_list orderby_column direction +set direction [string map {asc -increasing desc -decreasing} $direction] +if {$orderby_column ne ""} { + template::multirow -ulevel 2 -local sort users $direction $orderby_column +} + +# Local variables: +# mode: tcl +# tcl-indent-level: 4 +# indent-tabs-mode: nil +# End: Index: openacs-4/packages/acs-authentication/lib/search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/lib/search.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-authentication/lib/search.adp 27 Jul 2018 08:54:02 -0000 1.7 @@ -0,0 +1,106 @@ + + + + + + + + + Index: openacs-4/packages/acs-authentication/lib/search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/lib/search.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-authentication/lib/search.tcl 27 Jul 2018 08:54:02 -0000 1.10 @@ -0,0 +1,155 @@ +ad_page_contract { + Includable page to search users in any authority + + To grant permission on an object + Including page can pass in + add_permissions (list of Label, URL) + object_id + privilege + + OR + To add a member of a group + add_to_subsite (list of label url) + add_to_main_site (optional) (list of label url) + group_id (optional default to subsite application group) + rel_type (default to membership_rel) + +} { + {search_text ""} + {authority_id:naturalnum,notnull ""} + orderby:token,optional +} + +set authority_options [auth::authority::get_authority_options] +set default_authority_id [lindex $authority_options 0 1] +if {$authority_id eq ""} { + set authority_id $default_authority_id +} + +if {![info exists rel_type] || $rel_type eq ""} { + set rel_type membership_rel +} +if {![info exists package_id] || $package_id eq ""} { + set package_id [ad_conn subsite_id] +} + +if {![info exists return_url] || $return_url eq ""} { + set return_url [ad_return_url] +} +set selected_authority_id $authority_id + +set bulk_actions [list] +# we need a base url for adding a user to the site (main subsite or dotlrn, etc...) +if {[info exists add_to_main_site]} { + foreach elm $add_to_main_site { + lappend bulk_actions $elm + } +} + +# we need a base url for adding a user to a specific community (subsite or dotlrn class instance etc...) (optional) +if {[info exists add_to_subsite]} { + foreach elm $add_to_subsite { + lappend bulk_actions $elm + } +} +if {[info exists add_to_subsite] && [llength $add_to_subsite]} { + set add_user_url [lindex $add_to_subsite 1] + set add_user_label [lindex $add_to_subsite 0] +} elseif {[info exists add_to_main_site]} { + set add_user_url [lindex $add_to_main_site 1] + set add_user_label "[_ acs-authentication.Add_to_system_name [list system_name [ad_system_name]]]" +} +if {[info exists add_permission] && [llength $add_permission]} { + set add_user_url [lindex $add_permission 1] + set add_user_label [lindex $add_permission 0] + lappend bulk_actions $add_user_label $add_user_url $add_user_label +} +if {![regexp {\?} $add_user_url]} { + set add_user_url "$add_user_url?" +} +if {![info exists group_id] || $group_id eq ""} { + set group_id [application_group::group_id_from_package_id -package_id $package_id] +} +# generate authority links + +template::multirow create users \ + first last username email auth_status group_member_p create_account_url actions extra_attributes user_id authority_id + +ns_log debug "MEMBER SEARCH TCL level='[template::adp_level]' [uplevel \#[template::adp_level] "info vars"]" + + template::list::create \ + -no_data "Search returned no results" \ + -name users \ + -multirow users \ + -key userkey \ + -has_checkboxes \ + -bulk_action_export_vars { authority_id return_url object_id group_id } \ + -filters {search_text {} authority_id {} object_id {}} \ + -elements [list \ + checkbox { + display_template {}} \ + first [list label "First Name" link_url_eval "\[export_vars -base \"$member_url\" {user_id} \]"] \ + last [list label "Last Name" link_url_eval "\[export_vars -base \"$member_url\" {user_id} \]"] \ + username [list label "Username" link_url_eval "\[export_vars -base \"$member_url\" {user_id} \]"] \ + email {label "Email"} \ + auth_status { label "Status" } \ + actions [list label "Actions" display_template [subst { + $add_user_label + }]] \ + extra_attributes {label "Extra Attributes"} \ + user_id [list hide_p [expr {!$admin_p}] label "" display_template [subst { + User Admin Page + }]] \ + ] -bulk_actions $bulk_actions \ + -orderby { + first {orderby first_names} + last {orderby last_name} + username {orderby username} + email {orderby email} + auth_status {orderby auth_status} + } + +template::multirow create authorities authority_id pretty_name local_authority_p search_url form_include + +foreach option_list [auth::authority::get_authority_options] { + set this_authority_id [lindex $option_list 1] + set local_authority_p [string match $this_authority_id [auth::authority::local]] + if {$local_authority_p} { + set local_authority_id $this_authority_id + set form_include /packages/acs-authentication/lib/local-search + } else { + set form_include [acs_sc::invoke \ + -impl_id [auth::authority::get_element -authority_id $this_authority_id -element search_impl_id] \ + -operation FormInclude] + } + if {$this_authority_id eq $selected_authority_id} { + set selected_form_include $form_include + } + template::multirow append authorities \ + $this_authority_id \ + [lindex $option_list 0] \ + $local_authority_p \ + [export_vars -base [ad_conn url] -no_empty {{authority_id $this_authority_id} search_text object_id}] \ + $form_include +} + +#template::multirow sort authorities -decreasing authority_id + +if {$selected_authority_id eq ""} { + set selected_authority_id $default_authority_id +} +set authority_id $selected_authority_id + +#set search_form_html [template::adp_include $selected_form_include [list authority_id $selected_authority_id search_text $search_text return_url $return_url orderby $orderby]] + +# +if {![info exists orderby]} { + set orderby "" +} + +# Local variables: +# mode: tcl +# tcl-indent-level: 4 +# indent-tabs-mode: nil +# End: