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

omit links to list pages from RevisionPath when behaviorType is 'crowi-plus'

Yuki Takei 8 лет назад
Родитель
Сommit
b71f2a9043
3 измененных файлов с 28 добавлено и 4 удалено
  1. 1 0
      lib/models/config.js
  2. 1 1
      resource/js/app.js
  3. 26 3
      resource/js/components/Page/RevisionPath.js

+ 1 - 0
lib/models/config.js

@@ -369,6 +369,7 @@ module.exports = function(crowi) {
         image: Config.isUploadable(config),
         file: Config.fileUploadEnabled(config),
       },
+      behaviorType: Config.behaviorType(config),
       layoutType: Config.layoutType(config),
       env: {
         PLANTUML_URI: env.PLANTUML_URI || null,

+ 1 - 1
resource/js/app.js

@@ -74,7 +74,7 @@ const componentMappings = {
 };
 // additional definitions if pagePath exists
 if (pagePath) {
-  componentMappings['revision-path'] = <RevisionPath pagePath={pagePath} />;
+  componentMappings['revision-path'] = <RevisionPath pagePath={pagePath} crowi={crowi} />;
   componentMappings['revision-url'] = <RevisionUrl pageId={pageId} pagePath={pagePath} />;
 }
 

+ 26 - 3
resource/js/components/Page/RevisionPath.js

@@ -1,4 +1,6 @@
 import React from 'react';
+import PropTypes from 'prop-types';
+
 import CopyButton from '../CopyButton';
 
 export default class RevisionPath extends React.Component {
@@ -9,6 +11,7 @@ export default class RevisionPath extends React.Component {
     this.state = {
       pages: [],
       isListPage: false,
+      isLinkToListPage: true,
     };
   }
 
@@ -17,6 +20,11 @@ export default class RevisionPath extends React.Component {
     const isListPage = this.props.pagePath.match(/\/$/);
     this.setState({ isListPage });
 
+    // whether set link to '/'
+    const behaviorType = this.props.crowi.getConfig()['behaviorType'];
+    const isLinkToListPage = ('crowi-plus' !== behaviorType);
+    this.setState({ isLinkToListPage });
+
     // generate pages obj
     let splitted = this.props.pagePath.split(/\//);
     splitted.shift();   // omit first element with shift()
@@ -44,6 +52,18 @@ export default class RevisionPath extends React.Component {
     }, 1000);
   }
 
+  generateLinkElementToListPage(pagePath, isLinkToListPage, isLastElement) {
+    if (isLinkToListPage) {
+      return <a href={pagePath+'/'} className={(isLastElement && !this.state.isListPage) ? 'last-path' : ''}>/</a>;
+    }
+    else if (!isLastElement) {
+      return <span className="text-primary">/</span>;
+    }
+    else {
+      return <span></span>
+    }
+  }
+
   render() {
     // define style
     const rootStyle = {
@@ -60,14 +80,16 @@ export default class RevisionPath extends React.Component {
     this.state.pages.forEach((page, index) => {
       const isLastElement = (index == pageLength-1);
 
-      // add elements
+      // add elements for page
       afterElements.push(
         <span key={page.pagePath} className="path-segment">
           <a href={page.pagePath}>{page.pageName}</a>
         </span>);
+
+      // add elements for '/'
       afterElements.push(
         <span key={page.pagePath+'/'} className="separator" style={separatorStyle}>
-          <a href={page.pagePath+'/'} className={(isLastElement && !this.state.isListPage) ? 'last-path' : ''}>/</a>
+          {this.generateLinkElementToListPage(page.pagePath, this.state.isLinkToListPage, isLastElement)}
         </span>
       );
     });
@@ -86,5 +108,6 @@ export default class RevisionPath extends React.Component {
 }
 
 RevisionPath.propTypes = {
-  pagePath: React.PropTypes.string.isRequired,
+  pagePath: PropTypes.string.isRequired,
+  crowi: PropTypes.object.isRequired,
 };