summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-09-26 18:45:12 +0200
committerSamy Pesse <samypesse@gmail.com>2016-09-26 18:45:12 +0200
commit51f4cd6dae0511d77bea71c6abf94c86aacdf67f (patch)
treecb26b070b03e7faf56097aa2ef35f9491b8d19aa
parent64ce8bcf4277d450b5d4c63ac92df35cf4c5af10 (diff)
downloadgitbook-51f4cd6dae0511d77bea71c6abf94c86aacdf67f.zip
gitbook-51f4cd6dae0511d77bea71c6abf94c86aacdf67f.tar.gz
gitbook-51f4cd6dae0511d77bea71c6abf94c86aacdf67f.tar.bz2
Fix link and navigation click
-rw-r--r--packages/gitbook-core/src/actions/navigation.js2
-rw-r--r--packages/gitbook-core/src/components/Link.js10
-rw-r--r--packages/gitbook-core/src/reducers/page.js15
-rw-r--r--packages/gitbook/src/browser/render.js2
4 files changed, 19 insertions, 10 deletions
diff --git a/packages/gitbook-core/src/actions/navigation.js b/packages/gitbook-core/src/actions/navigation.js
index af0fdff..60be593 100644
--- a/packages/gitbook-core/src/actions/navigation.js
+++ b/packages/gitbook-core/src/actions/navigation.js
@@ -71,7 +71,7 @@ function redirect(uri) {
* @param {Boolean} options.replace
* @return {Action} action
*/
-function fetchPage(uri, options) {
+function fetchPage(uri, options = {}) {
const { replace } = options;
return (dispatch, getState) => {
diff --git a/packages/gitbook-core/src/components/Link.js b/packages/gitbook-core/src/components/Link.js
index ade7461..83ecdd5 100644
--- a/packages/gitbook-core/src/components/Link.js
+++ b/packages/gitbook-core/src/components/Link.js
@@ -1,5 +1,7 @@
const React = require('react');
const ReactRedux = require('react-redux');
+const path = require('path');
+const url = require('url');
const SummaryArticleShape = require('../shapes/SummaryArticle');
const Link = React.createClass({
@@ -23,9 +25,13 @@ const Link = React.createClass({
return to;
}
+ // Article
if (typeof to.ref === 'string') {
- // TODO: normalize url
- return to.ref;
+ const parts = url.parse(to.ref);
+ const ext = path.extname(parts.pathname);
+ const pathname = path.basename(parts.pathname, ext) + '.html';
+
+ return pathname + (parts.hash || '');
}
},
diff --git a/packages/gitbook-core/src/reducers/page.js b/packages/gitbook-core/src/reducers/page.js
index 275fce7..2d8c943 100644
--- a/packages/gitbook-core/src/reducers/page.js
+++ b/packages/gitbook-core/src/reducers/page.js
@@ -2,17 +2,20 @@ const { Record } = require('immutable');
const ACTION_TYPES = require('../actions/TYPES');
const DEFAULTS = {
- title: '',
- content: '',
- dir: 'ltr',
- depth: 1,
- level: ''
+ title: '',
+ content: '',
+ dir: 'ltr',
+ depth: 1,
+ level: '',
+ previous: null
};
class PageState extends Record(DEFAULTS) {
static create(state) {
return state instanceof PageState ?
- state : new PageState(state);
+ state : new PageState({
+ ...state
+ });
}
}
diff --git a/packages/gitbook/src/browser/render.js b/packages/gitbook/src/browser/render.js
index 64e8947..9338ce2 100644
--- a/packages/gitbook/src/browser/render.js
+++ b/packages/gitbook/src/browser/render.js
@@ -32,7 +32,7 @@ function HTML({head, innerHTML, payload, scripts}) {
HTML.propTypes = {
head: React.PropTypes.object,
innerHTML: React.PropTypes.string,
- payload: React.PropTypes.object,
+ payload: React.PropTypes.string,
scripts: React.PropTypes.arrayOf(React.PropTypes.string)
};