Yuki Takei 7 лет назад
Родитель
Сommit
db4ec74ea4

+ 8 - 3
resource/locales/en-US/translation.json

@@ -176,7 +176,8 @@
 
   "page_api_error": {
     "notfound_or_forbidden": "Original page is not found or forbidden.",
-    "already_exists": "New page is already exists."
+    "already_exists": "New page is already exists.",
+    "outdated": "Page is updated someone and now outdated. "
   },
 
   "modal_rename": {
@@ -199,8 +200,12 @@
   "modal_delete": {
     "label": {
       "Delete Page": "Delete Page",
-      "recursively": "Process recursively",
-      "completely": "Delete completely"
+      "Delete recursively": "Delete recursively",
+      "Delete completely": "Delete completely"
+    },
+    "help": {
+      "recursively": "Delete children of under <code>%s</code> recursively",
+      "completely": "Delete completely instead of putting it into trash"
     }
   },
 

+ 8 - 3
resource/locales/ja/translation.json

@@ -192,7 +192,8 @@
 
   "page_api_error": {
     "notfound_or_forbidden": "元のページが見つからないか、アクセス権がありません。",
-    "already_exists": "新しいページが既に存在しています。"
+    "already_exists": "新しいページが既に存在しています。",
+    "outdated": "ページが他のユーザーによって更新されました。"
   },
 
   "modal_rename": {
@@ -215,8 +216,12 @@
   "modal_delete": {
     "label": {
       "Delete Page": "ページを削除する",
-      "recursively": "全ての子ページも処理",
-      "completely": "完全削除"
+      "Delete recursively": "全ての子ページも削除",
+      "Delete completely": "完全削除"
+    },
+    "help": {
+      "recursively": "<code>%s</code> 配下のページも削除します",
+      "completely": "ゴミ箱を経由せず、完全に削除します"
     }
   },
 

+ 2 - 2
src/server/routes/page.js

@@ -852,7 +852,7 @@ module.exports = function(crowi, app) {
       }
       else {
         if (!page.isUpdatable(previousRevision)) {
-          throw new Error('Someone could update this page, so couldn\'t delete.', 'outdated');
+          return res.json(ApiResponse.error('Someone could update this page, so couldn\'t delete.', 'outdated'));
         }
 
         if (isRecursively) {
@@ -865,7 +865,7 @@ module.exports = function(crowi, app) {
     }
     catch (err) {
       logger.error('Error occured while get setting', err);
-      return res.json(ApiResponse.error('Failed to delete page.'));
+      return res.json(ApiResponse.error('Failed to delete page.', 'unknown'));
     }
 
     debug('Page deleted', page.path);

+ 28 - 7
src/server/views/modal/delete.html

@@ -19,18 +19,42 @@
             <label for="">Deleting page:</label><br>
             <code>{{ page.path }}</code>
           </div>
+          <div class="checkbox checkbox-warning">
+            <input name="delete_recursively" id="cbDeleteRecursively" value="1" type="checkbox" checked>
+            <label for="cbDeleteRecursively">{{ t('modal_delete.label.Delete recursively') }}</label>
+            <p class="help-block"> {{ t('modal_delete.help.recursively', page.path) }}
+            </p>
+          </div>
+          {% if not page.isDeleted() %}
+          <div class="checkbox checkbox-danger">
+            <input name="delete_completely" id="cbDeleteCompletely" value="1"  type="checkbox">
+              <label for="cbDeleteCompletely" class="text-danger">{{ t('modal_delete.label.Delete completely') }}</label>
+              <p class="help-block"> {{ t('modal_delete.help.completely') }}
+              </p>
+          </div>
+          {% endif %}
         </div>
         <div class="modal-footer">
           <div class="d-flex justify-content-between">
-            <p><small id="delete-errors"></small></p>
+            <p>
+              <span class="text-danger msg msg-notfound_or_forbidden">
+                <strong><i class="icon-fw icon-ban"></i> {{ t('page_api_error.notfound_or_forbidden') }}</strong>
+              </span>
+              <span class="text-warning msg msg-outdated">
+                <strong><i class="icon-fw icon-bulb"></i> {{ t('page_api_error.outdated') }}</strong>
+                <a href="javascript:location.reload();">
+                  <i class="fa fa-angle-double-right"></i> {{ t('Load latest') }}
+                </a>
+              </span>
+              <span class="text-danger msg msg-unknown">
+                <strong><i class="icon-fw icon-ban"></i> Unknown error occured</strong>
+              </span>
+            </p>
             <div>
               <input type="hidden" name="_csrf" value="{{ csrf() }}">
               <input type="hidden" name="path" value="{{ page.path }}">
               <input type="hidden" name="page_id" value="{{ page._id.toString() }}">
               <input type="hidden" name="revision_id" value="{{ page.revision._id.toString() }}">
-              <label class="checkbox-inline">
-                <input type="checkbox" name="recursively">{{ t('modal_delete.label.recursively') }}
-              </label>
               {% if page.isDeleted() %}
                 <input type="hidden" name="completely" value="true">
                 <button type="submit" class="m-l-10 btn btn-sm btn-danger delete-button">
@@ -38,9 +62,6 @@
                   {{ t('Delete Completely') }}
                 </button>
               {% else %}
-                <label class="checkbox-inline text-danger">
-                  <input type="checkbox" name="completely">{{ t('modal_delete.label.completely') }}
-                </label>
                 <button type="submit" class="m-l-10 btn btn-sm btn-default delete-button">
                   <i class="icon-trash" aria-hidden="true"></i>
                   {{ t('Delete') }}