Explorar o código

add agent-for-hackmd.js

Yuki Takei %!s(int64=7) %!d(string=hai) anos
pai
achega
cf5390132b
Modificáronse 4 ficheiros con 33 adicións e 2 borrados
  1. 3 1
      config/webpack.common.js
  2. 25 0
      lib/routes/hackmd.js
  3. 4 1
      lib/routes/index.js
  4. 1 0
      resource/js/agent-for-hackmd.js

+ 3 - 1
config/webpack.common.js

@@ -27,6 +27,7 @@ module.exports = (options) => {
       'js/legacy-presentation':   './resource/js/legacy/crowi-presentation',
       'js/legacy-presentation':   './resource/js/legacy/crowi-presentation',
       'js/plugin':                './resource/js/plugin',
       'js/plugin':                './resource/js/plugin',
       'js/ie11-polyfill':         './resource/js/ie11-polyfill',
       'js/ie11-polyfill':         './resource/js/ie11-polyfill',
+      'js/agent-for-hackmd':      './resource/js/agent-for-hackmd',
       // styles
       // styles
       'styles/style':                './resource/styles/scss/style.scss',
       'styles/style':                './resource/styles/scss/style.scss',
       'styles/style-presentation':   './resource/styles/scss/style-presentation.scss',
       'styles/style-presentation':   './resource/styles/scss/style-presentation.scss',
@@ -148,7 +149,8 @@ module.exports = (options) => {
           vendors: {
           vendors: {
             test: /node_modules/,
             test: /node_modules/,
             chunks: (chunk) => {
             chunks: (chunk) => {
-              return chunk.name != null && !chunk.name.match(/legacy-presentation|ie11-polyfill/);
+              // ignore patterns
+              return chunk.name != null && !chunk.name.match(/legacy-presentation|ie11-polyfill|agent-for-hackmd/);
             },
             },
             name: 'js/vendors',
             name: 'js/vendors',
             // minChunks: 2,
             // minChunks: 2,

+ 25 - 0
lib/routes/hackmd.js

@@ -0,0 +1,25 @@
+module.exports = function(crowi, app) {
+  const path = require('path');
+  const fs = require('graceful-fs');
+
+  // load GROWI agent script for HackMD
+  const manifest = require(path.join(crowi.publicDir, 'manifest.json'));
+  const agentScriptPath = path.join(crowi.publicDir, manifest['js/agent-for-hackmd.js']);
+  const agentScriptContent = fs.readFileSync(agentScriptPath, 'utf8').toString();
+
+  /**
+   * loadAgent action
+   * This should be access from HackMD and send agent script
+   *
+   * @param {object} req
+   * @param {object} res
+   */
+  const loadAgent = function(req, res) {
+    res.set('Content-Type', 'application/javascript');
+    res.send(agentScriptContent);
+  };
+
+  return {
+    loadAgent,
+  };
+};

+ 4 - 1
lib/routes/index.js

@@ -1,5 +1,5 @@
 module.exports = function(crowi, app) {
 module.exports = function(crowi, app) {
-  var middleware = require('../util/middlewares')
+  const middleware = require('../util/middlewares')
     , multer    = require('multer')
     , multer    = require('multer')
     , uploads   = multer({dest: crowi.tmpDir + 'uploads'})
     , uploads   = multer({dest: crowi.tmpDir + 'uploads'})
     , form      = require('../form')
     , form      = require('../form')
@@ -16,6 +16,7 @@ module.exports = function(crowi, app) {
     , bookmark  = require('./bookmark')(crowi, app)
     , bookmark  = require('./bookmark')(crowi, app)
     , revision  = require('./revision')(crowi, app)
     , revision  = require('./revision')(crowi, app)
     , search    = require('./search')(crowi, app)
     , search    = require('./search')(crowi, app)
+    , hackmd    = require('./hackmd')(crowi, app)
     , loginRequired = middleware.loginRequired
     , loginRequired = middleware.loginRequired
     , accessTokenParser = middleware.accessTokenParser(crowi, app)
     , accessTokenParser = middleware.accessTokenParser(crowi, app)
     , csrf      = middleware.csrfVerify(crowi, app)
     , csrf      = middleware.csrfVerify(crowi, app)
@@ -199,6 +200,8 @@ module.exports = function(crowi, app) {
   app.get('/trash/$'                 , loginRequired(crowi, app, false) , page.trashPageListShowWrapper);
   app.get('/trash/$'                 , loginRequired(crowi, app, false) , page.trashPageListShowWrapper);
   app.get('/trash/*/$'               , loginRequired(crowi, app, false) , page.deletedPageListShowWrapper);
   app.get('/trash/*/$'               , loginRequired(crowi, app, false) , page.deletedPageListShowWrapper);
 
 
+  app.get('/_hackmd/load-agent'      , hackmd.loadAgent);
+
   app.get('/*/$'                   , loginRequired(crowi, app, false) , page.pageListShowWrapper);
   app.get('/*/$'                   , loginRequired(crowi, app, false) , page.pageListShowWrapper);
   app.get('/*'                     , loginRequired(crowi, app, false) , page.pageShowWrapper);
   app.get('/*'                     , loginRequired(crowi, app, false) , page.pageShowWrapper);
 };
 };

+ 1 - 0
resource/js/agent-for-hackmd.js

@@ -0,0 +1 @@
+console.log('GROWI agent for HackMD loaded.');