]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/plugins/contrib/getfield/discussion.mdwn
a first bugfix for array support
[ikiwiki.git] / doc / plugins / contrib / getfield / discussion.mdwn
index 900ca65b2361a047f7270dcd40a8efe7c6e9a447..13ea8b1b3aa2fdefeb2f678ce51269d36d2857d3 100644 (file)
@@ -1,3 +1,50 @@
+## Multiple values arrays
+
+This breaks if there are multiple values for a single key. It works fine in the report plugin, but inline display shows the ARRAY reference, e.g. 
+
+    IPv6:
+    - fd64:2c08:9fa7:4::1
+    - 2001:470:1d:4a6::1
+
+and:
+
+    {{$IPv6}}
+
+yields:
+
+    ARRAY(0x266db10)
+
+Seems to me this could be checked and `join(" ")`'d. :) -- [[anarcat]]
+
+> I wrote a stupid fix for this, which works for getfield, but isn't as good for report. It simply does that `join()`. Here's the patch:
+> 
+> [[!format diff """
+--- a/IkiWiki/Plugin/field.pm
++++ b/IkiWiki/Plugin/field.pm
+@@ -322,6 +322,9 @@ sub field_get_value ($$;@) {
+     {
+        $basevalue = calculated_values($lc_field_name, $page);
+     }
++    if (ref($basevalue) eq "ARRAY") {
++        $basevalue = join(" ", @{$basevalue}); # hack
++    }
+     if (defined $basevalue)
+     {
+        $Cache{$page}{$basename} = $basevalue;
+@@ -360,6 +363,9 @@ sub field_get_value ($$;@) {
+     {
+        $value = $basevalue;
+     }
++    if (ref($value) eq "ARRAY") {
++        $value = join(" ", @{$value}); # hack
++    }
+     if (defined $value)
+     {
+        $Cache{$page}{$lc_field_name} = $value;
+"""]]
+>
+> Seems to me this should be the default, at the very least in getfield. But at least, with the above patch we don't see expanded Perl ref's. ;) --[[anarcat]]
+
 ## Templating, and other uses
 
 Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If it can be made to work anywhere, or from a specific place in the wiki - configurable, possibly - you'll have something very similar to mediawiki's templates. I can already think of a few uses for this combined with [[template]] ;) . --[[SR|users/simonraven]]
@@ -18,9 +65,15 @@ Like you mentioned in [[ftemplate]] IIRC, it'll only work on the same page. If i
 
 >>>>> What about using {{pagename#fieldname}}? The meaning of the hash in URLs sort of fits with what is needed here (reference to a 'named' thing within the page) and it won't conflict with actual hash usages (unless we expect different named parts of pages to define different values for the same field ...)
 >>>>> -- [[Oblomov]]
+>>>>>> That's a good one too. --[[simonraven]]
+>>>>>>> Done!  I used {{$*pagename*#*fieldname*}} for the format. -- [[users/KathrynAndersen]]
+
 
 > I'm also working on a "report" plugin, which will basically apply a template like [[ftemplate]] does, but to a list of pages given from a pagespec, rather than the current page.
 
 > -- [[users/KathrynAndersen]]
 
 >> Ooh, sounds nice :) . --[[SR|users/simonraven]]
+
+>>> I've now released the [[plugins/contrib/report]] plugin.  I've been using it on my site; the holdup on releasing was because I hadn't yet written the docs for it. I hope you find it useful.
+>>> -- [[users/KathrynAndersen]]