Index: openacs-4/packages/acs-kernel/acs-kernel.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/acs-kernel.info,v
diff -u -r1.17.2.4 -r1.17.2.5
--- openacs-4/packages/acs-kernel/acs-kernel.info	11 Feb 2003 17:03:29 -0000	1.17.2.4
+++ openacs-4/packages/acs-kernel/acs-kernel.info	5 Mar 2003 14:37:32 -0000	1.17.2.5
@@ -7,7 +7,7 @@
     <initial-install-p>t</initial-install-p>
     <singleton-p>t</singleton-p>
 
-    <version name="4.6.1" url="http://openacs.org/repository/download/apm/acs-kernel-4.6.1.apm">
+    <version name="4.6.2" url="http://openacs.org/repository/download/apm/acs-kernel-4.6.2.apm">
     <database-support>
         <database>oracle</database>
         <database>postgresql</database>
@@ -17,7 +17,7 @@
         <release-date>2002-10-27</release-date>
         <vendor url="http://openacs.org/">OpenACS</vendor>
 
-        <provides url="acs-kernel" version="4.6"/>
+        <provides url="acs-kernel" version="4.6.2"/>          
 
         <files>
             <file type="package_spec" path="acs-kernel.info"/>
Index: openacs-4/packages/acs-kernel/sql/oracle/acs-install.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/acs-install.sql,v
diff -u -r1.3.2.3 -r1.3.2.4
--- openacs-4/packages/acs-kernel/sql/oracle/acs-install.sql	15 Feb 2003 20:56:27 -0000	1.3.2.3
+++ openacs-4/packages/acs-kernel/sql/oracle/acs-install.sql	5 Mar 2003 14:37:46 -0000	1.3.2.4
@@ -9,7 +9,6 @@
 --
 
 declare
-    kernel_id  apm_packages.package_id%TYPE;
     node_id    site_nodes.node_id%TYPE;
     main_site_id site_nodes.node_id%TYPE;
     admin_id	apm_packages.package_id%TYPE;
@@ -20,15 +19,6 @@
     schema_user   varchar2(100);
     jobnum        integer;
 begin 
-  kernel_id := apm_service.new(
-		    package_key => 'acs-kernel',
-		    instance_name => 'ACS Kernel',
-                    context_id => acs.magic_object_id('default_context')
-	       );
-  commit;
-
-  apm_package.enable(kernel_id);
-
   main_site_id := apm_service.new(
 		    package_key => 'acs-subsite',
 		    instance_name => 'Main Site',
@@ -64,77 +54,6 @@
     rel_type => 'membership_rel'
   );
 
-  admin_id := apm_service.new (
-      instance_name => 'ACS Administration',
-      package_key => 'acs-admin'
-  );
-  apm_package.enable(admin_id);
-
-  node_id := site_node.new (
-    parent_id => site_node.node_id('/'),
-    name => 'acs-admin',
-    directory_p => 't',
-    pattern_p => 't',
-    object_id => admin_id
-  );
-
-
-  cr_id := apm_service.new (
-      instance_name => 'ACS Content Repository',
-      package_key => 'acs-content-repository'
-  );
-
-  node_id := site_node.new (
-    parent_id => site_node.node_id('/'),
-    name => 'acs-content-repository',
-    directory_p => 't',
-    pattern_p => 't',
-    object_id => cr_id
-  );
-
-  docs_id := apm_service.new (
-      instance_name => 'ACS Core Documents',
-      package_key => 'acs-core-docs',
-      context_id => main_site_id
-  );
-
-  docs_id := site_node.new (
-    parent_id => site_node.node_id('/'),
-    name => 'doc',
-    directory_p => 't',
-    pattern_p => 't',
-    object_id => docs_id
-  );
-
-  api_doc_id := apm_service.new (
-      instance_name => 'ACS API Browser',
-      package_key => 'acs-api-browser',
-      context_id => main_site_id
-  );
-
-  apm_package.enable(api_doc_id);
-
-  -- Set default permissions for ACS API Browser so 
-  -- that only users logged in can view it
-
-  update acs_objects
-     set security_inherit_p = 'f'
-   where object_id = api_doc_id;
-
-  acs_permission.grant_permission (
-    object_id => api_doc_id, 
-    grantee_id => acs.magic_object_id ('registered_users'), 
-    privilege => 'read'
-  );
-
-  api_doc_id := site_node.new (
-    parent_id => site_node.node_id('/'),
-    name => 'api-doc',
-    directory_p => 't',
-    pattern_p => 't',
-    object_id => api_doc_id
-  );
-
   select user into schema_user from dual;
 
   dbms_job.submit (
Index: openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql,v
diff -u -r1.11 -r1.11.2.1
--- openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql	23 Sep 2002 11:05:16 -0000	1.11
+++ openacs-4/packages/acs-kernel/sql/oracle/apm-create.sql	5 Mar 2003 14:37:46 -0000	1.11.2.1
@@ -233,6 +233,7 @@
     content_length     integer,
     distribution_uri   varchar2(1500),
     distribution_date  date,
+    auto_mount         varchar(50),
     constraint apm_package_vers_id_name_un unique(package_key, version_name)
 );
 
