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

Merge branch 'master' of https://github.com/weseek/growi into imprv/nav-2nd-ed

Yuki Takei 5 лет назад
Родитель
Сommit
b2f938e1b4

+ 3 - 3
resource/locales/zh_CN/meta.json

@@ -1,4 +1,4 @@
 {
 {
-  "id": "zh_CN",
-  "displayName": "简体中文"
-}
+	"id": "zh_CN",
+	"displayName": "简体中文"
+}

+ 24 - 0
resource/locales/zh_CN/translation.json

@@ -695,5 +695,29 @@
 		"Sign in error": "登录错误",
 		"Sign in error": "登录错误",
 		"Registration successful": "注册成功",
 		"Registration successful": "注册成功",
 		"Setup": "安装程序"
 		"Setup": "安装程序"
+	},
+	"message": {
+		"successfully_connected": "连接成功!",
+		"fail_to_save_access_token": "无法保存访问令牌。请再试一次。",
+		"fail_to_fetch_access_token": "无法获取访问令牌。请重新连接。",
+		"successfully_disconnected": "成功断开连接!",
+		"strategy_has_not_been_set_up": "{{strategy}尚未设置",
+		"maximum_number_of_users": "注册的用户数不能超过最大值。",
+		"database_error": "发生数据库服务器错误",
+		"sign_in_failure": "登录失败。",
+		"aws_sttings_required": "使用此功能所需的AWS设置。请询问管理员。",
+		"application_already_installed": "应用程序已安装。",
+		"email_address_could_not_be_used": "无法使用此电子邮件地址。(确保允许的电子邮件地址)",
+		"user_id_is_not_available.": "此用户ID不可用。",
+		"email_address_is_already_registered": "此电子邮件地址已注册。",
+		"can_not_register_maximum_number_of_users": "注册的用户数不能超过最大值。",
+		"failed_to_register": "注册失败。",
+		"successfully_created": "已成功创建用户{{username}。",
+		"can_not_activate_maximum_number_of_users": "无法激活超过最大用户数的用户。",
+		"failed_to_activate": "无法激活。",
+		"unable_to_use_this_user": "无法使用此用户。",
+		"complete_to_install1": "完成安装GROWI!请以管理员帐户登录。",
+		"complete_to_install2": "完成安装GROWI!请先检查此页上的每个设置。",
+		"failed_to_create_admin_user": "无法创建管理用户。{{errMessage}"
 	}
 	}
 }
 }

+ 1 - 1
src/client/js/components/Navbar/SearchTop.jsx

