Index: openacs-4/packages/lorsm/lorsm.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/lorsm.info,v
diff -u -N -r1.5.2.2 -r1.5.2.3
--- openacs-4/packages/lorsm/lorsm.info 2 Feb 2005 16:13:27 -0000 1.5.2.2
+++ openacs-4/packages/lorsm/lorsm.info 27 May 2005 15:16:22 -0000 1.5.2.3
@@ -8,13 +8,13 @@
f
lorsm
-
+
Ernie Ghiglione
Application to manage the services from the Learning Object Repository.
- 2005-01-19
+ 2005-05-27
This application manages the services from the Learning Object Repository: upload courses, manage and create metadata, delete resources and courses.
-
+
Index: openacs-4/packages/lorsm/lib/user-lorsm.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/lib/user-lorsm.tcl,v
diff -u -N -r1.4.2.1 -r1.4.2.2
--- openacs-4/packages/lorsm/lib/user-lorsm.tcl 5 Jan 2005 17:01:50 -0000 1.4.2.1
+++ openacs-4/packages/lorsm/lib/user-lorsm.tcl 27 May 2005 15:16:22 -0000 1.4.2.2
@@ -17,7 +17,6 @@
#set package_id $list_of_packages_ids
-
template::list::create \
-name d_courses \
-multirow d_courses \
@@ -27,9 +26,9 @@
-elements {
course_name {
label "[_ lorsm.Course_Name_1]"
- display_col course_name
+ display_template {@d_courses.course_url;noquote@}
html { width 70% }
- link_url_eval {[site_node::get_url_from_object_id -object_id $lorsm_instance_id]delivery/?[export_vars man_id]}
+
link_html {title "[_ lorsm.Access_Course]"}
}
subject {
@@ -55,7 +54,7 @@
foreach package $package_id {
- db_multirow -extend { ims_md_id last_viewed total_item_count viewed_item_count viewed_percent} -append d_courses select_d_courses {
+ db_multirow -extend { ims_md_id last_viewed total_item_count viewed_item_count viewed_percent course_url } -append d_courses select_d_courses {
select
cp.man_id,
cp.course_name,
@@ -65,11 +64,14 @@
cp.folder_id,
acs.creation_user,
acs.creation_date,
+ pf.folder_name,
+ pf.format_name,
acs.context_id,
cpmc.community_id,
cpmc.lorsm_instance_id
from
- ims_cp_manifests cp, acs_objects acs, ims_cp_manifest_class cpmc
+ ims_cp_manifests cp, acs_objects acs, ims_cp_manifest_class cpmc,
+ lorsm_course_presentation_formats pf
where
cp.man_id = acs.object_id
and
@@ -79,9 +81,16 @@
cpmc.lorsm_instance_id = :package
and
cpmc.isenabled = 't'
+ and
+ pf.format_id = cp.course_presentation_format
order by acs.creation_date desc
} {
set ims_md_id $man_id
+ if { [string eq $format_name "default"] } {
+ set course_url "$course_name"
+ } else {
+ set course_url "$course_name"
+ }
# DEDS: these are expensive
# and for demo purposes only
db_0or1row get_last_viewed {
Index: openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql,v
diff -u -N -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql 5 Jan 2005 17:01:50 -0000 1.1.2.1
+++ openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql 27 May 2005 15:16:23 -0000 1.1.2.2
@@ -89,4 +89,22 @@
Multiplicity: One bookmark per course/class/student
';
+-- Course presentation formats
+
+create table lorsm_course_presentation_formats (
+ format_id integer
+ constraint lorsm_cpformats_pk
+ primary key,
+ format_pretty_name varchar(200),
+ format_name varchar(100),
+ folder_name varchar(100)
+);
+
+create index lorsm_cpformats__format_id_idx on lorsm_course_presentation_formats (format_id);
+
+comment on table lorsm_course_presentation_formats is '
+This table stores the available presentation formats for the courses. Its contains the pretty name
+for the format, an id, and the folder in packages/lorsm/www/ where the presentation format is stored.
+Currently just two presentation formats exists, delivery and delivery-wihout-index, which we store on creation';
+
\i lorsm-packages.sql
Index: openacs-4/packages/lorsm/sql/postgresql/upgrade/upgrade-0.6d2-0.6d3.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/sql/postgresql/upgrade/upgrade-0.6d2-0.6d3.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/lorsm/sql/postgresql/upgrade/upgrade-0.6d2-0.6d3.sql 27 May 2005 15:16:23 -0000 1.1.2.1
@@ -0,0 +1,105 @@
+--
+-- packages/lors/sql/postgresql/upgrade/upgrade-0.6d-0.7d.sql
+--
+-- @author jopezku@gmail.com
+-- @cvs-id $Id: upgrade-0.6d2-0.6d3.sql,v 1.1.2.1 2005/05/27 15:16:23 josee Exp $
+--
+
+-- Adds the option to show a course with different presentation formats
+--
+
+-- Course presentation formats
+
+create table lorsm_course_presentation_formats (
+ format_id integer
+ constraint lorsm_cpformats_pk
+ primary key,
+ format_pretty_name varchar(200),
+ format_name varchar(100),
+ folder_name varchar(100)
+);
+
+create index lorsm_cpformats__format_id_idx on lorsm_course_presentation_formats (format_id);
+
+comment on table lorsm_course_presentation_formats is '
+This table stores the available presentation formats for the courses. Its contains the pretty name
+for the format, an id, and the folder in packages/lorsm/www/ where the presentation format is stored.
+Currently just tree presentation formats exists, delivery, delivery-wihout-index and delivery-bottom-bar,
+which we store on creation';
+
+--Change presentation_id to format_id.
+alter table ims_cp_manifests add column course_presentation_format integer;
+
+
+-- Include new field in creation function
+create or replace function ims_manifest__new (
+ integer, -- manifest_id
+ varchar, -- course_name
+ varchar, -- identifier
+ varchar, -- version
+ varchar, -- orgs_default
+ boolean, -- hasmetadata
+ integer, -- parent_man_id
+ boolean, -- isscorm
+ integer, -- folder_id
+ integer, -- fs_package_id
+ timestamp with time zone, -- creation_date
+ integer, -- creation_user
+ varchar, -- creation_ip
+ integer, -- package_id
+ integer, -- community_id
+ varchar, -- class_key
+ integer -- course_presentation_format
+)
+returns integer as '
+declare
+ p_man_id alias for $1;
+ p_course_name alias for $2;
+ p_identifier alias for $3;
+ p_version alias for $4;
+ p_orgs_default alias for $5;
+ p_hasmetadata alias for $6;
+ p_parent_man_id alias for $7;
+ p_isscorm alias for $8;
+ p_folder_id alias for $9;
+ p_fs_package_id alias for $10;
+ p_creation_date alias for $11;
+ p_creation_user alias for $12;
+ p_creation_ip alias for $13;
+ p_package_id alias for $14;
+ p_community_id alias for $15;
+ p_class_key alias for $16;
+ p_course_presentation_format alias for $17;
+
+ v_man_id integer;
+begin
+ v_man_id := acs_object__new (
+ p_man_id, -- object_id
+ ''ims_manifest'', -- object_type
+ p_creation_date, -- creation_date
+ p_creation_user, -- creation_user
+ p_creation_ip, -- creation_ip
+ p_package_id, -- context_id
+ ''t'' -- security_inherit_p
+ );
+
+ insert into ims_cp_manifests
+ (man_id, course_name, identifier, version, orgs_default, hasmetadata, parent_man_id, isscorm, folder_id, fs_package_id, course_presentation_format)
+ values
+ (v_man_id, p_course_name, p_identifier, p_version, p_orgs_default, p_hasmetadata, p_parent_man_id, p_isscorm, p_folder_id, p_fs_package_id, p_course_presentation_format);
+
+ -- now we add it to the manifest_class relation table
+
+ insert into ims_cp_manifest_class
+ (man_id, lorsm_instance_id, community_id, class_key, isenabled, istrackable)
+ values
+ (v_man_id, p_package_id, p_community_id, p_class_key, ''t'', ''f'');
+
+
+ return v_man_id;
+end;
+' language 'plpgsql';
+
+
+
+
Index: openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl,v
diff -u -N -r1.2.2.2 -r1.2.2.3
--- openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl 22 Apr 2005 10:20:40 -0000 1.2.2.2
+++ openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl 27 May 2005 15:16:23 -0000 1.2.2.3
@@ -52,5 +52,20 @@
}
+ set pretty_name "[_ lorsm.Classic_Style]"
+ # Insert default values for the course presentation formats
+ db_dml create_default_format {
+ insert into lorsm_course_presentation_formats values (-1,:pretty_name,'default','delivery')
+ }
+
+ set pretty_name "[_ lorsm.lt_Without_LORSM_Index_S]"
+ db_dml create_no_index_format {
+ insert into lorsm_course_presentation_formats values (-2,:pretty_name,'without_index','delivery-no-index')
+ }
+
+ set pretty_name "[_ lorsm.lt_With_Bottom_Navigatio]"
+ db_dml create_no_index_format {
+ insert into lorsm_course_presentation_formats values (-3,:pretty_name,'bottom_navigation_bar','delivery-bottom-bar')
+ }
}
Index: openacs-4/packages/lorsm/tcl/lorsm-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/tcl/lorsm-procs.tcl,v
diff -u -N -r1.4.2.1 -r1.4.2.2
--- openacs-4/packages/lorsm/tcl/lorsm-procs.tcl 5 Jan 2005 17:01:51 -0000 1.4.2.1
+++ openacs-4/packages/lorsm/tcl/lorsm-procs.tcl 27 May 2005 15:16:23 -0000 1.4.2.2
@@ -334,7 +334,113 @@
}
+ad_proc -public get_item_list { man_id user_id } {
+ set item_list [list]
+ db_foreach organizations {
+ select
+ org.org_id,
+ org.title as org_title,
+ org.hasmetadata,
+ tree_level(o.tree_sortkey) as indent
+ from
+ ims_cp_organizations org, acs_objects o
+ where
+ org.org_id = o.object_id
+ and
+ man_id = :man_id
+ order by
+ org_id
+ } {
+ db_foreach sql {
+ SELECT
+ (tree_level(tree_sortkey) - :indent) as indent,
+ i.item_id,
+ i.title as item_title
+ FROM
+ acs_objects o, ims_cp_items i
+ WHERE
+ o.object_type = 'ims_item'
+ AND
+ i.org_id = :org_id
+ AND
+ o.object_id = i.item_id
+ AND
+ EXISTS
+ (select 1
+ from acs_object_party_privilege_map p
+ where p.object_id = i.item_id
+ and p.party_id = :user_id
+ and p.privilege = 'read')
+
+ ORDER BY
+ o.object_id, tree_sortkey
+ } {
+ lappend item_list $item_id
+ }
+ }
+ return $item_list
+}
+
+ad_proc -public record_view { item_id man_id } {
+
+ set viewer_id [ad_conn user_id]
+
+ set views [views::record_view -object_id $item_id -viewer_id $viewer_id]
+
+ set revision_id [item::get_best_revision $item_id]
+
+ db_1row manifest_info "select fs_package_id, folder_id from ims_cp_manifests where man_id = :man_id"
+ set content_root [fs::get_root_folder -package_id $fs_package_id]
+
+ set url2 "[db_string select_folder_key {select key from fs_folders where folder_id = :folder_id}]/"
+
+ set href [db_string href "select href from ims_cp_resources r, ims_cp_items_to_resources ir where ir.item_id = :item_id and ir.res_id = r.res_id" -default ""]
+
+ db_1row item_info "select title from ims_cp_items where item_id = :item_id"
+
+ set fs_item_id [fs::get_item_id -folder_id $folder_id -name $href]
+
+ # If no fs_item_id, this item is probably a folder
+ # Else deliver the page
+ if { ![empty_string_p $fs_item_id] } {
+
+ set fs_revision_id [item::get_best_revision $fs_item_id]
+ set fs_item_mime [item::get_mime_info $fs_revision_id mime_info]
+
+
+ if { [string equal -length 4 "text" $mime_info(mime_type)] } {
+
+ set imsitem_id $item_id
+
+ # lorsm::set_content_root content_root
+ lorsm::set_ims_item_id $item_id
+
+ # we use nsv variables to set the delivery environment this is a
+ # temporary solution until we find something a bit better
+
+ if {[nsv_exists delivery_vars [ad_conn session_id]]} {
+ nsv_unset delivery_vars [ad_conn session_id]
+ }
+
+ nsv_set delivery_vars [ad_conn session_id] [list]
+
+ nsv_lappend delivery_vars [ad_conn session_id] $content_root
+
+ }
+ } else {
+ lorsm::set_ims_item_id $item_id
+
+ # We have no content, so wipe item_id from the lorsm namespace
+ # This fixes a strange bug if you click a 'no content' menu item
+ # repeatedly and different content appears!
+ if { [info exists lorsm::item_id] } {
+ set lorsm::item_id ""
+ }
+ }
+
+}
+
ad_proc -public init { urlvar rootvar {content_root ""} {template_root ""} {context "public"} {rev_id ""} {content_type ""} } {
upvar $urlvar url $rootvar root_path
Index: openacs-4/packages/lorsm/templates/lorsm-default.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/templates/lorsm-default.adp,v
diff -u -N -r1.2.2.1 -r1.2.2.2
--- openacs-4/packages/lorsm/templates/lorsm-default.adp 5 Jan 2005 17:01:51 -0000 1.2.2.1
+++ openacs-4/packages/lorsm/templates/lorsm-default.adp 27 May 2005 15:16:23 -0000 1.2.2.2
@@ -1,6 +1,6 @@
+
@title;noquote@
-