[[!meta author="""http://smcv.pseudorandom.co.uk/"""]] [[!meta authorurl="""http://smcv.pseudorandom.co.uk/"""]] [[!meta title="""change to todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both on ikiwiki"""]] [[!meta permalink="http://ikiwiki.info/recentchanges/#change-8935a131d02ac13b6024dff9cbf7a5f837fcdc04"]]

Changed pages:
[[diff|wikiicons/diff.png]]todo/want to avoid ikiwiki using http or https in urls to allow serving both
Changed by:
smcv
Commit type:
web
Date:
00:37:28 11/23/10
[[revert|wikiicons/revert.png]]
updated branch, not tested properly yet
diff --git a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn
index f8ec4c4..8b05010 100644
--- a/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn
+++ b/doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn
@@ -147,7 +147,7 @@ you don't like my approach:
 
 ----
 
-[[!template id=gitbranch branch=smcv/ready/localurl author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]]
 [[!tag patch]]
 
 OK, here's an alternative approach, closer in spirit to what was initially
@@ -165,14 +165,17 @@ whether `url` and `cgiurl` are on the same server with the the same URL
 scheme. In theory you could use things like `//static.example.com/wiki/`
 and `//dynamic.example.com/ikiwiki.cgi` to preserve choice of http/https
 while switching server, but I don't know how consistently browsers
-suppot that.
+support that.
 
 "local" here is short for "locally valid", because these URLs are neither
 fully relative nor fully absolute, and there doesn't seem to be a good name
 for them...
 
-I've tested this on a demo website with the CGI enabled, and it seems to
+I tested an earlier version on a demo website with the CGI enabled, and it seemed to
 work nicely (there might be bugs in some plugins, I didn't try all of them).
+I haven't yet re-tested with my updated branch, which is why it's not `ready/`
+yet.
+
 The `$config{url}` and `$config{cgiurl}` are both HTTP, but if I enable
 `httpauth`, set `cgiauthurl` to a HTTPS version of the same site and log
 in via that, links all end up in the HTTPS version.
@@ -217,11 +220,19 @@ New API added by this branch:
   >> 
   >>> That makes a great deal of sense, bravo for actually removing
   >>> parameters in the common case while maintaining backwards
-  >>> compatability!
+  >>> compatability! --[[Joey]]
+  >>>
+  >>>> Done in my `localurl` branch; not tested in a whole-wiki way
+  >>>> yet, but I did add a regression test. I've used
+  >>>> `urlto(x, undef)` rather than `urlto(x)` so far, but I could
+  >>>> go back through the codebase using the short form if you'd
+  >>>> prefer. --[[smcv]]
   >>> 
   >>> It does highlight that it would be better to have a
   >>> `absolute_urlto($link)` (or maybe `absolute(urlto($link))` )
   >>> rather than the 3 parameter form. --[[Joey]]
+  >>>
+  >>> Possibly. I haven't added this.
 
 * `IkiWiki::baseurl` has a new second argument which works like the
   third argument of `urlto`
@@ -232,19 +243,34 @@ New API added by this branch:
   >> (But I assume changes to `urlto` will follow through here anyway.)
   >> --[[Joey]] 
 
+  >>> I had to use it a bit more, as a replacement for `$config{url}`
+  >>> when doing things like referencing stylesheets or redirecting to
+  >>> the top of the wiki.
+  >>>
+  >>> I ended up redoing this without the extra parameter. Previously,
+  >>> `baseurl(undef)` was the absolute URL; now, `baseurl(undef)` is
+  >>> the local path. I know you objected to me using `baseurl()` in
+  >>> an earlier branch, because `baseurl().$x` looks confusingly
+  >>> similar to `baseurl($x)` but has totally different semantics;
+  >>> I've generally written it `baseurl(undef)` now, to be more
+  >>> explicit. --[[smcv]]
+
 * `IkiWiki::cgiurl` uses `$local_cgiurl` if passed `local_cgiurl => 1`
 
-  > Possibly changed to making this always be local unless `cgiurl => $x`
-  > is given: see below --[[smcv]]
+  > Now changed to always use the `$local_cgiurl`. --[[smcv]]
 
 * `IkiWiki::cgiurl` omits the trailing `?` if given no named parameters
   except `cgiurl` and/or `local_cgiurl`
 
   > I assume you have no objection to this --[[smcv]]
   > 
-  >> Nod, although I don't know of a use case. --[[Joey]] 
+  >> Nod, although I don't know of a use case. --[[Joey]]
+
+  >>> The use-case is that I can replace `$config{cgiurl}` with
+  >>> `IkiWiki::cgiurl()` for things like the action attribute of
+  >>> forms. --[[smcv]]
 
-Bugs:
+Fixed bugs:
 
 * I don't think anything except `openid` calls `cgiurl` without also
   passing in `local_cgiurl => 1`, so perhaps that should be the default;
@@ -265,6 +291,10 @@ Bugs:
   >>> if `absolute()` were implemented as suggested above, it could also
   >>> be used with cgiurl if necessary.) --[[Joey]]
 
+  >>>> Done (minus `absolute()`). --[[smcv]]
+
+Potential future things:
+
 * It occurs to me that `IkiWiki::cgiurl` could probably benefit from being
   exported? Perhaps also `IkiWiki::baseurl`?
 
@@ -285,4 +315,7 @@ Bugs:
   > AFACIS, `baseurl` is only called in 3 places so I don't think that's
   > needed. --[[Joey]] 
 
-  >> OK, wontfix. --[[smcv]]
+  >> OK, wontfix. For what it's worth, my branch has 6 uses in IkiWiki
+  >> core code (IkiWiki, CGI, Render and the pseudo-core part of editpage)
+  >> and 5 in plugins, since I used it for things like redirection back
+  >> to the top of the wiki --[[smcv]]