From cd0e4b8f8a797a4763325d79d4b8c92c612c9036 Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Mon, 30 Jul 2012 15:40:13 -0600 Subject: [PATCH] Adding next/prev change buttons --- collects/meta/drdr/render.rkt | 38 ++++++++++++++++++ .../static/images/fast-forward-change.png | Bin 0 -> 2427 bytes .../meta/drdr/static/images/rewind-change.png | Bin 0 -> 2449 bytes 3 files changed, 38 insertions(+) create mode 100644 collects/meta/drdr/static/images/fast-forward-change.png create mode 100644 collects/meta/drdr/static/images/rewind-change.png diff --git a/collects/meta/drdr/render.rkt b/collects/meta/drdr/render.rkt index 7afc13ab44..f539f9096d 100644 --- a/collects/meta/drdr/render.rkt +++ b/collects/meta/drdr/render.rkt @@ -76,6 +76,8 @@ the-base-path*)) (define prev-rev-url (format "/~a~a" (previous-rev) the-base-path)) (define next-rev-url (format "/~a~a" (next-rev) the-base-path)) + (define prev-change-url (format "/previous-change/~a~a" the-rev the-base-path)) + (define next-change-url (format "/next-change/~a~a" the-rev the-base-path)) (define cur-rev-url (format "/~a~a" "current" the-base-path)) ; XXX Don't special case top level (values (apply string-append @@ -98,6 +100,12 @@ (span ([class "revnav"]) (a ([href ,prev-rev-url]) (img ([src "/images/rewind.png"]))) + ,@(if directory? + empty + `((a ([href ,prev-change-url]) + (img ([src "/images/rewind-change.png"]))) + (a ([href ,next-change-url]) + (img ([src "/images/fast-forward-change.png"]))))) (a ([href ,next-rev-url]) (img ([src "/images/fast-forward.png"]))) (a ([href ,cur-rev-url]) @@ -927,6 +935,34 @@ maybe (find-previous-rev maybe))))) +(define (show-file/prev-change req rev path-to-file) + (show-file/change -1 rev path-to-file)) +(define (show-file/next-change req rev path-to-file) + (show-file/change +1 rev path-to-file)) +(define (show-file/change direction top-rev path-to-file) + (define the-rev + (let loop ([last-rev top-rev] + [this-rev (+ direction top-rev)]) + (parameterize ([current-rev this-rev] + [previous-rev (find-previous-rev this-rev)]) + (define log-dir (revision-log-dir this-rev)) + (define log-pth + (apply build-path log-dir path-to-file)) + (match + (with-handlers ([(lambda (x) + (regexp-match #rx"No cache available" (exn-message x))) + (lambda (x) + #f)]) + (log-rendering log-pth)) + [#f + last-rev] + [(and the-log-rendering (struct rendering (_ _ _ _ _ _ _ changed))) + (if (empty? changed) + (loop this-rev (+ direction this-rev)) + this-rev)])))) + (redirect-to + (top-url show-file the-rev path-to-file))) + (define (show-file req rev path-to-file) (define log-dir (revision-log-dir rev)) (parameterize ([current-rev rev] @@ -1011,6 +1047,8 @@ [("") show-revisions] [("diff" (integer-arg) (integer-arg) (string-arg) ...) show-diff] [("json" "timing" (string-arg) ...) json-timing] + [("previous-change" (integer-arg) (string-arg) ...) show-file/prev-change] + [("next-change" (integer-arg) (string-arg) ...) show-file/next-change] [("current" "") show-revision/current] [("current" (string-arg) ...) show-file/current] [((integer-arg) "") show-revision] diff --git a/collects/meta/drdr/static/images/fast-forward-change.png b/collects/meta/drdr/static/images/fast-forward-change.png new file mode 100644 index 0000000000000000000000000000000000000000..d59134a82a58973eb016e4d438109fb861684dd0 GIT binary patch literal 2427 zcmV->3552EP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyl9 z6%{19mFX4$00{d@L_t(o!=0CDj9q0J$A9lx?!D(Ob7yJq%yhcgVp%LU{eUcnh=DYy ziItKKhkIvW+5wFxxw+?@LzMyLNjvT)}77^4bDuRfhqWynC+#Aoq{{o*HeQcYm-mGf3qFy8@suoejD2NKE zqP<_-T=nz4o|tNQy>?{BooB<>I81)Gal)aG1FAxBy?OC+xsvcLdgq>`~o$<$dF&A z8dRv5BFDNf@yF+$AW0Gsw+nICN0T3Q3%+r-6W(EzZN);swQDY;T;62 zOV@UZU5r(S@jQltIx89tCXYRj5w3KD|9rxm-t?-7;w?yz*n0%!qR}<13|G+7l+(7& zzipe-S%6xVUlri(!w z2>0acAM{m)pclJ#yP{i0Dpf8SxR91+oN+OyZHKu$CU$XOaz!;?0vE~QO$Is1QB`th z$z2LKN}fm254mRII$obT#@z9lEyl53MIZL)C6imhv3jt9MQLfmtnD&uJJkJVi=TXQkS0iw662;Ql&-wg})Dplp;@`j$r zyOc97CUrR_&v3`!wY+a|^^%qpI&I-Q~8TD)iF z`#}^{ca^UH*-B5)t*Yve4GtmDHz1~Kdj>eQgvRjM$`yQO>~aG7veQdKA1rR+zIWWr zRpaNs=}3BM*|`*JEuFZ_Oft)?%%KX63&&7ZAK_{b+$Bb#Q63~i=x9pESrX~VE!f2v zy(YYXZ>|0aqfr%gviQF275M7VHoo(&8=0ur`$}XWAl8v&mbr9}R^BGoE-OdIK|s}A z;;DKY1WP$6ld2_lIkD@-xrl)1l0>o2AK~ut9b7WJ>YVhw$zRX?>psU#=U+y_3;Pk` zur?)0I<(SRT5g_7ad=_L1`k{fz!*cU30+CZB*pa|PSu_RicFE)20y%P4Kc=WQ}tSY zvgPw!x^_L%&lPE&(Y7(2yo={~^opAq@>H!+ReB}X01m+}?p{^-f3KcDu$V1-YPx>e z_E2?rh&QjQAWCEcLgV9MFzR}7t@$}0jy2_*XC8S=@K4&i`S{b{=5H?_!6+C7-}i~a z66K(b(;TCMQO*Ra_9$xU$(;oFlB z^YU~P1dQvg^#h+`=rd5LQ4I#@#51UKsJf$ps(ngTX?CaCJP=Yd1y3v z(x>_U(S0OYO5_(7-?yd9_hx>{?#UMyz27*+I7NL!7nlLCqgv_mTVQ9PeP%>`xBfuuD}57J4&qw;}eg2VOqFL~Rul#kH&| z^_&d~L52Bzb{^sj$S!|X4<~#qKtvGnT z*zDbhng~rbr?wEjLS75(K5{Rj7IqB`+c)=jqpXbLh}N z>Au=R#A4Lk9v|3o=h<)o^U)vuh22To#?g*ov_M7|gw*zxz}-~eXl5BDz%f8$=~tH!Yv(JiWOm8wnv tsB^C&dQw%MMcm%x#T(jv1>P18@E^>*;XX1r(_8=m002ovPDHLkV1iM2s?-1g literal 0 HcmV?d00001 diff --git a/collects/meta/drdr/static/images/rewind-change.png b/collects/meta/drdr/static/images/rewind-change.png new file mode 100644 index 0000000000000000000000000000000000000000..43131b8f8ab8e32d3493bbd874c8065adf98ca27 GIT binary patch literal 2449 zcmV;C32yd@P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyl9 z6%{5_n}|9900|LEL_t(o!=0B~j9uqhhM#{O_Ib~q@pw-5*skLy#yE{4NK-;v0*W6epPM-PA;aH~=>Vpx zAq)=^P7MBx045}#&2RhXV@~0*kyk%* z#dH|p=CN(OYvfjfL@rMzPe(af=#eSMDJFGLi&Cm_g{n)ax(X!{j?W(DZzzU36^ zqhJKty5QDV1tOMFN>W;Bjqys0sqz@($uKkh3w-U{U&aNH!h1`n51%j-(K?H^`%asK-|FK2V-IC|l+8#0$teWRa$jILWUXNoQn7)IDw;m+Iu7m&5wmm$$FZ1i=cdlEwCxn4Lcd|8>D$8uGj4%`pF|l`&*^`%IjQ1tL9RTCC zVfq*y<#d9lXFWUx(m-(2l{&w_j1E&iGS?Ceg)gC)>-}r4DOy7ZX?hTfG=hj_(a`@M% zy3!3H<}nkJ5qYE6>#^EjW39AGz1%`hAZ|*WLQ@2s6PbE+tw*jvP{Gf)CU~InZbn?? zO#|zpk$X119~pymv_3{kUS#WL)g_7|Bq7{LB*_hyqL3UA(E3~l3F!I%96^RzAB@2n z2Bt;eYO-PwVOm{RB~_P@x|j&VDe!~Ei#&MopLnA8?3;ofUiud@^*8yB7(}uYI3>h! zOf{`gj~fI9oCMgFNb;{>o=&kw*_Eh8CCV-VJcg&&&-ucIr}@2^zvEPRV|1UGInBpU z{{`p5YuDX(0v84^7CTW%Vungh8cBmrb{Pc^zIY{){0}8D-(95aVj5A2S~BQ_lQvA| z!txb9_0pI5^W`J7ExT?N%&xBT;Pap7tGyG~jG!140HkTkP^Cqq)S~Wc%+6l~91#6i zB3_oFT9**QhTzW6&-1PB59#CuS>B^osWLV)%C6>4#!3@>Z{`Sd z=Pn}Yss2lcJ|CGGPJ9j%XXjs~LP|5PvZd6ZnU*Lel?_o{73-iQ1uwonLtgYZ;4TOk z#HE=f78jRE%OzUPI#cy=M$=KsuFRR2pI`5eeNGaQf@q#Ta75CH<<%vgy8IM%S7tnE zF3c7|a*FB3Hnx{{vb`LT03|)ni73va*FAAQM7df$b`SJ^Xu6T`_6r6?gy z6NrS142O`wDG<2`=K^sQk)$Q6m6TSaHkkSFG&>qQm@H4y_Lq6`$QSX2N3uW8Pu=?^ z1VY5OefSd_pUTPH+rQi2dg>PQ;Tc-L!(R&PqC}Hlj-U-ThnpQtv$!lfBy&aEC=lI{M5aFa1}n7)(tzB$oQQg z9~T*ikNx25?7jIG-aqw0>ZLj(=`gF6WmbKg)&2@u(ZdNUNkXI4qM0^m#ZBsQld>!G zHB=II};Tf99k>0{Tz0o-ps_ROX`mh5N$?K6`9EGAkbO>W-4m)o}f0;x;sSXK#_kZ