Index: openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml,v diff -u -r1.29 -r1.30 --- openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml 11 Jan 2006 03:52:21 -0000 1.29 +++ openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml 12 Jan 2006 07:15:23 -0000 1.30 @@ -2,6 +2,8 @@ UoS + View Graduate Attributes + Add a Graduate Attribute Select textbooks from the list that will be used for this Unit of Study. Hold the Ctrl key down whilst selecting to add more than one selection. None Course Content Index: openacs-4/packages/curriculum-central/sql/postgresql/uos-gradattr-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/sql/postgresql/uos-gradattr-create.sql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/curriculum-central/sql/postgresql/uos-gradattr-create.sql 4 Jan 2006 23:32:35 -0000 1.1 +++ openacs-4/packages/curriculum-central/sql/postgresql/uos-gradattr-create.sql 12 Jan 2006 07:15:23 -0000 1.2 @@ -12,6 +12,44 @@ returns integer as' begin PERFORM acs_object_type__create_type ( + ''cc_uos_gradattr_name'', -- object_type + ''#curriculum-central.uos_graduate_attribtue_name#'', -- pretty_name + ''#curriculum-central.uos_graduate_attribute_names#'', -- pretty_plural + ''acs_object'', -- supertype + ''cc_uos_gradattr_name'', -- table_name + ''name_id'', -- id_column + null, -- package_name + ''f'', -- abstract_p + null, -- type_extension_table + ''cc_uos_gradattr_name__name'' -- name_method + ); + + return 0; +end;' language 'plpgsql'; + +select inline_0 (); +drop function inline_0 (); + + +-- Table storing the names of admin defined graduate attributes that +-- can be used globally. Used for consistence. +-- Names include: Research and Inquiry; Information Literacy; Communication. +create table cc_uos_gradattr_name ( + name_id integer + constraint cc_uos_gradattr_name_fk + references acs_objects(object_id) + on delete cascade + constraint cc_uos_gradattr_name_pk + primary key, + name varchar(256), + package_id integer +); + + +create function inline_0 () +returns integer as' +begin + PERFORM acs_object_type__create_type ( ''cc_uos_gradattr_set'', -- object_type ''#curriculum-central.uos_graduate_attribtue_set#'', -- pretty_name ''#curriculum-central.uos_graduate_attribute_sets#'', -- pretty_plural @@ -119,7 +157,9 @@ references acs_objects(object_id) constraint cc_uos_gradattr_id_pk primary key, - name varchar(256), -- eg. Communication, Research. + name_id integer + constraint cc_uos_graddtr_name_fk + references cc_uos_gradattr_name(name_id), identifier varchar(256), -- for form multiselect. description text, -- GA description. level integer -- 1, 2, 3, 4 or 5. @@ -140,6 +180,95 @@ -- -- +-- Create the functions for cc_uos_gradattr_name +-- +-- + +select define_function_args('cc_uos_gradattr_name__new','name_id,name,creation_date;now,creation_user,creation_ip,package_id,context_id'); + +create function cc_uos_gradattr_name__new ( + integer, -- name_id + varchar, -- name + timestamptz, -- creation_date + integer, -- creation_user + varchar, -- creation_ip + integer, -- package_id + integer -- context_id +) returns integer as ' +declare + p_name_id alias for $1; -- default null + p_name alias for $2; + p_creation_date alias for $3; -- default now() + p_creation_user alias for $4; -- default null + p_creation_ip alias for $5; -- default null + p_package_id alias for $6; + p_context_id alias for $7; -- default null + + v_name_id cc_uos_gradattr_name.name_id%TYPE; +begin + + v_name_id := acs_object__new ( + p_name_id, + ''cc_uos_gradattr_name'', + p_creation_date, + p_creation_user, + p_creation_ip, + p_context_id, + p_name, + p_package_id + ); + + INSERT INTO cc_uos_gradattr_name ( + name_id, name, package_id + ) + VALUES ( + v_name_id, p_name, p_package_id + ); + + return v_name_id; + +end;' language 'plpgsql'; + + +select define_function_args('cc_uos_gradattr_name__del','name_id'); + +create function cc_uos_gradattr_name__del (integer) +returns integer as ' +declare + p_name_id alias for $1; +begin + DELETE FROM acs_permissions WHERE object_id = p_name_id; + + DELETE FROM cc_uos_gradattr_name WHERE name_id = p_name_id; + + RAISE NOTICE ''Deleting graduate attribute name...''; + PERFORM acs_object__delete(p_name_id); + + return 0; + +end;' language 'plpgsql'; + + +select define_function_args('cc_uos_gradattr_name__name','name_id'); + +create function cc_uos_gradattr_name__name (integer) +returns varchar as ' +declare + p_name_id alias for $1; + + v_gradattr_name cc_uos_gradattr_name.name%TYPE; +begin + SELECT name INTO v_gradattr_name + FROM cc_uos_gradattr_name + WHERE name_id = p_name_id; + + return v_gradattr_name; +end; +' language 'plpgsql'; + + +-- +-- -- Create the functions for the graduate attribute content item and revisions. -- -- @@ -317,11 +446,11 @@ -- -- -select define_function_args('cc_uos_gradattr__new','gradattr_id,name,identifier,description,level,creation_date;now,creation_user,creation_ip,package_id,context_id'); +select define_function_args('cc_uos_gradattr__new','gradattr_id,name_id,identifier,description,level,creation_date;now,creation_user,creation_ip,package_id,context_id'); create function cc_uos_gradattr__new ( integer, -- gradattr_id - varchar, -- name + integer, -- name_id varchar, -- identifier text, -- description integer, -- level @@ -333,7 +462,7 @@ ) returns integer as ' declare p_gradattr_id alias for $1; -- default null - p_name alias for $2; + p_name_id alias for $2; p_identifier alias for $3; p_description alias for $4; p_level alias for $5; @@ -346,7 +475,8 @@ v_gradattr_id cc_uos_gradattr.gradattr_id%TYPE; v_title varchar; begin - v_title := p_name || '' ('' || p_identifier || '')''; + v_title := cc_uos_gradattr_name__name(p_name_id) || + '' ('' || p_identifier || '')''; v_gradattr_id := acs_object__new ( p_gradattr_id, @@ -360,10 +490,10 @@ ); INSERT INTO cc_uos_gradattr ( - gradattr_id, name, identifier, description, level + gradattr_id, name_id, identifier, description, level ) VALUES ( - v_gradattr_id, p_name, p_identifier, p_description, p_level + v_gradattr_id, p_name_id, p_identifier, p_description, p_level ); return v_gradattr_id; @@ -397,9 +527,9 @@ declare p_gradattr_id alias for $1; - v_gradattr_name cc_uos_gradattr.name%TYPE; + v_gradattr_name varchar; begin - SELECT name INTO v_gradattr_name + SELECT cc_uos_gradattr_name__name(name_id) INTO v_gradattr_name FROM cc_uos_gradattr WHERE gradattr_id = p_gradattr_id; Index: openacs-4/packages/curriculum-central/tcl/curriculum-central-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/tcl/curriculum-central-procs-postgresql.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/curriculum-central/tcl/curriculum-central-procs-postgresql.xql 4 Dec 2005 07:32:38 -0000 1.2 +++ openacs-4/packages/curriculum-central/tcl/curriculum-central-procs-postgresql.xql 12 Jan 2006 07:15:23 -0000 1.3 @@ -62,4 +62,12 @@ WHERE package_id = :package_id + + + + SELECT name, name_id FROM cc_uos_gradattr_name + WHERE package_id = :package_id + + + Index: openacs-4/packages/curriculum-central/tcl/curriculum-central-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/tcl/curriculum-central-procs.tcl,v diff -u -r1.11 -r1.12 --- openacs-4/packages/curriculum-central/tcl/curriculum-central-procs.tcl 11 Jan 2006 00:49:17 -0000 1.11 +++ openacs-4/packages/curriculum-central/tcl/curriculum-central-procs.tcl 12 Jan 2006 07:15:23 -0000 1.12 @@ -150,6 +150,28 @@ return $departments_list } + +ad_proc curriculum_central::graduate_attribute_names_get_options { + {-package_id {}} +} { + Returns a two-column list of valid graduate attribute names that have + been defined by the package administrator. The first column contains the + pretty name of a graduate attribute, and the second contains the + corresponding name_id. + + @param package_id The package ID for an instance of Curriculum Central. + @return Returns a list of graduate attribute names. +} { + if { [empty_string_p $package_id] } { + set package_id [ad_conn package_id] + } + + set ga_names_list [db_list_of_lists ga_names {}] + + return $ga_names_list +} + + ##### # # Procs for page variables and filters for UoS edit form. Index: openacs-4/packages/curriculum-central/tcl/uos-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/tcl/uos-procs-postgresql.xql,v diff -u -r1.17 -r1.18 --- openacs-4/packages/curriculum-central/tcl/uos-procs-postgresql.xql 11 Jan 2006 00:49:17 -0000 1.17 +++ openacs-4/packages/curriculum-central/tcl/uos-procs-postgresql.xql 12 Jan 2006 07:15:23 -0000 1.18 @@ -404,7 +404,8 @@ - SELECT g.name || ' (' || g.identifier || ')' AS ga_name, + SELECT cc_uos_gradattr_name__name(g.name_id) + || ' (' || g.identifier || ')' AS ga_name, g.gradattr_id FROM cc_uos_gradattr g, acs_objects o WHERE o.object_id = g.gradattr_id Index: openacs-4/packages/curriculum-central/tcl/uos-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/tcl/uos-procs.tcl,v diff -u -r1.24 -r1.25 --- openacs-4/packages/curriculum-central/tcl/uos-procs.tcl 11 Jan 2006 03:52:21 -0000 1.24 +++ openacs-4/packages/curriculum-central/tcl/uos-procs.tcl 12 Jan 2006 07:15:23 -0000 1.25 @@ -1196,7 +1196,10 @@ {-package_id ""} {-user_id ""} } { - Returns a two-column list of registered graduate attributes. + Returns a two-column list of user registered graduate attributes. + These are graduate attributes that have been selected from the + global list of graduate attributes, and assigned a description + by the Unit Coordinator. @param package_id ID of the current package instance. @param user_id Specify a user to retrieve their list of Index: openacs-4/packages/curriculum-central/www/admin/gradattr-ae-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattr-ae-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattr-ae-postgresql.xql 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,24 @@ + + + + postgresql7.4 + + + + UPDATE cc_uos_gradattr_name + SET name = :name + WHERE name_id = :name_id + + + + + + UPDATE acs_objects + SET modifying_user = :modifying_user, + modifying_ip = :modifying_ip, + package_id = :package_id + WHERE object_id = :name_id + + + + Index: openacs-4/packages/curriculum-central/www/admin/gradattr-ae.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattr-ae.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattr-ae.adp 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,6 @@ + +@page_title;noquote@ +@context;noquote@ +gradattr.name + + Index: openacs-4/packages/curriculum-central/www/admin/gradattr-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattr-ae.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattr-ae.tcl 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,50 @@ +ad_page_contract { + Add/Edit a graduate attribute + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-01-04 + @cvs-id $Id: gradattr-ae.tcl,v 1.1 2006/01/12 07:15:24 ncarroll Exp $ +} { + name_id:integer,optional + {return_url "gradattrs"} +} + +auth::require_login + +if { [info exists name_id] } { + set page_title [_ curriculum-central.edit_graduate_attribute] +} else { + set page_title [_ curriculum-central.add_graduate_attribute] +} + +set context [list $page_title] +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +ad_form -name gradattr -cancel_url $return_url -form { + {name_id:key(acs_object_id_seq)} + {return_url:text(hidden) {value $return_url}} + {name:text + {html {size 25}} + {label "[_ curriculum-central.name]" } + {help_text "[_ curriculum-central.help_enter_graduate_attribute_name]"} + } +} -select_query { + SELECT name FROM cc_uos_gradattr_name WHERE name_id = :name_id +} -new_data { + package_instantiate_object \ + -var_list [list [list package_id $package_id] \ + [list object_type cc_uos_gradattr_name] \ + [list name $name]] \ + -form_id gradattr cc_uos_gradattr_name + +} -edit_data { + set modifying_user [ad_conn user_id] + set modifying_ip [ad_conn peeraddr] + + db_dml gradattr_update {} + db_dml object_update {} +} -after_submit { + ad_returnredirect $return_url + ad_script_abort +} Index: openacs-4/packages/curriculum-central/www/admin/gradattrs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattrs-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattrs-postgresql.xql 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,15 @@ + + + + postgresql7.4 + + + + SELECT g.name_id, g.name + FROM cc_uos_gradattr_name g + WHERE g.package_id = :package_id + [template::list::orderby_clause -orderby -name "gradattrs"] + + + + Index: openacs-4/packages/curriculum-central/www/admin/gradattrs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattrs.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattrs.adp 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,5 @@ + +@page_title;noquote@ +@context;noquote@ + + Index: openacs-4/packages/curriculum-central/www/admin/gradattrs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/gradattrs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/curriculum-central/www/admin/gradattrs.tcl 12 Jan 2006 07:15:24 -0000 1.1 @@ -0,0 +1,46 @@ +ad_page_contract { + Page for listing graduate attributes. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-1-4 + @cvs-id $Id: gradattrs.tcl,v 1.1 2006/01/12 07:15:24 ncarroll Exp $ +} { + {orderby "name,asc"} +} + +auth::require_login + +set page_title "[_ curriculum-central.graduate_attributes]" +set context [list $page_title] +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +set elements { + edit { + sub_class narrow + display_template { + + } + link_url_eval {[export_vars -base gradattr-ae { name_id }]} + link_html {title "#curriculum-central.edit_graduate_attribute#"} + } + name { + label "#curriculum-central.name#" + } +} + +template::list::create \ + -name gradattrs \ + -actions [list "#curriculum-central.add_graduate_attribute#" [export_vars -base gradattr-ae {}] "#curriculum-central.add_graduate_attribute_to_list#"] \ + -multirow gradattrs \ + -no_data "#curriculum-central.no_graduate_attributes_created#" \ + -elements $elements \ + -orderby { + name {orderby {lower(name)}} + identifier {orderby {lower(identifier)}} + level {orderby level} + } + +db_multirow gradattrs get_gradattrs {} + +ad_return_template Index: openacs-4/packages/curriculum-central/www/admin/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/admin/index.adp,v diff -u -r1.5 -r1.6 --- openacs-4/packages/curriculum-central/www/admin/index.adp 11 Jan 2006 00:49:17 -0000 1.5 +++ openacs-4/packages/curriculum-central/www/admin/index.adp 12 Jan 2006 07:15:24 -0000 1.6 @@ -32,6 +32,12 @@
  • #curriculum-central.add_a_grade_descriptor#
  • +
  • #curriculum-central.graduate_attributes# + +
  • #curriculum-central.schedule#
    • #curriculum-central.view_schedule_template#
    • Index: openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae-postgresql.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae-postgresql.xql 4 Jan 2006 23:32:36 -0000 1.1 +++ openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae-postgresql.xql 12 Jan 2006 07:15:24 -0000 1.2 @@ -6,7 +6,7 @@ UPDATE cc_uos_gradattr - SET name = :name, + SET name_id = :name_id, identifier = :identifier, description = :description, level = :level Index: openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae.tcl 6 Jan 2006 05:46:13 -0000 1.2 +++ openacs-4/packages/curriculum-central/www/coordinate/gradattr-ae.tcl 12 Jan 2006 07:15:24 -0000 1.3 @@ -24,8 +24,8 @@ ad_form -name gradattr -cancel_url $return_url -form { {gradattr_id:key(acs_object_id_seq)} {return_url:text(hidden) {value $return_url}} - {name:text - {html {size 25}} + {name_id:integer(select) + {options [curriculum_central::graduate_attribute_names_get_options] } {label "[_ curriculum-central.name]" } {help_text "[_ curriculum-central.help_enter_graduate_attribute_name]"} } @@ -51,13 +51,13 @@ } } } -select_query { - SELECT name, identifier, description, level + SELECT name_id, identifier, description, level FROM cc_uos_gradattr WHERE gradattr_id = :gradattr_id } -new_data { package_instantiate_object \ -var_list [list [list package_id $package_id] \ [list object_type cc_uos_gradattr] \ - [list name $name] \ + [list name_id $name_id] \ [list identifier $identifier] \ [list description $description] \ [list level $level]] \ Index: openacs-4/packages/curriculum-central/www/coordinate/gradattrs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/coordinate/gradattrs-postgresql.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/curriculum-central/www/coordinate/gradattrs-postgresql.xql 6 Jan 2006 05:46:13 -0000 1.2 +++ openacs-4/packages/curriculum-central/www/coordinate/gradattrs-postgresql.xql 12 Jan 2006 07:15:24 -0000 1.3 @@ -5,11 +5,13 @@ - SELECT g.gradattr_id, g.name, g.identifier, g.description, g.level - FROM cc_uos_gradattr g, acs_objects o - WHERE package_id = :package_id + SELECT g.gradattr_id, n.name, + g.identifier, g.description, g.level + FROM cc_uos_gradattr g, acs_objects o, cc_uos_gradattr_name n + WHERE n.package_id = :package_id AND g.gradattr_id = o.object_id AND o.creation_user = :user_id + AND n.name_id = g.name_id [template::list::orderby_clause -orderby -name "gradattrs"]