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.6 -r1.7
--- openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml	4 Dec 2005 13:08:26 -0000	1.6
+++ openacs-4/packages/curriculum-central/catalog/curriculum-central.en_US.ISO-8859-1.xml	11 Dec 2005 07:47:40 -0000	1.7
@@ -117,10 +117,12 @@
   <msg key="help_select_dean">Select the Dean.  Note: The Dean must have an account on the system.</msg>
   <msg key="help_enter_faculty_name">Enter a name for this faculty.  Example: Faculty of Engineering.</msg>
   <msg key="help_select_staff_member">Select a staff member from the list of users.</msg>
+  <msg key="help_select_unit_coordinator">Select the Unit Coordinator from the list of staff.</msg>
   <msg key="help_enter_staff_title">Enter the staff member's title.  For example: Mr, Mrs, Ms, Dr, Associate Professor, Professor, etc.</msg>
   <msg key="help_enter_staff_position">Enter the staff member's position.  For example: Honorary Associate Professor, Research Fellow, Adjunct Lecturer, etc.</msg>
   <msg key="help_select_staff_member_department">Select the department that the staff member belongs to.</msg>
   <msg key="staff_title">Staff Title</msg>
   <msg key="staff_position">Staff Position</msg>
+  <msg key="add_unit_of_study">Add Unit of Study</msg>
 
 </message_catalog>
Index: openacs-4/packages/curriculum-central/sql/postgresql/uos-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/sql/postgresql/uos-create.sql,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/curriculum-central/sql/postgresql/uos-create.sql	4 Dec 2005 07:30:45 -0000	1.2
+++ openacs-4/packages/curriculum-central/sql/postgresql/uos-create.sql	11 Dec 2005 07:47:40 -0000	1.3
@@ -103,8 +103,7 @@
 );
 
 
--- TODO: variable assignment
-select define_function_args('cc_uos__new', 'uos_id,owner_id,object_type,name,code,department,faculty,creation_user,creation_ip,context_id');
+select define_function_args('cc_uos__new', 'uos_id,uos_code,uos_name,unit_coordinator_id,credit_value,semester,online_course_content,contact_hours,assessments,core_uos_for,recommended_uos_for,prerequisites,objectives,outcomes,syllabus,syllabus_format,creation_user,creation_ip,context_id,item_subtype;cc_uos,content_type;cc_uos_revision,object_type,package_id');
 
 create function cc_uos__new(
 	integer,	-- uos_id
@@ -127,7 +126,9 @@
 	varchar,	-- creation_ip
 	integer,	-- context_id
 	varchar,	-- item_subtype
-	varchar		-- content_type
+	varchar,	-- content_type
+	varchar,	-- object_type
+	integer		-- package_id
 ) returns integer as'
 declare
 
@@ -152,27 +153,68 @@
 	p_context_id			alias for $19;
 	p_item_subtype			alias for $20;
 	p_content_type			alias for $21;
+	p_object_type			alias for $22;
+	p_package_id			alias for $23;
 
-	v_uos_id		cc_uos.uos_id%TYPE;
+	v_uos_id			cc_uos.uos_id%TYPE;
+	v_folder_id			integer;
+	v_revision_id			integer;
 begin
+	-- get the content folder for this instance
+	select folder_id into v_folder_id
+	    from cc_curriculum
+	    where curriculum_id = p_package_id;
 
