Index: openacs-4/packages/acs-admin/www/apm/version-reload.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/apm/version-reload.tcl,v
diff -u -r1.9 -r1.10
--- openacs-4/packages/acs-admin/www/apm/version-reload.tcl 30 Jan 2004 09:54:20 -0000 1.9
+++ openacs-4/packages/acs-admin/www/apm/version-reload.tcl 27 Oct 2014 16:38:54 -0000 1.10
@@ -6,14 +6,18 @@
@creation-date 9 May 2000
@cvs-id $Id$
} {
- {version_id:integer}
+ {version_id:naturalnum,notnull}
{return_url "index"}
}
apm_version_info $version_id
-set page_title "Reload $pretty_name"
-set context [list [list "../developer" "Developer's Administration"] [list "/acs-admin/apm/" "Package Manager"] [list [export_vars -base version-view { version_id }] "$pretty_name $version_name"] $page_title]
+set title "Reload $pretty_name"
+set context [list \
+ [list "../developer" "Developer's Administration"] \
+ [list "/acs-admin/apm/" "Package Manager"] \
+ [list [export_vars -base version-view { version_id }] "$pretty_name $version_name"] \
+ $title]
# files in $files.
apm_mark_version_for_reload $version_id files
@@ -23,38 +27,87 @@
if { [llength $files] == 0 } {
append body "There are no changed files to reload in this package.
"
} else {
- append body "Marked the following file[ad_decode [llength $files] 1 "" "s"] for reloading:
\n"
+ append body "Marked the following file[ad_decode [llength $files] 1 "" "s"] for reloading:\n"
+
+ # Source all of the marked files using the current interpreter, accumulating
+ # errors into apm_package_load_errors
+ array set errors [list]
+ catch { apm_load_any_changed_libraries errors }
+
+ if {[info exists errors($package_key)]} {
+ array set package_errors $errors($package_key)
+ } else {
+ array set package_errors [list]
+ }
+
foreach file $files {
- append body "- $file"
- if { [nsv_exists apm_reload_watch $file] } {
- append body " (currently being watched)"
- } else {
- # This file isn't being watched right now - provide a link setting a watch on it.
- set files_to_watch_p 1
+ append body "
- $file"
+ if { [nsv_exists apm_reload_watch $file] } {
+ append body " (currently being watched)"
+ } else {
+ # This file isn't being watched right now - provide a link setting a watch on it.
+ set files_to_watch_p 1
# Remove the two first elements of the path, namely packages/package-key/
- set local_path [eval [concat file join [lrange [file split $file] 2 end]]]
+ set local_path [file join {*}[lrange [file split $file] 2 end]]
- append body " (watch this file)"
+ append body [subst {
+ (watch this file)
+ }]
lappend files_to_watch $local_path
- }
- append body "\n"
+ }
+
+ if {[info exists package_errors($file)]} {
+ append body "
- ERROR!
" \
+ "[ad_quotehtml $package_errors($file)]
"
+ }
+ append body " \n"
}
append body "
\n"
+
+ set n_errors [array size package_errors]
+ if {$n_errors > 0} {
+ if {$n_errors > 1} {
+ set exist_n_error_files "were $n_errors files"
+ } else {
+ set exist_n_error_files "was $n_errors file"
+ }
+ append body "
+ There
+ $exist_n_error_files with errors that prevented complete
+ reloading. Fix the problem, then reload the
+ package again to finish the reload.
+
+ "
+ }
}
if { [info exists files_to_watch_p] } {
- append body "If you know you're going to be modifying one of the above files frequently,
- select the \"watch this file\" link next to a filename to cause the interpreters to
- reload the file immediately whenever it is changed.
-
- - Watch all above files
"
+ append body [subst {
+ If you know you're going to be modifying one of the above files frequently,
+ select the "watch this file" link next to a filename to cause the interpreters to
+ reload the file immediately whenever it is changed.
+
+}]
+# template::head::add_javascript -src "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"
+
+ad_return_template
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 4
+# indent-tabs-mode: nil
+# End: