swigFunctions.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. module.exports = function(crowi, app, req, locals) {
  2. var debug = require('debug')('crowi:lib:swigFunctions')
  3. , Page = crowi.model('Page')
  4. , Config = crowi.model('Config')
  5. , User = crowi.model('User')
  6. ;
  7. // token getter
  8. locals.csrf = function() {
  9. return req.csrfToken;
  10. };
  11. locals.assets = function(file) {
  12. var assetList = crowi.getAssetList();
  13. var baseName = file.match(/\/([^\/]+)$/)[1];
  14. var baseNameWithHash = '';
  15. if (assetList[baseName]) {
  16. baseNameWithHash = assetList[baseName];
  17. } else {
  18. return file;
  19. }
  20. return file.replace(baseName, baseNameWithHash);
  21. };
  22. locals.googleLoginEnabled = function() {
  23. var config = crowi.getConfig()
  24. return config.crowi['google:clientId'] && config.crowi['google:clientSecret'];
  25. };
  26. locals.searchConfigured = function() {
  27. if (crowi.getSearcher()) {
  28. return true;
  29. }
  30. return false;
  31. };
  32. locals.slackConfigured = function() {
  33. var config = crowi.getConfig()
  34. if (Config.hasSlackToken(config)) {
  35. return true;
  36. }
  37. return false;
  38. };
  39. locals.isUploadable = function() {
  40. var config = crowi.getConfig()
  41. return Config.isUploadable(config);
  42. };
  43. locals.parentPath = function(path) {
  44. if (path == '/') {
  45. return path;
  46. }
  47. if (path.match(/.+\/$/)) {
  48. return path;
  49. }
  50. return path + '/';
  51. };
  52. locals.isUserPageList = function(path) {
  53. if (path.match(/^\/user\/[^\/]+\/$/)) {
  54. return true;
  55. }
  56. return false;
  57. };
  58. locals.isTopPage = function() {
  59. var path = req.path || '';
  60. if (path === '/') {
  61. return true;
  62. }
  63. return false;
  64. };
  65. locals.isTrashPage = function() {
  66. var path = req.path || '';
  67. if (path.match(/^\/trash\/.*/)) {
  68. return true;
  69. }
  70. return false;
  71. };
  72. locals.isDeletablePage = function() {
  73. var Page = crowi.model('Page');
  74. var path = req.path || '';
  75. return Page.isDeletableName(path);
  76. };
  77. locals.userPageRoot = function(user) {
  78. if (!user || !user.username) {
  79. return '';
  80. }
  81. return '/user/' + user.username;
  82. };
  83. locals.css = {
  84. grant: function (pageData) {
  85. if (!pageData) {
  86. return '';
  87. }
  88. switch (pageData.grant) {
  89. case Page.GRANT_PUBLIC:
  90. return 'grant-public';
  91. case Page.GRANT_RESTRICTED:
  92. return 'grant-restricted';
  93. //case Page.GRANT_SPECIFIED:
  94. // return 'grant-specified';
  95. // break;
  96. case Page.GRANT_OWNER:
  97. return 'grant-owner';
  98. default:
  99. break;
  100. }
  101. return '';
  102. },
  103. userStatus: function (user) {
  104. //debug('userStatus', user._id, user.usename, user.status);
  105. switch (user.status) {
  106. case User.STATUS_REGISTERED:
  107. return 'label-info';
  108. case User.STATUS_ACTIVE:
  109. return 'label-success';
  110. case User.STATUS_SUSPENDED:
  111. return 'label-warning';
  112. case User.STATUS_DELETED:
  113. return 'label-danger';
  114. case User.STATUS_INVITED:
  115. return 'label-info';
  116. default:
  117. break;
  118. }
  119. return '';
  120. },
  121. };
  122. };