-	v_uos_id := acs_object__new (
-			p_uos_id,
-			p_object_type,
-			now(),
-			p_creation_user,
-			p_creation_ip,
-			p_context_id
+	-- create the content item
+	v_uos_id := content_item__new (
+			p_uos_name,		-- name
+			v_folder_Id,		-- parent_id
+			p_uos_id,		-- item_id
+			null,			-- locale
+			now(),			-- creation_date
+			p_creation_user,	-- creation_user
+			v_folder_id,		-- context_id
+			p_creation_ip,		-- creation_ip
+			p_item_subtype,		-- item_subtype
+			p_content_type,		-- content_type
+			null,			-- title
+			null,			-- description
+			null,			-- mime_type
+			null,			-- nls_language
+			null,			--data
+			p_package_id
 		);
 
-	insert into cc_uos values(v_uos_id, p_owner_id, p_name, p_code, p_department, p_faculty);
-	
-	PERFORM acs_permission__grant_permission(
-          v_uos_id,
-          p_unit_coordinator_id,
-          ''admin''
-    	);
+	-- create the item type row
+	insert into cc_uos (uos_id, package_id, parent_id,
+	    uos_code, uos_name, unit_coordinator_id)
+	VALUES (v_uos_id, p_package_id, v_folder_id, p_uos_code,
+            p_uos_name, p_unit_coordinator_id);
 
+	-- create the initial revision
+	v_revision_id := cc_uos_revision__new (
+		null,				-- uos_revision_id
+		v_uos_id,			-- uos_id
+		p_uos_code,			-- uos_code
+		p_uos_name,			-- uos_name
+		p_credit_value,			-- credit_value
+		p_semester,			-- semester
+		p_online_course_content,	-- online_course_content
+		p_unit_coordinator_id,		-- unit_coordinator_id
+		p_contact_hours,		-- contact_hours
+		p_assessments,			-- assessments
+		p_core_uos_for,			-- core_uos_for
+		p_recommended_uos_for,		-- recommended_uos_for
+		p_prerequisites,		-- prerequisites
+		p_objectives,			-- objectives
+		p_outcomes,			-- outcomes
+		p_syllabus,			-- syllabus
+		p_syllabus_format,		-- syllabus_format
+		now(),				-- creation_date
+		p_creation_user,		-- creation_user
+		p_creation_ip			-- creation_ip
+	);
+
 	return v_uos_id;
 
 end;
@@ -184,21 +226,34 @@
 create function cc_uos__delete (integer)
 returns integer as '
 declare
-  p_uos_id				alias for $1;
+	p_uos_id			alias for $1;
+
+	v_case_id			integer;
+	rec				record;
 begin
-    delete from acs_permissions
-		   where object_id = p_uos_id;
+	-- Every UoS is associated with a workflow case
+	select case_id into v_case_id
+	from workflow_cases
+	where object_id = p_uos_id;
 
-	delete from cc_uos
-		   where uos_id = p_uos_id;
+	perform workflow_case_pkg__delete(v_case_id);
 
-	raise NOTICE ''Deleting UoS...'';
-	PERFORM acs_object__delete(p_uos_id);
+	-- Every UoS may have notifications attached to it
+	-- and there is one column in the notifications datamodel that
+	-- doesn''t cascade
+	for rec in select notification_id from notifications
+			where response_id = p_uos_id loop
 
+		PERFORM notification__delete (rec.notification_id);
+
+	end loop;
+
+	perform content_item__delete(p_uos_id);	
+
 	return 0;
 
-end;' 
-language plpgsql;
+end;
+' language 'plpgsql';
 
 
 select define_function_args('cc_uos__name', 'uos_id');
@@ -213,6 +268,102 @@
 		from cc_uos
 		where uos_id = p_uos_id;
 
-    return v_uos;
+    return v_uos_name;
 end;
-' language plpgsql;
+' language 'plpgsql';
+
+
+create or replace function cc_uos_revision__new (
+	integer,			-- uos_revision_id
+	integer,			-- uos_id
+	varchar,			-- uos_code
+	varchar,			-- uos_name
+	integer,			-- credit_value
+	varchar,			-- semester
+	varchar,			-- online_course_content
+	integer,			-- unit_coordinator_id
+	varchar,			-- contact_hours
+	varchar,			-- assessments
+	varchar,			-- core_uos_for
+	varchar,			-- recommended_uos_for
+	varchar,			-- prerequisites
+	text,				-- objectives
+	text,				-- outcomes
+	text,				-- syllabus
+	varchar,			-- syllabus_format
+	timestamptz,			-- creation_date
+	integer,			-- creation_user
+	varchar				-- creation_ip
+) returns int
+as '
+declare
+	p_uos_revision_id		alias for $1;
+	p_uos_id			alias for $2;
+	p_uos_code			alias for $3;
+	p_uos_name			alias for $4;
+	p_credit_value			alias for $5;
+	p_semester			alias for $6;
+	p_online_course_content		alias for $7;
+	p_unit_coordinator_id		alias for $8;
+	p_contact_hours			alias for $9;
+	p_assessments			alias for $10;
+	p_core_uos_for			alias for $11;
+	p_recommended_uos_for		alias for $12;
+	p_prerequisites			alias for $13;
+	p_objectives			alias for $14;
+	p_outcomes			alias for $15;
+	p_syllabus			alias for $16;
+	p_syllabus_format		alias for $17;
+	p_creation_date			alias for $18;
+	p_creation_user			alias for $19;
+	p_creation_ip			alias for $20;
+
+	v_revision_id			integer;
+begin
+	-- create the initial revision
+	v_revision_id := content_revision__new (
+		p_uos_name,		-- title
+		null,			-- description
+		current_timestamp,	-- publish_date
+		null,			-- mime_type
+		null,			-- nls_language
+		null,			-- new_data
+		p_uos_id,		-- item_id
+		p_uos_revision_id,	-- revision_id
+		p_creation_date,	-- creation_date
+		p_creation_user,	-- creation_user
+		p_creation_ip		-- creation_ip
+	);
+
+	-- insert into the uos-specific revision table
+	insert into cc_uos_revisions
+		(uos_revision_id, uos_code, uos_name, credit_value,
+		semester, online_course_content, unit_coordinator_id,
+		contact_hours, assessments, core_uos_for, recommended_uos_for,
+		prerequisites, objectives, outcomes, syllabus, syllabus_format)
+	values
+		(v_revision_id, p_uos_code, p_uos_name, p_credit_value,
+		p_semester, p_online_course_content, p_unit_coordinator_id,
+		p_contact_hours, p_assessments, p_core_uos_for,
+		p_recommended_uos_for, p_prerequisites, p_objectives,
+		p_outcomes, p_syllabus, p_syllabus_format);
+
+	-- make the revision live
+	PERFORM content_item__set_live_revision(v_revision_id);
+
+	-- update the cache
+	update cc_uos
+	set	live_revision_id = v_revision_id,
+		uos_code = p_uos_code,
+		uos_name = p_uos_name,
+		unit_coordinator_id = p_unit_coordinator_id
+	where	uos_id = p_uos_id;
+
+	-- update the title in acs_objects
+	update acs_objects
+	set	title = cc_uos__name(p_uos_id)
+	where object_id = p_uos_id;
+
+	return v_revision_id;
+end;
+' language 'plpgsql';
Index: openacs-4/packages/curriculum-central/tcl/install-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/tcl/install-procs.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/curriculum-central/tcl/install-procs.tcl	20 Nov 2005 23:51:10 -0000	1.1
+++ openacs-4/packages/curriculum-central/tcl/install-procs.tcl	11 Dec 2005 07:47:40 -0000	1.2
@@ -71,6 +71,8 @@
 
 ad_proc -private curriculum_central::install::register_implementations {} {
     db_transaction {
+	curriculum_central::install::register_unit_coordinator_impl
+	curriculum_central::install::register_stream_coordinator_impl	
         curriculum_central::install::register_format_log_title_impl
         curriculum_central::install::register_uos_notification_info_impl
     }
@@ -85,6 +87,15 @@
 	    -impl_name "FormatLogTitle"
 
         acs_sc::impl::delete \
+                -contract_name [workflow::service_contract::role_default_assignees]  \
+                -impl_name "UnitCoordinator"
+
+        acs_sc::impl::delete \
+                -contract_name [workflow::service_contract::role_default_assignees] \
+                -impl_name "StreamCoordinator"
+
+
+        acs_sc::impl::delete \
 	    -contract_name [workflow::service_contract::notification_info] \
 	    -impl_name "UoSNotificationInfo"
     }
@@ -129,6 +140,42 @@
 }
 
 
