Index: openacs-4/packages/lors/lors.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/lors.info,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lors/lors.info 17 May 2005 16:35:10 -0000 1.7 +++ openacs-4/packages/lors/lors.info 13 Jun 2005 15:10:40 -0000 1.7.2.1 @@ -7,16 +7,16 @@ <initial-install-p>f</initial-install-p> <singleton-p>t</singleton-p> - <version name="0.5d" url="http://openacs.org/repository/download/apm/LORS-05d.apm"> + <version name="0.6d4" url="http://openacs.org/repository/download/apm/LORS-06d4.apm"> <owner url="mailto:ernieg@mm.st">Ernie Ghiglione</owner> - <summary>IMS Content Packaging and Medata Services. -Implementation of IMS CP and MD for .LRN </summary> + <summary>IMS Content Packaging and Medata Services. Implementation of IMS CP and MD for .LRN </summary> <release-date>2004-08-06</release-date> <description format="text/html">This is a service and library to manage IMS Content Packaging and Metadata. From version 0.4d onward it supports SCORM and Blackboard imports</description> <license>GPL</license> <license_url>http://www.gnu.org/copyleft/gpl.html</license_url> <maturity>1</maturity> - <provides url="lors" version="0.5d"/> + <provides url="lors" version="0.6d4"/> + <requires url="dotlrn" version="2.1.0b1"/> <requires url="file-storage" version="5.1.0d"/> <callbacks> Index: openacs-4/packages/lors/sql/postgresql/lors-imscp-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/sql/postgresql/lors-imscp-create.sql,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lors/sql/postgresql/lors-imscp-create.sql 17 May 2005 16:35:10 -0000 1.7 +++ openacs-4/packages/lors/sql/postgresql/lors-imscp-create.sql 13 Jun 2005 15:10:41 -0000 1.7.2.1 @@ -96,7 +96,20 @@ ); +create or replace function ims_manifest__get_title (integer) +returns varchar as ' +declare + get_title__man_id alias for $1; + get_title__course_name varchar(200); +begin + return course_name + from ims_cp_manifests + where man_id = get_title__man_id; +end;' language 'plpgsql'; + + + -- Organizations create table ims_cp_organizations ( org_id integer @@ -133,7 +146,17 @@ 'ims_organization__get_title' -- name_method ); +create or replace function ims_organization__get_title (integer) +returns varchar as ' +declare + get_title__org_id alias for $1; + get_title__identifier varchar(200); +begin + return identifier + from ims_cp_organizations + where org_id = get_title__org_id; +end;' language 'plpgsql'; -- Items @@ -164,7 +187,8 @@ timelimitaction varchar(1000), datafromlms varchar(200), masteryscore varchar(255), - isshared boolean default 'f' not null + isshared boolean default 'f' not null, + sort_order integer ); -- create index for ims_cp_items @@ -183,8 +207,19 @@ 'ims_item__get_title' -- name_method ); +create or replace function ims_item__get_title (integer) +returns varchar as ' +declare + get_title__ims_item_id alias for $1; + get_title__item_title varchar(200); +begin + return item_title + from ims_cp_items + where ims_item_id = get_title__ims_item_id; +end;' language 'plpgsql'; + -- Resources create table ims_cp_resources ( @@ -222,7 +257,19 @@ 'ims_resource__get_title' -- name_method ); +create or replace function ims_resource__get_title (integer) +returns varchar as ' +declare + get_title__res_id alias for $1; + get_title__identifier varchar(200); +begin + return identifier + from ims_cp_resources + where res_id = get_title__res_id; +end;' language 'plpgsql'; + + -- An item can have reference to one of more resources -- therefore we need a table that takes care of this multiple -- relationship @@ -266,7 +313,7 @@ create table ims_cp_files ( file_id integer constraint ims_cp_files_file_if_fk - references cr_items(item_id) + references cr_revisions(revision_id) on delete cascade, res_id integer constraint ims_cp_file_res_id_fk @@ -298,8 +345,8 @@ constraint ims_cp_manifest_class__class_key_fk references dotlrn_community_types(community_type), isenabled boolean default 't' not null, - istrackable boolean default 'f' not null, - primary key (man_id, lorsm_instance_id) + istrackable boolean default 'f' not null + -- primary key (man_id, lorsm_instance_id) ); comment on table ims_cp_manifest_class is ' Index: openacs-4/packages/lors/sql/postgresql/lors-imscp-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/sql/postgresql/lors-imscp-drop.sql,v diff -u -r1.5 -r1.5.2.1 --- openacs-4/packages/lors/sql/postgresql/lors-imscp-drop.sql 17 May 2005 16:35:10 -0000 1.5 +++ openacs-4/packages/lors/sql/postgresql/lors-imscp-drop.sql 13 Jun 2005 15:10:41 -0000 1.5.2.1 @@ -19,5 +19,5 @@ drop table ims_cp_items; drop table ims_cp_organizations; drop table ims_cp_manifests; +drop table lors_available_presentation_formats; - Index: openacs-4/packages/lors/sql/postgresql/upgrade/upgrade-0.6d-0.6d3.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/sql/postgresql/upgrade/upgrade-0.6d-0.6d3.sql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors/sql/postgresql/upgrade/upgrade-0.6d-0.6d3.sql 25 Apr 2005 08:12:42 -0000 1.1 +++ openacs-4/packages/lors/sql/postgresql/upgrade/upgrade-0.6d-0.6d3.sql 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -28,7 +28,8 @@ 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'; +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 rename column presentation_id to course_presentation_format; Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lors/sql/postgresql/upgrade/upgrade-0.6d3-0.6d4.sql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lors/tcl/lors-callback-procs.tcl'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/lors/tcl/lors-imscp-blackboard5-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/tcl/lors-imscp-blackboard5-procs.tcl,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/lors/tcl/lors-imscp-blackboard5-procs.tcl 17 May 2005 16:35:11 -0000 1.4 +++ openacs-4/packages/lors/tcl/lors-imscp-blackboard5-procs.tcl 13 Jun 2005 15:10:41 -0000 1.4.2.1 @@ -165,7 +165,7 @@ @author Ernie Ghiglione (ErnieG@mm.st) } { - set docx [dom parse [read [open $file]]] + set docx [dom parse [::tDOM::xmlReadFile $file]] set usersnode [$docx documentElement] set userlist [list] Index: openacs-4/packages/lors/tcl/lors-imscp-blackboard6-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/tcl/lors-imscp-blackboard6-procs.tcl,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/lors/tcl/lors-imscp-blackboard6-procs.tcl 17 May 2005 16:35:11 -0000 1.4 +++ openacs-4/packages/lors/tcl/lors-imscp-blackboard6-procs.tcl 13 Jun 2005 15:10:41 -0000 1.4.2.1 @@ -207,12 +207,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - # open xml file - set doc [dom parse [read [open $file]]] + set doc [dom parse [::tDOM::xmlReadFile $file]] # coursetoc set coursetoc [$doc documentElement] @@ -247,12 +243,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - # open xml file - set doc [dom parse [read [open $file]]] + set doc [dom parse [::tDOM::xmlReadFile $file]] # content set content [$doc documentElement] @@ -328,10 +320,6 @@ @option filename directory and filename where we are putting the file @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - # get directory info set dirname [file dirname $filename] @@ -389,12 +377,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - # open xml file - set doc [dom parse [read [open $file]]] + set doc [dom parse [::tDOM::xmlReadFile $file]] # content set announcement [$doc documentElement] @@ -552,12 +536,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - # open xml file - set doc [dom parse [read [open $file]]] + set doc [dom parse [::tDOM::xmlReadFile $file]] # content set forum [$doc documentElement] @@ -594,11 +574,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - # set utf-8 system encoding - encoding system utf-8 - # open manifest file with tDOM - set doc [dom parse [read [open $tmp_dir/$file]]] + set doc [dom parse [::tDOM::xmlReadFile $tmp_dir/$file]] # gets the manifest tree set manifest [$doc documentElement] # we add the xml namespace for dotLRN @@ -613,7 +590,7 @@ if {[empty_string_p $metadata]} { set filex res00001.dat - set docx [dom parse [read [open $tmp_dir/$filex]]] + set docx [dom parse [::tDOM::xmlReadFile $tmp_dir/$filex]] # gets BB's course info set course [$docx documentElement] @@ -669,18 +646,8 @@ @option file filename @author Ernie Ghiglione (ErnieG@mm.st) } { - - # set utf-8 system encoding - encoding system utf-8 - - # search for manifest file - set file $file - - # set utf-8 system encoding - encoding system utf-8 - # open xml file - set doc [dom parse [read [open $tmp_dir/$file]]] + set doc [dom parse [::tDOM::xmlReadFile $tmp_dir/$file]] # gets the manifest tree set manifest [$doc documentElement] @@ -898,12 +865,8 @@ @author Ernie Ghiglione (ErnieG@mm.st) } { ## Opens imsmanifest.xml - - # set utf-8 system encoding - encoding system utf-8 - # open manifest file with tDOM - set doc [dom parse [read [open $tmp_dir/$file]]] + set doc [dom parse [::tDOM::xmlReadFile $tmp_dir/$file]] # gets the manifest tree set manifest [$doc documentElement] Index: openacs-4/packages/lors/tcl/lors-imscp-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/tcl/lors-imscp-procs.tcl,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lors/tcl/lors-imscp-procs.tcl 17 May 2005 16:35:11 -0000 1.7 +++ openacs-4/packages/lors/tcl/lors-imscp-procs.tcl 13 Jun 2005 15:10:41 -0000 1.7.2.1 @@ -213,6 +213,7 @@ @option community_id Community ID @option user_id user that adds the category. [ad_conn user_id] used by default. @option creation_ip ip-address of the user that adds the category. [ad_conn peeraddr] used by default. + @option course_presentation_format course presentation format ID @author Ernie Ghiglione (ErnieG@mm.st) } { Index: openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl 17 May 2005 16:35:11 -0000 1.6 +++ openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl 13 Jun 2005 15:10:41 -0000 1.6.2.1 @@ -140,7 +140,8 @@ set prefix [[$tree child all imsmd:record] prefix] set lom [$tree child all $var_lom] } elseif { ![empty_string_p [$tree child all adlcp:location]] } { - set lom [[dom parse [read [open $dir/[[$tree child all adlcp:location] text]]]] documentElement] + set doc [dom parse [::tDOM::xmlReadFile $dir/[[$tree child all adlcp:location] text]]] + set lom [$doc documentElement] set prefix [$lom prefix] } else { set lom 0 Index: openacs-4/packages/lors-central/lors-central.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/lors-central.info,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/lors-central.info 17 May 2005 16:07:47 -0000 1.1 +++ openacs-4/packages/lors-central/lors-central.info 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -8,16 +8,16 @@ <singleton-p>t</singleton-p> <auto-mount>lors-central</auto-mount> - <version name="0.1a3" url="http://openacs.org/repository/download/apm/lors-central-0.1a3.apm"> + <version name="0.1a4" url="http://openacs.org/repository/download/apm/lors-central-0.1a4.apm"> <owner url="mailto:miguelmarin@viaro.net">Miguel Marin</owner> <owner url="mailto:info@viaro.net">Viaro Netwoks (www.viaro.net) </owner> <summary>Application to manage the services from the Learning Object Repository. </summary> <release-date>2005-03-14</release-date> <description format="text/html">This application manages the services from the Learning Object Repository: upload master courses, manage and create metadata, add resources and files to existent courses, creates new versions of LO's. </description> - <provides url="lors-central" version="0.1a3"/> + <provides url="lors-central" version="0.1a4"/> <requires url="clipboard" version="0.1d"/> - <requires url="lors" version="0.4d"/> + <requires url="lors" version="0.6d4"/> <requires url="lorsm" version="0.6d2"/> <requires url="views" version="0.1d"/> @@ -26,7 +26,8 @@ <callback type="after-upgrade" proc="lors_central::apm_callback::after_upgrade"/> </callbacks> <parameters> - <!-- No version parameters --> + <parameter datatype="number" min_n_values="1" max_n_values="1" name="ManageLorsCentralP" default="0" description="Restricts the users who can acces and modify courses in lors-central package. 1 - Only the swa, 0 - everybody. Defaults to 0"/> + <parameter datatype="number" min_n_values="1" max_n_values="1" name="UploadUsingLorsCentralP" default="0" description="Set to 1 if you want to upload courses using lors-central package instead of lorsm. You will need to have installed lors-central for this parameter to work."/> </parameters> </version> Index: openacs-4/packages/lors-central/catalog/lors-central.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/catalog/lors-central.en_US.ISO-8859-1.xml,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/catalog/lors-central.en_US.ISO-8859-1.xml 17 May 2005 16:21:16 -0000 1.1 +++ openacs-4/packages/lors-central/catalog/lors-central.en_US.ISO-8859-1.xml 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -1,32 +1,39 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<message_catalog package_key="lors-central" package_version="0.1a2" locale="en_US" charset="ISO-8859-1"> +<message_catalog package_key="lors-central" package_version="0.1a4" locale="en_US" charset="ISO-8859-1"> <msg key="action_not">Action Not Allowed</msg> <msg key="add">Add Child</msg> <msg key="add_an_existent">Add an existent Learning Object</msg> <msg key="add_file">Add File</msg> <msg key="add_from_clip">Add From Clipboard:</msg> + <msg key="add_mat">Add Material</msg> <msg key="add_object">Add Object</msg> <msg key="add_this">Add This Item</msg> <msg key="Add_this_learn">Add this learning object to your clipboard</msg> <msg key="Add_to_clip">Add to Clipboard</msg> <msg key="add_to_course">Add to this course</msg> <msg key="add_to_resource">Add to this resource</msg> + <msg key="admin">Admin</msg> <msg key="All_views">All Views</msg> <msg key="All_views_of">All Views of this object</msg> + <msg key="and_in_the">and in the following Communities:</msg> <msg key="and_is_in">And is in use in the following courses</msg> <msg key="assoc">Associations:</msg> <msg key="associate">Associate</msg> <msg key="associate_drop">Associate/Drop</msg> - <msg key="associate_to">Associate to dotLRN Class</msg> + <msg key="associate_to">Associate to dotLRN Class or Community</msg> <msg key="associate_to_class">Associate to this class</msg> <msg key="associated">Already Associated</msg> <msg key="author">Author:</msg> + <msg key="back">Back</msg> <msg key="choose_the_file">Choose the file to upload</msg> + <msg key="class_memberships">Class Memberships</msg> <msg key="class_name">Class Name</msg> <msg key="Classes_using">Classes Using this Course</msg> <msg key="click_for_prev">Click For Preview</msg> <msg key="clip_this_res">Clip This Resource</msg> + <msg key="com_memberships">Community Memberships</msg> + <msg key="community_name">Community Name</msg> <msg key="course_name">Course Name</msg> <msg key="course_versions">Course Versions</msg> <msg key="courses">Courses</msg> @@ -36,13 +43,19 @@ <msg key="description">Description</msg> <msg key="disabled">Disabled</msg> <msg key="dotlrn_classes">dotLRN classes</msg> + <msg key="dotlrn_communities">dotLRN Communities</msg> <msg key="drop">Drop</msg> <msg key="drop_association">Drop association to this class</msg> <msg key="Edit">Edit</msg> <msg key="edit_object">Edit %name%</msg> + <msg key="email">E-mail</msg> <msg key="enabled">Enabled</msg> <msg key="everywhere">Everywhere</msg> <msg key="filename">Filename</msg> + <msg key="grant">Grant</msg> + <msg key="grant_per">Grant Permission to this users</msg> + <msg key="grant_permissions">Grant Permissions</msg> + <msg key="grant_rev">Grant / Revoke</msg> <msg key="help_text">Use the "Browse..." button to locate your file, then click "Open"</msg> <msg key="here">Here</msg> <msg key="hide">Hide</msg> @@ -54,13 +67,18 @@ <msg key="live">Live</msg> <msg key="live_classes">Live Classes?</msg> <msg key="lo_files">Learning Object Files</msg> + <msg key="lors_admin">Lors Central Admin</msg> + <msg key="lors_central_package">Lors Central Package</msg> <msg key="make">Make</msg> <msg key="make_live">Make Live Everywhere</msg> <msg key="make_this_live">Make this live</msg> <msg key="man_id">Manifest ID</msg> + <msg key="manage">Manage</msg> + <msg key="memberships">Memberships</msg> <msg key="new_file">Add New File</msg> <msg key="new_object">New Learning Object</msg> <msg key="no">No</msg> + <msg key="not_allowed">Not Allowed</msg> <msg key="of">of</msg> <msg key="of_title">of %name%</msg> <msg key="one_course">One Course</msg> @@ -70,8 +88,14 @@ <msg key="One_learning">One Learning Object</msg> <msg key="please_type">Please type a keyword</msg> <msg key="preview">Preview</msg> + <msg key="priv_all_memb">priviliges to all members</msg> + <msg key="privilege_on">Privilege on</msg> + <msg key="revoke">Revoke</msg> + <msg key="revoke_per">Revoke Permission to this users</msg> <msg key="search">Search</msg> <msg key="search_courses">Search Courses</msg> + <msg key="search_users">Search for users first names, last name or email:</msg> + <msg key="search_users_to">Search users to grant/revoke privileges</msg> <msg key="set_to">Set to</msg> <msg key="shared">Shared?</msg> <msg key="shared_items">Shared Items In The Repository</msg> @@ -92,6 +116,8 @@ <msg key="update_versions">Update Versions</msg> <msg key="upload_a_new">Upload a New File or....</msg> <msg key="Usage">Usage</msg> + <msg key="user_to_grant">users to grant privileges that match that search</msg> + <msg key="username">User Name</msg> <msg key="version">Version</msg> <msg key="version_number">Ver. #</msg> <msg key="versions">Versions</msg> Index: openacs-4/packages/lors-central/catalog/lors-central.es_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/catalog/lors-central.es_ES.ISO-8859-1.xml,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/catalog/lors-central.es_ES.ISO-8859-1.xml 17 May 2005 16:21:16 -0000 1.1 +++ openacs-4/packages/lors-central/catalog/lors-central.es_ES.ISO-8859-1.xml 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -12,8 +12,10 @@ <msg key="Add_to_clip">Agregar al sujetapapeles</msg> <msg key="add_to_course">Agregar a este curso</msg> <msg key="add_to_resource">Agregar a este recurso</msg> + <msg key="admin">Administrar</msg> <msg key="All_views">Todas las vistas</msg> <msg key="All_views_of">Todas las vistas de este objeto</msg> + <msg key="and_in_the">y en las siguientes comunidades:</msg> <msg key="and_is_in">Y esta siendo utilizado en los siguientes cursos</msg> <msg key="assoc">Asociaciones:</msg> <msg key="associate">Asociar</msg> @@ -23,26 +25,35 @@ <msg key="associated">Already Asociado</msg> <msg key="author">Autor:</msg> <msg key="choose_the_file">Escoja el archivo que desea subir</msg> + <msg key="class_memberships">Membresias con Clases</msg> <msg key="class_name">Nombre de la Clase</msg> <msg key="Classes_using">Clases que utilizan este curso</msg> <msg key="click_for_prev">Click para previsualizar</msg> <msg key="clip_this_res">Sujetar este Recurso</msg> + <msg key="com_memberships">Membresias con Comunidades</msg> + <msg key="community_name">Nombre de la comunidad</msg> <msg key="course_name">Nombre del Curso</msg> <msg key="course_versions">Versiones del Curso</msg> <msg key="courses">Cursos</msg> - <msg key="create_your_new">Crear el nuevo archivo</msg> + <msg key="create_your_new">Crear el nuevo archivo o ...</msg> <msg key="current">Actual</msg> <msg key="dep_name">Nombre del Departamento</msg> <msg key="description">Descripcion</msg> <msg key="disabled">Deshabilitado</msg> <msg key="dotlrn_classes">classes de dotLRN</msg> + <msg key="dotlrn_communities">comunidades de dotLRN/msg> <msg key="drop">Quitar</msg> <msg key="drop_association">Quitar la asociacion de esta clase</msg> <msg key="Edit">Editar</msg> <msg key="edit_object">Editar %name%</msg> + <msg key="email">Correo Electronico</msg> <msg key="enabled">Habilitado</msg> <msg key="everywhere">En todos lados</msg> <msg key="filename">Nombre del archivo</msg> + <msg key="grant">Otorgar</msg> + <msg key="grant_per">Otorgar permisos a este usuario</msg> + <msg key="grant_permissions">Otorgar permisos</msg> + <msg key="grant_rev">Otorgar / Quitar</msg> <msg key="help_text">Utilizar el boton de "Browse..." para localizar el archivo, luego presionar"Open"</msg> <msg key="here">Aqui</msg> <msg key="hide">Ocultar</msg> @@ -54,13 +65,16 @@ <msg key="live">Actual</msg> <msg key="live_classes">Clases donde es el actual?</msg> <msg key="lo_files">Archivos del Objeto de Aprendizaje</msg> + <msg key="lors_admin">Administracion de Lors Central</msg> <msg key="make">Hacer</msg> <msg key="make_live">Cambiar a actual en todas las clases</msg> <msg key="make_this_live">Poner actual en esta clase</msg> <msg key="man_id">ID del Manifesto</msg> + <msg key="memberships">Membresias</msg> <msg key="new_file">Agregar Nuevo Archivo</msg> <msg key="new_object">Nuevo Objeto de Aprendisaje</msg> <msg key="no">No</msg> + <msg key="not_allowed">no otorgado</msg> <msg key="of">de</msg> <msg key="of_title">de %name%</msg> <msg key="one_course">Un Curso</msg> @@ -70,8 +84,14 @@ <msg key="One_learning">Un Objeto de Aprendizaje</msg> <msg key="please_type">Por favor ingrese una palabra</msg> <msg key="preview">Previsualizacion</msg> + <msg key="priv_all_memb">privilegios a todos los miembros</msg> + <msg key="privilege_on">Privilegios sobre</msg> + <msg key="revoke">Quitar</msg> + <msg key="revoke_per">Quitar privilegios a estos usuarios</msg> <msg key="search">Buscar</msg> <msg key="search_courses">Buscar Cursos</msg> + <msg key="search_users">Buscar por el nombre, apellido o correo electronico del usuario:</msg> + <msg key="search_users_to">Buscar usarios a Otorgar/Quitar privilegios</msg> <msg key="set_to">Establecer a</msg <msg key="shared">Compartido?</msg> <msg key="shared_items">Objetos Compartidos en el repositorio</msg>> @@ -92,6 +112,8 @@ <msg key="update_versions">Actualizar Versiones</msg> <msg key="upload_a_new">Subir un Nuevo Archivo o....</msg> <msg key="Usage">Utilizacion</msg> + <msg key="user_to_grant">hay usarios a otorgar privilefios que coincidan con esa busqueda</msg> + <msg key="username">Nombre del Usuario</msg> <msg key="version">Version</msg> <msg key="version_number">Ver. #</msg> <msg key="versions">Versiones</msg> Index: openacs-4/packages/lors-central/catalog/lors-central.es_GT.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/catalog/lors-central.es_GT.ISO-8859-1.xml,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/catalog/lors-central.es_GT.ISO-8859-1.xml 17 May 2005 16:21:16 -0000 1.1 +++ openacs-4/packages/lors-central/catalog/lors-central.es_GT.ISO-8859-1.xml 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -12,8 +12,10 @@ <msg key="Add_to_clip">Agregar al sujetapapeles</msg> <msg key="add_to_course">Agregar a este curso</msg> <msg key="add_to_resource">Agregar a este recurso</msg> + <msg key="admin">Administrar</msg> <msg key="All_views">Todas las vistas</msg> <msg key="All_views_of">Todas las vistas de este objeto</msg> + <msg key="and_in_the">y en las siguientes comunidades:</msg> <msg key="and_is_in">Y esta siendo utilizado en los siguientes cursos</msg> <msg key="assoc">Asociaciones:</msg> <msg key="associate">Asociar</msg> @@ -23,26 +25,35 @@ <msg key="associated">Already Asociado</msg> <msg key="author">Autor:</msg> <msg key="choose_the_file">Escoja el archivo que desea subir</msg> + <msg key="class_memberships">Membresias con Clases</msg> <msg key="class_name">Nombre de la Clase</msg> <msg key="Classes_using">Clases que utilizan este curso</msg> <msg key="click_for_prev">Click para previsualizar</msg> <msg key="clip_this_res">Sujetar este Recurso</msg> + <msg key="com_memberships">Membresias con Comunidades</msg> + <msg key="community_name">Nombre de la comunidad</msg> <msg key="course_name">Nombre del Curso</msg> <msg key="course_versions">Versiones del Curso</msg> <msg key="courses">Cursos</msg> - <msg key="create_your_new">Crear el nuevo archivo</msg> + <msg key="create_your_new">Crear el nuevo archivo o ...</msg> <msg key="current">Actual</msg> <msg key="dep_name">Nombre del Departamento</msg> <msg key="description">Descripcion</msg> <msg key="disabled">Deshabilitado</msg> <msg key="dotlrn_classes">classes de dotLRN</msg> + <msg key="dotlrn_communities">comunidades de dotLRN/msg> <msg key="drop">Quitar</msg> <msg key="drop_association">Quitar la asociacion de esta clase</msg> <msg key="Edit">Editar</msg> <msg key="edit_object">Editar %name%</msg> + <msg key="email">Correo Electronico</msg> <msg key="enabled">Habilitado</msg> <msg key="everywhere">En todos lados</msg> <msg key="filename">Nombre del archivo</msg> + <msg key="grant">Otorgar</msg> + <msg key="grant_per">Otorgar permisos a este usuario</msg> + <msg key="grant_permissions">Otorgar permisos</msg> + <msg key="grant_rev">Otorgar / Quitar</msg> <msg key="help_text">Utilizar el boton de "Browse..." para localizar el archivo, luego presionar"Open"</msg> <msg key="here">Aqui</msg> <msg key="hide">Ocultar</msg> @@ -54,13 +65,16 @@ <msg key="live">Actual</msg> <msg key="live_classes">Clases donde es el actual?</msg> <msg key="lo_files">Archivos del Objeto de Aprendizaje</msg> + <msg key="lors_admin">Administracion de Lors Central</msg> <msg key="make">Hacer</msg> <msg key="make_live">Cambiar a actual en todas las clases</msg> <msg key="make_this_live">Poner actual en esta clase</msg> <msg key="man_id">ID del Manifesto</msg> + <msg key="memberships">Membresias</msg> <msg key="new_file">Agregar Nuevo Archivo</msg> <msg key="new_object">Nuevo Objeto de Aprendisaje</msg> <msg key="no">No</msg> + <msg key="not_allowed">no otorgado</msg> <msg key="of">de</msg> <msg key="of_title">de %name%</msg> <msg key="one_course">Un Curso</msg> @@ -70,8 +84,14 @@ <msg key="One_learning">Un Objeto de Aprendizaje</msg> <msg key="please_type">Por favor ingrese una palabra</msg> <msg key="preview">Previsualizacion</msg> + <msg key="priv_all_memb">privilegios a todos los miembros</msg> + <msg key="privilege_on">Privilegios sobre</msg> + <msg key="revoke">Quitar</msg> + <msg key="revoke_per">Quitar privilegios a estos usuarios</msg> <msg key="search">Buscar</msg> <msg key="search_courses">Buscar Cursos</msg> + <msg key="search_users">Buscar por el nombre, apellido o correo electronico del usuario:</msg> + <msg key="search_users_to">Buscar usarios a Otorgar/Quitar privilegios</msg> <msg key="set_to">Establecer a</msg <msg key="shared">Compartido?</msg> <msg key="shared_items">Objetos Compartidos en el repositorio</msg>> @@ -92,6 +112,8 @@ <msg key="update_versions">Actualizar Versiones</msg> <msg key="upload_a_new">Subir un Nuevo Archivo o....</msg> <msg key="Usage">Utilizacion</msg> + <msg key="user_to_grant">hay usarios a otorgar privilefios que coincidan con esa busqueda</msg> + <msg key="username">Nombre del Usuario</msg> <msg key="version">Version</msg> <msg key="version_number">Ver. #</msg> <msg key="versions">Versiones</msg> Index: openacs-4/packages/lors-central/sql/postgresql/lors-central-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/sql/postgresql/lors-central-create.sql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/sql/postgresql/lors-central-create.sql 17 May 2005 16:21:17 -0000 1.1 +++ openacs-4/packages/lors-central/sql/postgresql/lors-central-create.sql 13 Jun 2005 15:10:41 -0000 1.1.2.1 @@ -1,8 +1,3 @@ -ALTER TABLE ims_cp_manifest_class DROP CONSTRAINT ims_cp_manifest_class_pkey; -ALTER TABLE ims_cp_items ADD sort_order integer; -ALTER TABLE ims_cp_files DROP CONSTRAINT ims_cp_files_file_if_fk; -ALTER TABLE ims_cp_files ADD CONSTRAINT ims_cp_files_file_if_fk FOREIGN KEY (file_id) REFERENCES cr_revisions(revision_id) ON DELETE CASCADE; - create table ims_cp_items_map ( man_id int constraint ims_cp_items_map_man_id_fk references ims_cp_manifests (man_id), Index: openacs-4/packages/lors-central/tcl/apm-callbacks-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/tcl/apm-callbacks-procs.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/tcl/apm-callbacks-procs.tcl 17 May 2005 16:21:18 -0000 1.1 +++ openacs-4/packages/lors-central/tcl/apm-callbacks-procs.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -86,5 +86,10 @@ 0.1a2 0.1a3 { lors_central::apm_callback::package_install } + 0.1a3 0.1a4 { + apm_parameter_register "ManageLorsCentralP" "Restricts the users who can acces and modify courses in lors-central package. 1 - Only the swa, 0 - everybody. Defaults to 0" "lors-central" "0" "number" + + apm_parameter_register "UploadUsingLorsCentralP" "Set to 1 if you want to upload courses using lors-central package instead of lorsm. You will need to have installed lors-central for this parameter to work." "lors-central" "0" "number" + } } -} \ No newline at end of file +} Index: openacs-4/packages/lors-central/tcl/lors-central-install-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/tcl/lors-central-install-procs.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/tcl/lors-central-install-procs.tcl 17 May 2005 16:21:18 -0000 1.1 +++ openacs-4/packages/lors-central/tcl/lors-central-install-procs.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -95,3 +95,19 @@ # Calling apm callback proc for notifications lors_central::apm_callback::package_install } + +ad_proc -private lors_central::install::package_uninstall {} { + + Uninstall lors-central + +} { + set folder_id [lors_central::get_root_folder_id] + content::folder::delete -folder_id $folder_id -cascade_p "t" + set folder_id [lors_central::get_root_organizations_folder_id] + content::folder::delete -folder_id $folder_id -cascade_p "t" + set folder_id [lors_central::get_root_resources_folder_id] + content::folder::delete -folder_id $folder_id -cascade_p "t" + set folder_id [lors_central::get_root_manifest_folder_id] + content::folder::delete -folder_id $folder_id -cascade_p "t" + set folder_id [lors_central::get_root_items_folder_id] +} Index: openacs-4/packages/lors-central/tcl/lors-central-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/tcl/lors-central-procs.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/tcl/lors-central-procs.tcl 17 May 2005 16:21:18 -0000 1.1 +++ openacs-4/packages/lors-central/tcl/lors-central-procs.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -8,6 +8,14 @@ namespace eval lors_central {} +ad_proc -private lors_central::owner { + -user_id:required + -object_id:required +} { + Returns 1 if user_id is the creator of the object_id, 0 otherwise +} { + return [db_string get_creation_user { } -default 0] +} ad_proc -private lors_central::get_ims_item_id_or_res_id { {-ims_item_id ""} @@ -23,14 +31,68 @@ } } -ad_proc -private lors_central::is_swa { +ad_proc -private lors_central::check_permissions { + {-object_id ""} + {-check_inst ""} } { - Check if the user (default to logged in user) has site_wide_admin privileges + Checks several privileges for user_id, default to logged user over the system. + + @object_id Send this if you want to check if user_id has permissions over this object_id. + @check_inst Set it to "t" if you want to check if the user_id that watch's this page is an dotlrn + instructor. } { - if { ![acs_user::site_wide_admin_p] } { - ad_returnredirect "not-allowed" + if { ![info exist user_id] } { + set user_id [ad_conn user_id] + } + set package_id [ad_conn package_id] + + # Get the number specified in the parameter, this parameter tell if + # only the swa can manage lors-central or any one else + set sec_level [parameter::get -parameter "ManageLorsCentralP"] + + if { $sec_level } { + if { ![acs_user::site_wide_admin_p] } { + ad_return_complaint 1 "<b>[_ lors-central.we_are_sorry]</b>" + ad_script_abort + } else { + return + } + } else { + if { ![empty_string_p $check_inst] } { + if { ![lors_central::check_inst -user_id $user_id] } { + ad_return_complaint 1 "<b>[_ lors-central.we_are_sorry]</b>" + ad_script_abort + } + } + if { ![empty_string_p $object_id] } { + permission::require_permission -party_id $user_id -object_id $object_id -privilege "admin" + } + } + return +} + +ad_proc -private lors_central::check_inst { + -user_id:required + {-community_id ""} +} { + Checks if user id has instructor or admin role in @community_id@ or any community_id, returns 1 if it does, + 0 otherwise +} { + if { [acs_user::site_wide_admin_p] } { + return 1 ad_script_abort } + if { ![empty_string_p $community_id] } { + set extra_query "and community_id = $community_id" + } else { + set extra_query "" + } + set count [db_string check_inst { } -default 0] + if { $count > 0 } { + return 1 + } else { + return 0 + } } ad_proc -private lors_central::set_sort_order { @@ -88,27 +150,33 @@ ad_proc -private lors_central::get_root_folder_id { } { - Returns the folder_id of the folder with the name "LORS Root Folder" + Returns the folder_id of the folder with the name "LORSM Root Folder" } { return [db_string get_folder_id_from_name { } ] } +ad_proc -private lors_central::get_root_organizations_folder_id { } { + Returns the folder_id of the folder with the name "LORSM Organizations Folder" +} { + return [db_string get_folder_id_from_name { } ] +} + ad_proc -private lors_central::get_root_resources_folder_id { } { - Returns the folder_id of the folder with the name "LORS Resources Folder" + Returns the folder_id of the folder with the name "LORSM Resources Folder" } { return [db_string get_folder_id_from_name { } ] } ad_proc -private lors_central::get_root_manifest_folder_id { } { - Returns the folder_id of the folder with the name "LORS Manifest Folder" + Returns the folder_id of the folder with the name "LORSM Manifest Folder" } { return [db_string get_folder_id_from_name { } ] } ad_proc -private lors_central::get_root_items_folder_id { } { - Returns the folder_id of the folder with the name "LORS Items Folder" + Returns the folder_id of the folder with the name "LORSM Items Folder" } { return [db_string get_folder_id_from_name { } ] } @@ -267,14 +335,19 @@ ad_proc -private lors_central::relation_between { - -item_id:required + {-item_id ""} -community_id:required + {-man_id ""} } { Returns the 1 if there is an association between a dotlrn class or community - and the item_id, 0 otherwise. + and the item_id, 0 otherwise, you should provide either man_id or item_id @man_id@ The manifest id of the course + @item_id@ The item_id that has all manifests as revisions @community_id@ The class_id or community_id of dotlrn } { + if { ![empty_string_p $man_id] } { + set item_id [lors_central::get_item_id -revision_id $man_id] + } return [db_string get_relation { } -default 0] } Index: openacs-4/packages/lors-central/tcl/lors-central-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/tcl/lors-central-procs.xql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/tcl/lors-central-procs.xql 17 May 2005 16:21:18 -0000 1.1 +++ openacs-4/packages/lors-central/tcl/lors-central-procs.xql 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -1,7 +1,31 @@ <?xml version="1.0"?> <queryset> +<fullquery name="lors_central::owner.get_creation_user"> + <querytext> + select + 1 + from + acs_objects + where + creation_user = :user_id and + object_id = :object_id + </querytext> +</fullquery> +<fullquery name="lors_central::check_inst.check_inst"> + <querytext> + select + count(user_id) + from + dotlrn_member_rels_full + where + user_id = :user_id and + ( role = 'admin' or role = 'instructor' ) + $extra_query + </querytext> +</fullquery> + <fullquery name="lors_central::get_ims_item_id_or_res_id.get_res_id"> <querytext> select @@ -238,6 +262,18 @@ </querytext> </fullquery> +<fullquery name="lors_central::get_root_organizations_folder_id.get_folder_id_from_name"> + <querytext> + select + folder_id + from + cr_folders + where + label = 'LORSM Organizations Folder' + </querytext> +</fullquery> + + <fullquery name="lors_central::get_root_resources_folder_id.get_folder_id_from_name"> <querytext> select Index: openacs-4/packages/lors-central/www/add-exist-item.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/add-exist-item.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/add-exist-item.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/add-exist-item.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,8 +11,8 @@ item_man_id:notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set the_ims_item_id $ims_item_id set user_id [ad_conn user_id] Index: openacs-4/packages/lors-central/www/add-lo.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/add-lo.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/add-lo.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/add-lo.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -13,8 +13,8 @@ set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set new_lo_link "man_id=$man_id&org_id=$org_id&parent=$parent_item" set page_title [_ lors-central.add_an_existent] Index: openacs-4/packages/lors-central/www/change-lo-version.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/change-lo-version.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/change-lo-version.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/change-lo-version.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -12,8 +12,8 @@ live_hide_p:notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { ![info exist name] } { set name [db_string get_name { select item_title from ims_cp_items where ims_item_id = :ims_item_id }] Index: openacs-4/packages/lors-central/www/change-one-lo-version.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/change-one-lo-version.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/change-one-lo-version.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/change-one-lo-version.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -10,8 +10,8 @@ objects_value:multiple } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions # object_id: A list of communities ids # object_value: The version number to set the revision Index: openacs-4/packages/lors-central/www/change-one-version.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/change-one-version.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/change-one-version.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/change-one-version.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -14,8 +14,8 @@ } } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions # Validation of Range set i 0 Index: openacs-4/packages/lors-central/www/course-add-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-add-2.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-add-2.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-add-2.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -26,8 +26,8 @@ } } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions # To support versions if { ![info exist man_id] } { Index: openacs-4/packages/lors-central/www/course-add-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-add-3.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-add-3.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-add-3.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -27,13 +27,13 @@ } } -# Checking swa privilege over lors-central -lors_central::is_swa - #check permission set user_id [ad_conn user_id] -# ad_require_permission $folder_id admin +# Checking privilege over lors-central +lors_central::check_permissions + + # Display progress bar ad_progress_bar_begin \ -title "[_ lorsm.Uploading_course]" \ @@ -316,6 +316,7 @@ ns_write "[_ lorsm.lt_Granting_permissions__1 [list course_name $course_name]]<br>" # PERMISSIONS FOR MANIFEST and learning objects + permission::grant -party_id $user_id -object_id $man_id -privilege admin # set up in the same way as permissions for the file storage # objects. As we want to maintain consistency btw the Index: openacs-4/packages/lors-central/www/course-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-add.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-add.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-add.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -13,8 +13,8 @@ set user_id [ad_conn user_id] set community_id [dotlrn_community::get_community_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { ![info exists man_id] } { set man_id "" Index: openacs-4/packages/lors-central/www/course-admin.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-admin.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-admin.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-admin.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -8,7 +8,7 @@ } # Checking swa privilege over lors-central -lors_central::is_swa +lors_central::check_permissions set title "[_ lorsm.lt_Manage_Courses_in_Rep]" Index: openacs-4/packages/lors-central/www/course-associate.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-associate.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-associate.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-associate.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -10,9 +10,16 @@ { return_url "" } } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions +# Display progress bar +ad_progress_bar_begin \ + -title "[_ lors-central.associate_to]" \ + -message_1 "[_ lors-central.associate_to]" \ + -message_2 "[_ lorsm.lt_We_will_continue_auto]" + + set man_id [content::item::get_live_revision -item_id $item_id] foreach community_id $object_id { @@ -34,8 +41,8 @@ if { [empty_string_p $return_url] } { - ad_returnredirect "course-dotlrn-assoc?item_id=$item_id" + ad_progress_bar_end -url "course-dotlrn-assoc?item_id=$item_id" } else { - ad_returnredirect $return_url + ad_progress_bar_end -url $return_url } Index: openacs-4/packages/lors-central/www/course-association-drop.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-association-drop.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-association-drop.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-association-drop.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -9,10 +9,17 @@ { return_url "" } } -# Checking swa privilege over lors-central -lors_central::is_swa +# Display progress bar +ad_progress_bar_begin \ + -title "[_ lors-central.associate_to]" \ + -message_1 "[_ lors-central.associate_to]" \ + -message_2 "[_ lorsm.lt_We_will_continue_auto]" +# Checking privilege over lors-central +lors_central::check_permissions + + set man_list [db_list_of_lists get_man_ids { }] foreach community_id $object_id { lors_central::drop_relation -item_id $item_id -community_id $community_id @@ -25,8 +32,8 @@ } if { [empty_string_p $return_url] } { - ad_returnredirect "course-dotlrn-assoc?item_id=$item_id" + ad_progress_bar_end -url "course-dotlrn-assoc?item_id=$item_id" } else { - ad_returnredirect $return_url + ad_progress_bar_end -url $return_url } Index: openacs-4/packages/lors-central/www/course-dotlrn-assoc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-dotlrn-assoc.adp,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-dotlrn-assoc.adp 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-dotlrn-assoc.adp 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -2,6 +2,23 @@ <property name="title">@title;noquote@</property> <property name="context">@context;noquote@</property> -<listtemplate name="dotlrn_classes"></listtemplate> -<br><br> -<listtemplate name="drop_dotlrn_classes"></listtemplate> +<h3>#lors-central.dotlrn_classes#</h3> +<if @classes_list:rowcount@ gt 0> + <listtemplate name="dotlrn_classes"></listtemplate> + <br> +</if> +<if @drop_classes_list:rowcount@ gt 0> + <br> + <listtemplate name="drop_dotlrn_classes"></listtemplate> +</if> +<br> +<h3>#lors-central.dotlrn_communities#</h3> +<if @coms_list:rowcount@ gt 0> + <br> + <listtemplate name="coms_list"></listtemplate> +</if> + +<if @coms_list_drop:rowcount@ gt 0> + <br> + <listtemplate name="coms_list_drop"></listtemplate> +</if> \ No newline at end of file Index: openacs-4/packages/lors-central/www/course-dotlrn-assoc.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-dotlrn-assoc.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-dotlrn-assoc.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-dotlrn-assoc.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -8,8 +8,8 @@ item_id:integer,optional } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set title [_ lors-central.associate_to] @@ -25,7 +25,17 @@ set user_id [ad_conn user_id] +if { ![acs_user::site_wide_admin_p] } { + set extra_query_class "and drf.role = 'instructor' and drf.community_id = dc.class_instance_id and drf.user_id = :user_id " + set extra_query_community "and dm.community_id = dc.community_id + and dm.user_id = :user_id + and dm.role = 'admin'" +} else { + set extra_query_class "" + set extra_query_community "" +} + ##################################### TO ASSOCIATE ########################################################## db_multirow -extend { rel type } classes_list get_dotlrn_classes { } { @@ -155,3 +165,98 @@ } } + +##################################### COMMUNITIES ########################################################### +##################################### TO ASSOCIATE ########################################################## + +db_multirow -extend { rel type } coms_list get_dotlrn_coms { } { + set rel [lors_central::relation_between -item_id $item_id -community_id $com_id] + set type dotlrn_club +} + +template::list::create \ + -name coms_list \ + -multirow coms_list \ + -key community_id \ + -has_checkboxes\ + -bulk_actions { + "\#lors-central.associate\#" "course-associate" "\#lors-central.associate_to_class\#" \ + } \ + -bulk_action_method post \ + -bulk_action_export_vars { + item_id + type + }\ + -row_pretty_plural "[_ lors-central.dotlrn_communities]" \ + -elements { + check_box { + class "list-narrow" + label "<input type=\"checkbox\" name=\"_dummy\" onclick=\"acs_ListCheckAll('coms_list', this.checked)\" \ + title=\"\#lors-central.label_title\#\">" + display_template { + <input type="checkbox" name="object_id" value="@coms_list.com_id@" \ + id="coms_list,@coms_list.com_id@" \ + title="\#lors-central.title\#"> + } + } + class { + label "[_ lors-central.community_name]" + display_template { + <a href="@coms_list.url@">@coms_list.pretty_name@</a> + } + } + associate { + display_template { + <if @coms_list.rel@ not eq 0> + #lors-central.associated# + </if> + } + } + } + + +############################## TO DROP ASSOCIATION ###################################### + +db_multirow -extend { rel type } coms_list_drop get_dotlrn_coms_drop { } { + set rel [lors_central::relation_between -item_id $item_id -community_id $com_id] +} + +template::list::create \ + -name coms_list_drop \ + -multirow coms_list_drop \ + -key community_id \ + -has_checkboxes\ + -bulk_actions { + "\#lors-central.drop\#" "course-association-drop" "\#lors-central.drop_association\#" \ + } \ + -bulk_action_method post \ + -bulk_action_export_vars { + item_id + type + }\ + -row_pretty_plural "[_ lors-central.dotlrn_classes]" \ + -elements { + check_box { + class "list-narrow" + label "<input type=\"checkbox\" name=\"_dummy\" onclick=\"acs_ListCheckAll('coms_list_drop', this.checked)\" \ + title=\"\#lors-central.label_title\#\">" + display_template { + <input type="checkbox" name="object_id" value="@coms_list_drop.com_id@" \ + id="coms_list_drop,@coms_list_drop.com_id@" \ + title="\#lors-central.title\#"> + } + } + class { + label "[_ lors-central.community_name]" + display_template { + <a href="@coms_list_drop.url@">@coms_list_drop.pretty_name@</a> + } + } + associate { + display_template { + <if @coms_list_drop.rel@ not eq 0> + #lors-central.associated# + </if> + } + } + } Index: openacs-4/packages/lors-central/www/course-dotlrn-assoc.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-dotlrn-assoc.xql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-dotlrn-assoc.xql 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-dotlrn-assoc.xql 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,7 +11,7 @@ dc.pretty_name, dc.url from - dotlrn_class_instances_full dc + dotlrn_class_instances_full dc, dotlrn_instructor_rels_full drf where dc.class_instance_id not in ( @@ -27,7 +27,8 @@ from cr_revisions where item_id = :item_id ) - ) + ) + $extra_query_class order by department_name, term_name, class_name, pretty_name </querytext> </fullquery> @@ -42,7 +43,7 @@ dc.pretty_name, dc.url from - dotlrn_class_instances_full dc + dotlrn_class_instances_full dc, dotlrn_instructor_rels_full drf where dc.class_instance_id in ( @@ -57,11 +58,69 @@ from cr_revisions where item_id = :item_id ) + ) + $extra_query_class + order by department_name, term_name, class_name, pretty_name + </querytext> + </fullquery> + + <fullquery name="get_dotlrn_coms"> + <querytext> + select + distinct + dc.community_id as com_id, + dc.pretty_name, + dc.url + from + dotlrn_communities_full dc, dotlrn_member_rels_full dm + where + dc.community_id not in + ( + select + icmc.community_id + from + ims_cp_manifest_class icmc + where + icmc.community_id is not null and + man_id in + ( + select revision_id + from cr_revisions + where item_id = :item_id + ) + ) + and ( dc.community_type = 'dotlrn_club' or dc.community_type = 'dotlrn_community') + $extra_query_community + order by pretty_name + </querytext> + </fullquery> + + <fullquery name="get_dotlrn_coms_drop"> + <querytext> + select distinct + dc.community_id as com_id, + dc.pretty_name, + dc.url + from + dotlrn_communities_full dc, dotlrn_member_rels_full dm + where + dc.community_id in + ( + select + icmc.community_id + from + ims_cp_manifest_class icmc + where + man_id in + ( + select revision_id + from cr_revisions + where item_id = :item_id + ) ) - order by department_name, - term_name, - class_name, - pretty_name + and ( dc.community_type = 'dotlrn_club' or dc.community_type = 'dotlrn_community') + $extra_query_community + order by pretty_name </querytext> </fullquery> Index: openacs-4/packages/lors-central/www/course-live-in.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-live-in.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-live-in.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-live-in.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -6,8 +6,8 @@ man_id:integer,optional } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set title "[_ lors-central.Classes_using]" set context [list [list "one-course-associations?man_id=$man_id" [_ lors-central.one_course_assoc]] \ Index: openacs-4/packages/lors-central/www/course-version-change.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-version-change.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-version-change.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-version-change.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -7,8 +7,8 @@ set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set item_id [lors_central::get_item_id -revision_id $man_id] Index: openacs-4/packages/lors-central/www/course-versions.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/course-versions.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/course-versions.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/course-versions.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -9,8 +9,8 @@ set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { ![info exist item_id ] } { Index: openacs-4/packages/lors-central/www/edit-content.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/edit-content.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/edit-content.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/edit-content.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -23,8 +23,8 @@ set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set folder [db_string select_folder_key {select key from fs_folders where folder_id = :folder_id}] set fs_root_folder [db_string sql {select file_storage__get_root_folder(:fs_package_id)}] Index: openacs-4/packages/lors-central/www/file-content-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/file-content-edit.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/file-content-edit.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/file-content-edit.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -32,8 +32,8 @@ nsv_lappend delivery_vars [ad_conn session_id] $ims_item_id -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions # check they have read permission on this file Index: openacs-4/packages/lors-central/www/folder-description.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/folder-description.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/folder-description.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/folder-description.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -6,8 +6,8 @@ folder_id:integer,optional } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { ![info exists folder_id] } { # Get lorsm root folder_id Index: openacs-4/packages/lors-central/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/index.adp,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/index.adp 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/index.adp 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -2,6 +2,7 @@ <property name="title">@title@</property> <property name="context">@context@</property> +<div align="right"><a href="lc-admin/" title="admin"><img border=0 src="images/admin.gif" alt="admin"></a></div> <h2>#lorsm.lt_Courses_in_your_Repos#</h2> <table width="100%"> Index: openacs-4/packages/lors-central/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/index.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/index.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/index.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -8,9 +8,12 @@ keyword:optional } -# Checking swa privilege over lors-central -lors_central::is_swa +set user_id [ad_conn user_id] + +# Checking privilege over lors-central +lors_central::check_permissions + set title "[_ lorsm.lt_Manage_Courses_in_Rep]" set context [list "[_ lorsm.Manage_Courses]"] @@ -32,6 +35,11 @@ set extra_query "" } +# If user is not site wide we just show the courses where he/she has admin privilege over +if { ![acs_user::site_wide_admin_p] } { + append extra_query " and p.object_id = acs.object_id and p.privilege = 'admin' and p.grantee_id = :user_id" +} + set package_id [ad_conn package_id] set user_id [ad_conn user_id] set community_id [dotlrn_community::get_community_id] @@ -49,10 +57,11 @@ set actions [list] -lappend actions "[_ lorsm.Add_Course]" [export_vars -base "course-add"] "[_ lorsm.lt_Add_a_IMSSCORM_Compli]" -lappend actions "[_ lorsm.lt_Search_Learning_Objec]" [export_vars -base "search"] "[_ lorsm.lt_Search_for_Learninng_]" +if { [lors_central::check_inst -user_id $user_id] } { + lappend actions "[_ lorsm.Add_Course]" [export_vars -base "course-add"] "[_ lorsm.lt_Add_a_IMSSCORM_Compli]" + lappend actions "[_ lorsm.lt_Search_Learning_Objec]" [export_vars -base "search"] "[_ lorsm.lt_Search_for_Learninng_]" +} - template::list::create \ -name get_courses \ -multirow get_courses \ Index: openacs-4/packages/lors-central/www/index.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/index.xql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/index.xql 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/index.xql 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -19,7 +19,7 @@ acs.creation_user, acs.creation_date from - cr_revisions cr, acs_objects acs, cr_items ci + cr_revisions cr, acs_objects acs, cr_items ci, acs_permissions p where acs.object_id = cr.item_id and ci.item_id = cr.item_id and Index: openacs-4/packages/lors-central/www/new-clipboard-files.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/new-clipboard-files.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/new-clipboard-files.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/new-clipboard-files.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -12,6 +12,8 @@ set user_id [ad_conn user_id] +lors_central::check_permissions + foreach object $object_id { #The same file can not be added to the same res_id twice so we are going to check that set ims_res_id [db_string get_res_id { } ] Index: openacs-4/packages/lors-central/www/new-file.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/new-file.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/new-file.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/new-file.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -13,8 +13,8 @@ set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set page_title "[_ lors-central.new_file]" set context "[list [list [export_vars -base one-resource {res_id}] \ Index: openacs-4/packages/lors-central/www/new-learning-object.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/new-learning-object.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/new-learning-object.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/new-learning-object.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -16,8 +16,8 @@ } set user_id [ad_conn user_id] -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set title "[_ lors-central.new_object]" Index: openacs-4/packages/lors-central/www/one-course-associations.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-associations.adp,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course-associations.adp 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course-associations.adp 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -10,6 +10,10 @@ <listtemplate name="dotlrn_classes"></listtemplate> +<h3>#lors-central.and_in_the#</h3> + +<listtemplate name="dotlrn_communities"></listtemplate> + <br> <if @man_id@ not nil> <a class=button href="course-dotlrn-assoc?man_id=@man_id;noquote@">#lors-central.associate_drop#</a> Index: openacs-4/packages/lors-central/www/one-course-associations.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-associations.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course-associations.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course-associations.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,8 +11,9 @@ } +set user_id [ad_conn user_id] +lors_central::check_permissions - # Get the item_id that the manifest_id has associated if { ![info exist item_id] } { set item_id [lors_central::get_item_id -revision_id $man_id] @@ -202,3 +203,78 @@ } +############################################ Communities ############################################### + + +template::list::create \ + -name dotlrn_communities \ + -multirow com_list \ + -key com_id \ + -has_checkboxes \ + -bulk_actions { #lors-central.update_versions# "change-one-version" #lors-central.update_course_ver# }\ + -bulk_action_method post \ + -bulk_action_export_vars { + item_id + } \ + -row_pretty_plural "[_ lors-central.dotlrn_classes]" \ + -elements { + community { + label "[_ lors-central.community_name]" + display_template { + @com_list.pretty_name@ + <a href="one-course-views?man_id=@com_list.manifest_id@&community_id=@com_list.com_id@"> + [_ lors-central.views] + </a> + } + } + current { + label "[_ lors-central.current]" + display_template { + @com_list.ver_num@ [_ lors-central.of] @com_list.ver_count@ + } + } + set_to { + label "[_ lors-central.set_to]" + display_template { + <input type=hidden name="objects_id" value=@com_list.com_id@> + <input type=hidden name="objects_count" value=@com_list.ver_count@> + <select name="objects_value"> + @com_list.options;noquote@ + </select> + } + } + tracking { + label "[_ lors-central.tracking]" + display_template { + <center> + <a href="tracker?man_id=@com_list.manifest_id@&community_id=@com_list.com_id@"> + <if @com_list.tracking@> + [_ lors-central.enabled] + </if> + <else> + [_ lors-central.disabled] + </else> + </a> + </center> + } + } + } + +db_multirow -extend { ver_num ver_count manifest_id options tracking } com_list get_dotlrn_communities { } { + set manifest_id [lors_central::get_man_id -community_id $com_id -item_id $item_id] + set ver_count [lors_central::count_versions -man_id $manifest_id] + set ver_num [lors_central::get_version_num -revision_id $manifest_id] + set tracking [db_string get_tracking { }] + # Create the options for the select menu + set options "" + for { set i 1 } { $i < [expr $ver_count + 1] } { incr i } { + if { [string equal $i $ver_num] } { + append options "<option value=$i selected>$i</options>" + } else { + append options "<option value=$i>$i</options>" + } + } +} + + + Index: openacs-4/packages/lors-central/www/one-course-associations.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-associations.xql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course-associations.xql 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course-associations.xql 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -91,4 +91,34 @@ </querytext> </fullquery> + <fullquery name="get_dotlrn_communities"> + <querytext> + select + distinct + dc.community_id as com_id, + dc.pretty_name, + dc.url + from + dotlrn_communities_full dc, dotlrn_member_rels_full dm + where + dc.community_id in + ( + select + icmc.community_id + from + ims_cp_manifest_class icmc + where + icmc.community_id is not null and + man_id in + ( + select revision_id + from cr_revisions + where item_id = :item_id + ) + ) + and ( dc.community_type = 'dotlrn_club' or dc.community_type = 'dotlrn_community') + order by pretty_name asc + </querytext> + </fullquery> + </queryset> \ No newline at end of file Index: openacs-4/packages/lors-central/www/one-course-item.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-item.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course-item.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course-item.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,8 +11,8 @@ {orderby "class,asc"} } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set displayed_object_id $ims_item_id Index: openacs-4/packages/lors-central/www/one-course-views.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-views.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course-views.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course-views.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -6,8 +6,8 @@ community_id:integer,notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions # Get the item_id that the manifest_id has associated if { ![info exist item_id] } { Index: openacs-4/packages/lors-central/www/one-course.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-course.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-course.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -5,9 +5,6 @@ man_id:integer,optional } -# Checking swa privilege over lors-central -lors_central::is_swa - if { ![info exist item_id] && ![info exist man_id] } { ad_return_complaint 1 "You must pass either item_id or man_id" } else { @@ -19,7 +16,11 @@ } } +set user_id [ad_conn user_id] +# Checking privilege over lors-central +lors_central::check_permissions -object_id $item_id + set package_id "" set title "[_ lors-central.one_course]" set assoc_num [db_string get_associations_num { } -default 0] Index: openacs-4/packages/lors-central/www/one-file-live.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-file-live.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-file-live.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-file-live.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,8 +11,8 @@ {name "" } } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set file_item_id [lors_central::get_item_id -revision_id $file_id] Index: openacs-4/packages/lors-central/www/one-file.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-file.tcl,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/lors-central/www/one-file.tcl 17 May 2005 22:58:36 -0000 1.2 +++ openacs-4/packages/lors-central/www/one-file.tcl 13 Jun 2005 15:10:42 -0000 1.2.2.1 @@ -13,8 +13,8 @@ ims_item_id:notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions #if { [empty_string_p $name] } { # set name [db_string get_name { } -default "..."] Index: openacs-4/packages/lors-central/www/one-learning-object.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-learning-object.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-learning-object.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-learning-object.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -11,8 +11,8 @@ {orderby "class,asc"} } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set displayed_object_id $ims_item_id Index: openacs-4/packages/lors-central/www/one-lo-files.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-lo-files.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-lo-files.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-lo-files.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -9,8 +9,8 @@ {name ""} } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { [empty_string_p $name] } { set name [db_string get_name { } -default "..."] Index: openacs-4/packages/lors-central/www/one-object-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-object-edit.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/one-object-edit.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/one-object-edit.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -15,8 +15,8 @@ {edit_p ""} } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set parent_item [db_string get_parent_item "select parent_item from ims_cp_items where ims_item_id = :ims_item_id"] Index: openacs-4/packages/lors-central/www/reorder-items.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/reorder-items.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/reorder-items.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/reorder-items.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -7,8 +7,8 @@ sort_order:notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set ims_item_id $item_id set item_sort [db_string get_item_sort { }] Index: openacs-4/packages/lors-central/www/shared.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/shared.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/shared.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/shared.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -10,8 +10,8 @@ org_id:notnull } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions if { $shared } { set isshared f Index: openacs-4/packages/lors-central/www/tracker.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/tracker.tcl,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lors-central/www/tracker.tcl 17 May 2005 16:21:19 -0000 1.1 +++ openacs-4/packages/lors-central/www/tracker.tcl 13 Jun 2005 15:10:42 -0000 1.1.2.1 @@ -16,8 +16,8 @@ } -errors { } -# Checking swa privilege over lors-central -lors_central::is_swa +# Checking privilege over lors-central +lors_central::check_permissions set lorsm_instance_id [db_string get_lorsm_instance_id { select lorsm_instance_id from ims_cp_manifest_class where man_id = :man_id and community_id = :community_id Index: openacs-4/packages/lors-central/www/images/admin.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/images/admin.gif,v diff -u -r1.1.2.1 -r1.1.2.2 Binary files differ Index: openacs-4/packages/lorsm/lorsm.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/lorsm.info,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/lorsm/lorsm.info 24 Feb 2005 13:33:21 -0000 1.6 +++ openacs-4/packages/lorsm/lorsm.info 13 Jun 2005 15:10:42 -0000 1.6.2.1 @@ -8,13 +8,13 @@ <singleton-p>f</singleton-p> <auto-mount>lorsm</auto-mount> - <version name="0.6d2" url="http://openacs.org/repository/download/apm/lorsm-0.6d2.apm"> + <version name="0.7d" url="http://openacs.org/repository/download/apm/lorsm-0.7d.apm"> <owner url="mailto:ernieg@mm.st">Ernie Ghiglione</owner> <summary>Application to manage the services from the Learning Object Repository. </summary> - <release-date>2005-01-19</release-date> + <release-date>2005-05-26</release-date> <description format="text/html">This application manages the services from the Learning Object Repository: upload courses, manage and create metadata, delete resources and courses. </description> - <provides url="lorsm" version="0.6d2"/> + <provides url="lorsm" version="0.7d"/> <requires url="lors" version="0.4d"/> <requires url="views" version="0.1d"/> Index: openacs-4/packages/lorsm/catalog/lorsm.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/catalog/lorsm.en_US.ISO-8859-1.xml,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/lorsm/catalog/lorsm.en_US.ISO-8859-1.xml 17 May 2005 17:03:39 -0000 1.6 +++ openacs-4/packages/lorsm/catalog/lorsm.en_US.ISO-8859-1.xml 13 Jun 2005 15:10:43 -0000 1.6.2.1 @@ -682,6 +682,7 @@ <msg key="lt_Were_sorry_but_it_app">We're sorry, but it appears that you do not have the permission to perform this operation.</msg> <msg key="lt_Whether_copyright_or_">Whether copyright or other restrictions apply</msg> <msg key="lt_Whether_use_of_the_re">Whether use of the resource requires payment</msg> + <msg key="lt_With_Bottom_Navigatio">With Bottom Navigation Bar</msg> <msg key="lt_Without_LORSM_Index_S">Without LORSM Index Style</msg> <msg key="lt_You_are_about_to_add_">You are about to add %course_name% to your class.</msg> <msg key="lt_You_can_add_courses_a">You can add courses already existing in the repository</msg> @@ -786,6 +787,7 @@ <msg key="Size_1">Size</msg> <msg key="Source">Source:</msg> <msg key="Source_1">Source</msg> + <msg key="Start">Begin with the Course</msg> <msg key="Start_Course">Start Course</msg> <msg key="Status">Status:</msg> <msg key="Status_1">Status</msg> @@ -845,4 +847,7 @@ <msg key="Yes">Yes</msg> <msg key="You_can">You can</msg> <msg key="Your_Stats">Your Stats:</msg> + <msg key="Default_delivery">Default delivery?</msg> + <msg key="SCORM_session">SCORM session</msg> + <msg key="Sesion_Runtime_Data">Sesion_Runtime_Data</msg> </message_catalog> 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 -r1.8 -r1.8.2.1 --- openacs-4/packages/lorsm/lib/user-lorsm.tcl 17 May 2005 17:03:39 -0000 1.8 +++ openacs-4/packages/lorsm/lib/user-lorsm.tcl 13 Jun 2005 15:10:43 -0000 1.8.2.1 @@ -15,60 +15,123 @@ } -errors { } +set user_id [ad_conn user_id] +set community_id [dotlrn_community::get_community_id] + +set lors_central_package_id [apm_package_id_from_key "lors-central"] +set lors_central_url [apm_package_url_from_id $lors_central_package_id] + + +set elements_list { + course_name { + label "[_ lorsm.Course_Name_1]" + display_template { + @d_courses.course_url;noquote@ + <if @d_courses.admin_p@> + <i> + + <a href="${lors_central_url}one-course?item_id=@d_courses.item_id@">[_ lors-central.add_mat]</a> + </i> + </if> + } + html { width 70% } + } + subject { + label "[_ lorsm.Subject]" + display_eval {[dotlrn_community::get_community_name $community_id]} + html { align center width 20% } + link_url_eval {[dotlrn_community::get_community_url $community_id]} + link_html {title "[_ lorsm.Access_Course]"} + } + last_viewed { + label "[_ lorsm.Last_Viewed_On]" + html { align center width 10% } + display_eval {[lc_time_fmt $last_viewed "%x"]} + } + viewed_percent { + label "[_ lorsm._Viewed]" + html { align right } + display_eval {[lc_numeric $viewed_percent "%.2f"]} + } +} + + +if { ![string equal $lors_central_package_id 0] && ![empty_string_p $community_id] } { + if { [lors_central::check_inst -user_id $user_id -community_id $community_id] } { + append elements_list " + grant_permissions { + label \"[_ lors-central.grant_permissions]\" + display_template { + <center> + <a href=\"${lors_central_url}lc-admin/grant-user-list?man_id=@d_courses.item_id@&creation_user=@d_courses.creation_user@\">[_ lors-central.manage]</a> + </center> + } + }" + } +} + + template::list::create \ -name d_courses \ -multirow d_courses \ -html {width 100%} \ -key man_id \ -no_data "[_ lorsm.No_Courses]" \ - -elements { - course_name { - label "[_ lorsm.Course_Name_1]" - display_template {@d_courses.course_url;noquote@} - html { width 70% } - } - subject { - label "[_ lorsm.Subject]" - display_eval {[dotlrn_community::get_community_name $community_id]} - html { align center width 20% } - link_url_eval {[dotlrn_community::get_community_url $community_id]} - link_html {title "[_ lorsm.Access_Course]"} - } - last_viewed { - label "[_ lorsm.Last_Viewed_On]" - html { align center width 10% } - display_eval {[lc_time_fmt $last_viewed "%x"]} - } - viewed_percent { - label "[_ lorsm._Viewed]" - html { align right } - display_eval {[lc_numeric $viewed_percent "%.2f"]} - } - } + -elements $elements_list -set user_id [ad_conn user_id] -set community_id [dotlrn_community::get_community_id] set extra_query "" if {![empty_string_p $community_id]} { set extra_query "and cpmc.community_id = :community_id" } foreach package $package_id { - db_multirow -extend { ims_md_id last_viewed total_item_count viewed_item_count viewed_percent course_url } -append d_courses select_d_courses { } { + db_multirow -extend { admin_p item_id ims_md_id last_viewed total_item_count viewed_item_count viewed_percent course_url } -append d_courses select_d_courses { } { set ims_md_id $man_id if { [string eq $format_name "default"] } { - set course_url "<a href=\"[site_node::get_url_from_object_id -object_id $lorsm_instance_id]${folder_name}/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\">$course_name</a>" + + # micheles + set context [site_node::get_url_from_object_id -object_id $lorsm_instance_id] + if ([db_0or1row query " + select + cpr.man_id, + cpr.res_id, + case + when upper(scorm_type) = 'SCO' then 'delivery-scorm' + else 'delivery' + end as needscorte + from + ims_cp_resources cpr + where + cpr.man_id = :man_id + order by cpr.scorm_type desc limit 1" + ]) { + + set delivery_method $needscorte + ns_log Debug "lorsm - $needscorte" + + set course_url "<a href=\"$context$delivery_method/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\">$course_name</a>" + ns_log Debug "lorsm - course_url: $course_url" + } else { + set course_url "NO RESOURCES ERROR" + } } else { - set course_url "<a href=\"[site_node::get_url_from_object_id -object_id $lorsm_instance_id]${folder_name}/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\" target=_blank>$course_name</a>" + set course_url "<a href=\"[site_node::get_url_from_object_id -object_id $lorsm_instance_id]${folder_name}/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\" target=_blank>$course_name</a>" } + # DEDS: these are expensive # and for demo purposes only db_0or1row get_last_viewed { } set all_items [db_list get_total_items { }] set total_item_count [llength $all_items] set viewed_items [db_list get_viewed_items { }] set viewed_item_count [llength $viewed_items] + + ns_log Debug "lorsm - viewed_item_count: $viewed_item_count" + set viewed_percent [expr [expr $viewed_item_count * 1.00] / $total_item_count * 100] + set item_id [db_string get_item_id { }] + set admin_p [permission::permission_p -party_id $user_id -object_id $item_id -privilege "admin"] } } + Index: openacs-4/packages/lorsm/lib/user-lorsm.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/lib/user-lorsm.xql,v diff -u -r1.1 -r1.1.2.1 --- openacs-4/packages/lorsm/lib/user-lorsm.xql 17 May 2005 17:23:27 -0000 1.1 +++ openacs-4/packages/lorsm/lib/user-lorsm.xql 13 Jun 2005 15:10:43 -0000 1.1.2.1 @@ -9,6 +9,9 @@ cp.identifier, cp.version, cp.fs_package_id, + case when cp.fs_package_id is null then 't' + else 'f' + end as lorsm_p, cp.folder_id, acs.creation_user, acs.creation_date, @@ -71,4 +74,15 @@ </querytext> </fullquery> +<fullquery name="get_item_id"> + <querytext> + select + item_id + from + cr_revisions + where + revision_id = :man_id + </querytext> +</fullquery> + </queryset> \ No newline at end of file Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lorsm/sql/postgresql/lorsm-cmi-create.sql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lorsm/sql/postgresql/lorsm-cmi-drop.sql'. Fisheye: No comparison available. Pass `N' to diff? 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 -r1.3 -r1.3.2.1 --- openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql 17 May 2005 17:03:39 -0000 1.3 +++ openacs-4/packages/lorsm/sql/postgresql/lorsm-create.sql 13 Jun 2005 15:10:43 -0000 1.3.2.1 @@ -109,3 +109,4 @@ \i lorsm-packages.sql +\i lorsm-cmi-create.sql Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lorsm/sql/postgresql/lorsm-drop.sql'. Fisheye: No comparison available. Pass `N' to diff? 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 -r1.5 -r1.5.2.1 --- openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl 17 May 2005 17:03:39 -0000 1.5 +++ openacs-4/packages/lorsm/tcl/lorsm-install-procs.tcl 13 Jun 2005 15:10:56 -0000 1.5.2.1 @@ -52,16 +52,23 @@ } - 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') - } + # by the moment we only have tree format presentations and there is no + # way (by the moment) to add more dinamically, so we create them with an non dynamic id - 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.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 -r1.6 -r1.6.2.1 --- openacs-4/packages/lorsm/tcl/lorsm-procs.tcl 17 May 2005 17:03:39 -0000 1.6 +++ openacs-4/packages/lorsm/tcl/lorsm-procs.tcl 13 Jun 2005 15:10:56 -0000 1.6.2.1 @@ -339,7 +339,7 @@ db_foreach organizations { select org.org_id, - org.title as org_title, + org.org_title as org_title, org.hasmetadata, tree_level(o.tree_sortkey) as indent from @@ -355,21 +355,21 @@ db_foreach sql { SELECT (tree_level(tree_sortkey) - :indent) as indent, - i.item_id, - i.title as item_title + i.ims_item_id, + i.item_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 + o.object_id = i.ims_item_id AND EXISTS (select 1 from acs_object_party_privilege_map p - where p.object_id = i.item_id + where p.object_id = i.ims_item_id and p.party_id = :user_id and p.privilege = 'read') @@ -395,9 +395,9 @@ 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 ""] + set href [db_string href "select href from ims_cp_resources r, ims_cp_items_to_resources ir where ir.ims_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" + db_1row item_info "select item_title from ims_cp_items where ims_item_id = :item_id" set fs_item_id [fs::get_item_id -folder_id $folder_id -name $href] @@ -442,7 +442,7 @@ } ad_proc -public init { urlvar rootvar {content_root ""} {template_root ""} {context "public"} {rev_id ""} {content_type ""} } { - + upvar $urlvar url $rootvar root_path variable ims_item_id @@ -460,14 +460,15 @@ db_0or1row get_item_id "" db_0or1row get_item_type "" # No item found, so do not handle this request - if { ![info exists item_id] } { - db_0or1row get_template_info "" -column_array item_info - - if { ![info exists item_info] } { - ns_log notice "content::init: no content found for url $url" - return 0 - } - } + if { ![exists_and_not_null item_id] } { + + db_0or1row get_template_info "" -column_array item_info + + if { ![info exists item_info] } { + ns_log warning "lorsm - init: no content found for url $url" + return 0 + } + } variable item_url set item_url $url @@ -476,17 +477,18 @@ set content_type $item_info(content_type) } + ns_log debug "lorsm - init: urlvar rootvar rev_id item_id ims_item_id- $urlvar $rootvar $rev_id $item_id $ims_item_id" + # Make sure that a live revision exists if { [empty_string_p $rev_id] } { - - set live_revision [db_string get_live_revision ""] + set live_revision [db_string get_live_revision "" -default ""] if { [template::util::is_nil live_revision] } { - ns_log notice "content::init: no live revision found for content item $item_id" + ns_log warning "lorsm - init: no live revision found for content item $item_id" return 0 } set revision_id $live_revision } else { - set revision_id $rev_id + set revision_id $rev_id } variable template_path @@ -495,7 +497,7 @@ set template_found_p [db_0or1row get_template_url "" -column_array info] if { !$template_found_p || [string equal $info(template_url) {}] } { - ns_log notice "content::init: No template found to render content item $item_id in context '$context'" + ns_log warning "lorsm - init: No template found to render content item $item_id in context '$context'" return 0 } @@ -540,7 +542,7 @@ set item_id $ims_item_id if { [template::util::is_nil item_id] } { - ns_log warning "content::get_content: No active item in content::get_content" + ns_log warning "lorsm - get_content: No active item in lorsm - get_content" return } @@ -549,15 +551,15 @@ set revision_id [db_string get_revision ""] if { [template::util::is_nil revision_id] } { - ns_log notice "content::get_content: No live revision for item $item_id" + ns_log warning "lorsm - get_content: No live revision for item $item_id" return } # Get the mime type, decide if we want the text set mime_type [db_string get_mime_type ""] if { [template::util::is_nil mime_type] } { - ns_log notice "content::get_content: No such revision: $revision_id" + ns_log warning "lorsm - get_content: No such revision: $revision_id" return } @@ -576,13 +578,13 @@ } ad_proc -public lorsm::get_root_folder_id { } { } { - return [db_string get_root_folder { select folder_id from cr_folders where label = 'LORSM Root Folder' }] + return [db_string get_root_folder { select folder_id from cr_folders where label = 'LORSM Root Folder' } -default ""] } ad_proc -public lorsm::get_folder_id { -name:required } { - return [db_string get_root_folder { select folder_id from cr_folders where label = :name }] + return [db_string get_root_folder { select folder_id from cr_folders where label = :name } -default ""] } ad_proc -public lorsm::get_items_indent { Index: openacs-4/packages/lorsm/tcl/lorsm-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/tcl/lorsm-procs.xql,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/lorsm/tcl/lorsm-procs.xql 17 May 2005 17:03:39 -0000 1.2 +++ openacs-4/packages/lorsm/tcl/lorsm-procs.xql 13 Jun 2005 15:10:56 -0000 1.2.2.1 @@ -69,14 +69,6 @@ </querytext> </fullquery> -<fullquery name="lorsm::init_all.get_live_revision"> - <querytext> - - select live_revision from cr_items where item_id = :item_id - - </querytext> -</fullquery> - <fullquery name="lorsm::get_root_folder_id.get_root_folder"> <querytext> select folder_id from cr_folders where label = 'LORSM Root Folder' Index: openacs-4/packages/lorsm/templates/lorsm-default.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/templates/lorsm-default.tcl,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lorsm/templates/lorsm-default.tcl 17 May 2005 17:03:40 -0000 1.7 +++ openacs-4/packages/lorsm/templates/lorsm-default.tcl 13 Jun 2005 15:10:56 -0000 1.7.2.1 @@ -30,6 +30,13 @@ set imsitem_id [lorsm::get_ims_item_id] +set html_document_p 0 +if { [string eq $content(mime_type) "text/html"] && [regexp -nocase {<html>} $text match] } { + set html_document_p 1 + # parent window + regsub -all -nocase {target=.?(_top)} $text {target="content"} text +} + # We set all this blank variables in the case that the ims_item does # not have a resource id Index: openacs-4/packages/lorsm/templates/lorsm-no-index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/templates/lorsm-no-index.tcl,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/lorsm/templates/lorsm-no-index.tcl 26 Apr 2005 16:48:29 -0000 1.4 +++ openacs-4/packages/lorsm/templates/lorsm-no-index.tcl 13 Jun 2005 15:10:56 -0000 1.4.2.1 @@ -62,7 +62,9 @@ } else { set viewed_item_id [lindex $item_list [expr [lsearch -exact $item_list $viewed_item_id] - 1]] } - lorsm::record_view $viewed_item_id $man_id + if { [lsearch -exact $item_list $viewed_item_id] >= 0 } { + lorsm::record_view $viewed_item_id $man_id + } # Student tracking set package_id [ad_conn package_id] Index: openacs-4/packages/lorsm/www/course-add-3.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/Attic/course-add-3.tcl,v diff -u -r1.9 -r1.9.2.1 --- openacs-4/packages/lorsm/www/course-add-3.tcl 17 May 2005 17:03:40 -0000 1.9 +++ openacs-4/packages/lorsm/www/course-add-3.tcl 13 Jun 2005 15:10:56 -0000 1.9.2.1 @@ -435,20 +435,13 @@ set res_files [lors::imsmd::getResource -node $resource -att files] set res_scormtype [lors::imsmd::getAtt $resource adlcp:scormtype] -### Addition provided by e-lane people to integrate on deployment with -# assessment package. + # Integration with other packages + # This callback gets the href of the imported content (if some package imported it) + set res_href_tmp [callback -catch lors::import -res_type $res_type -res_href $res_href -tmp_dir $tmp_dir -community_id $community_id] + if {![empty_string_p $res_href_tmp]} { + set res_href $res_href_tmp + } -# In the future we need to come up with a nicier way to do this as -# this is rather a dirty hack for now. - -# if {$res_type == "imsqti_xmlv1p0" || $res_type == "imsqti_xmlv1p1" || $res_type =="imsqti_item_xmlv2p0"} { -# set res_href [lors::assessment::ims_qti_register_assessment \ -# -tmp_dir $tmp_dir/$res_href \ -# -community_id $community_id] -# } - -## End integration showcase - set resource_id [lors::imscp::resource_add \ -man_id $man_id \ -identifier $res_identifier \ Index: openacs-4/packages/lorsm/www/course-structure.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/Attic/course-structure.tcl,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lorsm/www/course-structure.tcl 17 May 2005 17:03:40 -0000 1.7 +++ openacs-4/packages/lorsm/www/course-structure.tcl 13 Jun 2005 15:10:56 -0000 1.7.2.1 @@ -101,7 +101,7 @@ set total_items [db_string items_count {select count(*) from ims_cp_items where org_id=:org_id} -default 0] # We get the indent of the items in this org_id - set indent_list [lors_central::get_items_indent -org_id $org_id] + set indent_list [lorsm::get_items_indent -org_id $org_id] template::util::list_of_lists_to_array $indent_list indent_array Index: openacs-4/packages/lorsm/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/index.tcl,v diff -u -r1.7 -r1.7.2.1 --- openacs-4/packages/lorsm/www/index.tcl 17 May 2005 17:03:40 -0000 1.7 +++ openacs-4/packages/lorsm/www/index.tcl 13 Jun 2005 15:10:56 -0000 1.7.2.1 @@ -35,7 +35,6 @@ lappend actions "[_ lorsm.lt_Search_Learning_Objec]" [export_vars -base "/search"] "[_ lorsm.lt_Search_for_Learninng_]" lappend actions "[_ lorsm.Available_Courses]" [export_vars -base "shared/"] "[_ lorsm.lt_View_Available_Course]" - template::list::create \ -name d_courses \ -multirow d_courses \ @@ -48,20 +47,21 @@ label "[_ lorsm.Available_Courses]" display_template {@d_courses.course_url;noquote@} display_col course_name + link_html {title "Access Course"} } hasmetadata { label "[_ lorsm.Metadata_1]" display_template { <if @d_courses.lorsm_p@> <center> - <a href=md/?ims_md_id=@d_courses.ims_md_id@ title="[_ lorsm.See_metadata]">@d_courses.hasmetadata@</a> - </center> - </if> - <else> + <a href=md/?ims_md_id=@d_courses.ims_md_id@ title="[_ lorsm.See_metadata]">@d_courses.hasmetadata@</a> + </center> + </if> + <else> <center> @d_courses.hasmetadata@</center> - </else> + </else> } - } + } isscorm { label "[_ lorsm.SCORM]" html { align center } @@ -73,9 +73,22 @@ istrackable { label "[_ lorsm.Tracking]" link_url_eval {tracking/?[export_vars man_id]} - link_html {title "[_ lorsm.lt_Track_Students_Progre]" class button} + link_html {title "[_ lorsm.lt_Track_Students_Progre]" class button} html { align center } } + deliverymethod { + label "[_ lorsm.Default_delivery]" + html { align center } + } + hasrtedata { + label "[_ lorsm.SCORM_session]" + display_template { + <if @d_courses.hasrtedata@> + <center> + <a href=tracking-rte/?man_id=@d_courses.man_id@ title="[_ lorsm.Sesion_Runtime_Data]">@d_courses.hasrtedata@</a> + </if> + } + } creation_user { label "[_ lorsm.Owner]" display_eval {[person::name -person_id $creation_user]} @@ -112,7 +125,7 @@ cp.identifier, cp.version, case - when hasmetadata = 't' then 'Yes' + when cp.hasmetadata = 't' then 'Yes' else 'No' end as hasmetadata, case @@ -136,10 +149,30 @@ case when cpmc.istrackable = 't' then 'Yes' else 'No' - end as istrackable - + end as istrackable, + -- micheles + -- addition for rte stuff +-- 'Click here' as hasrtedata, + case + when + upper(scorm_type) = 'SCO' + then 'Click here' + else '' + end as hasrtedata, + case + when + upper(scorm_type) = 'SCO' + then 'delivery-scorm' + else 'delivery' + end as deliverymethod + from - ims_cp_manifests cp, acs_objects acs, ims_cp_manifest_class cpmc, lorsm_course_presentation_formats pf + acs_objects acs, + ims_cp_manifest_class cpmc, + lorsm_course_presentation_formats pf, + -- micheles + ims_cp_manifests cp left join (select man_id, max(scorm_type) as scorm_type from ims_cp_resources group by man_id ) as cpr using (man_id) + where cp.man_id = acs.object_id and @@ -151,11 +184,13 @@ and cp.man_id in (select cr.live_revision from cr_items cr where content_type = 'ims_manifest_object') - order by acs.creation_date desc + + order by acs.creation_date desc, cp.man_id asc + } { set ims_md_id $man_id if { [string eq $format_name "default"] } { - set course_url "<a href=\"${folder_name}/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\">$course_name</a>" + set course_url "<a href=\"$deliverymethod/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\">$course_name</a>" } else { set course_url "<a href=\"${folder_name}/?[export_vars man_id]\" title=\"[_ lorsm.Access_Course]\" target=_blank>$course_name</a>" } Index: openacs-4/packages/lorsm/www/delivery/record-view.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/delivery/record-view.tcl,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/lorsm/www/delivery/record-view.tcl 17 May 2005 17:03:40 -0000 1.2 +++ openacs-4/packages/lorsm/www/delivery/record-view.tcl 13 Jun 2005 15:10:56 -0000 1.2.2.1 @@ -64,6 +64,12 @@ } } +# get already imported data (like an assessment) +# it normally points relatively to the correct location in some parent folder +if {[regexp {^\.\.} $href]} { + ad_returnredirect $href +} + # If no cr_item_id, this item is probably a folder # Else deliver the page Index: openacs-4/packages/lorsm/www/delivery-no-index/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/delivery-no-index/index.tcl,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/lorsm/www/delivery-no-index/index.tcl 17 May 2005 21:48:05 -0000 1.3 +++ openacs-4/packages/lorsm/www/delivery-no-index/index.tcl 13 Jun 2005 15:10:56 -0000 1.3.2.1 @@ -103,5 +103,5 @@ } if { !$viewed_item_count } { - set first_item_id [lindex [lorsm::get_item_list $man_id $user_id] 1] + set first_item_id [lindex [lorsm::get_item_list $man_id $user_id] 0] } Index: openacs-4/packages/lorsm/www/delivery-no-index/record-view.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/delivery-no-index/record-view.tcl,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/lorsm/www/delivery-no-index/record-view.tcl 17 May 2005 21:48:05 -0000 1.2 +++ openacs-4/packages/lorsm/www/delivery-no-index/record-view.tcl 13 Jun 2005 15:10:56 -0000 1.2.2.1 @@ -51,6 +51,11 @@ set cr_item_id [lors::cr::get_item_id -folder_id $content_root -name $href] +# get already imported data (like an assessment) +# it normally points relatively to the correct location in some parent folder +if {[regexp {^\.\.} $href]} { + ad_returnredirect $href +} # If no fs_item_id, this item is probably a folder # Else deliver the page Index: openacs-4/packages/lorsm/www/delivery-no-index/view/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/delivery-no-index/view/index.vuh,v diff -u -r1.2 -r1.2.2.1 --- openacs-4/packages/lorsm/www/delivery-no-index/view/index.vuh 17 May 2005 21:48:05 -0000 1.2 +++ openacs-4/packages/lorsm/www/delivery-no-index/view/index.vuh 13 Jun 2005 15:10:56 -0000 1.2.2.1 @@ -20,6 +20,7 @@ # Get the paths set the_root [ns_info pageroot] set the_url [ad_conn path_info] + set content_type "content_revision" set content_root [lindex [nsv_get delivery_vars [ad_conn session_id]] 0] Index: openacs-4/packages/lorsm/www/doc/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/doc/index.html,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/lorsm/www/doc/index.html 17 May 2005 17:03:41 -0000 1.3 +++ openacs-4/packages/lorsm/www/doc/index.html 13 Jun 2005 15:10:57 -0000 1.3.2.1 @@ -32,6 +32,8 @@ <li><a href="creating_package.html">Authoring/Creating Course Packages</a></li> + <li><a href="lorsm-rte.html">SCORM delivery in LORS</a></li> + </ol> <p> <hr size="1"> Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `openacs-4/packages/lorsm/www/doc/lorsm-rte.html'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/lorsm/www/doc/images/scorm1.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm/www/doc/images/Attic/scorm1.png,v diff -u -r1.1.2.1 -r1.1.2.2 Binary files differ Index: openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.adp,v diff -u -r1.3 -r1.3.4.1 --- openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.adp 29 Nov 2004 17:28:23 -0000 1.3 +++ openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.adp 13 Jun 2005 15:10:57 -0000 1.3.4.1 @@ -1,3 +1,17 @@ +<if @use_lc_p@> + <ul> + <li> + <a href="@lors_central_url@">#lorsm-portlet.Manage_LORS#</a> + </li> + <li> + <a href="@lors_central_url@course-add">#lorsm-portlet.Add_a_Course#</a> + </li> + <li> + <a href="/search">#lorsm-portlet.lt_Search_Learning_Objec#</a> + </li> + </ul> +</if> +<else> <ul> <li> <a href="@url@">#lorsm-portlet.Manage_LORS#</a> @@ -9,4 +23,4 @@ <a href="/search">#lorsm-portlet.lt_Search_Learning_Objec#</a> </li> </ul> - +</else> Index: openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.tcl,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.tcl 17 May 2005 17:53:36 -0000 1.3 +++ openacs-4/packages/lorsm-portlet/www/lorsm-admin-portlet.tcl 13 Jun 2005 15:10:59 -0000 1.3.2.1 @@ -10,6 +10,17 @@ } + +set lors_central_package_id [apm_package_id_from_key "lors-central"] +set lors_central_url [apm_package_url_from_id $lors_central_package_id] + +if { ![string equal $lors_central_package_id 0] } { + set use_lc_p [parameter::get -parameter "UploadUsingLorsCentralP" -package_id $lors_central_package_id] +} else { + set use_lc_p 0 +} + + array set config $cf set list_of_package_ids $config(package_id) @@ -23,3 +34,4 @@ set url [lindex [site_node::get_url_from_object_id -object_id $package_id] 0] ad_return_template + Index: openacs-4/packages/lorsm-portlet/www/lorsm-portlet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lorsm-portlet/www/lorsm-portlet.adp,v diff -u -r1.2 -r1.2.4.1 --- openacs-4/packages/lorsm-portlet/www/lorsm-portlet.adp 4 Sep 2004 14:09:02 -0000 1.2 +++ openacs-4/packages/lorsm-portlet/www/lorsm-portlet.adp 13 Jun 2005 15:10:59 -0000 1.2.4.1 @@ -10,7 +10,6 @@ </else> - </if> <else>