]> sipb.mit.edu Git - ikiwiki.git/commitdiff
Merge branch 'master' into fancypodcast
authorAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>
Sun, 24 Feb 2013 14:33:28 +0000 (09:33 -0500)
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>
Sun, 24 Feb 2013 14:33:28 +0000 (09:33 -0500)
doc/bugs/map_generates_malformed_HTML.mdwn [new file with mode: 0644]
doc/bugs/removal_of_transient_pages.mdwn
doc/bugs/template_creation_error.mdwn [new file with mode: 0644]
doc/plugins/contrib/dynamiccookies.mdwn [new file with mode: 0644]
doc/plugins/contrib/proxies.mdwn [new file with mode: 0644]
doc/plugins/contrib/wc.mdwn [new file with mode: 0644]
doc/plugins/write.mdwn
doc/todo/fancypodcast.mdwn

diff --git a/doc/bugs/map_generates_malformed_HTML.mdwn b/doc/bugs/map_generates_malformed_HTML.mdwn
new file mode 100644 (file)
index 0000000..d47d066
--- /dev/null
@@ -0,0 +1,33 @@
+[[!template id=gitbranch branch=smcv/ready/map author="[[Simon McVittie|smcv]]"]]
+
+`\[[!map]]` can generate bad HTML with unbalanced open/close tags
+(in XML terms: "not well-formed") in certain situations. This
+appears to be a regression caused by fixing
+[[maps with nested directories sometimes make ugly lists]], which
+suppressed some redundant `</ul><ul>` pairs, but appears not to
+have the ideal logic for this, leading to malformed HTML.
+
+In particular, on a site with these pages:
+
+* alpha
+    * 1
+        * i
+        * ii
+        * iii
+        * iv
+    * 2
+        * a
+        * b
+    * 3
+* beta
+
+the maps "alpha/1 or beta", "alpha/1/i* or alpha/2/a or beta" and
+"alpha/1/i* or alpha/2/a" have malformed HTML.
+
+My `ready/map` branch adds a regression test and makes it pass.
+
+The fix is not particularly elegant - it generates the previous
+HTML with redundant `</ul><ul>` pairs, marks the redundant
+pairs, and edits them out afterwards - but it works. If anyone can come
+up with a cleaner algorithm that avoids generating the redundant tags
+in the first place, that would be even better. --[[smcv]]
index 4843b59007b82d50a062a46d0fb033c976033268..6d0caf42eeca6592fe4994f6e103e4d3bcbcd5c9 100644 (file)
@@ -65,7 +65,12 @@ inconsistent between the one-and two-argument forms. Thoughts?
 >> Try this, then? I had to make some changes to `attachment`
 >> to make the split versions available. I suggest reviewing
 >> patch-by-patch.
->>
+
+>>> Branch updated; I'd missed a use of prune in ikiwiki.in itself.
+>>> Unfortunately, this means it does still need to support the
+>>> "undefined top directory" case: there isn't an obvious top
+>>> directory for wrappers. --[[smcv]]
+
 >> I also tried to fix a related bug which I found while testing it:
 >> the special case for renaming held attachments didn't seem to work.
 >> (`smcv/wip/rename-held`.) Unfortunately, it seems that with that
