Index: openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/Attic/xowiki-portlet-procs.tcl,v diff -u -r1.33 -r1.34 --- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 25 Mar 2007 16:27:04 -0000 1.33 +++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 27 Mar 2007 11:44:06 -0000 1.34 @@ -8,12 +8,62 @@ namespace eval ::xowiki::portlet { Class create ::xowiki::Portlet \ -superclass ::xo::Context \ - -parameter {{name ""} {title ""} {__decoration "portlet"} {id}} + -parameter { + {name ""} + {title ""} + {__decoration "portlet"} + {parameter_declaration {}} + {id} + } + ::xowiki::Portlet proc describe_includelets {portlet_classes} { + my log "--plc=$portlet_classes " + foreach cl $portlet_classes { + set result "" + append result "{{[namespace tail $cl]" + foreach p [$cl info parameter] { + if {[llength $p] != 2} continue + foreach {name value} $p break + if {$name eq "parameter_declaration"} { + foreach pp $value { + #append result "" + switch [llength $pp] { + 1 {append result " $pp"} + 2 { + set v [lindex $pp 1] + if {$v eq ""} {set v {""}} + append result " [lindex $pp 0] $v" + } + } + #append result "\n" + } + } + } + append result "}}\n" + my set html([namespace tail $cl]) $result + my describe_includelets [$cl info subclass] + } + } + ::xowiki::Portlet proc available_includelets {} { + if {[my array exists html]} {my array unset html} + my describe_includelets [::xowiki::Portlet info subclass] + set result "
#general-comments.Comments#
$gc_link
" } - - + Class create digg \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration none}} + -parameter { + {__decoration none} + {parameter_declaration { + {-description ""} + {-url} + }} + } digg instproc render {} { - my initialize -parameter { - {-description ""} - {-url} - } my get_parameters my instvar __including_page set digg_link [export_vars -base "http://digg.com/submit" { @@ -641,14 +712,16 @@ Class create delicious \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration none}} + -parameter { + {__decoration none} + {parameter_declaration { + {-description ""} + {-tags ""} + {-url} + }} + } delicious instproc render {} { - my initialize -parameter { - {-description ""} - {-tags ""} - {-url} - } my get_parameters my instvar __including_page @@ -671,19 +744,21 @@ Class create my-yahoo-publisher \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration none}} + -parameter { + {__decoration none} + {parameter_declaration { + {-publisher ""} + {-rssurl} + }} + } my-yahoo-publisher instproc render {} { - my initialize -parameter { - {-publisher ""} - {-rssurl} - } my get_parameters my instvar __including_page set publisher [ad_urlencode $publisher] - set feedname [ad_urlencode [[$package_id folder_id] title]] - set rssurl [ad_urlencode $rssurl] + set feedname [ad_urlencode [[$package_id folder_id] title]] + set rssurl [ad_urlencode $rssurl] set my_yahoo_link "http://us.rd.yahoo.com/my/atm/$publisher/$feedname/*http://add.my.yahoo.com/rss?url=$rssurl" return "" @@ -694,8 +769,6 @@ -parameter {{__decoration none}} my-references instproc render {} { - my initialize -parameter { - } my get_parameters my instvar __including_page @@ -732,24 +805,26 @@ # Class create presence \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration rightbox}} + -parameter { + {__decoration rightbox} + {parameter_declaration { + {-interval "10 minutes"} + {-max_users:integer 40} + {-show_anonymous "summary"} + {-page} + }} + } # TODO make display style -decoration presence instproc render {} { - my initialize -parameter { - {-interval "10 minutes"} - {-max_users:integer 40} - {-show_anonymous "summary"} - {-page} - } my get_parameters set summary 0 if {[::xo::cc user_id] == 0} { switch -- $show_anonymous { nothing {return ""} - all {set summary 0} + all {set summary 0} default {set summary 1} } } @@ -812,7 +887,18 @@ # Class create toc \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration plain}} + -parameter { + {__decoration plain} + {parameter_declaration { + {-style ""} + {-open_page ""} + {-book_mode false} + {-ajax true} + {-expand_all false} + {-remove_levels 0} + {-category_id} + }} + } #"select page_id, page_order, name, title, \ # (select count(*)-1 from xowiki_page_live_revision where page_order <@ p.page_order) as count \ @@ -1052,16 +1138,8 @@ toc instproc render {} { - my initialize -parameter { - {-style ""} - {-open_page ""} - {-book_mode false} - {-ajax true} - {-expand_all false} - {-remove_levels 0} - {-category_id} - } my get_parameters + switch -- $style { "menu" {set s "menu/"} "folders" {set s "folders/"} @@ -1097,10 +1175,14 @@ # Class create book \ -superclass ::xowiki::Portlet \ - -parameter {{__decoration plain}} + -parameter { + {__decoration plain} + {parameter_declaration { + {-category_id} + }} + } book instproc render {} { - my initialize -parameter { -category_id } my get_parameters my instvar __including_page @@ -1227,13 +1309,22 @@ namespace eval ::xowiki::portlet { Class create collab-graph \ -superclass ::xowiki::portlet::graph \ - -parameter {} + -parameter { + {parameter_declaration { + {-max_edges 70} + {-cutoff 0.1} + {-show_anonymous "message"} + -user_id + }} + } collab-graph instproc render {} { - my initialize -parameter { {-max_edges 70} {-cutoff 0.1} -user_id} my get_parameters if {![info exists user_id]} {set user_id [::xo::cc user_id]} + if {$show_anonymous ne "all" && $user_id ne 0} { + return "You must login to see the [namespace tail [self class]]" + } set folder_id [$package_id folder_id] db_foreach get_collaborators { @@ -1300,16 +1391,23 @@ Class create activity-graph \ -superclass ::xowiki::portlet::graph \ - -parameter {} + -parameter { + {parameter_declaration { + {-max_edges 70} + {-cutoff 0.1} + {-max_activities:integer 100} + {-show_anonymous "message"} + }} + } activity-graph instproc render {} { - my initialize -parameter { - {-max_edges 70} - {-cutoff 0.1} - {-max_activities:integer 100} - } my get_parameters + if {![info exists user_id]} {set user_id [::xo::cc user_id]} + if {$show_anonymous ne "all" && $user_id ne 0} { + return "You must loging to see the [namespace tail [self class]]" + } + set folder_id [$package_id folder_id] # there must be a better way to handle temporaray tables safely.... @@ -1384,10 +1482,16 @@ Class create timeline \ -superclass ::xowiki::Portlet \ - -parameter {} + -parameter { + {parameter_declaration { + -user_id + {-data timeline-data} + {-interval1 DAY} + {-interval2 MONTH} + }} + } timeline instproc render {} { - my initialize -parameter { -user_id {-data timeline-data} {-interval1 DAY} {-interval2 MONTH}} my get_parameters ::xowiki::Page requireJS "/resources/ajaxhelper/yui/yahoo/yahoo.js" @@ -1451,10 +1555,16 @@ Class create user-timeline \ -superclass timeline \ - -parameter {} + -parameter { + {parameter_declaration { + -user_id + {-data timeline-data} + {-interval1 DAY} + {-interval2 MONTH} + }} + } user-timeline instproc render {} { - my initialize -parameter { -user_id {-data timeline-data} {-interval1 DAY} {-interval2 MONTH}} my get_parameters if {![info exists user_id]} {set user_id [::xo::cc user_id]]} ::xo::cc set_parameter user_id $user_id