Index: openacs-4/packages/acs-admin/www/install/install.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/install/install.tcl,v
diff -u -N -r1.7 -r1.8
--- openacs-4/packages/acs-admin/www/install/install.tcl 8 Dec 2012 18:20:35 -0000 1.7
+++ openacs-4/packages/acs-admin/www/install/install.tcl 27 Oct 2014 16:38:56 -0000 1.8
@@ -1,12 +1,34 @@
ad_page_contract {
Install from local file system
} {
- package_type:optional
- {upgrade_p 0}
+ {package_type ""}
+ {upgrade_p:boolean 0}
{repository_url ""}
+ {channel ""}
+ {maturity:naturalnum ""}
+ {current_channel}
+ {head_channel}
}
+#
+# In upgrade mode, offer per default all maturities, in install-mode,
+# start with mature packages.
+#
+if {$upgrade_p} {
+ set default_maturity 0
+} else {
+ set default_maturity 2
+}
+
+if {$maturity eq ""} {
+ set maturity $default_maturity
+}
+
+#
+# Set page title to reflect install from repository or from file system
+#
+
if { $repository_url ne "" } {
set page_title "Install or Upgrade From OpenACS Repository"
} else {
@@ -26,29 +48,49 @@
set upgrades_p 0
array set package [list]
-apm_get_package_repository -repository_url $repository_url -array repository
+if {$channel eq ""} {set channel $current_channel}
+set fetch_url $repository_url/$channel/
+apm_get_package_repository -repository_url $fetch_url -array repository
+
foreach package_key [array names repository] {
- array unset version
- array set version $repository($package_key)
+ set version $repository($package_key)
- if { ![exists_and_not_null package_type] || [string equal $version(package.type) $package_type] } {
- set package_key $version(package.key)
-
- # If in upgrade mode, only add to list if it's an upgrade
- if { !$upgrade_p || $version(install_type) eq "upgrade" } {
- if {![exists_and_not_null version(maturity)]} {
- set version(maturity) ""
- }
- set package([string toupper $version(package-name)]) \
- [list \
- $version(package.key) \
- $version(package-name) \
- $version(name) \
- $version(package.type) \
- $version(install_type) \
- $version(summary) \
- $version(maturity)]
+ # Ignore the package in the following cases:
+ # - maturity is below specified level
+ # - package is deprecated
+ # - package is not supported by the installed database
+ # - don't offer "-portlet" alone (currently only useful in
+ # connection with DotLRN)
+ if {[dict get $version maturity] < $maturity
+ || [dict get $version maturity] == 4
+ || ![apm_package_supports_rdbms_p -package_key $package_key]
+ || [string match "*-portlet" $package_key]
+ } continue
+
+ if { $package_type eq "" || [dict get $version package.type] eq $package_type } {
+ #
+ # If in upgrade mode, only add to list if it's an upgrade, in
+ # install-mode list only installs.
+ #
+ if { (!$upgrade_p && [dict get $version install_type] eq "install")
+ || ($upgrade_p && [dict get $version install_type] eq "upgrade")
+ } {
+ set package([string toupper [dict get $version package-name]]) \
+ [list $package_key \
+ [dict get $version package-name] \
+ [dict get $version name] \
+ [dict get $version package.type] \
+ [dict get $version install_type] \
+ [dict get $version summary] \
+ [::apm::package_version::attributes::maturity_int_to_text [dict get $version maturity]] \
+ [dict get $version vendor] \
+ [dict get $version vendor.url] \
+ [dict get $version owner] \
+ [dict get $version owner.url] \
+ [dict get $version release-date] \
+ [dict get $version license] \
+ ]
}
}
}
@@ -61,36 +103,22 @@
#####
# Sort the list alphabetically (in case package_name and package_key doesn't sort the same)
-multirow create packages package_key package_name version_name package_type install_type summary maturity
+multirow create packages package_key package_name version_name package_type install_type summary \
+ maturity vendor vendor_url owner owner_url release_date license
if {[catch {set maturity_label [apm::package_version::attributes::get_pretty_name maturity]} errmsg]} {
set maturity_label "Maturity"
}
foreach name [lsort -ascii [array names package]] {
- set row $package($name)
- if {[info commands ::apm::package_version::attributes::maturity_int_to_text] ne ""} {
- set maturity_text [::apm::package_version::attributes::maturity_int_to_text [lindex $row 6]]
- } else {
- set maturity_text ""
- }
-
- multirow append packages \
- [lindex $row 0] \
- [lindex $row 1] \
- [lindex $row 2] \
- [lindex $row 3] \
- [lindex $row 4] \
- [lindex $row 5] \
- $maturity_text
+ multirow append packages {*}$package($name)
}
multirow extend packages install_url
multirow -unclobber foreach packages {
- set install_url [export_vars -base install-2 { package_key repository_url }]
+ set install_url [export_vars -base install-2 { package_key {repository_url $fetch_url}}]
}
-
# Build the list-builder list
template::list::create \
-name packages \
@@ -100,7 +128,7 @@
"Install or upgrade checked applications" "install-2" "Install or upgrade checked applications"
} \
-bulk_action_export_vars {
- repository_url
+ {repository_url $fetch_url}
} \
-elements {
package_name {
@@ -110,6 +138,13 @@
}
summary {
label "Summary"
+ display_template {@packages.summary@
+ Vendor: @packages.vendor@
+ @packages.vendor@
+ (released on @packages.release_date@, license: @packages.license@)
+
+ Details: @packages.package_key@
+ }
}
maturity {
label "$maturity_label"
@@ -127,6 +162,26 @@
display_eval {[ad_decode $install_type "upgrade" "Upgrade" ""]}
}
} -filters {
+ channel {
+ label "Channel"
+ values {
+ {Current $current_channel}
+ {Head $head_channel}
+ }
+ default_value $current_channel
+ }
+
+ maturity {
+ label "Maturity at least"
+ values {
+ {New 0}
+ {Immature 1}
+ {Mature 2}
+ {"Mature and Standard" 3}
+ }
+ default_value default_maturity
+ }
+
package_type {
label "Type"
values {
@@ -142,9 +197,9 @@
}
default_value 0
}
- repository_url {
- hide_p 1
- }
+ repository_url { hide_p 1 }
+ current_channel { hide_p 1 }
+ head_channel { hide_p 1 }
}