summaryrefslogtreecommitdiff
path: root/doc/todo
diff options
context:
space:
mode:
authorPeter Gammie <peteg42@gmail.com>2010-10-02 15:06:10 +1000
committerPeter Gammie <peteg42@gmail.com>2010-10-02 15:06:10 +1000
commitab9d6bae95821a117642ef96e708a26b2ad9953b (patch)
treef5199b79f53bd57625e986610e9f82e5abbf19c1 /doc/todo
parent1620e2dc4f0a25620fe243d1556722e6b2d2618d (diff)
parent3fd58fc71bb47636036299a26ce85fa02c4d9b77 (diff)
Merge branch 'joey' into revert
Diffstat (limited to 'doc/todo')
-rw-r--r--doc/todo/want_to_avoid_ikiwiki_using_http_or_https_in_urls_to_allow_serving_both.mdwn68
-rw-r--r--doc/todo/web_reversion.mdwn10
2 files changed, 59 insertions, 19 deletions
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 e2d9a5993..262d5c22d 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
@@ -59,6 +59,9 @@ becoming a problem for me. Is there anything I can do here? --[[Perry]]
----
+[[!toggle id="smcv-https" text="Some discussion of a rejected implementation, smcv/https."]]
+[[!toggleable id="smcv-https" text="""
+
[[!template id=gitbranch branch=smcv/https author="[[smcv]]"]]
For a while I've been using a configuration where each wiki has a HTTP and
@@ -140,33 +143,62 @@ you don't like my approach:
>> making it easier to run two mostly-synched copies like I was previously
>> doing is the only solution... --s
+"""]]
+
----
-**warning: untested branch ** [[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]]
+[[!template id=gitbranch branch=smcv/localurl author="[[smcv]]"]]
OK, here's an alternative approach, closer in spirit to what was initially
-requested. I haven't tested this at all (it's getting rather late in UK time)
-and it will probably be rebased later, but I've referenced it here as a proof of
-concept.
+requested. I haven't tested this on a full website with the CGI yet.
The idea is that in the common case, the CGI and the pages will reside on the
same server, so they can use "semi-absolute" URLs (`/ikiwiki.cgi`, `/style.css`,
-`/bugs/done`) to refer to each other. My branch adds config options which
-could be set as follows for ikiwiki.info or any branchable.com site:
-
-* local_url: /
-* local_cgiurl: /ikiwiki.cgi
-
-Most redirects, form actions, links etc. can safely use this form rather than
-the fully-absolute URL. If not configured, these options default to the
-corresponding absolute URL, which is would also be correct for unusual sites
-where the CGI and the pages aren't on the same server.
-
-(In theory you could use things like `//static.example.com/wiki/` and
-`//dynamic.example.com/ikiwiki.cgi` to preserve choice of http/https
+`/bugs/done`) to refer to each other. Most redirects, form actions, links etc.
+can safely use this form rather than the fully-absolute URL.
+
+The initial version of the branch had config options `local_url` and
+`local_cgiurl`, but they're now automatically computed by checking
+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.)
+suppot 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...
+
+New API added by this branch:
+
+* `urlto(x, y, 'local')` uses `$local_url` instead of `$config{url}`
+
+* `IkiWiki::baseurl` has a new second argument which works like the
+ third argument of `urlto`
+
+* `IkiWiki::cgiurl` uses `$local_cgiurl` if passed `local_cgiurl => 1`
+
+* `IkiWiki::cgiurl` omits the trailing `?` if given no named parameters
+ except `cgiurl` and/or `local_cgiurl`
+
+Bugs:
+
+* I don't think anything except `openid` calls `cgiurl` without also
+ passing in `local_cgiurl => 1`, so perhaps that should be the default;
+ `openid` uses the `cgiurl` named parameter anyway, so there doesn't even
+ necessarily need to be a way to force absolute URLs? Any other module
+ that really needs an absolute URL could use
+ `cgiurl(cgiurl => $config{cgiurl}, ...)`,
+ although that does look a bit strange
+
+* It occurs to me that `IkiWiki::cgiurl` could probably benefit from being
+ exported? Perhaps also `IkiWiki::baseurl`?
+
+* Or, to reduce use of the unexported `baseurl` function, it might make
+ sense to give `urlto` a special case that references the root of the wiki,
+ with a trailing slash ready to append stuff: perhaps `urlto('/')`,
+ with usage like this?
+
+ do_something(baseurl => urlto('/', undef, local)`);
+ do_something_else(urlto('/').'style.css');
+ IkiWiki::redirect(urlto('/', undef, 1));
diff --git a/doc/todo/web_reversion.mdwn b/doc/todo/web_reversion.mdwn
index 92052eb26..34947b710 100644
--- a/doc/todo/web_reversion.mdwn
+++ b/doc/todo/web_reversion.mdwn
@@ -45,15 +45,23 @@ Peter Gammie has done an initial implementation of the above.
> structure that `rcs_recieve` does. This could be done by using `git revert
> --no-commit`, and then examining the changes, and then `git reset` to drop
> them.
+>> We can use the existing `git_commit_info` with the patch ID - no need to touch the working directory. -- [[peteg]]
>
> Then the code that is currently in IkiWiki/Receive.pm, that calls
> `check_canedit` and `check_canremove` to test the change, can be
> straightforwardly refactored out, and used for checking reverts too.
+>> Wow, that was easy. :-) -- [[peteg]]
>
> (The data from `rcs_preprevert` could also be used for a confirmation
> prompt -- it doesn't currently include enough info for diffs, but at
> least could have a list of changed files.)
->
+>> I added `rcs_showpatch` which simply yields the output of `git show <patch-id>`. -- [[peteg]]
+>
> Note that it's possible for a git repo to have commits that modify wiki
> files in a subdir, and code files elsewhere. `rcs_preprevert` should
> detect changes outside the wiki dir, and fail, like `rcs_receive` does.
+>> Taken care of by refactoring `rcs_receive` in `git.pm`
+>> I've tested it lightly in my single-user setup. It's a little nasty that the `attachment` plugin
+>> gets used to check whether attachments are allowed -- there really should be a hook for that.
+>>
+>> Please look it over and tell me what else needs fixing... -- [[peteg]]