Index: openacs-4/packages/faq/lib/faq-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/lib/faq-add-edit.tcl,v
diff -u -r1.7.2.1 -r1.7.2.2
--- openacs-4/packages/faq/lib/faq-add-edit.tcl	2 Jul 2019 12:40:40 -0000	1.7.2.1
+++ openacs-4/packages/faq/lib/faq-add-edit.tcl	8 Aug 2022 12:56:06 -0000	1.7.2.2
@@ -1,14 +1,10 @@
 ad_include_contract {
     FAQ add/edit UI
 } {
-    {mode ""}
-    {return_url ""}
+    {mode:oneof(display|edit) "edit"}
+    {return_url:localurl ""}
 }
 
-if { $mode eq "" } {
-    set mode "edit"
-}
-
 ad_form -name faq_add_edit -mode $mode -action "faq-add-edit" -form {
     faq_id:key
     {faq_name:text(text) {label "#faq.Name#"} {html { size 50 }}}
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.13.2.2 -r1.13.2.3
--- openacs-4/packages/faq/www/one-faq.tcl	14 Jul 2022 09:52:50 -0000	1.13.2.2
+++ openacs-4/packages/faq/www/one-faq.tcl	8 Aug 2022 12:56:06 -0000	1.13.2.3
@@ -7,8 +7,8 @@
     @creation-date 2000-10-24
 
 } {
-    {category_id:naturalnum,optional {}}
-    faq_id:naturalnum,notnull
+    {category_id:object_type(category) {}}
+    faq_id:object_type(faq)
 }
 
 #/faq/www/one-faq.tcl
Index: openacs-4/packages/faq/www/one-question.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/one-question.tcl,v
diff -u -r1.8 -r1.8.2.1
--- openacs-4/packages/faq/www/one-question.tcl	4 Oct 2017 13:11:08 -0000	1.8
+++ openacs-4/packages/faq/www/one-question.tcl	8 Aug 2022 12:56:06 -0000	1.8.2.1
@@ -8,17 +8,14 @@
     @creation-date 2000-10-24
  
 } {
-    entry_id:naturalnum,notnull
+    entry_id:object_type(faq_q_and_a)
 }
 
 set package_id [ad_conn package_id]
 
 permission::require_permission -object_id $package_id -privilege faq_view_faq
 
-if {![db_0or1row question_info {}]} {
-    ad_return_complaint 1 [_ faq.lt_no_questions]
-    ad_script_abort
-}
+db_1row question_info {}
 
 set context [list [list "one-faq?faq_id=$faq_id" $faq_name] [_ faq.One_Question]]
 
Index: openacs-4/packages/faq/www/admin/faq-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-add-edit.tcl,v
diff -u -r1.7 -r1.7.2.1
--- openacs-4/packages/faq/www/admin/faq-add-edit.tcl	7 Aug 2017 23:48:10 -0000	1.7
+++ openacs-4/packages/faq/www/admin/faq-add-edit.tcl	8 Aug 2022 12:56:06 -0000	1.7.2.1
@@ -5,7 +5,7 @@
     @author Gerardo Morales Cadoret (gmorales@galileo.edu) 
     @creation-date 2003-11-26 
 } {  
-    faq_id:naturalnum,optional 
+    faq_id:object_id,optional
     return_url:localurl,optional
 } -properties { 
     context:onevalue 
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.5.2.2 -r1.5.2.3
--- openacs-4/packages/faq/www/admin/faq-delete.tcl	10 Mar 2021 13:45:20 -0000	1.5.2.2
+++ openacs-4/packages/faq/www/admin/faq-delete.tcl	8 Aug 2022 12:56:06 -0000	1.5.2.3
@@ -6,10 +6,9 @@
     @creation-date 2000-10-24
 
 } {
-
-    faq_id:naturalnum,notnull
-
+    faq_id:object_type(faq)
 }
+
 set package_id [ad_conn package_id]
 
 permission::require_permission -object_id  $package_id -privilege faq_delete_faq
