]> sipb.mit.edu Git - ikiwiki.git/commitdiff
progress: New plugin to generate progress bars (willu)
authorJoey Hess <joey@kodama.kitenet.net>
Tue, 9 Sep 2008 18:44:58 +0000 (14:44 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Tue, 9 Sep 2008 18:44:58 +0000 (14:44 -0400)
IkiWiki/Plugin/progress.pm [new file with mode: 0644]
debian/changelog
debian/copyright
doc/plugins/progress.mdwn [new file with mode: 0644]
doc/style.css
doc/todo/progressbar_plugin.mdwn
po/ikiwiki.pot

diff --git a/IkiWiki/Plugin/progress.pm b/IkiWiki/Plugin/progress.pm
new file mode 100644 (file)
index 0000000..e459637
--- /dev/null
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::progress;
+
+use warnings;
+use strict;
+use IkiWiki 2.00;
+
+my $percentage_pattern = qr/[0-9]+\%/; # pattern to validate percentages
+
+sub import { #{{{
+       hook(type => "getsetup", id => "progress", call => \&getsetup);
+       hook(type => "preprocess", id => "progress", call => \&preprocess);
+       hook(type => "format",     id => "progress", call => \&format);
+} # }}}
+
+sub getsetup () { #{{{
+       return 
+               plugin => {
+                       safe => 1,
+                       rebuild => undef,
+               },
+} #}}}
+
+sub preprocess (@) { #{{{
+       my %params=@_;
+       
+       my $fill;
+       
+       if (defined $params{percent}) {
+               $fill = $params{percent};
+               ($fill) = $fill =~ m/($percentage_pattern)/; # fill is untainted now
+       }
+       elsif (defined $params{totalpages} and defined $params{donepages}) {
+               add_depends($params{page}, $params{totalpages});
+               add_depends($params{page}, $params{donepages});
+
+               my @pages=keys %pagesources;
+               my $totalcount=0;
+               my $donecount=0;
+               foreach my $page (@pages) {
+                       $totalcount++ if pagespec_match($page, $params{totalpages}, location => $params{page});
+                       $donecount++ if pagespec_match($page, $params{donepages}, location => $params{page});
+               }
+               
+               if ($totalcount == 0) {
+                       $fill = "100%";
+               }
+               else {
+                       my $number = $donecount/$totalcount*100;
+                       $fill = sprintf("%u%%", $number);
+               }
+       }
+       else {
+               error("need either `percent` or `totalpages` and `donepages` parameters");
+       }
+
+       return <<EODIV
+<div class="progress">
+  <div class="progress-done" style="width: $fill">$fill</div>
+</div>
+EODIV
+} # }}}
+
+sub format(@) { #{{{
+       my %params = @_;
+
+       # If HTMLScrubber has removed the style attribute, then bring it back
+
+       $params{content} =~ s!<div class="progress-done">($percentage_pattern)</div>!<div class="progress-done" style="width: $1">$1</div>!g;
+
+       return $params{content};    
+} #}}}
+
+1
index 6ef68a7f609a725f2af409072a5d719bf4e092d5..fb1da867c7dd194dea10788cbf2fa345c7d1683f 100644 (file)
@@ -3,6 +3,7 @@ ikiwiki (2.64) UNRELEASED; urgency=low
   * Avoid uninitialised value when --dumpsetup is used and no srcdir/destdir
     specified.
   * ddate: Stop clobbering timeformat when not enabled.
+  * progress: New plugin to generate progress bars (willu)
 
  -- Joey Hess <joeyh@debian.org>  Mon, 08 Sep 2008 19:21:20 -0400
 
index a24970e2953396911ad38b221b46e21bf6784646..3311b66269a36b03f401c7c71de44c21f51c0354 100644 (file)
@@ -24,8 +24,8 @@ Files: mercurial.pm
 Copyright: © 2006 Emanuele Aina
 License: GPL-2+
 
-Files: monotone.pm, listdirectives.pm
-Copyright: © 2007 William Uther
+Files: monotone.pm, listdirectives.pm, progress.pm
+Copyright: © 2007, 2008 William Uther
 License: GPL-2+
 
 Files: tla.pm
diff --git a/doc/plugins/progress.mdwn b/doc/plugins/progress.mdwn
new file mode 100644 (file)
index 0000000..987d1ec
--- /dev/null
@@ -0,0 +1,19 @@
+[[!template id=plugin name=progress author="[[Will]]"]]
+[[!tag type/meta]]
+
+Provides a \\[[!progress ]] [[ikiwiki/directive]] that displays a
+progress bar.
+
+There are two possible parameter sets.  The first is a single parameter
+`percent` which holds a percentage figure for how complete the progress bar is.
+
+The second possible set of parameters is a pair of [PageSpecs|[ikiwiki/PageSpec]],
+`totalpages` and `donepages`.  The progress plugin counts the number of
+pages in each pagespec and shows the percentage of the total pages that are
+done.
+
+This plugin is included in ikiwiki, but is not enabled by default.
+
+If it is turned on it can show what percentage of pages have discussion pages:
+
+       \[[!progress totalpages="* and !*/Discussion" donepages="*/Discussion"]]
index 44a6e0fe11fe0c8fe7f8c306f07d86437fe61f04..595a38dfa5bf43c5e411f538be8fd747d1eb9a23 100644 (file)
@@ -249,6 +249,22 @@ div.poll {
        border: 1px solid #aaa;
 }
 
+div.progress {
+       margin-top: 1ex;
+       margin-bottom: 1ex;
+       border: 1px solid #888;
+       width: 400px;
+       background: #eee;
+       color: black !important;
+       padding: 1px;
+}
+div.progress-done {
+       background: #ea6 !important;
+       color: black !important;
+       text-align: center;
+       padding: 1px;
+}
+
 input#openid_url {
        background: url(wikiicons/openidlogin-bg.gif) no-repeat;
        background-color: #fff;
index 3401bca85e945218f19830e2aded15b0762aceca..263e7a69dcd3c580f04fcaa75c2cf5dfb32cd312 100644 (file)
@@ -127,101 +127,4 @@ Any comments? --[[Paweł|ptecza]]
 >>>>> I like it, but I think that Joey should take a look at that patch too :)
 >>>>> --[[Paweł|ptecza]]
 
