Explorar o código

Merge pull request #4765 from weseek/feat/impl-ui-private-legacy-pages

imprv: Update code for mongoose 6.0.x
Yuki Takei %!s(int64=4) %!d(string=hai) anos
pai
achega
2e43e9f80b

+ 1 - 1
packages/app/src/components/Sidebar/PageTree/PrivateLegacyPages.tsx

@@ -6,7 +6,7 @@ const PrivateLegacyPages: FC = memo(() => {
 
   return (
     <div className="grw-prvt-legacy-pages p-3">
-      <a href="#" className="h5">
+      <a href="/private-legacy-pages?q=[nq:PrivateLegacyPages]" className="h5">
         <i className="icon-drawer mr-2"></i> PrivateLegacyPages
       </a>
     </div>

+ 2 - 1
packages/app/src/interfaces/user-ui-settings.ts

@@ -1,9 +1,10 @@
 import { IUser } from './user';
 
 import { SidebarContentsType } from './ui';
+import { Ref } from './common';
 
 export interface IUserUISettings {
-  userId: IUser | string;
+  user: Ref<IUser> | null;
   isSidebarCollapsed: boolean,
   currentSidebarContents: SidebarContentsType,
   currentProductNavWidth: number,

+ 2 - 2
packages/app/src/server/models/page.ts

@@ -82,8 +82,8 @@ const schema = new Schema<PageDocument, PageModel>({
   pageIdOnHackmd: { type: String },
   revisionHackmdSynced: { type: ObjectId, ref: 'Revision' }, // the revision that is synced to HackMD
   hasDraftOnHackmd: { type: Boolean }, // set true if revision and revisionHackmdSynced are same but HackMD document has modified
-  createdAt: { type: Date, default: Date.now },
-  updatedAt: { type: Date, default: Date.now },
+  createdAt: { type: Date, default: new Date() },
+  updatedAt: { type: Date, default: new Date() },
   deleteUser: { type: ObjectId, ref: 'User' },
   deletedAt: { type: Date },
 }, {

+ 4 - 0
packages/app/src/server/routes/index.js

@@ -3,6 +3,7 @@ import express from 'express';
 import injectResetOrderByTokenMiddleware from '../middlewares/inject-reset-order-by-token-middleware';
 
 import * as forgotPassword from './forgot-password';
+import * as privateLegacyPages from './private-legacy-pages';
 
 const multer = require('multer');
 const autoReap = require('multer-autoreap');
@@ -191,6 +192,9 @@ module.exports = function(crowi, app) {
     .get('/:token', apiLimiter, injectResetOrderByTokenMiddleware, forgotPassword.resetPassword)
     .use(forgotPassword.handleHttpErrosMiddleware));
 
+  app.use('/private-legacy-pages', express.Router()
+    .get('/', privateLegacyPages.renderPrivateLegacyPages));
+
   app.get('/share/:linkId', page.showSharedPage);
 
   app.get('/:id([0-9a-z]{24})'       , loginRequired , page.showPage);

+ 1 - 1
packages/app/src/server/routes/page.js

@@ -318,7 +318,7 @@ module.exports = function(crowi, app) {
       // add scope variables by ancestor page
       const ancestor = await Page.findAncestorByPathAndViewer(path, req.user);
       if (ancestor != null) {
-        await ancestor.populate('grantedGroup').execPopulate();
+        await ancestor.populate('grantedGroup');
         addRenderVarsForScope(renderVars, ancestor);
       }
     }

+ 7 - 0
packages/app/src/server/routes/private-legacy-pages.ts

@@ -0,0 +1,7 @@
+import {
+  Request, Response,
+} from 'express';
+
+export const renderPrivateLegacyPages = (req: Request, res: Response): void => {
+  return res.render('private-legacy-pages');
+};

+ 1 - 1
packages/app/src/server/routes/search.js

@@ -139,7 +139,7 @@ module.exports = function(crowi, app) {
 
     const result = {};
     try {
-      const esResult = await searchService.searchKeyword(keyword, user, userGroups, searchOpts);
+      const esResult = await searchService.searchKeyword(keyword, user, userGroups, searchOpts); // TODO: separate when not full-text search
 
       // create score map for sorting
       // key: id , value: score

+ 1 - 1
packages/app/src/server/service/page.js

@@ -911,7 +911,7 @@ class PageService {
       baseAggregation = baseAggregation.limit(Math.floor(total * 0.3));
     }
 
-    const pagesStream = await baseAggregation.cursor({ batchSize: BATCH_SIZE }).exec();
+    const pagesStream = await baseAggregation.cursor({ batchSize: BATCH_SIZE });
 
     // use batch stream
     const batchStream = createBatchStream(BATCH_SIZE);

+ 4 - 7
packages/app/src/server/service/search.ts

@@ -1,9 +1,8 @@
-import mongoose from 'mongoose';
 import RE2 from 're2';
 
 import { SearchDelegatorName } from '~/interfaces/named-query';
 
-import { NamedQueryModel } from '../models/named-query';
+import NamedQuery from '../models/named-query';
 import {
   SearchDelegator, SearchQueryParser, SearchResolver, ParsedQuery, Result, MetaData, SearchableData, QueryTerms,
 } from '../interfaces/search';
@@ -106,9 +105,9 @@ class SearchService implements SearchQueryParser, SearchResolver {
     tagEvent.on('update', this.fullTextSearchDelegator.syncTagChanged.bind(this.fullTextSearchDelegator));
 
     const commentEvent = this.crowi.event('comment');
-    commentEvent.on('create', this.delegator.syncCommentChanged.bind(this.delegator));
-    commentEvent.on('update', this.delegator.syncCommentChanged.bind(this.delegator));
-    commentEvent.on('delete', this.delegator.syncCommentChanged.bind(this.delegator));
+    commentEvent.on('create', this.fullTextSearchDelegator.syncCommentChanged.bind(this.fullTextSearchDelegator));
+    commentEvent.on('update', this.fullTextSearchDelegator.syncCommentChanged.bind(this.fullTextSearchDelegator));
+    commentEvent.on('delete', this.fullTextSearchDelegator.syncCommentChanged.bind(this.fullTextSearchDelegator));
   }
 
   resetErrorStatus() {
@@ -181,8 +180,6 @@ class SearchService implements SearchQueryParser, SearchResolver {
     }
 
     // when Named Query
-    const NamedQuery = mongoose.model('NamedQuery') as NamedQueryModel;
-
     const name = queryString.replace(replaceRegexp, '');
     const nq = await NamedQuery.findOne({ name });
 

+ 16 - 0
packages/app/src/server/views/private-legacy-pages.html

@@ -0,0 +1,16 @@
+{% extends 'layout/layout.html' %}
+
+{% block html_additional_headers %}
+  {% parent %}
+  {{ cdnScriptTag('highlight-addons') }}
+  {{ cdnScriptTag('drawio-viewer') }}
+{% endblock %}
+
+{% block html_base_attr %}
+  data-spy="scroll"
+  data-target="#search-result-list"
+{% endblock %}
+
+{% block layout_main %}
+<p>This page is not implemented.</p>
+{% endblock %} {# layout_main #}