index.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. const templates = require('./_templates.js'),
  2. config = require('../../config.js');
  3. module.exports.needLogin = function(urlObj) {
  4. return !urlObj.queryTokens["local"];
  5. };
  6. module.exports.exec = function(req, res) {
  7. if (req.account && !req.account.cguReadAndAccepted) {
  8. if (config.allowNewAccounts)
  9. return {
  10. status: 200,
  11. body: templates.header("Mimou - CGU", ["style.css"])
  12. + `<section class="maci-wrapper fixed-width"><div class="maci-content">
  13. <header id="cguHeader">Merci d'accepter les Conditions Generales d'Utilisation suivantes:</header>
  14. <textarea id="cguContent" class="full-width"></textarea>
  15. <footer class="button-container"><button id="cguButton">J'accepte les Conditions Generales d'Utilisation</button></footer>
  16. </div></section>`
  17. +templates.footer(["cgu.min.js"])
  18. };
  19. else
  20. return require('./_403.js').exec(req, res);
  21. }
  22. var serviceProviderOptionList = "";
  23. if (req.account)
  24. for (var serviceName in config.services)
  25. serviceProviderOptionList += `<option value="${config.services[serviceName].connectLink}">${serviceName}</option>`;
  26. return {
  27. status: 200
  28. ,body: templates.header("Mimouchat", ["style.css", "styleResponsive.css", "_customsheet"], ['<link href="favicon_err.png" type="image/png" rel="icon" id="linkFavicon" />'])
  29. +`<aside class="chat-context" id="chatCtx">
  30. <div class="chat-context-rooms" id="chatList">
  31. <div class="chan-search-wrapper"><input type="search" id="chanSearch" class="chan-search-input" /></div>
  32. <ul class="chat-context-channellist" id="chanList"></ul>
  33. </div>
  34. <nav class="chat-context-menu">
  35. <a id="ctxMenuSettings" href="javascript:void(0);"></a>
  36. <a id="ctxMenuLogout" href="javascript:void(0);"></a>
  37. </nav>
  38. </aside>
  39. <div class="chat-context-menuButton" id="chatCtxButton"></div>
  40. <section id="settings" class="maci-setting hidden">
  41. <header class="settingHead">
  42. <h3 id="settingTitle"></h3>
  43. <div id="settingDiscardClose"></div>
  44. </header>
  45. <div class="settingBody">
  46. <aside class="settingNav">
  47. <ul id="settingMenuItems">
  48. <li id="setting-menu-services" data-target="services"></li>
  49. <li id="setting-menu-display" data-target="display"></li>
  50. <li id="setting-menu-privacy" data-target="privacy"></li>
  51. </ul>
  52. </aside>
  53. <div class="settingContent">
  54. <section class="settings-services">
  55. <h4 id="settings-services-title"></h4>
  56. <div class="button-container"><button id="settings-serviceAddButton"></button></div>
  57. <div class="hidden" id="settings-serviceAddSection">
  58. <select id="settings-serviceAddServiceList">`
  59. +serviceProviderOptionList
  60. +`</select>
  61. <div class="button-container"><button id="settings-serviceAddConfirm"></button></div>
  62. </div>
  63. <ul class="settings-service-list" id="settings-serviceList"></ul>
  64. <div class="settings-service-list-empty error-block" id="settings-serviceListEmpty"></div>
  65. </section>
  66. <section class="settings-display">
  67. <h4 id="settings-display-title"></h4>
  68. <label><span id="settings-displayEmojiProviderLbl"></span><select id="settings-displayEmojiProvider"></select></label>
  69. <label><span id="settings-displayDisplayAvatarLbl"></span><input type="checkbox" value="1" id="settings-displayDisplayAvatar"></label>
  70. <label><span id="settings-displayColorfulNamesLbl"></span><input type="checkbox" value="1" id="settings-displayColorfulNames"></label>
  71. <label><span id="settings-displayScrollAvatarsLbl"></span><input type="checkbox" value="1" id="settings-displayScrollAvatars"></label>
  72. <label><span id="settings-displayAttachmentContentLbl"></span><select id="settings-displayAttachmentContent"><option id="settings-displayAttachmentContent-never" value="0"/><option id="settings-displayAttachmentContent-always" value="1"/><option id="settings-displayAttachmentContent-notimg" value="2"/></select></label>
  73. </section>
  74. <section class="settings-privacy">
  75. <h4 id="settings-privacy-title"></h4>
  76. </section>
  77. </div>
  78. </div>
  79. <footer class="settingFooter">
  80. <button id="settingCommit"></button>
  81. </footer>
  82. </section>
  83. <div class="chatsystem-container no-room-selected" id="chatSystemContainer">
  84. <header class="chatsystem-header" id="chatsystemHeader">
  85. <span class="chatsystem-title" id="currentRoomTitle"></span><span id="currentRoomStar" class="chatsystem-header-star"></span>
  86. </header>
  87. <div class="chatsystem-content" id="chatWindow"></div>
  88. <ul class="chatsystem-whoistyping" id="whoistyping"></ul>
  89. <div class="chatsystem-control">
  90. <div id="replyToContainer" class="replyto-container"></div>
  91. <ul id="slashList" class="chat-command-list"></ul>
  92. <form id="msgForm" class="msgform">
  93. <textarea id="msgInput" class="msgform-input" autocomplete="off" rows=1></textarea>
  94. <a id="emojiButton" class="button msgform-oneline"/></a>
  95. <a id="attachFile" href="#!" class="button msgform-oneline"><img src="paperclip.svg" alt="Send file" class="attach-file-icon" /></a>
  96. <a id="msgFormSubmit" class="button msgform-oneline">&gt;</a>
  97. </form>
  98. </div>
  99. </div>
  100. <div class="hidden file-upload-container" id="fileUploadContainer"><form id="fileUploadForm" enctype="multipart/form-data">
  101. <input type="file" id="fileUploadInput" />
  102. <div id="fileUploadError" class="file-upload-error hidden"></div>
  103. <a id="fileUploadCancel" class="button"/></a>
  104. <input type="submit" class="button"/>
  105. </form></div>
  106. <div class="error" id="neterror"></div><script>var IS_LOCAL=` +!!req.urlObj.queryTokens['local'] +`;</script>`
  107. +templates.footer(["mimouchat.min.js"])
  108. };
  109. };