Browse Source

Merge pull request #7192 from weseek/support/uninstall-swig-template

support: Uninstall swig-template
Yuki Takei 3 years ago
parent
commit
2730221366
82 changed files with 118 additions and 2254 deletions
  1. 1 3
      packages/app/package.json
  2. 6 6
      packages/app/resource/locales/en_US/admin/userInvitation.txt
  3. 8 8
      packages/app/resource/locales/en_US/admin/userWaitingActivation.txt
  4. 3 3
      packages/app/resource/locales/en_US/notifications/comment.txt
  5. 4 4
      packages/app/resource/locales/en_US/notifications/notActiveUser.txt
  6. 2 2
      packages/app/resource/locales/en_US/notifications/pageCreate.txt
  7. 2 2
      packages/app/resource/locales/en_US/notifications/pageDelete.txt
  8. 2 2
      packages/app/resource/locales/en_US/notifications/pageEdit.txt
  9. 2 2
      packages/app/resource/locales/en_US/notifications/pageLike.txt
  10. 2 2
      packages/app/resource/locales/en_US/notifications/pageMove.txt
  11. 4 4
      packages/app/resource/locales/en_US/notifications/passwordReset.txt
  12. 1 1
      packages/app/resource/locales/en_US/notifications/passwordResetSuccessful.txt
  13. 4 4
      packages/app/resource/locales/en_US/notifications/userActivation.txt
  14. 6 6
      packages/app/resource/locales/ja_JP/admin/userInvitation.txt
  15. 8 8
      packages/app/resource/locales/ja_JP/admin/userWaitingActivation.txt
  16. 4 4
      packages/app/resource/locales/ja_JP/notifications/notActiveUser.txt
  17. 4 4
      packages/app/resource/locales/ja_JP/notifications/passwordReset.txt
  18. 1 1
      packages/app/resource/locales/ja_JP/notifications/passwordResetSuccessful.txt
  19. 4 4
      packages/app/resource/locales/ja_JP/notifications/userActivation.txt
  20. 6 6
      packages/app/resource/locales/zh_CN/admin/userInvitation.txt
  21. 8 8
      packages/app/resource/locales/zh_CN/admin/userWaitingActivation.txt
  22. 3 3
      packages/app/resource/locales/zh_CN/notifications/comment.txt
  23. 4 4
      packages/app/resource/locales/zh_CN/notifications/notActiveUser.txt
  24. 2 2
      packages/app/resource/locales/zh_CN/notifications/pageCreate.txt
  25. 2 2
      packages/app/resource/locales/zh_CN/notifications/pageDelete.txt
  26. 2 2
      packages/app/resource/locales/zh_CN/notifications/pageEdit.txt
  27. 2 2
      packages/app/resource/locales/zh_CN/notifications/pageLike.txt
  28. 2 2
      packages/app/resource/locales/zh_CN/notifications/pageMove.txt
  29. 3 3
      packages/app/resource/locales/zh_CN/notifications/passwordReset.txt
  30. 1 1
      packages/app/resource/locales/zh_CN/notifications/passwordResetSuccessful.txt
  31. 4 4
      packages/app/resource/locales/zh_CN/notifications/userActivation.txt
  32. 0 2
      packages/app/src/server/crowi/dev.js
  33. 0 12
      packages/app/src/server/crowi/express-init.js
  34. 0 3
      packages/app/src/server/routes/hackmd.js
  35. 1 1
      packages/app/src/server/service/import.js
  36. 8 2
      packages/app/src/server/service/mail.ts
  37. 0 133
      packages/app/src/server/util/middlewares.js
  38. 0 208
      packages/app/src/server/util/swigFunctions.js
  39. 0 1
      packages/app/src/server/views/500.html
  40. 0 45
      packages/app/src/server/views/forgot-password.html
  41. 0 60
      packages/app/src/server/views/forgot-password/error.html
  42. 0 95
      packages/app/src/server/views/installer.html
  43. 0 150
      packages/app/src/server/views/invited.html
  44. 0 43
      packages/app/src/server/views/layout-growi/base/layout.html
  45. 0 24
      packages/app/src/server/views/layout-growi/expired_shared_page.html
  46. 0 25
      packages/app/src/server/views/layout-growi/forbidden.html
  47. 0 30
      packages/app/src/server/views/layout-growi/identical-path-page.html
  48. 0 20
      packages/app/src/server/views/layout-growi/not_creatable.html
  49. 0 32
      packages/app/src/server/views/layout-growi/not_found.html
  50. 0 16
      packages/app/src/server/views/layout-growi/not_found_shared_page.html
  51. 0 35
      packages/app/src/server/views/layout-growi/page.html
  52. 0 31
      packages/app/src/server/views/layout-growi/page_list.html
  53. 0 44
      packages/app/src/server/views/layout-growi/shared_page.html
  54. 0 43
      packages/app/src/server/views/layout-growi/user_page.html
  55. 0 155
      packages/app/src/server/views/layout/layout.html
  56. 0 171
      packages/app/src/server/views/login.html
  57. 0 40
      packages/app/src/server/views/maintenance-mode.html
  58. 0 21
      packages/app/src/server/views/me/all-in-app-notifications.html
  59. 0 21
      packages/app/src/server/views/me/drafts.html
  60. 0 21
      packages/app/src/server/views/me/index.html
  61. 0 64
      packages/app/src/server/views/page_presentation.html
  62. 0 25
      packages/app/src/server/views/private-legacy-pages.html
  63. 0 24
      packages/app/src/server/views/redoc.html
  64. 0 48
      packages/app/src/server/views/reset-password.html
  65. 0 25
      packages/app/src/server/views/search.html
  66. 0 16
      packages/app/src/server/views/tags.html
  67. 0 52
      packages/app/src/server/views/user-activation.html
  68. 0 0
      packages/app/src/server/views/widget/alert_breaking_changes.html
  69. 0 6
      packages/app/src/server/views/widget/alert_siteurl_undefined.html
  70. 0 1
      packages/app/src/server/views/widget/header.html
  71. 0 16
      packages/app/src/server/views/widget/headers/favicon.html
  72. 0 21
      packages/app/src/server/views/widget/headers/mathjax.html
  73. 0 7
      packages/app/src/server/views/widget/headers/scripts-for-dev.html
  74. 0 8
      packages/app/src/server/views/widget/headers/styles-for-app.html
  75. 0 5
      packages/app/src/server/views/widget/headers/styles-theme.html
  76. 0 6
      packages/app/src/server/views/widget/logo.html
  77. 0 16
      packages/app/src/server/views/widget/not_creatable_content.html
  78. 0 35
      packages/app/src/server/views/widget/not_found_content.html
  79. 0 69
      packages/app/src/server/views/widget/page_alerts.html
  80. 0 49
      packages/app/src/server/views/widget/page_content.html
  81. 0 65
      packages/app/src/server/views/widget/page_list.html
  82. 2 103
      yarn.lock

+ 1 - 3
packages/app/package.json

@@ -9,7 +9,7 @@
     "build:client": "yarn next build",
     "build:client": "yarn next build",
     "prebuild:client": "tsc -p tsconfig.build.next.config.json",
     "prebuild:client": "tsc -p tsconfig.build.next.config.json",
     "build:server": "yarn cross-env NODE_ENV=production tsc -p tsconfig.build.server.json && tsc-alias -p tsconfig.build.server-tsc-alias.json",
     "build:server": "yarn cross-env NODE_ENV=production tsc -p tsconfig.build.server.json && tsc-alias -p tsconfig.build.server-tsc-alias.json",
-    "postbuild:server": "npx -y shx echo \"Listing files under transpiled\" && npx -y shx ls transpiled && npx -y shx mv transpiled/src dist && npx -y shx cp -r transpiled/config/* config && npx -y shx cp -r src/server/views dist/server/ && npx -y shx rm -rf transpiled",
+    "postbuild:server": "npx -y shx echo \"Listing files under transpiled\" && npx -y shx ls transpiled && npx -y shx mv transpiled/src dist && npx -y shx cp -r transpiled/config/* config && npx -y shx rm -rf transpiled",
     "clean": "npx -y shx rm -rf dist transpiled",
     "clean": "npx -y shx rm -rf dist transpiled",
     "prebuild": "yarn cross-env NODE_ENV=production run-p clean resources:*",
     "prebuild": "yarn cross-env NODE_ENV=production run-p clean resources:*",
     "server": "yarn cross-env NODE_ENV=production node -r dotenv-flow/config dist/server/app.js",
     "server": "yarn cross-env NODE_ENV=production node -r dotenv-flow/config dist/server/app.js",
@@ -110,7 +110,6 @@
     "express-mongo-sanitize": "^2.1.0",
     "express-mongo-sanitize": "^2.1.0",
     "express-session": "^1.16.1",
     "express-session": "^1.16.1",
     "express-validator": "^6.14.0",
     "express-validator": "^6.14.0",
-    "express-webpack-assets": "^0.1.0",
     "extensible-custom-error": "^0.0.7",
     "extensible-custom-error": "^0.0.7",
     "graceful-fs": "^4.1.11",
     "graceful-fs": "^4.1.11",
     "hast-util-select": "^5.0.2",
     "hast-util-select": "^5.0.2",
@@ -182,7 +181,6 @@
     "string-width": "=4.2.2",
     "string-width": "=4.2.2",
     "superjson": "^1.9.1",
     "superjson": "^1.9.1",
     "swagger-jsdoc": "^6.1.0",
     "swagger-jsdoc": "^6.1.0",
-    "swig-templates": "^2.0.2",
     "swr": "^1.3.0",
     "swr": "^1.3.0",
     "throttle-debounce": "^3.0.1",
     "throttle-debounce": "^3.0.1",
     "toastr": "^2.1.2",
     "toastr": "^2.1.2",

+ 6 - 6
packages/app/resource/locales/en_US/admin/userInvitation.txt

@@ -1,14 +1,14 @@
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
 You are invited to our Wiki, you can log in with following account:
 You are invited to our Wiki, you can log in with following account:
 
 
-Email: {{ email }}
-Password: {{ password }}
+Email: <%- email -%>
+Password: <%- password -%>
 (This password was auto generated. Update required at the first time you logging in)
 (This password was auto generated. Update required at the first time you logging in)
 
 
 We are waiting for you!
 We are waiting for you!
-{{ url }}
+<%- url -%>
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>

+ 8 - 8
packages/app/resource/locales/en_US/admin/userWaitingActivation.txt

@@ -1,21 +1,21 @@
-Hi, {{ adminUser.name }}
+Hi, <%- adminUser.name -%>
 
 
-A user registered to {{ appTitle }}.
+A user registered to <%- appTitle -%>.
 
 
 
 
 ====
 ====
 Created user:
 Created user:
 
 
-Name: {{ createdUser.name }}
-User Name: {{ createdUser.username }}
-Email: {{ createdUser.email }}
+Name: <%- createdUser.name -%>
+User Name: <%- createdUser.username -%>
+Email: <%- createdUser.email -%>
 ====
 ====
 
 
 Please do some action with following URL:
 Please do some action with following URL:
-{{ url }}/admin/users
+<%- url -%>/admin/users
 
 
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>
 
 

+ 3 - 3
packages/app/resource/locales/en_US/notifications/comment.txt

