codeEditor: function()

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}
      />}
    />;
  },