@@ -352,6 +353,12 @@
  When was the distribution tarball downloaded.
 ';
 
+comment on column apm_package_versions.auto_mount is '
+ A dir under the main site site node where an instance of the package will be mounted
+ automatically upon installation. Useful for site-wide services that need mounting
+ such as general-comments and notifications.
+';
+
 -- Metadata for the apm_package_versions object.
 
 declare
@@ -492,6 +499,31 @@
  manages the order of the authors.
 ';
 
+create table apm_package_callbacks (
+    version_id         integer 
+                       constraint apm_package_callbacks_vid_fk 
+                       references apm_package_versions(version_id)
+                       on delete cascade,
+    type               varchar(40),
+    proc               varchar(300),
+    constraint apm_package_callbacks_vt_un
+    unique (version_id, type)
+);
+
+comment on table apm_package_callbacks is '
+  This table holds names of Tcl procedures to invoke at the time (before or after) the package is
+  installed, instantiated, or mounted.        
+';
+
+comment on column apm_package_callbacks.proc is '
+  Name of the Tcl proc.
+';
+
+comment on column apm_package_callbacks.type is '
+  Indicates when the callback proc should be invoked, for example after-install. Valid
+  values are given by the Tcl proc apm_supported_callback_types.
+';
+
 -- Ths view faciliates accessing information about package versions by joining
 -- the apm_package_types information and acs_object_types information (which is
 -- invariant across versions) with the specific version information.
@@ -501,7 +533,7 @@
     select v.package_key, t.package_uri, t.pretty_name, t.singleton_p, t.initial_install_p,
            v.version_id, v.version_name,
            v.version_uri, v.summary, v.description_format, v.description, v.release_date,
-           v.vendor, v.vendor_uri, v.enabled_p, v.installed_p, v.tagged_p, v.imported_p, v.data_model_loaded_p,
+           v.vendor, v.vendor_uri, v.auto_mount, v.enabled_p, v.installed_p, v.tagged_p, v.imported_p, v.data_model_loaded_p,
            v.activation_date, v.deactivation_date,
            nvl(v.content_length,0) as tarball_length,
            distribution_uri, distribution_date
@@ -1141,6 +1173,7 @@
     release_date		in apm_package_versions.release_date%TYPE,
     vendor			in apm_package_versions.vendor%TYPE,
     vendor_uri			in apm_package_versions.vendor_uri%TYPE,
+    auto_mount                  in apm_package_versions.auto_mount%TYPE,
     installed_p			in apm_package_versions.installed_p%TYPE
 					default 'f',
     data_model_loaded_p		in apm_package_versions.data_model_loaded_p%TYPE
@@ -1172,6 +1205,7 @@
       release_date		in apm_package_versions.release_date%TYPE,
       vendor			in apm_package_versions.vendor%TYPE,
       vendor_uri		in apm_package_versions.vendor_uri%TYPE,
