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 @@ <message_catalog package_key="curriculum-central" package_version="0.1d" locale="en_US" charset="ISO-8859-1"> <msg key="uos">UoS</msg> + <msg key="view_graduate_attributes">View Graduate Attributes</msg> + <msg key="add_a_graduate_attribute">Add a Graduate Attribute</msg> <msg key="help_select_textbook_ids">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.</msg> <msg key="none">None</msg> <msg key="course_content">Course Content</msg> 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 </querytext> </fullquery> + + <fullquery name="curriculum_central::graduate_attribute_names_get_options.ga_names"> + <querytext> + SELECT name, name_id FROM cc_uos_gradattr_name + WHERE package_id = :package_id + </querytext> + </fullquery> + </queryset> 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 @@ <fullquery name="curriculum_central::uos::graduate_attributes_get_options.select_ga"> <querytext> - 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 @@ +<?xml version="1.0"?> + +<queryset> + <rdbms><type>postgresql</type><version>7.4</version></rdbms> + + <fullquery name="gradattr_update"> + <querytext> + UPDATE cc_uos_gradattr_name + SET name = :name + WHERE name_id = :name_id + </querytext> + </fullquery> + + <fullquery name="object_update"> + <querytext> + UPDATE acs_objects + SET modifying_user = :modifying_user, + modifying_ip = :modifying_ip, + package_id = :package_id + WHERE object_id = :name_id + </querytext> + </fullquery> + +</queryset> 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 @@ +<master> +<property name="title">@page_title;noquote@</property> +<property name="context">@context;noquote@</property> +<property name="focus">gradattr.name</property> + +<formtemplate id="gradattr"></formtemplate> 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 @@ +<?xml version="1.0"?> + +<queryset> + <rdbms><type>postgresql</type><version>7.4</version></rdbms> + + <fullquery name="get_gradattrs"> + <querytext> + 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"] + </querytext> + </fullquery> + +</queryset> 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 @@ +<master> +<property name="title">@page_title;noquote@</property> +<property name="context">@context;noquote@</property> + +<listtemplate name="gradattrs"></listtemplate> 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 { + <img src="/shared/images/Edit16.gif" height="16" width="16" border="0"> + } + 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 @@ <li><a href="grade-ae">#curriculum-central.add_a_grade_descriptor#</a></li> </ul> </li> +<li><span>#curriculum-central.graduate_attributes#</span> + <ul> + <li><a href="gradattrs">#curriculum-central.view_graduate_attributes#</a></li> + <li><a href="gradattr-ae">#curriculum-central.add_a_graduate_attribute#</a></li> + </ul> +</li> <li><span>#curriculum-central.schedule#</span> <ul> <li><a href="schedule">#curriculum-central.view_schedule_template#</a></li> 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 @@ <fullquery name="gradattr_update"> <querytext> 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 @@ <fullquery name="get_gradattrs"> <querytext> - 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"] </querytext> </fullquery>