Index: openacs-4/packages/faq/faq.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/faq.info,v
diff -u -r1.12 -r1.13
--- openacs-4/packages/faq/faq.info 19 May 2004 20:07:02 -0000 1.12
+++ openacs-4/packages/faq/faq.info 12 Aug 2004 13:57:46 -0000 1.13
@@ -7,26 +7,25 @@
f
f
-
- Jennie Kim Housman
+
Elizabeth Wirth
- Manage simple Question and Answer style FAQs
- 2003-11-10
+ Jennie Kim Housman
+ Nima Mazloumi
+ Manage simple and categorized Question and Answer style FAQs with WYSIWYG and notification functionalities.
+ 2004-08-12
Ybos Corporation
- Handles frequently asked questions Q&A presentation. Can be one Q&A per page or all presented flat. Straightforward application with room for improvement.
- 0
+ Handles frequently asked questions Q&A presentation. Can be one Q&A per page or all presented flat. Straightforward application with room for improvement. Support for notification as well as WYSIQYG Editor and Categories - both optional. Category trees are displayed flat. No multiple filters.
-
+
+
-
-
-
-
+
+
Index: openacs-4/packages/faq/catalog/faq.en_US.ISO-8859-1.xml
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/catalog/faq.en_US.ISO-8859-1.xml,v
diff -u -r1.9 -r1.10
--- openacs-4/packages/faq/catalog/faq.en_US.ISO-8859-1.xml 15 Oct 2003 15:28:21 -0000 1.9
+++ openacs-4/packages/faq/catalog/faq.en_US.ISO-8859-1.xml 12 Aug 2004 13:57:46 -0000 1.10
@@ -1,11 +1,15 @@
-
+
A:
Add Q&A for %faq_name%
administer
+ All Q&A
Answer
+ Answer text in html
Back to FAQs
+ Change settings
+ Configure
Create a new FAQ
Create an FAQ
Create FAQ
@@ -18,6 +22,8 @@
Edit
edit
Edit an FAQ
+ Enable Categories
+ Enable WYSIWYG
FAQ Admin
%faq_name% Admin
FAQs
@@ -38,6 +44,8 @@
Q&A On Separate Pages?
Q&A on Separate Pages?
Question
+ Question text in html
+ Set Category Mode
swap with next
Text type?
Title:
Index: openacs-4/packages/faq/www/index.vuh
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/index.vuh,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/faq/www/index.vuh 12 Aug 2004 13:57:45 -0000 1.1
@@ -0,0 +1,11 @@
+set url /[ad_conn extra_url]
+
+if {[regexp {^/+cat/+([^/]+)/*} $url \
+ ignore_whole sw_category_id]} {
+ # SWC (Site-wide categories)
+ # As the categories package currently doesn't have short names we
+ # are using IDs. We don't check whether this is a valid integer here
+ # because index.tcl will take care of that.
+ rp_form_put sw_category_id $sw_category_id
+}
+rp_internal_redirect "/packages/faq/www/one-faq"
Index: openacs-4/packages/faq/www/one-faq.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/one-faq.adp,v
diff -u -r1.11 -r1.12
--- openacs-4/packages/faq/www/one-faq.adp 29 Jun 2004 10:18:18 -0000 1.11
+++ openacs-4/packages/faq/www/one-faq.adp 12 Aug 2004 13:57:46 -0000 1.12
@@ -5,12 +5,13 @@
@faq_name;noquote@
+
\ No newline at end of file
Index: openacs-4/packages/faq/www/one-faq.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/one-faq.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/faq/www/one-faq.tcl 19 May 2004 20:07:02 -0000 1.3
+++ openacs-4/packages/faq/www/one-faq.tcl 12 Aug 2004 13:57:45 -0000 1.4
@@ -1,12 +1,13 @@
ad_page_contract {
- View contents of one faq
+ View contents of one faq. Filter by categories if enabled
@author Elizabeth Wirth (wirth@ybos.net)
@author Jennie Housman (jennie@ybos.net)
+ @author Nima Mazloumi (nima.mazloumi@gmx.de)
@creation-date 2000-10-24
} {
-
+ {category_id:integer,optional {}}
faq_id:naturalnum,notnull
}
@@ -22,11 +23,62 @@
set context [list $faq_name]
-db_multirow one_question q_and_a_info "select entry_id, faq_id, question, answer, sort_key
-from faq_q_and_as
+# Use Categories?
+set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
+
+if { $use_categories_p == 1 && [exists_and_not_null category_id] } {
+
+ set select_sql_query "select entry_id, faq_id, question, answer, sort_key
+from faq_q_and_as qa, category_object_map com, acs_named_objects nam
+where faq_id = :faq_id and
+com.object_id = qa.entry_id and
+nam.package_id = :package_id and
+com.object_id = nam.object_id and
+com.category_id = :category_id
+order by sort_key"
+
+} else {
+
+ set select_sql_query "select entry_id, faq_id, question, answer, sort_key
+from faq_q_and_as
where faq_id = :faq_id
order by sort_key"
+}
+db_multirow one_question q_and_a_info $select_sql_query
+
+# Site-Wide Categories
+if { $use_categories_p == 1} {
+ set package_url [ad_conn package_url]
+ if { ![empty_string_p $category_id] } {
+ set category_name [category::get_name $category_id]
+ if { [empty_string_p $category_name] } {
+ ad_return_exception_page 404 "No such category" "Site-wide \
+ Category with ID $category_id doesn't exist"
+ return
+ }
+ # Show Category in context bar
+ append context_base_url /cat/$category_id
+ lappend context [list $context_base_url $category_name]
+ set type "all"
+ }
+
+ # Cut the URL off the last item in the context bar
+ if { [llength $context] > 0 } {
+ set context [lreplace $context end end [lindex [lindex $context end] end]]
+ }
+
+ db_multirow -unclobber -extend { category_name tree_name } categories categories {
+ select c.category_id as category_id, c.tree_id
+ from categories c, category_tree_map ctm
+ where ctm.tree_id = c.tree_id
+ and ctm.object_id = :package_id
+ } {
+ set category_name [category::get_name $category_id]
+ set tree_name [category_tree::get_name $tree_id]
+ }
+}
+
set notification_chunk [notification::display::request_widget \
-type one_faq_qa_notif \
-object_id $faq_id \
Index: openacs-4/packages/faq/www/admin/configure.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/configure.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/faq/www/admin/configure.adp 12 Aug 2004 13:57:43 -0000 1.1
@@ -0,0 +1,5 @@
+
+@title@
+@context@
+
+
Index: openacs-4/packages/faq/www/admin/configure.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/configure.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/faq/www/admin/configure.tcl 12 Aug 2004 13:57:43 -0000 1.1
@@ -0,0 +1,36 @@
+ad_page_contract {
+
+ This page allows a faq admin to change instance wide settings.
+
+ @author Nima Mazloumi (nima.mazloumi@gmx.de)
+ @creation-date 2004-08-11
+
+} {
+ {return_url ""}
+}
+
+set title "#faq.Configure#"
+set context [list $title]
+
+set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
+set use_wysiwyg_p [parameter::get -parameter "UseWysiwygP"]
+
+ad_form -name categories_mode -form {
+ {cat_enabled_p:text(radio)
+ {label "#faq.Enable_Categories#"}
+ {options {{Yes 1} {No 0}}}
+ {value $use_categories_p}}
+ {wysiwyg_enabled_p:text(radio)
+ {label "#faq.Enable_WYSIWYG#"}
+ {options {{Yes t} {No f}}}
+ {value $use_wysiwyg_p}
+ }
+ {return_url:text(hidden) {value $return_url}}
+ {submit:text(submit) {label "[_ faq.Change_settings]"}}
+} -on_submit {
+ parameter::set_value -parameter "EnableCategoriesP" -value $cat_enabled_p
+ parameter::set_value -parameter "UseWysiwygP" -value $wysiwyg_enabled_p
+ if {![empty_string_p $return_url]} {
+ ns_returnredirect $return_url
+ }
+}
Index: openacs-4/packages/faq/www/admin/faq-delete.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-delete.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/faq/www/admin/faq-delete.tcl 28 Nov 2003 16:55:15 -0000 1.2
+++ openacs-4/packages/faq/www/admin/faq-delete.tcl 12 Aug 2004 13:57:43 -0000 1.3
@@ -2,7 +2,7 @@
ad_page_contract {
- delete an FAQ
+ delete an FAQ, also deletes entries in acs_named_objects for categories
@author Elizabeth Wirth (wirth@ybos.net)
@author Jennie Housman (jennie@ybos.net)
@creation-date 2000-10-24
@@ -24,6 +24,7 @@
);
end;
}
+ db_dml delete_named_object "delete from acs_named_objects where object_id in (select entry_id from faq_q_and_as where faq_id = :faq_id)"
}
ad_returnredirect "index"
\ No newline at end of file
Index: openacs-4/packages/faq/www/admin/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/index.adp,v
diff -u -r1.9 -r1.10
--- openacs-4/packages/faq/www/admin/index.adp 27 Feb 2004 16:09:27 -0000 1.9
+++ openacs-4/packages/faq/www/admin/index.adp 12 Aug 2004 13:57:43 -0000 1.10
@@ -6,6 +6,9 @@
-
+>#faq.Configure#
+
+ #categories.Site_wide_categories#
+
+
Index: openacs-4/packages/faq/www/admin/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/index.tcl,v
diff -u -r1.7 -r1.8
--- openacs-4/packages/faq/www/admin/index.tcl 22 Dec 2003 23:42:33 -0000 1.7
+++ openacs-4/packages/faq/www/admin/index.tcl 12 Aug 2004 13:57:43 -0000 1.8
@@ -3,9 +3,11 @@
ad_page_contract {
Admin for FAQs on this site
+ Categories for FAQ-Package added
@author Jennie Housman (jennie@ybos.net)
@author Elizabeth Wirth (wirth@ybos.net)
+ @author Nima Mazloumi (nima.mazloumi@gmx.de)
@creation-date 2000-10-24
} {
@@ -78,4 +80,10 @@
set enable_url [export_vars -base faq-enable { faq_id }]
}
+# for categories
+set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
+set category_map_url [export_vars -base "[site_node::get_package_url -package_key categories]cadmin/one-object" { { object_id $package_id } }]
+
+set return_url [ns_conn url]
+
ad_return_template
Index: openacs-4/packages/faq/www/admin/one-question.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/one-question.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/faq/www/admin/one-question.tcl 28 Nov 2003 16:55:15 -0000 1.4
+++ openacs-4/packages/faq/www/admin/one-question.tcl 12 Aug 2004 13:57:43 -0000 1.5
@@ -5,6 +5,7 @@
View contents of one Q&A
@author Elizabeth Wirth (wirth@ybos.net)
@author Jennie Housman (jennie@ybos.net)
+ @author Nima Mazloumi (nima.mazloumi@gx.de)
@creation-date 2000-10-24
} {
@@ -25,10 +26,10 @@
where entry_id = :entry_id
and a.faq_id = f.faq_id"
-set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] "One Q&A"]
+set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] "[_ faq.One_Question]"]
-set edit_url "q_and_a-edit?[export_vars { entry_id faq_id }]"
+set edit_url "q-and-a-add-edit?[export_vars { entry_id faq_id }]"
set delete_url "q_and_a-delete?[export_vars { entry_id faq_id }]"
-set create_url "q_and_a-new?[export_vars { faq_id } ]"
+set create_url "q-and-a-add-edit?[export_vars { faq_id } ]"
ad_return_template
Index: openacs-4/packages/faq/www/admin/q-and-a-add-edit.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-add-edit.adp,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/faq/www/admin/q-and-a-add-edit.adp 22 Dec 2003 23:24:41 -0000 1.2
+++ openacs-4/packages/faq/www/admin/q-and-a-add-edit.adp 12 Aug 2004 13:57:43 -0000 1.3
@@ -3,4 +3,7 @@
@context;noquote@
new_quest_answ.question
-
+
+
+ #categories.Site_wide_categories#
+
Index: openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl 29 Jun 2004 10:18:18 -0000 1.4
+++ openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl 12 Aug 2004 13:57:43 -0000 1.5
@@ -1,8 +1,9 @@
ad_page_contract {
- Adds or Edit a new Q&A to a FAQ
+ Adds or Edit a new Q&A to a FAQ and Categories if Parameter EnableCategoriesP is Enabled
@author Rocael Hernandez (roc@viaro.net)
@author Gerardo Morales Cadoret (gmorales@galileo.edu)
+ @author Nima Mazloumi (nima.mazloumi@gmx.de)
@creation-date 2003-11-26
} {
@@ -22,82 +23,123 @@
if { ![ad_form_new_p -key entry_id]} {
set page_title [_ faq.One_Question]
- set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] "One Q&A"]
+ set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] [_ faq.One_Question]]
+ set submit_label "[_ faq.Update_This_QA]"
permission::require_permission -object_id [ad_conn package_id] -privilege faq_modify_faq
} else {
set page_title [_ faq.Add_QA_for_faq_name]
- set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] [_ faq.Create_new_QA]]
+ set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] [_ faq.Create_new_QA]]
+ set submit_label "[_ faq.Create_new_QA]"
permission::require_permission -object_id [ad_conn package_id] -privilege faq_create_faq
}
set question ""
set answer ""
set insert_p "f"
-set mime_type ""
set question_q [ad_quotehtml $question]
set answer_q [ad_quotehtml $answer]
set user_id [ad_verify_and_get_user_id]
set creation_ip [ad_conn host]
-ad_form -name new_quest_answ -export {faq_id creation_ip} -form {
+# Are categories used?
+set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
+set package_id [ad_conn package_id]
- entry_id:key
- {prev_entry_id:text(hidden) {value $prev_entry_id}}
- {question:text(textarea) {label "Question"} {html {rows 10 cols 40 wrap soft }} {help_text {Question text in html}}}
- {answer:text(textarea) {label "Answer"} {html {rows 10 cols 40 wrap soft }} {help_text {Answer text in html}}}
+# Is WYSIWYG enabled?
+set use_wysiwyg_p [parameter::get -parameter "UseWysiwygP" -default "f"]
-} -select_query {
-
- select question, answer,faq_name,qa.faq_id
+set select_sql_query "select question, answer,faq_name,qa.faq_id
from faq_q_and_as qa, faqs f
where entry_id = :entry_id
- and f.faq_id = qa.faq_id
+ and f.faq_id = qa.faq_id"
-} -new_data {
+ad_form -name new_quest_answ -export {faq_id creation_ip} -form {
+ {entry_id:key}
+ {prev_entry_id:text(hidden) {value $prev_entry_id}}
+ {question:text {label "[_ faq.Question]"} {html {size 50}} {help_text {[_ faq.Question_text_in_html]}}}
+ {answer:richtext(richtext) {htmlarea_p $use_wysiwyg_p} {label "[_ faq.Answer]"} {html {rows 10 cols 40 wrap soft }} {help_text {[_ faq.Answer_text_in_html]}}}
+}
- set page_title [_ faq.Add_QA_for_faq_name]
- set last_entry_id $prev_entry_id
-
- db_transaction {
+# customize form depending on category capabilities
+if { $use_categories_p == 1 } {
- set old_sort_key [db_string faq_sortkey_get "select sort_key from faq_q_and_as
- where entry_id = :last_entry_id" -default 0]
-
- if ![string equal $old_sort_key 0] {
- set sql_update_q_and_as "
- update faq_q_and_as
- set sort_key = sort_key + 1
- where sort_key > :old_sort_key"
-
- db_dml faq_update $sql_update_q_and_as
-
- set sort_key [expr $old_sort_key + 1]
+ #add link do define categories
+ set category_map_url [export_vars -base "[site_node::get_package_url -package_key categories]cadmin/one-object" { { object_id $package_id } }]
- } else {
+ #extend the form to support categories
+ category::ad_form::add_widgets -form_name new_quest_answ -container_object_id $package_id -categorized_object_id [value_if_exists entry_id]
+
+ ad_form -extend -name new_quest_answ -select_query $select_sql_query -on_submit {
+ set category_ids [category::ad_form::get_categories -container_object_id $package_id]
+ set answer [ template::util::richtext::get_property contents $answer]
+ } -on_request {
+ set htmlarea_p $use_wysiwyg_p
+ set answer [template::util::richtext::create $answer "text/html"]
+ } -new_data {
+
+ set page_title [_ faq.Add_QA_for_faq_name]
+ set last_entry_id $prev_entry_id
+
+ db_transaction {
+ set old_sort_key [db_string faq_sortkey_get "select sort_key from faq_q_and_as where entry_id = :last_entry_id" -default 0]
+
+ if ![string equal $old_sort_key 0] {
+ set sql_update_q_and_as "update faq_q_and_as set sort_key = sort_key + 1 where sort_key > :old_sort_key"
+ db_dml faq_update $sql_update_q_and_as
+ set sort_key [expr $old_sort_key + 1]
+ } else {
+ set sort_key $entry_id
+ }
+ }
- set sort_key $entry_id
-
- }
+ db_transaction {
+ db_exec_plsql create_q_and_a { *SQL* }
+ category::map_object -remove_old -object_id $entry_id $category_ids
+ db_dml insert_asc_named_object "insert into acs_named_objects (object_id, object_name, package_id) values ( :entry_id, 'FAQ', :package_id)"
+ }
+ } -edit_data {
+ db_dml q_and_a_edit "update faq_q_and_as set question = :question, answer = :answer where entry_id = :entry_id"
+ db_dml insert_asc_named_object "update acs_named_objects set object_name = 'FAQ', package_id = :package_id where object_id = :entry_id"
+ category::map_object -remove_old -object_id $entry_id $category_ids
+ } -after_submit {
+ ad_returnredirect "one-faq?faq_id=$faq_id"
+ ad_script_abort
}
-
-
- db_transaction {
- db_exec_plsql create_q_and_a { *SQL* }
- }
+} else {
+ ad_form -extend -name new_quest_answ -select_query $select_sql_query -on_submit {
+ set answer [ template::util::richtext::get_property contents $answer]
+ } -on_request {
+ set htmlarea_p $use_wysiwyg_p
+ set answer [template::util::richtext::create $answer "text/html"]
+ } -new_data {
-} -edit_data {
+ set page_title [_ faq.Add_QA_for_faq_name]
+ set last_entry_id $prev_entry_id
-db_dml q_and_a_edit "update faq_q_and_as
- set question = :question,
- answer = :answer
- where entry_id = :entry_id"
-} -after_submit {
- faq::notification_delivery::do_notification $question $answer $entry_id $faq_id $user_id
- ad_returnredirect "one-faq?faq_id=$faq_id"
- ad_script_abort
-}
+ db_transaction {
+ set old_sort_key [db_string faq_sortkey_get "select sort_key from faq_q_and_as where entry_id = :last_entry_id" -default 0]
+ if ![string equal $old_sort_key 0] {
+ set sql_update_q_and_as "update faq_q_and_as set sort_key = sort_key + 1 where sort_key > :old_sort_key"
+ db_dml faq_update $sql_update_q_and_as
+ set sort_key [expr $old_sort_key + 1]
+ } else {
+ set sort_key $entry_id
+ }
+ }
+ db_transaction {
+ db_exec_plsql create_q_and_a { *SQL* }
+ }
+ } -edit_data {
+ db_dml q_and_a_edit "update faq_q_and_as set question = :question, answer = :answer where entry_id = :entry_id"
+ } -after_submit {
+ faq::notification_delivery::do_notification $question $answer $entry_id $faq_id $user_id
+ ad_returnredirect "one-faq?faq_id=$faq_id"
+ ad_script_abort
+ }
+}
+
Index: openacs-4/packages/faq/www/admin/q_and_a-delete.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q_and_a-delete.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/faq/www/admin/q_and_a-delete.tcl 28 Nov 2003 16:55:15 -0000 1.3
+++ openacs-4/packages/faq/www/admin/q_and_a-delete.tcl 12 Aug 2004 13:57:43 -0000 1.4
@@ -24,6 +24,7 @@
);
end;
}
+ db_dml delete_named_object "delete from acs_named_objects where object_id = :entry_id"
}
ad_returnredirect "one-faq?faq_id=$faq_id"