diff --git a/doc/bugs/template_creation_error.mdwn b/doc/bugs/template_creation_error.mdwn
new file mode 100644 (file)
index 0000000..abf50cd
--- /dev/null
@@ -0,0 +1,36 @@
+Hi,
+I am trying to build a template. The compilation of this template results in a weird exception. I have isolated the cause of the exception to the following point:
+
+If i have this in the template code:
+
+\[[!inline<br/>
+pages="\<TMPL_VAR SEL_PAGES\>"<br/>
+template=extract-entry<br/>
+\]]<br/>
+
+There is no problem at all. I can use the template with the desired result. But if I try to use this (just adding the "show" parameter):
+
+\[[!inline <br/>
+pages="\<TMPL_VAR SEL_PAGES>"<br/>
+template=extract-entry<br/>
+show=\<TMPL_VAR CNTPG><br/>
+\]]<br/>
+
+I get this exception on the Git bash console:
+
+<pre>
+$ git push
+Counting objects: 7, done.
+Delta compression using up to 8 threads.
+Compressing objects: 100% (4/4), done.
+Writing objects: 100% (4/4), 410 bytes, done.
+Total 4 (delta 3), reused 0 (delta 0)
+remote: From /home/b-odelama-com/source
+remote:    eb1421e..5e1bac5  master     -> origin/master
+remote: Argument "\x{3c}\x{54}..." isn't numeric in numeric lt (<) at /usr/share/perl5/IkiWiki/Plugin/inline.pm line 231.
+remote: Argument "\x{3c}\x{54}..." isn't numeric in numeric lt (<) at /usr/share/perl5/IkiWiki/Plugin/inline.pm line 231.
+To ssh://b-odelama-com@odelama-com.branchable.com/
+   eb1421e..5e1bac5  master -> master
+</pre>
+
+Please, let me know what to do to avoid this kind of error.
diff --git a/doc/plugins/contrib/dynamiccookies.mdwn b/doc/plugins/contrib/dynamiccookies.mdwn
new file mode 100644 (file)
index 0000000..c43b18f
--- /dev/null
@@ -0,0 +1,12 @@
+[[!template id=plugin name=dynamiccookies author="[[schmonz]]"]]
+[[!template id=gitbranch branch=schmonz/dynamiccookies author="[[schmonz]]"]]
+[[!tag type/web]]
+
+This plugin populates ikiwiki's cookiejar by calling an external
+program. The program is expected to print the serialized cookies
+on `stdout` in a form which can be `eval`'d (e.g., `Data::Dumper`).
+
+The plugin author's use case for this seemingly hacky interface:
+aggregating authenticated feeds at work, where for various reasons
+the needed cookies must be acquired using a separate `perl` from
+the one used by ikiwiki.
diff --git a/doc/plugins/contrib/proxies.mdwn b/doc/plugins/contrib/proxies.mdwn
new file mode 100644 (file)
index 0000000..dc53adf
--- /dev/null
@@ -0,0 +1,13 @@
+[[!template id=plugin name=proxies author="[[schmonz]]"]]
+[[!template id=gitbranch branch=schmonz/proxies author="[[schmonz]]"]]
+[[!tag type/format]]
+
+This plugin enables ikiwiki to open outbound connections (such as
+found in [[plugins/aggregate]], [[plugins/openid]], and [[plugins/pinger]])
+via a proxy. The proxy can be configurably avoided for connections
+to certain domains.
+
+### To do
+
+* Move duplicated user-agent setup out of other plugins into this one.
+* While I'm at it, fix [[bugs/http_proxy_for_openid]].
diff --git a/doc/plugins/contrib/wc.mdwn b/doc/plugins/contrib/wc.mdwn
new file mode 100644 (file)
index 0000000..fb5a732
--- /dev/null
@@ -0,0 +1,22 @@
+[[!template id=plugin name=wc author="[[schmonz]]"]]
+[[!template id=gitbranch branch=schmonz/wc author="[[schmonz]]"]]
+[[!tag type/meta]]
+[[!tag patch]]
+
+This plugin counts words in a page. For a single page, write a
+`\[[!wc]]` directive and the word count will be interpolated there.
+For a site, add `<TMPL_VAR WORDCOUNT>` to your [[templates]].
+
+If [[!cpan HTML::Strip]] is installed, the wordcount will be slightly
+more accurate.
+
+Possible enhancements:
+
+* Optimize: count words iff the result will be displayed. `sanitize()`
+  seems like the right place to count. Since it's called well after
+  `preprocess()`, I can tell whether a directive needs the result,
+  but since it appears to be called before `pagetemplate()`, I can't
+  tell whether a template wants to know and possibly skip the
+  computation. (In other words, if I add `$needed_for_template`
+  like `$needed_for_directive`, it gets set too late for `sanitize()`
+  to see.)
index 2b820265582aaabf140e2b1457ce124b0e800122..d6e6d8d1e61aec99163b5afdcdef6bcee56e811e 100644 (file)
@@ -633,7 +633,7 @@ describes the plugin as a whole. For example:
   strictly required.
 * `section` can optionally specify which section in the config file
   the plugin fits in. The convention is to name the sections the
-  same as the tags used for [[plugins|plugin]] on this wiki.
+  same as the tags used for [[plugins]] on this wiki.
 
 ### genwrapper
 
@@ -684,7 +684,7 @@ wiki updates.
 
 The `%wikistate` hash can be used by a plugin to store persistant state
 that is not bound to any one page. To set a value, use
