summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-09-09 14:44:58 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-09-09 14:44:58 -0400
commit6f46cc3b3134e947bb2c5f1ae7dfdd85c9d9dc0c (patch)
tree1153c6722899aa5bf55b774903419184d56c4403
parent848d0d0a3bdbae74133f3a14c13923c696f28ffb (diff)
progress: New plugin to generate progress bars (willu)
-rw-r--r--IkiWiki/Plugin/progress.pm74
-rw-r--r--debian/changelog1
-rw-r--r--debian/copyright4
-rw-r--r--doc/plugins/progress.mdwn19
-rw-r--r--doc/style.css16
-rw-r--r--doc/todo/progressbar_plugin.mdwn99
-rw-r--r--po/ikiwiki.pot16
7 files changed, 121 insertions, 108 deletions
diff --git a/IkiWiki/Plugin/progress.pm b/IkiWiki/Plugin/progress.pm
new file mode 100644
index 000000000..e459637b8
--- /dev/null
+++ b/IkiWiki/Plugin/progress.pm
@@ -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
diff --git a/debian/changelog b/debian/changelog
index 6ef68a7f6..fb1da867c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/debian/copyright b/debian/copyright
index a24970e29..3311b6626 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -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
index 000000000..987d1ec06
--- /dev/null
+++ b/doc/plugins/progress.mdwn
@@ -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"]]
diff --git a/doc/style.css b/doc/style.css
index 44a6e0fe1..595a38dfa 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -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;
diff --git a/doc/todo/progressbar_plugin.mdwn b/doc/todo/progressbar_plugin.mdwn
index 3401bca85..263e7a69d 100644
--- a/doc/todo/progressbar_plugin.mdwn
+++ b/doc/todo/progressbar_plugin.mdwn
@@ -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]]
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index fcf1112d9..a6599e046 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -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 ""