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 } }