Index: openacs-4/packages/xowiki/tcl/link-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/link-procs.tcl,v diff -u -N -r1.90.2.6 -r1.90.2.7 --- openacs-4/packages/xowiki/tcl/link-procs.tcl 12 Dec 2014 08:33:23 -0000 1.90.2.6 +++ openacs-4/packages/xowiki/tcl/link-procs.tcl 12 Dec 2014 12:50:26 -0000 1.90.2.7 @@ -8,13 +8,27 @@ namespace eval ::xowiki { # - # generic links + # generic link methods # Class create BaseLink -parameter { cssclass cssid href label title target extra_query_parameter {anchor ""} {query ""} } + BaseLink instproc built_in_target {} { + # currently, we do not support named frames, which are mostly deprecated + return [expr {[my target] in {_blank _self _parent _top}}] + } + + BaseLink instproc anchor_atts {} { + set atts {} + if {[my exists title]} {lappend atts "title='[string map [list ' {'}] [my title]]'"} + if {[my exists target] && [my built_in_target]} { + lappend atts "target='[my target]'" + } + return [join $atts " "] + } + BaseLink instproc mk_css_class {{-additional ""} {-default ""}} { set cls [expr {[my exists cssclass] ? [my cssclass] : $default}] if {$additional ne ""} { @@ -35,12 +49,9 @@ # Class create ExternalLink -superclass BaseLink ExternalLink instproc render {} { - my instvar href label title target - set title_att "" - if {[info exists title]} {append title_att " title='[string map [list ' {'}] $title]'"} - if {[info exists target]} {append title_att " target='$target'"} + my instvar href label set css_atts [my mk_css_class_and_id -additional external] - return "$label " + return "$label " } # @@ -50,11 +61,6 @@ {type link} name lang stripped_name page parent_id package_id item_id {form ""} revision_id } - Link instproc atts {} { - set atts "" - if {[my exists title]} {append atts " title='[string map [list ' {'}] [my title]]'"} - if {[my exists target]} {append atts " target='[my target]'"} - } Link instproc init {} { my instvar page name set class [self class]::[my type] @@ -79,11 +85,75 @@ Link instproc resolve {} { return [my item_id] } + + ::xotcl::Class create ::xowiki::LinkTemplate -parameter {template} + ::xowiki::LinkTemplate instproc render {{-title "TITLE"} {-id "ID"} {-content ""} {-label "LABEL"}} { + return [subst [my template]] + } + + ::xowiki::LinkTemplate create ::xowiki::template::modal-sm -template { +$label + + } + + ::xowiki::LinkTemplate create ::xowiki::template::modal-lg -template { +$label + + } + + + Link instproc render_target {href label} { + ns_log notice render_target + set target [my target] + if {[info commands ::xowiki::template::$target] ne ""} { + set page [::xo::db::CrClass get_instance_from_db -item_id [my item_id] -revision_id 0] + set content [$page render_content] + set id [xowiki::Includelet html_id $page-$target] + return [::xowiki::template::$target render -title [$page title] -id $id -content $content -label $label] + } else { + ns_log notice "xowiki::link: unknown target $target" + return "$label" + } + } + Link instproc render_found {href label} { if {$href eq ""} { return "$label" + } elseif {[my exists target] && ![my built_in_target]} { + return [my render_target $href $label] } else { - return "$label" + ns_log notice render_default + return "$label" } } Link instproc render_not_found {href label} { @@ -173,17 +243,6 @@ return [::$package_id pretty_link \ -anchor [my anchor] -parent_id [my parent_id] -query [my query] [my name] ] } - ::xowiki::Link::folder instproc new_link {} { - my instvar package_id - return [$package_id make_link -with_entities 0 \ - $package_id \ - edit-new \ - [list object_type ::xo::db::CrFolder] \ - [list name [my name]] \ - [list parent_id [my parent_id]] \ - [list return_url [::xo::cc url]] \ - autoname] - } # # language links Index: openacs-4/packages/xowiki/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v diff -u -N -r1.279.2.18 -r1.279.2.19 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 10 Dec 2014 19:12:46 -0000 1.279.2.18 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 12 Dec 2014 12:50:26 -0000 1.279.2.19 @@ -801,10 +801,13 @@ return [my error_msg "Method '$method' is not defined for this object"] } else { #my msg "--invoke [my set object] id=$page_or_package method=$method ([my id] batch_mode $batch_mode)" + if {$batch_mode} {[my id] set __batch_mode 1} set err [catch { set r [my call $page_or_package $method ""]} errorMsg] if {$batch_mode} {[my id] unset __batch_mode} + if {$err} { + #ns_log notice "errorMsg: $errorMsg, $::errorInfo" return [my error_msg -status_code 404 \ -template_file $error_template \ [ns_quotehtml $errorMsg]] Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -N -r1.472.2.27 -r1.472.2.28 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 12 Dec 2014 08:33:23 -0000 1.472.2.27 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 12 Dec 2014 12:50:26 -0000 1.472.2.28 @@ -2528,12 +2528,13 @@ switch -glob $mime_type { image/* { - set l [Link new -volatile \ + set l [Link new \ -page [self] -query $query \ -type image -name $name -lang "" \ -stripped_name $stripped_name -label $label \ -parent_id $parent_id -item_id $item_id -package_id $package_id] set preview "
[$l render]
" + $l destroy } text/plain { set text [::xowiki::read_file [my full_file_name]]