+      auto_mount                in apm_package_versions.auto_mount%TYPE,
       installed_p		in apm_package_versions.installed_p%TYPE
 				default 'f',
       data_model_loaded_p	in apm_package_versions.data_model_loaded_p%TYPE
@@ -2038,6 +2072,7 @@
       release_date		in apm_package_versions.release_date%TYPE,
       vendor			in apm_package_versions.vendor%TYPE,
       vendor_uri		in apm_package_versions.vendor_uri%TYPE,
+      auto_mount                in apm_package_versions.auto_mount%TYPE,
       installed_p		in apm_package_versions.installed_p%TYPE
 				default 'f',
       data_model_loaded_p	in apm_package_versions.data_model_loaded_p%TYPE
@@ -2059,11 +2094,11 @@
         );
       insert into apm_package_versions
       (version_id, package_key, version_name, version_uri, summary, description_format, description,
-      release_date, vendor, vendor_uri, installed_p, data_model_loaded_p)
+      release_date, vendor, vendor_uri, auto_mount, installed_p, data_model_loaded_p)
       values
       (v_version_id, package_key, version_name, version_uri,
        summary, description_format, description,
-       release_date, vendor, vendor_uri,
+       release_date, vendor, vendor_uri, auto_mount,
        installed_p, data_model_loaded_p);
       return v_version_id;		
     end new;
@@ -2125,10 +2160,10 @@
 
 	insert into apm_package_versions(version_id, package_key, version_name,
 					version_uri, summary, description_format, description,
-					release_date, vendor, vendor_uri)
+					release_date, vendor, vendor_uri, auto_mount)
 	    select v_version_id, package_key, copy.new_version_name,
 		   copy.new_version_uri, summary, description_format, description,
-		   release_date, vendor, vendor_uri
+		   release_date, vendor, vendor_uri, auto_mount
 	    from apm_package_versions
 	    where version_id = copy.version_id;
     
@@ -2141,6 +2176,11 @@
 	    select acs_object_id_seq.nextval, v_version_id, path, file_type, db_type
 	    from apm_package_files
 	    where version_id = copy.version_id;
+
+        insert into apm_package_callbacks (version_id, type, proc)
+                select v_version_id, type, proc
+                from apm_package_callbacks
+                where version_id = copy.version_id;
     
 	insert into apm_package_owners(version_id, owner_uri, owner_name, sort_key)
 	    select v_version_id, owner_uri, owner_name, sort_key
@@ -2163,6 +2203,7 @@
       release_date		in apm_package_versions.release_date%TYPE,
       vendor			in apm_package_versions.vendor%TYPE,
       vendor_uri		in apm_package_versions.vendor_uri%TYPE,
+      auto_mount                in apm_package_versions.auto_mount%TYPE,
       installed_p		in apm_package_versions.installed_p%TYPE
 				default 'f',
       data_model_loaded_p	in apm_package_versions.data_model_loaded_p%TYPE
@@ -2196,6 +2237,7 @@
 		release_date = trunc(sysdate),
 		vendor = edit.vendor,
 		vendor_uri = edit.vendor_uri,
+                auto_mount = edit.auto_mount,
 		installed_p = edit.installed_p,
 		data_model_loaded_p = edit.data_model_loaded_p
 	    where version_id = v_version_id;
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-kernel/sql/oracle/upgrade/upgrade-4.6.1-4.6.2.sql'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: openacs-4/packages/acs-kernel/sql/postgresql/acs-install.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/acs-install.sql,v
diff -u -r1.9.4.2 -r1.9.4.3
--- openacs-4/packages/acs-kernel/sql/postgresql/acs-install.sql	11 Feb 2003 17:04:24 -0000	1.9.4.2
+++ openacs-4/packages/acs-kernel/sql/postgresql/acs-install.sql	5 Mar 2003 14:38:24 -0000	1.9.4.3
@@ -11,7 +11,6 @@
 create function inline_0 ()
 returns integer as '
 declare
-    kernel_id           apm_packages.package_id%TYPE;
     node_id             site_nodes.node_id%TYPE;
     main_site_id        site_nodes.node_id%TYPE;
     admin_id            apm_packages.package_id%TYPE;
@@ -23,19 +22,6 @@
     jobnum              integer;
 begin   
 
-  kernel_id := apm_service__new (
-                    null,
-                    ''ACS Kernel'',
-                    ''acs-kernel'',
-                    ''apm_service'',
-                    now(),
-                    null,
-                    null,
-                    acs__magic_object_id(''default_context'')
-                    );
-
-  PERFORM apm_package__enable (kernel_id);
-
   main_site_id := apm_service__new(
                     null,
 		    ''Main Site'',
@@ -90,135 +76,7 @@
         ''read''
         );
 
-  admin_id := apm_service__new (
-      null,
-      ''ACS Administration'',
-      ''acs-admin'',
-      ''apm_service'',
-      now(),
-      null,
-      null,
-      null
-      );
 
-  PERFORM apm_package__enable (admin_id);
-
-  node_id := site_node__new (
-    null,
-    site_node__node_id(''/'', null),
-    ''acs-admin'',
-    admin_id,
-    ''t'',
-    ''t'',
-    null,
-    null
-  );
-  
-
-  acs_sc_id := apm_service__new (
-      null,
-      ''ACS Service Contract'',
-      ''acs-service-contract'',
-      ''apm_service'',
-      now(),
-      null,
-      null,
-      null
-      );
-
-  PERFORM apm_package__enable (acs_sc_id);
-
-  node_id := site_node__new (
-    null,
-    site_node__node_id(''/'', null),
-    ''acs-service-contract'',
-    acs_sc_id,
-    ''t'',
-    ''t'',
-    null,
-    null
-  );
-
-  cr_id := apm_service__new (
-      null,
-      ''ACS Content Repository'',
-      ''acs-content-repository'',
-      ''apm_service'',
-      now(),
-      null,
-      null,
-      null
-      );
-
-  PERFORM apm_package__enable (cr_id);
-
-  node_id := site_node__new (
-    null,
-    site_node__node_id(''/'', null),
-    ''acs-content-repository'',
-    cr_id,
-    ''t'',
-    ''t'',
-    null,
-    null
-  );
-
-  docs_id := apm_service__new (
-      null,
-      ''ACS Core Documents'',
-      ''acs-core-docs'',
-      ''apm_service'',
-      now(),
-      null,
-      null,
-      main_site_id
-      );
-
-  node_id := site_node__new (
-    null,
-    site_node__node_id(''/'',null),
-    ''doc'',
-    docs_id,
-    ''t'',
-    ''t'',
-    null,
-    null
-    );
-
-  api_doc_id := apm_service__new (
-      null,
-      ''ACS API Browser'',
-      ''acs-api-browser'',
-      ''apm_service'',
-      now(),
-      null,
-      null,
-      main_site_id
-      );
-
-  PERFORM apm_package__enable (api_doc_id);
-
-  PERFORM acs_permission__grant_permission (
-    api_doc_id, 
-    acs__magic_object_id (''registered_users''), 
-    ''read''
-  );
-
-  api_doc_id := site_node__new (
-    null,
-    site_node__node_id(''/'',null),
-    ''api-doc'',
-    api_doc_id,
-    ''t'',
-    ''t'',
-    null,
-    null
-    );
-
-  update acs_objects
-  set security_inherit_p = ''f''
-  where object_id = api_doc_id;
-
   return null;
 
 end;' language 'plpgsql';