+ad_proc -private curriculum_central::install::register_unit_coordinator_impl {} {
+
+    set spec {
+        name "UnitCoordinator"
+        aliases {
+            GetObjectType curriculum_central::uos::object_type
+            GetPrettyName curriculum_central::uos::get_unit_coordinator::pretty_name
+            GetAssignees  curriculum_central::uos::get_unit_coordinator::get_assignees
+        }
+    }
+    
+    lappend spec contract_name [workflow::service_contract::role_default_assignees]
+    lappend spec owner [curriculum_central::package_key]
+    
+    acs_sc::impl::new_from_spec -spec $spec
+}
+
+
+ad_proc -private curriculum_central::install::register_stream_coordinator_impl {} {
+
+    set spec {
+        name "StreamCoordinator"
+        aliases {
+            GetObjectType curriculum_central::uos::object_type
+            GetPrettyName curriculum_central::uos::get_stream_coordinator::pretty_name
+            GetAssignees  curriculum_central::uos::get_stream_coordinator::get_assignees
+        }
+    }
+    
+    lappend spec contract_name [workflow::service_contract::role_default_assignees]
+    lappend spec owner [curriculum_central::package_key]
+    
+    acs_sc::impl::new_from_spec -spec $spec
+}
+
+
 ad_proc -private curriculum_central::install::roles_create {} {
     Creates the Stream Coordinator, Unit Coordinator and Lecturer roles.
 } {
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
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/tcl/uos-procs-postgresql.xql	11 Dec 2005 07:47:40 -0000	1.1
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<queryset>
+   <rdbms><type>postgresql</type><version>7.4</version></rdbms>
+
+   <fullquery name="curriculum_central::uos::get_unit_coordinator::get_assignees.select_unit_coordinators">
+     <querytext>
+       SELECT staff_id FROM cc_staff
+     </querytext>
+   </fullquery>
+
+   <fullquery name="curriculum_central::uos::get_stream_coordinator::get_assignees.select_stream_coordinators">
+     <querytext>
+       SELECT staff_id FROM cc_staff
+     </querytext>
+   </fullquery>
+
+</queryset>
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.2 -r1.3
--- openacs-4/packages/curriculum-central/tcl/uos-procs.tcl	4 Dec 2005 07:32:38 -0000	1.2
+++ openacs-4/packages/curriculum-central/tcl/uos-procs.tcl	11 Dec 2005 07:47:40 -0000	1.3
@@ -11,8 +11,10 @@
 }
 
 namespace eval curriculum_central::uos {}
