Index: openacs-4/packages/xotcl-core/tcl/01-debug-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/01-debug-procs.tcl,v
diff -u -r1.72.2.11 -r1.72.2.12
--- openacs-4/packages/xotcl-core/tcl/01-debug-procs.tcl 11 Feb 2014 11:53:08 -0000 1.72.2.11
+++ openacs-4/packages/xotcl-core/tcl/01-debug-procs.tcl 14 Feb 2014 18:20:43 -0000 1.72.2.12
@@ -3,9 +3,9 @@
if {$::tcl_version < 8.5
|| ([regexp {8[.]5[.]([0-9]+)$} $::tcl_patchLevel _ minor] && $minor < 4)
-} {
- ns_log error "We require for this version of xotcl-core at least Tcl 8.5.4 (avail: Tcl $::tcl_patchLevel)"
- return
+ } {
+ ns_log error "We require for this version of xotcl-core at least Tcl 8.5.4 (avail: Tcl $::tcl_patchLevel)"
+ return
}
package require xotcl::serializer
@@ -40,21 +40,21 @@
# emulate slots up to a certain point
namespace eval ::xo {
::xotcl::MetaSlot create ::xo::Attribute \
- -parameter {
- {name "[namespace tail [::xotcl::self]]"}
- {domain "[lindex [regexp -inline {^(.*)::slot::[^:]+$} [::xotcl::self]] 1]"}
- {multivalued false}
- {required false}
- default
- type
- spec
- pretty_name
- {pretty_plural ""}
- {datatype "text"}
- constraint_values
- help_text
- validator
- }
+ -parameter {
+ {name "[namespace tail [::xotcl::self]]"}
+ {domain "[lindex [regexp -inline {^(.*)::slot::[^:]+$} [::xotcl::self]] 1]"}
+ {multivalued false}
+ {required false}
+ default
+ type
+ spec
+ pretty_name
+ {pretty_plural ""}
+ {datatype "text"}
+ constraint_values
+ help_text
+ validator
+ }
}
} else {
namespace eval ::xo {
@@ -127,11 +127,11 @@
set object_type [my domain]
if {[regexp {^::([^:]+)::} $object_type _ head]} {
set tail [namespace tail $object_type]
- set pretty_name "#$head.$tail-$name#"
- #my log "--created pretty_name = $pretty_name"
+ set pretty_name "#$head.$tail-$name#"
+ #my log "--created pretty_name = $pretty_name"
} else {
error "Cannot determine automatically message key for pretty name. \
- Use namespaces for classes"
+ Use namespaces for classes"
}
}
}
@@ -186,11 +186,11 @@
array set names ""
foreach c [concat $cl [$cl info heritage]] {
foreach s [$c info slots] {
- set n [namespace tail $s]
- if {![info exists names($n)]} {
- lappend so $s
- set names($n) $s
- }
+ set n [namespace tail $s]
+ if {![info exists names($n)]} {
+ lappend so $s
+ set names($n) $s
+ }
}
}
return $so
@@ -262,7 +262,7 @@
if {[ns_conn isconnected]} {
set msg "[self]: $msg ([self callingclass]->[self callingproc])"
if {$html} {
- util_user_message -html -message $msg
+ util_user_message -html -message $msg
} else {
util_user_message -message $msg
}
@@ -317,7 +317,7 @@
::xotcl::Object log "### Call Stack (level: command)"
for {set i 0} {$i < $max} {incr i} {
if {[catch {set s [uplevel $i self]} msg]} {
- set s ""
+ set s ""
}
::xotcl::Object log "### [format %5d -$i]:\t$s [info level [expr {-$i}]]"
}
@@ -367,7 +367,7 @@
# ns_log notice "--T :ttrace::isenabled"
# set blueprint [ns_ictl get]
# ns_ictl save [append blueprint [::Serializer serializeExportedMethods \
-# [::Serializer new -volatile]]]
+ # [::Serializer new -volatile]]]
# unset blueprint
# ns_log notice "--T [ns_ictl get]"
#}
@@ -406,25 +406,25 @@
ns_ictl ondelete ::xo::at_delete
}
-# proc trace_cleanup {args} {
-# set name [lindex $args 1]
-# #ns_log notice "*** cleanup <$args> '$name'"
-# if {[::xotcl::Object isobject $name]} {
-# ns_log notice "*** cleanup $name destroy"
-# $name destroy
-# }
-# }
+ # proc trace_cleanup {args} {
+ # set name [lindex $args 1]
+ # #ns_log notice "*** cleanup <$args> '$name'"
+ # if {[::xotcl::Object isobject $name]} {
+ # ns_log notice "*** cleanup $name destroy"
+ # $name destroy
+ # }
+ # }
} else {
# register only once
if {"::xo::freeconn" ni $registered} {
if {[catch {ns_ictl trace freeconn ::xo::freeconn} errorMsg]} {
- ns_log Warning "ns_ictl trace returned: $errorMsg"
+ ns_log Warning "ns_ictl trace returned: $errorMsg"
}
}
if {"::xo::at_delete" ni [ns_ictl gettraces delete]} {
if {[catch {ns_ictl ondelete ::xo::at_delete} errorMsg]} {
- ns_log Warning "ns_ictl ondelete returned: $errorMsg"
+ ns_log Warning "ns_ictl ondelete returned: $errorMsg"
}
}
@@ -541,7 +541,7 @@
set t1 [clock clicks -milliseconds]
ns_log notice "ON DELETE done ([expr {$t1-$t0}]ms)"
}
-
+
#
# ::xo::Module is very similar to a plain tcl namespace: When it is
# created/recreated, it does not perform a cleanup of its
@@ -677,32 +677,32 @@
::xo::system_stats proc thread_info {pid tid} {
set fn /proc/$pid/task/$tid/stat
if {[file readable $fn]} {
- set f [open $fn]; set s [read $f]; close $f
+ set f [open $fn]; set s [read $f]; close $f
} elseif {[file readable /proc/$pid/task/$pid/stat]} {
- set f [open /proc/$pid/task/$pid/stat]; set s [read $f]; close $f
+ set f [open /proc/$pid/task/$pid/stat]; set s [read $f]; close $f
} else {
- return ""
+ return ""
}
lassign $s tid comm state ppid pgrp session tty_nr tpgid flags minflt \
- cminflt majflt cmajflt utime stime cutime cstime priority nice \
- numthreads itrealval starttime vsize rss rsslim startcode endcode \
- startstack kstkesp kstkeip signal blocked sigignore sigcatch wchan \
- nswap cnswap ext_signal processor ...
+ cminflt majflt cmajflt utime stime cutime cstime priority nice \
+ numthreads itrealval starttime vsize rss rsslim startcode endcode \
+ startstack kstkesp kstkeip signal blocked sigignore sigcatch wchan \
+ nswap cnswap ext_signal processor ...
# utime and stimes are jiffies. Since Linux has HZ 100, we can
# multiply the jiffies by 10 to obtain ms
return [list utime [expr {$utime*10}] stime [expr {$stime*10}]]
}
} else {
::xo::system_stats proc thread_info {pid tid} {
- return ""
+ return ""
}
}
::xo::system_stats proc gettid {} {
set hex [ns_thread getid]
foreach t [ns_info threads] {
if {[lindex $t 2] eq $hex} {
- return [list name [lindex $t 0] tid [lindex $t 7]]
+ return [list name [lindex $t 0] tid [lindex $t 7]]
}
}
return ""
@@ -749,13 +749,13 @@
set threadInfo [ns_info threads]
if {[file readable /proc/$pid/statm] && [llength [lindex $threadInfo 0]] > 7} {
foreach t $threadInfo {
- array unset s
- array set s [my thread_info $pid [lindex $t 7]]
- if {[info exists s(stime)]} {
- set group [my thread_classify [lindex $t 0]]
- my aggregate $group $varnames(utime) $s(utime)
- my aggregate $group $varnames(stime) $s(stime)
- }
+ array unset s
+ array set s [my thread_info $pid [lindex $t 7]]
+ if {[info exists s(stime)]} {
+ set group [my thread_classify [lindex $t 0]]
+ my aggregate $group $varnames(utime) $s(utime)
+ my aggregate $group $varnames(stime) $s(stime)
+ }
}
}
foreach group [array names utimes] {
@@ -777,11 +777,11 @@
::xo::broadcast proc send {cmd} {
foreach thread_info [ns_info threads] {
switch -glob -- [lindex $thread_info 0] {
- -conn:* -
- -sched:* {
- set tid [lindex $thread_info 2]
- nsv_lappend broadcast $tid $cmd
- }
+ -conn:* -
+ -sched:* {
+ set tid [lindex $thread_info 2]
+ nsv_lappend broadcast $tid $cmd
+ }
}
}
}
@@ -798,152 +798,152 @@
set tid [ns_thread id]
if {[nsv_exists broadcast $tid]} {
foreach cmd [nsv_get broadcast $tid] {
- ns_log notice "broadcast received {$cmd}"
- if {[catch $cmd errorMsg]} {
- ns_log notice "broadcast receive error: $errorMsg for cmd $cmd"
- }
+ ns_log notice "broadcast received {$cmd}"
+ if {[catch $cmd errorMsg]} {
+ ns_log notice "broadcast receive error: $errorMsg for cmd $cmd"
+ }
}
my clear
}
}
}
proc ::xo::getObjectProperty {o what args} {
- switch $what {
- "mixin" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info mixin]}
- return [$o info object mixin classes]
- }
- "instmixin" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info instmixin]}
- return [$o info mixin classes]
- }
- "instproc" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info instprocs {*}$args]}
- return [$o info methods -type scripted {*}$args]
- }
- "instcommand" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info instcommands {*}$args]}
- return [$o info methods {*}$args]
- }
- "instforward" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info instforward {*}$args]}
- return [$o info methods -type forwarder {*}$args]
- }
- "proc" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info procs {*}$args]}
- return [$o info object methods -type scripted {*}$args]
- }
- "command" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info procs {*}$args]}
- return [$o info object methods {*}$args]
- }
- "forward" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info forward {*}$args]}
- return [$o info object methods -type forwarder {*}$args]
- }
- "slots" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info slots]}
- return [$o info object methods -type forwarder]
- }
- "class" {
- #if {"::xotcl::Object" in [$o info precedence]} {return [$o info class]}
- return [$o info class]
- }
- "superclass" {
- #if {"::xotcl::Object" in [$o info precedence]} {return [$o info superclass]}
- return [$o info superclass]
- }
- "heritage" {
- #if {"::xotcl::Object" in [$o info precedence]} {return [$o info heritage]}
- return [$o info heritage]
- }
- "subclass" {
- #if {"::xotcl::Object" in [$o info precedence]} {return [$o info subclass]}
- return [$o info subclass]
- }
- "parameter" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info parameter]}
- set result ""
- foreach p [$o info configure parameters] {lappend result [$o info parameter name $p]}
- return $result
- }
- "isclass" {
- if {[info commands $o] eq ""} {return 0}
- if {[catch {set p [$o info precedence]}]} {return 0}
- if {"::xotcl::Object" in $p} {return [expr {"::xotcl::Class" in $p}]}
- return [nsf::is class $o]
- }
- "isobject" {
- if {[info commands $o] eq ""} {return 0}
- if {[catch {set p [$o info precedence]}]} {return 0}
- if {"::xotcl::Object" in $p} {return 1}
- return [nsf::is object $o]
- }
- "instargs" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info instargs {*}$args]}
- return [$o info method args {*}$args]
- }
- "args" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o info args {*}$args]}
- return [$o info object method args {*}$args]
- }
- "instargdefault" {
- if {"::xotcl::Object" in [$o info precedence]} {
- return [uplevel [list $o info instdefault {*}$args]]
- }
- lassign $args method arg varName
- foreach p [$o info method parameters $method] {
- lassign $p name default
- if {$name eq $arg} {
- uplevel [list set $varName $default]
- return [expr {[llength $p] == 2}]
- }
- }
- return 0
- }
- "argdefault" {
- if {"::xotcl::Object" in [$o info precedence]} {
- return [uplevel [list $o info default {*}$args]]
- }
- lassign $args method arg varName
- foreach p [$o info object method parameter $method] {
- lassign $p name default
- if {$name eq $arg} {
- uplevel [list set $varName $default]
- return [expr {[llength $p] == 2}]
- }
- }
- return 0
- }
-
- "array-exists" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o array exists {*}$args]}
- return [$o eval [list array exists :{*}$args]]
- }
- "array-get" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o array get {*}$args]}
- return [$o eval [list array get :{*}$args]]
- }
- "array-set" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o array set {*}$args]}
- return [$o eval [list array set :{*}$args]]
- }
- "set" {
- if {"::xotcl::Object" in [$o info precedence]} {return [$o set {*}$args]}
- return [$o eval [list set :[lindex $args 0]]]
- }
- "isnxobject" {
- if {[info commands ::nsf::dispatch] ne "" && [info commands $o] ne ""} {
- return [::nsf::dispatch $o ::nsf::methods::object::info::hastype ::nx::Object]
- } {
- return 0
- }
- }
- default {
- error "no idea how to return $what"
- }
+ switch $what {
+ "mixin" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info mixin]}
+ return [$o info object mixin classes]
}
+ "instmixin" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info instmixin]}
+ return [$o info mixin classes]
+ }
+ "instproc" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info instprocs {*}$args]}
+ return [$o info methods -type scripted {*}$args]
+ }
+ "instcommand" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info instcommands {*}$args]}
+ return [$o info methods {*}$args]
+ }
+ "instforward" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info instforward {*}$args]}
+ return [$o info methods -type forwarder {*}$args]
+ }
+ "proc" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info procs {*}$args]}
+ return [$o info object methods -type scripted {*}$args]
+ }
+ "command" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info procs {*}$args]}
+ return [$o info object methods {*}$args]
+ }
+ "forward" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info forward {*}$args]}
+ return [$o info object methods -type forwarder {*}$args]
+ }
+ "slots" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info slots]}
+ return [$o info object methods -type forwarder]
+ }
+ "class" {
+ #if {"::xotcl::Object" in [$o info precedence]} {return [$o info class]}
+ return [$o info class]
+ }
+ "superclass" {
+ #if {"::xotcl::Object" in [$o info precedence]} {return [$o info superclass]}
+ return [$o info superclass]
+ }
+ "heritage" {
+ #if {"::xotcl::Object" in [$o info precedence]} {return [$o info heritage]}
+ return [$o info heritage]
+ }
+ "subclass" {
+ #if {"::xotcl::Object" in [$o info precedence]} {return [$o info subclass]}
+ return [$o info subclass]
+ }
+ "parameter" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info parameter]}
+ set result ""
+ foreach p [$o info configure parameters] {lappend result [$o info parameter name $p]}
+ return $result
+ }
+ "isclass" {
+ if {[info commands $o] eq ""} {return 0}
+ if {[catch {set p [$o info precedence]}]} {return 0}
+ if {"::xotcl::Object" in $p} {return [expr {"::xotcl::Class" in $p}]}
+ return [nsf::is class $o]
+ }
+ "isobject" {
+ if {[info commands $o] eq ""} {return 0}
+ if {[catch {set p [$o info precedence]}]} {return 0}
+ if {"::xotcl::Object" in $p} {return 1}
+ return [nsf::is object $o]
+ }
+ "instargs" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info instargs {*}$args]}
+ return [$o info method args {*}$args]
+ }
+ "args" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o info args {*}$args]}
+ return [$o info object method args {*}$args]
+ }
+ "instargdefault" {
+ if {"::xotcl::Object" in [$o info precedence]} {
+ return [uplevel [list $o info instdefault {*}$args]]
+ }
+ lassign $args method arg varName
+ foreach p [$o info method parameters $method] {
+ lassign $p name default
+ if {$name eq $arg} {
+ uplevel [list set $varName $default]
+ return [expr {[llength $p] == 2}]
+ }
+ }
+ return 0
+ }
+ "argdefault" {
+ if {"::xotcl::Object" in [$o info precedence]} {
+ return [uplevel [list $o info default {*}$args]]
+ }
+ lassign $args method arg varName
+ foreach p [$o info object method parameter $method] {
+ lassign $p name default
+ if {$name eq $arg} {
+ uplevel [list set $varName $default]
+ return [expr {[llength $p] == 2}]
+ }
+ }
+ return 0
+ }
+
+ "array-exists" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o array exists {*}$args]}
+ return [$o eval [list array exists :{*}$args]]
+ }
+ "array-get" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o array get {*}$args]}
+ return [$o eval [list array get :{*}$args]]
+ }
+ "array-set" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o array set {*}$args]}
+ return [$o eval [list array set :{*}$args]]
+ }
+ "set" {
+ if {"::xotcl::Object" in [$o info precedence]} {return [$o set {*}$args]}
+ return [$o eval [list set :[lindex $args 0]]]
+ }
+ "isnxobject" {
+ if {[info commands ::nsf::dispatch] ne "" && [info commands $o] ne ""} {
+ return [::nsf::dispatch $o ::nsf::methods::object::info::hastype ::nx::Object]
+ } {
+ return 0
+ }
+ }
+ default {
+ error "no idea how to return $what"
+ }
+ }
}
Index: openacs-4/packages/xotcl-core/tcl/03-doc-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/03-doc-procs.tcl,v
diff -u -r1.6.2.4 -r1.6.2.5
--- openacs-4/packages/xotcl-core/tcl/03-doc-procs.tcl 13 Oct 2013 18:15:13 -0000 1.6.2.4
+++ openacs-4/packages/xotcl-core/tcl/03-doc-procs.tcl 14 Feb 2014 18:20:43 -0000 1.6.2.5
@@ -50,8 +50,8 @@
[$scope do xo::getObjectProperty $obj isobject]}
} -proc scope {} {
if {[info exists ::xotcl::currentThread]} {
- # we are in an xotcl thread; the body won't be accessible directly
- return $::xotcl::currentThread
+ # we are in an xotcl thread; the body won't be accessible directly
+ return $::xotcl::currentThread
}
return ""
@@ -73,7 +73,7 @@
#return "$scope$kind [self]"
set script [info script]
if {$script eq "" && [info exists ::xotcl::currentScript]} {
- set script $::xotcl::currentScript
+ set script $::xotcl::currentScript
}
set root_dir [acs_root_dir]
set root_length [string length $root_dir]
@@ -85,9 +85,9 @@
} -proc object_link {{-noimg:boolean off} scope obj} {
set link ""
if {$noimg} {
- return "$link$obj"
+ return "$link$obj"
} else {
- return "$obj$link"
+ return "$obj$link"
}
} -proc object_url {{-show_source 0} {-show_methods 1} scope obj} {
@@ -99,38 +99,38 @@
} -proc proc_index {scope obj instproc proc_name} {
if {$scope eq ""} {
- return "$obj $instproc $proc_name"
+ return "$obj $instproc $proc_name"
} else {
- return "$scope $obj $instproc $proc_name"
+ return "$scope $obj $instproc $proc_name"
}
} -proc source_to_html {{-width 100} string} {
set lines [list]
foreach l [split $string \n] {
- while {[string length $l] > $width} {
- set pos [string last " \{" $l $width]
- if {$pos>10} {
- lappend lines "[string range $l 0 $pos-1] \\"
- set l " [string range $l $pos end]"
- } else {
- # search for a match right of the target
- set pos [string first " \{" $l $width]
- if {$pos>10} {
- lappend lines "[string range $l 0 $pos-1] \\"
- set l " [string range $l $pos end]"
- } else {
- # last resort try to split around spaces
- set pos [string last " " $l $width]
- if {$pos>10} {
- lappend lines "[string range $l 0 $pos-1] \\"
- set l " [string range $l $pos end]"
- } else {
- break
- }
- }
- }
- }
- lappend lines $l
+ while {[string length $l] > $width} {
+ set pos [string last " \{" $l $width]
+ if {$pos>10} {
+ lappend lines "[string range $l 0 $pos-1] \\"
+ set l " [string range $l $pos end]"
+ } else {
+ # search for a match right of the target
+ set pos [string first " \{" $l $width]
+ if {$pos>10} {
+ lappend lines "[string range $l 0 $pos-1] \\"
+ set l " [string range $l $pos end]"
+ } else {
+ # last resort try to split around spaces
+ set pos [string last " " $l $width]
+ if {$pos>10} {
+ lappend lines "[string range $l 0 $pos-1] \\"
+ set l " [string range $l $pos end]"
+ } else {
+ break
+ }
+ }
+ }
+ }
+ lappend lines $l
}
set string [join $lines \n]
set html [ad_quotehtml $string]
@@ -240,10 +240,10 @@
}
::xotcl::Class instproc ad_instproc {
- {-private:switch false}
- {-deprecated:switch false}
- {-warn:switch false}
- {-debug:switch false}
+ {-private:switch false}
+ {-deprecated:switch false}
+ {-warn:switch false}
+ {-debug:switch false}
proc_name arguments doc body} {
uplevel [list [self] instproc $proc_name $arguments $body]
my __api_make_doc inst $proc_name
@@ -290,7 +290,7 @@
array set elements [nsv_get api_library_doc $file_index]
}
set oldDoc [expr {[info exists elements(main)] ? \
- [lindex $elements(main) 0] : ""}]
+ [lindex $elements(main) 0] : ""}]
set prefix "This file defines the following Objects and Classes"
set entry [::xotcl::api object_link $scope [self]]
if {![string match "*$prefix*" $oldDoc]} {
@@ -349,3 +349,10 @@
A Class defined as a subclass of ::Test for testing the
documentation stuff...
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/05-db-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/05-db-procs.tcl,v
diff -u -r1.97.2.5 -r1.97.2.6
--- openacs-4/packages/xotcl-core/tcl/05-db-procs.tcl 11 Feb 2014 11:53:08 -0000 1.97.2.5
+++ openacs-4/packages/xotcl-core/tcl/05-db-procs.tcl 14 Feb 2014 18:20:43 -0000 1.97.2.6
@@ -133,10 +133,10 @@
set sequenceName $sequence
set nextval [::xo::dc get_value nextval "select nextval(:sequenceName)"]
} elseif { [::xo::dc db_0or1row nextval_sequence {
- select nextval(:sequence) as nextval
- where (select relkind
- from pg_class
- where relname = :sequence) = 'S'
+ select nextval(:sequence) as nextval
+ where (select relkind
+ from pg_class
+ where relname = :sequence) = 'S'
}]} {
#
# We do not have an according sequence-table. Use the system catalog to check
@@ -712,7 +712,7 @@
set p [split $package_key_and_version_older_than]
if {[llength $p] != 2} {
error "package_key_and_version_older_than should be\
- of the form 'package_key version'"
+ of the form 'package_key version'"
}
lassign $p package_key version
set installed_version [apm_highest_version_name $package_key]
@@ -757,25 +757,25 @@
::xotcl::Class create ::xo::db::Class \
-superclass ::xotcl::Class \
-parameter {
- pretty_name
- pretty_plural
- {supertype acs_object}
- table_name
- id_column
- {abstract_p f}
- {name_method ""}
- {object_type [self]}
- {security_inherit_p t}
- {auto_save false}
- {with_table true}
- {sql_package_name}
+ pretty_name
+ pretty_plural
+ {supertype acs_object}
+ table_name
+ id_column
+ {abstract_p f}
+ {name_method ""}
+ {object_type [self]}
+ {security_inherit_p t}
+ {auto_save false}
+ {with_table true}
+ {sql_package_name}
} -ad_doc {
- ::xo::db::Class is a meta class for interfacing with acs_object_types.
- acs_object_types are instances of this meta class. The meta class defines
- the behavior common to all acs_object_types. The behavior common to
- all acs_objects is defined by the class ::xo::db::Object.
-
- @see ::xo::db::Object
+ ::xo::db::Class is a meta class for interfacing with acs_object_types.
+ acs_object_types are instances of this meta class. The meta class defines
+ the behavior common to all acs_object_types. The behavior common to
+ all acs_objects is defined by the class ::xo::db::Object.
+
+ @see ::xo::db::Object
}
#::xo::db::Class set __default_superclass ::xo::db::Object ;# will be supported in XOTcl 1.6
@@ -876,16 +876,16 @@
set table_name [::xo::db::Class get_table_name -object_type $object_type]
if {$table_name ne ""} {
if {[catch {
- ::xo::dc dml delete_instances "delete from $table_name"
- if {$drop_table} {
- ::xo::dc dml drop_table "drop table $table_name"
- }
+ ::xo::dc dml delete_instances "delete from $table_name"
+ if {$drop_table} {
+ ::xo::dc dml drop_table "drop table $table_name"
+ }
} errorMsg]} {
- my log "error during drop_type"
+ my log "error during drop_type"
}
}
::xo::db::sql::acs_object_type drop_type \
- -object_type $object_type -cascade_p $cascade_p
+ -object_type $object_type -cascade_p $cascade_p
return ""
}
@@ -928,7 +928,7 @@
-id_column $id_column \
-table_name $table_name \
-sql_package_name [namespace tail $classname] \
- -noinit
+ -noinit
} else {
#my log "--db we have a class $classname"
}
@@ -941,22 +941,22 @@
set slots ""
foreach att_info $attributes {
lassign $att_info attribute_name pretty_name pretty_plural datatype \
- default_value min_n_values max_n_values
+ default_value min_n_values max_n_values
# ignore some erroneous definitions in the acs meta model
if {[my exists exclude_attribute($table_name,$attribute_name)]} continue
set defined_att($attribute_name) 1
set cmd [list ::xo::db::Attribute create $attribute_name \
- -pretty_name $pretty_name \
- -pretty_plural $pretty_plural \
- -datatype $datatype \
- -min_n_values $min_n_values \
- -max_n_values $max_n_values]
+ -pretty_name $pretty_name \
+ -pretty_plural $pretty_plural \
+ -datatype $datatype \
+ -min_n_values $min_n_values \
+ -max_n_values $max_n_values]
if {$default_value ne ""} {
- # if the default_value is "", we assume, no default
- lappend cmd -default $default_value
+ # if the default_value is "", we assume, no default
+ lappend cmd -default $default_value
}
append slots $cmd \n
}
@@ -1056,7 +1056,7 @@
regexp {^[^a-zA-Z]+([a-zA-Z0-9_]+)\s} $line _ fq_name
if {![info exists fq_name]} {
ns_log notice "--***** Could not retrieve argument name for $proname\
- argument $n from line '$line' in $prosrc'"
+ argument $n from line '$line' in $prosrc'"
set fq_name arg$n
}
set name $fq_name
@@ -1380,12 +1380,12 @@
if {[my isclass $name]} {
if {[$name exists object_type]} {
# The specified class has an object_type defined; return it
- return [$name object_type]
+ return [$name object_type]
}
if {![$name istype ::xo::db::Object]} {
# The specified class is not subclass of ::xo::db::Object.
# return acs_object in your desparation.
- return acs_object
+ return acs_object
}
}
# Standard mapping rules
@@ -1466,7 +1466,7 @@
@return list of object_types
} {
return [::xo::dc list get_object_types \
- [my object_types_query -subtypes_first $subtypes_first]]
+ [my object_types_query -subtypes_first $subtypes_first]]
}
::xo::db::Class ad_instproc create_object_type {} {
@@ -1523,14 +1523,14 @@
}
if {[self] ne "::xo::db::Object"} {
if {[my exists id_column] && ![info exists db_slot($id_column)]} {
- # create automatically the slot for the id column
- my slots [subst {
- ::xo::db::Attribute create $id_column \
- -pretty_name "ID" \
- -datatype integer \
+ # create automatically the slot for the id column
+ my slots [subst {
+ ::xo::db::Attribute create $id_column \
+ -pretty_name "ID" \
+ -datatype integer \
-create_acs_attribute false
- }]
- set db_slot($id_column) [self]::slot::$id_column
+ }]
+ set db_slot($id_column) [self]::slot::$id_column
}
}
#my log "--setting db_slot of [self] to [array names db_slot]"
@@ -1545,14 +1545,14 @@
foreach {slot_name slot} [my array get db_slot] {
set column_name [$slot column_name]
set column_specs($column_name) \
- [$slot column_spec -id_column [expr {$column_name eq $id_column}]]
+ [$slot column_spec -id_column [expr {$column_name eq $id_column}]]
}
if {[array size column_specs]>0} {
if {$table_name eq ""} {error "no table_name specified"}
if {$id_column eq ""} {error "no id_column specified"}
if {![info exists column_specs($id_column)]} {
- error "no ::xo::db::Attribute slot for id_column '$id_column' specified"
+ error "no ::xo::db::Attribute slot for id_column '$id_column' specified"
}
set table_specs [list]
foreach {att spec} [array get column_specs] {lappend table_specs " $att $spec"}
@@ -1570,18 +1570,18 @@
foreach {slot_name slot} [my array get db_slot] {
$slot instvar name column_name
if {$column_name ne [my id_column]} {
- lappend updates "$column_name = :$name"
- lappend vars $name
+ lappend updates "$column_name = :$name"
+ lappend vars $name
}
}
if {[llength $updates] == 0} return
my instproc save {} [subst {
::xo::dc transaction {
- next
- my instvar object_id $vars
- ::xo::dc dml update_[my table_name] {update [my table_name]
- set [join $updates ,] where [my id_column] = :object_id
- }
+ next
+ my instvar object_id $vars
+ ::xo::dc dml update_[my table_name] {update [my table_name]
+ set [join $updates ,] where [my id_column] = :object_id
+ }
}
}]
}
@@ -1596,14 +1596,14 @@
my log "ID insert in $__table_name, id = $__id = [my set $__id]"
next
foreach {__slot_name __slot} [[self class] array get db_slot] {
- my instvar $__slot_name
- if {[info exists $__slot_name]} {
- lappend __vars $__slot_name
- lappend __atts [$__slot column_name]
- }
+ my instvar $__slot_name
+ if {[info exists $__slot_name]} {
+ lappend __vars $__slot_name
+ lappend __atts [$__slot column_name]
+ }
}
::xo::dc dml insert_$__table_name "insert into $__table_name
- ([join $__atts ,]) values (:[join $__vars ,:])"
+ ([join $__atts ,]) values (:[join $__vars ,:])"
}
}
@@ -1622,7 +1622,7 @@
}
if {[string length $sql_package_name] > 30} {
error "SQL package_name '$sql_package_name' can be maximal 30 characters long!\
- Please specify a shorter sql_package_name in the class definition."
+ Please specify a shorter sql_package_name in the class definition."
}
if {$sql_package_name eq ""} {
error "Cannot determine SQL package_name. Please specify it explicitely!"
@@ -1644,12 +1644,12 @@
if {![regexp {^[[:alpha:]_][[:alnum:]_]*$} [my table_name]]} {
error "Table name '[my table_name]' is unsafe in SQL: \
- Please specify a different table_name$table_name_error_tail."
+ Please specify a different table_name$table_name_error_tail."
}
if {[string length [my table_name]] > 30} {
error "SQL table_name '[my table_name]' can be maximal 30 characters long!\
- Please specify a shorter table_name in the class definition."
+ Please specify a shorter table_name in the class definition."
}
if {![regexp {^[[:alpha:]_][[:alnum:]_]*$} [my id_column]]} {
@@ -1676,7 +1676,7 @@
if {[my with_table]} {
set table_definition [my table_definition]
if {$table_definition ne ""} {
- ::xo::db::require table [my table_name] $table_definition
+ ::xo::db::require table [my table_name] $table_definition
}
my mk_save_method
@@ -1687,13 +1687,13 @@
::xo::db::Class instproc get_context {package_id_var user_id_var ip_var} {
my upvar \
- $package_id_var package_id \
- $user_id_var user_id \
- $ip_var ip
+ $package_id_var package_id \
+ $user_id_var user_id \
+ $ip_var ip
if {![info exists package_id]} {
if {[info commands ::xo::cc] ne ""} {
- set package_id [::xo::cc package_id]
+ set package_id [::xo::cc package_id]
} elseif {[ns_conn isconnected]} {
set package_id [ad_conn package_id]
} else {
@@ -1702,7 +1702,7 @@
}
if {![info exists user_id]} {
if {[info commands ::xo::cc] ne ""} {
- set user_id [::xo::cc user_id]
+ set user_id [::xo::cc user_id]
} elseif {[ns_conn isconnected]} {
set user_id [ad_conn user_id]
} else {
@@ -1711,9 +1711,9 @@
}
if {![info exists ip]} {
if {[ns_conn isconnected]} {
- set ip [ns_conn peeraddr]
+ set ip [ns_conn peeraddr]
} else {
- set ip [ns_info address]
+ set ip [ns_info address]
}
}
}
@@ -1727,7 +1727,7 @@
my get_context package_id creation_user creation_ip
set id [::xo::db::sql::acs_object new \
- -object_type [::xo::db::Class class_to_object_type [self]] \
+ -object_type [::xo::db::Class class_to_object_type [self]] \
-title $object_title \
-package_id $package_id \
-creation_user $creation_user \
@@ -1763,13 +1763,13 @@
my get_context package_id creation_user creation_ip
::xo::dc transaction {
set id [my new_acs_object \
- -package_id $package_id \
- -creation_user $creation_user \
- -creation_ip $creation_ip \
- ""]
+ -package_id $package_id \
+ -creation_user $creation_user \
+ -creation_ip $creation_ip \
+ ""]
#[self class] set during_fetch 1
if {[catch {my create ::$id {*}$args} errorMsg]} {
- my log "Error: $errorMsg, $::errorInfo"
+ my log "Error: $errorMsg, $::errorInfo"
}
#[self class] unset during_fetch
my initialize_acs_object ::$id $id
@@ -1815,8 +1815,8 @@
method to avoid object name clashes.
@destroy_on_cleanup If this flag is true, the objects (and ordered
- composite) will be automatically destroyed on cleaup (typically
- after the request was processed).
+ composite) will be automatically destroyed on cleaup (typically
+ after the request was processed).
@initialize can be used to avoid full initialization, when
a large series of of objects is loaded. Per default, these objects
@@ -1841,37 +1841,37 @@
set sets [uplevel [list ::xo::dc sets -dbn $dbn [self proc] $sql]]
foreach selection $sets {
if {$named_objects} {
- set object_name ::[ns_set get $selection $object_named_after]
- set o [$object_class create $object_name]
+ set object_name ::[ns_set get $selection $object_named_after]
+ set o [$object_class create $object_name]
} else {
- set o [$object_class new]
+ set o [$object_class new]
}
if {$as_ordered_composite} {
- $__result add $o
+ $__result add $o
} else {
- if {$destroy_on_cleanup} {
- $o destroy_on_cleanup
- }
- lappend __result $o
+ if {$destroy_on_cleanup} {
+ $o destroy_on_cleanup
+ }
+ lappend __result $o
}
foreach {att val} [ns_set array $selection] {$o set $att $val}
if {[$o exists object_type]} {
- # set the object type if it looks like managed from XOTcl
- if {[string match "::*" [set ot [$o set object_type]] ]} {
- $o class $ot
- }
+ # set the object type if it looks like managed from XOTcl
+ if {[string match "::*" [set ot [$o set object_type]] ]} {
+ $o class $ot
+ }
}
if {$initialize && [$o istype ::xo::db::Object]} {
- if {![$o exists package_id]} {
- if {[$o exists object_package_id]} {
- $o set package_id [$o set object_package_id]
- } else {
- ns_log warning "[namespace tail [$o info class]] $o has no package_id and no object_package_id"
- }
- }
- if {[catch {$o initialize_loaded_object} errorMsg]} {
- ns_log error "$o initialize_loaded_object => [$o info vars] -> $errorMsg"
- }
+ if {![$o exists package_id]} {
+ if {[$o exists object_package_id]} {
+ $o set package_id [$o set object_package_id]
+ } else {
+ ns_log warning "[namespace tail [$o info class]] $o has no package_id and no object_package_id"
+ }
+ }
+ if {[catch {$o initialize_loaded_object} errorMsg]} {
+ ns_log error "$o initialize_loaded_object => [$o info vars] -> $errorMsg"
+ }
}
#my log "--DB more = $continue [$o serialize]"
}
@@ -1890,15 +1890,15 @@
set tn [$cl table_name]
if {$tn ne ""} {
lappend tables $tn
- #my log "--db_slots of $cl = [$cl array get db_slot]"
- foreach {slot_name slot} [$cl array get db_slot] {
+ #my log "--db_slots of $cl = [$cl array get db_slot]"
+ foreach {slot_name slot} [$cl array get db_slot] {
# avoid duplicate output names
set name [$slot name]
if {![info exists names($name)]} {
lappend attributes [$slot attribute_reference $tn]
}
set names($name) 1
- }
+ }
if {$cl ne [self]} {
lappend join_expressions "$tn.[$cl id_column] = [my table_name].$id_column"
}
@@ -1943,16 +1943,16 @@
if {$tn ne ""} {
lappend tables $tn
- if {$all_attributes} {
- foreach {slot_name slot} [$cl array get db_slot] {
+ if {$all_attributes} {
+ foreach {slot_name slot} [$cl array get db_slot] {
# avoid duplicate output names
set name [$slot name]
if {![info exists names($name)]} {
lappend select_attributes [$slot attribute_reference $tn]
}
set names($name) 1
- }
- }
+ }
+ }
if {$cl ne [self]} {
lappend join_expressions "$tn.[$cl id_column] = [my table_name].$id_column"
}
@@ -1968,11 +1968,11 @@
}
set sql [::xo::dc select \
- -vars [join $select_attributes ,] \
- -from "[join $tables ,] $from_clause" \
- -where [string trim "[join $join_expressions { and }] $where_clause"] \
- -orderby $orderby \
- -limit $limit -offset $offset]
+ -vars [join $select_attributes ,] \
+ -from "[join $tables ,] $from_clause" \
+ -where [string trim "[join $join_expressions { and }] $where_clause"] \
+ -orderby $orderby \
+ -limit $limit -offset $offset]
return $sql
}
@@ -2047,10 +2047,10 @@
[my info class] get_context package_id creation_user creation_ip
::xo::dc transaction {
set id [[my info class] new_acs_object \
- -package_id $package_id \
- -creation_user $creation_user \
- -creation_ip $creation_ip \
- ""]
+ -package_id $package_id \
+ -creation_user $creation_user \
+ -creation_ip $creation_ip \
+ ""]
[my info class] initialize_acs_object [self] $id
my insert
}
@@ -2075,7 +2075,7 @@
{references ""}
{min_n_values 1}
{max_n_values 1}
- {create_acs_attribute true}
+ {create_acs_attribute true}
}
::xo::db::Attribute instproc create_attribute {} {
@@ -2087,7 +2087,7 @@
attribute_name = :column_name and object_type = :object_type} 1]} {
if {![::xo::db::Class object_type_exists_in_db -object_type $object_type]} {
- $domain create_object_type
+ $domain create_object_type
}
::xo::db::sql::acs_attribute create_attribute \
@@ -2124,7 +2124,7 @@
set sc [[my domain] info superclass]
if {![$sc istype ::xo::db::Class]} {set sc ::xo::db::Object}
append column_spec " REFERENCES [$sc table_name]([$sc id_column])\
- ON DELETE CASCADE"
+ ON DELETE CASCADE"
}
#
# Constraints
Index: openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl,v
diff -u -r1.29.6.1 -r1.29.6.2
--- openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 11 Feb 2014 11:53:08 -0000 1.29.6.1
+++ openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 14 Feb 2014 18:20:44 -0000 1.29.6.2
@@ -1,4 +1,4 @@
-ad_library {
+xad_library {
Definition of a package manager for creating XOTcl package objects
@author Gustaf Neumann (neumann@wu-wien.ac.at)
@@ -31,7 +31,7 @@
and ppm.party_id = :party_id
and ppm.privilege = :privilege
} -limit 1]
- ::xo::dc get_value get_package_id $sql
+ ::xo::dc get_value get_package_id $sql
} else {
::xo::parameter get_package_id_from_package_key -package_key $package_key
}
@@ -45,17 +45,17 @@
my instvar package_key
if {$include_unmounted} {
set result [::xo::dc list get_xowiki_packages {select package_id \
- from apm_packages where package_key = :package_key}]
+ from apm_packages where package_key = :package_key}]
} else {
set result [::xo::dc list get_mounted_packages {select package_id \
- from apm_packages p, site_nodes s \
- where package_key = :package_key and s.object_id = p.package_id}]
+ from apm_packages p, site_nodes s \
+ where package_key = :package_key and s.object_id = p.package_id}]
}
if {$closure} {
foreach subclass [my info subclass] {
- foreach id [$subclass instances -include_unmounted $include_unmounted -closure true] {
- lappend result $id
- }
+ foreach id [$subclass instances -include_unmounted $include_unmounted -closure true] {
+ lappend result $id
+ }
}
}
return [lsort -integer $result]
@@ -120,7 +120,7 @@
} else {
my require -url $url $package_id
}
-
+
#
# In case the login expired, we can force an early login to
# prevent later login redirects, which can cause problems
@@ -129,9 +129,9 @@
# might not require the real user_id.
#
#my msg "force [$package_id force_refresh_login] &&\
- # [::xo::cc set untrusted_user_id] != [::xo::cc user_id]"
+ # [::xo::cc set untrusted_user_id] != [::xo::cc user_id]"
if {[$package_id force_refresh_login] &&
- [::xo::cc set untrusted_user_id] != [::xo::cc user_id]} {
+ [::xo::cc set untrusted_user_id] != [::xo::cc user_id]} {
auth::require_login
}
@@ -201,7 +201,7 @@
#
# get apm_package class #### missing in acs_attributes: instance_name, default_locale
#::xo::db::Class get_class_from_db -object_type apm_package
-
+
#ns_log notice [::xo::db::apm_package serialize]
#ns_log notice =======================================
@@ -219,7 +219,7 @@
url
{context ::xo::cc}
package_url
- {force_refresh_login false}
+ {force_refresh_login false}
}
::xo::Package instforward query_parameter {%my set context} %proc
@@ -237,7 +237,7 @@
#my log "--get_parameter <$attribute> <$default> returned <$param>"
return $param
}
-
+
::xo::Package instproc init args {
my instvar id url
set package_url [lindex [site_node::get_url_from_object_id -object_id $id] 0]
@@ -333,7 +333,7 @@
eval [::xo::cc set __continuation]
} else {
if {[string length $text] > 1} {
- set status_code [expr {[::xo::cc exists status_code] ? [::xo::cc set status_code] : 200}]
+ set status_code [expr {[::xo::cc exists status_code] ? [::xo::cc set status_code] : 200}]
#my log "REPLY [my set delivery] 200 [my set mime_type]"
[my set delivery] $status_code [my set mime_type] $text
}
@@ -374,7 +374,7 @@
#my log "--after adp"
return $text
}
-
+
#ns_log notice [::xo::Package serialize]
}
Index: openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl,v
diff -u -r1.15.6.2 -r1.15.6.3
--- openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl 11 Feb 2014 11:53:08 -0000 1.15.6.2
+++ openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl 14 Feb 2014 18:20:44 -0000 1.15.6.3
@@ -160,16 +160,16 @@
# Methods on the parameter class object
#
parameter proc get_package_key_from_id {
- -package_id:required
- } {
+ -package_id:required
+ } {
return [ns_cache eval xotcl_object_type_cache package_key-$package_id {
::xo::dc get_value get_package_key \
"select package_key from apm_packages where package_id = :package_id"
}]
}
parameter proc get_package_id_from_package_key {
- -package_key:required
- } {
+ -package_key:required
+ } {
return [ns_cache eval xotcl_object_type_cache package_id-$package_key {
::xo::dc get_value get_package_id \
[::xo::dc select -vars package_id -from apm_packages \
@@ -196,11 +196,11 @@
}
parameter proc get_parameter_object {
- -parameter_name:required
- -package_id
- -package_key
- {-retry true}
- } {
+ -parameter_name:required
+ -package_id
+ -package_key
+ {-retry true}
+ } {
::xo::PackageMgr instvar package_class
if {![info exists package_key]} {
set package_key [my get_package_key_from_id -package_id $package_id]
@@ -264,10 +264,10 @@
}
parameter proc get_from_package_key {
- -package_key:required
- -parameter:required
- -default
- } {
+ -package_key:required
+ -parameter:required
+ -default
+ } {
set parameter_obj [my get_parameter_object -package_key $package_key -parameter_name $parameter]
if {$parameter_obj eq ""} {
if {[info exists default]} {return $default}
@@ -280,17 +280,17 @@
}
parameter proc get {
- -package_id
- -parameter:required
- -default
- {-retry true}
- } {
+ -package_id
+ -parameter:required
+ -default
+ {-retry true}
+ } {
if {![info exists package_id]} {
# try to get the package id;
# if everything fails, use kernel_id (to be compatible with trad. parameter::get)
set package_id [expr {[info commands ::xo::cc] ne "" ?
- [::xo::cc package_id] :
- [ns_conn isconnected] ? [ad_conn package_id] : [ad_acs_kernel_id]}]
+ [::xo::cc package_id] :
+ [ns_conn isconnected] ? [ad_conn package_id] : [ad_acs_kernel_id]}]
}
set parameter_obj [my get_parameter_object -parameter_name $parameter -package_id $package_id -retry $retry]
if {$parameter_obj ne ""} {
@@ -357,20 +357,20 @@
-sql [::xo::db::apm_parameter instance_select_query] \
-object_class ::xo::db::apm_parameter \
-as_ordered_composite false -named_objects true -destroy_on_cleanup false
-# ns_log notice "--p got [llength [::xo::db::apm_parameter info instances]] parameters"
+ # ns_log notice "--p got [llength [::xo::db::apm_parameter info instances]] parameters"
#foreach p [::xo::db::apm_parameter info instances] { ns_log notice [$p serialize] }
parameter proc initialize_parameters {} {
# Get those parameter values, which are different from the default and
# remember theses per package_id.
xo::dc foreach get_non_default_values {
select p.parameter_id, p.package_key, v.package_id, p.parameter_name,
- p.default_value, v.attr_value
+ p.default_value, v.attr_value
from apm_parameters p, apm_parameter_values v
where p.parameter_id = v.parameter_id
and coalesce(attr_value,'') <> coalesce(p.default_value,'')
} {
-# ns_log notice "--p $parameter_id $package_key $package_id $parameter_name <$attr_value>"
+ # ns_log notice "--p $parameter_id $package_key $package_id $parameter_name <$attr_value>"
$parameter_id set_per_package_instance_value $package_id $attr_value
}
}
@@ -381,9 +381,9 @@
# For the time being: catch changed parameter values
#
ad_proc -public -callback subsite::parameter_changed -impl xotcl-param-procs {
- -package_id:required
- -parameter:required
- -value:required
+ -package_id:required
+ -parameter:required
+ -value:required
} {
Implementation of subsite::parameter_changed for xotcl param procs
@@ -398,8 +398,8 @@
#
set package_key [apm_package_key_from_id $package_id]
set parameter_obj [::xo::parameter get_parameter_object \
- -package_key $package_key \
- -parameter_name $parameter]
+ -package_key $package_key \
+ -parameter_name $parameter]
if {$parameter_obj eq ""} {
# We have still no parameter. There must be something significantly wrong.
@@ -416,43 +416,43 @@
#
# A few test cases
#
-# ns_log notice "xotcl-request-monitor.max-url-stats=[parameter get_from_package_key \
-# -package_key xotcl-request-monitor \
-# -parameter max-url-stats]"
+ # ns_log notice "xotcl-request-monitor.max-url-stats=[parameter get_from_package_key \
+ # -package_key xotcl-request-monitor \
+ # -parameter max-url-stats]"
-# set cmd1 "::parameter::get_from_package_key \
-# -package_key xotcl-request-monitor \
-# -parameter max-url-stats"
-# set cmd2 "::xo::parameter get_from_package_key \
-# -package_key xotcl-request-monitor \
-# -parameter max-url-stats"
-# ns_log notice "GET_PACKAGE_KEY old: [time $cmd1 100], new: [time $cmd2 100]"
+ # set cmd1 "::parameter::get_from_package_key \
+ # -package_key xotcl-request-monitor \
+ # -parameter max-url-stats"
+ # set cmd2 "::xo::parameter get_from_package_key \
+ # -package_key xotcl-request-monitor \
+ # -parameter max-url-stats"
+ # ns_log notice "GET_PACKAGE_KEY old: [time $cmd1 100], new: [time $cmd2 100]"
-# set pid 4906
-# set pname trend-elements
-# ns_log notice "xotcl-request-monitor.$pname=[parameter get \
-# -package_id $pid -parameter $pname]"
-# set cmd1 "::parameter::get -package_id $pid -parameter $pname"
-# set cmd2 "::xo::parameter get -package_id $pid -parameter $pname"
-# ns_log notice "GET old: [time $cmd1 100], new: [time $cmd2 100]"
+ # set pid 4906
+ # set pname trend-elements
+ # ns_log notice "xotcl-request-monitor.$pname=[parameter get \
+ # -package_id $pid -parameter $pname]"
+ # set cmd1 "::parameter::get -package_id $pid -parameter $pname"
+ # set cmd2 "::xo::parameter get -package_id $pid -parameter $pname"
+ # ns_log notice "GET old: [time $cmd1 100], new: [time $cmd2 100]"
#
#
#
#
-# set p [parameter get_parameter_object -package_key xowiki -parameter_name dummy]
-# ns_log notice "--p getobject => $p"
-# if {$p eq ""} {
-# set p [::xo::db::apm_parameter new_persistent_object \
-# -package_key "xowiki" \
-# -parameter_name "dummy" \
-# -default_value "testing" \
-# -description "Description of test parameter" \
-# -section_name ""]
-# ns_log notice "--p created new parameter $p"
-# }
-# $p append default_value "1"
-# $p save
+ # set p [parameter get_parameter_object -package_key xowiki -parameter_name dummy]
+ # ns_log notice "--p getobject => $p"
+ # if {$p eq ""} {
+ # set p [::xo::db::apm_parameter new_persistent_object \
+ # -package_key "xowiki" \
+ # -parameter_name "dummy" \
+ # -default_value "testing" \
+ # -description "Description of test parameter" \
+ # -section_name ""]
+ # ns_log notice "--p created new parameter $p"
+ # }
+ # $p append default_value "1"
+ # $p save
# $p delete
}
Index: openacs-4/packages/xotcl-core/tcl/10-recreation-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/10-recreation-procs.tcl,v
diff -u -r1.9 -r1.9.2.1
--- openacs-4/packages/xotcl-core/tcl/10-recreation-procs.tcl 12 Aug 2013 20:01:06 -0000 1.9
+++ openacs-4/packages/xotcl-core/tcl/10-recreation-procs.tcl 14 Feb 2014 18:20:44 -0000 1.9.2.1
@@ -16,10 +16,10 @@
if {![::xotcl::Object isclass ::xotcl::RecreationClass]} {
::xotcl::Class create ::xotcl::RecreationClass -ad_doc {
This meta-class controlls the behavior of classes (and optionally
- their instances), when the classes (or their instances) are
+ their instances), when the classes (or their instances) are
overwritten by same named new objects; we call this situation
a recreate of an object.
-
+
Normally, when files with e.g. class definitions are sourced,
the classes and objects are newly defined. When e.g. class
definitions exists already in this file, these classes are
@@ -42,7 +42,7 @@
reconfigure: reconfigure class (default 1)
reinit: run init after configure for this class (default unset)
instrecreate: handle recreate of class instances (default unset)
- When this flag is set to 0, instreconfigure and instreinit are ignored.
+ When this flag is set to 0, instreconfigure and instreinit are ignored.
instreconfigure: reconfigure instances of this class (default 1)
instreinit: re-init instances of this class (default unset)
@@ -54,43 +54,43 @@
{instreinit}
} -superclass ::xotcl::Class \
-instproc recreate {obj args} {
- #my log "### recreateclass instproc $obj <$args>"
- # the minimal reconfiguration is to set the class and remove methods
- $obj class [self]
- foreach p [$obj info procs] {$obj proc $p {} {}}
- if {![my exists instrecreate]} {
- #my log "### no instrecreate for $obj <$args>"
- next
- return
- }
- if {[my exists instreconfigure]} {
- # before we set defaults, we must unset vars
- foreach var [$obj info vars] {$obj unset $var}
- # set defaults and run configure
+ #my log "### recreateclass instproc $obj <$args>"
+ # the minimal reconfiguration is to set the class and remove methods
+ $obj class [self]
+ foreach p [$obj info procs] {$obj proc $p {} {}}
+ if {![my exists instrecreate]} {
+ #my log "### no instrecreate for $obj <$args>"
+ next
+ return
+ }
+ if {[my exists instreconfigure]} {
+ # before we set defaults, we must unset vars
+ foreach var [$obj info vars] {$obj unset $var}
+ # set defaults and run configure
$obj set_instance_vars_defaults
- $obj configure {*}$args
- #my log "### instproc recreate $obj + configure $args ..."
- }
- if {[my exists instreinit]} {
- #my log "### instreinit for $obj <$args>"
- $obj init
- #my log "### instproc recreate $obj + init ..."
- }
+ $obj configure {*}$args
+ #my log "### instproc recreate $obj + configure $args ..."
+ }
+ if {[my exists instreinit]} {
+ #my log "### instreinit for $obj <$args>"
+ $obj init
+ #my log "### instproc recreate $obj + init ..."
+ }
} -proc recreate {obj args} {
- #my log "### recreateclass proc $obj <$args>"
- # the minimal reconfiguration is to set the class and remove methods
- $obj class [self]
- foreach p [$obj info instprocs] {$obj instproc $p {} {}}
- if {[my exists reconfigure]} {
- # before we set defaults, we must unset vars
- foreach var [$obj info vars] {$obj unset $var}
- # set defaults and run configure
+ #my log "### recreateclass proc $obj <$args>"
+ # the minimal reconfiguration is to set the class and remove methods
+ $obj class [self]
+ foreach p [$obj info instprocs] {$obj instproc $p {} {}}
+ if {[my exists reconfigure]} {
+ # before we set defaults, we must unset vars
+ foreach var [$obj info vars] {$obj unset $var}
+ # set defaults and run configure
$obj set_instance_vars_defaults
- $obj configure {*}$args
- }
- if {[my exists reinit]} {
- $obj init
- }
+ $obj configure {*}$args
+ }
+ if {[my exists reinit]} {
+ $obj init
+ }
}
::Serializer exportObjects {
@@ -173,4 +173,11 @@
my log "-- [self args]"; next
}
#::xotcl::Class instmixin RR
-}
\ No newline at end of file
+}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/20-Ordered-Composite-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/20-Ordered-Composite-procs.tcl,v
diff -u -r1.21.2.2 -r1.21.2.3
--- openacs-4/packages/xotcl-core/tcl/20-Ordered-Composite-procs.tcl 30 Sep 2013 11:38:40 -0000 1.21.2.2
+++ openacs-4/packages/xotcl-core/tcl/20-Ordered-Composite-procs.tcl 14 Feb 2014 18:20:44 -0000 1.21.2.3
@@ -69,7 +69,7 @@
if {[my exists __children]} {
#my log "--W destroying children [my set __children]"
foreach c [my set __children] {
- if {[my isobject $c]} {$c destroy}
+ if {[my isobject $c]} {$c destroy}
}
}
#show_stack;my log "--W children murdered, now next, chlds=[my info children]"
@@ -136,11 +136,11 @@
set yp [string first . $y]
if {$xp == -1 && $yp == -1} {
if {$x < $y} {
- return -1
+ return -1
} elseif {$x > $y} {
- return 1
+ return 1
} else {
- return $def
+ return $def
}
} elseif {$xp == -1} {
set yh [string range $y 0 $yp-1]
@@ -153,14 +153,14 @@
set yh [string range $y 0 $yp]
#puts "xh=$xh yh=$yh"
if {$xh < $yh} {
- return -1
+ return -1
} elseif {$xh > $yh} {
- return 1
+ return 1
} else {
- incr xp
- incr yp
- #puts "rest [string range $x $xp end] [string range $y $yp end]"
- return [my __value_compare [string range $x $xp end] [string range $y $yp end] $def]
+ incr xp
+ incr yp
+ #puts "rest [string range $x $xp end] [string range $y $yp end]"
+ return [my __value_compare [string range $x $xp end] [string range $y $yp end] $def]
}
}
}
@@ -180,3 +180,9 @@
}
}
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/30-widget-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/30-widget-procs.tcl,v
diff -u -r1.54.2.2 -r1.54.2.3
--- openacs-4/packages/xotcl-core/tcl/30-widget-procs.tcl 5 Oct 2013 12:36:53 -0000 1.54.2.2
+++ openacs-4/packages/xotcl-core/tcl/30-widget-procs.tcl 14 Feb 2014 18:20:44 -0000 1.54.2.3
@@ -89,15 +89,15 @@
#
# search for autoimports: all commands are executed in the ... currently not needed
#
-# set class [$me info class]
-# foreach cl [concat $class [$class info heritage]] {
-# my log "tdom EVAL $level ns=[namespace current] autoimport in $cl?[$cl exists autoimport]"
-# if {[$cl exists autoimport]} {
-# my log "tdom IMPO [$cl autoimport] into $me"
-# namespace eval ::xo::tmp [list namespace import -force [$cl autoimport]]
-# }
-# }
-# #my log "tdom CMDS $level [lsort [info commands ::xo::tmp::*]]"
+ # set class [$me info class]
+ # foreach cl [concat $class [$class info heritage]] {
+ # my log "tdom EVAL $level ns=[namespace current] autoimport in $cl?[$cl exists autoimport]"
+ # if {[$cl exists autoimport]} {
+ # my log "tdom IMPO [$cl autoimport] into $me"
+ # namespace eval ::xo::tmp [list namespace import -force [$cl autoimport]]
+ # }
+ # }
+ # #my log "tdom CMDS $level [lsort [info commands ::xo::tmp::*]]"
if {$createcmd ne ""} {
#
@@ -231,24 +231,24 @@
while {[regexp {^([^\x002]*)\x002\(\x001([^\x001]*)\x001\)\x002(.*)$} $text _ \
before key text]} {
- append return_text $before
- lassign [split $key .] package_key message_key
- set url [export_vars -base $::xo::acs_lang_url/edit-localized-message {
- {locale {[ad_conn locale]} }
- package_key message_key
- {return_url [ad_return_url]}
- }]
- if {[lang::message::message_exists_p [ad_conn locale] $key]} {
- set type localized
- } elseif { [lang::message::message_exists_p "en_US" $key] } {
- set type us_only
- } else { # message key is missing
- set url [export_vars -base $::xo::acs_lang_url/localized-message-new {
- {locale en_US } package_key message_key
- {return_url [ad_return_url]}
- }]
- set type missing
- }
+ append return_text $before
+ lassign [split $key .] package_key message_key
+ set url [export_vars -base $::xo::acs_lang_url/edit-localized-message {
+ {locale {[ad_conn locale]} }
+ package_key message_key
+ {return_url [ad_return_url]}
+ }]
+ if {[lang::message::message_exists_p [ad_conn locale] $key]} {
+ set type localized
+ } elseif { [lang::message::message_exists_p "en_US" $key] } {
+ set type us_only
+ } else { # message key is missing
+ set url [export_vars -base $::xo::acs_lang_url/localized-message-new {
+ {locale en_US } package_key message_key
+ {return_url [ad_return_url]}
+ }]
+ set type missing
+ }
if {!$inline} {
$obj lappend __localizer [::xo::Localizer new -type $type -key $key -url $url]
} else {
@@ -265,8 +265,8 @@
set obj [uplevel self]
if {[$obj exists __localizer]} {
foreach l [$obj set __localizer] {
- $l render
- $l destroy
+ $l render
+ $l destroy
}
}
}
@@ -276,56 +276,56 @@
Localizer instproc render {} {
html::a -title [my key] -href [my url] {
switch -- [my type] {
- localized {set char o; set style "color: green"}
+ localized {set char o; set style "color: green"}
us_only {set char *; set style "background-color: yellow; color: red;"}
missing {set char @; set style "background-color: red; color: white;"}
}
html::span -style $style {html::t $char}
}
}
Localizer instproc render {} {
- html::a -title [my key] -href [my url] {
- set path /resources/acs-templating/xinha-nightly/plugins/
- switch -- [my type] {
- localized {set img ImageManager/img/btn_ok.gif}
- us_only {set img Filter/img/ed_filter.gif}
- missing {set img LangMarks/img/en.gif}
- }
- html::img -alt [my type] -src $path/$img -width 16 -height 16 -border 0
- }
- }
+ html::a -title [my key] -href [my url] {
+ set path /resources/acs-templating/xinha-nightly/plugins/
+ switch -- [my type] {
+ localized {set img ImageManager/img/btn_ok.gif}
+ us_only {set img Filter/img/ed_filter.gif}
+ missing {set img LangMarks/img/en.gif}
+ }
+ html::img -alt [my type] -src $path/$img -width 16 -height 16 -border 0
+ }
+ }
## todo : make these checks only in trn mode (additional mixin)
Class Drawable \
-superclass ::xo::tdom::AttributeManager \
-instproc _ {attr} {
- my set $attr
+ my set $attr
} \
-instproc render_localizer {} {
}
Class TRN-Mode \
-instproc _ {attr} {
- return [::xo::localize [my set $attr]]
+ return [::xo::localize [my set $attr]]
} \
-instproc render_localizer {} {
- #my log "-- "
- if {[my exists __localizer]} {
- foreach l [my set __localizer] {
- $l render
- $l destroy
- }
- }
- my set __localizer [list]
+ #my log "-- "
+ if {[my exists __localizer]} {
+ foreach l [my set __localizer] {
+ $l render
+ $l destroy
+ }
+ }
+ my set __localizer [list]
} \
-instproc render-data args {
- next
- my render_localizer
+ next
+ my render_localizer
} \
-instproc render args {
- next
- my render_localizer
+ next
+ my render_localizer
}
#
@@ -349,9 +349,9 @@
#
Class Table -superclass OrderedComposite \
-parameter [expr {[apm_version_names_compare [ad_acs_version] 5.3.0] == 1 ?
- {{no_data "#xotcl-core.No_Data#"} {renderer TABLE3} name} :
- {{no_data "#xotcl-core.No_Data#"} {renderer TABLE2} name}
- }]
+ {{no_data "#xotcl-core.No_Data#"} {renderer TABLE3} name} :
+ {{no_data "#xotcl-core.No_Data#"} {renderer TABLE2} name}
+ }]
Table instproc destroy {} {
#my log "-- "
@@ -395,11 +395,11 @@
set mixinname ${cl}::${renderer}::[namespace tail $child]
if {[::xotcl::Object isclass $mixinname]} {
#if {![$child istype ::xo::OrderedComposite::Child]} continue
- $child instmixin $mixinname
- if {$trn_mixin ne ""} {$child instmixin add $trn_mixin}
- #my log "-- $child using instmixin <[$child info instmixin]>"
+ $child instmixin $mixinname
+ if {$trn_mixin ne ""} {$child instmixin add $trn_mixin}
+ #my log "-- $child using instmixin <[$child info instmixin]>"
} else {
- #my log "-- no mixin $mixinname"
+ #my log "-- no mixin $mixinname"
}
}
Table::Line instmixin $trn_mixin
@@ -416,166 +416,166 @@
set label [_ $message_key]
}
set value [string map {\" \\\" \n \r)} $label]
+ lappend line \"$value\"
+ }
+ append output [join $line ,] \n
+ foreach row [my children] {
+ set line [list]
+ foreach column [[self]::__columns children] {
+ if {[$column exists no_csv]} continue
+ set value [string map {\" \\\" \n \r} [$row set [$column set name]]]
lappend line \"$value\"
}
append output [join $line ,] \n
- foreach row [my children] {
- set line [list]
- foreach column [[self]::__columns children] {
- if {[$column exists no_csv]} continue
- set value [string map {\" \\\" \n \r} [$row set [$column set name]]]
- lappend line \"$value\"
- }
- append output [join $line ,] \n
- }
- #ns_return 200 text/plain $output
- my instvar name
- if {![my exists name]} {set name "table"}
- set fn [xo::backslash_escape \" $name.csv]
- ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=\"$fn\""
- ns_return 200 text/csv $output
}
+ #ns_return 200 text/plain $output
+ my instvar name
+ if {![my exists name]} {set name "table"}
+ set fn [xo::backslash_escape \" $name.csv]
+ ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=\"$fn\""
+ ns_return 200 text/csv $output
+}
- Class create Table::Line \
- -superclass ::xo::Drawable \
- -instproc attlist {name atts {extra ""}} {
- set result [list]
- foreach att $atts {
- set varname $name.$att
- if {[my exists $varname]} {
- lappend result $att [::xo::localize [my set $varname]]
- }
- }
- foreach {att val} $extra {lappend result $att $val}
- return $result
+Class create Table::Line \
+ -superclass ::xo::Drawable \
+ -instproc attlist {name atts {extra ""}} {
+ set result [list]
+ foreach att $atts {
+ set varname $name.$att
+ if {[my exists $varname]} {
+ lappend result $att [::xo::localize [my set $varname]]
+ }
}
-
+ foreach {att val} $extra {lappend result $att $val}
+ return $result
+ }
- #
- # Define elements of a Table
- #
- namespace eval ::xo::Table {
- Class Action \
- -superclass ::xo::OrderedComposite::Child \
- -parameter {label url {tooltip {}}}
- #-proc destroy {} {
- # my log "-- DESTROY "
- # show_stack
- # next
- # }
- Class Field \
- -superclass ::xo::OrderedComposite::Child \
- -parameter {label {html {}} {orderby ""} name {richtext false} no_csv {CSSclass ""} {hide 0}} \
- -instproc init {} {
- my set name [namespace tail [self]]
- } \
- -instproc get-slots {} {
- set slots [list -[my name]]
- foreach subfield {richtext CSSclass} {
- lappend slots [list -[my name].$subfield ""]
- }
- return $slots
- }
+#
+# Define elements of a Table
+#
+namespace eval ::xo::Table {
+ Class Action \
+ -superclass ::xo::OrderedComposite::Child \
+ -parameter {label url {tooltip {}}}
+ #-proc destroy {} {
+ # my log "-- DESTROY "
+ # show_stack
+ # next
+ # }
- Class BulkAction \
- -superclass ::xo::OrderedComposite::Child \
- -parameter {name id {html {}} {hide 0}} \
- -instproc actions {cmd} {
- #my init
- set grandParent [[my info parent] info parent]
- if {![my exists name]} {my set name [namespace tail [self]]}
- #set M [::xo::OrderedComposite create ${grandParent}::__bulkactions]
- set M [::xo::OrderedComposite create ${grandParent}::__bulkactions -noinit]
- namespace eval $M {namespace import -force ::xo::Table::*}
- $M contains $cmd
- $M set __belongs_to [self]
- $M set __identifier [my set name]
- } \
- -instproc get-slots {} {
- ;
+ Class Field \
+ -superclass ::xo::OrderedComposite::Child \
+ -parameter {label {html {}} {orderby ""} name {richtext false} no_csv {CSSclass ""} {hide 0}} \
+ -instproc init {} {
+ my set name [namespace tail [self]]
+ } \
+ -instproc get-slots {} {
+ set slots [list -[my name]]
+ foreach subfield {richtext CSSclass} {
+ lappend slots [list -[my name].$subfield ""]
}
+ return $slots
+ }
- Class AnchorField \
- -superclass ::xo::Table::Field \
- -instproc get-slots {} {
- set slots [list -[my name]]
- foreach subfield {href title CSSclass} {
- lappend slots [list -[my name].$subfield ""]
- }
- return $slots
- }
+ Class BulkAction \
+ -superclass ::xo::OrderedComposite::Child \
+ -parameter {name id {html {}} {hide 0}} \
+ -instproc actions {cmd} {
+ #my init
+ set grandParent [[my info parent] info parent]
+ if {![my exists name]} {my set name [namespace tail [self]]}
+ #set M [::xo::OrderedComposite create ${grandParent}::__bulkactions]
+ set M [::xo::OrderedComposite create ${grandParent}::__bulkactions -noinit]
+ namespace eval $M {namespace import -force ::xo::Table::*}
+ $M contains $cmd
+ $M set __belongs_to [self]
+ $M set __identifier [my set name]
+ } \
+ -instproc get-slots {} {
+ ;
+ }
- Class HiddenField \
- -superclass ::xo::Table::Field \
- -instproc get-slots {} {
- return [list -[my name]]
- }
+ Class AnchorField \
+ -superclass ::xo::Table::Field \
+ -instproc get-slots {} {
+ set slots [list -[my name]]
+ foreach subfield {href title CSSclass} {
+ lappend slots [list -[my name].$subfield ""]
+ }
+ return $slots
+ }
- Class ImageField \
- -parameter {src width height border title alt} \
- -superclass ::xo::Table::Field \
- -instproc get-slots {} {
- set slots [list -[my name]]
- lappend slots [list -[my name].src [my src]]
- lappend slots [list -[my name].CSSclass [my CSSclass]]
- foreach att {width height border title alt} {
- if {[my exists $att]} {
- lappend slots [list -[my name].$att [my $att]]
- } else {
- lappend slots [list -[my name].$att]
- }
- }
- return $slots
- }
+ Class HiddenField \
+ -superclass ::xo::Table::Field \
+ -instproc get-slots {} {
+ return [list -[my name]]
+ }
- Class ImageAnchorField \
- -superclass ::xo::Table::ImageField \
- -instproc get-slots {} {
- return [concat [next] -[my name].href ""]
- }
+ Class ImageField \
+ -parameter {src width height border title alt} \
+ -superclass ::xo::Table::Field \
+ -instproc get-slots {} {
+ set slots [list -[my name]]
+ lappend slots [list -[my name].src [my src]]
+ lappend slots [list -[my name].CSSclass [my CSSclass]]
+ foreach att {width height border title alt} {
+ if {[my exists $att]} {
+ lappend slots [list -[my name].$att [my $att]]
+ } else {
+ lappend slots [list -[my name].$att]
+ }
+ }
+ return $slots
+ }
- Class ImageField_EditIcon \
- -superclass ImageAnchorField -parameter {
- {src /resources/acs-subsite/Edit16.gif} {width 16} {height 16} {border 0}
- {title "[_ xotcl-core.edit_item]"} {alt "edit"}
- }
-
- Class ImageField_AddIcon \
- -superclass ImageAnchorField -parameter {
- {src /resources/acs-subsite/Add16.gif} {width 16} {height 16} {border 0}
- {title "[_ xotcl-core.add_item]"} {alt "add"}
- }
+ Class ImageAnchorField \
+ -superclass ::xo::Table::ImageField \
+ -instproc get-slots {} {
+ return [concat [next] -[my name].href ""]
+ }
- Class ImageField_ViewIcon \
- -superclass ImageAnchorField -parameter {
- {src /resources/acs-subsite/Zoom16.gif} {width 16} {height 16} {border 0}
- {title "[_ xotcl-core.view_item]"} {alt "view"}
- }
- Class ImageField_DeleteIcon \
- -superclass ImageAnchorField -parameter {
- {src /resources/acs-subsite/Delete16.gif} {width 16} {height 16} {border 0}
- {title "[_ xotcl-core.delete_item]"} {alt "delete"}
- }
-
- # export table elements
- namespace export Field AnchorField HiddenField Action ImageField ImageAnchorField \
- ImageField_EditIcon ImageField_ViewIcon ImageField_DeleteIcon ImageField_AddIcon \
- BulkAction
- }
+ Class ImageField_EditIcon \
+ -superclass ImageAnchorField -parameter {
+ {src /resources/acs-subsite/Edit16.gif} {width 16} {height 16} {border 0}
+ {title "[_ xotcl-core.edit_item]"} {alt "edit"}
+ }
+ Class ImageField_AddIcon \
+ -superclass ImageAnchorField -parameter {
+ {src /resources/acs-subsite/Add16.gif} {width 16} {height 16} {border 0}
+ {title "[_ xotcl-core.add_item]"} {alt "add"}
+ }
+
+ Class ImageField_ViewIcon \
+ -superclass ImageAnchorField -parameter {
+ {src /resources/acs-subsite/Zoom16.gif} {width 16} {height 16} {border 0}
+ {title "[_ xotcl-core.view_item]"} {alt "view"}
+ }
+ Class ImageField_DeleteIcon \
+ -superclass ImageAnchorField -parameter {
+ {src /resources/acs-subsite/Delete16.gif} {width 16} {height 16} {border 0}
+ {title "[_ xotcl-core.delete_item]"} {alt "delete"}
+ }
+
+ # export table elements
+ namespace export Field AnchorField HiddenField Action ImageField ImageAnchorField \
+ ImageField_EditIcon ImageField_ViewIcon ImageField_DeleteIcon ImageField_AddIcon \
+ BulkAction
}
+}
+
namespace eval ::xo::Table {
#
# Class for rendering ::xo::Table as the html TABLE
#
Class TABLE \
-superclass ::xo::Drawable \
-instproc init_renderer {} {
- #my log "--"
- my set __rowcount 0
+ #my log "--"
+ my set __rowcount 0
my set css.table-class list
my set css.tr.even-class list-even
my set css.tr.odd-class list-odd
@@ -585,14 +585,14 @@
html::tr -class list-button-bar {
set cols [llength [[self]::__columns children]]
html::td -colspan $cols -class list-button-bar {
- set children [[self]::__actions children]
- set last [lindex $children end]
- foreach o $children {
- $o render
- if {$o ne $last} {
- html::t -disableOutputEscaping "·"
- }
- }
+ set children [[self]::__actions children]
+ set last [lindex $children end]
+ foreach o $children {
+ $o render
+ if {$o ne $last} {
+ html::t -disableOutputEscaping "·"
+ }
+ }
}
}
}
@@ -621,7 +621,7 @@
TABLE instproc render-body {} {
html::tr -class list-header {
foreach o [[self]::__columns children] {
- $o render
+ $o render
}
}
set children [my children]
@@ -630,15 +630,15 @@
} else {
foreach line [my children] {
#my log "--LINE vars=[my info vars] cL: [[self class] info vars] r=[my renderer]"
- html::tr -class [expr {[my incr __rowcount]%2 ?
+ html::tr -class [expr {[my incr __rowcount]%2 ?
[my set css.tr.odd-class] :
[my set css.tr.even-class] }] {
- foreach field [[self]::__columns children] {
- html::td [concat [list class list] [$field html]] {
- $field render-data $line
- }
- }
- }
+ foreach field [[self]::__columns children] {
+ html::td [concat [list class list] [$field html]] {
+ $field render-data $line
+ }
+ }
+ }
}
}
}
@@ -673,10 +673,10 @@
Class create TABLE::Action \
-superclass ::xo::Drawable \
-instproc render {} {
- html::a -class button -title [my _ tooltip] -href [my url] {
- html::t [my _ label]
- }
- #my log "-- "
+ html::a -class button -title [my _ tooltip] -href [my url] {
+ html::t [my _ label]
+ }
+ #my log "-- "
}
#-proc destroy {} {
# my log "-- DESTROY"
@@ -700,9 +700,9 @@
TABLE::Field instproc render {} {
html::th [concat [list class list] [my html]] {
if {[my set orderby] eq ""} {
- html::t [my _ label]
+ html::t [my _ label]
} else {
- my renderSortLabels
+ my renderSortLabels
}
my render_localizer ;# run this before th is closed
}
@@ -749,23 +749,23 @@
Class create TABLE::AnchorField \
-superclass TABLE::Field \
-instproc render-data {line} {
- if {[$line exists [my name].href] &&
- [set href [$line set [my name].href]] ne ""} {
+ if {[$line exists [my name].href] &&
+ [set href [$line set [my name].href]] ne ""} {
# use the CSS class rather from the Field than not the line
my instvar CSSclass
$line instvar [list [my name].title title]
html::a [my get_local_attributes href title {CSSclass class}] {
- return [next]
- }
- }
- next
+ return [next]
+ }
+ }
+ next
}
Class create TABLE::HiddenField \
-instproc render {} {;} \
-instproc render-data {line} {;}
-
-
+
+
Class create TABLE::ImageField \
-superclass TABLE::Field \
-instproc render-data {line} {
@@ -819,14 +819,14 @@
foreach o $actions { html::li -class "button" {$o render} }
}
}
- }
+ }
} \
-instproc render {} {
- if {![my isobject [self]::__actions]} {my actions {}}
- if {![my isobject [self]::__bulkactions]} {my __bulkactions {}}
+ if {![my isobject [self]::__actions]} {my actions {}}
+ if {![my isobject [self]::__bulkactions]} {my __bulkactions {}}
set bulkactions [[self]::__bulkactions children]
- html::div {
- my render-actions
+ html::div {
+ my render-actions
if {$bulkactions eq ""} {
html::div -class table {
html::table -class [my set css.table-class] {my render-body}
@@ -840,7 +840,7 @@
}
}
}
- }
+ }
}
@@ -900,9 +900,9 @@
#
Object defaultMaster -proc decorate {node} {
- $node appendFromScript {
- set slave [tmpl::div]
- }
+ $node appendFromScript {
+ set slave [tmpl::div]
+ }
return $slave
}
@@ -981,10 +981,17 @@
}
}
if {$statements ne ""} {
- append result \n "\n"
+ append result \n "\n"
}
}
return $result
}
}
-::xo::library source_dependent
\ No newline at end of file
+::xo::library source_dependent
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/40-thread-mod-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/40-thread-mod-procs.tcl,v
diff -u -r1.12.2.1 -r1.12.2.2
--- openacs-4/packages/xotcl-core/tcl/40-thread-mod-procs.tcl 13 Oct 2013 18:15:14 -0000 1.12.2.1
+++ openacs-4/packages/xotcl-core/tcl/40-thread-mod-procs.tcl 14 Feb 2014 18:20:44 -0000 1.12.2.2
@@ -202,19 +202,19 @@
}
nsv_set [self class] [self] $tid
if {[my persistent]} {
- my log "--created new persistent [self class] as $tid pid=[pid]"
+ my log "--created new persistent [self class] as $tid pid=[pid]"
} else {
- my log "--created new [self class] as $tid pid=[pid]"
+ my log "--created new [self class] as $tid pid=[pid]"
}
#my log "--THREAD DO send [self] epoch = [ns_ictl epoch]"
if {[my lightweight]} {
} elseif {![ns_ictl epoch]} {
- #ns_log notice "--THREAD send [self] no epoch"
- # We are during initialization. For some unknown reasons, XOTcl
- # is not available in newly created threads, so we have to care
- # for full initialization, including xotcl blueprint.
- _ns_savenamespaces
- set initcmd [ns_ictl get]
+ #ns_log notice "--THREAD send [self] no epoch"
+ # We are during initialization. For some unknown reasons, XOTcl
+ # is not available in newly created threads, so we have to care
+ # for full initialization, including xotcl blueprint.
+ _ns_savenamespaces
+ set initcmd [ns_ictl get]
}
append initcmd [my set initcmd]
#ns_log notice "INIT $initcmd"
@@ -263,16 +263,16 @@
# -instproc forward args {
# set cp [self calledproc]
# if { $cp eq "attach"
-# || $cp eq "filter"
-# || $cp eq "detachAll"} {
-# next
+# || $cp eq "filter"
+# || $cp eq "detachAll"} {
+# next
# } elseif {$cp eq "destroy"} {
-# eval [my attach] do [self] $cp $args
-# my log "destroy"
-# next
+# eval [my attach] do [self] $cp $args
+# my log "destroy"
+# next
# } else {
-# my log "forwarding [my attach] do [self] $cp $args"
-# eval [my attach] do [self] $cp $args
+# my log "forwarding [my attach] do [self] $cp $args"
+# eval [my attach] do [self] $cp $args
# }
# } -instproc init args {
# my filter forward
@@ -290,3 +290,9 @@
[my server] do [my serverobj] {*}$args
}
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/50-protocol-handler-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/50-protocol-handler-procs.tcl,v
diff -u -r1.8 -r1.8.2.1
--- openacs-4/packages/xotcl-core/tcl/50-protocol-handler-procs.tcl 29 Jul 2013 08:44:14 -0000 1.8
+++ openacs-4/packages/xotcl-core/tcl/50-protocol-handler-procs.tcl 14 Feb 2014 18:20:44 -0000 1.8.2.1
@@ -97,7 +97,7 @@
ns_returnunauthorized
return filter_return
}
-
+
# set common data for all kind of requests
my initialize
@@ -121,7 +121,7 @@
To change that, it would be necessary to register the
filter before the request processor (currently, there
- are no hooks for that).
+ are no hooks for that).
} {
set filter_url [my url]*
set url [my url]/*
@@ -178,15 +178,15 @@
DELETE LOCK UNLOCK OPTIONS
REPORT
} {
- ns_register_filter preauth $method $filter_url [self]
- ns_register_filter preauth $method $root [self]
- ns_register_proc $method $url [self] handle_request
- ns_register_proc $method $root [self] handle_request
+ ns_register_filter preauth $method $filter_url [self]
+ ns_register_filter preauth $method $root [self]
+ ns_register_proc $method $url [self] handle_request
+ ns_register_proc $method $root [self] handle_request
-
- #my log "--ns_register_filter preauth $method $filter_url [self]"
- #my log "--ns_register_proc $method $url [self] handle_request"
- }
+
+ #my log "--ns_register_filter preauth $method $filter_url [self]"
+ #my log "--ns_register_proc $method $url [self] handle_request"
+ }
ns_register_proc OPTIONS / ::xo::minimalProctocolHandler OPTIONS
ns_register_proc PROPFIND / ::xo::minimalProctocolHandler PROPFIND
}
@@ -207,9 +207,9 @@
dispatches the HTTP requests.
} {
my instvar uri method user_id
-
+
#my log "--handle_request method=$method uri=$uri\
- # userid=$user_id -ns_conn query '[ns_conn query]'"
+ # userid=$user_id -ns_conn query '[ns_conn query]'"
if {[my exists package]} {
my set package_id [my get_package_id]
}
@@ -243,7 +243,7 @@
ProtocolHandler instproc multiStatus {body} {
append _ {} \n \
- {} $body \n \n
+ {} $body \n \n
}
ProtocolHandler instproc multiStatusResonse {
@@ -253,46 +253,46 @@
} {
#my log "multiStatusResonse href $href propstats $propstats"
append reply \n \
- {} \
- "\n$href\n"
+ {} \
+ "\n$href\n"
# The multi-status respons has 2 formats
# - with (used in PROPFIND and PROPPATCH)
# - without (used in other cases, e.g. DELETE, COPY, MOVE for collections)
# http://www.webdav.org/specs/rfc4918.html#multi-status.response
#
foreach {props status} $propstats {
if {$propstatus} {
- append reply \n
- if {[llength $props] > 0} {
- append reply \n
- foreach {name value} $props {
- if {$value ne ""} {
- append reply <$name>$value$name>\n
- } else {
- append reply <$name/>\n
- }
- }
- append reply \n
- } else {
- append reply \n
- }
- append reply $status\n\n
+ append reply \n
+ if {[llength $props] > 0} {
+ append reply \n
+ foreach {name value} $props {
+ if {$value ne ""} {
+ append reply <$name>$value$name>\n
+ } else {
+ append reply <$name/>\n
+ }
+ }
+ append reply \n
+ } else {
+ append reply \n
+ }
+ append reply $status\n\n
} else {
- append reply $status\n
+ append reply $status\n
}
}
append reply \n
}
ProtocolHandler instproc multiStatusError {status} {
lappend davprops \
- D:getlastmodified "" \
- D:getcontentlength "" \
- D:creationdate "" \
- D:resourcetype ""
+ D:getlastmodified "" \
+ D:getcontentlength "" \
+ D:creationdate "" \
+ D:resourcetype ""
set r [my multiStatus [my multiStatusResonse \
- -href [ns_urldecode [ns_conn url]] \
- -propstats [list $davprops $status]]]
+ -href [ns_urldecode [ns_conn url]] \
+ -propstats [list $davprops $status]]]
my log multiStatusError=$r
ns_return 207 text/xml $r
}
@@ -313,21 +313,21 @@
ns_set put [ns_conn outputheaders] Allow OPTIONS
ns_return 200 text/plain {}
}
-
+
ProtocolHandler instproc PROPFIND {} {
#my log "--ProtocolHandler PROPFIND [ns_conn content]"
# when GET is not supported on this resource, the get* properties are not be sent
# see http://www.webdav.org/specs/rfc4918.html, 9.1.5
lappend davprops \
- lp1:resourcetype \
- lp1:creationdate [my tcl_time_to_iso8601 "2013-06-30 01:21:22.648325+02"] \
- D:supportedlock {} \
- D:lockdiscovery {}
-
- ns_return 207 text/xml [my multiStatus \
- [my multiStatusResonse \
- -href [my set uri] \
- -propstats [list $davprops "HTTP/1.1 200 OK"]]]
+ lp1:resourcetype \
+ lp1:creationdate [my tcl_time_to_iso8601 "2013-06-30 01:21:22.648325+02"] \
+ D:supportedlock {} \
+ D:lockdiscovery {}
+
+ ns_return 207 text/xml [my multiStatus \
+ [my multiStatusResonse \
+ -href [my set uri] \
+ -propstats [list $davprops "HTTP/1.1 200 OK"]]]
}
::xo::ProtocolHandler create ::xo::minimalProctocolHandler
@@ -338,4 +338,12 @@
::xo::minimalProctocolHandler proc PROPFIND {args} {
my multiStatusError "HTTP/1.1 403 Forbidden"
}
-}
\ No newline at end of file
+}
+
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/bgdelivery-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/bgdelivery-procs.tcl,v
diff -u -r1.47.2.7 -r1.47.2.8
--- openacs-4/packages/xotcl-core/tcl/bgdelivery-procs.tcl 27 Jan 2014 09:59:13 -0000 1.47.2.7
+++ openacs-4/packages/xotcl-core/tcl/bgdelivery-procs.tcl 14 Feb 2014 18:20:44 -0000 1.47.2.8
@@ -1,10 +1,10 @@
ad_library {
- Routines for background delivery of files
+ Routines for background delivery of files
- @author Gustaf Neumann (neumann@wu-wien.ac.at)
- @creation-date 19 Nov 2005
- @cvs-id $Id$
+ @author Gustaf Neumann (neumann@wu-wien.ac.at)
+ @creation-date 19 Nov 2005
+ @cvs-id $Id$
}
if {[info commands ::thread::mutex] eq ""} {
@@ -76,10 +76,10 @@
set k ::runningBgJob([lindex $context 0])
if {[info exists $k]} {
- set value [set $k]
- ns_log notice "resubmit: canceling currently running request $context // closing $value"
- lassign $value fd0 channel0 client_data0 filename0
- my end-delivery -client_data $client_data0 $filename0 $fd0 $channel0 -1
+ set value [set $k]
+ ns_log notice "resubmit: canceling currently running request $context // closing $value"
+ lassign $value fd0 channel0 client_data0 filename0
+ my end-delivery -client_data $client_data0 $filename0 $fd0 $channel0 -1
}
set $k [list $fd $channel $client_data $filename]
@@ -233,8 +233,8 @@
if {$sync || $content eq ""} {
my log "close sync"
if {$content ne ""} {
- fconfigure $channel -translation binary -blocking true
- puts -nonewline $channel $content
+ fconfigure $channel -translation binary -blocking true
+ puts -nonewline $channel $content
}
close $channel
my destroy
@@ -256,7 +256,7 @@
set content ""
if {[my autoflush]} {flush $channel}
if {[my exists finishWhenDone]} {
- my close -sync true
+ my close -sync true
}
} else {
set chunk [string range $content 0 $blocksize-1]
@@ -279,11 +279,11 @@
set result [list]
if {[info exists key]} {
if {[info exists subscriptions($key)]} {
- return [list $key $subscriptions($key)]
+ return [list $key $subscriptions($key)]
}
} elseif {[info exists subscriptions]} {
foreach key [array names subscriptions] {
- lappend result $key $subscriptions($key)
+ lappend result $key $subscriptions($key)
}
}
}
@@ -332,7 +332,7 @@
set smsg $msg
}
#my log "-- sending to subscriber for [my key] $smsg ch=[my channel] \
- # mode=[my mode], user_id [my user_id]"
+ # mode=[my mode], user_id [my user_id]"
puts -nonewline [my channel] $smsg
flush [my channel]
}
@@ -343,12 +343,12 @@
if {[info exists subscriptions($key)]} {
set subs1 [list]
foreach s $subscriptions($key) {
- if {[catch {$s $method $argument} errMsg]} {
- ns_log notice "error in $method to subscriber $s (key=$key): $errMsg"
- $s destroy
- } else {
- lappend subs1 $s
- }
+ if {[catch {$s $method $argument} errMsg]} {
+ ns_log notice "error in $method to subscriber $s (key=$key): $errMsg"
+ $s destroy
+ } else {
+ lappend subs1 $s
+ }
}
set subscriptions($key) $subs1
}
@@ -443,7 +443,7 @@
fconfigure $fd -translation binary -encoding $encoding
fconfigure [my channel] -translation binary -encoding $encoding
fcopy $fd [my channel] -command \
- [list [self] end-delivery $filename $fd [my channel] $request]
+ [list [self] end-delivery $filename $fd [my channel] $request]
}
}
::HttpSpooler instproc end-delivery {filename fd ch request bytes args} {
@@ -465,8 +465,8 @@
regexp {^([^:]+):(.*)$} $host _ host port
my incr running
xo::AsyncHttpRequest [self]::[my incr counter] \
- -host $host -port $port -path $path \
- -timeout [my timeout] -post_data $post_data -request_manager [self]
+ -host $host -port $port -path $path \
+ -timeout [my timeout] -post_data $post_data -request_manager [self]
}
}
@@ -506,195 +506,195 @@
{-delete false}
{-content_disposition}
status_code mime_type filename} {
- Deliver the given file to the requestor in the background. This proc uses the
- background delivery thread to send the file in an event-driven manner without
- blocking a request thread. This is especially important when large files are
- requested over slow (e.g. dial-ip) connections.
-} {
+ Deliver the given file to the requestor in the background. This proc uses the
+ background delivery thread to send the file in an event-driven manner without
+ blocking a request thread. This is especially important when large files are
+ requested over slow (e.g. dial-ip) connections.
+ } {
- #ns_setexpires 1000000
- #ns_log notice "expires-set $filename"
- #ns_log notice "status_code = $status_code, filename=$filename"
+ #ns_setexpires 1000000
+ #ns_log notice "expires-set $filename"
+ #ns_log notice "status_code = $status_code, filename=$filename"
- if {![my isobject ::xo::cc]} {
- ::xo::ConnectionContext require
- }
- set query [::xo::cc actual_query]
- set use_h264 [expr {[string match "video/mp4*" $mime_type] && $query ne ""
- && ([string match {*start=[1-9]*} $query] || [string match {*end=[1-9]*} $query])
- && [info command h264open] ne ""}]
+ if {![my isobject ::xo::cc]} {
+ ::xo::ConnectionContext require
+ }
+ set query [::xo::cc actual_query]
+ set use_h264 [expr {[string match "video/mp4*" $mime_type] && $query ne ""
+ && ([string match {*start=[1-9]*} $query] || [string match {*end=[1-9]*} $query])
+ && [info command h264open] ne ""}]
- if {[info commands ns_driversection] ne ""} {
+ if {[info commands ns_driversection] ne ""} {
set use_writerThread [ns_config [ns_driversection] writerthreads 0]
- } else {
+ } else {
set use_writerThread 0
- }
+ }
- if {[info exists content_disposition]} {
- set fn [xo::backslash_escape \" $content_disposition]
- ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=\"$fn\""
- }
+ if {[info exists content_disposition]} {
+ set fn [xo::backslash_escape \" $content_disposition]
+ ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=\"$fn\""
+ }
- if {$use_h264} {
- if {0} {
- # we have to obtain the size from the file; unfortunately, this
- # requires a duplicate open+close of the h264 stream. If the
- # application is performance sensitive, one might consider to use
- # the possibly incorrect size form the file system instead (works
- # perfectly for e.g. flowplayer)
- if {[catch {set handle [h264open $filename $query]} errorMsg]} {
- ns_log error "h264: error opening h264 channel for $filename $query: $errorMsg"
- return
+ if {$use_h264} {
+ if {0} {
+ # we have to obtain the size from the file; unfortunately, this
+ # requires a duplicate open+close of the h264 stream. If the
+ # application is performance sensitive, one might consider to use
+ # the possibly incorrect size form the file system instead (works
+ # perfectly for e.g. flowplayer)
+ if {[catch {set handle [h264open $filename $query]} errorMsg]} {
+ ns_log error "h264: error opening h264 channel for $filename $query: $errorMsg"
+ return
+ }
+ set size [h264length $handle]
+ h264close $handle
+ } else {
+ set size [file size $filename]
}
- set size [h264length $handle]
- h264close $handle
} else {
set size [file size $filename]
}
- } else {
- set size [file size $filename]
- }
- # Make sure to set "connection close" for the reqests (in other
- # words, don't allow keep-alive, which is does not make sense, when
- # we close the connections manually in the bgdelivery thread).
- #
- if {$::xo::naviserver && !$use_writerThread} {
- ns_conn keepalive 0
- }
+ # Make sure to set "connection close" for the reqests (in other
+ # words, don't allow keep-alive, which is does not make sense, when
+ # we close the connections manually in the bgdelivery thread).
+ #
+ if {$::xo::naviserver && !$use_writerThread} {
+ ns_conn keepalive 0
+ }
- set range [ns_set iget [ns_conn headers] range]
- if {[regexp {bytes=(.*)$} $range _ range]} {
- set ranges [list]
- set bytes 0
- set pos 0
- foreach r [split $range ,] {
- regexp {^(\d*)-(\d*)$} $r _ from to
- if {$from eq ""} {
- # The last $to bytes, $to must be specified; 'to' is
- # differently interpreted as in the case, where from is
- # non-empty
- set from [expr {$size - $to}]
- } else {
- if {$to eq ""} {set to [expr {$size-1}]}
+ set range [ns_set iget [ns_conn headers] range]
+ if {[regexp {bytes=(.*)$} $range _ range]} {
+ set ranges [list]
+ set bytes 0
+ set pos 0
+ foreach r [split $range ,] {
+ regexp {^(\d*)-(\d*)$} $r _ from to
+ if {$from eq ""} {
+ # The last $to bytes, $to must be specified; 'to' is
+ # differently interpreted as in the case, where from is
+ # non-empty
+ set from [expr {$size - $to}]
+ } else {
+ if {$to eq ""} {set to [expr {$size-1}]}
+ }
+ set rangeSize [expr {1 + $to - $from}]
+ lappend ranges [list $from $to $rangeSize]
+ set pos [expr {$to + 1}]
+ incr bytes $rangeSize
}
- set rangeSize [expr {1 + $to - $from}]
- lappend ranges [list $from $to $rangeSize]
- set pos [expr {$to + 1}]
- incr bytes $rangeSize
+ } else {
+ set ranges ""
+ set bytes $size
}
- } else {
- set ranges ""
- set bytes $size
- }
- #ns_log notice "Range=$range bytes=$bytes // $ranges"
+ #ns_log notice "Range=$range bytes=$bytes // $ranges"
- #
- # For the time being, we write the headers in a simplified version
- # directly in the spooling thread to avoid the overhead of double
- # h264opens.
- #
- if {!$use_h264} {
#
- # Add content-range header for range requests.
+ # For the time being, we write the headers in a simplified version
+ # directly in the spooling thread to avoid the overhead of double
+ # h264opens.
#
- if {[llength $ranges] == 1 && $status_code == 200} {
- lassign [lindex $ranges 0] from to
- if {$from <= $to && $size > $to} {
- ns_set put [ns_conn outputheaders] Content-Range "bytes $from-$to/$size"
- ns_log notice "given range <$range>, added header-field Content-Range: bytes $from-$to/$size // $ranges"
- set status_code 206
- } else {
- # A byte-content-range-spec with a byte-range-resp-spec whose
- # last-byte-pos value is less than its first-byte-pos value,
- # or whose instance-length value is less than or equal to its
- # last-byte-pos value, is invalid. The recipient of an invalid
- # byte-content-range-spec MUST ignore it and any content
- # transferred along with it.
- #
- # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html (14.16)
- #
- ns_log notice "### ignore invalid <$range>, pos > size-1, Content-Range: bytes $from-$to/$size // $ranges"
+ if {!$use_h264} {
+ #
+ # Add content-range header for range requests.
+ #
+ if {[llength $ranges] == 1 && $status_code == 200} {
+ lassign [lindex $ranges 0] from to
+ if {$from <= $to && $size > $to} {
+ ns_set put [ns_conn outputheaders] Content-Range "bytes $from-$to/$size"
+ ns_log notice "given range <$range>, added header-field Content-Range: bytes $from-$to/$size // $ranges"
+ set status_code 206
+ } else {
+ # A byte-content-range-spec with a byte-range-resp-spec whose
+ # last-byte-pos value is less than its first-byte-pos value,
+ # or whose instance-length value is less than or equal to its
+ # last-byte-pos value, is invalid. The recipient of an invalid
+ # byte-content-range-spec MUST ignore it and any content
+ # transferred along with it.
+ #
+ # See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html (14.16)
+ #
+ ns_log notice "### ignore invalid <$range>, pos > size-1, Content-Range: bytes $from-$to/$size // $ranges"
+ }
+ } elseif {[llength $ranges]>1} {
+ ns_log warning "Multiple ranges are currently not supported, ignoring range request"
}
- } elseif {[llength $ranges]>1} {
- ns_log warning "Multiple ranges are currently not supported, ignoring range request"
+ my write_headers $status_code $mime_type $bytes
}
- my write_headers $status_code $mime_type $bytes
- }
- if {$bytes == 0} {
- # Tcl behaves different, when one tries to send 0 bytes via
- # file_copy. So, we handle this special case here...
- # There is actualy nothing to deliver....
- ns_set put [ns_conn outputheaders] "Content-Length" 0
- ns_return 200 $mime_type {}
- return
- }
+ if {$bytes == 0} {
+ # Tcl behaves different, when one tries to send 0 bytes via
+ # file_copy. So, we handle this special case here...
+ # There is actualy nothing to deliver....
+ ns_set put [ns_conn outputheaders] "Content-Length" 0
+ ns_return 200 $mime_type {}
+ return
+ }
- if {$use_writerThread && !$use_h264} {
+ if {$use_writerThread && !$use_h264} {
if {$status_code == 206} {
- ns_log notice "ns_writer submitfile -offset $from -size $bytes $filename"
- ns_writer submitfile -offset $from -size $bytes $filename
+ ns_log notice "ns_writer submitfile -offset $from -size $bytes $filename"
+ ns_writer submitfile -offset $from -size $bytes $filename
} else {
- ns_log notice "ns_writer submitfile $filename"
- ns_writer submitfile $filename
+ ns_log notice "ns_writer submitfile $filename"
+ ns_writer submitfile $filename
}
return
- }
+ }
- set errorMsg ""
- # Get the thread id and make sure the bgdelivery thread is already
- # running.
- set tid [my get_tid]
-
- # my log "+++ lock [my set bgmutex]"
- ::thread::mutex lock [my set mutex]
+ set errorMsg ""
+ # Get the thread id and make sure the bgdelivery thread is already
+ # running.
+ set tid [my get_tid]
+
+ # my log "+++ lock [my set bgmutex]"
+ ::thread::mutex lock [my set mutex]
- #
- # Transfer the channel to the bgdelivery thread and report errors
- # in detail.
- #
- # Notice, that Tcl versions up to 8.5.4 have a bug in this area.
- # If one uses an earlier version of Tcl, please apply:
- # http://tcl.cvs.sourceforge.net/viewvc/tcl/tcl/generic/tclIO.c?r1=1.61.2.29&r2=1.61.2.30&pathrev=core-8-4-branch
- #
+ #
+ # Transfer the channel to the bgdelivery thread and report errors
+ # in detail.
+ #
+ # Notice, that Tcl versions up to 8.5.4 have a bug in this area.
+ # If one uses an earlier version of Tcl, please apply:
+ # http://tcl.cvs.sourceforge.net/viewvc/tcl/tcl/generic/tclIO.c?r1=1.61.2.29&r2=1.61.2.30&pathrev=core-8-4-branch
+ #
- catch {
- set ch [ns_conn channel]
- if {[catch {thread::transfer $tid $ch} innerError]} {
- set channels_in_use "??"
- catch {set channels_in_use [bgdelivery do file channels]}
- ns_log error "thread transfer failed, channel=$ch, channels_in_use=$channels_in_use"
- error $innerError
+ catch {
+ set ch [ns_conn channel]
+ if {[catch {thread::transfer $tid $ch} innerError]} {
+ set channels_in_use "??"
+ catch {set channels_in_use [bgdelivery do file channels]}
+ ns_log error "thread transfer failed, channel=$ch, channels_in_use=$channels_in_use"
+ error $innerError
+ }
+ } errorMsg
+
+ ::thread::mutex unlock [my set mutex]
+ #ns_mutex unlock [my set bgmutex]
+ # my log "+++ unlock [my set bgmutex]"
+
+ if {$errorMsg ne ""} {
+ error ERROR=$errorMsg
}
- } errorMsg
-
- ::thread::mutex unlock [my set mutex]
- #ns_mutex unlock [my set bgmutex]
- # my log "+++ unlock [my set bgmutex]"
-
- if {$errorMsg ne ""} {
- error ERROR=$errorMsg
+
+ if {$use_h264} {
+ #my log "MP4 q=[::xo::cc actual_query], h=[ns_set array [ns_conn outputheaders]]"
+ my do -async ::h264Spooler spool -delete $delete -channel $ch -filename $filename \
+ -context [list [::xo::cc requestor],[::xo::cc url],$query [ns_conn start]] \
+ -query $query \
+ -client_data $client_data
+ } else {
+ #my log "FILE SPOOL $filename"
+ my do -async ::fileSpooler spool -ranges $ranges -delete $delete -channel $ch -filename $filename \
+ -context [list [::xo::cc requestor],[::xo::cc url],$query [ns_conn start]] \
+ -client_data $client_data
+ }
+ #
+ # set the length for the access log (which is written when the
+ # connection thread is done)
+ ns_conn contentsentlength $size ;# maybe overly optimistic
}
-
- if {$use_h264} {
- #my log "MP4 q=[::xo::cc actual_query], h=[ns_set array [ns_conn outputheaders]]"
- my do -async ::h264Spooler spool -delete $delete -channel $ch -filename $filename \
- -context [list [::xo::cc requestor],[::xo::cc url],$query [ns_conn start]] \
- -query $query \
- -client_data $client_data
- } else {
- #my log "FILE SPOOL $filename"
- my do -async ::fileSpooler spool -ranges $ranges -delete $delete -channel $ch -filename $filename \
- -context [list [::xo::cc requestor],[::xo::cc url],$query [ns_conn start]] \
- -client_data $client_data
- }
- #
- # set the length for the access log (which is written when the
- # connection thread is done)
- ns_conn contentsentlength $size ;# maybe overly optimistic
-}
ad_proc -public ad_returnfile_background {{-client_data ""} status_code mime_type filename} {
Deliver the given file to the requestor in the background. This proc uses the
@@ -736,3 +736,10 @@
bgdelivery proc spooler_release {spooler} {
my do -async $spooler release
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/chat-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/Attic/chat-procs.tcl,v
diff -u -r1.20.2.3 -r1.20.2.4
--- openacs-4/packages/xotcl-core/tcl/chat-procs.tcl 11 Feb 2014 11:53:08 -0000 1.20.2.3
+++ openacs-4/packages/xotcl-core/tcl/chat-procs.tcl 14 Feb 2014 18:20:44 -0000 1.20.2.4
@@ -10,11 +10,13 @@
Class Message -parameter {time user_id msg color}
Class Chat -superclass ::xo::OrderedComposite \
-parameter {
- chat_id
- user_id
- session_id
- {mode default}
- {encoder urlencode} {timewindow 600} {sweepinterval 600}
+ chat_id
+ user_id
+ session_id
+ {mode default}
+ {encoder urlencode}
+ {timewindow 600}
+ {sweepinterval 600}
}
Chat instproc init {} {
@@ -29,7 +31,7 @@
my log "-- initialize $cls"
$cls initialize_nsvs
::xo::clusterwide nsv_set $cls initialized \
- [ad_schedule_proc -thread "t" [my sweepinterval] $cls sweep_all_chats]
+ [ad_schedule_proc -thread "t" [my sweepinterval] $cls sweep_all_chats]
}
if {![nsv_exists $array-seen newest]} {::xo::clusterwide nsv_set $array-seen newest 0}
if {![nsv_exists $array-color idx]} {::xo::clusterwide nsv_set $array-color idx 0}
@@ -60,11 +62,11 @@
my log "-- msg=$msg"
if {$get_new
- && [info commands ::thread::mutex] ne ""
- && [info commands ::bgdelivery] ne ""} {
+ && [info commands ::thread::mutex] ne ""
+ && [info commands ::bgdelivery] ne ""} {
# we could use the streaming interface
my broadcast_msg [Message new -volatile -time [clock seconds] \
- -user_id $user_id -msg $msg -color $color]
+ -user_id $user_id -msg $msg -color $color]
}
my register_nsvs $now.$user_id $user_id $msg $color [clock seconds]
# this in any case a valid result, but only needed for the polling interface
@@ -104,12 +106,12 @@
if {[nsv_get $array-seen newest]>$last} {
#my log "--c must check $session_id: [nsv_get $array-seen newest] > $last"
foreach {key value} [nsv_array get $array] {
- lassign $value timestamp secs user msg color
- if {$timestamp > $last} {
- my add [Message new -time $secs -user_id $user -msg $msg -color $color]
- } else {
- my check_age $key [expr {($now - $timestamp) / 1000}]
- }
+ lassign $value timestamp secs user msg color
+ if {$timestamp > $last} {
+ my add [Message new -time $secs -user_id $user -msg $msg -color $color]
+ } else {
+ my check_age $key [expr {($now - $timestamp) / 1000}]
+ }
}
::xo::clusterwide nsv_set $array-seen $session_id $now
#my log "--c setting session_id $session_id: $now"
@@ -124,7 +126,7 @@
foreach {key value} [nsv_array get $array] {
lassign $value timestamp secs user msg color
if {[my check_age $key [expr {($now - $timestamp) / 1000}]]} {
- my add [Message new -time $secs -user_id $user -msg $msg -color $color]
+ my add [Message new -time $secs -user_id $user -msg $msg -color $color]
}
}
#my log "--c setting session_id $session_id: $now"
@@ -141,11 +143,11 @@
ns_log Notice "--core-chat Checking: now=$now, timestamp=$timestamp, ago=$ago"
# was 1200
if {$ago > 300} {
- my add_msg -get_new false -uid $user "auto logout"
- nsv_unset $array-last-activity $user
- nsv_unset $array-login $user
- nsv_unset $array-color $user
- catch {::bgdelivery do ::Subscriber sweep chat-[my chat_id]}
+ my add_msg -get_new false -uid $user "auto logout"
+ nsv_unset $array-last-activity $user
+ nsv_unset $array-login $user
+ nsv_unset $array-color $user
+ catch {::bgdelivery do ::Subscriber sweep chat-[my chat_id]}
}
}
my log "-- ending"
@@ -181,9 +183,9 @@
set output ""
foreach {user_id timestamp} [my active_user_list] {
if {$user_id > 0} {
- set diff [clock format [expr {[clock seconds] - $timestamp}] -format "%H:%M:%S" -gmt 1]
- set userlink [my user_link -user_id $user_id]
- append output "$userlink | $diff |
\n"
+ set diff [clock format [expr {[clock seconds] - $timestamp}] -format "%H:%M:%S" -gmt 1]
+ set userlink [my user_link -user_id $user_id]
+ append output "$userlink | $diff |
\n"
}
}
return $output
@@ -217,16 +219,16 @@
}
Chat instproc user_name { user_id } {
- acs_user::get -user_id $user_id -array user
- return [expr {$user(screen_name) ne "" ? $user(screen_name) : $user(name)}]
+ acs_user::get -user_id $user_id -array user
+ return [expr {$user(screen_name) ne "" ? $user(screen_name) : $user(name)}]
}
Chat instproc user_link { -user_id -color } {
if {$user_id > 0} {
set name [my user_name $user_id]
set url "/shared/community-member?user%5fid=$user_id"
if {![info exists color]} {
- set color [my user_color $user_id]
+ set color [my user_color $user_id]
}
set creator "$name"
} elseif { $user_id == 0 } {
@@ -241,9 +243,10 @@
Chat instproc noencode {string} {set string}
Chat instproc encode {string} {my [my encoder] $string}
Chat instproc json_encode {string} {
- string map [list \n \\n {"} {\"} ' {\'}] $string ;#"
+ string map [list \n \\n {"} {\"} ' {\'}] $string ;\#"
+ #
}
-
+
Chat instproc json_encode_msg {msg} {
set old [my encoder]
my encoder noencode ;# just for user_link
@@ -253,93 +256,93 @@
set text [my json_encode [$msg msg]]
foreach var {userlink timeshort} {set $var [my json_encode [set $var]]}
return [subst -nocommands {{'messages': [
- {'user':'$userlink', 'time': '$timeshort', 'msg':'$text'}
- ]\n}
- }]
- }
+ {'user':'$userlink', 'time': '$timeshort', 'msg':'$text'}
+ ]\n}
+ }]
+ }
- Chat instproc js_encode_msg {msg} {
- set json [my json_encode_msg $msg]
- return "\n"
- }
+ }
- Chat instproc broadcast_msg {msg} {
- my log "--chat broadcast_msg $msg"
- ::xo::clusterwide \
- bgdelivery send_to_subscriber chat-[my chat_id] [my json_encode_msg $msg]
- }
+ Chat instproc broadcast_msg {msg} {
+ my log "--chat broadcast_msg $msg"
+ ::xo::clusterwide \
+ bgdelivery send_to_subscriber chat-[my chat_id] [my json_encode_msg $msg]
+ }
- Chat instproc subscribe {-uid} {
- set user_id [expr {[info exists uid] ? $uid : [my set user_id]}]
- set color [my user_color $user_id]
- bgdelivery subscribe chat-[my chat_id] "" [my mode]
- if {![my user_active $user_id]} {
- my broadcast_msg [Message new -volatile -time [clock seconds] \
- -user_id $user_id -color $color \
- -msg [_ xotcl-core.has_entered_the_room] ]
- }
- #my get_all
- }
+ Chat instproc subscribe {-uid} {
+ set user_id [expr {[info exists uid] ? $uid : [my set user_id]}]
+ set color [my user_color $user_id]
+ bgdelivery subscribe chat-[my chat_id] "" [my mode]
+ if {![my user_active $user_id]} {
+ my broadcast_msg [Message new -volatile -time [clock seconds] \
+ -user_id $user_id -color $color \
+ -msg [_ xotcl-core.has_entered_the_room] ]
+ }
+ #my get_all
+ }
+
+ Chat instproc render {} {
+ my orderby time
+ set result "\n"
+ foreach child [my children] {
+ set msg [$child msg]
+ set user_id [$child user_id]
+ set color [$child color]
+ set timelong [clock format [$child time]]
+ set timeshort [clock format [$child time] -format {[%H:%M:%S]}]
+ set userlink [my user_link -user_id $user_id -color $color]
+
+ append result "
$timeshort " \
+ "$userlink " \
+ "[my encode $msg]
\n"
+ }
+ append result "
"
+ return $result
+ }
- Chat instproc render {} {
- my orderby time
- set result "\n"
- foreach child [my children] {
- set msg [$child msg]
- set user_id [$child user_id]
- set color [$child color]
- set timelong [clock format [$child time]]
- set timeshort [clock format [$child time] -format {[%H:%M:%S]}]
- set userlink [my user_link -user_id $user_id -color $color]
+ ############################################################################
+ # Chat meta class, since we need to define general class-specific methods
+ ############################################################################
+ Class create ChatClass -superclass ::xotcl::Class
+ ChatClass method sweep_all_chats {} {
+ my log "-- starting"
+ foreach nsv [nsv_names "[self]-*-seen"] {
+ if { [regexp "[self]-(\[0-9\]+)-seen" $nsv _ chat_id] } {
+ my log "--Chat_id $chat_id"
+ my new -volatile -chat_id $chat_id -user_id 0 -session_id 0 -init -sweeper
+ }
+ }
+ my log "-- ending"
+ }
+
+ ChatClass method initialize_nsvs {} {
+ # read the last_activity information at server start into a nsv array
+ ::xo::dc foreach get_rooms {
+ select room_id, to_char(max(creation_date),'HH24:MI:SS YYYY-MM-DD') as last_activity
+ from chat_msgs group by room_id
+ } {
+ ::xo::clusterwide nsv_set [self]-$room_id-seen last [clock scan $last_activity]
+ }
+ }
+
+ ChatClass method flush_messages {-chat_id:required} {
+ set array "[self]-$chat_id"
+ ::xo::clusterwide nsv_unset $array
+ ::xo::clusterwide nsv_unset $array-seen
+ ::xo::clusterwide nsv_unset $array-last-activity
+ }
- append result "
$timeshort " \
- "$userlink " \
- "[my encode $msg]
\n"
- }
- append result "
"
- return $result
- }
-
- ############################################################################
- # Chat meta class, since we need to define general class-specific methods
- ############################################################################
- Class create ChatClass -superclass ::xotcl::Class
- ChatClass method sweep_all_chats {} {
- my log "-- starting"
- foreach nsv [nsv_names "[self]-*-seen"] {
- if { [regexp "[self]-(\[0-9\]+)-seen" $nsv _ chat_id] } {
- my log "--Chat_id $chat_id"
- my new -volatile -chat_id $chat_id -user_id 0 -session_id 0 -init -sweeper
- }
- }
- my log "-- ending"
- }
-
- ChatClass method initialize_nsvs {} {
- # read the last_activity information at server start into a nsv array
- ::xo::dc foreach get_rooms {
- select room_id, to_char(max(creation_date),'HH24:MI:SS YYYY-MM-DD') as last_activity
- from chat_msgs group by room_id
- } {
- ::xo::clusterwide nsv_set [self]-$room_id-seen last [clock scan $last_activity]
- }
- }
-
- ChatClass method flush_messages {-chat_id:required} {
- set array "[self]-$chat_id"
- ::xo::clusterwide nsv_unset $array
- ::xo::clusterwide nsv_unset $array-seen
- ::xo::clusterwide nsv_unset $array-last-activity
- }
-
- ChatClass method init {} {
- # default setting is set19 from http://www.graphviz.org/doc/info/colors.html
- # per parameter settings in the chat package are available (param UserColors)
- my set colors [list #1b9e77 #d95f02 #7570b3 #e7298a #66a61e #e6ab02 #a6761d #666666]
- }
+ ChatClass method init {} {
+ # default setting is set19 from http://www.graphviz.org/doc/info/colors.html
+ # per parameter settings in the chat package are available (param UserColors)
+ my set colors [list #1b9e77 #d95f02 #7570b3 #e7298a #66a61e #e6ab02 #a6761d #666666]
+ }
}
#
Index: openacs-4/packages/xotcl-core/tcl/cluster-init.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/Attic/cluster-init.tcl,v
diff -u -r1.3 -r1.3.8.1
--- openacs-4/packages/xotcl-core/tcl/cluster-init.tcl 23 Dec 2008 11:34:59 -0000 1.3
+++ openacs-4/packages/xotcl-core/tcl/cluster-init.tcl 14 Feb 2014 18:20:44 -0000 1.3.8.1
@@ -27,11 +27,18 @@
array set node [site_node::get -url $url]
if {$node(url) ne "/"} {
ns_log notice "***\n*** WARNING: there appears a package mounted on\
- $url\n***Cluster configuration will not work\
- since there is a conflict with the aolserver filter with the same name!\n"
+ $url\n***Cluster configuration will not work\
+ since there is a conflict with the aolserver filter with the same name!\n"
}
#ns_register_filter trace GET $url ::xo::Cluster
ns_register_filter preauth GET $url ::xo::Cluster
#ad_register_filter -priority 900 preauth GET $url ::xo::Cluster
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/cluster-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/cluster-procs.tcl,v
diff -u -r1.6.8.1 -r1.6.8.2
--- openacs-4/packages/xotcl-core/tcl/cluster-procs.tcl 5 Oct 2013 12:36:53 -0000 1.6.8.1
+++ openacs-4/packages/xotcl-core/tcl/cluster-procs.tcl 14 Feb 2014 18:20:45 -0000 1.6.8.2
@@ -113,25 +113,32 @@
#
Cluster proc broadcast args {
foreach server [my info instances] {
- $server message {*}$args
+ $server message {*}$args
}
}
Cluster instproc message args {
my log "--cluster outgoing request to [my host]:[my port] // $args"
-# set r [::xo::HttpRequest new -volatile \
-# -host [my host] -port [my port] \
-# -path [Cluster set url]?cmd=[ns_urlencode $args]]
-# return [$r set data]
+ # set r [::xo::HttpRequest new -volatile \
+ # -host [my host] -port [my port] \
+ # -path [Cluster set url]?cmd=[ns_urlencode $args]]
+ # return [$r set data]
set r [::xo::AsyncHttpRequest new -volatile \
- -host [my host] -port [my port] \
- -path [Cluster set url]?cmd=[ns_urlencode $args]]
-
-# ::bgdelivery do ::xo::AsyncHttpRequest new \
-# -host [my host] -port [my port] \
-# -path [Cluster set url]?cmd=[ns_urlencode $args] \
-# -mixin ::xo::AsyncHttpRequest::SimpleListener \
-# -proc finalize {obj status value} { my destroy }
+ -host [my host] -port [my port] \
+ -path [Cluster set url]?cmd=[ns_urlencode $args]]
+
+ # ::bgdelivery do ::xo::AsyncHttpRequest new \
+ # -host [my host] -port [my port] \
+ # -path [Cluster set url]?cmd=[ns_urlencode $args] \
+ # -mixin ::xo::AsyncHttpRequest::SimpleListener \
+ # -proc finalize {obj status value} { my destroy }
}
-}
\ No newline at end of file
+}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/cr-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/cr-procs.tcl,v
diff -u -r1.50.2.6 -r1.50.2.7
--- openacs-4/packages/xotcl-core/tcl/cr-procs.tcl 11 Feb 2014 11:53:08 -0000 1.50.2.6
+++ openacs-4/packages/xotcl-core/tcl/cr-procs.tcl 14 Feb 2014 18:20:45 -0000 1.50.2.7
@@ -11,37 +11,37 @@
::xotcl::Class create ::xo::db::CrClass \
-superclass ::xo::db::Class \
-parameter {
- {supertype content_revision}
- form
- edit_form
- {mime_type text/plain}
- {storage_type "text"}
- {folder_id -100}
+ {supertype content_revision}
+ form
+ edit_form
+ {mime_type text/plain}
+ {storage_type "text"}
+ {folder_id -100}
} -ad_doc {
- The meta class CrClass serves for a class of applications that mostly
- store information in the content repository and that use a few
- attributes adjoining this information. The class handles the open
- acs object_type creation and the automatic creation of the
- necessary tables based on instances of this meta-class.
-
- The definition of new types is handled in the constructor of
- CrType through the method
- create_object_type,
- the removal of the
- object type is handled through the method
- drop_object_type
- (requires that
- all instances of this type are deleted).
+ The meta class CrClass serves for a class of applications that mostly
+ store information in the content repository and that use a few
+ attributes adjoining this information. The class handles the open
+ acs object_type creation and the automatic creation of the
+ necessary tables based on instances of this meta-class.
+
+ The definition of new types is handled in the constructor of
+ CrType through the method
+ create_object_type,
+ the removal of the
+ object type is handled through the method
+ drop_object_type
+ (requires that
+ all instances of this type are deleted).
- Each content item can be retrieved either through the
- general method
-
- CrClass get_instance_from_db or through the "get_instance_from_db" method of
- every subclass of CrItem.
+
Each content item can be retrieved either through the
+ general method
+
+ CrClass get_instance_from_db or through the "get_instance_from_db" method of
+ every subclass of CrItem.
-
This Class is a meta-class providing methods for Classes
- managing CrItems.
- }
+ This Class is a meta-class providing methods for Classes
+ managing CrItems.
+ }
#
# Methods for the meta class
@@ -57,15 +57,15 @@
} {
set object_type [ns_cache eval xotcl_object_type_cache \
[expr {$item_id ? $item_id : $revision_id}] {
- if {$item_id} {
- ::xo::dc 1row get_class_from_item_id \
- "select content_type as object_type from cr_items where item_id=:item_id"
- } else {
- ::xo::dc 1row get_class_from_revision_id \
- "select object_type from acs_objects where object_id=:revision_id"
- }
- return $object_type
- }]
+ if {$item_id} {
+ ::xo::dc 1row get_class_from_item_id \
+ "select content_type as object_type from cr_items where item_id=:item_id"
+ } else {
+ ::xo::dc 1row get_class_from_revision_id \
+ "select object_type from acs_objects where object_id=:revision_id"
+ }
+ return $object_type
+ }]
}
CrClass ad_proc get_instance_from_db {
@@ -225,7 +225,7 @@
publish_status last_modified
}
if {[apm_version_names_compare [ad_acs_version] 5.2] > -1} {
- CrClass lappend common_query_atts package_id
+ CrClass lappend common_query_atts package_id
}
CrClass instproc edit_atts {} {
@@ -247,10 +247,10 @@
where content_type = :object_type
} {
::xo::db::sql::content_folder unregister_content_type \
- -folder_id $folder_id \
- -content_type $object_type \
- -include_subtypes $include_subtypes
- }
+ -folder_id $folder_id \
+ -content_type $object_type \
+ -include_subtypes $include_subtypes
+ }
}
CrClass ad_instproc folder_type {
@@ -272,9 +272,9 @@
my instvar folder_id
}
::xo::db::sql::content_folder ${operation}_content_type \
- -folder_id $folder_id \
- -content_type $object_type \
- -include_subtypes $include_subtypes
+ -folder_id $folder_id \
+ -content_type $object_type \
+ -include_subtypes $include_subtypes
}
CrClass ad_instproc create_object_type {} {
@@ -372,7 +372,7 @@
# application class with the given default for mime_type.
if {[self] ne "::xo::db::CrItem"} {
my slots {
- ::xotcl::Attribute create mime_type -default [my mime_type]
+ ::xotcl::Attribute create mime_type -default [my mime_type]
}
my db_slots
}
@@ -389,8 +389,8 @@
foreach {slot_name slot} [[my info superclass] array get db_slot] {
# don't overwrite slots, unless the object_title (named title)
if {![info exists db_slot($slot_name)] ||
- $slot eq "::xo::db::Object::slot::object_title"} {
- set db_slot($slot_name) $slot
+ $slot eq "::xo::db::Object::slot::object_title"} {
+ set db_slot($slot_name) $slot
}
}
my remember_long_text_slots
@@ -434,19 +434,19 @@
}
foreach {slot_name slot} [my array get db_slot] {
switch -- $slot {
- ::xo::db::CrItem::slot::text {
- # We need the rule, since insert the handling of the sql
- # attribute "text" is somewhat magic. On insert, one can use the
- # automatic view with column_name "text, on queries, one has to use
- # "data". Therefore, we cannot use simply -column_name for the slot.
- lappend atts "n.data AS text"
- }
- ::xo::db::CrItem::slot::name {
- lappend atts i.[$slot column_name]
- }
- default {
- lappend atts n.[$slot column_name]
- }
+ ::xo::db::CrItem::slot::text {
+ # We need the rule, since insert the handling of the sql
+ # attribute "text" is somewhat magic. On insert, one can use the
+ # automatic view with column_name "text, on queries, one has to use
+ # "data". Therefore, we cannot use simply -column_name for the slot.
+ lappend atts "n.data AS text"
+ }
+ ::xo::db::CrItem::slot::name {
+ lappend atts i.[$slot column_name]
+ }
+ default {
+ lappend atts n.[$slot column_name]
+ }
}
}
if {$revision_id} {
@@ -477,7 +477,7 @@
if {[apm_version_names_compare [ad_acs_version] 5.2] <= -1} {
$object set package_id [::xo::dc get_value get_pid \
- "select package_id from cr_folders where folder_id = [$object set parent_id]"]
+ "select package_id from cr_folders where folder_id = [$object set parent_id]"]
}
#my log "--AFTER FETCH\n[$object serialize]"
@@ -520,13 +520,13 @@
my get_context package_id creation_user creation_ip
#my log "ID [self] create $args"
if {[catch {set p [my create ::0 {*}$args]} errorMsg]} {
- my log "Error: $errorMsg, $::errorInfo"
+ my log "Error: $errorMsg, $::errorInfo"
}
#my log "ID [::0 serialize]"
set item_id [::0 save_new \
- -package_id $package_id \
- -creation_user $creation_user \
- -creation_ip $creation_ip]
+ -package_id $package_id \
+ -creation_user $creation_user \
+ -creation_ip $creation_ip]
::0 move ::$item_id
::$item_id destroy_on_cleanup
return ::$item_id
@@ -559,8 +559,8 @@
} {
returns the SQL-query to select the CrItems of the specified object_type
@select_attributes attributes for the sql query to be retrieved, in addition
- to item_id, name, publish_status, object_type, and package_id
- which are always returned
+ to item_id, name, publish_status, object_type, and package_id
+ which are always returned
@param orderby for ordering the solution set
@param where_clause clause for restricting the answer set
@param with_subtypes return subtypes as well
@@ -622,11 +622,11 @@
}
set sql [::xo::dc select \
- -vars $attribute_selection \
- -from "$acs_objects_table cr_items ci, $base_table bt $from_clause" \
- -where [join $cond " and "] \
- -orderby $orderby \
- -limit $limit -offset $offset]
+ -vars $attribute_selection \
+ -from "$acs_objects_table cr_items ci, $base_table bt $from_clause" \
+ -where [join $cond " and "] \
+ -orderby $orderby \
+ -limit $limit -offset $offset]
#my log "--sql=$sql"
return $sql
}
@@ -648,17 +648,17 @@
method was called.
} {
set s [my instantiate_objects -sql \
- [my instance_select_query \
- -select_attributes $select_attributes \
- -from_clause $from_clause \
- -where_clause $where_clause \
- -orderby $orderby \
- -with_subtypes $with_subtypes \
- -folder_id $folder_id \
- -page_size $page_size \
- -page_number $page_number \
- -base_table $base_table \
- ]]
+ [my instance_select_query \
+ -select_attributes $select_attributes \
+ -from_clause $from_clause \
+ -where_clause $where_clause \
+ -orderby $orderby \
+ -with_subtypes $with_subtypes \
+ -folder_id $folder_id \
+ -page_size $page_size \
+ -page_number $page_number \
+ -base_table $base_table \
+ ]]
return $s
}
@@ -670,42 +670,42 @@
-table_name cr_revisions -id_column revision_id \
-object_type content_revision \
-slots {
- #
- # The following attributes are from cr_revisions
- #
- ::xo::db::CrAttribute create item_id \
- -datatype integer \
- -pretty_name "Item ID" -pretty_plural "Item IDs" \
- -references "cr_items on delete cascade"
- ::xo::db::CrAttribute create title \
- -sqltype varchar(1000) \
- -pretty_name "Title" -pretty_plural "Titles"
- ::xo::db::CrAttribute create description \
- -sqltype varchar(1000) \
- -pretty_name "Description" -pretty_plural "Descriptions"
- ::xo::db::CrAttribute create publish_date -datatype date
- ::xo::db::CrAttribute create mime_type \
- -sqltype varchar(200) \
- -pretty_name "Mime Type" -pretty_plural "Mime Types" \
- -default text/plain -references cr_mime_types
- ::xo::db::CrAttribute create nls_language \
- -sqltype varchar(50) \
- -pretty_name "Language" -pretty_plural "Languages" \
- -default en_US
- # lob, content, content_length
- #
- # missing: attributes from cr_items
- ::xo::db::CrAttribute create text \
- -pretty_name "Text" \
- -create_acs_attribute false
- ::xo::db::CrAttribute create name \
- -pretty_name "Name" \
- -create_acs_attribute false
+ #
+ # The following attributes are from cr_revisions
+ #
+ ::xo::db::CrAttribute create item_id \
+ -datatype integer \
+ -pretty_name "Item ID" -pretty_plural "Item IDs" \
+ -references "cr_items on delete cascade"
+ ::xo::db::CrAttribute create title \
+ -sqltype varchar(1000) \
+ -pretty_name "Title" -pretty_plural "Titles"
+ ::xo::db::CrAttribute create description \
+ -sqltype varchar(1000) \
+ -pretty_name "Description" -pretty_plural "Descriptions"
+ ::xo::db::CrAttribute create publish_date -datatype date
+ ::xo::db::CrAttribute create mime_type \
+ -sqltype varchar(200) \
+ -pretty_name "Mime Type" -pretty_plural "Mime Types" \
+ -default text/plain -references cr_mime_types
+ ::xo::db::CrAttribute create nls_language \
+ -sqltype varchar(50) \
+ -pretty_name "Language" -pretty_plural "Languages" \
+ -default en_US
+ # lob, content, content_length
+ #
+ # missing: attributes from cr_items
+ ::xo::db::CrAttribute create text \
+ -pretty_name "Text" \
+ -create_acs_attribute false
+ ::xo::db::CrAttribute create name \
+ -pretty_name "Name" \
+ -create_acs_attribute false
} \
-parameter {
- package_id
- {parent_id -100}
- {publish_status ready}
+ package_id
+ {parent_id -100}
+ {publish_status ready}
}
CrItem::slot::revision_id default 0
@@ -755,7 +755,7 @@
} else {
::xo::dc dml update_content "update cr_revisions \
set content = :content \
- where revision_id = :revision_id"
+ where revision_id = :revision_id"
}
}
@@ -764,7 +764,7 @@
set domain [$slot domain]
set sql "update [$domain table_name] \
set [$slot column_name] = :value \
- where [$domain id_column] = $revision_id"
+ where [$domain id_column] = $revision_id"
::xo::dc dml update_attribute_from_slot $sql
}
} else {
@@ -841,7 +841,7 @@
} else {
set sql "update [$domain table_name] \
set $att = :value \
- where [$domain id_column] = $revision_id"
+ where [$domain id_column] = $revision_id"
::xo::dc dml $att $sql
}
}
@@ -855,9 +855,9 @@
if {$quoted} {set val $value} {set val :value}
::xo::dc dml update_content "update cr_revisions \
set $attribute = :val \
- where revision_id = :revision_id"
+ where revision_id = :revision_id"
}
-
+
CrItem instproc current_user_id {} {
if {[my isobject ::xo::cc]} {return [::xo::cc user_id]}
if {[ad_conn isconnected]} {return [ad_conn user_id]}
@@ -894,10 +894,10 @@
foreach {__slot_name __slot} [[my info class] array get db_slot] {
if {
- $__slot eq "::xo::db::Object::slot::object_title" ||
- $__slot eq "::xo::db::CrItem::slot::name" ||
+ $__slot eq "::xo::db::Object::slot::object_title" ||
+ $__slot eq "::xo::db::CrItem::slot::name" ||
$__slot eq "::xo::db::CrItem::slot::publish_date"
- } continue
+ } continue
my instvar $__slot_name
lappend __atts [$__slot column_name]
lappend __vars $__slot_name
@@ -911,7 +911,7 @@
set text [cr_create_content_file $item_id $revision_id $import_file]
}
::xo::dc [::xo::dc insert-view-operation] revision_add \
- [[my info class] insert_statement $__atts $__vars]
+ [[my info class] insert_statement $__atts $__vars]
my fix_content $revision_id $text
@@ -944,19 +944,19 @@
ns_log notice "--OpenACS Version 5.2 or newer [ad_acs_version]"
CrItem set content_item__new_args {
-name $name -parent_id $parent_id -creation_user $creation_user \
- -creation_ip $creation_ip \
- -item_subtype "content_item" -content_type $object_type \
- -description $description -mime_type $mime_type -nls_language $nls_language \
- -is_live f -storage_type $storage_type -package_id $package_id
+ -creation_ip $creation_ip \
+ -item_subtype "content_item" -content_type $object_type \
+ -description $description -mime_type $mime_type -nls_language $nls_language \
+ -is_live f -storage_type $storage_type -package_id $package_id
}
} else {
ns_log notice "--OpenACS Version 5.1 or older [ad_acs_version]"
CrItem set content_item__new_args {
-name $name -parent_id $parent_id -creation_user $creation_user \
- -creation_ip $creation_ip \
- -item_subtype "content_item" -content_type $object_type \
- -description $description -mime_type $mime_type -nls_language $nls_language \
- -is_live f -storage_type $storage_type
+ -creation_ip $creation_ip \
+ -item_subtype "content_item" -content_type $object_type \
+ -description $description -mime_type $mime_type -nls_language $nls_language \
+ -is_live f -storage_type $storage_type
}
}
@@ -996,10 +996,10 @@
foreach {__slot_name __slot} [$__class array get db_slot] {
#my log "--slot = $__slot"
if {
- $__slot eq "::xo::db::Object::slot::object_title" ||
- $__slot eq "::xo::db::CrItem::slot::name" ||
+ $__slot eq "::xo::db::Object::slot::object_title" ||
+ $__slot eq "::xo::db::CrItem::slot::name" ||
$__slot eq "::xo::db::CrItem::slot::publish_date"
- } continue
+ } continue
my instvar $__slot_name
if {![info exists $__slot_name]} {set $__slot_name ""}
lappend __atts [$__slot column_name]
@@ -1012,8 +1012,8 @@
set revision_id [xo::dc nextval acs_object_id_seq]
if {![my exists name] || $name eq ""} {
- # we have an autonamed item, use a unique value for the name
- set name [expr {[my exists __autoname_prefix] ?
+ # we have an autonamed item, use a unique value for the name
+ set name [expr {[my exists __autoname_prefix] ?
"[my set __autoname_prefix]$revision_id" : $revision_id}]
}
if {$title eq ""} {
@@ -1022,13 +1022,13 @@
}
#my msg --[subst [[self class] set content_item__new_args]]
set item_id [eval ::xo::db::sql::content_item new \
- [[self class] set content_item__new_args]]
+ [[self class] set content_item__new_args]]
if {$storage_type eq "file"} {
set text [cr_create_content_file $item_id $revision_id $import_file]
}
::xo::dc [::xo::dc insert-view-operation] revision_add \
- [[my info class] insert_statement $__atts $__vars]
+ [[my info class] insert_statement $__atts $__vars]
my fix_content $revision_id $text
if {$live_p} {
@@ -1094,8 +1094,8 @@
my instvar package_id
set base [$package_id url]
set sql [::xo::dc select \
- -map_function_names true \
- -vars "ci.name, r.revision_id as version_id,\
+ -map_function_names true \
+ -vars "ci.name, r.revision_id as version_id,\
person__name(o.creation_user) as author, \
o.creation_user as author_id, \
to_char(o.last_modified,'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,\
@@ -1104,56 +1104,56 @@
acs_permission__permission_p(r.revision_id,:user_id,'delete') as delete_p,\
r.content_length,\
content_revision__get_number(r.revision_id) as version_number " \
- -from "cr_items ci, cr_revisions r, acs_objects o" \
- -where "ci.item_id = :page_id and r.item_id = ci.item_id and o.object_id = r.revision_id
+ -from "cr_items ci, cr_revisions r, acs_objects o" \
+ -where "ci.item_id = :page_id and r.item_id = ci.item_id and o.object_id = r.revision_id
and exists (select 1 from acs_object_party_privilege_map m
where m.object_id = r.revision_id
and m.party_id = :user_id
and m.privilege = 'read')" \
- -orderby "r.revision_id desc"]
+ -orderby "r.revision_id desc"]
::xo::dc foreach revisions_select $sql {
if {$content_length < 1024} {
- if {$content_length eq ""} {set content_length 0}
- set content_size_pretty "[lc_numeric $content_length] [_ file-storage.bytes]"
+ if {$content_length eq ""} {set content_length 0}
+ set content_size_pretty "[lc_numeric $content_length] [_ file-storage.bytes]"
} else {
- set content_size_pretty "[lc_numeric [format %.2f [expr {$content_length/1024.0}]]] [_ file-storage.kb]"
+ set content_size_pretty "[lc_numeric [format %.2f [expr {$content_length/1024.0}]]] [_ file-storage.kb]"
}
set last_modified_ansi [lc_time_system_to_conn $last_modified_ansi]
if {$version_id != $live_revision_id} {
- set live_revision "Make this Revision Current"
- set live_revision_icon /resources/acs-subsite/radio.gif
+ set live_revision "Make this Revision Current"
+ set live_revision_icon /resources/acs-subsite/radio.gif
} else {
- set live_revision "Current Live Revision"
- set live_revision_icon /resources/acs-subsite/radiochecked.gif
+ set live_revision "Current Live Revision"
+ set live_revision_icon /resources/acs-subsite/radiochecked.gif
}
set live_revision_link [export_vars -base $base \
- {{m make-live-revision} {revision_id $version_id}}]
+ {{m make-live-revision} {revision_id $version_id}}]
t1 add \
- -version_number $version_number: \
- -edit.href [export_vars -base $base {{revision_id $version_id}}] \
- -author $author \
- -content_size $content_size_pretty \
- -last_modified_ansi [lc_time_fmt $last_modified_ansi "%x %X"] \
- -description $description \
- -live_revision.src $live_revision_icon \
- -live_revision.title $live_revision \
- -live_revision.href $live_revision_link \
- -version_delete.href [export_vars -base $base \
- {{m delete-revision} {revision_id $version_id}}] \
- -version_delete.title [_ file-storage.Delete_Version]
+ -version_number $version_number: \
+ -edit.href [export_vars -base $base {{revision_id $version_id}}] \
+ -author $author \
+ -content_size $content_size_pretty \
+ -last_modified_ansi [lc_time_fmt $last_modified_ansi "%x %X"] \
+ -description $description \
+ -live_revision.src $live_revision_icon \
+ -live_revision.title $live_revision \
+ -live_revision.href $live_revision_link \
+ -version_delete.href [export_vars -base $base \
+ {{m delete-revision} {revision_id $version_id}}] \
+ -version_delete.title [_ file-storage.Delete_Version]
[t1 last_child] set payload(revision_id) $version_id
if {$isAdmin} {
- set show_revision_link [export_vars -base $base \
- {{m show-object} {revision_id $version_id}}]
- [t1 last_child] set show show
- [t1 last_child] set show.href $show_revision_link
+ set show_revision_link [export_vars -base $base \
+ {{m show-object} {revision_id $version_id}}]
+ [t1 last_child] set show show
+ [t1 last_child] set show.href $show_revision_link
}
}
@@ -1213,8 +1213,8 @@
-table_name "images" -id_column "image_id" \
-object_type image \
-slots {
- ::xo::db::CrAttribute create width -datatype integer
- ::xo::db::CrAttribute create height -datatype integer
+ ::xo::db::CrAttribute create width -datatype integer
+ ::xo::db::CrAttribute create height -datatype integer
}
#
@@ -1235,14 +1235,14 @@
-datatype text -pretty_name "Description" -spec "textarea,cols=80,rows=2"
# the package_id in folders is deprecated, the one in acs_objects should be used
} \
-\
+ \
-ad_doc {
This is a generic class that represents a "cr_folder"
XoWiki specific methods are currently directly mixed
into all instances of this class.
@see ::xowiki::Folder
- }
+ }
# TODO: the following block should not be necessary We should get
# rid of the old "folder object" in xowiki and use parameter pages
@@ -1275,7 +1275,7 @@
} {
returns the SQL-query to select the CrItems of the specified object_type
@select_attributes attributes for the sql query to be retrieved, in addition
- to item_id, name, publish_status, object_type which are always returned
+ to item_id, name, publish_status, object_type which are always returned
@param orderby for ordering the solution set
@param where_clause clause for restricting the answer set
@param with_subtypes return subtypes as well
@@ -1341,11 +1341,11 @@
}
set sql [::xo::dc select \
- -vars $attribute_selection \
- -from "$acs_objects_table cr_folders cf $from_clause" \
- -where [join $cond " and "] \
- -orderby $orderby \
- -limit $limit -offset $offset]
+ -vars $attribute_selection \
+ -from "$acs_objects_table cr_folders cf $from_clause" \
+ -where [join $cond " and "] \
+ -orderby $orderby \
+ -limit $limit -offset $offset]
return $sql
}
@@ -1358,7 +1358,7 @@
Usually, the id of the item that is fetched from the database is used. However,
XoWiki's "folder objects" (i.e. an ::xowiki::Object instance that can be used
- to configure the respective instance) are created using the acs_object_id of the
+ to configure the respective instance) are created using the acs_object_id of the
root folder of the xowiki instance, which is actually the id of another acs_object.
Because of this, we cannot simply create the instances of CrFolder using the
@@ -1422,8 +1422,8 @@
-description [my description] \
-parent_id $parent_id \
-package_id $package_id \
- -creation_user $creation_user \
- -creation_ip $creation_ip]
+ -creation_user $creation_user \
+ -creation_ip $creation_ip]
#parent_s has_child_folders attribute could have become outdated
if { [my isobject ::$parent_id] } {
::$parent_id set has_child_folders t
@@ -1448,10 +1448,10 @@
content::folder::update \
-folder_id $folder_id \
-attributes [list \
- [list name [my set name]] \
- [list label [my set label]] \
- [list description [my set description]]\
- ]
+ [list name [my set name]] \
+ [list label [my set label]] \
+ [list description [my set description]]\
+ ]
my get_context package_id user_id ip
::xo::dc 1row _ "select acs_object__update_last_modified(:folder_id,$user,'$ip')"
}
@@ -1503,13 +1503,13 @@
# the object from the cache; check if the object exists already
# or create it.
if {[my isobject $object]} {
- # There would have been no need to call this method. We could
+ # There would have been no need to call this method. We could
# raise an error here.
- # my log "--!! $object exists already"
+ # my log "--!! $object exists already"
} else {
- # Create the object from the serialization and initialize it
+ # Create the object from the serialization and initialize it
eval $serialized_object
- if {$initialize} {$object initialize_loaded_object}
+ if {$initialize} {$object initialize_loaded_object}
}
}
return $object
@@ -1554,11 +1554,11 @@
set scalars {}
foreach x [my info vars __*] {
if {[my array exists $x]} {
- lappend arrays $x [my array get $x]
- my array unset $x
+ lappend arrays $x [my array get $x]
+ my array unset $x
} {
- lappend scalars $x [my set $x]
- my unset $x
+ lappend scalars $x [my set $x]
+ my unset $x
}
}
return [list $arrays $scalars]
Index: openacs-4/packages/xotcl-core/tcl/generic-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/generic-procs.tcl,v
diff -u -r1.94.6.2 -r1.94.6.3
--- openacs-4/packages/xotcl-core/tcl/generic-procs.tcl 11 Feb 2014 11:53:09 -0000 1.94.6.2
+++ openacs-4/packages/xotcl-core/tcl/generic-procs.tcl 14 Feb 2014 18:20:45 -0000 1.94.6.3
@@ -30,11 +30,11 @@
- fields: form elements as described in
- ad_form.
+ ad_form.
- data: data object (e.g. instance if CrItem)
- folder_id: associated folder id
- name: of this form, used for naming the template,
- defaults to the object name
+ defaults to the object name
- add_page_title: page title when adding content items
- edit_page_title: page title when editing content items
- with_categories: display form with categories (default false)
@@ -119,7 +119,7 @@
-privilege $privilege
}
set edit_form_page_title [if {$privilege eq "create"} \
- {my add_page_title} {my edit_page_title}]
+ {my add_page_title} {my edit_page_title}]
set context [list $edit_form_page_title]
}
@@ -167,7 +167,7 @@
ad_returnredirect $link
ad_script_abort
}
-
+
Form ad_instproc generate {
{-template "formTemplate"}
{-export}
Index: openacs-4/packages/xotcl-core/tcl/http-client-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/http-client-procs.tcl,v
diff -u -r1.29.6.2 -r1.29.6.3
--- openacs-4/packages/xotcl-core/tcl/http-client-procs.tcl 30 Sep 2013 11:38:41 -0000 1.29.6.2
+++ openacs-4/packages/xotcl-core/tcl/http-client-procs.tcl 14 Feb 2014 18:20:45 -0000 1.29.6.3
@@ -39,17 +39,17 @@
# (providing post_data causes the POST request).
#
# set r [::xo::HttpRequest new \
- # -url http://yourhost.yourdomain/yourpath \
- # -post_data [export_vars {var1 var2}] \
- # -content_type "application/x-www-form-urlencoded; charset=UTF-8"]
+ # -url http://yourhost.yourdomain/yourpath \
+ # -post_data [export_vars {var1 var2}] \
+ # -content_type "application/x-www-form-urlencoded; charset=UTF-8"]
#
# More recently, we added timeout support for blocking http
# requests. By passing a timeout parameter, you gain control
# on the total roundtrip time (in milliseconds, ms):
#
# set r [::xo::HttpRequest new \
- # -url http://www.openacs.org/ \
- # -timeout 1500]
+ # -url http://www.openacs.org/ \
+ # -timeout 1500]
#
# Please, make sure that you use a recent distribution of tclthread
# ( > 2.6.5 ) to have the blocking-timeout feature working
@@ -60,7 +60,7 @@
# CVS snapshot, dating at least 2008-05-23. E.g.:
#
# cvs -z3 -d:pserver:anonymous@tcl.cvs.sourceforge.net:/cvsroot/tcl co \
- # -D 20080523 -d thread2.6.5~20080523 thread
+ # -D 20080523 -d thread2.6.5~20080523 thread
#
# Provided that the Tcl module tls (see e.g. http://tls.sourceforge.net/)
# is available and can be loaded via "package require tls" into
@@ -99,8 +99,8 @@
# bgdelivery thread.
#
# ::bgdelivery do ::xo::AsyncHttpRequest new \
- # -url "https://oacs-dotlrn-conf2007.wu-wien.ac.at/conf2007/" \
- # -mixin ::xo::AsyncHttpRequest::SimpleListener
+ # -url "https://oacs-dotlrn-conf2007.wu-wien.ac.at/conf2007/" \
+ # -mixin ::xo::AsyncHttpRequest::SimpleListener
# -proc finalize {obj status value} { my destroy }
#
######################
@@ -129,7 +129,7 @@
Attribute create method
Attribute create post_data -default ""
Attribute create content_type \
- -default "text/plain; charset=[ns_config ns/parameters OutputCharset iso-8859-1]"
+ -default "text/plain; charset=[ns_config ns/parameters OutputCharset iso-8859-1]"
Attribute create request_header_fields -default {}
Attribute create user_agent -default "xohttp/0.2"
}
@@ -228,12 +228,12 @@
#
# (B) If the "charset" is omitted, certain default values apply (!):
#
- # (B.1) RFC 3023 text/* registrations default to us-ascii (!),
- # and not iso-8859-1 (overruling RFC 2616).
+ # (B.1) RFC 3023 text/* registrations default to us-ascii (!),
+ # and not iso-8859-1 (overruling RFC 2616).
#
# (B.2) RFC 3023 application/* and non-text "+xml" registrations
- # are to be left untreated (in our context, no encoding
- # filtering is to be applied -> "binary")
+ # are to be left untreated (in our context, no encoding
+ # filtering is to be applied -> "binary")
#
# (B.3) RFC 2616 text/* registration (if not covered by B.1)
# default to iso-8859-1
@@ -253,16 +253,16 @@
if {[regexp {^text/.*$|^.*/xml.*$|^.*\+xml.*$} $content_type]} {
# Case (A): Check for an explicitly provided charset parameter
if {[regexp {;\s*charset\s*=([^;]*)} $content_type _ charset]} {
- set enc [ns_encodingforcharset [string trim $charset]]
+ set enc [ns_encodingforcharset [string trim $charset]]
}
# Case (B.1)
if {$enc eq "" && [regexp {^text/xml.*$|text/.*\+xml.*$} $content_type]} {
- set enc [ns_encodingforcharset us-ascii]
+ set enc [ns_encodingforcharset us-ascii]
}
# Case (B.3)
if {$enc eq "" && [string match "text/*" $content_type]} {
- set enc [ns_encodingforcharset iso-8859-1]
+ set enc [ns_encodingforcharset iso-8859-1]
}
}
@@ -314,8 +314,8 @@
puts $S "Host: $host"
puts $S "User-Agent: [my user_agent]"
foreach {tag value} [my request_header_fields] {
- #regsub -all \[\n\r\] $value {} value
- #set tag [string trim $tag]
+ #regsub -all \[\n\r\] $value {} value
+ #set tag [string trim $tag]
puts $S "$tag: $value"
}
my $method
@@ -391,7 +391,7 @@
-1 {my finish; return}
}
if {[regexp {^HTTP/([0-9.]+) +([0-9]+) *} $response _ \
- responseHttpVersion status_code]} {
+ responseHttpVersion status_code]} {
my reply_first_line_done
} else {
my cancel "unexpected-response '$response'"
@@ -404,20 +404,20 @@
while {1} {
set n [my getLine response]
switch -exact -- $n {
- -2 {my cancel premature-eof; return}
- -1 {continue}
- 0 {break}
- default {
- #my debug "--header $response"
- if {[regexp -nocase {^content-length:(.+)$} $response _ length]} {
- my set content_length [string trim $length]
- } elseif {[regexp -nocase {^content-type:(.+)$} $response _ type]} {
- my set content_type [string trim $type]
- }
- if {[regexp -nocase {^([^:]+): *(.+)$} $response _ key value]} {
- my lappend meta [string tolower $key] $value
- }
- }
+ -2 {my cancel premature-eof; return}
+ -1 {continue}
+ 0 {break}
+ default {
+ #my debug "--header $response"
+ if {[regexp -nocase {^content-length:(.+)$} $response _ length]} {
+ my set content_length [string trim $length]
+ } elseif {[regexp -nocase {^content-type:(.+)$} $response _ type]} {
+ my set content_type [string trim $type]
+ }
+ if {[regexp -nocase {^([^:]+): *(.+)$} $response _ key value]} {
+ my lappend meta [string tolower $key] $value
+ }
+ }
}
}
my reply_header_done
@@ -474,40 +474,40 @@
set mutex [thread::mutex create]
thread::mutex lock $mutex
-
+
# start the asynchronous request
my debug "--a create new ::xo::AsyncHttpRequest"
set req [bgdelivery do -async ::xo::AsyncHttpRequest new \
- -mixin ::xo::AsyncHttpRequest::RequestManager \
- -url [my url] \
- -timeout [my timeout] \
- -post_data [my post_data] \
- -request_header_fields [my request_header_fields] \
- -content_type [my content_type] \
- -user_agent [my user_agent] \
- -condition $cond]
+ -mixin ::xo::AsyncHttpRequest::RequestManager \
+ -url [my url] \
+ -timeout [my timeout] \
+ -post_data [my post_data] \
+ -request_header_fields [my request_header_fields] \
+ -content_type [my content_type] \
+ -user_agent [my user_agent] \
+ -condition $cond]
while {1} {
- my set_status $cond COND_WAIT_TIMEOUT
- thread::cond wait $cond $mutex [my timeout]
+ my set_status $cond COND_WAIT_TIMEOUT
+ thread::cond wait $cond $mutex [my timeout]
- set status [my get_status $cond]
- my debug "status after cond-wait $status"
+ set status [my get_status $cond]
+ my debug "status after cond-wait $status"
- if {$status ne "COND_WAIT_REFRESH"} break
+ if {$status ne "COND_WAIT_REFRESH"} break
}
if {$status eq "COND_WAIT_TIMEOUT"} {
- my set_status $cond "COND_WAIT_CANCELED"
+ my set_status $cond "COND_WAIT_CANCELED"
}
set status_value [my get_value_for_status $cond]
if {$status eq "JOB_COMPLETED"} {
- my set data $status_value
+ my set data $status_value
} else {
- set msg "Timeout-constraint, blocking HTTP request failed. Reason: '$status'"
- if {$status_value ne ""} {
- append msg " ($status_value)"
- }
- error $msg
+ set msg "Timeout-constraint, blocking HTTP request failed. Reason: '$status'"
+ if {$status_value ne ""} {
+ append msg " ($status_value)"
+ }
+ error $msg
}
thread::cond destroy $cond
thread::mutex unlock $mutex
@@ -521,11 +521,11 @@
#
# my log "after core init, S?[my exists S]"
if {[my exists S]} {
- my send_request
+ my send_request
}
}
}
-
+
#
# Asynchronous (non-blocking) requests
#
@@ -646,45 +646,45 @@
Class create AsyncHttpRequest::SimpleListener \
-instproc init {} {
- my debug "INIT- NEXT=[self next]"
- # register request object as its own request_manager
- my request_manager [self]
- next
+ my debug "INIT- NEXT=[self next]"
+ # register request object as its own request_manager
+ my request_manager [self]
+ next
} -instproc start_request {payload obj} {
- my debug "request $obj started"
+ my debug "request $obj started"
} -instproc request_data {payload obj} {
- my debug "partial or complete post"
+ my debug "partial or complete post"
} -instproc start_reply {payload obj} {
- my debug "reply $obj started"
+ my debug "reply $obj started"
} -instproc reply_data {payload obj} {
- my debug "partial or complete delivery"
+ my debug "partial or complete delivery"
} -instproc finalize {obj status value} {
- my debug "finalize $obj $status"
- # this is called as a single method after success or failure
- next
+ my debug "finalize $obj $status"
+ # this is called as a single method after success or failure
+ next
} -instproc success {payload obj} {
- my debug "[string length $payload] bytes payload"
- #if {[string length $payload]<600} {my log payload=$payload}
- # this is called as after a succesful request
- my finalize $obj "JOB_COMPLETED" $payload
+ my debug "[string length $payload] bytes payload"
+ #if {[string length $payload]<600} {my log payload=$payload}
+ # this is called as after a succesful request
+ my finalize $obj "JOB_COMPLETED" $payload
} -instproc failure {reason obj} {
- my log "[self proc] [self args]"
- my log "failed for '$reason'"
- # this is called as after an unsuccesful request
- my finalize $obj "JOB_FAILED" $reason
+ my log "[self proc] [self args]"
+ my log "failed for '$reason'"
+ # this is called as after an unsuccesful request
+ my finalize $obj "JOB_FAILED" $reason
} -instproc unknown {method args} {
- my log "[self proc] [self args]"
- my log "UNKNOWN $method"
+ my log "[self proc] [self args]"
+ my log "UNKNOWN $method"
}
-
+
# Mixin class, used to turn instances of
# AsyncHttpRequest into result callbacks
# in the scope of bgdelivery, realising
@@ -694,51 +694,51 @@
Class create AsyncHttpRequest::RequestManager \
-superclass AsyncHttpRequest::SimpleListener \
-slots {
- Attribute create condition
+ Attribute create condition
} -instproc finalize {obj status value} {
- # set the result and do the notify
- my instvar condition
- # If a job was canceled, the status variable might not exist
- # anymore, the condition might be already gone as well. In
- # this case, we do not have to perform the cond-notify.
- if {[my exists_status $condition] &&
- [my get_status $condition] eq "COND_WAIT_REFRESH"} {
- }
- if {[my exists_status $condition] &&
- ( [my get_status $condition] eq "COND_WAIT_REFRESH"
- || [my get_status $condition] eq "COND_WAIT_TIMEOUT")
- } {
+ # set the result and do the notify
+ my instvar condition
+ # If a job was canceled, the status variable might not exist
+ # anymore, the condition might be already gone as well. In
+ # this case, we do not have to perform the cond-notify.
+ if {[my exists_status $condition] &&
+ [my get_status $condition] eq "COND_WAIT_REFRESH"} {
+ }
+ if {[my exists_status $condition] &&
+ ( [my get_status $condition] eq "COND_WAIT_REFRESH"
+ || [my get_status $condition] eq "COND_WAIT_TIMEOUT")
+ } {
# Before, we had here one COND_WAIT_TIMEOUT, and once
# COND_WAIT_REFRESH
- my set_status $condition $status $value
- catch {thread::cond notify $condition}
- $obj debug "--- destroying after finish"
- $obj destroy
- }
+ my set_status $condition $status $value
+ catch {thread::cond notify $condition}
+ $obj debug "--- destroying after finish"
+ $obj destroy
+ }
} -instproc set_cond_timeout {} {
- my instvar condition
- if {[my exists_status $condition] &&
- [my get_status $condition] eq "COND_WAIT_TIMEOUT"} {
- my set_status $condition COND_WAIT_REFRESH
- catch {thread::cond notify $condition}
- }
-
+ my instvar condition
+ if {[my exists_status $condition] &&
+ [my get_status $condition] eq "COND_WAIT_TIMEOUT"} {
+ my set_status $condition COND_WAIT_REFRESH
+ catch {thread::cond notify $condition}
+ }
+
} -instproc start_request {payload obj} {
- my debug "JOB start request $obj"
- my set_cond_timeout
+ my debug "JOB start request $obj"
+ my set_cond_timeout
} -instproc request_data {payload obj} {
- my debug "JOB request data $obj [string length $payload]"
- my set_cond_timeout
+ my debug "JOB request data $obj [string length $payload]"
+ my set_cond_timeout
} -instproc start_reply {payload obj} {
- my debug "JOB start reply $obj"
- my set_cond_timeout
+ my debug "JOB start reply $obj"
+ my set_cond_timeout
} -instproc reply_data {payload obj} {
- my debug "JOB reply data $obj [string length $payload]"
- my set_cond_timeout
+ my debug "JOB reply data $obj [string length $payload]"
+ my set_cond_timeout
}
@@ -805,10 +805,17 @@
catch {close [my set F]}
next
}
-
+
#
# To activate trace for all requests, uncomment the following line.
# To trace a single request, mixin ::xo::HttpRequestTrace into the request.
#
# HttpCore instmixin add ::xo::HttpRequestTrace
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/ical-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/ical-procs.tcl,v
diff -u -r1.9 -r1.9.2.1
--- openacs-4/packages/xotcl-core/tcl/ical-procs.tcl 31 Jul 2012 12:25:22 -0000 1.9
+++ openacs-4/packages/xotcl-core/tcl/ical-procs.tcl 14 Feb 2014 18:20:45 -0000 1.9.2.1
@@ -112,9 +112,9 @@
}
if {![info exists value]} {
if {[my exists $slot]} {
- set value [my $slot]
+ set value [my $slot]
} else {
- return ""
+ return ""
}
}
if {[info exists conv]} {
@@ -128,20 +128,20 @@
::xo::ical::VCALITEM instproc start_end {} {
if {[my is_day_item]} {
append result \
- [my tag -conv tcl_time_to_local_day dtstart] \
- [my tag -conv tcl_time_to_local_day dtend]
+ [my tag -conv tcl_time_to_local_day dtstart] \
+ [my tag -conv tcl_time_to_local_day dtend]
} else {
append result \
- [my tag -conv tcl_time_to_utc dtstart] \
- [my tag -conv tcl_time_to_utc dtend]
+ [my tag -conv tcl_time_to_utc dtstart] \
+ [my tag -conv tcl_time_to_utc dtend]
}
}
::xo::ical::VCALITEM instproc as_ical {} {
set item_type [namespace tail [my info class]]
append t "BEGIN:$item_type\r\n" \
- [my ical_body] \
- "END:$item_type\r\n"
+ [my ical_body] \
+ "END:$item_type\r\n"
return $t
}
@@ -174,31 +174,32 @@
# VJOURNAL: DRAFT, FINAL, CANCELLED
append t \
- [my tag -conv tcl_time_to_utc -value $tcl_creation_date created] \
- [my tag -conv tcl_time_to_utc -value $tcl_last_modified last-modified] \
- [my tag -conv tcl_time_to_utc -value $tcl_stamp dtstamp] \
- [my tag -conv tcl_time_to_utc dtstart] \
- [my tag -conv tcl_time_to_utc dtend] \
- [my tag -conv tcl_time_to_utc completed] \
- [my tag -conv tcl_time_to_utc percent-complete] \
- [my tag transp] \
- [my tag uid] \
- [my tag url] \
- [my tag geo] \
- [my tag priority] \
- [my tag sequence] \
- [my tag CLASS] \
- [my tag location] \
- [my tag status] \
- [my tag -conv text_to_ical description] \
- [my tag -conv text_to_ical summary] \
- [my tag -conv tcl_time_to_utc due]
+ [my tag -conv tcl_time_to_utc -value $tcl_creation_date created] \
+ [my tag -conv tcl_time_to_utc -value $tcl_last_modified last-modified] \
+ [my tag -conv tcl_time_to_utc -value $tcl_stamp dtstamp] \
+ [my tag -conv tcl_time_to_utc dtstart] \
+ [my tag -conv tcl_time_to_utc dtend] \
+ [my tag -conv tcl_time_to_utc completed] \
+ [my tag -conv tcl_time_to_utc percent-complete] \
+ [my tag transp] \
+ [my tag uid] \
+ [my tag url] \
+ [my tag geo] \
+ [my tag priority] \
+ [my tag sequence] \
+ [my tag CLASS] \
+ [my tag location] \
+ [my tag status] \
+ [my tag -conv text_to_ical description] \
+ [my tag -conv text_to_ical summary] \
+ [my tag -conv tcl_time_to_utc due]
if {[my exists formatted_recurrences]} {
append t [my set formatted_recurrences]
}
return $t
}
+
#
# VTODO
#
@@ -275,3 +276,10 @@
}
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/install-check-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/install-check-procs.tcl,v
diff -u -r1.4.8.1 -r1.4.8.2
--- openacs-4/packages/xotcl-core/tcl/install-check-procs.tcl 30 Sep 2013 11:38:41 -0000 1.4.8.1
+++ openacs-4/packages/xotcl-core/tcl/install-check-procs.tcl 14 Feb 2014 18:20:45 -0000 1.4.8.2
@@ -12,7 +12,7 @@
Please follow the install instructions on http://www.openacs.org/xowiki/xotcl-core"
} elseif {$::xotcl::version < 1.5} {
error " XOTcl 1.5 or newer required. You are using $::xotcl::version$::xotcl::patchlevel.\n\
- Please install a new version of XOTcl (see http://www.openacs.org/xowiki/xotcl-core)"
+ Please install a new version of XOTcl (see http://www.openacs.org/xowiki/xotcl-core)"
} else {
ns_log notice "XOTcl $::xotcl::version$::xotcl::patchlevel is installed on your system."
}
@@ -46,4 +46,12 @@
}
}
-}
\ No newline at end of file
+}
+
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/tcl/policy-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/policy-procs.tcl,v
diff -u -r1.22.2.2 -r1.22.2.3
--- openacs-4/packages/xotcl-core/tcl/policy-procs.tcl 11 Feb 2014 11:53:09 -0000 1.22.2.2
+++ openacs-4/packages/xotcl-core/tcl/policy-procs.tcl 14 Feb 2014 18:20:45 -0000 1.22.2.3
@@ -80,7 +80,7 @@
set condition [lindex $p 0]
if {[llength $condition]>1} {
# we have a condition
- lassign $condition cond value
+ lassign $condition cond value
if {[$object condition=$cond $query_context $value]} {
return [my get_privilege [list [lrange $p 1 end]] $object $method]
}
@@ -109,10 +109,10 @@
#ns_log notice "---check [list $object info class]"
set c [$object info class]
foreach class [concat $c [$c info heritage]] {
- set c [self]::[namespace tail $class]
- if {![my isclass $c]} continue
- set permission [my get_permission -check_classes false $class $method]
- if {$permission ne ""} break
+ set c [self]::[namespace tail $class]
+ if {![my isclass $c]} continue
+ set permission [my get_permission -check_classes false $class $method]
+ if {$permission ne ""} break
}
}
return $permission
@@ -148,16 +148,16 @@
lassign [my get_privilege -query_context $ctx $permission $object $method] kind p
#my msg "--privilege = $p kind = $kind"
switch -- $kind {
- primitive {return [my check_privilege -login false \
- -package_id $package_id -user_id $user_id \
- $p $object $method]}
- complex {
- lassign $p attribute privilege
- set id [$object set $attribute]
- #my msg "--p checking permission -object_id /$id/ -privilege $privilege -party_id $user_id\
- # ==> [::xo::cc permission -object_id $id -privilege $privilege -party_id $user_id]"
- return [::xo::cc permission -object_id $id -privilege $privilege -party_id $user_id]
- }
+ primitive {return [my check_privilege -login false \
+ -package_id $package_id -user_id $user_id \
+ $p $object $method]}
+ complex {
+ lassign $p attribute privilege
+ set id [$object set $attribute]
+ #my msg "--p checking permission -object_id /$id/ -privilege $privilege -party_id $user_id\
+ # ==> [::xo::cc permission -object_id $id -privilege $privilege -party_id $user_id]"
+ return [::xo::cc permission -object_id $id -privilege $privilege -party_id $user_id]
+ }
}
}
return 0
@@ -181,19 +181,19 @@
if {$permission ne ""} {
lassign [my get_privilege $permission $object $method] kind p
switch -- $kind {
- primitive {
- set allowed [my check_privilege \
- -user_id $user_id -package_id $package_id \
- $p $object $method]
- set privilege $p
- }
- complex {
- lassign $p attribute privilege
- set id [$object set $attribute]
- set allowed [::xo::cc permission -object_id $id \
- -privilege $privilege \
- -party_id $user_id]
+ primitive {
+ set allowed [my check_privilege \
+ -user_id $user_id -package_id $package_id \
+ $p $object $method]
+ set privilege $p
}
+ complex {
+ lassign $p attribute privilege
+ set id [$object set $attribute]
+ set allowed [::xo::cc permission -object_id $id \
+ -privilege $privilege \
+ -party_id $user_id]
+ }
}
}
@@ -202,18 +202,25 @@
if {!$allowed} {
set untrusted_user_id [::xo::cc set untrusted_user_id]
if {$permission eq ""} {
- ns_log notice "enforce_permissions: no permission for $object->$method defined"
+ ns_log notice "enforce_permissions: no permission for $object->$method defined"
} elseif {$user_id == 0 && $untrusted_user_id} {
ns_log notice "enforce_permissions: force login, user_id=0 and untrusted_id=$untrusted_user_id"
auth::require_login
} else {
- ns_log notice "enforce_permissions: $user_id doesn't have $privilege on $object"
+ ns_log notice "enforce_permissions: $user_id doesn't have $privilege on $object"
}
- ad_return_forbidden "[_ xotcl-core.permission_denied]" [_ xotcl-core.policy-error-insufficient_permissions]
+ ad_return_forbidden "[_ xotcl-core.permission_denied]" [_ xotcl-core.policy-error-insufficient_permissions]
ad_script_abort
}
-
+
return $allowed
}
}
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/www/cache.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/www/cache.tcl,v
diff -u -r1.5.6.1 -r1.5.6.2
--- openacs-4/packages/xotcl-core/www/cache.tcl 5 Dec 2013 08:11:19 -0000 1.5.6.1
+++ openacs-4/packages/xotcl-core/www/cache.tcl 14 Feb 2014 18:23:18 -0000 1.5.6.2
@@ -43,7 +43,7 @@
TableWidget t1 \
-actions [subst {
- Action new -label Refresh -url [ad_conn url] -tooltip "Reload this page"
+ Action new -label Refresh -url [ad_conn url] -tooltip "Reload this page"
}] \
-columns {
AnchorField name -label "Name"
@@ -96,3 +96,9 @@
}
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/www/show-class-graph.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/www/show-class-graph.tcl,v
diff -u -r1.8.6.3 -r1.8.6.4
--- openacs-4/packages/xotcl-core/www/show-class-graph.tcl 5 Oct 2013 12:33:44 -0000 1.8.6.3
+++ openacs-4/packages/xotcl-core/www/show-class-graph.tcl 14 Feb 2014 18:23:18 -0000 1.8.6.4
@@ -87,7 +87,7 @@
set reduced_sc [list]
foreach sc [$e info superclass] {
if {$omit_base_classes && $sc eq "::xotcl::Object"
- || $sc eq "::xotcl::Class"} continue
+ || $sc eq "::xotcl::Class"} continue
lappend reduced_sc $sc
}
if {$reduced_sc eq {}} continue
@@ -169,3 +169,11 @@
#set f [open $tmpnam.dot w]; puts $f $dot_code; close $f
#file delete $tmpnam.dot
+
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
Index: openacs-4/packages/xotcl-core/www/show-object.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/www/show-object.tcl,v
diff -u -r1.15.6.5 -r1.15.6.6
--- openacs-4/packages/xotcl-core/www/show-object.tcl 24 Sep 2013 20:17:46 -0000 1.15.6.5
+++ openacs-4/packages/xotcl-core/www/show-object.tcl 14 Feb 2014 18:23:18 -0000 1.15.6.6
@@ -22,18 +22,18 @@
# scope must be an object, otherwise something is wrong.
#
if {$scope ne "" && ![xo::getObjectProperty $scope isobject]} {
- set isobject 0
+ set isobject 0
} else {
- set isobject [::xotcl::api isobject $scope $object]
+ set isobject [::xotcl::api isobject $scope $object]
}
if {$scope ne ""} {
- auth::require_login
+ auth::require_login
}
if {!$isobject} {
ad_return_complaint 1 "Unable to access object $object.
- Might this be a temporary object?"
+ Might this be a temporary object?"
ad_script_abort
}
@@ -67,17 +67,17 @@
{ 0 "Hide Variables" }
}
}
- }]
+}]
proc api_documentation {scope object kind method} {
upvar show_methods show_methods
set proc_index [::xotcl::api proc_index $scope $object $kind $method]
if {[nsv_exists api_proc_doc $proc_index]} {
set documentation [api_proc_documentation \
- -first_line_tag "
" \
- -label "$kind $method" \
- $proc_index]
+ -first_line_tag "" \
+ -label "$kind $method" \
+ $proc_index]
set result $documentation
} else {
if {$show_methods == 2} {
@@ -224,7 +224,7 @@
}
if { [info exists doc_elements(cvs-id)] } {
append output "- CVS Identification:\n
- \
-
[ns_quotehtml [lindex $doc_elements(cvs-id) 0]]
\n"
+ [ns_quotehtml [lindex $doc_elements(cvs-id) 0]]
\n"
}
append output "\n"
@@ -261,9 +261,9 @@
set output "- $out"
if { $show_source } {
append output \
- "
" \
- [api_tcl_to_html [::xotcl::api proc_index $scope $object $proc $m]] \
-
+ "" \
+ [api_tcl_to_html [::xotcl::api proc_index $scope $object $proc $m]] \
+
}
return $output
}
@@ -289,12 +289,12 @@
set out [api_documentation $scope $object instproc $m]
if {$out ne ""} {
append output " - $out"
- if { $show_source } {
- append output \
- "
" \
- [api_tcl_to_html [::xotcl::api proc_index $scope $object instproc $m]] \
-
- }
+ if { $show_source } {
+ append output \
+ "" \
+ [api_tcl_to_html [::xotcl::api proc_index $scope $object instproc $m]] \
+
+ }
}
}
}
@@ -312,7 +312,7 @@
}
if {$vars ne ""} {
append output "Variables
\n" \
- [::xotcl::api source_to_html $vars] \n
+ [::xotcl::api source_to_html $vars] \n
}
}
@@ -324,11 +324,18 @@
set instances [string trimright $instances ", "]
if {$instances ne ""} {
append output "Instances
\n" \
- \n \
- $instances \
-
\n
+ \n \
+ $instances \
+
\n
}
}
DO $s destroy
+
+#
+# Local variables:
+# mode: tcl
+# tcl-indent-level: 2
+# indent-tabs-mode: nil
+# End: