in app/addons/documents/routes-doc-editor.js [73:113]
codeEditor: function (databaseName, docId, options) {
const urlParams = app.getParams(options);
const backLink = FauxtonAPI.urls('allDocs', 'app', FauxtonAPI.url.encode(databaseName));
const crumbs = [
{ name: databaseName, link: backLink },
{ name: docId ? docId : 'New Document' }
];
this.database = new Databases.Model({ id: databaseName });
if (docId) {
this.doc = new Documents.Doc({ _id: docId }, { database: this.database, fetchConflicts: true });
} else {
const partitionKey = urlParams ? urlParams.partitionKey : undefined;
this.doc = new Documents.NewDoc(null, { database: this.database, partitionKey });
}
DatabaseActions.fetchSelectedDatabaseInfo(databaseName);
Actions.dispatchInitDocEditor({ doc: this.doc, database: this.database });
let previousUrl = undefined;
const previousValidUrls = FauxtonAPI.router.lastPages.filter(url => {
// make sure it doesn't redirect back to the code editor when cloning docs
return url.includes('/_all_docs') || url.match(/_design\/(\S)*\/_/) || url.includes('/_find');
});
if (previousValidUrls.length > 0) {
previousUrl = previousValidUrls[previousValidUrls.length - 1];
}
return <DocEditorLayout
crumbs={crumbs}
endpoint={this.doc.url('apiurl')}
docURL={this.doc.documentation()}
partitionKey={urlParams.partitionKey}
component={<DocEditorContainer
database={this.database}
isNewDoc={docId ? false : true}
previousUrl={previousUrl}
/>}
/>;
},