Index: openacs-4/packages/forums/tcl/forums-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/tcl/forums-procs.tcl,v diff -u -N -r1.10 -r1.11 --- openacs-4/packages/forums/tcl/forums-procs.tcl 10 Jan 2003 15:12:59 -0000 1.10 +++ openacs-4/packages/forums/tcl/forums-procs.tcl 28 Oct 2003 09:54:55 -0000 1.11 @@ -8,121 +8,119 @@ } -namespace eval forum { +namespace eval forum {} - ad_proc -public new { - {-forum_id ""} - {-name:required} - {-charter ""} - {-presentation_type flat} - {-posting_policy open} - {-package_id:required} - } { - create a new forum - } { - # Prepare the variables for instantiation - set extra_vars [ns_set create] - oacs_util::vars_to_ns_set -ns_set $extra_vars -var_list {forum_id name charter presentation_type posting_policy package_id} +ad_proc -public forum::new { + {-forum_id ""} + {-name:required} + {-charter ""} + {-presentation_type flat} + {-posting_policy open} + {-package_id:required} +} { + create a new forum +} { + # Prepare the variables for instantiation + set extra_vars [ns_set create] + oacs_util::vars_to_ns_set -ns_set $extra_vars -var_list {forum_id name charter presentation_type posting_policy package_id} - # Instantiate the forum - return [package_instantiate_object -extra_vars $extra_vars forums_forum] - } + # Instantiate the forum + return [package_instantiate_object -extra_vars $extra_vars forums_forum] +} - ad_proc -public edit { - {-forum_id:required} - {-name:required} - {-charter ""} - {-presentation_type flat} - {-posting_policy open} - } { - edit a forum - } { - # This is a straight DB update - db_dml update_forum {} - } +ad_proc -public forum::edit { + {-forum_id:required} + {-name:required} + {-charter ""} + {-presentation_type flat} + {-posting_policy open} +} { + edit a forum +} { + # This is a straight DB update + db_dml update_forum {} +} - ad_proc -public attachments_enabled_p {} { - set package_id [site_node_apm_integration::child_package_exists_p \ - -package_key attachments - ] - } +ad_proc -public forum::attachments_enabled_p {} { + set package_id [site_node_apm_integration::child_package_exists_p \ + -package_key attachments + ] +} - ad_proc -public list_forums { - {-package_id:required} - } { - List all forums in a package - } { - return [db_list_of_ns_sets select_forums {}] - } - - ad_proc -public get { - {-forum_id:required} - {-array:required} - } { - get the fields for a forum - } { - # Select the info into the upvar'ed Tcl Array - upvar $array row - db_1row select_forum {} -column_array row - } +ad_proc -public forum::list_forums { + {-package_id:required} +} { + List all forums in a package +} { + return [db_list_of_ns_sets select_forums {}] +} - ad_proc -public posting_policy_set { - {-posting_policy:required} - {-forum_id:required} - } { - # JCD: this is potentially bad since we are - # just assuming registered_users is the - # right group to be granting forum_write to. +ad_proc -public forum::get { + {-forum_id:required} + {-array:required} +} { + get the fields for a forum +} { + # Select the info into the upvar'ed Tcl Array + upvar $array row + db_1row select_forum {} -column_array row +} - if {![string equal closed $posting_policy]} { - permission::grant -object_id $forum_id \ - -party_id [acs_magic_object registered_users] \ - -privilege forum_write - } else { - permission::revoke -object_id $forum_id \ - -party_id [acs_magic_object registered_users] \ - -privilege forum_write - } +ad_proc -public forum::posting_policy_set { + {-posting_policy:required} + {-forum_id:required} +} { + # JCD: this is potentially bad since we are + # just assuming registered_users is the + # right group to be granting forum_write to. - } - - ad_proc -public new_questions_allow { - {-forum_id:required} - } { - # Give the public the right to ask new questions + if {![string equal closed $posting_policy]} { permission::grant -object_id $forum_id \ - -party_id [acs_magic_object registered_users] \ - -privilege forum_create - } - - ad_proc -public new_questions_deny { - {-forum_id:required} - } { - # Revoke the right from the public to ask new questions + -party_id [acs_magic_object registered_users] \ + -privilege forum_write + } else { permission::revoke -object_id $forum_id \ - -party_id [acs_magic_object registered_users] \ - -privilege forum_create + -party_id [acs_magic_object registered_users] \ + -privilege forum_write } - ad_proc -public new_questions_allowed_p { - {-forum_id:required} - } { - permission::permission_p -object_id $forum_id \ - -party_id [acs_magic_object registered_users] \ - -privilege forum_create - } +} - ad_proc -public enable { - {-forum_id:required} - } { - # Enable the forum, no big deal - db_dml update_forum_enabled_p {} - } +ad_proc -public forum::new_questions_allow { + {-forum_id:required} +} { + # Give the public the right to ask new questions + permission::grant -object_id $forum_id \ + -party_id [acs_magic_object registered_users] \ + -privilege forum_create +} - ad_proc -public disable { - {-forum_id:required} - } { - db_dml update_forum_disabled_p {} - } +ad_proc -public forum::new_questions_deny { + {-forum_id:required} +} { + # Revoke the right from the public to ask new questions + permission::revoke -object_id $forum_id \ + -party_id [acs_magic_object registered_users] \ + -privilege forum_create +} +ad_proc -public forum::new_questions_allowed_p { + {-forum_id:required} +} { + permission::permission_p -object_id $forum_id \ + -party_id [acs_magic_object registered_users] \ + -privilege forum_create } + +ad_proc -public forum::enable { + {-forum_id:required} +} { + # Enable the forum, no big deal + db_dml update_forum_enabled_p {} +} + +ad_proc -public forum::disable { + {-forum_id:required} +} { + db_dml update_forum_disabled_p {} +} Index: openacs-4/packages/forums/tcl/messages-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/tcl/messages-procs.tcl,v diff -u -N -r1.20 -r1.21 --- openacs-4/packages/forums/tcl/messages-procs.tcl 27 Oct 2003 15:37:04 -0000 1.20 +++ openacs-4/packages/forums/tcl/messages-procs.tcl 28 Oct 2003 09:54:55 -0000 1.21 @@ -274,4 +274,3 @@ return $sort_filter } - Index: openacs-4/packages/forums/www/message-chunk.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/Attic/message-chunk.adp,v diff -u -N -r1.20 -r1.21 --- openacs-4/packages/forums/www/message-chunk.adp 22 Sep 2003 19:35:40 -0000 1.20 +++ openacs-4/packages/forums/www/message-chunk.adp 28 Oct 2003 09:54:55 -0000 1.21 @@ -1,24 +1,35 @@ - - - - - @message.subject@ - - - @message.subject@ - - - - + + + + + @message.number@: + @message.subject@ + + + @message.subject@ + + + + + + + + @message.number@ + + + - @message.user_name@ + + In response to @message.parent_number@ + + @message.posting_date_pretty@ - +
[ #forums.reply# | #forums.forward# @@ -55,6 +66,9 @@
@message.content;noquote@ +

+ #forums.Posted_by# @message.user_name@ +

Index: openacs-4/packages/forums/www/message-view-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/message-view-oracle.xql,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/forums/www/message-view-oracle.xql 18 Nov 2002 18:01:08 -0000 1.5 +++ openacs-4/packages/forums/www/message-view-oracle.xql 28 Oct 2003 09:54:55 -0000 1.6 @@ -1,7 +1,20 @@ + oracle8.1.6 + + + select fma.message_id + from forums_messages fm, + forums_messages_approved fma + where fm.message_id = :root_message_id + and fma.forum_id = :forum_id + and fma.tree_sortkey between fm.tree_sortkey and tree.right(fm.tree_sortkey) + order by $order_by + + + select message_id, @@ -13,10 +26,11 @@ to_char(posting_date, 'YYYY-MM-DD HH24:MI:SS') as posting_date_ansi, tree.tree_level(tree_sortkey) as tree_level, state, - user_id - from $table_name + user_id, + parent_id + from $table_name where forum_id = :forum_id - and tree_sortkey between tree.left(:tree_sortkey) and tree.right(:tree_sortkey) + and tree_sortkey between tree.left(:tree_sortkey) and tree.right(:tree_sortkey) order by $order_by @@ -32,11 +46,12 @@ to_char(posting_date, 'YYYY-MM-DD HH24:MI:SS') as posting_date_ansi, tree.tree_level(tree_sortkey) as tree_level, state, - user_id - from $table_name - where forum_id = :forum_id - and tree_sortkey between tree.left(:tree_sortkey) and tree.right(:tree_sortkey) - order by $order_by + user_id, + parent_id + from $table_name + where forum_id = :forum_id + and tree_sortkey between tree.left(:tree_sortkey) and tree.right(:tree_sortkey) + order by $order_by Index: openacs-4/packages/forums/www/message-view-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/message-view-postgresql.xql,v diff -u -N -r1.6 -r1.7 --- openacs-4/packages/forums/www/message-view-postgresql.xql 18 Nov 2002 18:01:08 -0000 1.6 +++ openacs-4/packages/forums/www/message-view-postgresql.xql 28 Oct 2003 09:54:55 -0000 1.7 @@ -3,6 +3,18 @@ postgresql7.1 + + + select fma.message_id + from forums_messages fm, + forums_messages_approved fma + where fm.message_id = :root_message_id + and fma.forum_id = :forum_id + and fma.tree_sortkey between fm.tree_sortkey and tree_right(fm.tree_sortkey) + order by $order_by + + + select message_id, @@ -14,11 +26,12 @@ to_char(posting_date, 'YYYY-MM-DD HH24:MI:SS') as posting_date_ansi, tree_level(tree_sortkey) as tree_level, state, - user_id - from $table_name - where forum_id = :forum_id - and tree_sortkey between tree_left(:tree_sortkey) and tree_right(:tree_sortkey) - order by $order_by + user_id, + parent_id + from $table_name + where forum_id = :forum_id + and tree_sortkey between tree_left(:tree_sortkey) and tree_right(:tree_sortkey) + order by $order_by @@ -33,11 +46,12 @@ to_char(posting_date, 'YYYY-MM-DD HH24:MI:SS') as posting_date_ansi, tree_level(tree_sortkey) as tree_level, state, - user_id - from $table_name - where forum_id = :forum_id - and tree_sortkey between tree_left(:tree_sortkey) and tree_right(:tree_sortkey) - order by $order_by + user_id, + parent_id + from $table_name + where forum_id = :forum_id + and tree_sortkey between tree_left(:tree_sortkey) and tree_right(:tree_sortkey) + order by $order_by Index: openacs-4/packages/forums/www/message-view.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/message-view.adp,v diff -u -N -r1.18 -r1.19 --- openacs-4/packages/forums/www/message-view.adp 23 Oct 2003 10:28:35 -0000 1.18 +++ openacs-4/packages/forums/www/message-view.adp 28 Oct 2003 09:54:55 -0000 1.19 @@ -31,7 +31,7 @@
- #forums.Post_a_Reply# + +
+ #forums.Back_to_thread_link# +
Index: openacs-4/packages/forums/www/message-view.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/forums/www/message-view.tcl,v diff -u -N -r1.21 -r1.22 --- openacs-4/packages/forums/www/message-view.tcl 23 Oct 2003 10:28:35 -0000 1.21 +++ openacs-4/packages/forums/www/message-view.tcl 28 Oct 2003 09:54:55 -0000 1.22 @@ -10,6 +10,8 @@ message_id:integer,notnull } +set top_message_id $message_id + forum::security::require_read_message -message_id $message_id # get the colors from the params @@ -20,6 +22,9 @@ # Load up the message information forum::message::get -message_id $message_id -array message +set direct_url_base [export_vars -base [ad_conn url] { message_id }] +set message(direct_url) "$direct_url_base\#$message_id" + # Check if the user has admin on the message set moderate_p [forum::security::can_moderate_message_p -message_id $message_id] if {!${moderate_p}} { @@ -75,26 +80,64 @@ } # We set a Tcl variable for moderation now (Ben) -if {$moderate_p} { +if { $moderate_p } { set table_name "forums_messages" } else { set table_name "forums_messages_approved" } +##### +# +# Find ordering of messages +# +##### + +if { [string equal $forum(presentation_type) flat] } { + set order_by "fma.posting_date, fma.tree_sortkey" +} else { + set order_by "fma.tree_sortkey" +} + +set forum_id $message(forum_id) +set root_message_id $message(root_message_id) +set message_id_list [db_list select_message_ordering {}] + +ds_comment $message_id_list + +set message(number) [expr [lsearch $message_id_list $message(message_id)] + 1] +set message(parent_number) {} + + + + +##### +# +# Find responses +# +##### + # More Tcl vars (we might as well use them - Ben) -if {[string equal $forum(presentation_type) flat]} { +if { [string equal $forum(presentation_type) flat] } { set order_by "$table_name.posting_date, tree_sortkey" } else { set order_by "tree_sortkey" } -db_multirow -extend { posting_date_pretty } responses $query {} { +set last_message_id $message(message_id) +db_multirow -extend { posting_date_pretty direct_url number parent_number parent_direct_url } responses $query {} { set posting_date_pretty [lc_time_fmt $posting_date_ansi "%x %X"] + set direct_url "$direct_url_base\#$message_id" + set number [expr [lsearch $message_id_list $message_id] + 1] + set parent_number [expr [lsearch $message_id_list $parent_id] + 1] + set parent_direct_url "$direct_url_base\#$parent_id" + + # Note that this variable is purposefully not part of the multirow + set last_message_id $message_id } # If this is a top-level thread, we allow subscriptions here -if {[empty_string_p $message(parent_id)]} { +if { [empty_string_p $message(parent_id)] } { set notification_chunk [notification::display::request_widget \ -type forums_message_notif \ -object_id $message_id \ @@ -114,25 +157,9 @@ } if { $post_p || [ad_conn user_id] == 0 } { - set rowcount ${responses:rowcount} - if { $rowcount > 0 } { - set last_message_id [set "responses:${rowcount}(message_id)"] - } else { - set last_message_id $message(message_id) - } - set reply_url "message-post?[export_vars { { parent_id $last_message_id } }]" + set reply_url [export_vars -base message-post { { parent_id $last_message_id } }] } -if { $post_p || [ad_conn user_id] == 0 } { - set rowcount ${responses:rowcount} - if { $rowcount > 0 } { - set last_message_id [set "responses:${rowcount}(message_id)"] - } else { - set last_message_id $message(message_id) - } - set reply_url "message-post?[export_vars { { parent_id $last_message_id } }]" -} - set thread_url [export_vars -base forum-view { { forum_id $message(forum_id) } }] if {[string equal $forum(presentation_type) flat]} {