Index: openacs-4/packages/lab-report-central/catalog/lab-report-central.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/catalog/lab-report-central.en_US.ISO-8859-1.xml,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lab-report-central/catalog/lab-report-central.en_US.ISO-8859-1.xml 30 Apr 2006 09:27:41 -0000 1.3 +++ openacs-4/packages/lab-report-central/catalog/lab-report-central.en_US.ISO-8859-1.xml 30 Apr 2006 12:01:30 -0000 1.4 @@ -6,6 +6,7 @@ <msg key="add_instructor_to_list">Add instructor to list</msg> <msg key="add_lab">Add Lab</msg> <msg key="add_section">Add Section</msg> + <msg key="add_student">Add Student</msg> <msg key="add_template">Add Template</msg> <msg key="add_template_to_list">Add template to list</msg> <msg key="admin">Admin</msg> @@ -15,9 +16,11 @@ <msg key="create_section">Create Section</msg> <msg key="create_template">Create Template</msg> <msg key="delete">Delete</msg> + <msg key="delete_section">Delete Section</msg> <msg key="description">Description</msg> <msg key="edit">Edit</msg> <msg key="edit_lab">Edit Lab</msg> + <msg key="edit_section">Edit Section</msg> <msg key="edit_template">Edit Template</msg> <msg key="help_enter_lab_description">Enter lab description.</msg> <msg key="help_enter_lab_end_date">Enter the last day of the lab.</msg> @@ -52,6 +55,7 @@ <msg key="report_templates">Report Templates</msg> <msg key="section">Section</msg> <msg key="sections">Sections</msg> + <msg key="students">Students</msg> <msg key="template">Template</msg> <msg key="template_sections">Template Sections</msg> <msg key="templates">Templates</msg> @@ -61,6 +65,8 @@ <msg key="view_report_templates">View Report Templates</msg> <msg key="want_to_delete_instructor">Continue with deleting the instructor?</msg> <msg key="want_to_delete_lab">Continue with deleting the lab?</msg> + <msg key="want_to_delete_section">Continue with deleting the last section?</msg> <msg key="want_to_delete_template">Continue with removing the report template?</msg> + <msg key="want_to_remove_student">Continue with removing student from the lab?</msg> <msg key="want_to_remove_template">Continue with removing report template from lab?</msg> </message_catalog> Index: openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-create.sql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-create.sql 30 Apr 2006 09:27:41 -0000 1.3 +++ openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-create.sql 30 Apr 2006 12:01:30 -0000 1.4 @@ -150,7 +150,18 @@ on delete cascade ); +create table lrc_lab_student_map ( + lab_id integer + constraint lrc_lab_student_map_lab_id_fk + references lrc_lab (lab_id) + on delete cascade, + user_id integer + constraint lrc_lab_student_map_user_id_fk + references users (user_id) + on delete cascade +); + -- -- Create functions -- Index: openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-drop.sql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-drop.sql 30 Apr 2006 09:27:41 -0000 1.3 +++ openacs-4/packages/lab-report-central/sql/postgresql/lab-report-central-drop.sql 30 Apr 2006 12:01:30 -0000 1.4 @@ -74,6 +74,7 @@ drop table lrc_template; drop table lrc_groups; drop table lrc_lab_template_map; +drop table lrc_lab_student_map; delete from acs_objects where object_type='lrc_lab'; delete from acs_objects where object_type='lrc_template'; Index: openacs-4/packages/lab-report-central/tcl/install-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/tcl/install-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report-central/tcl/install-procs.tcl 24 Apr 2006 11:27:04 -0000 1.1 +++ openacs-4/packages/lab-report-central/tcl/install-procs.tcl 30 Apr 2006 12:01:31 -0000 1.2 @@ -21,11 +21,10 @@ } ad_proc -private lab_report_central::install::create_instructor_group {} { - Creates the lab group types. + Creates the lab group instructor type. } { set magic_name "instructors" set group_id [group::new -group_name "[_ lab-report-central.instructor]"] db_dml insert {} } - Index: openacs-4/packages/lab-report-central/tcl/lab-report-central-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/tcl/lab-report-central-procs-postgresql.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lab-report-central/tcl/lab-report-central-procs-postgresql.xql 27 Apr 2006 04:34:33 -0000 1.2 +++ openacs-4/packages/lab-report-central/tcl/lab-report-central-procs-postgresql.xql 30 Apr 2006 12:01:31 -0000 1.3 @@ -85,4 +85,35 @@ WHERE t.template_id NOT IN (select template_id from lrc_lab_template_map where lab_id = :lab_id) </querytext> </fullquery> + + <fullquery name="lab_student_search"> + <querytext> + select distinct u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id + from cc_users u + where lower(coalesce(u.first_names || ' ', '') || + coalesce(u.last_name || ' ', '') || + u.email || ' ' || + coalesce(u.screen_name, '')) like lower('%'||:value||'%') + AND u.user_id NOT IN ( + SELECT user_id + FROM lrc_lab_student_map m + WHERE m.lab_id = $lab_id + ) + ORDER by name + </querytext> + </fullquery> + + <fullquery name="lab_report_central::unmapped_students_get_options.students"> + <querytext> + select distinct u.first_names || ' ' || u.last_name || ' (' || u.email || ')' as name, u.user_id + from cc_users u + WHERE u.user_id NOT IN ( + SELECT user_id + FROM lrc_lab_student_map m + WHERE m.lab_id = :lab_id + ) + ORDER by name + </querytext> + </fullquery> + </queryset> Index: openacs-4/packages/lab-report-central/tcl/lab-report-central-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/tcl/lab-report-central-procs.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lab-report-central/tcl/lab-report-central-procs.tcl 27 Apr 2006 04:34:33 -0000 1.2 +++ openacs-4/packages/lab-report-central/tcl/lab-report-central-procs.tcl 30 Apr 2006 12:01:31 -0000 1.3 @@ -47,3 +47,17 @@ return $templates_list } + +ad_proc lab_report_central::unmapped_students_get_options { + -lab_id +} { + Retrieves an options list of users that aren't mapped to the + given lab. + + @param lab_id Lab ID. +} { + set users_list [db_list_of_lists students {}] + set users_list [concat [list [list Search ":search:"]] $users_list] + + return $users_list +} Index: openacs-4/packages/lab-report-central/www/attach-student-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/Attic/attach-student-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report-central/www/attach-student-postgresql.xql 30 Apr 2006 12:01:31 -0000 1.1 @@ -0,0 +1,21 @@ +<?xml version="1.0"?> + +<queryset> + <rdbms><type>postgresql</type><version>7.4</version></rdbms> + + <fullquery name="lab_name"> + <querytext> + SELECT name + FROM lrc_lab + WHERE lab_id = :lab_id + </querytext> + </fullquery> + + <fullquery name="attach_student"> + <querytext> + INSERT INTO lrc_lab_student_map (lab_id, user_id) + VALUES (:lab_id, :student_id) + </querytext> + </fullquery> + +</queryset> Index: openacs-4/packages/lab-report-central/www/attach-student.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/Attic/attach-student.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report-central/www/attach-student.adp 30 Apr 2006 12:01:31 -0000 1.1 @@ -0,0 +1,6 @@ +<master src="resources/main-portal"> +<property name="title">@page_title;noquote@</property> +<property name="context">@context;noquote@</property> +<property name="focus">attach_student.name</property> + +<formtemplate id="attach_student"></formtemplate> Index: openacs-4/packages/lab-report-central/www/attach-student.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/Attic/attach-student.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report-central/www/attach-student.tcl 30 Apr 2006 12:01:31 -0000 1.1 @@ -0,0 +1,48 @@ +ad_page_contract { + Add a student to a lab. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-04-18 + @cvs-id $Id: attach-student.tcl,v 1.1 2006/04/30 12:01:31 ncarroll Exp $ +} { + lab_id:integer + return_url:optional +} + +auth::require_login + +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] +set peeraddr [ad_conn peeraddr] + +permission::require_permission -party_id $user_id -object_id $package_id \ + -privilege lab_report_central_admin + +if { ![info exists return_url] } { + set return_url [export_vars -url -base lab {lab_id}] +} + +set lab_name [db_string lab_name {} -default ""] + +set page_title [_ lab-report-central.add_student] +set context [list [list [export_vars -url -base lab {lab_id}] $lab_name] \ + $page_title] + +ad_form -name attach_student -cancel_url $return_url -form { + {lab_id:integer(hidden) {value $lab_id}} + {return_url:text(hidden) {value $return_url}} + {student_id:search + {result_datatype integer} + {label "[_ lab-report-central.student]" } + {help_text "[_ lab-report-central.help_select_student_to_attach]"} + {options "[lab_report_central::unmapped_students_get_options \ + -lab_id $lab_id]"} + {search_query {[db_map dbqd.lab-report-central.tcl.lab-report-central-procs.lab_student_search]}} + } +} -after_submit { + # Map student to lab. + db_dml attach_student {} + + ad_returnredirect $return_url + ad_script_abort +} Index: openacs-4/packages/lab-report-central/www/detach-student-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/detach-student-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report-central/www/detach-student-postgresql.xql 30 Apr 2006 12:01:31 -0000 1.1 @@ -0,0 +1,14 @@ +<?xml version="1.0"?> + +<queryset> + <rdbms><type>postgresql</type><version>7.4</version></rdbms> + + <fullquery name="detach_student"> + <querytext> + DELETE FROM lrc_lab_student_map + WHERE user_id = :student_id + AND lab_id = :lab_id + </querytext> + </fullquery> + +</queryset> Index: openacs-4/packages/lab-report-central/www/detach-student.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/detach-student.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report-central/www/detach-student.tcl 30 Apr 2006 12:01:31 -0000 1.1 @@ -0,0 +1,28 @@ +ad_page_contract { + Detaches the given student from the given lab. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-04-30 + @cvs-id $Id: detach-student.tcl,v 1.1 2006/04/30 12:01:31 ncarroll Exp $ +} { + lab_id:integer + student_id:integer + return_url:optional +} + +set user_id [ad_conn user_id] +set package_id [ad_conn package_id] + +permission::require_permission -party_id $user_id -object_id $package_id \ + -privilege lab_report_central_admin + +if { ![info exists return_url] } { + set return_url [export_vars -url -base lab {lab_id}] +} + +db_transaction { + db_dml detach_student {} +} + +ad_returnredirect $return_url +ad_script_abort Index: openacs-4/packages/lab-report-central/www/lab-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/lab-postgresql.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lab-report-central/www/lab-postgresql.xql 27 Apr 2006 04:34:34 -0000 1.2 +++ openacs-4/packages/lab-report-central/www/lab-postgresql.xql 30 Apr 2006 12:01:31 -0000 1.3 @@ -24,4 +24,12 @@ </querytext> </fullquery> + <fullquery name="select_students"> + <querytext> + SELECT u.user_id AS student_id, u.first_names, u.last_name, u.email + FROM cc_users u, lrc_lab_student_map m + WHERE u.user_id = m.user_id + AND m.lab_id = :lab_id + </querytext> + </fullquery> </queryset> Index: openacs-4/packages/lab-report-central/www/lab.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/lab.adp,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lab-report-central/www/lab.adp 27 Apr 2006 04:34:34 -0000 1.2 +++ openacs-4/packages/lab-report-central/www/lab.adp 30 Apr 2006 12:01:31 -0000 1.3 @@ -29,7 +29,7 @@ <h3>#lab-report-central.lab_report_templates#</h3> <div id="lrc-report-container"> - <if @create_p@> + <if @admin_p@> <ul> <li><a class="button" href="@create_url@">#lab-report-central.attach_template#</a></li> </ul> @@ -41,7 +41,7 @@ <span class="label">@rt.template_name@</span> <span class="options"> <a class="button" href="@rt.view_url@">#lab-report-central.view#</a> - <if @delete_p@><a class="button" href="@rt.delete_url@" onclick="return confirm('#lab-report-central.want_to_remove_template#')">#lab-report-central.remove#</a></if> + <if @admin_p@><a class="button" href="@rt.delete_url@" onclick="return confirm('#lab-report-central.want_to_remove_template#')">#lab-report-central.remove#</a></if> </span> <div class="spacer"></div> </li> @@ -52,3 +52,28 @@ <ul><li class="notice">#lab-report-central.no_lab_report_templates_added#</li></ul> </if> </div> + +<if @admin_p@> +<h3>#lab-report-central.students#</h3> +<div id="lrc-report-container"> + <ul> + <li><a class="button" href="@add_student_url@">#lab-report-central.add_student#</a></li> + </ul> + + <multiple name="student"> + <ul class="report"> + <li> + <span class="label">@student.first_names@ @student.last_name@ (@student.email@)</span> + <span class="options"> + <a class="button" href="@student.rem_student_url@" onclick="return confirm('#lab-report-central.want_to_remove_student#')">#lab-report-central.remove#</a> + </span> + <div class="spacer"></div> + </li> + </ul> + </multiple> + + <if @student:rowcount@ eq 0> + <ul><li class="notice">#lab-report-central.no_students_added#</li></ul> + </if> +</div> +</if> Index: openacs-4/packages/lab-report-central/www/lab.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/lab.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lab-report-central/www/lab.tcl 27 Apr 2006 04:51:00 -0000 1.3 +++ openacs-4/packages/lab-report-central/www/lab.tcl 30 Apr 2006 12:01:31 -0000 1.4 @@ -32,16 +32,14 @@ set create_url [export_vars -url -base attach-template { lab_id }] -set create_p [permission::permission_p -party_id $user_id \ +set admin_p [permission::permission_p -party_id $user_id \ -object_id $package_id \ - -privilege lab_report_central_admin_create] + -privilege lab_report_central_admin] -set delete_p [permission::permission_p -party_id $user_id \ - -object_id $package_id \ - -privilege lab_report_central_admin_delete] +set add_student_url [export_vars -url -base attach-student {lab_id}] -set modify_p [permission::permission_p -party_id $user_id \ - -object_id $package_id \ - -privilege lab_report_central_admin_modify] +db_multirow -extend {rem_student_url} student select_students {} { + set rem_student_url [export_vars -url -base detach-student {lab_id student_id}] +} ad_return_template Index: openacs-4/packages/lab-report-central/www/resources/lab-report-central.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report-central/www/resources/lab-report-central.css,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lab-report-central/www/resources/lab-report-central.css 30 Apr 2006 09:27:41 -0000 1.3 +++ openacs-4/packages/lab-report-central/www/resources/lab-report-central.css 30 Apr 2006 12:01:31 -0000 1.4 @@ -1,3 +1,9 @@ +/* Global styles */ +.spacer { + clear: both; +} + + /* Action Container */ #lrc-actions-container { margin: 0px auto; @@ -234,9 +240,3 @@ #lrc-section-container ul li.edit { text-align: right; } - - -/* Global styles */ -.spacer { - clear: both; -}