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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -17,7 +17,7 @@
 
         <provides url="lors-central" version="0.1a3"/>
         <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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -1,32 +1,38 @@
 <?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.1a3" 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_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 +42,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 &quot;Browse...&quot; button to locate your file, then click &quot;Open&quot;</msg>
   <msg key="here">Here</msg>
   <msg key="hide">Hide</msg>
@@ -54,13 +66,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 +87,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 +115,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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -12,6 +12,7 @@
   <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_is_in">Y esta siendo utilizado en los siguientes cursos</msg>
@@ -23,26 +24,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 &quot;Browse...&quot; para localizar el archivo, luego presionar&quot;Open&quot;</msg>
   <msg key="here">Aqui</msg>                                  
   <msg key="hide">Ocultar</msg>
@@ -54,13 +64,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 +83,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 +111,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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -12,6 +12,7 @@
   <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_is_in">Y esta siendo utilizado en los siguientes cursos</msg>
@@ -23,26 +24,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 &quot;Browse...&quot; para localizar el archivo, luego presionar&quot;Open&quot;</msg>
   <msg key="here">Aqui</msg>                                  
   <msg key="hide">Ocultar</msg>
@@ -54,13 +64,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 +83,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 +111,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/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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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]
 
@@ -155,3 +155,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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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,10 @@
                           from cr_revisions 
                           where item_id = :item_id
                           )
-                   )
+                   ) and
+		   drf.community_id = dc.class_instance_id and
+		   drf.user_id = :user_id and
+	           drf.role = 'instructor'
 	    order by department_name, term_name, class_name, pretty_name
         </querytext>
     </fullquery>
@@ -42,7 +45,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,12 +60,76 @@
                           from cr_revisions 
                           where item_id = :item_id
                           )
-                   )
+                   ) and
+		   drf.community_id = dc.class_instance_id and
+		   drf.user_id = :user_id and
+	           drf.role = 'instructor' 		
 	    order by department_name, 
                      term_name, 
                      class_name, 
                      pretty_name
         </querytext>
     </fullquery>
 
+    <fullquery name="get_dotlrn_coms">
+        <querytext>
+            select 
+                   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
+		   dm.community_id = dc.community_id and
+		   dm.user_id = :user_id and
+	           dm.role = 'admin'
+	    order by pretty_name
+        </querytext>
+    </fullquery>
+
+    <fullquery name="get_dotlrn_coms_drop">
+        <querytext>
+            select 
+                   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
+                          )
+                   ) and
+		   dm.community_id = dc.community_id and
+		   dm.user_id = :user_id and
+	           dm.role = 'admin'
+	    order by pretty_name
+        </querytext>
+    </fullquery>
+
 </queryset>
\ No newline at end of file
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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lors-central/www/one-course-associations.tcl,v
diff -u -r1.1 -r1.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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]
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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.3
--- 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	31 May 2005 22:57:22 -0000	1.3
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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.2
--- 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	31 May 2005 22:57:22 -0000	1.2
@@ -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