-
 namespace eval curriculum_central::uos::format_log_title {}
+namespace eval curriculum_central::uos::get_unit_coordinator {}
+namespace eval curriculum_central::uos::get_stream_coordinator {}
+namespace eval curriculum_central::uos::notification_info {}
 
 ad_proc -public curriculum_central::uos::workflow_short_name {} {
     Get the short name of the workflow for Units of Study.
@@ -267,7 +269,8 @@
 	       	 [list objectives $objectives] \
 	         [list outcomes $outcomes] \
      	         [list syllabus $syllabus] \
-		 [list syllabus_format $syllabus_format]] \
+		 [list syllabus_format $syllabus_format] \
+		 [list object_type "cc_uos"]] \
 	     -package_name "cc_uos" \
 	     "cc_uos"]
 
@@ -318,6 +321,43 @@
 
 #####
 #
+# Get Unit Coordinator
+#
+#####
+
+ad_proc -private curriculum_central::uos::get_unit_coordinator::pretty_name {} {
+    return "[_ curriculum-central.unit_coordinator]"
+}
+
+ad_proc -private curriculum_central::uos::get_unit_coordinator::get_assignees {
+    case_id
+    object_id
+    role_id
+} {
+    return [db_list select_unit_coordinators {} -default {}]
+}
+
+#####
+#
+# Get Stream Coordinator
+#
+#####
+
+ad_proc -private curriculum_central::uos::get_stream_coordinator::pretty_name {} {
+    return "[_ curriculum-central.stream_coordinator]"
+}
+
+ad_proc -private curriculum_central::uos::get_stream_coordinator::get_assignees {
+    case_id
+    object_id
+    role_id
+} {
+    return [db_list select_stream_coordinators {} -default {}]
+}
+
+
+#####
+#
 # Notification Info
 #
 #####
