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

Merge remote-tracking branch 'origin/support/apply-bootstrap4' into support/fix-subnav-layout

itizawa 6 лет назад
Родитель
Сommit
961856c8e0

+ 8 - 4
.github/workflows/ci.yml

@@ -53,12 +53,13 @@ jobs:
         yarn lint
 
     - name: Slack Notification
-      uses: homoluctus/slatify@master
+      uses: weseek/ghaction-slack-notification@master
       if: failure()
       with:
         type: ${{ job.status }}
         job_name: '*test (${{ matrix.node-version }})*'
         channel: '#ci'
+        isCompactMode: true
         url: ${{ secrets.SLACK_WEBHOOK_URL }}
 
 
@@ -113,12 +114,13 @@ jobs:
         MONGO_URI: mongodb://localhost:27017/growi_test
 
     - name: Slack Notification
-      uses: homoluctus/slatify@master
+      uses: weseek/ghaction-slack-notification@master
       if: failure()
       with:
         type: ${{ job.status }}
         job_name: '*test (${{ matrix.node-version }})*'
         channel: '#ci'
+        isCompactMode: true
         url: ${{ secrets.SLACK_WEBHOOK_URL }}
 
 
@@ -183,12 +185,13 @@ jobs:
         yarn build:dev
 
     - name: Slack Notification
-      uses: homoluctus/slatify@master
+      uses: weseek/ghaction-slack-notification@master
       if: failure()
       with:
         type: ${{ job.status }}
         job_name: '*build-dev (${{ matrix.node-version }})*'
         channel: '#ci'
+        isCompactMode: true
         url: ${{ secrets.SLACK_WEBHOOK_URL }}
 
 
@@ -268,10 +271,11 @@ jobs:
         path: report
 
     - name: Slack Notification
-      uses: homoluctus/slatify@master
+      uses: weseek/ghaction-slack-notification@master
       if: failure()
       with:
         type: ${{ job.status }}
         job_name: '*build-prod (${{ matrix.node-version }})*'
         channel: '#ci'
+        isCompactMode: true
         url: ${{ secrets.SLACK_WEBHOOK_URL }}

+ 1 - 1
resource/locales/en-US/translation.json