Index: openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql,v
diff -u -r1.29.2.3 -r1.29.2.4
--- openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql	2 Mar 2003 22:33:33 -0000	1.29.2.3
+++ openacs-4/packages/acs-kernel/sql/postgresql/apm-create.sql	5 Mar 2003 14:38:24 -0000	1.29.2.4
@@ -79,16 +79,16 @@
 begin
 -- Create a new object type for packages.
  PERFORM acs_object_type__create_type (
-   ''apm_package'',
-   ''Package'',
-   ''Packages'',
-   ''acs_object'',
-   ''APM_PACKAGES'',
-   ''package_id'',
-   ''apm_package'',
-   ''f'',
-   ''apm_package_types'',
-   ''apm_package.name''
+   ''apm_package'',         -- object_type
+   ''Package'',             -- pretty_name
+   ''Packages'',            -- pretty_plural
+   ''acs_object'',          -- supertype
+   ''APM_PACKAGES'',        -- table_name
+   ''package_id'',          -- id_column
+   ''apm_package'',         -- package_name
+   ''f'',                   -- abstract_p
+   ''apm_package_types'',   -- type_extension_table
+   ''apm_package.name''     -- name_method
    );
 
   return 0;
@@ -293,6 +293,7 @@
     content_length     integer,
     distribution_uri   varchar(1500),
     distribution_date  timestamptz,
+    auto_mount         varchar(50),
     constraint apm_package_vers_id_name_un unique(package_key, version_name)
 );
 
@@ -410,6 +411,12 @@
  When was the distribution tarball downloaded.
 ';
 
+comment on column apm_package_versions.auto_mount is '
+ A dir under the main site site node where an instance of the package will be mounted
+ automatically upon installation. Useful for site-wide services that need mounting
+ such as general-comments and notifications.
+';
+
 -- Metadata for the apm_package_versions object.
 
 create function inline_2 ()
@@ -665,6 +672,31 @@
  manages the order of the authors.
 ';
 
+create table apm_package_callbacks (
+    version_id         integer 
+                       constraint apm_package_callbacks_vid_fk 
+                       references apm_package_versions(version_id)
+                       on delete cascade,
+    type               varchar(40),
+    proc               varchar(300),
+    constraint apm_package_callbacks_vt_un
+    unique (version_id, type)
+);
+
+comment on table apm_package_callbacks is '
+  This table holds names of Tcl procedures to invoke at the time (before or after) the package is
+  installed, instantiated, or mounted.        
+';
+
+comment on column apm_package_callbacks.proc is '
+  Name of the Tcl proc.
+';
+
+comment on column apm_package_callbacks.type is '
+  Indicates when the callback proc should be invoked, for example after-install. Valid
+  values are given by the Tcl proc apm_supported_callback_types.
+';
+
 -- Ths view faciliates accessing information about package versions by joining
 -- the apm_package_types information and acs_object_types information (which is
 -- invariant across versions) with the specific version information.
@@ -674,7 +706,7 @@
     select v.package_key, t.package_uri, t.pretty_name, t.singleton_p, t.initial_install_p,
            v.version_id, v.version_name,
            v.version_uri, v.summary, v.description_format, v.description, v.release_date,
-           v.vendor, v.vendor_uri, v.enabled_p, v.installed_p, v.tagged_p, v.imported_p, v.data_model_loaded_p,
+           v.vendor, v.vendor_uri, v.auto_mount, v.enabled_p, v.installed_p, v.tagged_p, v.imported_p, v.data_model_loaded_p,
            v.activation_date, v.deactivation_date,
            coalesce(v.content_length,0) as tarball_length,
            distribution_uri, distribution_date
@@ -1864,7 +1896,7 @@
 end;' language 'plpgsql';
 
 -- create or replace package body apm_package_version 
-create function apm_package_version__new (integer,varchar,varchar,varchar,varchar,varchar,varchar,timestamptz,varchar,varchar,boolean,boolean) returns integer as '
+create function apm_package_version__new (integer,varchar,varchar,varchar,varchar,varchar,varchar,timestamptz,varchar,varchar,varchar,boolean,boolean) returns integer as '
 declare
       apm_pkg_ver__version_id           alias for $1;  -- default null
       apm_pkg_ver__package_key		alias for $2;
@@ -1876,8 +1908,9 @@
       apm_pkg_ver__release_date		alias for $8;
       apm_pkg_ver__vendor               alias for $9;
       apm_pkg_ver__vendor_uri		alias for $10;