Index: openacs-4/packages/curriculum-central/www/dept-streams-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/dept-streams-postgresql.xql,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/dept-streams-postgresql.xql	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+
+<queryset>
+   <rdbms><type>postgresql</type><version>7.4</version></rdbms>
+
+   <fullquery name="streams">
+     <querytext>
+       SELECT stream_id, stream_name FROM cc_stream WHERE
+           department_id = :department_id
+     </querytext>
+   </fullquery>
+
+   <fullquery name="context_faculty">
+     <querytext>
+       SELECT f.faculty_id, f.faculty_name FROM cc_faculty f, cc_department d
+           WHERE d.department_id = :department_id
+           AND f.faculty_id = d.faculty_id
+     </querytext>
+   </fullquery>
+</queryset>
Index: openacs-4/packages/curriculum-central/www/dept-streams.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/dept-streams.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/dept-streams.adp	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,10 @@
+<master>
+<property name="title">@page_title;noquote@</property>
+<property name="context">@context;noquote@</property>
+
+View Units of Study for:
+<ul>
+<multiple name="streams">
+<li><a href="@streams.stream_uos_url@">@streams.stream_name@</a></li>
+</multiple>
+</ul>
Index: openacs-4/packages/curriculum-central/www/dept-streams.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/dept-streams.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/dept-streams.tcl	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,34 @@
+ad_page_contract {
+    
+
+    @author Nick Carroll (nick.c@rroll.net)
+    @creation-date 2005-11-15
+    @cvs-id $Id: dept-streams.tcl,v 1.1 2005/12/11 07:47:41 ncarroll Exp $
+} {
+    department_id:integer
+    department_name
+}
+
+# Retrieve info about the faculty that the department belongs to for
+# contextual navigation.
+db_1row context_faculty {}
+
+set page_title $department_name
+set context [list [list [export_vars -url -base faculty-depts \
+			     {faculty_name faculty_id}] $faculty_name] \
+		 $page_title]
+set package_id [ad_conn package_id]
+
+# Check for streams.  If no streams, then display no-streams template.
+if { ![curriculum_central::stream::streams_exist_p] } {
+    ad_return_template "no-streams"
+    return
+}
+
+# Get list of streams.
+db_multirow -extend {stream_uos_url} streams streams {} {
+    set stream_uos_url [export_vars -url -base stream-uos \
+			     {stream_id stream_name}]
+}
+
+ad_return_template
Index: openacs-4/packages/curriculum-central/www/faculty-depts-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/faculty-depts-postgresql.xql,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/faculty-depts-postgresql.xql	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+
+<queryset>
+   <rdbms><type>postgresql</type><version>7.4</version></rdbms>
+
+   <fullquery name="depts">
+     <querytext>
+       SELECT department_id, department_name FROM cc_department WHERE
+           faculty_id = :faculty_id
+     </querytext>
+   </fullquery>
+
+</queryset>
Index: openacs-4/packages/curriculum-central/www/faculty-depts.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/faculty-depts.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/faculty-depts.adp	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,10 @@
+<master>
+<property name="title">@page_title;noquote@</property>
+<property name="context">@context;noquote@</property>
+
+View degree streams for:
+<ul>
+<multiple name="depts">
+<li><a href="@depts.dept_streams_url@">@depts.department_name@</a></li>
+</multiple>
+</ul>
Index: openacs-4/packages/curriculum-central/www/faculty-depts.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/faculty-depts.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/faculty-depts.tcl	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,28 @@
+ad_page_contract {
+    
+
+    @author Nick Carroll (nick.c@rroll.net)
+    @creation-date 2005-11-15
+    @cvs-id $Id: faculty-depts.tcl,v 1.1 2005/12/11 07:47:41 ncarroll Exp $
+} {
+    faculty_id
+    faculty_name
+}
+
+set page_title $faculty_name
+set context [list $page_title]
+set package_id [ad_conn package_id]
+
+# Check for streams.  If no streams, then display no-streams template.
+if { ![curriculum_central::stream::streams_exist_p] } {
+    ad_return_template "no-streams"
+    return
+}
+
+# Get list of departments.
+db_multirow -extend {dept_streams_url} depts depts {} {
+    set dept_streams_url [export_vars -url -base dept-streams \
+			     {department_id department_name}]
+}
+
+ad_return_template
Index: openacs-4/packages/curriculum-central/www/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/index.adp,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/curriculum-central/www/index.adp	11 Dec 2005 05:34:37 -0000	1.3
+++ openacs-4/packages/curriculum-central/www/index.adp	11 Dec 2005 07:47:41 -0000	1.4
@@ -11,6 +11,6 @@
 View curriculum for:
 <ul>
 <multiple name="faculties">
-<li><a href="depts?faculty_id=@faculties.faculty_id@">@faculties.faculty_name@</a></li>
+<li><a href="@faculties.faculty_dept_url@">@faculties.faculty_name@</a></li>
 </multiple>
-</ul>
\ No newline at end of file
+</ul>
Index: openacs-4/packages/curriculum-central/www/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/index.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/curriculum-central/www/index.tcl	11 Dec 2005 05:34:37 -0000	1.3
+++ openacs-4/packages/curriculum-central/www/index.tcl	11 Dec 2005 07:47:41 -0000	1.4
@@ -18,6 +18,9 @@
 }
 
 # Get list of faculties.
-db_multirow faculties faculties {}
+db_multirow -extend {faculty_dept_url} faculties faculties {} {
+    set faculty_dept_url [export_vars -url -base faculty-depts \
+			      {faculty_id faculty_name}]
+}
 
 ad_return_template