Index: openacs-4/packages/faq/www/admin/faq-disable.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-disable.tcl,v
diff -u -r1.7 -r1.7.2.1
--- openacs-4/packages/faq/www/admin/faq-disable.tcl	19 Jan 2018 14:44:17 -0000	1.7
+++ openacs-4/packages/faq/www/admin/faq-disable.tcl	8 Aug 2022 12:56:06 -0000	1.7.2.1
@@ -1,23 +1,19 @@
 ad_page_contract {
-    
+
     disable an FAQ
     @author Lars Pind (lars@collaboraid.biz)
     @creation-date 2003-03-06
 
 } {
-    faq_id:naturalnum,notnull
-    referer:optional
+    faq_id:object_type(faq)
+    {referer:localurl "index"}
 }
 set package_id [ad_conn package_id]
 
 permission::require_permission -object_id  $package_id -privilege faq_delete_faq
 
 db_dml disable_faq {}
 
-if { ![info exists referer] } {
-    set referer "index"
-}
-
 ad_returnredirect $referer
 ad_script_abort
 
Index: openacs-4/packages/faq/www/admin/faq-edit-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-edit-2.tcl,v
diff -u -r1.4.2.1 -r1.4.2.2
--- openacs-4/packages/faq/www/admin/faq-edit-2.tcl	2 Aug 2022 09:05:44 -0000	1.4.2.1
+++ openacs-4/packages/faq/www/admin/faq-edit-2.tcl	8 Aug 2022 12:56:06 -0000	1.4.2.2
@@ -7,7 +7,7 @@
     @author Peter Vessenes peterv@ybos.net
     @creation-date 2000-10-25
 } {
-    faq_id:naturalnum
+    faq_id:object_type(faq)
     faq_name:notnull
     separate_p:oneof(t|f)
 } 
Index: openacs-4/packages/faq/www/admin/faq-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-edit.tcl,v
diff -u -r1.6 -r1.6.2.1
--- openacs-4/packages/faq/www/admin/faq-edit.tcl	7 Aug 2017 23:48:10 -0000	1.6
+++ openacs-4/packages/faq/www/admin/faq-edit.tcl	8 Aug 2022 12:56:06 -0000	1.6.2.1
@@ -7,7 +7,7 @@
     @author Peter Vessenes peterv@ybos.net
     @creation-date 2000-10-25
 } {
-    faq_id:naturalnum
+    faq_id:object_type(faq)
 } -properties {
     context:onevalue
     faq_id:onevalue
Index: openacs-4/packages/faq/www/admin/faq-enable.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-enable.tcl,v
diff -u -r1.6 -r1.6.2.1
--- openacs-4/packages/faq/www/admin/faq-enable.tcl	19 Jan 2018 14:44:17 -0000	1.6
+++ openacs-4/packages/faq/www/admin/faq-enable.tcl	8 Aug 2022 12:56:06 -0000	1.6.2.1
@@ -5,8 +5,8 @@
     @creation-date 2003-03-06
 
 } {
-    faq_id:naturalnum,notnull
-    referer:optional
+    faq_id:object_type(faq)
+    {referer:localurl "index"}
 }
 set package_id [ad_conn package_id]
 
@@ -16,10 +16,6 @@
     update faqs set disabled_p = 'f' where faq_id = :faq_id
 }
 
-if { ![info exists referer] } {
-    set referer "index"
-}
-
 ad_returnredirect $referer
 ad_script_abort
 
Index: openacs-4/packages/faq/www/admin/faq-new-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/faq-new-2.tcl,v
diff -u -r1.7 -r1.7.2.1
--- openacs-4/packages/faq/www/admin/faq-new-2.tcl	19 Jan 2018 14:44:17 -0000	1.7
+++ openacs-4/packages/faq/www/admin/faq-new-2.tcl	8 Aug 2022 12:56:06 -0000	1.7.2.1
@@ -11,7 +11,7 @@
     @param faq_name  The short name of the faq
 
 } {
-    faq_id:naturalnum,notnull
+    faq_id:object_id,notnull
     faq_name:notnull,trim
     separate_p:boolean,notnull
 }