-    #!/usr/bin/perl
-    package IkiWiki::Plugin::progress;
-    
-    use warnings;
-    use strict;
-    use IkiWiki 2.00;
-    
-    my $percentage_pattern = qr/[0-9]+\%/; # pattern to validate percentages
-    
-    sub import { #{{{
-       hook(type => "getsetup", id => "progress", call => \&getsetup);
-       hook(type => "preprocess", id => "progress", call => \&preprocess);
-       hook(type => "format",     id => "progress", call => \&format);
-    } # }}}
-    
-    sub getsetup () { #{{{
-       return 
-               plugin => {
-                       safe => 1,
-                       rebuild => undef,
-               },
-    } #}}}
-    
-    sub preprocess (@) { #{{{
-       my %params=@_;
-       
-       my $fill;
-       
-       if (defined $params{percent}) {
-               $fill = $params{percent};
-               ($fill) = $fill =~ m/($percentage_pattern)/; # fill is untainted now
-       }
-       elsif (defined $params{totalpages} and defined $params{donepages}) {
-               add_depends($params{page}, $params{totalpages});
-               add_depends($params{page}, $params{donepages});
-    
-               my @pages=keys %pagesources;
-               my $totalcount=0;
-               my $donecount=0;
-               foreach my $page (@pages) {
-                       $totalcount++ if pagespec_match($page, $params{totalpages}, location => $params{page});
-                       $donecount++ if pagespec_match($page, $params{donepages}, location => $params{page});
-               }
-               
-               if ($totalcount == 0) {
-                       $fill = "100%";
-               } else {
-                       my $number = $donecount/$totalcount*100;
-                       $fill = sprintf("%u%%", $number);
-               }
-       }
-       else {
-               error("Missing parameters to progress plugin.  Need either `percent` or `totalpages` and `donepages` parameters.");
-       }
-    
-       return <<EODIV
-    <div class="progress">
-      <div class="progress-done" style="width: $fill">$fill</div>
-    </div>
-    EODIV
-    
-    } # }}}
-    
-    sub format(@) { #{{{
-       my %params = @_;
-    
-       # If HTMLScrubber has removed the style attribute, then bring it back
-    
-       $params{content} =~ s!<div class="progress-done">($percentage_pattern)</div>!<div class="progress-done" style="width: $1">$1</div>!g;
-    
-       return $params{content};    
-    } #}}}
-    
-    1
-
-Here is a potential documentation page:
-
------
-
-[[!template id=plugin name=progress author="[[Will]]"]]
-[[!tag type/meta]]
-
-Provides a \\[[!progress ]] [[ikiwiki/Directive]] that is
-replaced with a progress bar.
-
-There are two possible parameter sets.  The first is a single parameter
-`percent` which holds a percentage figure for how complete the progress bar is.
-
-The second possible set of parameters is a pair of [[ikiwiki/PageSpec]]s,
-`totalpages` and `donepages`.  The progress plugin counts the number of
-pages in each pagespec and shows the percentage of the total pages that are
-done.
-
-This plugin is included in ikiwiki, but is not enabled by default.
-
-If it is turned on it can show what percentage of pages have discussion pages:
-
-       \[[!progress totalpages="* and !*/Discussion" donepages="*/Discussion"]]
+>>>>>> Reviewed, looks excellent, added. [[done]] --[[Joey]]
index fcf1112d9c102c2bd0dcda41b4d7ae8f0d3798e2..a6599e046c73b6a22ebcf43c268bf1cdd539f928 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-05 13:41-0400\n"
+"POT-Creation-Date: 2008-09-09 14:40-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -129,7 +129,7 @@ msgstr ""
 msgid "deleting bucket.."
 msgstr ""
 
