index.js 6.3 KB

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