Index: openacs-4/packages/new-portal/new-portal.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/new-portal.info,v diff -u -N -r1.29.2.3 -r1.29.2.4 --- openacs-4/packages/new-portal/new-portal.info 12 Mar 2007 03:00:13 -0000 1.29.2.3 +++ openacs-4/packages/new-portal/new-portal.info 29 Mar 2007 00:43:37 -0000 1.29.2.4 @@ -8,14 +8,14 @@ t portal - + OpenACS Portals. 2006-12-31 OpenACS New Portal Package aka NPP. Portals are used to aggregate content from different sources within a single page. Props to Ian Baker for "Portal". - + Index: openacs-4/packages/new-portal/sql/oracle/api-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/oracle/api-create.sql,v diff -u -N -r1.42.2.1 -r1.42.2.2 --- openacs-4/packages/new-portal/sql/oracle/api-create.sql 12 Mar 2007 03:00:13 -0000 1.42.2.1 +++ openacs-4/packages/new-portal/sql/oracle/api-create.sql 29 Mar 2007 00:43:38 -0000 1.42.2.2 @@ -29,6 +29,7 @@ function new ( page_id in portal_pages.page_id%TYPE default null, pretty_name in portal_pages.pretty_name%TYPE default 'Untitled Page', + accesskey in portal_pages.accesskey%TYPE default null, portal_id in portal_pages.portal_id%TYPE, layout_id in portal_pages.layout_id%TYPE default null, hidden_p in portal_pages.hidden_p%TYPE default 'f', @@ -53,6 +54,7 @@ function new ( page_id in portal_pages.page_id%TYPE default null, pretty_name in portal_pages.pretty_name%TYPE default 'Untitled Page', + accesskey in portal_pages.accesskey%TYPE default null, portal_id in portal_pages.portal_id%TYPE, layout_id in portal_pages.layout_id%TYPE default null, hidden_p in portal_pages.hidden_p%TYPE default 'f', @@ -90,9 +92,9 @@ where portal_id = portal_page.new.portal_id; insert into portal_pages - (page_id, pretty_name, portal_id, layout_id, sort_key, hidden_p) + (page_id, pretty_name, accesskey, portal_id, layout_id, sort_key, hidden_p) values - (v_page_id, pretty_name, portal_id, v_layout_id, v_sort_key, hidden_p); + (v_page_id, pretty_name, accesskey, portal_id, v_layout_id, v_sort_key, hidden_p); return v_page_id; Index: openacs-4/packages/new-portal/sql/oracle/portal-core-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/oracle/portal-core-create.sql,v diff -u -N -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/new-portal/sql/oracle/portal-core-create.sql 12 Mar 2007 03:00:13 -0000 1.46.2.1 +++ openacs-4/packages/new-portal/sql/oracle/portal-core-create.sql 29 Mar 2007 00:43:38 -0000 1.46.2.2 @@ -169,6 +169,8 @@ default 'Untitled Page' constraint portal_pages_pretty_name_nn not null, + accesskey char(1) + default null, portal_id constraint portal_pages_portal_id_fk references portals (portal_id) constraint portal_pages_portal_id_nn Index: openacs-4/packages/new-portal/sql/oracle/upgrade/upgrade-2.3.0d3-2.3.0d4.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/oracle/upgrade/upgrade-2.3.0d3-2.3.0d4.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/new-portal/sql/oracle/upgrade/upgrade-2.3.0d3-2.3.0d4.sql 29 Mar 2007 00:43:38 -0000 1.1.2.1 @@ -0,0 +1,132 @@ +alter table add accesskey char(1) default null; + +create or replace package portal_page +as + + function new ( + page_id in portal_pages.page_id%TYPE default null, + pretty_name in portal_pages.pretty_name%TYPE default 'Untitled Page', + accesskey in portal_pages.accesskey%TYPE default null, + portal_id in portal_pages.portal_id%TYPE, + layout_id in portal_pages.layout_id%TYPE default null, + hidden_p in portal_pages.hidden_p%TYPE default 'f', + object_type in acs_object_types.object_type%TYPE default 'portal_page', + creation_date in acs_objects.creation_date%TYPE default sysdate, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null, + context_id in acs_objects.context_id%TYPE default null + ) return portal_pages.page_id%TYPE; + + procedure del ( + page_id in portal_pages.page_id%TYPE + ); + +end portal_page; +/ +show errors + +create or replace package body portal_page +as + + function new ( + page_id in portal_pages.page_id%TYPE default null, + pretty_name in portal_pages.pretty_name%TYPE default 'Untitled Page', + accesskey in portal_pages.accesskey%TYPE default null, + portal_id in portal_pages.portal_id%TYPE, + layout_id in portal_pages.layout_id%TYPE default null, + hidden_p in portal_pages.hidden_p%TYPE default 'f', + object_type in acs_object_types.object_type%TYPE default 'portal_page', + creation_date in acs_objects.creation_date%TYPE default sysdate, + creation_user in acs_objects.creation_user%TYPE default null, + creation_ip in acs_objects.creation_ip%TYPE default null, + context_id in acs_objects.context_id%TYPE default null + ) return portal_pages.page_id%TYPE + is + v_page_id portal_pages.page_id%TYPE; + v_layout_id portal_pages.layout_id%TYPE; + v_sort_key portal_pages.sort_key%TYPE; + begin + + v_page_id := acs_object.new( + object_type => object_type, + creation_date => creation_date, + creation_user => creation_user, + creation_ip => creation_ip, + context_id => context_id + ); + + if layout_id is null then + select min(layout_id) + into v_layout_id + from portal_layouts; + else + v_layout_id := layout_id; + end if; + + select nvl(max(sort_key) + 1, 0) + into v_sort_key + from portal_pages + where portal_id = portal_page.new.portal_id; + + insert into portal_pages + (page_id, pretty_name, accesskey, portal_id, layout_id, sort_key, hidden_p) + values + (v_page_id, pretty_name, accesskey, portal_id, v_layout_id, v_sort_key, hidden_p); + + return v_page_id; + + end new; + + procedure del ( + page_id in portal_pages.page_id%TYPE + ) + is + v_portal_id portal_pages.portal_id%TYPE; + v_sort_key portal_pages.sort_key%TYPE; + v_curr_sort_key portal_pages.sort_key%TYPE; + v_page_count_from_0 integer; + begin + + -- IMPORTANT: sort keys MUST be an unbroken sequence from 0 to max(sort_key) + + select portal_id, sort_key + into v_portal_id, v_sort_key + from portal_pages + where page_id = portal_page.del.page_id; + + select (count(*) - 1) + into v_page_count_from_0 + from portal_pages + where portal_id = v_portal_id; + + for i in 0 .. v_page_count_from_0 loop + + if i = v_sort_key then + + delete + from portal_pages + where page_id = portal_page.del.page_id; + + elsif i > v_sort_key then + + update portal_pages + set sort_key = -1 + where sort_key = i + and page_id = portal_page.del.page_id; + + update portal_pages + set sort_key = i - 1 + where sort_key = -1 + and page_id = portal_page.del.page_id; + + end if; + + end loop; + + acs_object.del(page_id); + + end del; + +end portal_page; +/ +show errors Index: openacs-4/packages/new-portal/sql/postgresql/api-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/postgresql/api-create.sql,v diff -u -N -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/new-portal/sql/postgresql/api-create.sql 12 Mar 2007 03:00:13 -0000 1.14.2.1 +++ openacs-4/packages/new-portal/sql/postgresql/api-create.sql 29 Mar 2007 00:43:38 -0000 1.14.2.2 @@ -23,21 +23,22 @@ -- @version $Id$ -- -select define_function_args('portal_page__new','page_id,pretty_name,portal_id,layout_id,hidden_p,object_type;portal_page,creation_date,creation_user,creation_ip,context_id'); +select define_function_args('portal_page__new','page_id,pretty_name,accesskey,portal_id,layout_id,hidden_p,object_type;portal_page,creation_date,creation_user,creation_ip,context_id'); -create function portal_page__new (integer,varchar,integer,integer,char,varchar,timestamptz,integer,varchar,integer) +create function portal_page__new (integer,char,varchar,integer,integer,char,varchar,timestamptz,integer,varchar,integer) returns integer as ' declare p_page_id alias for $1; p_pretty_name alias for $2; - p_portal_id alias for $3; - p_layout_id alias for $4; - p_hidden_p alias for $5; - p_object_type alias for $6; - p_creation_date alias for $7; - p_creation_user alias for $8; - p_creation_ip alias for $9; - p_context_id alias for $10; + p_accesskey alias for $3; + p_portal_id alias for $4; + p_layout_id alias for $5; + p_hidden_p alias for $6; + p_object_type alias for $7; + p_creation_date alias for $8; + p_creation_user alias for $9; + p_creation_ip alias for $10; + p_context_id alias for $11; v_page_id portal_pages.page_id%TYPE; v_layout_id portal_pages.layout_id%TYPE; v_sort_key portal_pages.sort_key%TYPE; @@ -67,9 +68,9 @@ where portal_id = p_portal_id; insert into portal_pages - (page_id, pretty_name, portal_id, layout_id, sort_key, hidden_p) + (page_id, pretty_name, accesskey, portal_id, layout_id, sort_key, hidden_p) values - (v_page_id, p_pretty_name, p_portal_id, v_layout_id, v_sort_key, p_hidden_p); + (v_page_id, p_pretty_name, p_accesskey, p_portal_id, v_layout_id, v_sort_key, p_hidden_p); return v_page_id; Index: openacs-4/packages/new-portal/sql/postgresql/portal-core-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/postgresql/portal-core-create.sql,v diff -u -N -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/new-portal/sql/postgresql/portal-core-create.sql 12 Mar 2007 03:00:14 -0000 1.5.2.1 +++ openacs-4/packages/new-portal/sql/postgresql/portal-core-create.sql 29 Mar 2007 00:43:38 -0000 1.5.2.2 @@ -173,6 +173,8 @@ default 'Untitled Page' constraint portal_pages_pretty_name_nn not null, + accesskey char(1) + default null, portal_id integer constraint portal_pages_portal_id_fk references portals (portal_id) Index: openacs-4/packages/new-portal/sql/postgresql/upgrade/upgrade-2.3.0d3-2.3.0d4.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/sql/postgresql/upgrade/upgrade-2.3.0d3-2.3.0d4.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/new-portal/sql/postgresql/upgrade/upgrade-2.3.0d3-2.3.0d4.sql 29 Mar 2007 00:43:38 -0000 1.1.2.1 @@ -0,0 +1,56 @@ +alter table portal_pages add accesskey char(1) default null; + +select define_function_args('portal_page__new','page_id,pretty_name,accesskey,portal_id,layout_id,hidden_p,object_type;portal_page,creation_date,creation_user,creation_ip,context_id'); + +drop function portal_page__new (integer,varchar,integer,integer,char,varchar,timestamptz,integer,varchar,integer); + +create or replace function portal_page__new (integer,char,varchar,integer,integer,char,varchar,timestamptz,integer,varchar,integer) +returns integer as ' +declare + p_page_id alias for $1; + p_pretty_name alias for $2; + p_accesskey alias for $3; + p_portal_id alias for $4; + p_layout_id alias for $5; + p_hidden_p alias for $6; + p_object_type alias for $7; + p_creation_date alias for $8; + p_creation_user alias for $9; + p_creation_ip alias for $10; + p_context_id alias for $11; + v_page_id portal_pages.page_id%TYPE; + v_layout_id portal_pages.layout_id%TYPE; + v_sort_key portal_pages.sort_key%TYPE; +begin + + v_page_id := acs_object__new( + null, + p_object_type, + p_creation_date, + p_creation_user, + p_creation_ip, + p_context_id, + ''t'' + ); + + if p_layout_id is null then + select min(layout_id) + into v_layout_id + from portal_layouts; + else + v_layout_id := p_layout_id; + end if; + + select coalesce(max(sort_key) + 1, 0) + into v_sort_key + from portal_pages + where portal_id = p_portal_id; + + insert into portal_pages + (page_id, pretty_name, accesskey, portal_id, layout_id, sort_key, hidden_p) + values + (v_page_id, p_pretty_name, p_accesskey, p_portal_id, v_layout_id, v_sort_key, p_hidden_p); + + return v_page_id; + +end;' language 'plpgsql'; Index: openacs-4/packages/new-portal/tcl/portal-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/tcl/portal-procs-oracle.xql,v diff -u -N -r1.21 -r1.21.12.1 --- openacs-4/packages/new-portal/tcl/portal-procs-oracle.xql 30 Sep 2003 13:11:41 -0000 1.21 +++ openacs-4/packages/new-portal/tcl/portal-procs-oracle.xql 29 Mar 2007 00:43:38 -0000 1.21.12.1 @@ -122,6 +122,7 @@ begin :1 := portal_page.new( pretty_name => :pretty_name, + access_key => :access_key, portal_id => :portal_id, layout_id => :layout_id ); Index: openacs-4/packages/new-portal/tcl/portal-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/tcl/portal-procs-postgresql.xql,v diff -u -N -r1.10 -r1.10.2.1 --- openacs-4/packages/new-portal/tcl/portal-procs-postgresql.xql 8 Aug 2006 21:26:59 -0000 1.10 +++ openacs-4/packages/new-portal/tcl/portal-procs-postgresql.xql 29 Mar 2007 00:43:38 -0000 1.10.2.1 @@ -123,6 +123,7 @@ select portal_page__new( null, :pretty_name, + :accesskey, :portal_id, :layout_id, 'f', Index: openacs-4/packages/new-portal/tcl/portal-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/tcl/portal-procs.tcl,v diff -u -N -r1.179.2.13 -r1.179.2.14 --- openacs-4/packages/new-portal/tcl/portal-procs.tcl 16 Mar 2007 11:24:40 -0000 1.179.2.13 +++ openacs-4/packages/new-portal/tcl/portal-procs.tcl 29 Mar 2007 00:43:38 -0000 1.179.2.14 @@ -150,16 +150,19 @@ if {![empty_string_p $csv_list]} { set page_name_and_layout_list [split [string trimright $csv_list ";"] ";"] set page_name_list [list] + set page_accesskey_list [list] set layout_name_list [list] # seperate name and layout foreach item $page_name_and_layout_list { lappend page_name_list [lindex [split $item ","] 0] lappend layout_name_list [lindex [split $item ","] 1] + lappend page_accesskey_list [lindex [split $item ","] 2] } } set default_page_name [lindex $page_name_list 0] + set default_access_key [lindex $page_accesskey_list 0] set layout_name [lindex $layout_name_list 0] # get the default layout_id - simple2 @@ -190,6 +193,7 @@ for {set i 1} {$i < [expr [llength $page_name_list]]} {incr i} { portal::page_create -portal_id $portal_id \ -pretty_name [lindex $page_name_list $i] \ + -access_key [lindex $page_accesskey_list $i] \ -layout_name [lindex $layout_name_list $i] } } @@ -1070,6 +1074,7 @@ {-layout_name ""} {-pretty_name:required} {-portal_id:required} + {-access_key ""} } { Appends a new blank page for the given portal_id.