mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-23 15:19:41 +02:00
Beautiful urls (#18)
* Added uri property to Page model * Added aliases collection * Added routing form aliases * Fixed redirect after page creation * Added abiltity to support few pages with same title * Added ability to change uri manually * Changed hash function * Changed uri parsing * Removed pages controller promise * Modified page's tests * Added tests for alias model * Added tests for aliases * Escaping special characters * Added missed files * Fixed bugs related to translation * Fixed parent page link * Added server validation for uri * Changed css properties order * Made uri property of page be optional * Prevented alias creation from empty uri * Moved alias types to model
This commit is contained in:
parent
ed69336481
commit
d872e78339
28 changed files with 807 additions and 45 deletions
|
@ -29,6 +29,7 @@ export default class Writing {
|
|||
saveButton: null,
|
||||
parentIdSelector: null,
|
||||
putAboveIdSelector: null,
|
||||
uriInput: null
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -63,6 +64,7 @@ export default class Writing {
|
|||
});
|
||||
this.nodes.parentIdSelector = moduleEl.querySelector('[name="parent"]');
|
||||
this.nodes.putAboveIdSelector = moduleEl.querySelector('[name="above"]');
|
||||
this.nodes.uriInput = moduleEl.querySelector('[name="uri-input"]');
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -86,6 +88,15 @@ export default class Writing {
|
|||
const editorData = await this.editor.save();
|
||||
const firstBlock = editorData.blocks.length ? editorData.blocks[0] : null;
|
||||
const title = firstBlock && firstBlock.type === 'header' ? firstBlock.data.text : null;
|
||||
let uri = '';
|
||||
|
||||
if (this.nodes.uriInput && this.nodes.uriInput.value) {
|
||||
if (this.nodes.uriInput.value.match(/^[a-z0-9'-]+$/i)) {
|
||||
uri = this.nodes.uriInput.value;
|
||||
} else {
|
||||
throw new Error('Uri has unexpected characters');
|
||||
}
|
||||
}
|
||||
|
||||
if (!title) {
|
||||
throw new Error('Entry should start with Header');
|
||||
|
@ -100,6 +111,7 @@ export default class Writing {
|
|||
return {
|
||||
parent: this.nodes.parentIdSelector.value,
|
||||
putAbovePageId: putAbovePageId,
|
||||
uri: uri,
|
||||
body: editorData
|
||||
};
|
||||
}
|
||||
|
@ -124,7 +136,7 @@ export default class Writing {
|
|||
response = await response.json();
|
||||
|
||||
if (response.success) {
|
||||
document.location = '/page/' + response.result._id;
|
||||
window.location.pathname = response.result.uri ? response.result.uri : '/page/' + response.result._id;
|
||||
} else {
|
||||
alert(response.error);
|
||||
console.log('Validation failed:', response.error);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue