Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #1680 from CPAN-API/topic/changelog-since-stable
Show changelogs since last stable
  • Loading branch information
oalders committed May 4, 2016
2 parents 828f7c9 + 644f694 commit fa4ca23
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 54 deletions.
10 changes: 8 additions & 2 deletions lib/MetaCPAN/Web/Controller/Release.pm
Expand Up @@ -131,8 +131,14 @@ sub view : Private {
qw( mark_unauthorized_releases )
),

( $changes ? ( last_version_changes => $changes ) : () )

(
@$changes
? (
last_version_changes => $changes->[0],
changelogs => $changes,
)
: ()
)
);
}

Expand Down
39 changes: 31 additions & 8 deletions lib/MetaCPAN/Web/Model/API/Changes.pm
Expand Up @@ -28,20 +28,43 @@ sub last_version {
warn "Error parsing changes: $_" if $ENV{CATALYST_DEBUG};
};
}
return unless $releases && @$releases;

# Ok, lets make sure we get the right release..
my $changelog = $self->find_changelog( $release->{version}, $releases );

return unless $changelog;
return $self->filter_release_changes( $changelog, $release );
return [] unless $releases && @$releases;

my @releases = sort { $b->[0] <=> $a->[0] }
map {
my $v = $_->{version};
$v =~ s/-TRIAL$//;
my $dev = $_->{version} =~ /_|-TRIAL$/;
[ version->parse($v), $v, $dev, $_ ];
} @$releases;

my @changelogs;
my $found;
for my $r (@releases) {
if ($found) {
if ( $r->[2] ) {
push @changelogs, $r->[3];
}
else {
last;
}
}
elsif ( $r->[0] eq $release->{version} ) {
push @changelogs, $r->[3];
$found = 1;
}
}
return [ map { $self->filter_release_changes( $_, $release ) }
@changelogs ];
}

sub find_changelog {
my ( $self, $version, $releases ) = @_;

foreach my $rel (@$releases) {
return $rel if ( $rel->{version} eq $version );
return $rel
if ( $rel->{version} eq $version
|| $rel->{version} eq "$version-TRIAL" );
}
}

Expand Down
4 changes: 3 additions & 1 deletion lib/MetaCPAN/Web/Model/API/Changes/Parser.pm
Expand Up @@ -27,7 +27,9 @@ sub parse {
my @indents;
for my $linenr ( 0 .. $#lines ) {
my $line = $lines[$linenr];
if ( $line =~ /^(?:version\s+)?($version::LAX)(\s+(.*))?$/i ) {
if ( $line
=~ /^(?:version\s+)?($version::LAX(?:-TRIAL)?)(\s+(.*))?$/i )
{
my $version = $1;
my $note = $3;
if ($note) {
Expand Down
16 changes: 10 additions & 6 deletions root/release.html
Expand Up @@ -78,14 +78,18 @@
</ul>
<% END %>

<%- IF last_version_changes %>
<%- IF changelogs %>

<div class="last-changes well">
<h2 id="whatsnew">Changes for version <% last_version_changes.version %></h2>
<div class="change-entries">
<% change_group(last_version_changes.entries) | none %>
<div id="last-changes" class="well collapsed">
<div id="last-changes-container">
<%- FOREACH changes IN changelogs %>
<h2 id="whatsnew">Changes for version <% changes.version %></h2>
<div class="change-entries">
<% change_group(changes.entries) | none %>
</div>
<%- END %>
</div>
<a id="whatsnew-toggle-overflow">Show More</a>
<button id="last-changes-toggle" class="btn-link" onclick="$('#last-changes').toggleClass('collapsed'); return false;">[ <span class="hide-more">Hide More</span><span class="show-more">Show More</span> ]</button>
</div>

<%- END %>
Expand Down
22 changes: 2 additions & 20 deletions root/static/js/cpan.js
Expand Up @@ -89,19 +89,6 @@ function toggleTOC() {
return false;
}

function toggleWhatsnew() {
var changes = $('.last-changes .change-entries');
var link = $('.last-changes #whatsnew-toggle-overflow');

if (link.text() == 'Show Less') {
changes.css('max-height', '19.5em');
link.text('Show More');
} else {
changes.css('max-height', 'none');
link.text('Show Less');
}
}

function setFavTitle(button) {
button.attr('title', button.hasClass('active') ? 'Remove from favorite' : 'Add to favorite');
return;
Expand Down Expand Up @@ -410,15 +397,10 @@ $(document).ready(function() {
set_page_size('a[href*="/recent"]', 'recent_page_size');
set_page_size('a[href*="/requires"]', 'requires_page_size');

var changes = $('.last-changes .change-entries');
var changes = $('#last-changes-container');
if (changes.prop('scrollHeight') > changes.height()) {
$('#whatsnew-toggle-overflow').on('click', function() {
toggleWhatsnew();
});
} else {
$('#whatsnew-toggle-overflow').hide();
$("#last-changes-toggle").show();
}

});

function set_page_size(selector, storage_name) {
Expand Down
35 changes: 18 additions & 17 deletions root/static/less/release.less
Expand Up @@ -29,15 +29,13 @@
/* Changes in release page
* See /release/CPAN-Changes for example
*/
.last-changes {
#last-changes {
h2:extend(.content .file-group h2) {}

ul {
margin-bottom: 1em;
padding-left: 20px;
}
> ul:last-child {
margin-bottom: 0;
}

ul, ul ul ul {
list-style: disc;
Expand All @@ -46,25 +44,28 @@
list-style: circle;
}

> ul > .group-header {
list-style: none;
> .change-entry {
font-weight: bold;
.change-entries {
margin-bottom: 0.5em;
&:last-child {
margin-bottom: 0em;
}
}

.change-entries {
max-height: 19.5em;
overflow-y: hidden;

> ul:last-child {
margin-bottom: 0;
.show-more { display: none }
.hide-more { display: inline }
&.collapsed {
.show-more { display: inline }
.hide-more { display: none }
#last-changes-container {
overflow: hidden;
max-height: 19.5em;
}
}

#whatsnew-toggle-overflow {
margin-top: 1em;
#last-changes-toggle {
display: none;
}

margin-right: 200px;
padding-bottom: .5em;
overflow: auto;
}

0 comments on commit fa4ca23

Please sign in to comment.