-#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:192
+#: ../IkiWiki/Plugin/amazon_s3.pm:38 ../ikiwiki.in:193
 msgid "done"
 msgstr ""
 
@@ -187,18 +187,18 @@ msgstr ""
 msgid "There are no broken links!"
 msgstr ""
 
-#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:31
-#: ../IkiWiki/Plugin/cutpaste.pm:46 ../IkiWiki/Plugin/cutpaste.pm:62
+#: ../IkiWiki/Plugin/conditional.pm:27 ../IkiWiki/Plugin/cutpaste.pm:30
+#: ../IkiWiki/Plugin/cutpaste.pm:45 ../IkiWiki/Plugin/cutpaste.pm:61
 #: ../IkiWiki/Plugin/testpagespec.pm:26
 #, perl-format
 msgid "%s parameter is required"
 msgstr ""
 
-#: ../IkiWiki/Plugin/cutpaste.pm:67
+#: ../IkiWiki/Plugin/cutpaste.pm:66
 msgid "no text was copied in this page"
 msgstr ""
 
-#: ../IkiWiki/Plugin/cutpaste.pm:70
+#: ../IkiWiki/Plugin/cutpaste.pm:69
 #, perl-format
 msgid "no text was copied in this page with id %s"
 msgstr ""
@@ -862,11 +862,11 @@ msgstr ""
 msgid "generating wrappers.."
 msgstr ""
 
-#: ../ikiwiki.in:181
+#: ../ikiwiki.in:182
 msgid "rebuilding wiki.."
 msgstr ""
 
-#: ../ikiwiki.in:184
+#: ../ikiwiki.in:185
 msgid "refreshing wiki.."
 msgstr ""