swigFunctions.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  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. locals.nodeVersion = function() {
  8. return crowi.runtimeVersions.node ? crowi.runtimeVersions.node.version : '-';
  9. }
  10. locals.npmVersion = function() {
  11. return crowi.runtimeVersions.npm ? crowi.runtimeVersions.npm.version : '-';
  12. }
  13. locals.yarnVersion = function() {
  14. return crowi.runtimeVersions.yarn ? crowi.runtimeVersions.yarn.version : '-';
  15. }
  16. locals.crowiVersion = function() {
  17. return crowi.version;
  18. }
  19. // token getter
  20. locals.csrf = function() {
  21. return req.csrfToken;
  22. };
  23. locals.isEnabledLdap = function() {
  24. var config = crowi.getConfig()
  25. return Config.isEnabledPassport(config) && Config.isEnabledLdap(config);
  26. }
  27. locals.googleLoginEnabled = function() {
  28. var config = crowi.getConfig()
  29. return config.crowi['google:clientId'] && config.crowi['google:clientSecret'];
  30. };
  31. locals.searchConfigured = function() {
  32. if (crowi.getSearcher()) {
  33. return true;
  34. }
  35. return false;
  36. };
  37. locals.isEnabledPlugins = function() {
  38. var config = crowi.getConfig()
  39. return Config.isEnabledPlugins(config);
  40. }
  41. locals.isEnabledLinebreaks = function() {
  42. var config = crowi.getConfig()
  43. return Config.isEnabledLinebreaks(config);
  44. }
  45. locals.isEnabledLinebreaksInComments = function() {
  46. var config = crowi.getConfig()
  47. return Config.isEnabledLinebreaksInComments(config);
  48. }
  49. locals.customCss = function() {
  50. return Config.customCss();
  51. }
  52. locals.customScript = function() {
  53. return Config.customScript();
  54. }
  55. locals.behaviorType = function() {
  56. var config = crowi.getConfig()
  57. return Config.behaviorType(config);
  58. }
  59. locals.layoutType = function() {
  60. var config = crowi.getConfig()
  61. return Config.layoutType(config);
  62. }
  63. locals.isEnabledTimeline = function() {
  64. var config = crowi.getConfig()
  65. return Config.isEnabledTimeline(config);
  66. }
  67. locals.slackConfigured = function() {
  68. var config = crowi.getConfig()
  69. if (Config.hasSlackToken(config) || Config.hasSlackIwhUrl(config)) {
  70. return true;
  71. }
  72. return false;
  73. };
  74. locals.isUploadable = function() {
  75. var config = crowi.getConfig()
  76. return Config.isUploadable(config);
  77. };
  78. locals.parentPath = function(path) {
  79. if (path == '/') {
  80. return path;
  81. }
  82. if (path.match(/.+\/$/)) {
  83. return path;
  84. }
  85. return path + '/';
  86. };
  87. locals.isUserPageList = function(path) {
  88. if (path.match(/^\/user\/[^\/]+\/$/)) {
  89. return true;
  90. }
  91. return false;
  92. };
  93. locals.isTopPage = function() {
  94. var path = req.path || '';
  95. if (path === '/') {
  96. return true;
  97. }
  98. return false;
  99. };
  100. locals.isTrashPage = function() {
  101. var path = req.path || '';
  102. if (path.match(/^\/trash\/.*/)) {
  103. return true;
  104. }
  105. return false;
  106. };
  107. locals.isDeletablePage = function() {
  108. var Page = crowi.model('Page');
  109. var path = req.path || '';
  110. return Page.isDeletableName(path);
  111. };
  112. locals.userPageRoot = function(user) {
  113. if (!user || !user.username) {
  114. return '';
  115. }
  116. return '/user/' + user.username;
  117. };
  118. locals.css = {
  119. grant: function (pageData) {
  120. if (!pageData) {
  121. return '';
  122. }
  123. switch (pageData.grant) {
  124. case Page.GRANT_PUBLIC:
  125. return 'grant-public';
  126. case Page.GRANT_RESTRICTED:
  127. return 'grant-restricted';
  128. //case Page.GRANT_SPECIFIED:
  129. // return 'grant-specified';
  130. // break;
  131. case Page.GRANT_OWNER:
  132. return 'grant-owner';
  133. default:
  134. break;
  135. }
  136. return '';
  137. },
  138. userStatus: function (user) {
  139. //debug('userStatus', user._id, user.usename, user.status);
  140. switch (user.status) {
  141. case User.STATUS_REGISTERED:
  142. return 'label-info';
  143. case User.STATUS_ACTIVE:
  144. return 'label-success';
  145. case User.STATUS_SUSPENDED:
  146. return 'label-warning';
  147. case User.STATUS_DELETED:
  148. return 'label-danger';
  149. case User.STATUS_INVITED:
  150. return 'label-info';
  151. default:
  152. break;
  153. }
  154. return '';
  155. },
  156. };
  157. };