Index: openacs-4/packages/lab-report/catalog/lab-report.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/catalog/lab-report.en_US.ISO-8859-1.xml,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/catalog/lab-report.en_US.ISO-8859-1.xml 11 May 2006 11:11:36 -0000 1.1 +++ openacs-4/packages/lab-report/catalog/lab-report.en_US.ISO-8859-1.xml 12 May 2006 01:34:34 -0000 1.2 @@ -5,12 +5,15 @@ Author Author already exists. You cannot add another author. Author Group + Content Description Edit for + Enter content for this section of your lab report. Select an author from the list. Lab reports for Labs + New Overview This application requires an author to be set in order to write lab reports. Please inform your site administrator that an author needs to be set for this application. Reports for Index: openacs-4/packages/lab-report/sql/postgresql/lab-report-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/sql/postgresql/lab-report-create.sql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/sql/postgresql/lab-report-create.sql 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/sql/postgresql/lab-report-create.sql 12 May 2006 01:34:34 -0000 1.2 @@ -21,6 +21,35 @@ -- +-- Define object types. +-- +select acs_object_type__create_type ( + 'lr_report', + '#lab-report.report#', + '#lab-report.reports#', + 'acs_object', + 'lr_report', + 'report_id', + null, + 'f', + null, + null +); + +select acs_object_type__create_type ( + 'lr_section_content', + '#lab-report.section_content#', + '#lab-report.section_content#', + 'acs_object', + 'lr_section_content', + 'content_id', + null, + 'f', + null, + null +); + +-- -- Create tables -- create table lr_author ( @@ -36,7 +65,7 @@ create table lr_author_group ( group_id integer - constraint lr_author_group_grou_id_fk + constraint lr_author_group_group_id_fk references groups (group_id) constraint lr_author_group_pk primary key, @@ -45,3 +74,160 @@ references apm_packages (package_id) on delete cascade ); + +create table lr_report ( + report_id integer + constraint lr_report_pk + primary key, + template_id integer + constraint lr_report_template_id_fk + references lrc_template (template_id) + on delete cascade, + author_id integer + constraint lr_report_author_id_fk + references users (user_id) + on delete cascade, + package_id integer + constraint lr_report_package_id_fk + references apm_packages (package_id) + on delete cascade +); + +create table lr_section_content ( + content_id integer + constraint lr_section_content_pk + primary key, + report_id integer + constraint lr_section_content_report_id_fk + references lr_report (report_id) + on delete cascade, + section_id integer + constraint lr_section_content_section_id_fk + references lrc_section (section_id) + on delete cascade, + content text +); + + +-- +-- Create functions +-- +select define_function_args('lr_report__new','report_id,template_id,author_id,package_id,creation_date;now,creation_user,creation_ip,context_id'); + +create function lr_report__new ( + integer, + integer, + integer, + integer, + timestamptz, + integer, + varchar, + integer +) returns integer as ' +declare + p_report_id alias for $1; -- default null + p_template_id alias for $2; + p_author_id alias for $3; + p_package_id alias for $4; + p_creation_date alias for $5; -- default now() + p_creation_user alias for $6; -- default null + p_creation_ip alias for $7; -- default null + p_context_id alias for $8; -- default null + + v_report_id lr_report.report_id%TYPE; + v_author_group_id integer; +begin + + v_report_id := acs_object__new ( + p_report_id, + ''lr_report'', + p_creation_date, + p_creation_user, + p_creation_ip, + p_context_id + ); + + INSERT INTO lr_report ( + report_id, + template_id, + author_id, + package_id + ) VALUES ( + v_report_id, + p_template_id, + p_author_id, + p_package_id + ); + + -- Grant permission to authors on this object. + PERFORM acs_permission__grant_permission( + v_report_id, + p_author_id, + ''lab_report_author'' + ); + + return v_report_id; + +end;' language 'plpgsql'; + + +select define_function_args('lr_section_content__new','content_id,report_id,section_id,content,author_id,package_id,creation_date;now,creation_user,creation_ip,context_id'); + +create function lr_section_content__new ( + integer, + integer, + integer, + text, + integer, + integer, + timestamptz, + integer, + varchar, + integer +) returns integer as ' +declare + p_content_id alias for $1; -- default null + p_report_id alias for $2; + p_section_id alias for $3; + p_content alias for $4; + p_author_id alias for $5; + p_package_id alias for $6; + p_creation_date alias for $7; -- default now() + p_creation_user alias for $8; -- default null + p_creation_ip alias for $9; -- default null + p_context_id alias for $10; -- default null + + v_content_id lr_section_content.content_id%TYPE; +begin + + v_content_id := acs_object__new ( + p_content_id, + ''lr_section_content'', + p_creation_date, + p_creation_user, + p_creation_ip, + p_context_id + ); + + INSERT INTO lr_section_content ( + content_id, + report_id, + section_id, + content + ) VALUES ( + v_content_id, + p_report_id, + p_section_id, + p_content + ); + + -- Grant permission to authors on this object. + PERFORM acs_permission__grant_permission( + v_content_id, + p_author_id, + ''lab_report_author'' + ); + + return v_content_id; + +end;' language 'plpgsql'; Index: openacs-4/packages/lab-report/www/edit-section-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/edit-section-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/edit-section-postgresql.xql 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,25 @@ + + + + postgresql7.4 + + + + + UPDATE lr_section_content + SET content = :content + WHERE content_id = :content_id + + + + + + UPDATE acs_objects + SET modifying_user = :modifying_user, + modifying_ip = :modifying_ip, + package_id = :package_id + WHERE object_id = :content_id + + + + Index: openacs-4/packages/lab-report/www/edit-section.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/edit-section.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/edit-section.adp 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,10 @@ + +@title;noquote@ +@context;noquote@ +[#lab-report.admin#] + + + + + + \ No newline at end of file Index: openacs-4/packages/lab-report/www/edit-section.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/edit-section.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/edit-section.tcl 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,75 @@ +ad_page_contract { + Displays the contents for a specific lab report section. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-05-10 + @cvs-id $Id: edit-section.tcl,v 1.1 2006/05/12 01:34:34 ncarroll Exp $ +} { + report_id:integer + lab_id:integer + template_id:integer + section_id:integer + content_id:integer,optional +} + +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +set author_p [permission::permission_p -party_id $user_id \ + -object_id $package_id \ + -privilege "lab_report_author"] + +# Otherwise retrieve list of lab reports for the designated author. +set author_id [lab_report::get_author_id -package_id $package_id] + +# Retrieve lab details. +db_1row lab_details {} + +# Retrieve template details. +db_1row template_details {} + +# Retrieve section details. +db_1row section_details {} +set section_desc [template::util::richtext::get_property \ + html_value $section_desc] + + +# Create some URLs +set edit_url [export_vars -url -base edit-section {lab_id section_id}] +set lab_url [export_vars -url -base view-lab {lab_id}] +set overview_url [export_vars -url \ + -base view-report { report_id lab_id template_id }] + +set title "$section_name" +set context [list [list $lab_url $lab_name] \ + [list $overview_url $template_name] $title] + +set return_url [export_vars -url -base view-section {report_id lab_id template_id section_id}] + +ad_form -name section -cancel_url $return_url -form { + {content_id:key(acs_object_id_seq)} + {report_id:integer(hidden) {value $report_id}} + {lab_id:integer(hidden) {value $lab_id}} + {template_id:integer(hidden) {value $template_id}} + {section_id:integer(hidden) {value $section_id}} + {author_id:integer(hidden) {value $author_id}} + {content:richtext(richtext),optional + {label "[_ lab-report.content]"} + {help_text "[_ lab-report.help_enter_section_content]"} + {html {cols 48 rows 20}} + {nospell} + } +} -select_query { + SELECT content FROM lr_section_content WHERE content_id = :content_id +} -edit_data { + set modifying_user [ad_conn user_id] + set modifying_ip [ad_conn peeraddr] + + db_dml section_update {} + db_dml object_update {} +} -after_submit { + ad_returnredirect $return_url + ad_script_abort +} + +ad_return_template Index: openacs-4/packages/lab-report/www/new-report-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/new-report-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/new-report-postgresql.xql 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,16 @@ + + + + postgresql7.4 + + + + SELECT report_id + FROM lr_report + WHERE template_id = :template_id + AND author_id = :author_id + AND package_id = :package_id + + + + Index: openacs-4/packages/lab-report/www/new-report.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/new-report.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/new-report.tcl 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,32 @@ +ad_page_contract { + Creates a new report if one doesn't exist for the template and author. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-05-10 + @cvs-id $Id: new-report.tcl,v 1.1 2006/05/12 01:34:34 ncarroll Exp $ +} { + lab_id + template_id +} + +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +permission::require_permission -party_id $user_id \ + -object_id $package_id \ + -privilege "lab_report_author" + +# Otherwise retrieve list of lab reports for the designated author. +set author_id [lab_report::get_author_id -package_id $package_id] + +if { ![db_0or1row report_exists {}] } { + set report_id [package_instantiate_object \ + -var_list [list [list package_id $package_id] \ + [list template_id $template_id] \ + [list author_id $author_id]] \ + lr_report] +} + +# Redirect to view-report page. +ad_returnredirect [export_vars -url \ + -base view-report {report_id lab_id template_id}] Index: openacs-4/packages/lab-report/www/new-section-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/new-section-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/new-section-postgresql.xql 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,15 @@ + + + + postgresql7.4 + + + + SELECT content_id + FROM lr_section_content + WHERE report_id = :report_id + AND section_id = :section_id + + + + Index: openacs-4/packages/lab-report/www/new-section.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/new-section.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/new-section.tcl 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,37 @@ +ad_page_contract { + Creates a new section if one doesn't exist for the template and author. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-05-10 + @cvs-id $Id: new-section.tcl,v 1.1 2006/05/12 01:34:34 ncarroll Exp $ +} { + report_id + lab_id + section_id + template_id +} + +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +permission::require_permission -party_id $user_id \ + -object_id $package_id \ + -privilege "lab_report_author" + +# Otherwise retrieve list of lab reports for the designated author. +set author_id [lab_report::get_author_id -package_id $package_id] + +# If content doesn't exist for the section, then instantiate a new +# section content object. +if { ![db_0or1row section_content_exists {}] } { + set content_id [package_instantiate_object \ + -var_list [list [list report_id $report_id] \ + [list section_id $section_id] \ + [list author_id $author_id]] \ + lr_section_content] +} + +# Redirect to edit-section page. +ad_returnredirect [export_vars -url \ + -base edit-section \ + {report_id lab_id section_id template_id content_id}] Index: openacs-4/packages/lab-report/www/view-lab-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-lab-postgresql.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-lab-postgresql.xql 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-lab-postgresql.xql 12 May 2006 01:34:34 -0000 1.2 @@ -16,9 +16,11 @@ - SELECT t.template_id, t.name, + SELECT r.report_id, t.template_id, t.name, t.description AS template_desc - FROM lrc_template t, lrc_lab_template_map m + FROM lrc_template t + LEFT OUTER JOIN lr_report r ON (r.template_id = t.template_id), + lrc_lab_template_map m WHERE m.lab_id = :lab_id AND m.template_id = t.template_id Index: openacs-4/packages/lab-report/www/view-lab.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-lab.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-lab.adp 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-lab.adp 12 May 2006 01:34:34 -0000 1.2 @@ -12,7 +12,14 @@ Index: openacs-4/packages/lab-report/www/view-lab.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-lab.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-lab.tcl 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-lab.tcl 12 May 2006 01:34:34 -0000 1.2 @@ -20,11 +20,18 @@ db_1row lab_details {} -db_multirow -extend {view_url} report select_reports {} { - set view_url [export_vars -url -base view-report {lab_id template_id}] +db_multirow -extend {view_url new_url report_created_p} report select_reports {} { + set view_url [export_vars -url -base view-report \ + {lab_id template_id report_id}] + set new_url [export_vars -url -base new-report {lab_id template_id}] + + set report_created_p 1 + if {$report_id == ""} { + set report_created_p 0 + } } -set title "[_ lab-report.lab_reports_for] $lab_name" +set title "$lab_name" set context [list $title] ad_return_template Index: openacs-4/packages/lab-report/www/view-report-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-report-postgresql.xql,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-report-postgresql.xql 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-report-postgresql.xql 12 May 2006 01:34:34 -0000 1.2 @@ -24,10 +24,12 @@ - SELECT section_id, name AS section_name, description AS section_desc - FROM lrc_section - WHERE template_id = :template_id - ORDER BY section_id + SELECT s.section_id, s.name AS section_name, + s.description AS section_desc, c.content + FROM lrc_section s LEFT OUTER JOIN lr_section_content c + ON (s.section_id = c.section_id) + WHERE s.template_id = :template_id + ORDER BY s.section_id Index: openacs-4/packages/lab-report/www/view-report.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-report.adp,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-report.adp 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-report.adp 12 May 2006 01:34:34 -0000 1.2 @@ -1,6 +1,6 @@ -@title@ -@context@ +@title;noquote@ +@context;noquote@ [#lab-report.admin#] @@ -15,7 +15,7 @@ @@ -28,6 +28,7 @@
  • @sections.section_name@

    + @sections.content;noquote@
  • Index: openacs-4/packages/lab-report/www/view-report.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-report.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/view-report.tcl 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/view-report.tcl 12 May 2006 01:34:34 -0000 1.2 @@ -5,6 +5,7 @@ @creation-date 2006-05-10 @cvs-id $Id$ } { + report_id lab_id template_id } @@ -27,9 +28,16 @@ set template_desc [template::util::richtext::get_property \ html_value $template_desc] -db_multirow sections select_sections {} +db_multirow -extend {section_url} sections select_sections {} { + set section_url [export_vars -url \ + -base view-section {report_id lab_id template_id section_id}] + set content [template::util::richtext::get_property html_value $content] +} -set title "$template_name [_ lab-report.for] $lab_name" -set context [list $title] +set lab_url [export_vars -url -base view-lab {lab_id}] +set overview_url [export_vars -url -base view-report { lab_id template_id }]] +set title "$template_name" +set context [list [list $lab_url $lab_name] $title] + ad_return_template Index: openacs-4/packages/lab-report/www/view-section-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-section-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/view-section-postgresql.xql 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,59 @@ + + + + postgresql7.4 + + + + SELECT l.lab_id, l.name AS lab_name, l.instructor_id, + to_char(l.start_date, 'YYYY') AS year + FROM lrc_lab l, lrc_lab_student_map s + WHERE s.lab_id = l.lab_id + AND l.lab_id = :lab_id + AND s.user_id = :author_id + + + + + + SELECT t.name AS template_name + FROM lrc_template t + WHERE t.template_id = :template_id + + + + + + SELECT name AS section_name, description AS section_desc + FROM lrc_section + WHERE section_id = :section_id + + + + + + SELECT section_id AS nav_section_id, name AS nav_section_name + FROM lrc_section + WHERE template_id = :template_id + ORDER BY section_id + + + + + + SELECT content_id + FROM lr_section_content + WHERE report_id = :report_id + AND section_id = :section_id + + + + + + SELECT content_id, content from lr_section_content + WHERE report_id = :report_id + AND section_id = :section_id + + + + Index: openacs-4/packages/lab-report/www/view-section.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-section.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/view-section.adp 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,52 @@ + +@title;noquote@ +@context;noquote@ +[#lab-report.admin#] + + + + + +
    + + + + + +
    + +
    +
    Index: openacs-4/packages/lab-report/www/view-section.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/view-section.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lab-report/www/view-section.tcl 12 May 2006 01:34:34 -0000 1.1 @@ -0,0 +1,62 @@ +ad_page_contract { + Displays the contents for a specific lab report section. + + @author Nick Carroll (nick.c@rroll.net) + @creation-date 2006-05-10 + @cvs-id $Id: view-section.tcl,v 1.1 2006/05/12 01:34:34 ncarroll Exp $ +} { + report_id + lab_id + template_id + section_id +} + +set package_id [ad_conn package_id] +set user_id [ad_conn user_id] + +set author_p [permission::permission_p -party_id $user_id \ + -object_id $package_id \ + -privilege "lab_report_author"] + +# Otherwise retrieve list of lab reports for the designated author. +set author_id [lab_report::get_author_id -package_id $package_id] + +# Retrieve lab details. +db_1row lab_details {} + +# Retrieve template details. +db_1row template_details {} + +# Retrieve section details. +db_1row section_details {} +set section_desc [template::util::richtext::get_property \ + html_value $section_desc] + +db_multirow -extend {section_url} navs select_navs {} { + set section_url [export_vars -url \ + -base view-section \ + {report_id lab_id template_id \ + {section_id $nav_section_id}}] +} + +# Create some URLs +set new_url [export_vars -url -base new-section {report_id lab_id section_id template_id}] +set lab_url [export_vars -url -base view-lab {lab_id}] +set overview_url [export_vars -url \ + -base view-report { report_id lab_id template_id }] + +set content_created_p 0 +if { [db_0or1row section_content_exists {}] } { + set content_created_p 1 + + db_1row select_content {} + set edit_url [export_vars -url -base edit-section {report_id lab_id section_id template_id content_id}] + + set content [template::util::richtext::get_property html_value $content] +} + +set title "$section_name" +set context [list [list $lab_url $lab_name] \ + [list $overview_url $template_name] $title] + +ad_return_template Index: openacs-4/packages/lab-report/www/resources/lab-report.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lab-report/www/resources/lab-report.css,v diff -u -r1.1 -r1.2 --- openacs-4/packages/lab-report/www/resources/lab-report.css 11 May 2006 11:11:37 -0000 1.1 +++ openacs-4/packages/lab-report/www/resources/lab-report.css 12 May 2006 01:34:34 -0000 1.2 @@ -235,6 +235,10 @@ border: 1px solid #000; } +div#report-container table tr td.content ul li.content a.edit { + float: right; +} + div#report-container h3 { color: #686868; -} \ No newline at end of file +}