@@ -77,7 +77,7 @@ class SearchTop extends React.Component {
     const isReachable = config.isSearchServiceReachable;
     const isReachable = config.isSearchServiceReachable;
 
 
     return (
     return (
-      <div className={`form-group mb-0 ${isReachable ? '' : 'has-error'}`}>
+      <div className={`form-group mb-0 d-print-none ${isReachable ? '' : 'has-error'}`}>
         <div className="input-group flex-nowrap">
         <div className="input-group flex-nowrap">
           <div className="input-group-prepend">
           <div className="input-group-prepend">
             <button className="btn btn-secondary dropdown-toggle py-0" type="button" data-toggle="dropdown" aria-haspopup="true">
             <button className="btn btn-secondary dropdown-toggle py-0" type="button" data-toggle="dropdown" aria-haspopup="true">

+ 2 - 0
src/client/js/components/PageEditor.jsx

@@ -21,6 +21,8 @@ class PageEditor extends React.Component {
   constructor(props) {
   constructor(props) {
     super(props);
     super(props);
 
 
+    this.previewElement = React.createRef();
+
     const config = this.props.appContainer.getConfig();
     const config = this.props.appContainer.getConfig();
     const isUploadable = config.upload.image || config.upload.file;
     const isUploadable = config.upload.image || config.upload.file;
     const isUploadableFile = config.upload.file;
     const isUploadableFile = config.upload.file;

+ 4 - 2
src/client/js/components/PageEditor/Preview.jsx

@@ -82,7 +82,9 @@ class Preview extends React.PureComponent {
             className="page-editor-preview-body"
             className="page-editor-preview-body"
             ref={(elm) => {
             ref={(elm) => {
                 this.previewElement = elm;
                 this.previewElement = elm;
-                this.props.inputRef(elm);
+                if (this.props.inputRef != null) {
+                  this.props.inputRef(elm);
+                }
               }}
               }}
             onScroll={(event) => {
             onScroll={(event) => {
                 if (this.props.onScroll != null) {
                 if (this.props.onScroll != null) {
@@ -112,7 +114,7 @@ Preview.propTypes = {
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
   appContainer: PropTypes.instanceOf(AppContainer).isRequired,
 
 
   markdown: PropTypes.string,
   markdown: PropTypes.string,
-  inputRef: PropTypes.func.isRequired, // for getting div element
+  inputRef: PropTypes.func,
   isMathJaxEnabled: PropTypes.bool,
   isMathJaxEnabled: PropTypes.bool,
   renderMathJaxOnInit: PropTypes.bool,
   renderMathJaxOnInit: PropTypes.bool,
   onScroll: PropTypes.func,
   onScroll: PropTypes.func,

+ 1 - 1
src/client/js/components/Sidebar.jsx

@@ -167,7 +167,7 @@ class Sidebar extends React.Component {
 
 
     return (
     return (
       <>
       <>
-        <div className={`grw-sidebar ${this.isDrawerMode ? 'grw-sidebar-drawer' : ''} ${isDrawerOpened ? 'open' : ''}`}>
+        <div className={`grw-sidebar d-print-none ${this.isDrawerMode ? 'grw-sidebar-drawer' : ''} ${isDrawerOpened ? 'open' : ''}`}>
           <ThemeProvider
           <ThemeProvider
             theme={theme => ({
             theme={theme => ({
               ...theme,
               ...theme,

+ 1 - 1
src/client/js/legacy/crowi.js

@@ -106,7 +106,7 @@ Crowi.initClassesByOS = function() {
   const platform = navigator.platform.toLowerCase();
   const platform = navigator.platform.toLowerCase();
   const isMac = (platform.indexOf('mac') > -1);
   const isMac = (platform.indexOf('mac') > -1);
 
 
-  document.querySelectorAll('.system-version .cmd-key').forEach((element) => {
+  document.querySelectorAll('.cmd-key').forEach((element) => {
     if (isMac) {
     if (isMac) {
       element.classList.add('mac');
       element.classList.add('mac');
     }
     }

+ 4 - 11
src/client/styles/scss/_layout.scss

@@ -75,6 +75,10 @@ body {
       }
       }
     }
     }
 
 
+    .row {
+      display: block !important;
+    }
+
     .revision-toc {
     .revision-toc {
       float: none;
       float: none;
       max-width: 100%;
       max-width: 100%;
@@ -100,14 +104,3 @@ body {
     }
     }
   }
   }
 }
 }
-
-.system-version {
-  position: fixed;
-  right: 0.5em;
-  bottom: 0;
-  opacity: 0.6;
-
-  > span {
-    margin-left: 0.5em;
-  }
-}

+ 1 - 0
src/server/routes/apiv3/docs.js

@@ -9,6 +9,7 @@ const router = express.Router();
 // paths to scan
 // paths to scan
 const APIS = [
 const APIS = [
   'src/server/routes/apiv3/**/*.js',
   'src/server/routes/apiv3/**/*.js',
+  'src/server/models/**/*.js',
 ];
 ];
 
 
 module.exports = (crowi) => {
 module.exports = (crowi) => {

+ 2 - 2
src/server/views/layout-kibela/base/layout.html

@@ -9,10 +9,10 @@
 {% block layout_main %}
 {% block layout_main %}
 <div class="container-fluid p-0">
 <div class="container-fluid p-0">
 
 
-  <div class="row body m-0 p-0">
+  <div class="row body m-0 p-0 d-print-block">
 
 
     <div id="main" class="main col-12 kibela-block round-corner {% if page %}{{ css.grant(page) }}{% endif %}{% block main_css_class %}{% endblock %}">
     <div id="main" class="main col-12 kibela-block round-corner {% if page %}{{ css.grant(page) }}{% endif %}{% block main_css_class %}{% endblock %}">
-      <div class="row grw-subnav d-edit-none">
+      <div class="row grw-subnav d-edit-none d-print-block">
         <div class="col-12 col-xl-9 col-lg-8 px-0 mx-0 bg-white kibela-border-top round-corner">
         <div class="col-12 col-xl-9 col-lg-8 px-0 mx-0 bg-white kibela-border-top round-corner">
           {% block content_header %} {% endblock %}
           {% block content_header %} {% endblock %}
         </div>
         </div>

+ 1 - 1
src/server/views/layout/layout.html

@@ -84,7 +84,7 @@
 
 
   {% block head_warn_breaking_changes %}{% include '../widget/alert_breaking_changes.html' %}{% endblock %}
   {% block head_warn_breaking_changes %}{% include '../widget/alert_breaking_changes.html' %}{% endblock %}
 
 
-  <div id="page-wrapper" class="page-wrapper d-flex">
+  <div id="page-wrapper" class="page-wrapper d-flex d-print-block">
     {# Sidebar #}
     {# Sidebar #}
     <div id="grw-sidebar-wrapper"></div>
     <div id="grw-sidebar-wrapper"></div>