Index: openacs-4/packages/faq/www/admin/one-faq.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/one-faq.tcl,v
diff -u -r1.8 -r1.8.2.1
--- openacs-4/packages/faq/www/admin/one-faq.tcl	7 Aug 2017 23:48:10 -0000	1.8
+++ openacs-4/packages/faq/www/admin/one-faq.tcl	8 Aug 2022 12:56:06 -0000	1.8.2.1
@@ -8,8 +8,7 @@
     @creation-date 2000-10-24
  
 } {
-
-    faq_id:naturalnum,notnull
+    faq_id:object_type(faq)
 } -properties {
     faq_name:onevalue
 }
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.9.2.1 -r1.9.2.2
--- openacs-4/packages/faq/www/admin/one-question.tcl	27 Jul 2021 09:32:54 -0000	1.9.2.1
+++ openacs-4/packages/faq/www/admin/one-question.tcl	8 Aug 2022 12:56:06 -0000	1.9.2.2
@@ -9,7 +9,7 @@
     @creation-date 2000-10-24
  
 } {
-    entry_id:naturalnum,notnull
+    entry_id:object_type(faq_q_and_a)
 } -properties {
     entry_id:onevalue
 }
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.12.2.4 -r1.12.2.5
--- openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl	11 Mar 2021 10:28:51 -0000	1.12.2.4
+++ openacs-4/packages/faq/www/admin/q-and-a-add-edit.tcl	8 Aug 2022 12:56:06 -0000	1.12.2.5
@@ -9,9 +9,9 @@
     @creation-date 2003-11-26
 
 } {
-    faq_id:naturalnum,notnull
-    entry_id:naturalnum,optional
-    {prev_entry_id:naturalnum,notnull 0}
+    faq_id:object_type(faq)
+    entry_id:object_id,optional
+    {prev_entry_id:object_id,notnull 0}
 }  -properties {
     context:onevalue
     title:onevalue
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.1.2.1 -r1.1.2.2
--- openacs-4/packages/faq/www/admin/q-and-a-delete.tcl	27 Jul 2021 09:32:55 -0000	1.1.2.1
+++ openacs-4/packages/faq/www/admin/q-and-a-delete.tcl	8 Aug 2022 12:56:06 -0000	1.1.2.2
@@ -7,7 +7,7 @@
     @creation-date 2000-10-25
 
 } {
-    entry_id:naturalnum,notnull
+    entry_id:object_type(faq_q_and_a)
 }
 
 # We need to rethink the q-and-a permissioning.
Index: openacs-4/packages/faq/www/admin/q-and-a-edit-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-edit-2.tcl,v
diff -u -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/faq/www/admin/q-and-a-edit-2.tcl	27 Jul 2021 09:32:55 -0000	1.1.2.1
+++ openacs-4/packages/faq/www/admin/q-and-a-edit-2.tcl	8 Aug 2022 12:56:06 -0000	1.1.2.2
@@ -7,7 +7,7 @@
     @author Peter Vessenes peterv@ybos.net
     @creation-date 2000-10-25
 } {
-    entry_id:naturalnum,notnull
+    entry_id:object_type(faq_q_and_a)
     question:html
     answer:html
     
Index: openacs-4/packages/faq/www/admin/q-and-a-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-edit.tcl,v
diff -u -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/faq/www/admin/q-and-a-edit.tcl	27 Jul 2021 09:32:55 -0000	1.1.2.1
+++ openacs-4/packages/faq/www/admin/q-and-a-edit.tcl	8 Aug 2022 12:56:06 -0000	1.1.2.2
@@ -8,8 +8,7 @@
     @creation-date 2000-10-24
  
 } {
-
-    entry_id:naturalnum,notnull
+    entry_id:object_type(faq_q_and_a)
 } -properties {
     entry_id:onevalue
 }
