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@ |
-
+ |
|
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]} {