Index: openacs-4/packages/imsld-portlet/imsld-portlet.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/imsld-portlet.info,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/imsld-portlet.info	27 Sep 2005 11:22:46 -0000	1.1
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!-- Generated by the OpenACS Package Manager -->
+
+<package key="imsld-portlet" url="http://openacs.org/repository/apm/packages/imsld-portlet" type="apm_service">
+    <package-name>IMS LD Portlet</package-name>
+    <pretty-plural>IMS LD Portlets</pretty-plural>
+    <initial-install-p>f</initial-install-p>
+    <singleton-p>t</singleton-p>
+    
+    <version name="0.1d1" url="http://openacs.org/repository/download/apm/imsld-portlet-0.1d1.apm">
+        <owner url="mailto:eperez@it.uc3m.es">Eduardo Pérez Ureta</owner>
+        <release-date>2005-09-27</release-date>
+
+        <provides url="imsld-portlet" version="0.2d1"/>
+        <requires url="imsld" version="0.1d"/>
+
+        <callbacks>
+            <callback type="after-install"  proc="apm::imsld_portlet::after_install"/>
+            <callback type="before-uninstall"  proc="apm::imsld_portlet::before_uninstall"/>
+        </callbacks>
+        <parameters>
+        <!-- No version parameters -->
+        </parameters>
+
+    </version>
+</package>
Index: openacs-4/packages/imsld-portlet/tcl/apm-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/tcl/apm-callback-procs.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/tcl/apm-callback-procs.tcl	27 Sep 2005 11:22:46 -0000	1.1
@@ -0,0 +1,29 @@
+ad_library {
+    Procedures for initializing service contracts etc. for the
+    imsld portlet package. Should only be executed 
+    once upon installation.
+    
+    @creation-date 2005-09-27
+    @author eperez@it.uc3m.es
+    @cvs-id $Id: apm-callback-procs.tcl,v 1.1 2005/09/27 11:22:46 eduardop Exp $
+}
+
+namespace eval apm::imsld_portlet {}
+namespace eval apm::imsld_admin_portlet {}
+
+ad_proc -public apm::imsld_portlet::after_install {} {
+    Create the datasources needed by the imsld portlets.
+} {
+        imsld_portlet::after_install
+        imsld_admin_portlet::after_install
+}
+
+ad_proc -public apm::imsld_portlet::before_uninstall {} {
+    IMS LD Portlet package uninstall proc
+} {
+
+    db_transaction {
+        imsld_portlet::uninstall
+        imsld_admin_portlet::uninstall
+    }
+}
Index: openacs-4/packages/imsld-portlet/tcl/imsld-portlet-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/tcl/imsld-portlet-procs.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/tcl/imsld-portlet-procs.tcl	27 Sep 2005 11:22:46 -0000	1.1
@@ -0,0 +1,354 @@
+ad_library {
+
+    Procedures to support the imsld portlets
+
+    @creation-date 2005-09-27
+    @author eperez@it.uc3m.es
+    @cvs_id $Id: imsld-portlet-procs.tcl,v 1.1 2005/09/27 11:22:46 eduardop Exp $
+
+}
+
+namespace eval imsld_portlet {}
+namespace eval imsld_admin_portlet {}
+
+
+#
+# imsld namespace
+#
+
+ad_proc -private imsld_portlet::get_my_name {
+} {
+    return "imsld_portlet"
+}
+
+
+
+ad_proc -private imsld_portlet::my_package_key {
+} {
+    return "imsld-portlet"
+}
+
+
+
+ad_proc -public imsld_portlet::get_pretty_name {
+} {
+    return "#imsld.imsld#"
+}
+
+
+
+ad_proc -public imsld_portlet::link {
+} {
+    return ""
+}
+
+
+
+ad_proc -public imsld_portlet::add_self_to_page {
+    {-portal_id:required}
+    {-package_id:required}
+    {-param_action:required}
+    {-force_region ""}
+    {-page_name "" }
+} {
+    Adds a imsld PE to the given portal.
+    
+    @param portal_id The page to add self to
+    @param package_id The community with the folder
+    
+    @return element_id The new element's id
+} {
+    return [portal::add_element_parameters \
+                -portal_id $portal_id \
+                -portlet_name [get_my_name] \
+                -value $package_id \
+                -force_region $force_region \
+		-page_name $page_name \
+                -pretty_name [get_pretty_name] \
+                -param_action $param_action
+           ]
+}
+
+
+
+ad_proc -public imsld_portlet::remove_self_from_page {
+    {-portal_id:required}
+    {-package_id:required}
+} {
+    Removes a imsld PE from the given page or the package_id of the
+    imsld package from the portlet if there are others remaining
+    
+    @param portal_id The page to remove self from
+    @param package_id
+} {
+    portal::remove_element_parameters \
+        -portal_id $portal_id \
+        -portlet_name [get_my_name] \
+        -value $package_id
+}
+
+
+
+ad_proc -public imsld_portlet::show {
+    cf
+} {
+    portal::show_proc_helper \
+        -package_key [my_package_key] \
+        -config_list $cf \
+        -template_src "imsld-portlet"
+}
+
+#
+# imsld admin namespace
+#
+
+ad_proc -private imsld_admin_portlet::get_my_name {} {
+    return "imsld_admin_portlet"
+}
+
+
+ad_proc -public imsld_admin_portlet::get_pretty_name {} {
+    return "#imsld.imsld_Administration#"
+}
+
+
+
+ad_proc -private imsld_admin_portlet::my_package_key {} {
+    return "imsld-portlet"
+}
+
+
+
+ad_proc -public imsld_admin_portlet::link {} {
+    return ""
+}
+
+
+
+ad_proc -public imsld_admin_portlet::add_self_to_page {
+    {-portal_id:required}
+    {-page_name ""}
+    {-package_id:required}
+} {
+    Adds a imsld admin PE to the given portal
+
+    @param portal_id The page to add self to
+    @param package_id The package_id of the imsld package
+
+    @return element_id The new element's id
+} {
+    return [portal::add_element_parameters \
+                -portal_id $portal_id \
+                -portlet_name [get_my_name] \
+                -key package_id \
+                -value $package_id
+           ]
+}
+
+ad_proc -public imsld_admin_portlet::remove_self_from_page {
+    {-portal_id:required}
+} {
+    Removes a imsld admin PE from the given page
+} {
+    portal::remove_element \
+        -portal_id $portal_id \
+        -portlet_name [get_my_name]
+}
+
+
+ad_proc -public imsld_admin_portlet::show {
+    cf
+} {
+    portal::show_proc_helper \
+        -package_key [my_package_key] \
+        -config_list $cf \
+        -template_src "imsld-admin-portlet"
+}
+
+ad_proc -private imsld_portlet::after_install {} {
+    Create the datasources needed by the imsld portlet.
+} {
+    
+    db_transaction {
+	set ds_id [portal::datasource::new \
+		       -name "imsld_portlet" \
+		       -description "IMS LD Portlet"]
+
+	portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key shadeable_p \
+            -value t
+
+	portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key hideable_p \
+            -value t
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key user_editable_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key shaded_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key link_hideable_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p f \
+            -key package_id \
+            -value ""
+
+	register_portal_datasource_impl
+
+    }
+}
+
+ad_proc -private imsld_portlet::register_portal_datasource_impl {} {
+    Create the service contracts needed by the imsld portlet.
+} {
+    set spec {
+        name "imsld_portlet"
+	contract_name "portal_datasource"
+	owner "imsld-portlet"
+        aliases {
+	    GetMyName imsld_portlet::get_my_name
+	    GetPrettyName  imsld_portlet::get_pretty_name
+	    Link imsld_portlet::link
+	    AddSelfToPage imsld_portlet::add_self_to_page
+	    Show imsld_portlet::show
+	    Edit imsld_portlet::edit
+	    RemoveSelfFromPage imsld_portlet::remove_self_from_page
+        }
+    }
+    
+    acs_sc::impl::new_from_spec -spec $spec
+}
+
+ad_proc -private imsld_admin_portlet::after_install {} {
+    Create the datasources needed by the imsld portlet.
+} {
+
+    db_transaction {
+	set ds_id [portal::datasource::new \
+		       -name "imsld_admin_portlet" \
+		       -description "IMS LD Admin Portlet"]
+
+	portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key shadeable_p \
+            -value f
+
+	portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key hideable_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key user_editable_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key shaded_p \
+            -value f
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p t \
+            -key link_hideable_p \
+            -value t
+
+        portal::datasource::set_def_param \
+            -datasource_id $ds_id \
+            -config_required_p t \
+            -configured_p f \
+            -key package_id \
+            -value ""
+
+	register_portal_datasource_impl
+    }
+
+}
+
+
+
+ad_proc -private imsld_admin_portlet::register_portal_datasource_impl {} {
+    Create the service contracts needed by the imsld admin portlet.
+} {
+    set spec {
+        name "imsld_admin_portlet"
+	contract_name "portal_datasource"
+	owner "imsld-portlet"
+        aliases {
+	    GetMyName imsld_admin_portlet::get_my_name
+	    GetPrettyName  imsld_admin_portlet::get_pretty_name
+	    Link imsld_admin_portlet::link
+	    AddSelfToPage imsld_admin_portlet::add_self_to_page
+	    Show imsld_admin_portlet::show
+	    Edit imsld_admin_portlet::edit
+	    RemoveSelfFromPage imsld_admin_portlet::remove_self_from_page
+        }
+    }
+    
+    acs_sc::impl::new_from_spec -spec $spec
+}
+
+ad_proc -private imsld_portlet::uninstall {} {
+    IMS LD Portlet package uninstall proc
+} {
+    unregister_implementations
+    set ds_id [portal::get_datasource_id imsld_portlet]
+    db_exec_plsql delete_imsld_ds { *SQL* }
+}
+
+ad_proc -private imsld_admin_portlet::uninstall {} {
+    IMS LD Portlet package uninstall proc
+} {
+    unregister_implementations
+    set ds_id [portal::get_datasource_id imsld_admin_portlet]
+    db_exec_plsql delete_admin_ds { *SQL* }
+}
+
+ad_proc -private imsld_portlet::unregister_implementations {} {
+    Unregister service contract implementations
+} {
+    acs_sc::impl::delete \
+        -contract_name "portal_datasource" \
+        -impl_name "imsld_portlet"
+}
+
+ad_proc -private imsld_admin_portlet::unregister_implementations {} {
+    Unregister service contract implementations
+} {
+    acs_sc::impl::delete \
+        -contract_name "portal_datasource" \
+        -impl_name "imsld_admin_portlet"
+}
Index: openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.adp	27 Sep 2005 11:22:47 -0000	1.1
@@ -0,0 +1,3 @@
+<ul>
+  <li><a href="@url@admin">#imsld-portlet.imsld_admin#</a>
+</ul>
Index: openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/www/imsld-admin-portlet.tcl	27 Sep 2005 11:22:47 -0000	1.1
@@ -0,0 +1,26 @@
+# /imsld-portlet/www/imsld-admin-portlet.tcl
+
+ad_page_contract {
+    The display logic for the imsld admin portlet
+
+    @author eperez@it.uc3m.es
+    @creation-date 2005-09-27
+    @cvs_id $Id: imsld-admin-portlet.tcl,v 1.1 2005/09/27 11:22:47 eduardop Exp $
+} -properties {
+    
+}
+
+array set config $cf
+set user_id [ad_conn user_id]
+set list_of_package_ids $config(package_id)
+
+if {[llength $list_of_package_ids] > 1} {
+    # We have a problem!
+    return -code error "[_ imsld-portlet.error_one_imsld] "
+}        
+
+set package_id [lindex $list_of_package_ids 0]        
+
+set url [lindex [site_node::get_url_from_object_id -object_id $package_id] 0]
+
+ad_return_template 
Index: openacs-4/packages/imsld-portlet/www/imsld-portlet.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/www/imsld-portlet.adp,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/www/imsld-portlet.adp	27 Sep 2005 11:22:47 -0000	1.1
@@ -0,0 +1,16 @@
+<if @shaded_p@ false>
+<if @one_instance_p@ true>
+   <include src="/packages/lorsm/lib/user-lorsm" package_id="@list_of_package_ids@" />
+</if>
+<else>
+
+<list name="list_of_package_ids">
+  <include src="/packages/lorsm/lib/user-lorsm" package_id="@list_of_package_ids:item@" />
+</list>
+
+</else>
+
+</if>
+<else>
+  &nbsp;
+</else>
Index: openacs-4/packages/imsld-portlet/www/imsld-portlet.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/imsld-portlet/www/imsld-portlet.tcl,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/imsld-portlet/www/imsld-portlet.tcl	27 Sep 2005 11:22:47 -0000	1.1
@@ -0,0 +1,18 @@
+ad_page_contract {
+
+    The logic for the imsld portlet.
+
+    @author eperez@it.uc3m.es
+    @creation-date 2005-09-27
+    @cvs-id $Id: imsld-portlet.tcl,v 1.1 2005/09/27 11:22:47 eduardop Exp $
+
+} -query {
+}
+
+array set config $cf
+
+set shaded_p $config(shaded_p)
+set list_of_package_ids [lsort $config(package_id)]
+set one_instance_p [ad_decode [llength $list_of_package_ids] 1 1 0]
+
+ad_return_template