Commit cd8b9616 authored by Frank Bergmann's avatar Frank Bergmann

- Update to OpenACS 5.9.1

parent 16693143
......@@ -7,21 +7,22 @@
<initial-install-p>f</initial-install-p>
<singleton-p>f</singleton-p>
<version name="5.9.0d1" url="http://openacs.org/repository/download/apm/faq-5.9.0d1.apm">
<version name="5.9.1" url="http://openacs.org/repository/download/apm/faq-5.9.1.apm">
<owner url="mailto:mazloumi@uni-mannheim.de">Nima Mazloumi</owner>
<owner url="mailto:jennie@ybos.net">Jennie Kim Housman</owner>
<owner url="mailto:wirth@ybos.net">Elizabeth Wirth</owner>
<summary>Manage simple and categorized Question and Answer style FAQs with WYSIWYG and notification functionalities.</summary>
<release-date>2007-07-11</release-date>
<release-date>2017-08-06</release-date>
<vendor url="http://ybos.net">Ybos Corporation</vendor>
<description format="text/html">Handles frequently asked questions Q&amp;A presentation. Can be one Q&amp;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.</description>
<maturity>2</maturity>
<package_instance_name>#faq.FAQs#</package_instance_name>
<provides url="faq" version="5.9.0d1"/>
<requires url="acs-kernel" version="5.8.1"/>
<requires url="categories" version="1.1.2d3"/>
<requires url="notifications" version="5.8.1"/>
<provides url="faq" version="5.9.1"/>
<requires url="acs-kernel" version="5.9.1"/>
<requires url="acs-tcl" version="5.9.1"/>
<requires url="categories" version="1.1.3"/>
<requires url="notifications" version="5.9.1"/>
<callbacks>
<callback type="after-install" proc="faq::install::package_install"/>
......
......@@ -21,3 +21,9 @@ ad_form -name faq_add_edit -mode $mode -action "faq-add-edit" -form {
ad_returnredirect $return_url
ad_script_abort
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -34,8 +34,8 @@ create table faqs (
primary key,
faq_name varchar (250)
constraint faqs_faq_name_nn not null,
separate_p boolean check(separate_p in ('f','t')),
disabled_p char(1) default 'f' check(disabled_p in ('f','t'))
separate_p boolean,
disabled_p boolean default false
);
......
......@@ -7,9 +7,9 @@ drop trigger faq_sc__itrg on faq_q_and_as;
drop trigger faq_sc__dtrg on faq_q_and_as;
drop trigger faq_sc__utrg on faq_q_and_as;
drop function faq_sc__itrg ()
drop function faq_sc__dtrg ()
drop function faq_sc__utrg ()
drop function faq_sc__itrg ();
drop function faq_sc__dtrg ();
drop function faq_sc__utrg ();
--drop functions
drop function faq__new_q_and_a (integer,integer,varchar,varchar,integer,varchar,timestamptz,integer,varchar,integer);
......
--
-- Alter caveman style booleans (type character(1)) to real SQL boolean types.
--
ALTER TABLE faqs
DROP constraint IF EXISTS faqs_disabled_p_check,
DROP constraint IF EXISTS faqs_separate_p_check,
DROP constraint IF EXISTS faqs_disabled_p_ck,
DROP constraint IF EXISTS faqs_separate_p_ck,
DROP constraint IF EXISTS faqs_disabled_p,
DROP constraint IF EXISTS faqs_separate_p,
ALTER COLUMN disabled_p DROP DEFAULT,
ALTER COLUMN disabled_p TYPE boolean
USING disabled_p::boolean,
ALTER COLUMN disabled_p SET DEFAULT false;
ad_library {
Procedures to do a new impl and aliases in the acs-sc.
@creation-date 2004-04-06
@author Gerardo Morales Cadoret (gmorales@galileo.edu)
}
namespace eval faq::apm_callback {}
ad_proc -private faq::apm_callback::package_install {
} {
Does the integration with the notifications package.
} {
db_transaction {
# Create the impl and aliases for one faq Q&A
set impl_id [create_one_faq_qa_impl]
# Create the notification type for one specific FAQ
set type_id [create_one_faq_type $impl_id]
# Enable the delivery intervals and delivery methods for a specific FAQ
enable_intervals_and_methods $type_id
# Create the impl and aliases for all faqs Q&A
set impl_id [create_all_faq_qa_impl]
# Create the notification type for all FAQs
set type_id [create_all_faq_type $impl_id]
# Enable the delivery intervals and delivery methods for all FAQs
enable_intervals_and_methods $type_id
}
}
ad_proc -private faq::apm_callback::package_uninstall {
} {
Remove the integration with the notification package
} {
db_transaction {
# Delete the type_id for a specific FAQ
notification::type::delete -short_name one_faq_qa_notif
# Delete the implementation for the notification of a new Q&A of one specific FAQ
delete_one_faq_impl
# Delete the type_id foe all FAQs
notification::type::delete -short_name all_faq_qa_notif
# Delete the implementation for the notification of a new Q&A all Faqs
delete_all_faq_impl
}
}
ad_proc -public faq::apm_callback::delete_one_faq_impl {} {
Unregister the NotificationType implementation for one_faq_qa_notif_type.
} {
acs_sc::impl::delete \
-contract_name "NotificationType" \
-impl_name one_faq_qa_notif_type
}
ad_proc -public faq::apm_callback::delete_all_faq_impl {} {
Unregister the NotificationType implementation for one_faq_qa_notif_type.
} {
acs_sc::impl::delete \
-contract_name "NotificationType" \
-impl_name all_faq_qa_notif_type
}
ad_proc -public faq::apm_callback::create_one_faq_qa_impl {} {
Register the service contract implementation and return the impl_id
@return impl_id of the created implementation
} {
return [acs_sc::impl::new_from_spec -spec {
name one_faq_qa_notif_type
contract_name NotificationType
owner faq
aliases {
GetURL faq::notification::get_url
ProcessReply faq::notification::process_reply
}
}]
}
ad_proc -public faq::apm_callback::create_one_faq_type {impl_id} {
Create the notification type for one specific FAQ Q&A
@return the type_id of the created type
} {
return [notification::type::new \
-sc_impl_id $impl_id \
-short_name one_faq_qa_notif \
-pretty_name "One FAQ Q&A" \
-description "Notification of a new Q&A of one specific faq"]
}
ad_proc -public faq::apm_callback::enable_intervals_and_methods {type_id} {
Enable the intervals and delivery methods of a specific type
} {
# Enable the various intervals and delivery method
notification::type::interval_enable \
-type_id $type_id \
-interval_id [notification::interval::get_id_from_name -name instant]
notification::type::interval_enable \
-type_id $type_id \
-interval_id [notification::interval::get_id_from_name -name hourly]
notification::type::interval_enable \
-type_id $type_id \
-interval_id [notification::interval::get_id_from_name -name daily]
# Enable the delivery methods
notification::type::delivery_method_enable \
-type_id $type_id \
-delivery_method_id [notification::delivery::get_id -short_name email]
}
ad_proc -public faq::apm_callback::create_all_faq_qa_impl {} {
Register the service contract implementation and return the impl_id
@return impl_id of the created implementation
} {
return \
[acs_sc::impl::new_from_spec -spec {
name all_faq_qa_notif_type
contract_name NotificationType
owner faq
aliases {
GetURL faq::notification::get_url
ProcessReply faq::notification::process_reply
}
}]
}
ad_proc -public faq::apm_callback::create_all_faq_type {impl_id} {
Create the notification type for one specific FAQ Q&A
@return the type_id of the created type
} {
set type_id [notification::type::new \
-sc_impl_id $impl_id \
-short_name all_faq_qa_notif \
-pretty_name "FAQ Q&A" \
-description "Notification of a new Q&A of any faq"]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
ad_proc -callback application-track::getApplicationName -impl faqs {} {
callback implementation
} {
return "faqs"
}
ad_proc -callback application-track::getGeneralInfo -impl faqs {} {
callback implementation
} {
db_1row my_query {
select count(f.faq_id) as result
from faqs f, acs_objects o, dotlrn_communities com, acs_objects ac
where o.object_id=f.faq_id
and com.community_id=:comm_id
and o.context_id = ac.object_id
and ac.context_id = com.package_id
}
return "$result"
}
ad_proc -callback application-track::getSpecificInfo -impl faqs {} {
callback implementation
} {
upvar $query_name my_query
upvar $elements_name my_elements
set my_query {
select f.faq_name as name,f1.question as question,f1.answer as answer,u.username as creator, o.creation_date as creation_date
from faqs f, acs_objects o, dotlrn_communities com,faq_q_and_as f1, acs_objects ac,users u
where o.object_id=f.faq_id
and com.community_id=:class_instance_id
and f.faq_id = f1.faq_id
and o.context_id = ac.object_id
and ac.context_id = com.package_id
and o.creation_user = u.user_id
}
set my_elements {
name {
label "Name"
display_col name
html {align center}
}
questions {
label "Questions"
display_col question
html {align center}
}
answers {
label "Answers"
display_col answer
html {align center}
}
creator {
label "Creator"
display_col creator
html {align center}
}
creation_date {
label "Creation_date"
display_col creation_date
html {align center}
}
}
return "OK"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
ad_library {
FAQ install callbacks
@creation-date 2004-04-01
@author Jeff Davis davis@xarg.net
@cvs-id $Id$
}
namespace eval faq::install {}
ad_proc -private faq::install::package_install {} {
package install callback
} {
faq::sc::register_implementations
faq::apm_callback::package_install
}
ad_proc -private faq::install::package_uninstall {} {
package uninstall callback
} {
faq::sc::unregister_implementations
faq::apm_callback::package_uninstall
}
ad_proc -private faq::install::package_upgrade {
{-from_version_name:required}
{-to_version_name:required}
} {
Package before-upgrade callback
} {
apm_upgrade_logic \
-from_version_name $from_version_name \
-to_version_name $to_version_name \
-spec {
5.2.0d1 5.2.0d2 {
# need to install the faq callbacks
faq::sc::register_faq_fts_impl
faq::sc::register_faq_q_and_a_fts_impl
faq::apm_callback::package_install
}
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
ad_library {
Faq Library - Reply Handling
@creation-date 2004-03-31
@author Ben Adida <ben@openforce.biz>
@author by Gerardo Morales <gmorales@galileo.edu>
}
namespace eval faq {
ad_proc -public get_instance_info {
-arrayname:required
-faq_id:required
} {
returns the name of the FAQ and whether to display
questions and their answers all on the listing page
or on separate pages
} {
upvar $arrayname faq_info
db_0or1row get_info "" -column_array faq_info
}
}
namespace eval faq::notification {
ad_proc -public get_url {
object_id
} {
returns a full url to the object_id.
handles messages and forums.
} {
set q_and_a_id $object_id
db_1row get_faq_id "*SQL*"
set faq_url "[ad_url][ad_conn package_url]"
return ${faq_url}one-faq?faq_id=$faq_id
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<?xml version="1.0"?>
<queryset>
<fullquery name="faq::get_instance_info.get_info">
<querytext>
select faq_name, separate_p from faqs
where faq_id = :faq_id
</querytext>
</fullquery>
<fullquery name="faq::notification::get_url.get_faq_id">
<querytext>
select faq_id from faq_q_and_as
where entry_id = :q_and_a_id
</querytext>
</fullquery>
</queryset>
ad_library {
FAQ Fts contract bindings.
@creation-date 2004-04-01
@author Jeff Davis davis@xarg.net
@cvs-id $Id$
}
namespace eval faq::fts {}
ad_proc -private faq::fts::datasource { faq_id } {
returns a datasource for a faq event to
be indexed by the full text search engine.
@param faq_id
@author davis@xarg.net
@creation-date 2004-04-01
} {
set title [db_string name {select faq_name from faqs where faq_id = :faq_id} -default "FAQ $faq_id"]
set content {}
db_foreach qa { select question, answer from faq_q_and_as where faq_id = :faq_id } {
append content "Q: $question\n\nA: $answer\n\n"
}
return [list object_id $faq_id \
title $title \
content $content \
keywords {} \
storage_type text \
mime text/plain ]
}
ad_proc -private faq::fts::url { faq_id } {
returns a url for a faq to the search package
@author davis@xarg.net
@creation-date 2004-04-01
} {
set faq_package_id [db_string package_id {select package_id from acs_objects where object_id = :faq_id} -default {}]
return "[ad_url][apm_package_url_from_id $faq_package_id]one-faq?faq_id=$faq_id"
}
namespace eval faq_qanda::fts {}
ad_proc -private faq_qanda::fts::datasource { entry_id } {
returns a datasource for a faq q/a to
be indexed by the full text search engine.
@param entry_id
@author davis@xarg.net
@creation-date 2004-04-01
} {
set title [db_string name {
select f.faq_name from faqs f
where faq_id = (select faq_id from faq_q_and_as where entry_id = :entry_id)
} -default "FAQ $entry_id"]
if {[db_0or1row get {select question, answer from faq_q_and_as where entry_id = :entry_id}]} {
append title ": $question"
set content "Q: $question\n\nA: $answer\n\n"
} else {
set content {}
}
return [list object_id $entry_id \
title $title \
content $content \
keywords {} \
storage_type text \
mime text/plain ]
}
ad_proc -private faq_qanda::fts::url { entry_id } {
returns a url for a faq to the search package
@author davis@xarg.net
@creation-date 2004-04-01
} {
set faq_package_id [db_string package_id {select package_id from acs_objects where object_id = :entry_id} -default {}]
return "[ad_url][apm_package_url_from_id $faq_package_id]one-question?entry_id=$entry_id"
}
namespace eval faq::sc {}
ad_proc -private faq::sc::register_implementations {} {
Register the faq content type fts contract
} {
db_transaction {
faq::sc::register_faq_fts_impl
faq::sc::register_faq_q_and_a_fts_impl
}
}
ad_proc -private faq::sc::unregister_implementations {} {
db_transaction {
acs_sc::impl::delete -contract_name FtsContentProvider -impl_name faq
acs_sc::impl::delete -contract_name FtsContentProvider -impl_name faq_q_and_a
}
}
ad_proc -private faq::sc::register_faq_fts_impl {} {
set spec {
name "faq"
aliases {
datasource faq::fts::datasource
url faq::fts::url
}
contract_name FtsContentProvider
owner faq
}
acs_sc::impl::new_from_spec -spec $spec
}
ad_proc -private faq::sc::register_faq_q_and_a_fts_impl {} {
set spec {
name "faq_q_and_a"
aliases {
datasource faq_qanda::fts::datasource
url faq_qanda::fts::url
}
contract_name FtsContentProvider
owner faq
}
acs_sc::impl::new_from_spec -spec $spec
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
ad_library {
Faq Library - Reply Handling
@creation-date 2004-04-02
@author Gerardo Morales <gmorales@galileo.edu>
}
namespace eval faq::notification_delivery {
ad_proc -public do_notification {
question
answer
entry_id
faq_id
user_id
} {
db_1row select_faq_name {*SQL*}
db_1row select_user_name {*SQL*}
set q_a_text ""
append q_a_text "Question: $question
Answer: $answer"
set text_version ""
set faq_url [faq::notification::get_url $entry_id]
append text_version "Faq: $faq_name
Author: $name ($email)\n\n"
append text_version [wrap_string $q_a_text]
append text_version "\n\n--
To view the entire FAQ go to:
$faq_url
"
set new_content $text_version
set package_id [ad_conn package_id]
# Notifies the users that requested notification for the specific FAQ
notification::new \
-type_id [notification::type::get_type_id \
-short_name one_faq_qa_notif] \
-object_id $faq_id \
-response_id $entry_id \
-notif_subject "New Q&A of $faq_name" \
-notif_text $new_content
# Notifies the users that requested notification for all FAQ's
notification::new \
-type_id [notification::type::get_type_id \
-short_name all_faq_qa_notif] \
-object_id $package_id \
-response_id $entry_id \
-notif_subject "New Q&A of $faq_name" \
-notif_text $new_content
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<?xml version="1.0"?>
<queryset>
<fullquery name="faq::notification_delivery::do_notification.select_faq_name">
<querytext>
select faq_name from
faqs where faq_id = :faq_id
</querytext>
</fullquery>
<fullquery name="faq::notification_delivery::do_notification.select_user_name">
<querytext>
select persons.first_names || ' ' || persons.last_name as name,
parties.email
from persons, parties
where person_id = :user_id
and person_id = party_id
</querytext>
</fullquery>
</queryset>
This diff is collapsed.
This diff is collapsed.
......@@ -3,7 +3,7 @@
<property name="doc(title)">@faq_name;literal@</property>
<if @one_question:rowcount@ eq 0>
<i>#faq.lt_no_questions#</i><p>
<em>#faq.lt_no_questions#</em><p>
</if>
<else>
......@@ -12,14 +12,14 @@
<td width="30%">
<ol>
<multiple name="one_question">
<if @separate_p@ eq "t">
<if @separate_p;literal@ true>
<li>
<a href="one-question?entry_id=@one_question.entry_id@">@one_question.question@</a>
</li>
</if>
<if @separate_p@ eq "f">
<if @separate_p;literal@ false>
<li>
<a href="#@one_question.entry_id@">@one_question.question@</a>
......@@ -29,15 +29,15 @@
</multiple>
</ol>
</td>
<if @separate_p@ eq "f">
<if @separate_p;literal@ false>
<td>
<ol>
<multiple name="one_question">
<li>
<a name="@one_question.entry_id@"></a>
<b>#faq.Q#</b> @one_question.question@
<strong>#faq.Q#</strong> @one_question.question@
<P>
<b>#faq.A#</b> @one_question.answer@
<strong>#faq.A#</strong> @one_question.answer@
<p>
</li>
......
......@@ -6,7 +6,7 @@ ad_page_contract {
@creation-date 2004-08-11
} {
{return_url ""}
{return_url:localurl ""}
}
set title "#faq.Configure#"
......@@ -34,3 +34,9 @@ ad_form -name categories_mode -form {
ad_returnredirect $return_url
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -6,7 +6,7 @@ ad_page_contract {
@creation-date 2003-11-26
} {
faq_id:naturalnum,optional
return_url:optional
return_url:localurl,optional
} -properties {
context:onevalue
faq_id:onevalue
......@@ -31,3 +31,9 @@ if { ![ad_form_new_p -key faq_id]} {
permission::require_permission -object_id [ad_conn package_id] -privilege faq_create_faq
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -27,4 +27,9 @@ db_transaction {
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
ad_returnredirect "index"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -19,3 +19,9 @@ if { ![info exists referer] } {
}
ad_returnredirect $referer
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -21,3 +21,9 @@ db_dml faq_edit "update faqs
ad_returnredirect "."
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -12,7 +12,7 @@
<tr>
<th align="right">#faq.QA_On_Separate_Pages#</th>
<td><select name="separate_p">
<if @separate_p@ eq "t">
<if @separate_p;literal@ true>
<option value="t" selected>#faq.Yes#</option>
<option value="f">#faq.No#</option>
</if>
......
......@@ -27,3 +27,9 @@ set submit_label [_ faq.Update_FAQ]
db_1row faq_get_name "select faq_name,separate_p from faqs where faq_id = :faq_id"
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -21,3 +21,9 @@ if { ![info exists referer] } {
}
ad_returnredirect $referer
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -39,3 +39,9 @@ db_transaction {
# on error ...
ad_returnredirect "."
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -30,3 +30,9 @@ set faq_name ""
set faq_id [db_nextval acs_object_id_seq]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -87,3 +87,9 @@ set category_map_url [export_vars -base "[site_node::get_package_url -package_ke
set return_url [ns_conn url]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -6,7 +6,7 @@
<include src="/packages/faq/lib/faq-add-edit" &="faq_id" mode="display">
<if @faq_q_and_as:rowcount@ eq 0>
<i>#faq.lt_no_questions#</i><p></p>
<em>#faq.lt_no_questions#</em><p></p>
</if>
<else>
......@@ -17,8 +17,7 @@
(
<a href="q-and-a-add-edit?entry_id=@faq_q_and_as.entry_id@&amp;faq_id=@faq_id@" title="Edit Question">#faq.edit#</a> |
<a href="one-question?entry_id=@faq_q_and_as.entry_id@" title="Preview Question">#faq.preview#</a> |
<a href="q_and_a-delete?entry_id=@faq_q_and_as.entry_id@" onclick="return confirm('#faq.lt_Are_you_sure_you_want_1#');" title="Delete Question">#faq.delete#</a> |
<a href="q_and_a-delete?entry_id=@faq_q_and_as.entry_id@" class="acs-confirm-delete" title="Delete Question">#faq.delete#</a> |
<if @faq_q_and_as.sort_key@ ne @highest_sort_key_in_list@>
<a href="q-and-a-add-edit?prev_entry_id=@faq_q_and_as.entry_id@&amp;faq_id=@faq_id@" title="Insert new question after this one">#faq.insert_after#</a> |
<a href="swap?faq_id=@faq_id@&amp;entry_id=@faq_q_and_as.entry_id@" title="Swap question with next one">#faq.swap_with_next#</a>
......
......@@ -38,4 +38,12 @@ set context [list $faq_name]
set new_faq_url [export_vars -base q-and-a-add-edit { faq_id }]
template::add_confirm_handler -CSSclass acs-confirm-delete -message [_ faq.lt_Are_you_sure_you_want_1]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -2,9 +2,9 @@
<property name="context">@context;literal@</property>
<property name="doc(title)">#faq.One_Question#</property>
<b>#faq.Q#</b> @question;noquote@
<strong>#faq.Q#</strong> @question;noquote@
<P>
<b>#faq.A#</b> @answer;noquote@
<strong>#faq.A#</strong> @answer;noquote@
<p>
<a href="@edit_url@">#faq.Edit#</a>
|
......
......@@ -33,3 +33,9 @@ set delete_url [export_vars -base q_and_a-delete { entry_id faq_id }]
set create_url [export_vars -base q-and-a-add-edit { faq_id } ]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -150,3 +150,9 @@ if { $use_categories_p == 1 } {
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -28,3 +28,9 @@ db_transaction {
}
ad_returnredirect "one-faq?faq_id=$faq_id"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -27,3 +27,9 @@ set faq_id [db_string select_faq_id "select faq_id from
ad_returnredirect "one-faq?faq_id=$faq_id"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -33,3 +33,9 @@ set context [list [list "one-faq?faq_id=$faq_id" "$faq_name"] "One Q&A"]
set delete_url [export_vars -base q_and_a-delete { entry_id faq_id }]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -75,3 +75,9 @@ db_transaction {
}
ad_returnredirect [export_vars -base one-faq {faq_id}]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -9,7 +9,7 @@
<input type="hidden" name="faq_id" value="@faq_id@">
</div>
<if @insert_p@ eq "t">
<if @insert_p;literal@ true>
<input type="hidden" name="entry_id" value="@entry_id@">
</if>
......
......@@ -41,8 +41,14 @@ if { [info exists entry_id]} {
set insert_p "t"
}
set question_q [ad_quotehtml $question]
set answer_q [ad_quotehtml $answer]
set question_q [ns_quotehtml $question]
set answer_q [ns_quotehtml $answer]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -53,3 +53,9 @@ db_release_unused_handles
ad_returnredirect [export_vars -base one-faq {faq_id}]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<master>
<property name="context">@context;literal@</property>
<include src="/packages/categories/lib/categorize" object_id="@object_id;literal@" container_id="@container_id;literal@">
ad_page_contract {
} {
object_id:naturalnum,notnull
faq_id:naturalnum,notnull
}
set container_id [ad_conn [parameter::get -parameter CategoryContainer -default package_id]]
# get faq info for breadcrumbs
faq::get_instance_info -arrayname faq_info -faq_id $faq_id
set context [list [list "../one-faq?faq_id=$faq_id" $faq_info(faq_name)] Categorize]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<master>
<property name="context">@cat_name;literal@</property>
<include src="/packages/categories/lib/list-categories" cat="@cat;literal@" orderby="@orderby;literal@">
ad_page_contract {
Main category display page
@author Jeff Davis (davis@xarg.net)
@cvs-id $Id$
} {
{cat:trim,integer {}}
{orderby:token "object_title"}
}
set cat_name [category::get_names $cat]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<include src="/packages/categories/lib/map" object_id="@object_id;literal@" container_id="@container_id;literal@">
ad_page_contract {
} {
object_id:naturalnum,notnull
container_id:naturalnum,notnull
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
ad_page_contract {
} {
object_id:naturalnum,notnull
cat:integer,notnull
}
db_dml nuke {delete from category_object_map where category_id = :cat and object_id = :object_id}
ad_returnredirect -message "removed category" [get_referrer]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -4,20 +4,17 @@
<h1>#faq.FAQs#</h1>
<p>
@notification_chunk;noquote@
</p>
<if @admin_p@ eq 1>
<p>
<a href="./admin" class="button" title="#faq.administer#">#faq.administer#</a>
</p>
</if>
<p><include src="/packages/notifications/lib/notification-widget" type="all_faq_qa_notif"
object_id="@package_id;literal@"
pretty_name="FAQs">
<if @admin_p;literal@ true>
<p><a href="./admin" class="button" title="#faq.administer#">#faq.administer#</a></p>
</if>
<if @faqs:rowcount@ eq 0>
<p><i>#faq.lt_no_FAQs#</i></p>
<p><em>#faq.lt_no_FAQs#</em></p>
</if>
<else>
<ul>
<multiple name=faqs>
......
......@@ -17,24 +17,12 @@ ad_page_contract {
}
set package_id [ad_conn package_id]
set context {}
set user_id [ad_conn user_id]
permission::require_permission -object_id $package_id -privilege faq_view_faq
set admin_p 0
set notification_chunk [notification::display::request_widget \
-type all_faq_qa_notif \
-object_id [ad_conn package_id] \
-pretty_name FAQs \
-url [ad_conn url] \
]
if {[permission::permission_p -party_id $user_id -object_id $package_id -privilege faq_admin_faq]} {
set admin_p 1
}
......@@ -42,3 +30,9 @@ if {[permission::permission_p -party_id $user_id -object_id $package_id -privile
db_multirow faqs faq_select "" {}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -9,3 +9,9 @@ if {[regexp {^/+cat/+([^/]+)/*} $url \
rp_form_put category_id $sw_category_id
}
rp_internal_redirect "/packages/faq/www/one-faq"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
<master>
<property name="context">@context;literal@</property>
<property name="doc(title)">#faq.FAQs#</property>
<h1>@faq_info.faq_name;noquote@</h1>
<p>
@notification_chunk;noquote@
</p>
<property name="doc(title)">@faq_info.faq_name;literal@</property>
<property name="displayed_object_id">@faq_id;literal@</property>
<h1>@faq_info.faq_name@</h1>
<p><include src="/packages/notifications/lib/notification-widget" type="one_faq_qa_notif"
object_id="@faq_id;literal@"
pretty_name="@faq_info.faq_name@"
url="@return_url;literal@" >
<table width="70%" border="0">
<tr><td align="left" valign="top">
<if @one_question:rowcount@ eq 0>
<i>#faq.lt_no_questions#</i>
<em>#faq.lt_no_questions#</em>
</if>
<else>
<ol>
<multiple name="one_question">
<if @faq_info.separate_p@ true>
<if @faq_info.separate_p;literal@ true>
<li>
<a href="one-question?entry_id=@one_question.entry_id@" title="#faq.View_QA#">@one_question.question;noquote@</a>
</li>
</if>
<if @faq_info.separate_p@ false>
<if @faq_info.separate_p;literal@ false>
<li>
<a href="#@one_question.entry_id@" title="#faq.Jump_to_Answer#">@one_question.question;noquote@</a>
<if @use_categories_p@>
<if @use_categories_p;literal@ true>
<a href="categories/categorize?object_id=@one_question.entry_id@&amp;faq_id=@faq_id@" title="#faq.Categorize_Q#">Categorize</a>
</if>
</li>
......@@ -34,17 +34,17 @@
</multiple>
</ol>
<if @faq_info.separate_p@ false>
<if @faq_info.separate_p;literal@ false>
<hr>
<ol>
<multiple name="one_question">
<li>
<a name="@one_question.entry_id@" title="#faq.View_QA#"></a>
<p>
<b>#faq.Q#</b> <i>@one_question.question;noquote@</i>
<strong>#faq.Q#</strong> <em>@one_question.question;noquote@</em>
</p>
<p>
<b>#faq.A#</b> @one_question.answer;noquote@
<strong>#faq.A#</strong> @one_question.answer;noquote@
</p>
</li>
</multiple>
......@@ -52,7 +52,7 @@
</if>
</else>
</td><td align="right" valign="top">
<if @use_categories_p@>
<if @use_categories_p;literal@ true>
<multiple name="categories">
<h2>@categories.tree_name@</h2>
<group column="tree_id">
......
......@@ -14,7 +14,6 @@ ad_page_contract {
#/faq/www/one-faq.tcl
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
permission::require_permission -object_id $package_id -privilege faq_view_faq
......@@ -59,14 +58,7 @@ if { $use_categories_p == 1} {
}
}
set notification_chunk [notification::display::request_widget \
-type one_faq_qa_notif \
-object_id $faq_id \
-pretty_name $faq_info(faq_name) \
-url [ad_conn url]?faq_id=$faq_id \
]
set return_url "[ad_conn url]?faq_id=$faq_id"
set return_url [export_vars -base [ad_conn url] {faq_id}]
if { [apm_package_installed_p "general-comments"]
&& [parameter::get -package_id $package_id -parameter GeneralCommentsP -default 0] } {
......@@ -78,3 +70,9 @@ if { [apm_package_installed_p "general-comments"]
}
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -6,10 +6,10 @@
<h1>@faq_name;noquote@</h1>
<p>
<b>#faq.Q#</b> @question;noquote@
<strong>#faq.Q#</strong> @question;noquote@
</p>
<p>
<b>#faq.A#</b> @answer;noquote@
<strong>#faq.A#</strong> @answer;noquote@
</p>
<p>
......
......@@ -24,3 +24,9 @@ set context [list [list "one-faq?faq_id=$faq_id" $faq_name] [_ faq.One_Question]
ad_return_template
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -11,4 +11,9 @@ File Stub: $file_stub<p>
Root Dir:$root_dir<p>
Trimmed Stub: $file_name<p>
Location: $template_location
"
\ No newline at end of file
"
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment