Просмотр исходного кода

BugFix: update `$('#page-form [name="pageForm[currentRevision]"]')` after save on PageEditor

Yuki Takei 8 лет назад
Родитель
Сommit
4fb9843ca5
3 измененных файлов с 23 добавлено и 1 удалено
  1. 7 1
      resource/js/app.js
  2. 13 0
      resource/js/components/PageEditor.js
  3. 3 0
      resource/js/legacy/crowi.js

+ 7 - 1
resource/js/app.js

@@ -63,6 +63,11 @@ if (isEnabledPlugins) {
   crowiPlugin.installAll(crowi, crowiRenderer);
 }
 
+// for PageEditor
+const onSaveSuccess = function(page) {
+  crowi.getCrowiForJquery().updateCurrentRevision(page.revision._id);
+}
+
 /**
  * define components
  *  key: id of element
@@ -71,7 +76,8 @@ if (isEnabledPlugins) {
 const componentMappings = {
   'search-top': <HeaderSearchBox crowi={crowi} />,
   'search-page': <SearchPage crowi={crowi} />,
-  'page-editor': <PageEditor crowi={crowi} pageId={pageId} revisionId={pageRevisionId} pagePath={pagePath} markdown={entities.decodeHTML(pageContent)} />,
+  'page-editor': <PageEditor crowi={crowi} pageId={pageId} revisionId={pageRevisionId} pagePath={pagePath} markdown={entities.decodeHTML(pageContent)}
+                              onSaveSuccess={onSaveSuccess}/>,
   'page-list-search': <PageListSearch crowi={crowi} />,
   'page-comments-list': <PageComments pageId={pageId} revisionId={pageRevisionId} revisionCreatedAt= {pageRevisionCreatedAt} crowi={crowi} />,
   'page-attachment': <PageAttachment pageId={pageId} pageContent={pageContent} crowi={crowi} />,

+ 13 - 0
resource/js/components/PageEditor.js

@@ -111,6 +111,9 @@ export default class PageEditor extends React.Component {
 
         // clear draft
         this.clearDraft();
+
+        // dispatch onSaveSuccess
+        this.dispatchSaveSuccess(page);
       })
       .catch((error) => {
         console.error(error);
@@ -171,6 +174,15 @@ export default class PageEditor extends React.Component {
     this.props.crowi.clearDraft(this.props.pagePath);
   }
 
+  /**
+   * dispatch onSaveSuccess event
+   */
+  dispatchSaveSuccess(page) {
+    if (this.props.onSaveSuccess != null) {
+      this.props.onSaveSuccess(page);
+    }
+  }
+
   renderPreview() {
     const config = this.props.crowi.config;
 
@@ -236,4 +248,5 @@ PageEditor.propTypes = {
   pageId: PropTypes.string,
   revisionId: PropTypes.string,
   pagePath: PropTypes.string,
+  onSaveSuccess: PropTypes.func,
 };

+ 3 - 0
resource/js/legacy/crowi.js

@@ -176,6 +176,9 @@ Crowi.modifyScrollTop = function() {
   }, timeout);
 }
 
+Crowi.updateCurrentRevision = function(revisionId) {
+  $('#page-form [name="pageForm[currentRevision]"]').val(revisionId);
+}
 
 $(function() {
   var config = JSON.parse(document.getElementById('crowi-context-hydrate').textContent || '{}');