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

add fields for HackMD to Page model

Yuki Takei 7 лет назад
Родитель
Сommit
ee89b0ac9c

+ 2 - 0
lib/models/page.js

@@ -56,6 +56,8 @@ module.exports = function(crowi) {
         return JSON.stringify(data);
         return JSON.stringify(data);
       }
       }
     },
     },
+    pageIdOnHackmd: String,
+    revisionHackmdSynced: { type: ObjectId, ref: 'Revision' },
     createdAt: { type: Date, default: Date.now },
     createdAt: { type: Date, default: Date.now },
     updatedAt: Date
     updatedAt: Date
   }, {
   }, {

+ 16 - 11
lib/routes/page.js

@@ -178,6 +178,8 @@ module.exports = function(crowi, app) {
 
 
       if (portalPage) {
       if (portalPage) {
         renderVars.revision = portalPage.revision;
         renderVars.revision = portalPage.revision;
+        renderVars.revisionHackmdSynced = portalPage.revisionHackmdSynced;
+        renderVars.pageIdOnHackmd = portalPage.pageIdOnHackmd;
         return Revision.findRevisionList(portalPage.path, {});
         return Revision.findRevisionList(portalPage.path, {});
       }
       }
       else {
       else {
@@ -227,25 +229,25 @@ module.exports = function(crowi, app) {
   };
   };
 
 
   actions.pageShowForCrowiPlus = function(req, res) {
   actions.pageShowForCrowiPlus = function(req, res) {
-    var path = getPathFromRequest(req);
+    const path = getPathFromRequest(req);
 
 
-    var limit = 50;
-    var offset = parseInt(req.query.offset)  || 0;
-    var SEENER_THRESHOLD = 10;
+    const limit = 50;
+    const offset = parseInt(req.query.offset)  || 0;
+    const SEENER_THRESHOLD = 10;
 
 
     // index page
     // index page
-    var pagerOptions = {
+    const pagerOptions = {
       offset: offset,
       offset: offset,
       limit: limit
       limit: limit
     };
     };
-    var queryOptions = {
+    const queryOptions = {
       offset: offset,
       offset: offset,
       limit: limit + 1,
       limit: limit + 1,
       isPopulateRevisionBody: Config.isEnabledTimeline(config),
       isPopulateRevisionBody: Config.isEnabledTimeline(config),
       includeDeletedPage: path.startsWith('/trash/'),
       includeDeletedPage: path.startsWith('/trash/'),
     };
     };
 
 
-    var renderVars = {
+    const renderVars = {
       path: path,
       path: path,
       page: null,
       page: null,
       revision: {},
       revision: {},
@@ -254,11 +256,12 @@ module.exports = function(crowi, app) {
       tree: [],
       tree: [],
       pageRelatedGroup: null,
       pageRelatedGroup: null,
       template: null,
       template: null,
+      revisionHackmdSynced: null,
     };
     };
 
 
-    var pageTeamplate = 'customlayout-selector/page';
+    let pageTeamplate = 'customlayout-selector/page';
 
 
-    var isRedirect = false;
+    let isRedirect = false;
     Page.findPage(path, req.user, req.query.revision)
     Page.findPage(path, req.user, req.query.revision)
     .then(function(page) {
     .then(function(page) {
       debug('Page found', page._id, page.path);
       debug('Page found', page._id, page.path);
@@ -276,6 +279,8 @@ module.exports = function(crowi, app) {
         renderVars.path = page.path;
         renderVars.path = page.path;
         renderVars.revision = page.revision;
         renderVars.revision = page.revision;
         renderVars.author = page.revision.author;
         renderVars.author = page.revision.author;
+        renderVars.revisionHackmdSynced = page.revisionHackmdSynced;
+        renderVars.pageIdOnHackmd = page.pageIdOnHackmd;
 
 
         return Revision.findRevisionList(page.path, {})
         return Revision.findRevisionList(page.path, {})
         .then(function(tree) {
         .then(function(tree) {
@@ -290,8 +295,8 @@ module.exports = function(crowi, app) {
           }
           }
         })
         })
         .then(function() {
         .then(function() {
-          var userPage = isUserPage(page.path);
-          var userData = null;
+          const userPage = isUserPage(page.path);
+          let userData = null;
 
 
           if (userPage) {
           if (userPage) {
             // change template
             // change template

+ 2 - 0
lib/views/widget/page_content.html

@@ -5,6 +5,8 @@
   data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
   data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
   data-page-revision-id="{% if revision %}{{ revision._id.toString() }}{% endif %}"
   data-page-revision-id="{% if revision %}{{ revision._id.toString() }}{% endif %}"
   data-page-revision-created="{% if revision %}{{ revision.createdAt|datetz('U') }}{% endif %}"
   data-page-revision-created="{% if revision %}{{ revision.createdAt|datetz('U') }}{% endif %}"
+  data-page-revision-id-hackmd-synced="{% if revisionHackmdSynced %}{{ revisionHackmdSynced.toString() }}{% endif %}"
+  data-page-id-on-hackmd="{% if pageIdOnHackmd %}{{ pageIdOnHackmd.toString() }}{% endif %}"
   data-page-is-seen="{% if page and page.isSeenUser(user) %}1{% else %}0{% endif %}"
   data-page-is-seen="{% if page and page.isSeenUser(user) %}1{% else %}0{% endif %}"
   >
   >
 
 

+ 5 - 0
resource/js/app.js

@@ -44,6 +44,8 @@ const mainContent = document.querySelector('#content-main');
 let pageId = null;
 let pageId = null;
 let pageRevisionId = null;
 let pageRevisionId = null;
 let pageRevisionCreatedAt = null;
 let pageRevisionCreatedAt = null;
+let pageRevisionIdHackmdSynced = null;
+let pageIdOnHackmd = null;
 let pagePath;
 let pagePath;
 let pageContent = '';
 let pageContent = '';
 let markdown = '';
 let markdown = '';
@@ -52,6 +54,8 @@ if (mainContent !== null) {
   pageId = mainContent.getAttribute('data-page-id');
   pageId = mainContent.getAttribute('data-page-id');
   pageRevisionId = mainContent.getAttribute('data-page-revision-id');
   pageRevisionId = mainContent.getAttribute('data-page-revision-id');
   pageRevisionCreatedAt = +mainContent.getAttribute('data-page-revision-created');
   pageRevisionCreatedAt = +mainContent.getAttribute('data-page-revision-created');
+  pageRevisionIdHackmdSynced = mainContent.getAttribute('data-page-revision-id-hackmd-synced') || null;
+  pageIdOnHackmd = mainContent.getAttribute('data-page-id-on-hackmd') || null;
   pagePath = mainContent.attributes['data-path'].value;
   pagePath = mainContent.attributes['data-path'].value;
   const rawText = document.getElementById('raw-text-original');
   const rawText = document.getElementById('raw-text-original');
   if (rawText) {
   if (rawText) {
@@ -248,6 +252,7 @@ if (pageEditorWithHackmdElem) {
   pageEditor = ReactDOM.render(
   pageEditor = ReactDOM.render(
     <PageEditorWithHackmd crowi={crowi}
     <PageEditorWithHackmd crowi={crowi}
         pageId={pageId} revisionId={pageRevisionId}
         pageId={pageId} revisionId={pageRevisionId}
+        revisionIdHackmdSynced={pageRevisionIdHackmdSynced} pageIdOnHackmd={pageIdOnHackmd}
         markdown={markdown}
         markdown={markdown}
         onSaveSuccess={onSaveSuccess} />,
         onSaveSuccess={onSaveSuccess} />,
     pageEditorWithHackmdElem
     pageEditorWithHackmdElem

+ 4 - 6
resource/js/components/PageEditorWithHackmd.jsx

@@ -23,14 +23,14 @@ export default class PageEditorWithHackmd extends React.PureComponent {
     const envVars = this.props.crowi.config.env;
     const envVars = this.props.crowi.config.env;
     const hackMdUri = envVars.HACKMD_URI;
     const hackMdUri = envVars.HACKMD_URI;
 
 
-    if (hackMdUri == null || this.props.pageIdOnHackMD == null) {
+    if (hackMdUri == null || this.props.pageIdOnHackmd == null) {
       return <React.Fragment></React.Fragment>;
       return <React.Fragment></React.Fragment>;
     }
     }
 
 
     return <HackmdEditor
     return <HackmdEditor
         markdown={this.props.markdown}
         markdown={this.props.markdown}
         hackMdUri={hackMdUri}
         hackMdUri={hackMdUri}
-        pageIdOnHackMD={this.props.pageIdOnHackMD}
+        pageIdOnHackmd={this.props.pageIdOnHackmd}
       >
       >
       </HackmdEditor>;
       </HackmdEditor>;
   }
   }
@@ -41,8 +41,6 @@ PageEditorWithHackmd.propTypes = {
   markdown: PropTypes.string.isRequired,
   markdown: PropTypes.string.isRequired,
   pageId: PropTypes.string,
   pageId: PropTypes.string,
   revisionId: PropTypes.string,
   revisionId: PropTypes.string,
-  pageIdOnHackMD: PropTypes.string,
-};
-PageEditorWithHackmd.defaultProps = {
-  pageIdOnHackMD: 'bj2uX22SQQWGdrYqgGg6EQ'  // Dummy data
+  revisionIdHackmdSynced: PropTypes.string,
+  pageIdOnHackmd: PropTypes.string,
 };
 };

+ 2 - 2
resource/js/components/PageEditorWithHackmd/HackmdEditor.jsx

@@ -24,7 +24,7 @@ export default class HackmdEditor extends React.PureComponent {
   }
   }
 
 
   render() {
   render() {
-    const src = `${this.props.hackMdUri}/${this.props.pageIdOnHackMD}`;
+    const src = `${this.props.hackMdUri}/${this.props.pageIdOnHackmd}`;
     return (
     return (
       <iframe id='iframe-hackmd'
       <iframe id='iframe-hackmd'
         ref='iframe'
         ref='iframe'
@@ -39,5 +39,5 @@ export default class HackmdEditor extends React.PureComponent {
 HackmdEditor.propTypes = {
 HackmdEditor.propTypes = {
   markdown: PropTypes.string.isRequired,
   markdown: PropTypes.string.isRequired,
   hackMdUri: PropTypes.string.isRequired,
   hackMdUri: PropTypes.string.isRequired,
-  pageIdOnHackMD: PropTypes.string.isRequired,
+  pageIdOnHackmd: PropTypes.string.isRequired,
 };
 };