Index: openacs-4/packages/faq/www/admin/q-and-a-new-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-new-2.tcl,v
diff -u -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/faq/www/admin/q-and-a-new-2.tcl	27 Jul 2021 09:32:56 -0000	1.1.2.1
+++ openacs-4/packages/faq/www/admin/q-and-a-new-2.tcl	8 Aug 2022 12:56:06 -0000	1.1.2.2
@@ -8,10 +8,10 @@
     @creation-date 2000-10-25
 
 } {
-    faq_id:naturalnum,notnull,trim
+    faq_id:object_type(faq)
     question:html,notnull,trim
     answer:html,notnull,trim
-    entry_id:naturalnum,optional
+    entry_id:object_id,optional
     insert_p:boolean,optional
  
 }
Index: openacs-4/packages/faq/www/admin/q-and-a-new.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/q-and-a-new.tcl,v
diff -u -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/faq/www/admin/q-and-a-new.tcl	27 Jul 2021 09:32:56 -0000	1.1.2.1
+++ openacs-4/packages/faq/www/admin/q-and-a-new.tcl	8 Aug 2022 12:56:06 -0000	1.1.2.2
@@ -9,8 +9,8 @@
     @creation-date 2000-10-24
 } {
 
-    entry_id:naturalnum,optional
-    faq_id:naturalnum,notnull
+    entry_id:object_id,optional
+    faq_id:object_type(faq)
 
 }  -properties {
     context:onevalue
Index: openacs-4/packages/faq/www/admin/swap.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/admin/swap.tcl,v
diff -u -r1.7 -r1.7.2.1
--- openacs-4/packages/faq/www/admin/swap.tcl	19 Jan 2018 14:44:17 -0000	1.7
+++ openacs-4/packages/faq/www/admin/swap.tcl	8 Aug 2022 12:56:06 -0000	1.7.2.1
@@ -10,8 +10,8 @@
     taken largely from acs 3.4 faq/swap.tcl
    
 } {
-    entry_id:naturalnum,notnull
-    faq_id:naturalnum,notnull
+    faq_id:object_type(faq)
+    entry_id:object_type(faq_q_and_a)
 }
 
 set package_id [ad_conn package_id]
Index: openacs-4/packages/faq/www/categories/categorize.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/categories/categorize.tcl,v
diff -u -r1.4 -r1.4.2.1
--- openacs-4/packages/faq/www/categories/categorize.tcl	7 Aug 2017 23:48:11 -0000	1.4
+++ openacs-4/packages/faq/www/categories/categorize.tcl	8 Aug 2022 12:56:06 -0000	1.4.2.1
@@ -1,8 +1,8 @@
 ad_page_contract {
 
 } {
-    object_id:naturalnum,notnull
-    faq_id:naturalnum,notnull
+    object_id:object_type(acs_object)
+    faq_id:object_type(faq)
 }
 
 set container_id [ad_conn [parameter::get -parameter CategoryContainer -default package_id]]
Index: openacs-4/packages/faq/www/categories/map.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/categories/map.tcl,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/faq/www/categories/map.tcl	7 Aug 2017 23:48:11 -0000	1.3
+++ openacs-4/packages/faq/www/categories/map.tcl	8 Aug 2022 12:56:06 -0000	1.3.2.1
@@ -1,7 +1,7 @@
 ad_page_contract {
 } {
-    object_id:naturalnum,notnull
-    container_id:naturalnum,notnull
+    object_id:object_type(acs_object)
+    container_id:object_type(acs_object)
 }
 
 ad_return_template
Index: openacs-4/packages/faq/www/categories/remove.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/faq/www/categories/remove.tcl,v
diff -u -r1.4.2.1 -r1.4.2.2
--- openacs-4/packages/faq/www/categories/remove.tcl	11 Dec 2019 18:13:57 -0000	1.4.2.1
+++ openacs-4/packages/faq/www/categories/remove.tcl	8 Aug 2022 12:56:06 -0000	1.4.2.2
@@ -1,7 +1,7 @@
 ad_page_contract {
 } {
-    object_id:naturalnum,notnull
-    cat:integer,notnull
+    object_id:object_type(acs_object)
+    cat:object_type(category)
 }
 
 db_dml nuke {delete from category_object_map where category_id = :cat and object_id = :object_id}