-      apm_pkg_ver__installed_p		alias for $11; -- default ''f''		
-      apm_pkg_ver__data_model_loaded_p	alias for $12; -- default ''f''
+      apm_pkg_ver__auto_mount           alias for $11;
+      apm_pkg_ver__installed_p		alias for $12; -- default ''f''		
+      apm_pkg_ver__data_model_loaded_p	alias for $13; -- default ''f''
       v_version_id                      apm_package_versions.version_id%TYPE;
 begin
       if apm_pkg_ver__version_id is null then
@@ -1899,12 +1932,12 @@
 
       insert into apm_package_versions
       (version_id, package_key, version_name, version_uri, summary, description_format, description,
-      release_date, vendor, vendor_uri, installed_p, data_model_loaded_p)
+      release_date, vendor, vendor_uri, auto_mount, installed_p, data_model_loaded_p)
       values
       (v_version_id, apm_pkg_ver__package_key, apm_pkg_ver__version_name, 
        apm_pkg_ver__version_uri, apm_pkg_ver__summary, 
        apm_pkg_ver__description_format, apm_pkg_ver__description,
-       apm_pkg_ver__release_date, apm_pkg_ver__vendor, apm_pkg_ver__vendor_uri,
+       apm_pkg_ver__release_date, apm_pkg_ver__vendor, apm_pkg_ver__vendor_uri, apm_pkg_ver__auto_mount,
        apm_pkg_ver__installed_p, apm_pkg_ver__data_model_loaded_p);
 
       return v_version_id;		
@@ -1985,10 +2018,10 @@
 
 	insert into apm_package_versions(version_id, package_key, version_name,
 					version_uri, summary, description_format, description,
-					release_date, vendor, vendor_uri)
+					release_date, vendor, vendor_uri, auto_mount)
 	    select v_version_id, package_key, copy__new_version_name,
 		   copy__new_version_uri, summary, description_format, description,
-		   release_date, vendor, vendor_uri
+		   release_date, vendor, vendor_uri, auto_mount
 	    from apm_package_versions
 	    where version_id = copy__version_id;
     
@@ -2001,6 +2034,11 @@
 	    select nextval(''t_acs_object_id_seq''), v_version_id, path, file_type, db_type
 	    from apm_package_files
 	    where version_id = copy__version_id;
+
+        insert into apm_package_callbacks (version_id, type, proc)
+                select v_version_id, type, proc
+                from apm_package_callbacks
+                where version_id = copy__version_id;
     
         if copy__copy_owners_p then
             insert into apm_package_owners(version_id, owner_uri, owner_name, sort_key)
@@ -2015,7 +2053,7 @@
 
 
 -- function edit
-create function apm_package_version__edit (integer,integer,varchar,varchar,varchar,varchar,varchar,timestamptz,varchar,varchar,boolean,boolean)
+create function apm_package_version__edit (integer,integer,varchar,varchar,varchar,varchar,varchar,timestamptz,varchar,varchar,varchar,boolean,boolean)
 returns integer as '
 declare
   edit__new_version_id         alias for $1;  -- default null  
@@ -2028,8 +2066,9 @@
   edit__release_date           alias for $8;  
   edit__vendor                 alias for $9;  
   edit__vendor_uri             alias for $10; 
-  edit__installed_p            alias for $11; -- default ''f''
-  edit__data_model_loaded_p    alias for $12; -- default ''f''
+  edit__auto_mount             alias for $11;
+  edit__installed_p            alias for $12; -- default ''f''
+  edit__data_model_loaded_p    alias for $13; -- default ''f''
   v_version_id                 apm_package_versions.version_id%TYPE;
   version_unchanged_p          integer;       
 begin
@@ -2058,6 +2097,7 @@
 		release_date = date_trunc(''days'',now()),
 		vendor = edit__vendor,
 		vendor_uri = edit__vendor_uri,
+                auto_mount = edit__auto_mount,
 		installed_p = edit__installed_p,
 		data_model_loaded_p = edit__data_model_loaded_p
 	    where version_id = v_version_id;
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-kernel/sql/postgresql/upgrade/upgrade-4.6.1-4.6.2.sql'.
Fisheye: No comparison available.  Pass `N' to diff?