@@ -1,9 +1,9 @@
-{{ username }} commented on {{ path }}.
+<%- username }} commented on {{ path -%>.
 
 
 ----------------------
 ----------------------
 
 
-{{ comment }}
+<%- comment -%>
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 4 - 4
packages/app/resource/locales/en_US/notifications/notActiveUser.txt

@@ -1,13 +1,13 @@
 Password Reset
 Password Reset
 
 
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
-A request has been received to change the password from {{ appTitle }}.
+A request has been received to change the password from <%- appTitle -%>.
 However, this email is not registerd. Please try again with different email.
 However, this email is not registerd. Please try again with different email.
 
 
 If you did not request a password reset, you can safely ignore this email.
 If you did not request a password reset, you can safely ignore this email.
 
 
 -------------------------------------------------------------------------
 -------------------------------------------------------------------------
 
 
-GROWI: {{ appTitle }}
-URL: {{ url }}
+GROWI: <%- appTitle -%>
+URL: <%- url -%>

+ 2 - 2
packages/app/resource/locales/en_US/notifications/pageCreate.txt

@@ -1,5 +1,5 @@
-{{ username }} created a new page under {{ path }}.
+<%- username -%> created a new page under <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/en_US/notifications/pageDelete.txt

@@ -1,5 +1,5 @@
-{{ username }} deleted the page  {{ path }}.
+<%- username -%> deleted the page  <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/en_US/notifications/pageEdit.txt

@@ -1,5 +1,5 @@
-{{ username }} edited the page {{ path }}.
+<%- username -%> edited the page <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/en_US/notifications/pageLike.txt

@@ -1,5 +1,5 @@
-{{ username }} liked the page {{ path }}.
+<%- username -%> liked the page <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/en_US/notifications/pageMove.txt

@@ -1,5 +1,5 @@
-{{ username }} renamed the page {{ oldPath }} to {{ newPath }}.
+<%- username -%> renamed the page <%- oldPath -%> to <%- newPath -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 4 - 4
packages/app/resource/locales/en_US/notifications/passwordReset.txt

@@ -1,12 +1,12 @@
 Password Reset
 Password Reset
 
 
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
-A request has been received to change the password your GROWI ({{ appTitle }}) account.
+A request has been received to change the password your GROWI (<%- appTitle -%>) account.
 To reset your password, click on the link below.
 To reset your password, click on the link below.
 
 
-{{ url }}
+<%- url -%>
 
 
-This link will expire in 10 minutes at  {{ expiredAt }}.
+This link will expire in 10 minutes at  <%- expiredAt -%>.
 
 
 If you did not request a password reset, you can safely ignore this email.
 If you did not request a password reset, you can safely ignore this email.

+ 1 - 1
packages/app/resource/locales/en_US/notifications/passwordResetSuccessful.txt

@@ -1,6 +1,6 @@
 Password Reset Successful
 Password Reset Successful
 
 
-Hi {{ email }}
+Hi <%- email -%>
 
 
 Your password has been successfully reset.
 Your password has been successfully reset.
 Please log in with your new password.
 Please log in with your new password.

+ 4 - 4
packages/app/resource/locales/en_US/notifications/userActivation.txt

@@ -1,12 +1,12 @@
 Account confirmation
 Account confirmation
 
 
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
-An acount has been created in GROWI ({{ appTitle }}).
+An acount has been created in GROWI (<%- appTitle -%>).
 To activate your account, click on the link below.
 To activate your account, click on the link below.
 
 
-{{ url }}
+<%- url -%>
 
 
-This link will expire in 1 hour at  {{ expiredAt }}.
+This link will expire in 1 hour at  <%- expiredAt -%>.
 
 
 If you did not created the account, you can safely ignore this email.
 If you did not created the account, you can safely ignore this email.

+ 6 - 6
packages/app/resource/locales/ja_JP/admin/userInvitation.txt

@@ -1,14 +1,14 @@
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
 You are invited to our Wiki, you can log in with following account:
 You are invited to our Wiki, you can log in with following account:
 
 
-Email: {{ email }}
-Password: {{ password }}
+Email: <%- email -%>
+Password: <%- password -%>
 (This password was auto generated. Update required at the first time you logging in)
 (This password was auto generated. Update required at the first time you logging in)
 
 
 We are waiting for you!
 We are waiting for you!
-{{ url }}
+<%- url -%>
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>

+ 8 - 8
packages/app/resource/locales/ja_JP/admin/userWaitingActivation.txt

@@ -1,21 +1,21 @@
-Hi, {{ adminUser.name }}
+Hi, <%- adminUser.name -%>
 
 
-A user registered to {{ appTitle }}.
+A user registered to <%- appTitle -%>.
 
 
 
 
 ====
 ====
 Created user:
 Created user:
 
 
-Name: {{ createdUser.name }}
-User Name: {{ createdUser.username }}
-Email: {{ createdUser.email }}
+Name: <%- createdUser.name -%>
+User Name: <%- createdUser.username -%>
+Email: <%- createdUser.email -%>
 ====
 ====
 
 
 Please do some action with following URL:
 Please do some action with following URL:
-{{ url }}/admin/users
+<%- url -%>/admin/users
 
 
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>
 
 

+ 4 - 4
packages/app/resource/locales/ja_JP/notifications/notActiveUser.txt

@@ -1,13 +1,13 @@
 パスワードリセット
 パスワードリセット
 
 
-こんにちは、 {{ email }}
+こんにちは、 <%- email -%>
 
 
-{{ appTitle }} からパスワード再設定のリクエストがありましたが、このemailは登録されておりません。
+<%- appTitle -%> からパスワード再設定のリクエストがありましたが、このemailは登録されておりません。
 他のemailアドレスで再度お試しください。
 他のemailアドレスで再度お試しください。
 
 
 もしこのリクエストに心当たりがない場合は、このメールを無視してください。
 もしこのリクエストに心当たりがない場合は、このメールを無視してください。
 
 
 -------------------------------------------------------------------------
 -------------------------------------------------------------------------
 
 
-GROWI: {{ appTitle }}
-URL: {{ url }}
+GROWI: <%- appTitle -%>
+URL: <%- url -%>

+ 4 - 4
packages/app/resource/locales/ja_JP/notifications/passwordReset.txt

@@ -1,12 +1,12 @@
 パスワード リセット
 パスワード リセット
 
 
-こんにちは, {{ email }}
+こんにちは, <%- email -%>
 
 
-あなたのGROWI ({{ appTitle }}) アカウントから、パスワード再設定のリクエストがありました。
+あなたのGROWI (<%- appTitle -%>) アカウントから、パスワード再設定のリクエストがありました。
 パスワードをリセットするには、以下のリンクをクリックしてください。
 パスワードをリセットするには、以下のリンクをクリックしてください。
 
 
-{{ url }}
+<%- url -%>
 
 
-このリンクは10分後の {{ expiredAt }} に失効します。
+このリンクは10分後の <%- expiredAt -%> に失効します。
 
 
 もしこのリクエストに心当たりがない場合は、このメールを無視してください。
 もしこのリクエストに心当たりがない場合は、このメールを無視してください。

+ 1 - 1
packages/app/resource/locales/ja_JP/notifications/passwordResetSuccessful.txt

@@ -1,6 +1,6 @@
 パスワードリセットに成功
 パスワードリセットに成功
 
 
-こんにちは、 {{ email }}
+こんにちは、 <%- email -%>
 
 
 あなたのパスワードは正常にリセットされました。
 あなたのパスワードは正常にリセットされました。
 新しいパスワードでログインしてください。
 新しいパスワードでログインしてください。

+ 4 - 4
packages/app/resource/locales/ja_JP/notifications/userActivation.txt

@@ -1,13 +1,13 @@
 仮登録完了のお知らせ
 仮登録完了のお知らせ
 
 
-{{ email }} さん
+<%- email -%> さん
 
 
-GROWI ({{ appTitle }}) で仮登録が完了いたしました。
+GROWI (<%- appTitle -%>) で仮登録が完了いたしました。
 
 
 ご本人様確認のため、下記リンクをクリックし、アカウントの本登録を完了させて下さい。
 ご本人様確認のため、下記リンクをクリックし、アカウントの本登録を完了させて下さい。
 
 
-{{ url }}
+<%- url -%>
 
 
-このリンクは1時間後の {{ expiredAt }} に失効します。
+このリンクは1時間後の <%- expiredAt -%> に失効します。
 
 
 ※当メールの内容に心当たりがない場合は、このメールを無視してください。
 ※当メールの内容に心当たりがない場合は、このメールを無視してください。

+ 6 - 6
packages/app/resource/locales/zh_CN/admin/userInvitation.txt

@@ -1,14 +1,14 @@
-Hi, {{ email }}
+Hi, <%- email -%>
 
 
 You are invited to our Wiki, you can log in with following account:
 You are invited to our Wiki, you can log in with following account:
 
 
-Email: {{ email }}
-Password: {{ password }}
+Email: <%- email -%>
+Password: <%- password -%>
 (This password was auto generated. Update required at the first time you logging in)
 (This password was auto generated. Update required at the first time you logging in)
 
 
 We are waiting for you!
 We are waiting for you!
-{{ url }}
+<%- url -%>
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>

+ 8 - 8
packages/app/resource/locales/zh_CN/admin/userWaitingActivation.txt

@@ -1,21 +1,21 @@
-Hi, {{ adminUser.name }}
+Hi, <%- adminUser.name -%>
 
 
-A user registered to {{ appTitle }}.
+A user registered to <%- appTitle -%>.
 
 
 
 
 ====
 ====
 Created user:
 Created user:
 
 
-Name: {{ createdUser.name }}
-User Name: {{ createdUser.username }}
-Email: {{ createdUser.email }}
+Name: <%- createdUser.name -%>
+User Name: <%- createdUser.username -%>
+Email: <%- createdUser.email -%>
 ====
 ====
 
 
 Please do some action with following URL:
 Please do some action with following URL:
-{{ url }}/admin/users
+<%- url -%>/admin/users
 
 
 
 
 --
 --
-{{ appTitle }}
-{{ url }}
+<%- appTitle -%>
+<%- url -%>
 
 

+ 3 - 3
packages/app/resource/locales/zh_CN/notifications/comment.txt

@@ -1,9 +1,9 @@
-{{ username }} commented on {{ path }}.
+<%- username -%> commented on <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-{{ comment }}
+<%- comment -%>
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 4 - 4
packages/app/resource/locales/zh_CN/notifications/notActiveUser.txt

@@ -1,13 +1,13 @@
 重设密码
 重设密码
 
 
-嗨,{{电子邮件}}
+嗨,<%-电子邮件-%>
 
 
-已收到来自 {{appTitle}} 的更改密码请求。
+已收到来自 <%-appTitle-%> 的更改密码请求。
 但是,此电子邮件未注册。请使用其他电子邮件重试。
 但是,此电子邮件未注册。请使用其他电子邮件重试。
 
 
 如果您没有要求重置密码,则可以放心地忽略此电子邮件。
 如果您没有要求重置密码,则可以放心地忽略此电子邮件。
 
 
 -------------------------------------------------------------------------
 -------------------------------------------------------------------------
 
 
-GROWI: {{ appTitle }}
-URL: {{ url }}
+GROWI: <%- appTitle -%>
+URL: <%- url -%>

+ 2 - 2
packages/app/resource/locales/zh_CN/notifications/pageCreate.txt

@@ -1,5 +1,5 @@
-{{ username }} created a new page under {{ path }}.
+<%- username -%> created a new page under <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/zh_CN/notifications/pageDelete.txt

@@ -1,5 +1,5 @@
-{{ username }} deleted the page  {{ path }}.
+<%- username -%> deleted the page  <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/zh_CN/notifications/pageEdit.txt

@@ -1,5 +1,5 @@
-{{ username }} edited the page {{ path }}.
+<%- username -%> edited the page <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/zh_CN/notifications/pageLike.txt

@@ -1,5 +1,5 @@
-{{ username }} liked the page {{ path }}.
+<%- username -%> liked the page <%- path -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 2 - 2
packages/app/resource/locales/zh_CN/notifications/pageMove.txt

@@ -1,5 +1,5 @@
-{{ username }} renamed the page {{ oldPath }} to {{ newPath }}.
+<%- username -%> renamed the page <%- oldPath -%> to <%- newPath -%>.
 
 
 ----------------------
 ----------------------
 
 
-Growi: {{ appTitle }}
+Growi: <%- appTitle -%>

+ 3 - 3
packages/app/resource/locales/zh_CN/notifications/passwordReset.txt

@@ -1,11 +1,11 @@
 重设密码
 重设密码
 
 
-嗨,{{ email }}
+嗨,<%- email -%>
 
 
-已收到更改您 GROWI ({{appTitle}}) 帐户 密码的请求。
+已收到更改您 GROWI (<%-appTitle-%>) 帐户 密码的请求。
 要重置密码,请单击下面的链接。
 要重置密码,请单击下面的链接。
 
 
-{{ url }}
+<%- url -%>
 
 
 这个链接在10分钟后的{ expiredAt }}失效。
 这个链接在10分钟后的{ expiredAt }}失效。
 
 

+ 1 - 1
packages/app/resource/locales/zh_CN/notifications/passwordResetSuccessful.txt

@@ -1,6 +1,6 @@
 密码重置成功
 密码重置成功
 
 
-嗨, {{email}}
+嗨, <%-email-%>
 
 
 您的密码已成功重置。
 您的密码已成功重置。
 请使用您的新密码登录。
 请使用您的新密码登录。

+ 4 - 4
packages/app/resource/locales/zh_CN/notifications/userActivation.txt

@@ -1,12 +1,12 @@
 确认账户创建
 确认账户创建
 
 
-致{{ email }}
+致<%- email -%>
 
 
-已使用 GROWI ({{ appTitle }}) 创建帐户。
+已使用 GROWI (<%- appTitle -%>) 创建帐户。
 单击下面的链接以激活您的帐户。
 单击下面的链接以激活您的帐户。
 
 
-{{ url }}
+<%- url -%>
 
 
-这个链接将在1小时后即{{ expiredAt }}失效。
+这个链接将在1小时后即<%- expiredAt -%>失效。
 
 
 如果您尚未创建,请忽略此电子邮件。
 如果您尚未创建,请忽略此电子邮件。

+ 0 - 2
packages/app/src/server/crowi/dev.js

@@ -8,8 +8,6 @@ import loggerFactory from '~/utils/logger';
 
 
 import nextFactory from '../routes/next';
 import nextFactory from '../routes/next';
 
 
-const swig = require('swig-templates');
-
 const logger = loggerFactory('growi:crowi:dev');
 const logger = loggerFactory('growi:crowi:dev');
 
 
 
 

+ 0 - 12
packages/app/src/server/crowi/express-init.js

@@ -2,8 +2,6 @@ import { manifestPath as presetThemesManifestPath } from '@growi/preset-themes';
 import csrf from 'csurf';
 import csrf from 'csurf';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
-import { i18n, localePath } from '^/config/next-i18next.config';
-
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 import { resolveFromRoot } from '~/utils/project-dir-utils';
 import { resolveFromRoot } from '~/utils/project-dir-utils';
 
 
@@ -22,8 +20,6 @@ module.exports = function(crowi, app) {
   const expressSession = require('express-session');
   const expressSession = require('express-session');
   const flash = require('connect-flash');
   const flash = require('connect-flash');
   const mongoSanitize = require('express-mongo-sanitize');
   const mongoSanitize = require('express-mongo-sanitize');
-  const swig = require('swig-templates');
-  const webpackAssets = require('express-webpack-assets');
   // const i18next = require('i18next');
   // const i18next = require('i18next');
   // const i18nFsBackend = require('i18next-node-fs-backend');
   // const i18nFsBackend = require('i18next-node-fs-backend');
   // const i18nSprintf = require('i18next-sprintf-postprocessor');
   // const i18nSprintf = require('i18next-sprintf-postprocessor');
@@ -122,10 +118,6 @@ module.exports = function(crowi, app) {
   ));
   ));
   app.use('/static/plugins', express.static(path.resolve(__dirname, '../../../tmp/plugins')));
   app.use('/static/plugins', express.static(path.resolve(__dirname, '../../../tmp/plugins')));
 
 
-  app.engine('html', swig.renderFile);
-  // app.set('view cache', false);  // Default: true in production, otherwise undefined. -- 2017.07.04 Yuki Takei
-  app.set('view engine', 'html');
-  app.set('views', crowi.viewsDir);
   app.use(methodOverride());
   app.use(methodOverride());
 
 
   // inject rawBody to req
   // inject rawBody to req
@@ -173,10 +165,6 @@ module.exports = function(crowi, app) {
   app.use(injectCurrentuserToLocalvars);
   app.use(injectCurrentuserToLocalvars);
   app.use(autoReconnectToS2sMsgServer);
   app.use(autoReconnectToS2sMsgServer);
 
 
-  const middlewares = require('../util/middlewares')(crowi, app);
-  app.use(middlewares.swigFilters(swig));
-  app.use(middlewares.swigFunctions());
-
   // app.use(i18nMiddleware.handle(i18next));
   // app.use(i18nMiddleware.handle(i18next));
   // TODO: Remove this workaround implementation when i18n works correctly.
   // TODO: Remove this workaround implementation when i18n works correctly.
   //       For now, req.t returns string given to req.t(string)
   //       For now, req.t returns string given to req.t(string)

+ 0 - 3
packages/app/src/server/routes/hackmd.js

@@ -3,13 +3,10 @@ import loggerFactory from '~/utils/logger';
 /* eslint-disable no-use-before-define */
 /* eslint-disable no-use-before-define */
 
 
 const logger = loggerFactory('growi:routes:hackmd');
 const logger = loggerFactory('growi:routes:hackmd');
-const path = require('path');
 
 
 const hackmdFiles = require('@growi/hackmd');
 const hackmdFiles = require('@growi/hackmd');
 const axios = require('axios');
 const axios = require('axios');
 const ejs = require('ejs');
 const ejs = require('ejs');
-const fs = require('graceful-fs');
-const swig = require('swig-templates');
 
 
 const ApiResponse = require('../util/apiResponse');
 const ApiResponse = require('../util/apiResponse');
 
 

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

@@ -396,7 +396,7 @@ class ImportService {
       // https://regex101.com/r/mD4eZs/6
       // https://regex101.com/r/mD4eZs/6
       // prevent from unexpecting attack doing unzip file (path traversal attack)
       // prevent from unexpecting attack doing unzip file (path traversal attack)
       // FOR EXAMPLE
       // FOR EXAMPLE
-      // ../../src/server/views/admin/markdown.html
+      // ../../src/server/example.html
       if (fileName.match(/(\.\.\/|\.\.\\)/)) {
       if (fileName.match(/(\.\.\/|\.\.\\)/)) {
         logger.error('File path is not appropriate.', fileName);
         logger.error('File path is not appropriate.', fileName);
         return;
         return;

+ 8 - 2
packages/app/src/server/service/mail.ts

@@ -1,13 +1,17 @@
+import { promisify } from 'util';
+
+import ejs from 'ejs';
 import nodemailer from 'nodemailer';
 import nodemailer from 'nodemailer';
-import swig from 'swig-templates';
 
 
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import S2sMessage from '../models/vo/s2s-message';
 import S2sMessage from '../models/vo/s2s-message';
+
 import { S2sMessageHandlable } from './s2s-messaging/handlable';
 import { S2sMessageHandlable } from './s2s-messaging/handlable';
 
 
 const logger = loggerFactory('growi:service:mail');
 const logger = loggerFactory('growi:service:mail');
 
 
+
 type MailConfig = {
 type MailConfig = {
   to?: string,
   to?: string,
   from?: string,
   from?: string,
@@ -190,8 +194,10 @@ class MailService implements S2sMessageHandlable {
       throw new Error('Mailer is not completed to set up. Please set up SMTP or AWS setting.');
       throw new Error('Mailer is not completed to set up. Please set up SMTP or AWS setting.');
     }
     }
 
 
+    const renderFilePromisified = promisify(ejs.renderFile);
+
     const templateVars = config.vars || {};
     const templateVars = config.vars || {};
-    const output = await swig.renderFile(
+    const output = await renderFilePromisified(
       config.template,
       config.template,
       templateVars,
       templateVars,
     );
     );

+ 0 - 133
packages/app/src/server/util/middlewares.js

@@ -1,133 +0,0 @@
-import loggerFactory from '~/utils/logger';
-
-// don't add any more middlewares to this file.
-// all new middlewares should be an independent file under /server/middlewares
-// eslint-disable-next-line no-unused-vars
-
-const { pathUtils } = require('@growi/core');
-const { formatDistanceStrict } = require('date-fns');
-const entities = require('entities');
-
-// eslint-disable-next-line no-unused-vars
-const logger = loggerFactory('growi:lib:middlewares');
-
-module.exports = (crowi) => {
-  const { configManager } = crowi;
-
-  const middlewares = {};
-
-  middlewares.swigFunctions = function() {
-    return function(req, res, next) {
-      require('../util/swigFunctions')(crowi, req, res.locals);
-      next();
-    };
-  };
-
-  middlewares.swigFilters = function(swig) {
-
-    return function(req, res, next) {
-      swig.setFilter('path2name', (string) => {
-        const name = string.replace(/(\/)$/, '');
-
-        if (name.match(/.+\/([^/]+\/\d{4}\/\d{2}\/\d{2})$/)) { // /.../hoge/YYYY/MM/DD 形式のページ
-          return name.replace(/.+\/([^/]+\/\d{4}\/\d{2}\/\d{2})$/, '$1');
-        }
-        if (name.match(/.+\/([^/]+\/\d{4}\/\d{2})$/)) { // /.../hoge/YYYY/MM 形式のページ
-          return name.replace(/.+\/([^/]+\/\d{4}\/\d{2})$/, '$1');
-        }
-        if (name.match(/.+\/([^/]+\/\d{4})$/)) { // /.../hoge/YYYY 形式のページ
-          return name.replace(/.+\/([^/]+\/\d{4})$/, '$1');
-        }
-
-        return name.replace(/.+\/(.+)?$/, '$1'); // ページの末尾を拾う
-      });
-
-      swig.setFilter('normalizeDateInPath', (path) => {
-        const patterns = [
-          [/20(\d{2})(\d{2})(\d{2})(.+)/g, '20$1/$2/$3/$4'],
-          [/20(\d{2})(\d{2})(\d{2})/g, '20$1/$2/$3'],
-          [/20(\d{2})(\d{2})(.+)/g, '20$1/$2/$3'],
-          [/20(\d{2})(\d{2})/g, '20$1/$2'],
-          [/20(\d{2})_(\d{1,2})_(\d{1,2})_?(.+)/g, '20$1/$2/$3/$4'],
-          [/20(\d{2})_(\d{1,2})_(\d{1,2})/g, '20$1/$2/$3'],
-          [/20(\d{2})_(\d{1,2})_?(.+)/g, '20$1/$2/$3'],
-          [/20(\d{2})_(\d{1,2})/g, '20$1/$2'],
-        ];
-
-        for (let i = 0; i < patterns.length; i++) {
-          const mat = patterns[i][0];
-          const rep = patterns[i][1];
-          if (path.match(mat)) {
-            return path.replace(mat, rep);
-          }
-        }
-
-        return path;
-      });
-
-      swig.setFilter('datetz', (input, format) => {
-        // timezone
-        const swigFilters = require('swig-templates/lib/filters');
-        return swigFilters.date(input, format, crowi.appService.getTzoffset());
-      });
-
-      swig.setFilter('dateDistance', (input) => {
-        return formatDistanceStrict(input, new Date());
-      });
-
-      swig.setFilter('nl2br', (string) => {
-        return string
-          .replace(/\n/g, '<br>');
-      });
-
-      swig.setFilter('removeTrailingSlash', (string) => {
-        return pathUtils.removeTrailingSlash(string);
-      });
-
-      swig.setFilter('addTrailingSlash', (string) => {
-        return pathUtils.addTrailingSlash(string);
-      });
-
-      swig.setFilter('presentation', (string) => {
-        // 手抜き
-        return string
-          .replace(/\s(https?.+(jpe?g|png|gif))\s/, '\n\n\n![]($1)\n\n\n');
-      });
-
-      swig.setFilter('encodeHTML', (string) => {
-        return entities.encodeHTML(string);
-      });
-
-      swig.setFilter('preventXss', (string) => {
-        return crowi.xss.process(string);
-      });
-
-      swig.setFilter('slice', (list, start, end) => {
-        return list.slice(start, end);
-      });
-
-      swig.setFilter('push', (list, element) => {
-        list.push(element);
-        return list;
-      });
-
-      next();
-    };
-  };
-
-  middlewares.awsEnabled = function() {
-    return function(req, res, next) {
-      if ((configManager.getConfig('crowi', 'aws:s3Region') !== '' || this.configManager.getConfig('crowi', 'aws:s3CustomEndpoint') !== '')
-          && configManager.getConfig('crowi', 'aws:s3Bucket') !== ''
-          && configManager.getConfig('crowi', 'aws:s3AccessKeyId') !== ''
-          && configManager.getConfig('crowi', 'aws:s3SecretAccessKey') !== '') {
-        req.flash('globalError', req.t('message.aws_sttings_required'));
-        return res.redirect('/');
-      }
-
-      return next();
-    };
-  };
-
-  return middlewares;
-};

+ 0 - 208
packages/app/src/server/util/swigFunctions.js

@@ -1,208 +0,0 @@
-module.exports = function(crowi, req, locals) {
-  const debug = require('debug')('growi:lib:swigFunctions');
-  const stringWidth = require('string-width');
-
-  const { pathUtils } = require('@growi/core');
-
-  const Page = crowi.model('Page');
-  const User = crowi.model('User');
-  const {
-    configManager,
-    cdnResourcesService,
-    passportService,
-    appService,
-    aclService,
-    customizeService,
-    pageService,
-  } = crowi;
-  debug('initializing swigFunctions');
-
-  locals.nodeVersion = function() {
-    return crowi.runtimeVersions.versions.node ? crowi.runtimeVersions.versions.node.version : '-';
-  };
-  locals.npmVersion = function() {
-    return crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version : '-';
-  };
-  locals.yarnVersion = function() {
-    return crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version : '-';
-  };
-
-  locals.getAppTitleFontSize = function(appTitle) {
-    const appTitleWidth = stringWidth(appTitle);
-    let fontSize = 22;
-    if (appTitleWidth < 13) { /* do nothing */ }
-    else if (appTitleWidth < 21) {
-      fontSize -= 3 * (Math.floor((appTitleWidth - 13) / 3) + 1);
-    }
-    else {
-      fontSize = 11;
-    }
-    return fontSize;
-  };
-
-  /**
-   * @see ConfigManager#getConfig
-   */
-  locals.getConfig = configManager.getConfig.bind(configManager);
-
-  /**
-   * **Do not use this unless absolutely necessary. Use getConfig instead.**
-   */
-  locals.getConfigFromDB = configManager.getConfigFromDB.bind(configManager);
-
-  /**
-   * **Do not use this unless absolutely necessary. Use getConfig instead.**
-   */
-  locals.getConfigFromEnvVars = configManager.getConfigFromEnvVars.bind(configManager);
-
-  /**
-   * pass service/utils instances to swig
-   */
-  locals.appService = appService;
-  locals.aclService = aclService;
-  locals.customizeService = customizeService;
-  locals.passportService = passportService;
-  locals.pageService = pageService;
-  locals.pathUtils = pathUtils;
-
-  locals.noCdn = function() {
-    return cdnResourcesService.noCdn;
-  };
-
-  locals.cdnScriptTag = function(name) {
-    return cdnResourcesService.getScriptTagByName(name);
-  };
-  locals.cdnScriptTagsByGroup = function(group) {
-    const tags = cdnResourcesService.getScriptTagsByGroup(group);
-    return tags.join('\n');
-  };
-
-  locals.cdnStyleTag = function(name) {
-    return cdnResourcesService.getStyleTagByName(name);
-  };
-
-  locals.cdnStyleTagsByGroup = function(group) {
-    const tags = cdnResourcesService.getStyleTagsByGroup(group);
-    return tags.join('\n');
-  };
-
-  locals.cdnHighlightJsStyleTag = function(styleName) {
-    return cdnResourcesService.getHighlightJsStyleTag(styleName);
-  };
-
-  /**
-   * return true if enabled but strategy has some problem
-   */
-  locals.isLdapSetupFailed = function() {
-    return (
-      configManager.getConfig('crowi', 'security:passport-ldap:isEnabled')
-      && !passportService.isLdapStrategySetup
-    );
-  };
-
-  locals.getSamlMissingMandatoryConfigKeys = function() {
-    return crowi.passportService.getSamlMissingMandatoryConfigKeys();
-  };
-
-  locals.isHackmdSetup = function() {
-    return process.env.HACKMD_URI != null;
-  };
-
-  locals.parentPath = function(path) {
-    if (path === '/') {
-      return path;
-    }
-
-    if (path.match(/.+\/$/)) {
-      return path;
-    }
-
-    return `${path}/`;
-  };
-
-  locals.isUserPageList = function(path) {
-    if (path.match(/^\/user\/[^/]+\/$/)) {
-      return true;
-    }
-
-    return false;
-  };
-
-  locals.isTopPage = function() {
-    const path = req.path || '';
-    if (path === '/') {
-      return true;
-    }
-
-    return false;
-  };
-
-  locals.isTrashPage = function(path = '') {
-    if (path.match(/^\/trash(\/.*)?$/)) {
-      return true;
-    }
-
-    return false;
-  };
-
-  locals.userPageRoot = function(user) {
-    if (!user || !user.username) {
-      return '';
-    }
-    return `/user/${user.username}`;
-  };
-
-  locals.pagesDataForTimeline = function(pages) {
-    return pages.map((page) => {
-      return {
-        id: page.id,
-        path: page.path,
-        revision: page.revision,
-      };
-    });
-  };
-
-  locals.attachTitleHeader = function(path) {
-    return pathUtils.attachTitleHeader(path);
-  };
-
-  locals.css = {
-    grant(pageData) {
-      if (!pageData) {
-        return '';
-      }
-
-      switch (pageData.grant) {
-        case Page.GRANT_PUBLIC:
-          return 'grant-public';
-        case Page.GRANT_RESTRICTED:
-          return 'grant-restricted';
-        // case Page.GRANT_SPECIFIED:
-        //  return 'grant-specified';
-        //  break;
-        case Page.GRANT_OWNER:
-          return 'grant-owner';
-        default:
-          break;
-      }
-      return '';
-    },
-    userStatus(user) {
-      switch (user.status) {
-        case User.STATUS_REGISTERED:
-          return 'label-info';
-        case User.STATUS_ACTIVE:
-          return 'label-success';
-        case User.STATUS_SUSPENDED:
-          return 'label-warning';
-        case User.STATUS_DELETED:
-          return 'label-danger';
-        case User.STATUS_INVITED:
-          return 'label-info';
-        default:
-          break;
-      }
-      return '';
-    },
-  };
-};

+ 0 - 1
packages/app/src/server/views/500.html

@@ -1 +0,0 @@
-Error: {{ error.message }}

+ 0 - 45
packages/app/src/server/views/forgot-password.html

@@ -1,45 +0,0 @@
-{% extends './layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('forgot_password.forgot_password')) }}{% endblock %}
-
-
-{#
-  # Remove default contents
-  #}
- {% block html_head_loading_legacy %}
- {% endblock %}
- {% block html_head_loading_app %}
- {% endblock %}
- {% block layout_head_nav %}
- {% endblock %}
- {% block sidebar %}
- {% endblock %}
- {% block head_warn_alert_siteurl_undefined %}
- {% endblock %}
- {% block fixed-controls %}
- {% endblock %}
-
- {% block html_additional_headers %}
-   <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
- {% endblock %}
-
-{% block layout_main %}
-
-  <div id="main" class="main">
-    <div id="content-main" class="content-main container-lg">
-      <div class="container">
-        <div class="row justify-content-md-center">
-          <div class="col-md-6 mt-5">
-            <div class="text-center">
-              <h1><i class="icon-lock large"></i></h1>
-              <h1 class="text-center">{{ t('forgot_password.forgot_password') }}</h1>
-              <h3>{{ t('forgot_password.password_reset_request_desc') }}</h3>
-              <div id="password-reset-request-form"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-{% endblock %}

+ 0 - 60
packages/app/src/server/views/forgot-password/error.html

@@ -1,60 +0,0 @@
-{% extends '../layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('forgot_password.reset_password')) }}{% endblock %}
-
-
-{#
-  # Remove default contents
-  #}
- {% block html_head_loading_legacy %}
- {% endblock %}
- {% block html_head_loading_app %}
- {% endblock %}
- {% block layout_head_nav %}
- {% endblock %}
- {% block sidebar %}
- {% endblock %}
- {% block head_warn_alert_siteurl_undefined %}
- {% endblock %}
- {% block fixed-controls %}
- {% endblock %}
-
- {% block html_additional_headers %}
-   <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
- {% endblock %}
-
-{% block layout_main %}
-
-  <div id="main" class="main">
-    <div id="content-main" class="content-main container-lg">
-      <div class="container">
-        <div class="row justify-content-md-center">
-          <div class="col-md-6 mt-5">
-            <div class="text-center">
-              <h1><i class="icon-lock-open large"></i></h1>
-              <h2 class="text-center">{{ t('forgot_password.reset_password') }}</h2>
-
-                {% if key === 'password-reset-is-unavailable' %}
-                <h3 class="text-muted">This feature is unavailable.</h3>
-                {% endif %}
-
-                {% if key === 'password-reset-order-is-not-appropriate' %}
-                <div>
-                  <div class="alert alert-warning mb-3">
-                    <h2>{{ t('forgot_password.incorrect_token_or_expired_url') }}</h2>
-                  </div>
-                  <a href="/forgot-password" class="link-switch">
-                    <i class="icon-key"></i> {{ t('forgot_password.forgot_password') }}
-                  </a>
-                </div>
-                {% endif %}
-
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-  </div>
-
-{% endblock %}

+ 0 - 95
packages/app/src/server/views/installer.html

@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-{% block html_head %}
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <title>{{ customizeService.generateCustomTitleForFixedPageName(t('installer.setup')) }}</title>
-  <meta name="description" content="">
-  <meta name="author" content="">
-
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-
-  <meta name="apple-mobile-web-app-title" content="{{ appService.getAppTitle() | preventXss }}">
-
-  {% include './widget/headers/favicon.html' %}
-
-  {{ cdnScriptTagsByGroup('basis') }}
-
-  {% include './widget/headers/scripts-for-dev.html' %}
-
-  <script src="{{ webpack_asset('js/boot.js') }}"></script>
-
-  <script src="{{ webpack_asset('js/vendors.js') }}" defer></script>
-  <script src="{{ webpack_asset('js/commons.js') }}" defer></script>
-
-  <!-- styles -->
-  {% include './widget/headers/styles-for-app.html' %}
-  {% block theme_css_block %}
-    {% include './widget/headers/styles-theme.html' with {themeName: 'default'} %}
-  {% endblock %}
-
-  {{ cdnStyleTagsByGroup('basis') }}
-
-  <script src="{{ webpack_asset('js/installer.js') }}" defer></script>
-
-</head>
-{% endblock %}
-
-{% block html_body %}
-<body
-  class="installer nologin growi"
-  {% block html_base_attr %}{% endblock %}
- >
-
-<div id="growi-context-extractor"></div>
-
-<div id="wrapper">
-
-  <!-- Page Content -->
-  <div id="page-wrapper">
-    <div class="main container-fluid">
-
-      <div class="row">
-        <div class="col-md-12">
-          <div class="login-header mx-auto">
-            <div class="logo">{% include 'widget/logo.html' %}</div>
-            <h1 class="my-3">GROWI</h1>
-
-            <div class="login-form-errors px-3">
-              {% if req.form.errors.length > 0 %}
-              <div class="alert alert-danger">
-                <ul class="mb-0">
-                {% for error in req.form.errors %}
-                  <li>{{ error }}</li>
-                {% endfor %}
-                </ul>
-              </div>
-              {% endif %}
-            </div>
-          </div>
-        </div>
-        <div class="col-md-12">
-          <div id="installer-form-container"
-            data-user-name="{{ req.body.registerForm.username }}"
-            data-name="{{ req.body.registerForm.name }}"
-            data-email="{{ req.body.registerForm.email }}">
-          </div>
-        </div>
-      </div>{# /.row #}
-
-    </div>
-  </div><!-- /#page-wrapper -->
-
-</div><!-- /#wrapper -->
-
-{% block body_end %}
-{% endblock %}
-</body>
-{% endblock %}
-
-<script type="application/json" id="growi-context-hydrate">
-{{ local_config|json|safe|preventXss }}
-</script>
-
-</html>

+ 0 - 150
packages/app/src/server/views/invited.html

@@ -1,150 +0,0 @@
-{% extends 'layout/layout.html' %}
-
-{% block html_base_css %}invited nologin{% endblock %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName('Registration') }}{% endblock %}
-
-
-
-{#
-  # Remove default contents
-  #}
- {% block html_head_loading_legacy %}
- {% endblock %}
- {% block html_head_loading_app %}
- {% endblock %}
- {% block layout_head_nav %}
- {% endblock %}
- {% block sidebar %}
- {% endblock %}
- {% block head_warn_alert_siteurl_undefined %}
- {% endblock %}
- {% block fixed-controls %}
- {% endblock %}
-
-
-
- {% block layout_main %}
-
-<div class="main container-fluid">
-
-  <div class="row">
-
-    <div class="login-header offset-4 col-sm-4">
-      <div class="logo">{% include 'widget/logo.html' %}</div>
-      <h1>GROWI</h1>
-
-      <div id="login-form-errors">
-        {% set errorMessages = req.flash('errorMessages') %}
-        {% if errorMessages.length > 0 %}
-        <div class="alert alert-danger">
-          <ul class="mb-0">
-          {% for error in errorMessages %}
-            <li>{{ error }}</li>
-          {% endfor %}
-          </ul>
-        </div>
-        {% endif %}
-
-        {% set message = req.flash('warningMessage') %}
-        {% if message.length %}
-        <div class="alert alert-danger">
-          {{ message }}
-        </div>
-        {% endif %}
-
-        {% if req.form.errors.length > 0 %}
-        <div class="alert alert-danger">
-          <ul>
-          {% for error in req.form.errors %}
-            <li>{{ error }}</li>
-          {% endfor %}
-          </ul>
-        </div>
-        {% endif %}
-      </div>
-    </div>
-
-    <div class="login-dialog grw-pt-10px p-b-10 offset-4 col-sm-4" id="login-dialog">
-      <p class="alert alert-success">
-        <strong>アカウントの作成</strong><br>
-        <small>招待を受け取ったメールアドレスでアカウントを作成します</small>
-      </p>
-
-      <form role="form" action="/login/activateInvited" method="post" id="invited-form">
-
-        <div class="input-group">
-          <div class="input-group-prepend">
-            <span class="input-group-text"><i class="icon-envelope"></i></span>
-          </div>
-          <input type="text" class="form-control" disabled value="{{ user.email }}">
-        </div>
-        <div class="input-group" id="input-group-username">
-          <div class="input-group-prepend">
-            <span class="input-group-text"><i class="icon-user"></i></span>
-          </div>
-          <input type="text" class="form-control" placeholder="{{ t('User ID') }}" name="invitedForm[username]" value="{{ req.body.invitedForm.username }}" required>
-        </div>
-        <p class="form-text text-muted">
-          <span id="help-block-username"></span>
-        </p>
-
-        <div class="input-group">
-          <div class="input-group-prepend">
-            <span class="input-group-text"><i class="icon-tag"></i></span>
-          </div>
-          <input type="text" class="form-control" placeholder="{{ t('Name') }}" name="invitedForm[name]" value="{{ req.body.invitedForm.name }}" required>
-        </div>
-
-
-        <div class="input-group">
-          <div class="input-group-prepend">
-            <span class="input-group-text"><i class="icon-lock"></i></span>
-          </div>
-          <input type="password" class="form-control" placeholder="{{ t('Password') }}" name="invitedForm[password]" required>
-        </div>
-
-        <div class="input-group justify-content-center d-flex mt-5">
-          <input type="hidden" name="_csrf" value="{{ req.csrfToken() }}">
-          <button type="submit" class="btn btn-fill" id="register">
-            <div class="eff"></div>
-            <span class="btn-label"><i class="icon-user-follow"></i></span>
-            <span class="btn-label-text">{{ t('Create') }}</span>
-          </button>
-        </div>
-
-        <div class="input-group mt-5 d-flex justify-content-center">
-          <a href="https://growi.org" class="link-growi-org">
-            <span class="growi">GROWI</span>.<span class="org">ORG
-          </a>
-        </div>
-      </form>
-    </div>
-
-  </div>{# /.row #}
-
-</div>{# /.main #}
-
-<script>
-$(function() {
-  $('#invited-form input[name="invitedForm[username]"]').change(function(e) {
-    var username = $(this).val();
-    $('#login-dialog').removeClass('has-error');
-    $('#input-group-username').removeClass('has-error');
-    $('#help-block-username').html("");
-
-    $.getJSON('/_api/v3/check-username', {username: username}, function(json) {
-      if (!json.valid) {
-        $('#help-block-username').html(
-          '<i class="icon-fw icon-ban"></i>このユーザーIDは利用できません。'
-        );
-        $('#login-dialog').addClass('has-error');
-        $('#input-group-username').addClass('has-error');
-      }
-    });
-  });
-});
-</script>
-
-{% endblock %}
-

+ 0 - 43
packages/app/src/server/views/layout-growi/base/layout.html

@@ -1,43 +0,0 @@
-{% extends '../../layout/layout.html' %}
-
-{% block html_additional_headers %}
-  {% parent %}
-  {{ cdnScriptTag('highlight-addons') }}
-  {{ cdnScriptTag('drawio-viewer') }}
-{% endblock %}
-
-{% block layout_main %}
-<div class="h-100 d-flex flex-column justify-content-between">
-
-  <div id="growi-context-extractor"></div>
-
-  {% block content_header_wrapper %}
-    <header class="py-0">
-      {% block content_header %}
-        <div id="grw-subnav-container"></div>
-      {% endblock %}
-    </header>
-    <div id="grw-subnav-switcher-container" class="d-edit-none"></div>
-    <div id="grw-subnav-sticky-trigger" class="sticky-top"></div>
-    <div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-  {% endblock %}
-
-  <div class="flex-grow-1">
-    <div id="main" class="main {% if page %}{{ css.grant(page) }}{% endif %}">
-      {% block content_main_before %}
-      {% endblock %}
-
-      {% block content_main %}
-      {% endblock content_main %}
-
-      {% block content_main_after %}
-      {% endblock %}
-    </div>
-  </div>
-
-  <footer class="footer d-edit-none">
-    {% block content_footer %}{% endblock %}
-  </footer>
-
-</div>
-{% endblock %} {# layout_main #}

+ 0 - 24
packages/app/src/server/views/layout-growi/expired_shared_page.html

@@ -1,24 +0,0 @@
-{% extends './shared_page.html' %}
-
-{% block html_title %}
-  {{ customizeService.generateCustomTitle('Page is expired') }}
-{% endblock %}
-
-{% block content_main %}
-  <div class="container-lg">
-
-    <div
-      id="is-shared-page"
-      data-share-link-expired-at="{% if sharelink.expiredAt %}{{ sharelink.expiredAt|datetz('Y/m/d H:i:s')}}{% endif %}"
-      data-share-link-created-at="{{ sharelink.createdAt|datetz('Y/m/d H:i:s')}}"
-    >
-      <div id="share-link-alert"></div>
-
-      <h2 class="text-muted mt-4">
-        <i class="icon-ban" aria-hidden="true"></i>
-        Page is expired
-      </h2>
-    </div>
-
-  </div>
-{% endblock %}

+ 0 - 25
packages/app/src/server/views/layout-growi/forbidden.html

@@ -1,25 +0,0 @@
-{% extends 'base/layout.html' %}
-
-
-{% block content_main_before %}
-  <div class="container-lg">
-    {% include '../widget/page_alerts.html' %}
-  </div>
-{% endblock %}
-
-{% block content_main %}
-  <div
-    id="content-main"
-    class="content-main page-list"
-    data-path="{{ encodeURI(path) }}"
-    data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-    data-page-is-not-creatable="true"
-    >
-  </div>
-  <div class="container-lg" id="forbidden-page"></div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="crowi-modals">
-  </div>
-{% endblock %}

+ 0 - 30
packages/app/src/server/views/layout-growi/identical-path-page.html

@@ -1,30 +0,0 @@
-{% extends 'base/layout.html' %}
-
-{% block content_main_before %}
-{% endblock %}
-
-
-{% block content_main %}
-  <div class="grw-container-convertible">
-
-    <div id="content-main" class="content-main d-flex"
-      data-path="{{ encodeURI(path) }}"
-      data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-      data-page-is-not-creatable="true"
-      data-identical-path="true"
-    >
-      <div class="flex-grow-1 flex-basis-0 mw-0">
-        <div
-          id="identical-path-page"
-          data-identical-path-pages="{{ identicalPathPages|json }}"
-        ></div>
-      </div>
-      <div id="page-context"></div>
-    </div>
-
-  </div>
-{% endblock %}
-
-{% block content_footer %}
-  <div id="page-content-footer"></div>
-{% endblock %}

+ 0 - 20
packages/app/src/server/views/layout-growi/not_creatable.html

@@ -1,20 +0,0 @@
-{% extends 'base/layout.html' %}
-
-
-{% block content_main_before %}
-  <div class="container-lg">
-    {% include '../widget/page_alerts.html' %}
-  </div>
-{% endblock %}
-
-
-{% block content_main %}
-  <div class="container-lg">
-    {% include '../widget/not_creatable_content.html' %}
-  </div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="crowi-modals">
-  </div>
-{% endblock %}

+ 0 - 32
packages/app/src/server/views/layout-growi/not_found.html

@@ -1,32 +0,0 @@
-{% extends 'base/layout.html' %}
-
-{% block html_base_css %}not-found-page{% endblock %}
-
-{% block content_main_before %}
-  <div
-    id="growi-pagetree-not-found-context"
-    data-not-found-target-path-or-id="{% if notFoundTargetPathOrId %}{{notFoundTargetPathOrId|json}}{% endif %}"
-  >
-  </div>
-  <div
-    id="growi-not-found-context"
-    data-page-id="{%if pageId %}{{pageId.toString()}}{% endif %}"
-  >
-  </div>
-  <div class="grw-container-convertible">
-    {% include '../widget/page_alerts.html' %}
-  </div>
-{% endblock %}
-
-
-{% block content_main %}
-  <div class="grw-container-convertible">
-    {% include '../widget/not_found_content.html' %}
-  </div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="presentation-layer" class="fullscreen-layer">
-    <div id="presentation-container"></div>
-  </div>
-{% endblock %}

+ 0 - 16
packages/app/src/server/views/layout-growi/not_found_shared_page.html

@@ -1,16 +0,0 @@
-{% extends './shared_page.html' %}
-
-{% block html_title %}
-  {{ customizeService.generateCustomTitle('Page is not found') }}
-{% endblock %}
-
-{% block content_main %}
-  <div class="container-lg">
-
-    <h2 class="text-muted mt-4">
-      <i class="icon-ban" aria-hidden="true"></i>
-      Page is not found
-    </h2>
-
-  </div>
-{% endblock %}

+ 0 - 35
packages/app/src/server/views/layout-growi/page.html

@@ -1,35 +0,0 @@
-{% extends 'base/layout.html' %}
-
-{% block html_additional_headers %}
-  {% parent %}
-
-  <!-- OGP -->
-  <meta property="og:site_name" content="{{ appService.getAppTitle() | preventXss }}" />
-  <meta property="og:title" content="{{ page.path | preventXss }}" />
-  <meta property="og:url" content="{{ appService.getSiteUrl() | preventXss }}/{{ page.id }}" />
-  <meta property="og:type" content="article" />
-  <meta property="og:image" content="{{ appService.getSiteUrl() | preventXss }}/ogp/{{ page.id }}" />
-{% endblock %}
-
-{% block content_main_before %}
-{% endblock %}
-
-
-{% block content_main %}
-  <div class="grw-container-convertible">
-
-    {% include '../widget/page_content.html' %}
-
-  </div>
-{% endblock %}
-
-{% block content_footer %}
-  {% include 'widget/comments.html' %}
-  <div id="page-content-footer"></div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="presentation-layer" class="fullscreen-layer">
-    <div id="presentation-container"></div>
-  </div>
-{% endblock %}

+ 0 - 31
packages/app/src/server/views/layout-growi/page_list.html

@@ -1,31 +0,0 @@
-{% extends 'base/layout.html' %}
-
-
-{% block content_main_before %}
-{% endblock %}
-
-
-{% block content_main %}
-  <div class="grw-container-convertible">
-    {% include '../widget/page_content.html' %}
-  </div>
-{% endblock %}
-
-
-{% block content_main_after %}
-  {% if isTrashPage(path) %}
-    <div class="grw-container-convertible">
-      <div id="trash-page-list-container"></div>
-    </div>
-  {% endif %}
-{% endblock %}
-
-{% block content_footer %}
-  <div id="page-content-footer"></div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="presentation-layer" class="fullscreen-layer">
-    <div id="presentation-container"></div>
-  </div>
-{% endblock %}

+ 0 - 44
packages/app/src/server/views/layout-growi/shared_page.html

@@ -1,44 +0,0 @@
-{% extends 'base/layout.html' %}
-
-{% block content_header_wrapper %}
-<header class="py-0">
-  {% block content_header %}
-    <div id="grw-subnav-container"></div>
-  {% endblock %}
-</header>
-<div id="grw-subnav-switcher-container" class="d-edit-none"></div>
-<div id="grw-subnav-sticky-trigger" class="sticky-top"></div>
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-{% endblock %}
-
-{% block content_main_before %}
-{% endblock %}
-{% block search %}
-{% endblock %}
-{% block head_warn_alert_siteurl_undefined %}
-{% endblock %}
-{% block sidebar %}
-{% endblock %}
-
-{% block content_main %}
-  <div class="grw-container-convertible">
-
-    <div
-      id="is-shared-page"
-      data-share-link-expired-at="{% if sharelink.expiredAt %}{{ sharelink.expiredAt|datetz('Y/m/d H:i:s')}}{% endif %}"
-      data-share-link-created-at="{{ sharelink.createdAt|datetz('Y/m/d H:i:s')}}"
-    >
-      <div id="share-link-alert"></div>
-
-      {% include '../widget/page_content.html' %}
-
-    </div>
-
-  </div>
-{% endblock %}
-
-{% block body_end %}
-  <div id="presentation-layer" class="fullscreen-layer">
-    <div id="presentation-container"></div>
-  </div>
-{% endblock %}

+ 0 - 43
packages/app/src/server/views/layout-growi/user_page.html

@@ -1,43 +0,0 @@
-{% extends 'page.html' %}
-
-{% block content_main %}
-  <div class="grw-container-convertible user-page" data-testid="grw-user-page">
-
-    {% include '../widget/page_content.html' %}
-
-  </div>
-{% endblock %}
-
-{% block content_footer %}
-  {% include 'widget/comments.html' %}
-
-  {% if page %}
-    <div class="container-lg user-page-footer py-5">
-
-      <div class="grw-user-page-list-m d-edit-none">
-        <h2 class="grw-user-page-header border-bottom pb-2 mb-3" id="bookmarks-list">
-          <i class="fa fa-fw fa-bookmark-o" style="font-size: 1.3em"></i>
-          Bookmarks
-        </h2>
-        <div class="page-list" id="user-bookmark-list">
-          <div class="page-list-container">
-          </div>
-        </div>
-      </div>
-
-      <div class="grw-user-page-list-m mt-5 d-edit-none">
-        <h2 class="grw-user-page-header border-bottom pb-2 mb-3" id="recently-created-list">
-          <i id="recent-created-icon" class="mr-1"></i>
-          Recently Created
-        </h2>
-        <div class="page-list" id="user-created-list">
-          <div class="page-list-container">
-          </div>
-        </div>
-      </div>
-
-    </div>
-  {% endif %}
-
-  <div id="page-content-footer"></div>
-{% endblock %}

+ 0 - 155
packages/app/src/server/views/layout/layout.html

@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<html>
-{% block html_head %}
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <title>{% block html_title %}{{ customizeService.generateCustomTitle(page || path) }}{% endblock %}</title>
-  <meta name="description" content="">
-  <meta name="author" content="">
-
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-
-  <meta name="apple-mobile-web-app-title" content="{{ appService.getAppTitle() | preventXss }}">
-
-  {{ getConfig('crowi', 'customize:header') | default('') }}
-
-  {% include '../widget/headers/favicon.html' %}
-
-  {{ cdnScriptTagsByGroup('basis') }}
-
-  {% if local_config.env.MATHJAX %}
-    {% include '../widget/headers/mathjax.html' %}
-  {% endif %}
-
-  {% include '../widget/headers/drawio.html' %}
-
-  {% include '../widget/headers/scripts-for-dev.html' %}
-
-  <script src="{{ webpack_asset('js/boot.js') }}"></script>
-
-  <script src="{{ webpack_asset('js/vendors.js') }}" defer></script>
-  <script src="{{ webpack_asset('js/commons.js') }}" defer></script>
-  {% block html_head_loading_legacy %}
-    <script src="{{ webpack_asset('js/legacy.js') }}" defer></script>
-  {% endblock %}
-  {% block html_head_loading_app %}
-    <script src="{{ webpack_asset('js/app.js') }}" defer></script>
-  {% endblock %}
-
-  <!-- styles -->
-  {% include '../widget/headers/styles-for-app.html' %}
-  {% block theme_css_block %}
-    {% set themeName = getConfig('crowi', 'customize:theme') %}
-    {% include '../widget/headers/styles-theme.html' with {themeName: themeName} %}
-  {% endblock %}
-
-  {{ cdnStyleTagsByGroup('basis') }}
-  {{ cdnHighlightJsStyleTag(getConfig('crowi', 'customize:highlightJsStyle')) }}
-
-  {% block html_additional_headers %}{% endblock %}
-
-  <style>
-    {{ customizeService.getCustomCss() }}
-  </style>
-</head>
-{% endblock %}
-
-{% block html_body %}
-{% set additionalBodyClasses = []; %}
-{% block html_additional_body_classes %}{% endblock %}
-
-{% if page.expandContentWidth !== undefined %}
-  {% set isContainerFluid = page.expandContentWidth; %}
-{% else %}
-  {% set isContainerFluid = getConfig('crowi', 'customize:isContainerFluid'); %}
-{% endif %}
-
-{% if isContainerFluid  %}
-  {% set additionalBodyClasses = additionalBodyClasses|push('growi-layout-fluid') %}
-{% endif %}
-
-<body
-  class="{% block html_base_css %}{% endblock %} growi {{ additionalBodyClasses|join(' ') }}"
-  {% block html_base_attr %}{% endblock %}
- >
-
-<div id="growi-context-extractor"></div>
-
-<div id="wrapper">
-
-  {% block layout_head_nav %}
-    <nav id="grw-navbar" class="navbar grw-navbar navbar-expand navbar-dark sticky-top mb-0 px-0"></nav>
-  {% endblock  %} {# layout_head_nav #}
-
-  {% block head_warn_breaking_changes %}{% include '../widget/alert_breaking_changes.html' %}{% endblock %}
-
-  <div id="page-wrapper" class="page-wrapper d-flex d-print-block">
-    {% block sidebar %}
-    <div id="grw-sidebar-wrapper"></div>
-    {% endblock %}
-
-    <div class="flex-fill mw-0">
-      {% block head_warn_alert_siteurl_undefined %}{% include '../widget/alert_siteurl_undefined.html' %}{% endblock %}
-      {% block layout_main %}{% endblock %}
-    </div>
-  </div>
-
-  <div id="grw-navbar-bottom-container"></div>
-
-</div><!-- /#wrapper -->
-
-{% block fixed-controls %}
-<div id="grw-fab-container" data-testid="grw-fab-container"></div>
-{% endblock %}
-
-<div id="grw-hotkeys-manager"></div>
-
-<div id="system-version"></div>
-
-<div id="page-create-modal"></div>
-<div id="page-delete-modal"></div>
-<div id="empty-trash-modal"></div>
-<div id="page-duplicate-modal"></div>
-<div id="page-rename-modal"></div>
-<div id="page-presentation-modal"></div>
-<div id="page-accessories-modal"></div>
-<div id="descendants-page-list-modal"></div>
-<div id="page-put-back-modal"></div>
-<div id="show-page-accessories-modal"></div>
-<div id="shortcuts-modal"></div>
-
-
-{% block body_end %}
-{% endblock %}
-</body>
-{% endblock %}
-
-<script type="application/json" id="growi-context-hydrate">
-{{ local_config|json|safe|preventXss }}
-</script>
-
-{% if user != null %}
-  <script type="application/json" id="growi-current-user">
-  {{ user|json|safe|preventXss }}
-  </script>
-{% endif %}
-{% if userUISettings != null %}
-  <script type="application/json" id="growi-user-ui-settings">
-  {{ userUISettings|json|safe }}
-  </script>
-{% endif %}
-{% if targetAndAncestors != null %}
-  <script type="application/json" id="growi-pagetree-target-and-ancestors">
-  {{ targetAndAncestors|json|safe }}
-  </script>
-{% endif %}
-
-
-{% block custom_script %}
-<script>
-  {{ customizeService.getCustomScript() }}
-</script>
-{% endblock %}
-
-</html>

+ 0 - 171
packages/app/src/server/views/login.html

@@ -1,171 +0,0 @@
-{% extends 'layout/layout.html' %}
-
-{% block html_base_css %}login-page nologin{% endblock %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('Sign in')) }}{% endblock %}
-
-
-
-{#
- # Remove default contents
- #}
-{% block html_head_loading_legacy %}
-{% endblock %}
-{% block html_head_loading_app %}
-{% endblock %}
-{% block layout_head_nav %}
-{% endblock %}
-{% block sidebar %}
-{% endblock %}
-{% block head_warn_alert_siteurl_undefined %}
-{% endblock %}
-{% block fixed-controls %}
-{% endblock %}
-
-{% block html_additional_headers %}
-  <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
-{% endblock %}
-
-{% block layout_main %}
-
-<div class="main container-fluid">
-
-  <div class="row">
-    <div class="col-md-12">
-      <div class="login-header mx-auto">
-        <div class="logo mb-3">{% include 'widget/logo.html' %}</div>
-        <h1>{{ appService.getAppTitle() | preventXss }}</h1>
-
-          <div class="login-form-errors px-3">
-            {% if isLdapSetupFailed() %}
-            <div class="alert alert-warning small">
-              <strong><i class="icon-fw icon-info"></i>LDAP is enabled but the configuration has something wrong.</strong>
-              <br>
-              (Please set the environment variables <code>DEBUG=crowi:service:PassportService</code> to get the logs)
-            </div>
-            {% endif %}
-
-            {#
-            # The case that there already exists a user whose username matches ID of the newly created LDAP user
-            # https://github.com/weseek/growi/issues/193
-            #}
-            {% set failedProviderForDuplicatedUsernameException = req.flash('provider-DuplicatedUsernameException') %}
-            {% if failedProviderForDuplicatedUsernameException != null %}
-            <div class="alert alert-warning small">
-              <p><strong><i class="icon-fw icon-ban"></i>DuplicatedUsernameException occured</strong></p>
-              <p>
-                Your {{ failedProviderForDuplicatedUsernameException }} authentication was succeess, but a new user could not be created.
-                See the issue <a href="https://github.com/weseek/growi/issues/193">#193</a>.
-              </p>
-            </div>
-            {% endif %}
-
-            {% set success = req.flash('successMessage') %}
-            {% if success.length %}
-            <div class="alert alert-success">
-              {{ success }}
-            </div>
-            {% endif %}
-
-            {% set warn = req.flash('warningMessage') %}
-            {% if warn.length %}
-            {% for w in warn %}
-            <div class="alert alert-warning">
-              {{ w }}
-            </div>
-            {% endfor %}
-            {% endif %}
-
-            {% set error = req.flash('errorMessage') %}
-            {% if error.length %}
-            {% for e in error %}
-            <div class="alert alert-danger">
-              {{ e }}
-            </div>
-            {% endfor %}
-            {% endif %}
-
-            {% set errorMessages = req.flash('errorMessages') %}
-            {% if errorMessages.length > 0 %}
-            <div class="alert alert-danger">
-              <ul class="mb-0">
-              {% for error in errorMessages %}
-                <li>{{ error }}</li>
-              {% endfor %}
-              </ul>
-            </div>
-            {% endif %}
-
-            {% if req.form.errors.length > 0 %}
-            <div class="alert alert-danger">
-              <ul class="mb-0">
-              {% for error in req.form.errors %}
-                <li>{{ error }}</li>
-              {% endfor %}
-              </ul>
-            </div>
-            {% endif %}
-          </div>
-          <div id="register-form-errors" class="px-3">
-            {% set message = req.flash('registerWarningMessage') %}
-            {% if message.length %}
-            <div class="alert alert-danger">
-              {% for msg in message %}
-              {{ msg }}<br>
-              {% endfor  %}
-            </div>
-            {% endif %}
-          </div>
-      </div>
-
-      {% set registrationMode = getConfig('crowi', 'security:registrationMode') %}
-      {% set isRegistrationEnabled = passportService.isLocalStrategySetup && registrationMode != 'Closed' %}
-      {% set isPasswordResetEnabled = getConfig('crowi', 'security:passport-local:isPasswordResetEnabled') %}
-      {% set isEmailAuthenticationEnabled = getConfig('crowi', 'security:passport-local:isEmailAuthenticationEnabled') %}
-      <div
-        id="login-form"
-        data-is-registering="{{ req.query.register or req.body.registerForm or isRegistering }}"
-        data-username ="{{ req.body.registerForm.username }}"
-        data-name ="{{ req.body.registerForm.name }}"
-        data-email ="{{ req.body.registerForm.email || req.flash('email') }}"
-        data-is-registration-enabled="{{ isRegistrationEnabled }}"
-        data-registration-mode = "{{ registrationMode }}"
-        data-registration-white-list = "{{ getConfig('crowi', 'security:registrationWhiteList') }}"
-        data-is-password-reset-enabled = "{{ isPasswordResetEnabled }}"
-        data-is-email-authentication-enabled = "{{ isEmailAuthenticationEnabled }}"
-        data-is-local-strategy-setup = "{{ passportService.isLocalStrategySetup }}"
-        data-is-ldap-strategy-setup = "{{ passportService.isLdapStrategySetup}}"
-        data-is-google-auth-enabled = "{{ getConfig('crowi', 'security:passport-google:isEnabled') }}"
-        data-is-github-auth-enabled = "{{ getConfig('crowi', 'security:passport-github:isEnabled') }}"
-        data-is-facebook-auth-enabled = "{{ getConfig('crowi', 'security:passport-facebook:isEnabled') }}"
-        data-is-saml-auth-enabled = "{{ getConfig('crowi', 'security:passport-saml:isEnabled') }}"
-        data-is-oidc-auth-enabled = "{{ getConfig('crowi', 'security:passport-oidc:isEnabled') }}"
-        data-is-basic-auth-enabled = "{{ getConfig('crowi', 'security:passport-basic:isEnabled') }}"
-      ></div>
-    </div>
-  </div>
-</div>
-
-{% endblock %}
-
-
-{% block body_end %}
-<script>
-  $('#register-form input[name="registerForm[username]"]').change(function(e) {
-    var username = $(this).val();
-    $('#login-dialog').removeClass('has-error');
-    $('#input-group-username').removeClass('has-error');
-    $('#help-block-username').html("");
-
-    $.getJSON('/_api/v3/check-username', {username: username}, function(json) {
-      if (!json.valid) {
-        $('#help-block-username').html(
-          '<i class="icon-fw icon-ban"></i> This User ID is not available.'
-        );
-        $('#login-dialog').addClass('has-error');
-        $('#input-group-username').addClass('has-error');
-      }
-    });
-  });
-</script>
-{% endblock %}

+ 0 - 40
packages/app/src/server/views/maintenance-mode.html

@@ -1,40 +0,0 @@
-{% extends './layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('maintenance_mode.maintenance_mode')) }}{% endblock %}
-
-
-
-{#
-  # Remove default contents
-  #}
- {% block html_head_loading_legacy %}
- {% endblock %}
- {% block layout_head_nav %}
- {% endblock %}
- {% block sidebar %}
- {% endblock %}
- {% block head_warn_alert_siteurl_undefined %}
- {% endblock %}
- {% block fixed-controls %}
- {% endblock %}
-
-
-{% block layout_main %}
-<div id="main" class="main">
-  <div id="content-main" class="content-main container-lg">
-    <div class="container">
-      <div class="row justify-content-md-center">
-        <div class="col-md-6 mt-5">
-          <div class="text-center">
-            <h1><i class="icon-exclamation large"></i></h1>
-            <h1 class="text-center">{{ t('maintenance_mode.maintenance_mode') }}</h1>
-            <h3>{{ t('maintenance_mode.growi_is_under_maintenance') }}</h3>
-            <hr />
-            <div id="maintenance-mode-content"></div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>
-{% endblock %}

+ 0 - 21
packages/app/src/server/views/me/all-in-app-notifications.html

@@ -1,21 +0,0 @@
-{% extends '../layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('in_app_notification.notification_list')) }}{% endblock %}
-
-{% block layout_main %}
-
-{% block content_header_wrapper %}
-<header class="py-3">
-  <div class="container-fluid">
-    <h1 class="title">{{ t('in_app_notification.notification_list') }}</h1>
-  </div>
-</header>
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-{% endblock %}
-
-<div id="main" class="main">
-  <div id="content-main" class="content-main grw-container-convertible">
-    <div id="all-in-app-notifications"></div>
-  </div>
-</div>
-{% endblock %}

+ 0 - 21
packages/app/src/server/views/me/drafts.html

@@ -1,21 +0,0 @@
-{% extends '../layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('My Drafts')) }}{% endblock %}
-
-{% block layout_main %}
-
-{% block content_header_wrapper %}
-<header class="py-3">
-  <div class="container-fluid">
-    <h1 class="title">{{ t('My Drafts') }}</h1>
-  </div>
-</header>
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-{% endblock %}
-
-<div id="main" class="main">
-  <div id="content-main" class="content-main grw-container-convertible">
-    <div id="my-drafts"></div>
-  </div>
-</div>
-{% endblock %}

+ 0 - 21
packages/app/src/server/views/me/index.html

@@ -1,21 +0,0 @@
-{% extends '../layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('User Settings')) }}{% endblock %}
-
-{% block layout_main %}
-
-{% block content_header_wrapper %}
-<header class="py-3">
-  <div class="container-fluid">
-    <h1 class="title">{{ t('User Settings') }}</h1>
-  </div>
-</header>
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-{% endblock %}
-
-<div id="main" class="main">
-  <div id="content-main" class="content-main container-lg">
-    <div id="personal-setting"></div>
-  </div>
-</div>
-{% endblock %}

+ 0 - 64
packages/app/src/server/views/page_presentation.html

@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-
-    {{ getConfig('crowi', 'customize:header') | default('') }}
-
-    <!-- polyfills for IE11 -->
-    <script>
-      var userAgent = window.navigator.userAgent.toLowerCase();
-      if (userAgent.indexOf('msie') != -1 || userAgent.indexOf('trident') != -1) {
-        var scriptElement = document.createElement('script');
-        scriptElement.src = 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js';
-        var headElement = document.getElementsByTagName('head')[0];
-        headElement.appendChild(scriptElement);
-      }
-    </script>
-
-    {{ cdnScriptTagsByGroup('basis') }}
-
-    {% if env === 'development' %}
-      <script src="{{ webpack_asset('js/dev.js') }}" async></script>
-    {% endif %}
-
-    <script src="{{ webpack_asset('js/legacy-presentation.js') }}" defer></script>
-    <link rel="stylesheet" href="{{ webpack_asset('styles/style-presentation.css') }}">
-
-    <title>{{ page.path | path2name | preventXss }} | {{ page.path | preventXss }}</title>
-
-    {{ cdnStyleTagsByGroup('basis') }}
-    {{ cdnHighlightJsStyleTag(getConfig('crowi', 'customize:highlightJsStyle')) }}
-
-    <style>
-      {{ customizeService.getCustomCss() }}
-    </style>
-  </head>
-  <body>
-    <div class="reveal">
-      <div class="slides">
-        {% set pageBreakSeparator = getConfig('markdown', 'markdown:presentation:pageBreakSeparator') | default(1) %}
-        {% set pageBreakCustomSeparator = getConfig('markdown', 'markdown:presentation:pageBreakCustomSeparator') | default('') %}
-
-        {% if 3 === pageBreakSeparator %}
-          {% set dataSeparator = pageBreakCustomSeparator %}
-        {% elseif 2 === pageBreakSeparator %}
-          {% set dataSeparator = "\n-----\n" %}
-        {% else %}
-          {% set dataSeparator = "\n\n\n" %}
-        {% endif %}
-
-        <section data-markdown data-separator="{{dataSeparator}}">
-          <script type="text/template">
-{{ revision.body|presentation|safe }}
-          </script>
-        </section>
-        <section  data-markdown># {{ t('The end') }}</section>
-      </div>
-    </div>
-
-  </body>
-</html>

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

@@ -1,25 +0,0 @@
-{% 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 %}
-
-<!-- add .on-search to body tag class in layout -->
-{% block html_additional_body_classes %}
-  {% set additionalBodyClasses = additionalBodyClasses|push('on-search') %}
-{% endblock %}
-
-{% block layout_main %}
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-
-<div id="main" class="main search-page mt-0">
-  <div id="private-regacy-pages"></div>
-</div>
-{% endblock %} {# layout_main #}

+ 0 - 24
packages/app/src/server/views/redoc.html

@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <title>GROWI API v3</title>
-    <!-- needed for adaptive design -->
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
-
-    <!--
-    ReDoc doesn't change outer page styles
-    -->
-    <style>
-      body {
-        margin: 0;
-        padding: 0;
-      }
-    </style>
-  </head>
-  <body>
-    <redoc spec-url='/api-docs/swagger-spec.json'></redoc>
-    {{ cdnScriptTag('redoc-standalone') }}
-  </body>
-</html>

+ 0 - 48
packages/app/src/server/views/reset-password.html

@@ -1,48 +0,0 @@
-{% extends './layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('forgot_password.reset_password')) }}{% endblock %}
-
-
-{#
-  # Remove default contents
-  #}
- {% block html_head_loading_legacy %}
- {% endblock %}
- {% block html_head_loading_app %}
- {% endblock %}
- {% block layout_head_nav %}
- {% endblock %}
- {% block sidebar %}
- {% endblock %}
- {% block head_warn_alert_siteurl_undefined %}
- {% endblock %}
- {% block fixed-controls %}
- {% endblock %}
-
- {% block html_additional_headers %}
-   <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
- {% endblock %}
-
-{% block layout_main %}
-
-  <div id="main" class="main">
-    <div id="content-main" class="content-main container-lg">
-      <div class="container">
-        <div class="row justify-content-md-center">
-          <div class="col-md-6 mt-5">
-            <div class="text-center">
-              <h1><i class="icon-lock-open large"></i></h1>
-              <h2 class="text-center">{{ t('forgot_password.reset_password') }}</h2>
-              <h5>{{ email }}</h5>
-              <p class="mt-4">{{ t('forgot_password.password_reset_excecution_desc') }}</p>
-              <div id="password-reset-execution-form"></div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-    </div>
-  </div>
-
-{% endblock %}

+ 0 - 25
packages/app/src/server/views/search.html

@@ -1,25 +0,0 @@
-{% 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 %}
-
-<!-- add .on-search to body tag class in layout -->
-{% block html_additional_body_classes %}
-  {% set additionalBodyClasses = additionalBodyClasses|push('on-search') %}
-{% endblock %}
-
-{% block layout_main %}
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-
-<div id="main" class="main search-page mt-0">
-  <div id="search-page"></div>
-</div>
-{% endblock %} {# layout_main #}

+ 0 - 16
packages/app/src/server/views/tags.html

@@ -1,16 +0,0 @@
-{% extends 'layout/layout.html' %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName(t('Tags')) }}{% endblock %}
-
-{% block html_base_css %}tags-page{% endblock %}
-
-{% block layout_main %}
-<div id="grw-fav-sticky-trigger" class="sticky-top"></div>
-<div class="grw-container-convertible">
-  <div class="row">
-    <div id="main" class="main mt-3 col-md-12 tags-page">
-      <div class="" id="tags-page" data-testid="tags-page"></div>
-    </div>
-  </div>
-</div><!-- /.container-fluid -->
-{% endblock %} {# layout_main #}

+ 0 - 52
packages/app/src/server/views/user-activation.html

@@ -1,52 +0,0 @@
-{% extends 'layout/layout.html' %}
-
-{% block html_base_css %}invited nologin{% endblock %}
-
-{% block html_title %}{{ customizeService.generateCustomTitleForFixedPageName('Registration') }}{% endblock %}
-
-
-
-{#
-# Remove default contents
-#}
-{% block html_head_loading_legacy %}
-{% endblock %}
-{% block html_head_loading_app %}
-{% endblock %}
-{% block layout_head_nav %}
-{% endblock %}
-{% block sidebar %}
-{% endblock %}
-{% block head_warn_alert_siteurl_undefined %}
-{% endblock %}
-{% block fixed-controls %}
-{% endblock %}
-
-{% block html_additional_headers %}
-  <script src="{{ webpack_asset('js/nologin.js') }}" defer></script>
-{% endblock %}
-
-{% block layout_main %}
-
-<div class="main container-fluid">
-
-  <div class="row">
-
-    <div class="login-header mx-auto col-sm-3">
-      <div class="logo">{% include 'widget/logo.html' %}</div>
-      <h1>GROWI</h1>
-
-      <div
-        id="user-activation-form"
-        data-message-errors="{{ req.flash('errors') }}"
-        data-inputs="{{ req.flash('inputs') }}"
-        data-email="{{ userRegistrationOrder.email }}"
-        data-token="{{ userRegistrationOrder.token }}"
-        class="col-sm-12"
-      ></div>
-
-  </div>{# /.row #}
-
-</div>{# /.main #}
-
-{% endblock %}

+ 0 - 0
packages/app/src/server/views/widget/alert_breaking_changes.html


+ 0 - 6
packages/app/src/server/views/widget/alert_siteurl_undefined.html

@@ -1,6 +0,0 @@
-{% if !getConfig('crowi', 'app:siteUrl') %}
-<div class="alert alert-danger rounded-0 d-edit-none mb-0 px-4 py-2">
-  <i class="icon-exclamation"></i>
-  {{ t("security_setting.alert_siteUrl_is_not_set", { link: t('app_settings')}) }} &gt;&gt; <a href="/admin/app">{{t('app_settings')}}<i class="icon-login"></i></a>
-</div>
-{% endif %}

+ 0 - 1
packages/app/src/server/views/widget/header.html

@@ -1 +0,0 @@
-<div id="grw-subnav" class="grw-subnav d-edit-none"></div>

+ 0 - 16
packages/app/src/server/views/widget/headers/favicon.html

@@ -1,16 +0,0 @@
-<link rel="apple-touch-icon" sizes="57x57" href="/images/icons/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="/images/icons/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="/images/icons/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="/images/icons/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="/images/icons/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="/images/icons/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="/images/icons/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="/images/icons/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="/images/icons/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="/images/icons/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="/images/icons/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="/images/icons/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="/images/icons/favicon/favicon-16x16.png">
-<meta name="msapplication-TileColor" content="#4f5467">
-<meta name="msapplication-TileImage" content="/images/icons/favicon/ms-icon-144x144.png">
-<meta name="theme-color" content="#4f5467">

+ 0 - 21
packages/app/src/server/views/widget/headers/mathjax.html

@@ -1,21 +0,0 @@
-<!-- Mathjax -->
-<script type="text/javascript">
-  window.MathJax = {
-    startup: {
-      typeset: false
-    },
-    tex: {
-      processEscapes: true,
-      inlineMath: [['$', '$'], ['\\(', '\\)']]
-    },
-    options: {
-      renderActions: {
-        addMenu: [],
-        checkLoading: []
-      },
-      ignoreHtmlClass: 'tex2jax_ignore',
-      processHtmlClass: 'tex2jax_process'
-    }
-  };
-</script>
-{{ cdnScriptTag('mathjax') }}

+ 0 - 7
packages/app/src/server/views/widget/headers/scripts-for-dev.html

@@ -1,7 +0,0 @@
-{% if env === 'development' %}
-  <script src="{{ webpack_asset('js/dev.js') }}" async></script>
-  <!-- Browsersync -->
-  <script id="__bs_script__">//<![CDATA[
-    document.write("<script async src='http://HOST:3001/browser-sync/browser-sync-client.js?v=2.23.6'><\/script>".replace("HOST", location.hostname));
-  //]]></script>
-{% endif %}

+ 0 - 8
packages/app/src/server/views/widget/headers/styles-for-app.html

@@ -1,8 +0,0 @@
-{% if env === 'development' %}
-  <script src="{{ webpack_asset('styles/style-commons.js') }}"></script>
-  <script src="{{ webpack_asset('styles/style-app.js') }}"></script>
-{% else %}
-  <script src="{{ webpack_asset('styles/style-commons.js') }}"></script>
-  <link rel="stylesheet" href="{{ webpack_asset('styles/style-commons.css') }}">
-  <link rel="stylesheet" href="{{ webpack_asset('styles/style-app.css') }}">
-{% endif %}

+ 0 - 5
packages/app/src/server/views/widget/headers/styles-theme.html

@@ -1,5 +0,0 @@
-{% if env === 'development' %}
-  <script src="{{ webpack_asset('styles/theme-' + themeName + '.js') }}"></script>
-{% else %}
-  <link rel="stylesheet" id="grw-theme-link" href="{{ webpack_asset('styles/theme-' + themeName + '.css') }}">
-{% endif %}

+ 0 - 6
packages/app/src/server/views/widget/logo.html

@@ -1,6 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="32px" height="32px" viewBox="0 0 226.44 196.11">
-  <polygon class="group2" points="56.61 196.11 169.83 196.11 226.44 98.06 188.7 98.06 150.96 163.43 75.48 163.43 56.61 196.11" />
-  <polygon class="group1" points="75.48 98.05 94.35 65.37 150.96 65.38 207.57 65.37 207.57 65.38 226.44 98.06 169.83 98.06 113.22 98.06 94.39 130.66 94.3 130.66 84.92 114.4 75.48 98.05" />
-  <polygon class="group1" points="0 98.06 56.6 0 113.22 0.01 169.83 0.01 169.83 0.01 188.69 32.68 132.09 32.69 75.47 32.69 18.86 130.74 0 98.06" />
-  <polygon class="group1" points="75.48 163.43 56.61 130.74 37.71 163.46 47.15 179.81 56.54 196.07 56.63 196.07 75.48 163.43" />
-</svg>

+ 0 - 16
packages/app/src/server/views/widget/not_creatable_content.html

@@ -1,16 +0,0 @@
-<div class="row not-found-message-row">
-  <div class="col-md-12">
-    <h2 class="text-muted">
-      <i class="icon-ban" aria-hidden="true"></i>
-      Couldn't create path
-    </h2>
-  </div>
-</div>
-
-<div id="content-main" class="content-main page-list"
-  data-path="{{ encodeURI(path) }}"
-  data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-  data-page-is-not-creatable="true"
-  ></div>
-
-</div>

+ 0 - 35
packages/app/src/server/views/widget/not_found_content.html

@@ -1,35 +0,0 @@
-<div id="content-main" class="content-main page-list"
-  data-path="{{ encodeURI(path) }}"
-  data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-  data-page-grant="{{ grant }}"
-  data-page-grant-group="{{ grantedGroupId }}"
-  data-page-grant-group-name="{{ grantedGroupName }}"
-  data-page-is-empty="{{ isEmpty }}"
-  {% if templateTags %}
-    data-template-tags="{{ templateTags }}"
-  {% endif %}
-  >
-  <div id="display-switcher"></div>
-  <div id="not-found-page"></div>
-  <div class="tab-content">
-
-
-    {# TODO: should be removed and transplanted to PageContainer.initStateMarkdown ------ from here ------ #}
-
-    {% if getConfig('crowi', 'customize:isEnabledAttachTitleHeader') %}
-    {% if template %}
-    <script type="text/template" id="raw-text-original">{{ attachTitleHeader(path | path2name | preventXss) }}&NewLine;{{ template }}</script>
-    {% else %}
-    <script type="text/template" id="raw-text-original">{{ attachTitleHeader(path | path2name | preventXss) }}</script>
-    {% endif %}
-    {% else %}
-    {% if template %}
-    <script type="text/template" id="raw-text-original">{{ template }}</script>
-    {% endif %}
-    {% endif %}
-
-    {# TODO: should be removed and transplanted to PageContainer.initStateMarkdown ------ to here ------ #}
-  </div>
-
-  <div id="grw-page-status-alert-container"></div>
-</div>

+ 0 - 69
packages/app/src/server/views/widget/page_alerts.html

@@ -1,69 +0,0 @@
-<div class="row row-alerts d-edit-none">
-  <div class="col-sm-12">
-    {% if page && page.grant && page.grant > 1 %}
-
-      <p class="alert alert-primary py-3 px-4">
-      {% if page.grant == 2 %}
-        <i class="icon-fw icon-link"></i><strong>{{ t('Anyone with the link') }}</strong> ({{ t('Browsing of this page is restricted') }})
-      {% elseif page.grant == 4 %}
-        <i class="icon-fw icon-lock"></i><strong>{{ t('Only me') }}</strong> ({{ t('Browsing of this page is restricted') }})
-      {% elseif page.grant == 5 %}
-        <i class="icon-fw icon-organization"></i><strong>'{{ page.grantedGroup.name | preventXss }}' only</strong> ({{ t('Browsing of this page is restricted') }})
-      {% endif %}
-      </p>
-    {% endif %}
-
-    {% if getConfig('crowi', 'customize:isEnabledStaleNotification') %}
-      {% if page && page.updatedAt && page.getContentAge() > 0 %}
-        {% if page.getContentAge() == 1 %}
-        <div class="alert alert-info">
-        {% elseif page.getContentAge() == 2 %}
-        <div class="alert alert-warning">
-        {% else %}
-        <div class="alert alert-danger">
-        {% endif %}
-          <i class="icon-fw icon-hourglass"></i>
-          <strong>{{ t('page_page.notice.stale', { count: page.getContentAge() }) }}</strong>
-        </div>
-      {% endif %}
-    {% endif %}
-
-    <!-- This code has been replaced to <PageRedirectedAlert /> -->
-    <!-- {% if redirectFrom or req.query.redirectFrom %}
-    <div class="alert alert-pink d-edit-none py-3 px-4 d-flex align-items-center justify-content-between">
-      <span>
-        {% set fromPath = req.query.redirectFrom %}
-        {% if redirectFrom or req.query.redirectFrom %}
-        <div id="redirected-alert"></div>
-        {% endif %}
-      </span>
-      {% set hasRedirectLink = redirectFrom or req.query.redirectFrom or req.query.withRedirect %}
-      {% if user and not page.isDeleted() and hasRedirectLink %}
-        <button type="button" id="unlink-page-button" class="btn btn-outline-dark btn-sm float-right">
-          <i class="ti ti-unlink" aria-hidden="true"></i>
-          Unlink redirection
-        </button>
-      {% endif %}
-    </div>
-    {% endif %} -->
-
-    {% if req.query.unlinked %}
-    <div class="alert alert-info d-edit-none py-3 px-4">
-      <strong>{{ t('Unlinked') }}: </strong> {{ t('page_page.notice.unlinked') }}
-    </div>
-    {% endif %}
-
-    {% set dmessage = req.flash('dangerMessage') %}
-    {% if dmessage.length %}
-    <div class="alert alert-danger mb-4">
-      {{ dmessage }}
-    </div>
-    {% endif %}
-
-    {% if isTrashPage(page.path) %}
-      <div id="trash-page-alert"></div>
-    {% endif %}
-
-    <div id="fix-page-grant-alert"></div>
-  </div>
-</div>

+ 0 - 49
packages/app/src/server/views/widget/page_content.html

@@ -1,49 +0,0 @@
-{% if page %}
-<div id="content-main" class="content-main d-flex"
-  data-path="{{ encodeURI(page.path) }}"
-  data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-  data-page-id="{% if page %}{{ page._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-author="{% if revision && revision.author %}{{ revision.author|json }}{% endif %}"
-  data-page-revision-id-hackmd-synced="{% if revisionHackmdSynced %}{{ revisionHackmdSynced.toString() }}{% endif %}"
-  data-page-id-on-hackmd="{% if pageIdOnHackmd %}{{ pageIdOnHackmd.toString() }}{% endif %}"
-  data-page-has-draft-on-hackmd="{% if hasDraftOnHackmd %}{{ hasDraftOnHackmd.toString() }}{% endif %}"
-  data-page-grant="{{ grant }}"
-  data-page-grant-group="{{ grantedGroupId }}"
-  data-page-grant-group-name="{{ grantedGroupName }}"
-  data-page-is-not-creatable="false"
-  data-page-created-at="{{ page.createdAt|datetz('Y/m/d H:i:s') }}"
-  data-page-creator="{% if page && page.creator %}{{ page.creator|json }}{% endif %}"
-  data-page-last-update-username="{% if page && page.lastUpdateUser %}{{ page.lastUpdateUser.name }}{% endif %}"
-  data-page-updated-at="{{ page.updatedAt|datetz('Y/m/d H:i:s') }}"
-  data-page-delete-username="{% if page && page.deleteUser %}{{ page.deleteUser.name }}{% endif %}"
-  data-page-deleted-at="{% if page && page.deletedAt %}{{ page.deletedAt|datetz('Y/m/d H:i:s') }}{% endif %}"
-  data-page-has-children="{% if pages.length > 0 %}true{% else %}false{% endif %}"
-  data-page-user="{% if pageUser %}{{ pageUser|json }}{% else %}null{% endif %}"
-  data-share-links-number="{% if page %}{{ sharelinksNumber }}{% endif %}"
-  data-share-link-id="{% if sharelink %}{{ sharelink._id|json }}{% endif %}"
-  data-has-parent="{{ page.parent != null }}"
-  >
-{% else %}
-<div id="content-main" class="content-main d-flex"
-  data-path="{{ encodeURI(path) }}"
-  data-current-user="{% if user %}{{ user._id.toString() }}{% endif %}"
-  data-page-has-children="{% if pages.length > 0 %}true{% else %}false{% endif %}"
-  >
-{% endif %}
-
-<div class="flex-grow-1 flex-basis-0 mw-0">
-  {% include 'page_alerts.html' %}
-
-  <div id="display-switcher">
-    <script type="text/template" id="raw-text-original">{{ revision.body.toString() | encodeHTML }}</script>
-  </div>
-  <div id="page-editor-navbar-bottom-container" class="d-none d-edit-block"></div>
-</div>
-
-<div id="grw-page-status-alert-container"></div>
-<div id="page-context"></div>
-
-</div>
-

+ 0 - 65
packages/app/src/server/views/widget/page_list.html

@@ -1,65 +0,0 @@
-<ul class="page-list-ul page-list-ul-flat">
-{% for data in pages %}
-
-{% if pagePropertyName %}
-  {% set listPage = data[pagePropertyName] %}
-{% else %}
-  {% set listPage = data %}
-{% endif %}
-
-<li>
-  <img src="{{ listPage.lastUpdateUser.imageUrlCached|default('/images/icons/user.svg') }}" class="picture rounded-circle">
-  <a href="{{ encodeURI(listPage.path) }}" class="text-break ml-1">
-    {{ listPage.path | preventXss }}
-  </a>
-  <span class="page-list-meta">
-    {% if listPage.isTopPage() %}
-      <span class="badge badge-info">TOP</span>
-    {% endif  %}
-
-    {% if listPage.isTemplate() %}
-      <span class="badge badge-info">TMPL</span>
-    {% endif  %}
-
-    {% if listPage.commentCount > 0 %}
-    <span>
-      <i class="icon-bubble"></i>{{ listPage.commentCount }}
-    </span>
-    {% endif  %}
-
-    {% if listPage.liker.length > 0 %}
-    <span class="page-list-liker" data-count="{{ listPage.liker.length }}">
-      <i class="fa fa-heart-o"></i>{{ listPage.liker.length }}
-    </span>
-    {% endif  %}
-
-    {% if viewConfig.seener_threshold and listPage.seenUsers.length >= viewConfig.seener_threshold %}
-    <span class="page-list-seer" data-count="{{ listPage.seenUsers.length }}">
-      <i class="fa fa-paw"></i>{{ listPage.seenUsers.length }}
-    </span>
-    {% endif %}
-
-    {% if !listPage.isPublic() %}
-    <span>
-      <i class="icon icon-lock"></i>
-    </span>
-    {% endif %}
-  </span>
-</li>
-{% endfor %}
-</ul>
-
-{% if pager %}
-<ul class="pagination">
-  {% if pager.prev !== null %}
-    <li class="prev">
-      <a href="{{ encodeURI(path) }}?offset={{ pager.prev }}" class="btn btn-outline-secondary"><i class="icon-arrow-left"></i> Prev</a>
-    </li>
-  {% endif %}
-  {% if pager.next %}
-    <li class="next">
-      <a href="{{ encodeURI(path) }}?offset={{ pager.next }}" class="btn btn-outline-secondary">Next <i class="icon-arrow-right"></i></a>
-    </li>
-  {% endif %}
-</ul>
-{% endif %}

+ 2 - 103
yarn.lock

@@ -4947,14 +4947,6 @@ ajv@^8.0.1:
     require-from-string "^2.0.2"
     require-from-string "^2.0.2"
     uri-js "^4.2.2"
     uri-js "^4.2.2"
 
 
-align-text@^0.1.1, align-text@^0.1.3:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
-  dependencies:
-    kind-of "^3.0.2"
-    longest "^1.0.1"
-    repeat-string "^1.5.2"
-
 ansi-colors@^4.1.1:
 ansi-colors@^4.1.1:
   version "4.1.1"
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
   resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@@ -5425,10 +5417,6 @@ async@^3.2.3:
   resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
   resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
   integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
   integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
 
 
-async@~0.2.6:
-  version "0.2.10"
-  resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-
 asynckit@^0.4.0:
 asynckit@^0.4.0:
   version "0.4.0"
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -6325,10 +6313,6 @@ camelcase-keys@^7.0.0:
     quick-lru "^5.1.1"
     quick-lru "^5.1.1"
     type-fest "^1.2.1"
     type-fest "^1.2.1"
 
 
-camelcase@^1.0.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
 camelcase@^2.0.0:
 camelcase@^2.0.0:
   version "2.1.1"
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
@@ -6407,13 +6391,6 @@ ccount@^2.0.0:
   resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
   resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5"
   integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
   integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
 
 
-center-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
-  dependencies:
-    align-text "^0.1.3"
-    lazy-cache "^1.0.3"
-
 chainsaw@~0.1.0:
 chainsaw@~0.1.0:
   version "0.1.0"
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
   resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98"
@@ -6779,14 +6756,6 @@ cli@~1.0.0:
     exit "0.1.2"
     exit "0.1.2"
     glob "^7.1.1"
     glob "^7.1.1"
 
 
-cliui@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
-  dependencies:
-    center-align "^0.1.1"
-    right-align "^0.1.1"
-    wordwrap "0.0.2"
-
 cliui@^4.0.0:
 cliui@^4.0.0:
   version "4.1.0"
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
@@ -7792,7 +7761,7 @@ decamelize-keys@^1.1.0:
     decamelize "^1.1.0"
     decamelize "^1.1.0"
     map-obj "^1.0.0"
     map-obj "^1.0.0"
 
 
-decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
   version "1.2.0"
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
 
 
@@ -9747,10 +9716,6 @@ express-validator@^6.14.0:
     lodash "^4.17.21"
     lodash "^4.17.21"
     validator "^13.7.0"
     validator "^13.7.0"
 
 
-express-webpack-assets@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/express-webpack-assets/-/express-webpack-assets-0.1.0.tgz#000fb3413eb0d512cbd6cd3f6a10b5e70dbe0079"
-
 express@^4.16.1:
 express@^4.16.1:
   version "4.16.2"
   version "4.16.2"
   resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
   resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
@@ -13572,10 +13537,6 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0:
   resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
   resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
   integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
   integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
 
 
-lazy-cache@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
 lazystream@^1.0.0:
 lazystream@^1.0.0:
   version "1.0.0"
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
   resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
@@ -14037,10 +13998,6 @@ longest-streak@^3.0.0:
   resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
   resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d"
   integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==
   integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==
 
 
-longest@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
   version "1.3.1"
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
   resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
@@ -15385,10 +15342,6 @@ minimist@^1.2.0:
   version "1.2.0"
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
 
 
-minimist@~0.0.1:
-  version "0.0.10"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
 minipass-collect@^1.0.2:
 minipass-collect@^1.0.2:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
   resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
@@ -16711,13 +16664,6 @@ openid-client@^5.1.2:
     object-hash "^2.0.1"
     object-hash "^2.0.1"
     oidc-token-hash "^5.0.1"
     oidc-token-hash "^5.0.1"
 
 
-optimist@~0.6:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
-  dependencies:
-    minimist "~0.0.1"
-    wordwrap "~0.0.2"
-
 optional@0.1.4:
 optional@0.1.4:
   version "0.1.4"
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3"
   resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3"
@@ -20290,12 +20236,6 @@ rfdc@^1.3.0:
   resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
   resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
   integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
   integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
 
 
-right-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
-  dependencies:
-    align-text "^0.1.1"
-
 rimraf@2, rimraf@^2.6.1:
 rimraf@2, rimraf@^2.6.1:
   version "2.7.1"
   version "2.7.1"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
@@ -21171,7 +21111,7 @@ source-map-url@^0.4.0:
   version "0.4.0"
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
   resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
 
 
-source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1:
+source-map@^0.5.0, source-map@^0.5.6:
   version "0.5.7"
   version "0.5.7"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
   integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
   integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -21868,13 +21808,6 @@ swagger2openapi@^5.3.1:
     yaml "^1.3.1"
     yaml "^1.3.1"
     yargs "^12.0.5"
     yargs "^12.0.5"
 
 
-swig-templates@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/swig-templates/-/swig-templates-2.0.2.tgz#d2502a7303019356f4ea76ea9065d4f58af6ab75"
-  dependencies:
-    optimist "~0.6"
-    uglify-js "2.6.0"
-
 swr@^1.3.0:
 swr@^1.3.0:
   version "1.3.0"
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8"
   resolved "https://registry.yarnpkg.com/swr/-/swr-1.3.0.tgz#c6531866a35b4db37b38b72c45a63171faf9f4e8"
@@ -22951,24 +22884,11 @@ uberproto@^1.1.0:
   version "1.2.0"
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-1.2.0.tgz#61d4eab024f909c4e6ea52be867c4894a4beeb76"
   resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-1.2.0.tgz#61d4eab024f909c4e6ea52be867c4894a4beeb76"
 
 
-uglify-js@2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.6.0.tgz#25eaa1cc3550e39410ceefafd1cfbb6b6d15f001"
-  dependencies:
-    async "~0.2.6"
-    source-map "~0.5.1"
-    uglify-to-browserify "~1.0.0"
-    yargs "~3.10.0"
-
 uglify-js@^3.1.4:
 uglify-js@^3.1.4:
   version "3.13.4"
   version "3.13.4"
   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574"
   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574"
   integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==
   integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==
 
 
-uglify-to-browserify@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
 uglifycss@^0.0.29:
 uglifycss@^0.0.29:
   version "0.0.29"
   version "0.0.29"
   resolved "https://registry.yarnpkg.com/uglifycss/-/uglifycss-0.0.29.tgz#abe49531155d146e75dd2fdf933d371bc1180054"
   resolved "https://registry.yarnpkg.com/uglifycss/-/uglifycss-0.0.29.tgz#abe49531155d146e75dd2fdf933d371bc1180054"
@@ -23934,10 +23854,6 @@ wide-align@^1.1.2:
   dependencies:
   dependencies:
     string-width "^1.0.2 || 2 || 3 || 4"
     string-width "^1.0.2 || 2 || 3 || 4"
 
 
-window-size@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
 windows-release@^3.1.0:
 windows-release@^3.1.0:
   version "3.3.3"
   version "3.3.3"
   resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
   resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
@@ -23950,18 +23866,10 @@ word-wrap@^1.2.3, word-wrap@~1.2.3:
   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
 
 
-wordwrap@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
 wordwrap@^1.0.0:
 wordwrap@^1.0.0:
   version "1.0.0"
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
 
 
-wordwrap@~0.0.2:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-
 wrap-ansi@^2.0.0:
 wrap-ansi@^2.0.0:
   version "2.1.0"
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -24373,15 +24281,6 @@ yargs@^17.3.1:
     y18n "^5.0.5"
     y18n "^5.0.5"
     yargs-parser "^21.0.0"
     yargs-parser "^21.0.0"
 
 
-yargs@~3.10.0:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
-  dependencies:
-    camelcase "^1.0.2"
-    cliui "^2.1.0"
-    decamelize "^1.0.0"
-    window-size "0.1.0"
-
 yauzl@^2.10.0:
 yauzl@^2.10.0:
   version "2.10.0"
   version "2.10.0"
   resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
   resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"