-`$wikistate{$id}{$key}=$value, where `$value` is anything Storable can
+`$wikistate{$id}{$key}=$value`, where `$value` is anything Storable can
 serialize, `$key` is any string you like, and `$id` must be the same as the
 "id" parameter passed to `hook()` when registering the plugin, so that the
 state can be dropped if the plugin is no longer used.
index d1697cbaa370c7f39a094ae8af4bdd601a548bcb..eb2dc6b347f3f44a1bf83eb0ea931c6cd55ed368 100644 (file)
@@ -38,9 +38,29 @@ also have lots more metadata.
   (what [[schmonz]] will be migrating from).
 * Enrich [feed metadata](http://cyber.law.harvard.edu/rss/rss.html)
   by catching up `rsspage.tmpl` to `atompage.tmpl`.
+* Verify that [[plugins/more]] plays well with fancy podcasts.
+* Verify that the feeds validate.
 * Subscribe to a fancy feed in some common podcatchers and verify
   display details against a reference podcast.
-* Verify that the feeds validate.
+
+### Status
+
+[[!table data="""
+Feature            |iTunes RSS|iTunes Atom|Downcast RSS|Downcast Atom
+Feed image         |          |           |            |
+Feed title         |(./)      |(./)       |(./)        |(./)
+Feed publisher     |          |           |            |
+Feed "category"    |          |           |            |
+Feed date          |(./)      |(./)       |(./)        |(./)
+Feed description   |          |           |            |
+Episode image      |          |           |            |
+Episode title      |(./)      |(./)       |(./)        |(./)
+Episode date       |(./)      |(./)       |(./)        |(./)
+Episode duration   |          |           |            |
+Episode author     |(./)      |(./)       |(./)        |(./)
+Episode description|(./)      |(./)       |(./)        |
+Episode enclosure  |(./)      |(./)       |(./)        |(./)
+"""]]
 
 ### Must-have (for [[schmonz]], anyway)
 
@@ -73,34 +93,21 @@ also have lots more metadata.
     * `itunes:keywords`
 * Notable tags for entries:
     * `itunes:duration`
-        * use `Audio::TagLib` if present and applicable
-        * fall back to `ffprobe`
+        * [[!cpan Audio::TagLib]] might be fastest, if present and applicable
+        * [ffprobe](http://ffmpeg.org/ffprobe.html) is reasonably fast
+        * [mediainfo](http://mediainfo.sourceforge.net/) is way slower
+        * Cache computed durations as pagestate
 
 ### Other ideas
 
-* Let the enclosure's MIME type be specified, in case someone ever
-  needs to disagree with `File::MimeInfo`.
-* Extend [[plugins/inline]] to configurably generate additional
-  subscription links (such as iTunes) alongside the RSS/Atom ones.
-* Verify that [[plugins/more]] plays well with fancy podcasts.
-* Allow enclosures that are outside the wiki.
+* Optionally specify the enclosure's:
+    * MIME type, in case `File::MimeInfo` guesses wrong.
+    * Duration, in case `ffprobe` guesses wrong.
+* Optionally specify enclosures outside the wiki:
+    * Some people don't want to store big unchanging files in the VCS.
+    * Other people like [podcasting found media](http://huffduffer.com/about).
+    * We'd have to download the file just to compute some metadata
+      about it, and then somehow not frequently re-download it.
+* Configurably generate additional subscription links (such as
+  iTunes) alongside the RSS/Atom ones in [[plugins/inline]].
 * Support Apple's "enhanced podcasts" (if they're still relevant).
-
-### Status
-
-[[!table data="""
-Feature            |iTunes RSS|iTunes Atom|Downcast RSS|Downcast Atom
-Feed image         |          |           |            |
-Feed title         |(./)      |(./)       |(./)        |(./)
-Feed publisher     |          |           |            |
-Feed "category"    |          |           |            |
-Feed date          |(./)      |(./)       |(./)        |(./)
-Feed description   |          |           |            |
-Episode image      |          |           |            |
-Episode title      |(./)      |(./)       |(./)        |(./)
-Episode date       |(./)      |(./)       |(./)        |(./)
-Episode duration   |          |           |            |
-Episode author     |(./)      |(./)       |(./)        |(./)
-Episode description|(./)      |(./)       |(./)        |
-Episode enclosure  |(./)      |(./)       |(./)        |(./)
-"""]]