Quellcode durchsuchen

impl unlink redirects

Yuki Takei vor 9 Jahren
Ursprung
Commit
1a21102bf0

+ 1 - 0
lib/routes/index.js

@@ -113,6 +113,7 @@ module.exports = function(crowi, app) {
   app.post('/_api/pages.rename'       , accessTokenParser , loginRequired(crowi, app) , csrf, page.api.rename);
   app.post('/_api/pages.remove'       , loginRequired(crowi, app) , csrf, page.api.remove); // (Avoid from API Token)
   app.post('/_api/pages.revertRemove' , loginRequired(crowi, app) , csrf, page.api.revertRemove); // (Avoid from API Token)
+  app.post('/_api/pages.unlink'       , loginRequired(crowi, app) , csrf, page.api.unlink); // (Avoid from API Token)
   app.get('/_api/comments.get'        , accessTokenParser , loginRequired(crowi, app) , comment.api.get);
   app.post('/_api/comments.add'       , form.comment, accessTokenParser , loginRequired(crowi, app) , csrf, comment.api.add);
   app.get( '/_api/bookmarks.get'      , accessTokenParser , loginRequired(crowi, app) , bookmark.api.get);

+ 30 - 1
lib/routes/page.js

@@ -228,7 +228,7 @@ module.exports = function(crowi, app) {
     }
 
     if (pageData.redirectTo) {
-      return res.redirect(encodeURI(pageData.redirectTo + '?renamed=' + pageData.path));
+      return res.redirect(encodeURI(pageData.redirectTo + '?redirectFrom=' + pageData.path));
     }
 
     var renderVars = {
@@ -858,5 +858,34 @@ module.exports = function(crowi, app) {
     });
   };
 
+  /**
+   * @api {post} /pages.unlink Remove the redirecting page
+   * @apiName UnlinkPage
+   * @apiGroup Page
+   *
+   * @apiParam {String} page_id Page Id.
+   * @apiParam {String} revision_id
+   */
+  api.unlink = function(req, res){
+    var pageId = req.body.page_id;
+
+    Page.findPageByIdAndGrantedUser(pageId, req.user)
+    .then(function(pageData) {
+      debug('Unlink page', pageData._id, pageData.path);
+
+      return Page.removeRedirectOriginPageByPath(pageData.path)
+        .then(() => pageData);
+    }).then(function(data) {
+      debug('Redirect Page deleted', data.path);
+      var result = {};
+      result.page = data;
+
+      return res.json(ApiResponse.success(result));
+    }).catch(function(err) {
+      debug('Error occured while get setting', err, err.stack);
+      return res.json(ApiResponse.error('Failed to delete redirect page.'));
+    });
+  };
+
   return actions;
 };

+ 15 - 1
lib/views/page.html

@@ -151,6 +151,13 @@
 
   <div class="tab-content wiki-content">
   {% if req.query.renamed and not page.isDeleted() %}
+  <div class="alert alert-info alert-moved">
+    <span>
+      <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.query.renamed) }}
+    </span>
+  </div>
+  {% endif %}
+  {% if req.query.redirectFrom and not page.isDeleted() %}
   <div class="alert alert-info alert-moved">
     <div>
       <form role="form" id="unlink-page-form" onsubmit="return false;">
@@ -163,11 +170,18 @@
         </button>
       </form>
       <span>
-        <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.query.renamed) }}
+        <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.query.redirectFrom) }}
       </span>
     </div>
   </div>
   {% endif %}
+  {% if req.query.unlinked %}
+  <div class="alert alert-info">
+    <strong>{{ t('Unlinked') }}: </strong> {{ t('page_page.notice.unlinked') }}
+  </div>
+  {% endif %}
+
+
   {% if not page.isLatestRevision() %}
   <div class="alert alert-warning">
     <strong>{{ t('Warning') }}: </strong> {{ t('page_page.notice.version') }} <i class="fa fa-magic"></i> <a href="{{ page.path }}">{{ t('Show latest') }}</a>

+ 2 - 0
locales/en-US/translation.json

@@ -4,6 +4,7 @@
   "Delete": "Delete",
   "Move": "Move",
   "Moved": "Moved",
+  "Unlinked": "Unlinked",
   "Like!": "Like!",
   "Seen by": "Seen by",
   "Cancel": "Cancel",
@@ -135,6 +136,7 @@
       "notice": {
           "version": "This is not the current version.",
           "moved": "This page was moved from <code>%s</code>",
+          "unlinked": "Redirect pages to this page have been deleted.",
           "restricted": "Access to this page is restricted"
       }
   },

+ 2 - 0
locales/ja/translation.json

@@ -4,6 +4,7 @@
   "Delete": "削除",
   "Move": "移動",
   "Moved": "移動しました",
+  "Unlinked": "リダイレクト削除",
   "Like!": "いいね!",
   "Seen by": "見た人",
   "Cancel": "キャンセル",
@@ -135,6 +136,7 @@
       "notice": {
           "version": "これは現在の版ではありません。",
           "moved": "このページは <code>%s</code> から移動しました。",
+          "unlinked": "このページへのリダイレクトは削除されました。",
           "restricted": "このページの閲覧は制限されています"
       }
   },

+ 1 - 1
resource/js/legacy/crowi.js

@@ -306,7 +306,7 @@ $(function() {
         $('#delete-errors').addClass('alert-danger');
       } else {
         var page = res.page;
-        top.location.href = page.path;
+        top.location.href = page.path + '?unlinked=true';
       }
     });