0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-04-15 03:01:37 -05:00

Merge pull request #636 from gotdibbs/Issue592

This commit is contained in:
Hannah Wolfe 2013-09-09 18:34:22 +01:00
commit b115ebf8ea
6 changed files with 50 additions and 5 deletions

View file

@ -361,7 +361,7 @@ var path = require('path'),
grunt.registerTask('spawn-casperjs', function () {
var done = this.async(),
options = ['host', 'noPort', 'port', 'email', 'password'],
args = ['test', 'admin/', '--includes=base.js', '--direct', '--log-level=debug', '--port=2369'];
args = ['test', 'admin/', 'frontend/', '--includes=base.js', '--direct', '--log-level=debug', '--port=2369'];
// Forward parameters from grunt to casperjs
_.each(options, function processOption(option) {

View file

@ -21,10 +21,15 @@ frontendControllers = {
// No negative pages
if (isNaN(pageParam) || pageParam < 1) {
//redirect to 404 page?
return res.redirect("/page/1/");
return res.redirect("/");
}
options.page = pageParam;
// Redirect '/page/1/' to '/' for all teh good SEO
if (pageParam === 1 && req.route.path === '/page/:page/') {
return res.redirect('/');
}
// No negative posts per page, must be number
if (!isNaN(postsPerPage) && postsPerPage > 0) {
options.limit = postsPerPage;
@ -42,7 +47,7 @@ frontendControllers = {
// If page is greater than number of pages we have, redirect to last page
if (pageParam > maxPage) {
return res.redirect("/page/" + maxPage + "/");
return res.redirect(maxPage === 1 ? '/' : ('/page/' + maxPage + '/'));
}
// Render the page of posts

View file

@ -43,6 +43,18 @@ coreHelpers = function (ghost) {
return date;
});
// ### Page URL Helper
//
// *Usage example:*
// `{{pageUrl 2}}`
//
// Returns the URL for the page specified in the current object
// context.
//
ghost.registerThemeHelper('pageUrl', function (context, block) {
return context === 1 ? '/' : ('/page/' + context + '/');
});
// ### URL helper
//
// *Usage example:*

View file

@ -1,9 +1,9 @@
<nav class="pagination" role="pagination">
{{#if prev}}
<a class="newer-posts" href="/page/{{prev}}/">&larr; Newer Posts</a>
<a class="newer-posts" href="{{pageUrl prev}}">&larr; Newer Posts</a>
{{/if}}
<span class="page-number">Page {{page}} of {{pages}}</span>
{{#if next}}
<a class="older-posts" href="/page/{{next}}/">Older Posts &rarr;</a>
<a class="older-posts" href="{{pageUrl next}}">Older Posts &rarr;</a>
{{/if}}
</nav>

View file

@ -0,0 +1,16 @@
/**
* Tests logging out and attempting to sign up
*/
/*globals casper, __utils__, url, testPost, falseUser, email */
casper.test.begin('Redirects page 1 request', 1, function suite(test) {
test.filename = '01_route_test_redirects_page_1.png';
casper.start(url + 'page/1/', function then(response) {
test.assertEqual(casper.getCurrentUrl().indexOf('page/'), -1, 'Should be redirected to "/".');
}).viewport(1280, 1024);
casper.run(function () {
test.done();
});
});

View file

@ -245,6 +245,18 @@ describe('Core Helpers', function () {
});
});
describe('Page Url Helper', function () {
it('has loaded pageUrl helper', function () {
should.exist(handlebars.helpers.pageUrl);
});
it('can return a valid url', function () {
handlebars.helpers.pageUrl(1).should.equal('/');
handlebars.helpers.pageUrl(2).should.equal('/page/2/');
handlebars.helpers.pageUrl(50).should.equal('/page/50/');
});
});
describe("Pagination helper", function () {
var paginationRegex = /class="pagination"/,
newerRegex = /class="newer-posts"/,