diff options
author | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-24 09:33:28 -0500 |
---|---|---|
committer | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-24 09:33:28 -0500 |
commit | 9dd8007b44541c752174c5d2a07e83613c7439bd (patch) | |
tree | 984407f76460885b203195da8cb2f43997b7634c | |
parent | a1ec9f8e2772c2cb74f15d835f89d40d1aee2baa (diff) | |
parent | c1b0062f9969f69066ecba6ecb13cc5ee7a3ba08 (diff) | |
download | ikiwiki-9dd8007b44541c752174c5d2a07e83613c7439bd.tar ikiwiki-9dd8007b44541c752174c5d2a07e83613c7439bd.tar.gz |
Merge branch 'master' into fancypodcast
-rw-r--r-- | doc/bugs/map_generates_malformed_HTML.mdwn | 33 | ||||
-rw-r--r-- | doc/bugs/removal_of_transient_pages.mdwn | 7 | ||||
-rw-r--r-- | doc/bugs/template_creation_error.mdwn | 36 | ||||
-rw-r--r-- | doc/plugins/contrib/dynamiccookies.mdwn | 12 | ||||
-rw-r--r-- | doc/plugins/contrib/proxies.mdwn | 13 | ||||
-rw-r--r-- | doc/plugins/contrib/wc.mdwn | 22 | ||||
-rw-r--r-- | doc/plugins/write.mdwn | 4 | ||||
-rw-r--r-- | doc/todo/fancypodcast.mdwn | 63 |
8 files changed, 159 insertions, 31 deletions
diff --git a/doc/bugs/map_generates_malformed_HTML.mdwn b/doc/bugs/map_generates_malformed_HTML.mdwn new file mode 100644 index 000000000..d47d066a8 --- /dev/null +++ b/doc/bugs/map_generates_malformed_HTML.mdwn @@ -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]] diff --git a/doc/bugs/removal_of_transient_pages.mdwn b/doc/bugs/removal_of_transient_pages.mdwn index 4843b5900..6d0caf42e 100644 --- a/doc/bugs/removal_of_transient_pages.mdwn +++ b/doc/bugs/removal_of_transient_pages.mdwn @@ -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 index 000000000..abf50cdc0 --- /dev/null +++ b/doc/bugs/template_creation_error.mdwn @@ -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 index 000000000..c43b18f6b --- /dev/null +++ b/doc/plugins/contrib/dynamiccookies.mdwn @@ -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 index 000000000..dc53adf29 --- /dev/null +++ b/doc/plugins/contrib/proxies.mdwn @@ -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 index 000000000..fb5a7320e --- /dev/null +++ b/doc/plugins/contrib/wc.mdwn @@ -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.) diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 2b8202655..d6e6d8d1e 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -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. diff --git a/doc/todo/fancypodcast.mdwn b/doc/todo/fancypodcast.mdwn index d1697cbaa..eb2dc6b34 100644 --- a/doc/todo/fancypodcast.mdwn +++ b/doc/todo/fancypodcast.mdwn @@ -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 |(./) |(./) |(./) |(./) -"""]] |