Index: openacs-4/packages/curriculum-central/www/uos-add.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/Attic/uos-add.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/uos-add.adp	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,6 @@
+<master>
+<property name="title">@page_title;noquote@</property>
+<property name="context">@context;noquote@</property>
+<property name="focus">uos.uos_code</property>
+
+<formtemplate id="uos"></formtemplate>
Index: openacs-4/packages/curriculum-central/www/uos-add.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/curriculum-central/www/Attic/uos-add.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/curriculum-central/www/uos-add.tcl	11 Dec 2005 07:47:41 -0000	1.1
@@ -0,0 +1,127 @@
+ad_page_contract {
+    Add a new UoS.
+
+    This page can only be accessed by a stream coordinator.  Stream
+    coordinators are the only users that can initiate the workflow
+    for creating Units of Study.  The stream coordinator creates the
+    Unit of Study, and assigns it to a unit coordinator to fill in the
+    unit outline.
+
+    @author Nick Carroll (nick.c@rroll.net)
+    @creation-date 2005-11-15
+    @cvs-id $Id: uos-add.tcl,v 1.1 2005/12/11 07:47:41 ncarroll Exp $
+} {
+    {return_url ""}
+}
+
+if { [empty_string_p $return_url] } {
+    set return_url "."
+}
+
+ad_require_permission [ad_conn package_id] create
+
+# User needs to be logged in here
+auth::require_login
+
+# Set some common variables
+set package_id [ad_conn package_id]
+set package_key [ad_conn package_key]
+set workflow_id [curriculum_central::uos::get_instance_workflow_id]
+set user_id [ad_conn user_id]
+
+set page_title "[_ curriculum-central.add_unit_of_study]"
+set context [list $page_title]
+
+# Create the form.
+# TODO: Fix up form.  Can use drop-down boxes for some of the fields.
+ad_form -name uos -cancel_url $return_url -form {
+    {uos_id:key(acs_object_id_seq)}
+
+    {uos_code:text
+	{label "UoS Code"}
+	{html {size 50}}
+    }
+    {uos_name:text
+	{label "UoS Name"}
+	{html {size 50}}
+    }
+    {credit_value:integer
+	{label "Credit Value"}
+	{html {size 50}}	
+    }
+    {semester:integer
+	{label "Semester Offering"}
+	{html {size 50}}
+    }
+    {online_course_content:text,optional
+	{label "Online Course Content"}
+	{html {size 50}}
+    }
+    {unit_coordinator_id:integer(select)
+	{label "Unit Coordinator"}
+	{options [curriculum_central::staff_get_options] }
+        {help_text "[_ curriculum-central.help_select_unit_coordinator]"}
+    }
+    {contact_hours:text
+	{label "Contact Hours"}
+	{html {size 50}}
+    }
+    {assessments:text
+	{label "Assessments"}
+	{html {size 50}}
+    }
+    {core_uos_for:text,optional
+	{label "Core UoS for"}
+	{html {size 50}}
+    }
+    {recommended_uos_for:text,optional
+	{label "Recommended UoS for"}
+	{html {size 50}}
+    }
+    {prerequisites:text,optional
+	{label "Prerequisites"}
+	{html {size 50}}
+    }
+    {objectives:text
+	{label "Aims and Objectives"}
+	{html {size 50}}
+    }
+    {outcomes:text
+	{label "Learning Outcomes"}
+	{html {size 50}}
+    }
+    {syllabus:richtext(richtext)
+	{label "Syllabus"}
+	{html {cols 60 rows 13}}
+    }
+    {return_url:text(hidden)
+	{value $return_url}
+    }
+} -new_data {
+    # TODO: Implement this proc.
+    curriculum_central::uos::new \
+	-uos_id $uos_id \
+	-package_id $package_id \
+	-user_id $user_id \
+	-uos_code $uos_code \
+	-uos_name $uos_name \
+	-credit_value $credit_value \
+	-semester $semester \
+	-online_course_content $online_course_content \
+	-unit_coordinator_id $unit_coordinator_id \
+	-contact_hours $contact_hours \
+	-assessments $assessments \
+	-core_uos_for $core_uos_for \
+	-recommended_uos_for $recommended_uos_for \
+	-prerequisites $prerequisites \
+	-objectives $objectives \
+	-outcomes $outcomes \
+	-syllabus [template::util::richtext::get_property contents $syllabus] \
+	-syllabus_format [template::util::richtext::get_property format $syllabus]
+
+} -after_submit {
+    ad_returnredirect $return_url
+    ad_script_abort
+}
+
+ad_return_template