* Simplify the data structure returned by rcs_recentchanges to avoid
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 3 Sep 2006 19:53:23 +0000 (19:53 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Sun, 3 Sep 2006 19:53:23 +0000 (19:53 +0000)
  each rcs plugin needing to form complex strings on its own.

IkiWiki/CGI.pm
IkiWiki/Rcs/Stub.pm
IkiWiki/Rcs/git.pm
IkiWiki/Rcs/svn.pm
debian/changelog

index 99fc5c0edf71af55e0288bf5b7b14147832aa1b6..6e1efbd69927f1199b0af6ccee45285d8ef7ea81 100644 (file)
@@ -76,12 +76,26 @@ sub cgi_recentchanges ($) { #{{{
        eval q{use Memoize};
        memoize("htmllink");
 
        eval q{use Memoize};
        memoize("htmllink");
 
+       eval q{use Time::Duration};
+
+       my $changelog=[rcs_recentchanges(100)];
+       foreach my $change (@$changelog) {
+               $change->{when} = concise(ago($change->{when}));
+               $change->{user} = htmllink("", "", $change->{user}, 1);
+               $change->{pages} = [
+                       map {
+                               $_->{link} = htmllink("", "", $_->{page}, 1);
+                               $_;
+                       } @{$change->{pages}}
+               ];
+       }
+
        my $template=template("recentchanges.tmpl"); 
        $template->param(
                title => "RecentChanges",
                indexlink => indexlink(),
                wikiname => $config{wikiname},
        my $template=template("recentchanges.tmpl"); 
        $template->param(
                title => "RecentChanges",
                indexlink => indexlink(),
                wikiname => $config{wikiname},
-               changelog => [rcs_recentchanges(100)],
+               changelog => $changelog,
                baseurl => baseurl(),
        );
        print $q->header(-charset => 'utf-8'), $template->output;
                baseurl => baseurl(),
        );
        print $q->header(-charset => 'utf-8'), $template->output;
index ffd9e18650d7effc87e17e4c02e3fd4d9fe24a6d..01696a8b0a25b4d34282be0bc6e8307a8fe72dbe 100644 (file)
@@ -32,15 +32,26 @@ sub rcs_add ($) {
 }
 
 sub rcs_recentchanges ($) {
 }
 
 sub rcs_recentchanges ($) {
-       # Examine the RCS history and generate a data structure for
-       # the recentchanges page.
-       # This structure is a list of items, each item is a hash reference
-       # representing one change to the repo.
-       # The hash has keys user (a link to the user making the change),
-       # committype (web or the name of the rcs), when (when the change
-       # happened, relative to the current time), message (a reference
-       # to an array of lines for the commit message), and pages (a
-       # reference to an array of links to the pages that were changed).
+       # Examine the RCS history and generate a list of recent changes.
+       # The data structure returned for each change is:
+       # {
+       #       user => # name of user who made the change,
+       #       committype => # either "web" or the name of the rcs,
+       #       when => # time when the change was made,
+       #       message => [
+       #               "commit message line",
+       #               "commit message line",
+       #               "...",
+       #       ],
+       #       pages => [
+       #               {
+       #                       page => # name of page changed,
+       #                       diffurl => # optional url to a diff showing 
+       #                                  # the changes,
+       #               }
+       #               # repeat for each page changed in this commit
+       #       ],
+       # }
 }
 
 sub rcs_notify () {
 }
 
 sub rcs_notify () {
index 271c27af658e217611adbd804c277b31745ccf11..a156f0b4e9d0e2796bc3602746c3acc194187e73 100644 (file)
@@ -345,7 +345,6 @@ sub rcs_recentchanges ($) { #{{{
 
        eval q{use CGI 'escapeHTML'};
        eval q{use Date::Parse};
 
        eval q{use CGI 'escapeHTML'};
        eval q{use Date::Parse};
-       eval q{use Time::Duration};
 
        my ($sha1, $type, $when, $diffurl, $user, @pages, @message, @rets);
        INFO: foreach my $ci (git_commit_info('HEAD', $num)) {
 
        my ($sha1, $type, $when, $diffurl, $user, @pages, @message, @rets);
        INFO: foreach my $ci (git_commit_info('HEAD', $num)) {
@@ -356,7 +355,7 @@ sub rcs_recentchanges ($) { #{{{
 
                $sha1 = $ci->{'sha1'};
                $type = "web";
 
                $sha1 = $ci->{'sha1'};
                $type = "web";
-               $when = concise(ago(time - $ci->{'author_epoch'}));
+               $when = time - $ci->{'author_epoch'};
 
                foreach my $bit (@{ $ci->{'details'} }) {
                        my $diffurl = $config{'diffurl'};
 
                foreach my $bit (@{ $ci->{'details'} }) {
                        my $diffurl = $config{'diffurl'};
@@ -368,7 +367,7 @@ sub rcs_recentchanges ($) { #{{{
                        $diffurl =~ s/\[\[sha1_to\]\]/$bit->{'sha1_to'}/go;
 
                        push @pages, {
                        $diffurl =~ s/\[\[sha1_to\]\]/$bit->{'sha1_to'}/go;
 
                        push @pages, {
-                               link => htmllink("", "", pagename($file), 1),
+                               page => pagename($file),
                                diffurl => $diffurl,
                        },
                }
                                diffurl => $diffurl,
                        },
                }
@@ -386,7 +385,7 @@ sub rcs_recentchanges ($) { #{{{
 
                push @rets, {
                        rev        => $sha1,
 
                push @rets, {
                        rev        => $sha1,
-                       user       => htmllink("", "", $user, 1),
+                       user       => $user,
                        committype => $type,
                        when       => $when,
                        message    => [@message],
                        committype => $type,
                        when       => $when,
                        message    => [@message],
index 2d203c7ca3001d7e6318dd254e0b3188287f0509..9345b7fd29f357daaf75299f7fa5c3e55f25b778 100644 (file)
@@ -153,7 +153,7 @@ sub rcs_recentchanges ($) { #{{{
                my $rev = $logentry->{revision};
                my $user = $logentry->{author};
 
                my $rev = $logentry->{revision};
                my $user = $logentry->{author};
 
-               my $when=concise(ago(time - str2time($logentry->{date}, 'UTC')));
+               my $when=time - str2time($logentry->{date}, 'UTC');
 
                foreach my $msgline (split(/\n/, $logentry->{msg})) {
                        push @message, { line => escapeHTML($msgline) };
 
                foreach my $msgline (split(/\n/, $logentry->{msg})) {
                        push @message, { line => escapeHTML($msgline) };
@@ -177,12 +177,12 @@ sub rcs_recentchanges ($) { #{{{
                        $diffurl=~s/\[\[r1\]\]/$rev - 1/eg;
                        $diffurl=~s/\[\[r2\]\]/$rev/g;
                        push @pages, {
                        $diffurl=~s/\[\[r1\]\]/$rev - 1/eg;
                        $diffurl=~s/\[\[r2\]\]/$rev/g;
                        push @pages, {
-                               link => htmllink("", "", pagename($file), 1),
+                               page => pagename($file),
                                diffurl => $diffurl,
                        } if length $file;
                }
                push @ret, { rev => $rev,
                                diffurl => $diffurl,
                        } if length $file;
                }
                push @ret, { rev => $rev,
-                       user => htmllink("", "", $user, 1),
+                       user => $user,
                        committype => $committype,
                        when => $when,
                        message => [@message],
                        committype => $committype,
                        when => $when,
                        message => [@message],
index 72f4554b5e026f2c30ff0f515792c0d10a78f948..b4c362ff51254b8eac47306b45d338e4d824d2bf 100644 (file)
@@ -1,3 +1,10 @@
+ikiwiki (1.24) UNRELEASED; urgency=low
+
+  * Simplify the data structure returned by rcs_recentchanges to avoid
+    each rcs plugin needing to form complex strings on its own.
+
+ -- Joey Hess <joeyh@debian.org>  Sun,  3 Sep 2006 13:32:34 -0400
+
 ikiwiki (1.23) unstable; urgency=low
 
   * Allow inline directives to be nested inside eg, sidebars. Closes: #385512
 ikiwiki (1.23) unstable; urgency=low
 
   * Allow inline directives to be nested inside eg, sidebars. Closes: #385512