Преглед изворни кода

Merge pull request #843 from weseek/fix/839-handle-portal

Fix/839 handle portal
Yuki Takei пре 7 година
родитељ
комит
394283f29f

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

@@ -373,7 +373,7 @@ $(function() {
         $('#renamePage .msg, #unportalize .msg').hide();
         $(`#renamePage .msg-${res.code}, #unportalize .msg-${res.code}`).show();
         $('#renamePage #linkToNewPage, #unportalize #linkToNewPage').html(`
-          <a href="${nameValueMap.q}">${nameValueMap.q} <i class="icon-login"></i></a>
+          <a href="${nameValueMap.new_path}">${nameValueMap.new_path} <i class="icon-login"></i></a>
         `);
       }
       else {

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

@@ -184,14 +184,14 @@ module.exports = function(crowi, app) {
   }
 
   async function showPageListForCrowiBehavior(req, res, next) {
-    const path = Page.addSlashOfEnd(getPathFromRequest(req));
+    const portalPath = Page.addSlashOfEnd(getPathFromRequest(req));
     const revisionId = req.query.revision;
 
     // check whether this page has portal page
-    const portalPageStatus = await getPortalPageState(path, req.user);
+    const portalPageStatus = await getPortalPageState(portalPath, req.user);
 
     let view = 'customlayout-selector/page_list';
-    const renderVars = { path };
+    const renderVars = { path: portalPath };
 
     if (portalPageStatus === PORTAL_STATUS_FORBIDDEN) {
       // inject to req
@@ -199,7 +199,7 @@ module.exports = function(crowi, app) {
       view = 'customlayout-selector/forbidden';
     }
     else if (portalPageStatus === PORTAL_STATUS_EXISTS) {
-      let portalPage = await Page.findByPathAndViewer(path, req.user);
+      let portalPage = await Page.findByPathAndViewer(portalPath, req.user);
       portalPage.initLatestRevisionField(revisionId);
 
       // populate
@@ -212,7 +212,7 @@ module.exports = function(crowi, app) {
     const limit = 50;
     const offset = parseInt(req.query.offset)  || 0;
 
-    await addRenderVarsForDescendants(renderVars, path, req.user, offset, limit);
+    await addRenderVarsForDescendants(renderVars, portalPath, req.user, offset, limit);
 
     await interceptorManager.process('beforeRenderPage', req, res, renderVars);
     return res.render(view, renderVars);
@@ -231,7 +231,7 @@ module.exports = function(crowi, app) {
     }
     else if (page.redirectTo) {
       debug(`Redirect to '${page.redirectTo}'`);
-      return res.redirect(encodeURI(page.redirectTo + '?redirectFrom=' + pagePathUtils.encodePagePath(page.path)));
+      return res.redirect(encodeURI(page.redirectTo + '?redirectFrom=' + pagePathUtils.encodePagePath(path)));
     }
 
     logger.debug('Page is found when processing pageShowForGrowiBehavior', page._id, page.path);
@@ -332,7 +332,7 @@ module.exports = function(crowi, app) {
 
       if (hasPortalPage) {
         logger.debug('The portal page is found', portalPagePath);
-        return res.redirect(portalPagePath);
+        return res.redirect(encodeURI(portalPagePath + '?redirectFrom=' + pagePathUtils.encodePagePath(req.path)));
       }
     }
 

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

@@ -37,7 +37,7 @@
             <div>
               <input type="hidden" name="_csrf" value="{{ csrf() }}">
               <input type="hidden" name="path" value="{{ page.path }}">
-              <input type="hidden" class="form-control" name="q" id="newPageName" value="{{ unportalizedPath }}">
+              <input type="hidden" name="new_path" value="{{ unportalizedPath }}">
               <input type="hidden" name="page_id" value="{{ page._id.toString() }}">
               <input type="hidden" name="revision_id" value="{{ page.revision._id.toString() }}">
               <button type="submit" class="btn btn-warning">Unportalize</button>

+ 3 - 6
src/server/views/widget/page_alerts.html

@@ -34,14 +34,11 @@
     </div>
     {% endif %}
 
-    {% if not page.isDeleted() and (req.query.renamed or req.query.redirectFrom) %}
+    {% if not page.isDeleted() and (redirectFrom or req.query.renamed or req.query.redirectFrom) %}
     <div class="alert alert-info alert-moved d-flex align-items-center justify-content-between">
       <span>
-        {% if req.query.renamed %}
-          <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.sanitize(req.query.renamed)) }}
-        {% else %}
-          <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.sanitize(req.query.redirectFrom)) }}
-        {% endif %}
+        {% set fromPath = req.query.renamed or req.query.redirectFrom %}
+        <strong>{{ t('Moved') }}: </strong> {{ t('page_page.notice.moved', req.sanitize(fromPath)) }}
       </span>
       {% if user %}
       <form role="form" id="unlink-page-form" onsubmit="return false;">

+ 5 - 2
src/server/views/widget/page_tabs.html

@@ -37,8 +37,11 @@
       <ul class="dropdown-menu">
         <li><a href="#" data-target="#create-template" data-toggle="modal"><i class="icon-fw icon-magic-wand"></i> {{ t('template.option_label.create/edit') }}</a></li>
         {% if ('/' !== path) %}
-        <li class="divider"></li>
-        <li><a href="#" data-target="#unportalize" data-toggle="modal"><i class="fa fa-share"></i> {{ t('Unportalize') }}</a></li>
+          <li class="divider"></li>
+          <li><a href="#" data-target="#unportalize" data-toggle="modal"><i class="fa fa-share"></i> {{ t('Unportalize') }}</a></li>
+          {% if isDeletablePage() %}
+            <li><a href="#" data-target="#deletePage" data-toggle="modal"><i class="icon-fw icon-fire text-danger"></i> {{ t('Delete') }}</a></li>
+          {% endif %}
         {% endif %}
       </ul>
     </li>