@@ -294,7 +294,7 @@
   "modal_shortcuts": {
     "global": {
       "title": "Global shortcuts",
-      "Open/Close shortcut help": "Open/Close shortcut help",
+      "Open/Close shortcut help": "Open/Close<br>shortcut help",
       "Edit Page": "Edit Page",
       "Create Page": "Create Page",
       "Show Contributors": "Show Contributors",

+ 2 - 2
resource/locales/ja/translation.json

@@ -292,10 +292,10 @@
   "modal_shortcuts": {
     "global": {
       "title": "グローバルショートカット",
-      "Open/Close shortcut help": "ショートカットヘルプの表示/非表示",
+      "Open/Close shortcut help": "ショートカットヘルプ<br>の表示/非表示",
       "Edit Page": "ページ編集",
       "Create Page": "ページ作成",
-      "Show Contributors": "コントリビューターを表示",
+      "Show Contributors": "コントリビューター<br>を表示",
       "Konami Code": "コナミコマンド",
       "konami_code_url": "https://ja.wikipedia.org/wiki/コナミコマンド"
     },

+ 7 - 7
src/client/js/components/Admin/App/MailSetting.jsx

@@ -40,8 +40,8 @@ class MailSetting extends React.Component {
       <React.Fragment>
         <p className="card well">{t('admin:app_setting.smtp_used')} {t('admin:app_setting.smtp_but_aws')}<br />{t('admin:app_setting.neihter_of')}</p>
         <div className="row form-group mb-5">
-          <label className="col-3 col-form-label">{t('admin:app_setting.from_e-mail_address')}</label>
-          <div className="col-6">
+          <label className="col-md-3 col-form-label text-left">{t('admin:app_setting.from_e-mail_address')}</label>
+          <div className="col-md-6">
             <input
               className="form-control"
               type="text"
@@ -53,8 +53,8 @@ class MailSetting extends React.Component {
         </div>
 
         <div className="row form-group mb-5">
-          <label className="col-3 col-form-label">{t('admin:app_setting.smtp_settings')}</label>
-          <div className="col-4">
+          <label className="col-md-3 col-form-label text-left">{t('admin:app_setting.smtp_settings')}</label>
+          <div className="col-md-4">
             <label>{t('admin:app_setting.host')}</label>
             <input
               className="form-control"
@@ -63,7 +63,7 @@ class MailSetting extends React.Component {
               onChange={(e) => { adminAppContainer.changeSmtpHost(e.target.value) }}
             />
           </div>
-          <div className="col-2">
+          <div className="col-md-2">
             <label>{t('admin:app_setting.port')}</label>
             <input
               className="form-control"
@@ -74,7 +74,7 @@ class MailSetting extends React.Component {
         </div>
 
         <div className="row form-group mb-5">
-          <div className="col-3 offset-3">
+          <div className="col-md-3 offset-md-3">
             <label>{t('admin:app_setting.user')}</label>
             <input
               className="form-control"
@@ -83,7 +83,7 @@ class MailSetting extends React.Component {
               onChange={(e) => { adminAppContainer.changeSmtpUser(e.target.value) }}
             />
           </div>
-          <div className="col-3">
+          <div className="col-md-3">
             <label>{t('Password')}</label>
             <input
               className="form-control"

+ 3 - 3
src/client/js/components/Admin/ElasticsearchManagement/ElasticsearchManagement.jsx

@@ -162,7 +162,7 @@ class ElasticsearchManagement extends React.Component {
 
         {/* Controls */}
         <div className="row">
-          <label className="col-md-3 col-form-label">{ t('full_text_search_management.reconnect') }</label>
+          <label className="col-md-3 col-form-label text-left text-md-right">{ t('full_text_search_management.reconnect') }</label>
           <div className="col-md-6">
             <ReconnectControls
               isConfigured={isConfigured}
@@ -175,7 +175,7 @@ class ElasticsearchManagement extends React.Component {
         <hr />
 
         <div className="row">
-          <label className="col-md-3 col-form-label">{ t('full_text_search_management.normalize') }</label>
+          <label className="col-md-3 col-form-label text-left text-md-right">{ t('full_text_search_management.normalize') }</label>
           <div className="col-md-6">
             <NormalizeIndicesControls
               isRebuildingProcessing={isRebuildingProcessing}
@@ -189,7 +189,7 @@ class ElasticsearchManagement extends React.Component {
         <hr />
 
         <div className="row">
-          <label className="col-md-3 col-form-label">{ t('full_text_search_management.rebuild') }</label>
+          <label className="col-md-3 col-form-label text-left text-md-right">{ t('full_text_search_management.rebuild') }</label>
           <div className="col-md-6">
             <RebuildIndexControls
               isRebuildingProcessing={isRebuildingProcessing}

+ 4 - 3
src/client/js/components/Admin/ElasticsearchManagement/StatusTable.jsx

@@ -20,10 +20,11 @@ class StatusTable extends React.PureComponent {
     return (
       <div className="card">
         <div className="card-header">
-          <a role="button" data-toggle="collapse" href={`#${collapseId}`} aria-expanded="true" aria-controls={collapseId}>
+
+          <a role="button" className="text-nowrap mr-2" data-toggle="collapse" href={`#${collapseId}`} aria-expanded="true" aria-controls={collapseId}>
             <i className="fa fa-fw fa-database"></i> {indexName}
           </a>
-          <span className="ml-3">{aliasLabels}</span>
+          <span className="ml-md-3">{aliasLabels}</span>
         </div>
         <div id={collapseId} className="collapse">
           <div className="card-body">
@@ -82,7 +83,7 @@ class StatusTable extends React.PureComponent {
       <div className="row">
         { Object.keys(indexNameToDataMap).map((indexName) => {
           return (
-            <div key={`col-${indexName}`} className="col-6">
+            <div key={`col-${indexName}`} className="col-md-6">
               { this.renderIndexInfoPanel(indexName, indexNameToDataMap[indexName], indexNameToAliasMap[indexName]) }
             </div>
           );

+ 5 - 5
src/client/js/components/Admin/Notification/SlackAppConfiguration.jsx

@@ -64,8 +64,8 @@ class SlackAppConfiguration extends React.Component {
             <h2 className="border-bottom mb-5">{t('notification_setting.slack_incoming_configuration')}</h2>
 
             <div className="row mb-3">
-              <label className="col-3 text-right">Webhook URL</label>
-              <div className="col-6">
+              <label className="col-md-3 text-left text-md-right">Webhook URL</label>
+              <div className="col-md-6">
                 <input
                   className="form-control"
                   type="text"
@@ -76,7 +76,7 @@ class SlackAppConfiguration extends React.Component {
             </div>
 
             <div className="row mb-3">
-              <div className="offset-3 col-6 text-left">
+              <div className="offset-md-3 col-md-6 text-left">
                 <div className="custom-control custom-checkbox custom-checkbox-success">
                   <input
                     type="checkbox"
@@ -116,8 +116,8 @@ class SlackAppConfiguration extends React.Component {
               </div>
 
               <div className="row mb-5">
-                <label className="col-3 text-right">OAuth Access Token</label>
-                <div className="col-6">
+                <label className="col-md-3 text-left text-md-right">OAuth Access Token</label>
+                <div className="col-md-6">
                   <input
                     className="form-control"
                     type="text"

+ 9 - 9
src/client/js/components/Admin/Security/SecuritySetting.jsx

@@ -58,10 +58,10 @@ class SecuritySetting extends React.Component {
         </div>
           )}
         <div className="row mb-5">
-          <div className="col-3 text-right py-2">
+          <div className="col-md-3 text-md-right text-nowrap py-2 mr-md-5">
             <strong>{t('security_setting.Guest Users Access')}</strong>
           </div>
-          <div className="col-6">
+          <div className="col-md-6 ml-md-5">
             <div className="dropdown">
               <button
                 className={`btn btn-outline-secondary dropdown-toggle ${adminGeneralSecurityContainer.isWikiModeForced && 'disabled'}`}
@@ -102,9 +102,9 @@ class SecuritySetting extends React.Component {
         </div>
           )}
         <div className="row mb-5">
-          <strong className="col-3 text-right" dangerouslySetInnerHTML={{ __html: t('security_setting.page_listing_1') }} />
-          <div className="col-6">
-            <div className="custom-control custom-checkbox custom-checkbox-success">
+          <strong className="col-md-3 text-md-right text-nowrap mb-2 mr-md-5" dangerouslySetInnerHTML={{ __html: t('security_setting.page_listing_1') }} />
+          <div className="col-md-6">
+            <div className="custom-control custom-checkbox custom-checkbox-success ml-md-5">
               <input
                 type="checkbox"
                 className="custom-control-input"
@@ -120,8 +120,8 @@ class SecuritySetting extends React.Component {
         </div>
 
         <div className="row mb-5">
-          <strong className="col-3 text-right" dangerouslySetInnerHTML={{ __html: t('security_setting.page_listing_2') }} />
-          <div className="col-6">
+          <strong className="col-md-3 text-md-right text-nowrap mr-md-5 mb-2" dangerouslySetInnerHTML={{ __html: t('security_setting.page_listing_2') }} />
+          <div className="col-md-6 ml-md-5">
             <div className="custom-control custom-checkbox custom-checkbox-success">
               <input
                 type="checkbox"
@@ -138,10 +138,10 @@ class SecuritySetting extends React.Component {
         </div>
 
         <div className="row mb-5">
-          <div className="col-3 text-right">
+          <div className="col-md-3 text-md-right mr-md-5 mb-2">
             <strong>{t('security_setting.complete_deletion')}</strong>
           </div>
-          <div className="col-9">
+          <div className="col-md-6 ml-md-5">
             <div className="dropdown">
               <button
                 className="btn btn-outline-secondary dropdown-toggle"

+ 1 - 1
src/client/js/components/Admin/UserManagement.jsx

@@ -131,7 +131,7 @@ class UserManagement extends React.Component {
         )}
         <p>
           <InviteUserControl />
-          <a className="btn text-dark btn-outline-secondary ml-2" href="/admin/users/external-accounts" role="button">
+          <a className="btn btn-outline-secondary ml-2" href="/admin/users/external-accounts" role="button">
             <i className="icon-user-follow" aria-hidden="true"></i>
             {t('admin:user_management.external_account')}
           </a>

+ 4 - 4
src/client/js/components/Me/ApiSettings.jsx

@@ -43,8 +43,8 @@ class ApiSettings extends React.Component {
         </div>
 
         <div className="row mb-3">
-          <label htmlFor="apiToken" className="col-3 text-right">{t('Current API Token')}</label>
-          <div className="col-6">
+          <label htmlFor="apiToken" className="col-md-3 text-md-right">{t('Current API Token')}</label>
+          <div className="col-md-6">
             {personalContainer.state.apiToken != null
             ? (
               <input
@@ -65,7 +65,7 @@ class ApiSettings extends React.Component {
 
 
         <div className="row">
-          <div className="offset-3 col-6">
+          <div className="offset-lg-1 col-lg-7">
 
             <p className="alert alert-warning">
               { t('page_me_apitoken.notice.update_token1') }<br />
@@ -79,7 +79,7 @@ class ApiSettings extends React.Component {
           <div className="offset-4 col-5">
             <button
               type="button"
-              className="btn btn-primary"
+              className="btn btn-primary text-nowrap"
               onClick={this.onClickSubmit}
             >
               {t('Update API Token')}

+ 1 - 1
src/client/js/components/Me/AssociateModal.jsx

@@ -70,7 +70,7 @@ class AssociateModal extends React.Component {
     const { t } = this.props;
 
     return (
-      <Modal isOpen={this.props.isOpen} toggle={this.props.onClose} className="mw-100 m-4">
+      <Modal isOpen={this.props.isOpen} toggle={this.props.onClose} size="lg">
         <ModalHeader className="bg-info" toggle={this.props.onClose}>
           { t('Create External Account') }
         </ModalHeader>

+ 17 - 15
src/client/js/components/Me/PasswordSettings.jsx

@@ -76,8 +76,8 @@ class PasswordSettings extends React.Component {
         {(personalContainer.state.isPasswordSet)
         && (
           <div className="row mb-3">
-            <label htmlFor="oldPassword" className="col-3 text-right">{ t('personal_settings.current_password') }</label>
-            <div className="col-6">
+            <label htmlFor="oldPassword" className="col-md-3 text-md-right">{ t('personal_settings.current_password') }</label>
+            <div className="col-md-5">
               <input
                 className="form-control"
                 type="password"
@@ -89,8 +89,8 @@ class PasswordSettings extends React.Component {
           </div>
         )}
         <div className="row mb-3">
-          <label htmlFor="newPassword" className="col-3 text-right">{t('personal_settings.new_password') }</label>
-          <div className="col-6">
+          <label htmlFor="newPassword" className="col-md-3 text-md-right">{t('personal_settings.new_password') }</label>
+          <div className="col-md-5">
             <input
               className="form-control"
               type="password"
@@ -101,8 +101,8 @@ class PasswordSettings extends React.Component {
           </div>
         </div>
         <div className={`row mb-3 ${isIncorrectConfirmPassword && 'has-error'}`}>
-          <label htmlFor="newPasswordConfirm" className="col-3 text-right">{t('personal_settings.new_password_confirm') }</label>
-          <div className="col-6">
+          <label htmlFor="newPasswordConfirm" className="col-md-3 text-md-right">{t('personal_settings.new_password_confirm') }</label>
+          <div className="col-md-5">
             <input
               className="form-control"
               type="password"
@@ -115,15 +115,17 @@ class PasswordSettings extends React.Component {
           </div>
         </div>
 
-        <div className="my-3 text-center">
-          <button
-            type="button"
-            className="btn btn-primary"
-            onClick={this.onClickSubmit}
-            disabled={this.state.retrieveError != null || isIncorrectConfirmPassword}
-          >
-            {t('Update')}
-          </button>
+        <div className="row my-3">
+          <div className="offset-5">
+            <button
+              type="button"
+              className="btn btn-primary"
+              onClick={this.onClickSubmit}
+              disabled={this.state.retrieveError != null || isIncorrectConfirmPassword}
+            >
+              {t('Update')}
+            </button>
+          </div>
         </div>
       </React.Fragment>
     );

+ 11 - 5
src/client/js/components/PageEditor/HandsontableModal.jsx

@@ -2,7 +2,6 @@ import React from 'react';
 import PropTypes from 'prop-types';
 
 import {
-  Button,
   Collapse,
   Modal, ModalHeader, ModalBody, ModalFooter,
 } from 'reactstrap';
@@ -437,7 +436,14 @@ export default class HandsontableModal extends React.PureComponent {
         <ModalHeader tag="h4" toggle={this.cancel} close={buttons}>Edit Table</ModalHeader>
         <ModalBody className="p-0 d-flex flex-column">
           <div className="px-4 py-3 modal-navbar bg-light">
-            <button type="button" className="mr-4 data-import-button btn btn-secondary" onClick={this.toggleDataImportArea}>
+            <button
+              type="button"
+              className="mr-4 data-import-button btn btn-secondary"
+              data-toggle="collapse"
+              data-target="#collapseDataImport"
+              aria-expanded={this.state.isDataImportAreaExpanded}
+              onClick={this.toggleDataImportArea}
+            >
               <span className="mr-3">Data Import</span><i className={this.state.isDataImportAreaExpanded ? 'fa fa-angle-up' : 'fa fa-angle-down'}></i>
             </button>
             <div role="group" className="btn-group">
@@ -467,10 +473,10 @@ export default class HandsontableModal extends React.PureComponent {
           </div>
         </ModalBody>
         <ModalFooter className="grw-modal-footer">
-          <Button color="danger" onClick={this.reset}>Reset</Button>
+          <button type="button" className="btn btn-danger" onClick={this.reset}>Reset</button>
           <div className="ml-auto">
-            <Button className="mr-2" color="secondary" onClick={this.cancel}>Cancel</Button>
-            <Button color="primary" onClick={this.save}>Done</Button>
+            <button type="button" className="mr-2 btn btn-secondary" onClick={this.cancel}>Cancel</button>
+            <button type="button" className="btn btn-primary" onClick={this.save}>Done</button>
           </div>
         </ModalFooter>
       </Modal>

+ 2 - 0
src/client/styles/scss/_user.scss

@@ -90,6 +90,8 @@ $easeInOutCubic: cubic-bezier(0.65, 0, 0.35, 1);
 
   .btn.btn-bookmark {
     &.btn-lg {
+      width: 50px;
+      height: 50px;
       font-size: 1.5em;
     }
   }

+ 2 - 0
src/client/styles/scss/atoms/_buttons.scss

@@ -9,6 +9,8 @@
   &:not(:hover):not(.active) {
     background-color: transparent;
   }
+  width: 35px;
+  height: 35px;
 }
 
 .btn-copy,

+ 0 - 9
src/client/styles/scss/theme/_apply-colors-kibela.scss

@@ -25,15 +25,6 @@ body.kibela {
     background-color: $bgcolor-global;
   }
 
-  /* Logo */
-  .logo {
-    background: transparent;
-
-    .logo-mark {
-      background-color: white;
-    }
-  }
-
   .search-input-group,
   .search-typeahead {
     .btn {

+ 1 - 1
src/client/styles/scss/theme/_apply-colors.scss

@@ -56,7 +56,7 @@ $link-hover-color: $color-link-hover;
 //
 
 .grw-logo {
-  background-color: darken($bgcolor-navbar, 10%);
+  background-color: darken($bgcolor-logo, 10%);
 
   // set transition for fill
   svg * {

+ 2 - 0
src/client/styles/scss/theme/antarctic.scss

@@ -64,6 +64,7 @@ html[light] {
   $color-inline-code: #c7254e;
 
   // Logo colors
+  $bgcolor-logo: $bgcolor-navbar;
   $fillcolor-logo-mark: lighten(desaturate($bgcolor-navbar, 10%), 15%);
 
   // Border colors
@@ -103,6 +104,7 @@ html[dark] {
   $color-inline-code: #c7254e;
 
   // Logo colors
+  $bgcolor-logo: $bgcolor-navbar;
   $fillcolor-logo-mark: #444;
 
   // Border colors

+ 2 - 0
src/client/styles/scss/theme/default.scss

@@ -36,6 +36,7 @@ html[light] {
   $color-inline-code: #c7254e;
 
   // Logo colors
+  $bgcolor-logo: $bgcolor-navbar;
   $fillcolor-logo-mark: lighten(desaturate($bgcolor-navbar, 10%), 15%);
 
   // Border colors
@@ -75,6 +76,7 @@ html[dark] {
   $color-inline-code: #c7254e;
 
   // Logo colors
+  $bgcolor-logo: $bgcolor-navbar;
   $fillcolor-logo-mark: #444;
 
   // Border colors

+ 8 - 3
src/client/styles/scss/theme/kibela.scss

@@ -25,7 +25,10 @@ html[light] {
   $primary: $bgcolor-theme;
   $info: lighten($bgcolor-theme, 20%);
 
+  // Logo colors
+  $bgcolor-logo: transparent;
   $fillcolor-logo-mark: lighten($bgcolor-theme, 20%);
+
   $color-link-wiki: lighten($bgcolor-theme, 20%);
   $color-link-wiki-hover: lighten($color-link-wiki, 20%);
   $color-link-nabvar: $color-global;
@@ -46,7 +49,6 @@ html[light] {
   @import 'apply-colors-kibela';
 }
 
-
 // Dark Mode ( same as Light Mode )
 html[dark] {
   $bgcolor-theme: rgb(18, 86, 163);
@@ -55,7 +57,7 @@ html[dark] {
   $lightthemecolor: rgba(181, 203, 247, 0.61);
 
   // Background colors
-  $bgcolor-navbar: white;
+  $bgcolor-navbar: transparent;
   $bgcolor-navbar-active: $bgcolor-theme;
   $bgcolor-global: $themelight;
   $bgcolor-card: #e3e5e7;
@@ -71,7 +73,10 @@ html[dark] {
   $primary: $bgcolor-theme;
   $info: lighten($bgcolor-theme, 20%);
 
+  // Logo colors
+  $bgcolor-logo: red;
   $fillcolor-logo-mark: lighten($bgcolor-theme, 20%);
+
   $color-link-wiki: lighten($bgcolor-theme, 20%);
   $color-link-wiki-hover: lighten($color-link-wiki, 20%);
   $color-link-nabvar: $color-global;
@@ -90,4 +95,4 @@ html[dark] {
   @import 'apply-colors';
   @import 'apply-colors-light';
   @import 'apply-colors-kibela';
-}
+}

+ 1 - 1
src/server/views/modal/create_page.html

@@ -71,7 +71,7 @@
                 </div>
 
               </div>
-              <div class="create-page-button-container my-auto">
+              <div class="create-page-button-container">
                 <a id="link-to-template" href="{{ page.path || path }}" class="btn btn-outline-primary rounded-pill disabled">
                   <i class="icon-fw icon-doc"></i>
                   <span id="create-template-button-link">{{ t('Edit') }}</span>

+ 74 - 71
src/server/views/modal/shortcuts.html

@@ -8,86 +8,89 @@
       </div>
 
       <div class="modal-body">
+        <div class="container">
+          <div class="row">
+            <div class="col-lg-6">
+              <h3><strong>{{ t('modal_shortcuts.global.title') }}</strong></h3>
 
-        <div class="row">
-          <div class="col-lg-6">
-            <h3><strong>{{ t('modal_shortcuts.global.title') }}</strong></h3>
+                <table class="table table-responsive">
+                  <tr>
+                    <th>{{ t('modal_shortcuts.global.Open/Close shortcut help') }}:</th>
+                    <td><span class="key cmd-key"></span> + <span class="key">/</span></td>
+                  </tr>
+                  <tr>
+                    <th>{{ t('modal_shortcuts.global.Create Page') }}:</th>
+                    <td><span class="key">C</span></td>
+                  </tr>
+                  <tr>
+                    <th>{{ t('modal_shortcuts.global.Edit Page') }}:</th>
+                    <td><span class="key">E</span></td>
+                  </tr>
+                  <tr>
+                    <th>{{ t('modal_shortcuts.global.Show Contributors') }}:</th>
+                    <td>
+                      <a href="{{ t('modal_shortcuts.global.konami_code_url') }}" target="_blank">{{ t('modal_shortcuts.global.Konami Code') }}</a><br>
+                      <span class="key key-small">↑</span>&nbsp;<span class="key key-small">↑</span>
+                      <span class="key key-small">↓</span>&nbsp;<span class="key key-small">↓</span>
+                      <span class="key key-small">←</span><br><span class="key key-small">→</span>
+                      <span class="key key-small">←</span>&nbsp;<span class="key key-small">→</span>
+                      <span class="key key-small">B</span>&nbsp;<span class="key key-small">A</span>
+                    </td>
+                  </tr>
+                </table>
+            </div><!-- /.col-lg-6 -->
 
-            <table class="table">
-              <tr>
-                <th>{{ t('modal_shortcuts.global.Open/Close shortcut help') }}:</th>
-                <td><span class="key cmd-key"></span> + <span class="key">/</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.global.Create Page') }}:</th>
-                <td><span class="key">C</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.global.Edit Page') }}:</th>
-                <td><span class="key">E</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.global.Show Contributors') }}:</th>
-                <td>
-                  <a href="{{ t('modal_shortcuts.global.konami_code_url') }}" target="_blank">{{ t('modal_shortcuts.global.Konami Code') }}</a><br>
-                  <span class="key key-small">↑</span>&nbsp;<span class="key key-small">↑</span>
-                  <span class="key key-small">↓</span>&nbsp;<span class="key key-small">↓</span>
-                  <span class="key key-small">←</span>&nbsp;<span class="key key-small">→</span>
-                  <span class="key key-small">←</span>&nbsp;<span class="key key-small">→</span>
-                  <span class="key key-small">B</span>&nbsp;<span class="key key-small">A</span>
-                </td>
-              </tr>
-            </table>
-          </div><!-- /.col-lg-6 -->
 
-          <div class="col-lg-6">
-            <h3><strong>{{ t('modal_shortcuts.editor.title') }}</strong></h3>
+            <div class="col-lg-6">
+              <h3><strong>{{ t('modal_shortcuts.editor.title') }}</strong></h3>
 
-            <table class="table">
-              <tr>
-                <th>{{ t('modal_shortcuts.editor.Indent') }}:</th>
-                <td><span class="key key-longer">Tab</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.editor.Outdent') }}:</th>
-                <td class="text-nowrap"><span class="key key-long">Shift</span> + <span class="key key-longer">Tab</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.editor.Save Page') }}:</th>
-                <td><span class="key cmd-key"></span> + <span class="key">S</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.editor.Delete Line') }}:</th>
-                <td><span class="key cmd-key"></span> + <span class="key">D</span></td>
-              </tr>
-            </table>
-          </div><!-- /.col-lg-6 -->
+              <table class="table table-responsive">
+                <tr>
+                  <th>{{ t('modal_shortcuts.editor.Indent') }}:</th>
+                  <td><span class="key key-longer">Tab</span></td>
+                </tr>
+                <tr>
+                  <th>{{ t('modal_shortcuts.editor.Outdent') }}:</th>
+                  <td class="text-nowrap"><span class="key key-long">Shift</span> + <span class="key key-longer">Tab</span></td>
+                </tr>
+                <tr>
+                  <th>{{ t('modal_shortcuts.editor.Save Page') }}:</th>
+                  <td><span class="key cmd-key"></span> + <span class="key">S</span></td>
+                </tr>
+                <tr>
+                  <th>{{ t('modal_shortcuts.editor.Delete Line') }}:</th>
+                  <td><span class="key cmd-key"></span> + <span class="key">D</span></td>
+                </tr>
+              </table>
+            </div><!-- /.col-lg-6 -->
+          </div><!-- /.row -->
+        </div><!-- /.container -->
 
-        </div><!-- /.row -->
+        <div class="container">
+          <div class="row">
+            <div class="col-lg-6">
+              <h3><strong></strong></h3>
+            </div><!-- /.col-lg-6 -->
 
-        <div class="row">
-          <div class="col-lg-6">
-            <h3><strong></strong></h3>
-          </div><!-- /.col-lg-6 -->
+            <div class="col-lg-6">
+              <h3><strong>{{ t('modal_shortcuts.commentform.title') }}</strong></h3>
 
-          <div class="col-lg-6">
-            <h3><strong>{{ t('modal_shortcuts.commentform.title') }}</strong></h3>
-
-            <table class="table">
-              <tr>
-                <th>{{ t('modal_shortcuts.commentform.Post') }}:</th>
-                <td><span class="key cmd-key"></span> + <span class="key key-longer">{% include '../widget/icon-keyboard-return-enter.html' %}</span></td>
-              </tr>
-              <tr>
-                <th>{{ t('modal_shortcuts.editor.Delete Line') }}:</th>
-                <td><span class="key cmd-key"></span> + <span class="key">D</span></td>
-              </tr>
-            </table>
-          </div><!-- /.col-lg-6 -->
-
-        </div><!-- /.row -->
+              <table class="table table-responsive">
+                <tr>
+                  <th>{{ t('modal_shortcuts.commentform.Post') }}:</th>
+                  <td><span class="key cmd-key"></span> + <span class="key key-longer">{% include '../widget/icon-keyboard-return-enter.html' %}</span></td>
+                </tr>
+                <tr>
+                  <th>{{ t('modal_shortcuts.editor.Delete Line') }}:</th>
+                  <td><span class="key cmd-key"></span> + <span class="key">D</span></td>
+                </tr>
+              </table>
+            </div><!-- /.col-lg-6 -->
 
+          </div><!-- /.row -->
+        </div><!-- /.container -->
       </div>
+    </div>
 
 
     </div><!-- /.modal-content -->