define([ 'jquery', '/common/hyperscript.js', '/common/cryptpad-common.js', '/customize/pages.js', '/api/config', 'css!/bower_components/components-font-awesome/css/font-awesome.min.css', ], function ($, h, Cryptpad, Pages, Config) { $(function () { var urlArgs = Config.requireConf.urlArgs; var Messages = Cryptpad.Messages; var $body = $('body'); var isMainApp = function () { return /^\/(pad|code|slide|poll|whiteboard|file|media|contacts|drive|settings|profile|todo)\/$/.test(location.pathname); }; var rightLink = function (ref, loc, txt) { return h('span.link.right', [ h('a', { href: ref, 'data-localization': loc}, txt) ]); }; var $topbar = $(h('div#cryptpadTopBar', [ h('span', [ h('a.gotoMain', {href: '/'}, [ h('img.cryptpad-logo', { src: '/customize/cryptofist_mini.png?' + urlArgs, alt: '', }), 'CryptPad' ]) ]), h('span#user-menu.right.dropdown-bar'), h('span#language-selector.right.dropdown-bar'), rightLink('/about.html', 'about', 'About'), rightLink('/privacy.html', 'privacy', 'Privacy'), rightLink('/terms.html', 'terms', 'ToS'), rightLink('/contact.html', 'contact', 'Contact'), rightLink('https://blog.cryptpad.fr/', 'blog', 'Blog'), h('span.link.right', [ h('button#upgrade.upgrade.btn.buttonSuccess', { style: { display: 'none' } }) ]) ] )); var infoPage = function () { return h('div#mainBlock.hidden', typeof(Pages[location.pathname]) === 'function'? Pages[location.pathname](): [h('div#container')]); }; var $main = $(infoPage()); var footerCol = function (title, L, literal) { return h('div.col', [ h('ul.list-unstyled', [ h('li.title', { 'data-localization': title, }, title? Messages[title]: literal ) ].concat(L.map(function (l) { return h('li', [ l ]); })) ) ]); }; var footLink = function (ref, loc, text) { var attrs = { href: ref, }; if (!/^\//.test(ref)) { attrs.target = '_blank'; attrs.rel = 'noopener noreferrer'; } if (loc) { attrs['data-localization'] = loc; text = Messages[loc]; } return h('a', attrs, text); }; var $footer = $(h('footer', [ h('div.container', [ h('div.row', [ footerCol(null, [ footLink('/about.html', 'about'), footLink('/terms.html', 'terms'), footLink('/privacy.html', 'privacy'), ], 'CryptPad'), footerCol('footer_applications', [ footLink('/drive/', 'main_drive'), footLink('/pad/', 'main_richText'), footLink('/code/', 'main_code'), footLink('/slide/', 'main_slide'), footLink('/poll/', 'main_poll'), footLink('/whiteboard/', null, Messages.type.whiteboard) ]), footerCol('footer_aboutUs', [ footLink('https://blog.cryptpad.fr', 'blog'), footLink('https://labs.xwiki.com', null, 'XWiki Labs'), footLink('http://www.xwiki.com', null, 'XWiki SAS'), footLink('https://www.open-paas.org', null, 'OpenPaaS') ]), footerCol('footer_contact', [ footLink('https://riot.im/app/#/room/#cryptpad:matrix.org', null, 'Chat'), footLink('https://twitter.com/cryptpad', null, 'Twitter'), footLink('https://github.com/xwiki-labs/cryptpad', null, 'GitHub'), footLink('/contact.html', null, 'Email') ]) ]) ]), h('div.version-footer', "CryptPad v1.12.0 (Minotaur)") ])); var pathname = location.pathname; if (isMainApp()) { if (typeof(Pages[pathname]) === 'function') { var $flash = $('body, #iframe-container, #pad-iframe, textarea'); $flash.css({ display: 'none', opacity: 0, overflow: 'hidden', }); var ready = function () { $flash.css({ display: '', opacity: '', overflow: '', }); }; require([ 'less!/customize/src/less/loading.less' ], function () { if (/whiteboard/.test(pathname)) { $('body').html(h('body', Pages[pathname]()).innerHTML); require(['/whiteboard/main.js'], ready); } else if (/poll/.test(pathname)) { $('body').html(h('body', Pages[pathname]()).innerHTML); require(['/poll/main.js'], ready); } else if (/drive/.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require(['/drive/main.js'], ready); } else if (/\/file\//.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/file/main.js' ], ready); } else if (/contacts/.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/contacts/main.js' ], ready); } else if (/pad/.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/pad/main.js' ], ready); } else if (/code/.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/code/main.js' ], ready); } else if (/slide/.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/slide/main.js' ], ready); } else if (/^\/settings\//.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/settings/main.js', ], ready); } else if (/^\/profile\//.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/profile/main.js', ], ready); } else if (/^\/todo\//.test(pathname)) { $('body').append(h('body', Pages[pathname]()).innerHTML); require([ '/todo/main.js', ], ready); } }); return; } } require([ 'less!/customize/src/less2/main.less', 'css!/bower_components/bootstrap/dist/css/bootstrap.min.css', '/bower_components/bootstrap/dist/js/bootstrap.min.js' ], function () { $body.append($main); if (/^\/user\//.test(pathname)) { require([ '/user/main.js'], function () {}); } else if (/^\/register\//.test(pathname)) { require([ '/register/main.js' ], function () {}); } else if (/^\/login\//.test(pathname)) { require([ '/login/main.js' ], function () {}); } else if (/^\/($|^\/index\.html$)/.test(pathname)) { // TODO use different top bar require([ '/customize/main.js', ], function () {}); } else if (/invite/.test(pathname)) { require([ '/invite/main.js'], function () {}); } else { require([ '/customize/main.js', ], function () {}); } }); }); });