PagePath.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. export default class PagePath extends React.Component {
  3. // Original Crowi.linkPath
  4. /*
  5. Crowi.linkPath = function(revisionPath) {
  6. var $revisionPath = revisionPath || '#revision-path';
  7. var $title = $($revisionPath);
  8. var pathData = $('#content-main').data('path');
  9. if (!pathData) {
  10. return ;
  11. }
  12. var realPath = pathData.trim();
  13. if (realPath.substr(-1, 1) == '/') {
  14. realPath = realPath.substr(0, realPath.length - 1);
  15. }
  16. var path = '';
  17. var pathHtml = '';
  18. var splittedPath = realPath.split(/\//);
  19. splittedPath.shift();
  20. splittedPath.forEach(function(sub) {
  21. path += '/';
  22. pathHtml += ' <a href="' + path + '">/</a> ';
  23. if (sub) {
  24. path += sub;
  25. pathHtml += '<a href="' + path + '">' + sub + '</a>';
  26. }
  27. });
  28. if (path.substr(-1, 1) != '/') {
  29. path += '/';
  30. pathHtml += ' <a href="' + path + '" class="last-path">/</a>';
  31. }
  32. $title.html(pathHtml);
  33. };
  34. */
  35. linkPath(path) {
  36. return path;
  37. }
  38. render() {
  39. const page = this.props.page;
  40. const shortPath = this.getShortPath(page.path);
  41. const pathPrefix = page.path.replace(new RegExp(shortPath + '(/)?$'), '');
  42. return (
  43. <span className="page-path">
  44. {pathPrefix}<strong>{shortPath}</strong>
  45. </span>
  46. );
  47. }
  48. }
  49. PagePath.propTypes = {
  50. page: React.PropTypes.object.isRequired,
  51. };
  52. PagePath.defaultProps = {
  53. page: {},
  54. };