]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/provide_inline_diffs_in_recentchanges.mdwn
fixup an implementation of the toggleable diff
[ikiwiki.git] / doc / todo / provide_inline_diffs_in_recentchanges.mdwn
index 39a35d0c6088f97c19f62dbc0ba07739321985c2..457b7ccb394d056cf1d8681791ac7f715f95276e 100644 (file)
@@ -1,8 +1,63 @@
 It would rock if I could view diffs from the web without going via feeds. I envision toggle-style buttons on the recentchanges page, or just links to the CGI, which then displays the diff... --[[madduck]]
 
-> The diffs are actually there, enabled by the `recentchangesdiff`
+> The diffs are actually there, enabled by the [[plugins/recentchangesdiff]]
 > plugin, but they are hidden in the XHTML version by the stylesheet.
 > You might try a user stylesheet with `div.diff { display: block }`.
 > --[[JasonBlevins]]
 
+> > couldn't the diff be displayed as a popup? right now it's too bad because the diff is actually in the page, generated and downloaded, but the user can't see it. I have tried to address the issue by adding stuff to the change.tmpl template, but I may be missing something - and it doesn't quite look right:
+> > 
+> >     --- /usr/share/ikiwiki/templates/change.tmpl    2011-09-05 15:14:19.000000000 -0400
+> >     +++ templates/change.tmpl       2011-10-11 13:04:37.704346964 -0400
+> >     @@ -39,6 +39,7 @@
+> >      </TMPL_LOOP>
+> >      </div>
+> >      <TMPL_IF DIFF>
+> >     +<a href="#" onClick="document.getElementByClass('diff').style = 'block'">[[show diff|wikiicons/diff.png]]</a>
+> >      <div class="diff">
+> >      <pre>
+> >      <TMPL_VAR DIFF>
+> > 
+> > There are a few things wrong with this:
+> > 
+> >  1. I don't like the hardcoded javascript in there, we should use [[plugins/toggle]] or something, but i am not sure how to make the this plugin depend on toggle, or if it is desirable. 
+> >  2. it doesn't work at all: first it doesn't actually "toggle" and second the javascript somehow gets filtered out of the resulting HTML so we don't even see it
+> >  3. if the diffurl parameter is set in the template, we'd actually see two sets of glasses, which is silly. i tried moving the diff button upwards into the PAGES loop, but there the diffurls are file-specific, which also seem quite silly
+> > 
+> > I am looking for guidance on how to improve and fix this now. --[[anarcat]] 2011-10-11
+
+> > Here is a better implementation:
+> > [[!format txt """
+diff -u change.tmpl.orig change.tmpl
+--- change.tmpl.orig    2012-03-02 23:00:36.706271573 -0500
++++ change.tmpl 2012-03-02 23:15:56.083573086 -0500
+@@ -28,6 +28,9 @@
+ <span class="changedate"><TMPL_VAR COMMITDATE></span>
+ <span class="desc"><br /></span>
+ <TMPL_IF REVERTURL><span class="revert">
++<TMPL_IF DIFF>
++<a href="#diff-<TMPL_VAR REV>" class="toggle" title="revert" rel="nofollow">[[diff|wikiicons/diff.png]]</a>
++</TMPL_IF>
+ <a href="<TMPL_VAR REVERTURL>" title="revert" rel="nofollow">[[revert|wikiicons/revert.png]]</a>
+ </span></TMPL_IF>
+ </div>
+@@ -39,7 +42,7 @@
+ </TMPL_LOOP>
+ </div>
+ <TMPL_IF DIFF>
+-<div class="diff">
++<div class="toggleable" id="diff-<TMPL_VAR REV>">
+ <pre>
+ <TMPL_VAR DIFF>
+ </pre>
+"""]]
+> > 
+> > Unfortunately it has some issues:
+> > 
+> > 1. it assumes the toggle.js code is loaded somehow
+> > 2. if the toggle code isn't loaded the diffs are displayed (which is arguably better than showing nothing since we ship the diff to the UA anyways...)
+> > 3. it will show only if there's a revert URL, which is backwards, but otherwise the display is weird, with each button on its own line
+> > 4. if the diffurl parameter is set in the template, we'd actually see two sets of glasses, which is silly. 
+> >
+> > -- [[anarcat]] 2012-03-11
 [[!tag wishlist]]