cryptpad/customize.dist/pages.js

587 lines
26 KiB
JavaScript
Raw Normal View History

2017-06-21 16:02:38 +00:00
define([
'/api/config',
2017-06-21 16:02:38 +00:00
'/common/hyperscript.js',
'/common/cryptpad-common.js',
'jquery'
], function (Config, h, Cryptpad, $) {
2017-06-21 16:02:38 +00:00
var Pages = {};
var Msg = Cryptpad.Messages;
var urlArgs = Config.requireConf.urlArgs;
2017-06-21 16:02:38 +00:00
var setHTML = function (e, html) {
e.innerHTML = html;
return e;
};
2017-06-21 16:02:38 +00:00
var footerCol = function (title, L, literal) {
return h('div.col', [
h('ul.list-unstyled', [
2017-08-04 15:44:02 +00:00
h('li.footer-title', {
'data-localization': title,
}, title? Msg[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 = Msg[loc];
}
return h('a', attrs, text);
};
var infopageFooter = function () {
return 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, Msg.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.cp-version-footer', "CryptPad v1.13.0 (Naiad)")
]);
};
var infopageTopbar = function () {
2017-08-04 14:48:01 +00:00
var rightLinks;
var username = window.localStorage.getItem('User_name');
if (username === null) {
rightLinks = [
h('a.nav-item.nav-link.cp-login-btn', { href: '/login'}, Msg.login_login),
h('a.nav-item.nav-link.cp-register-btn', { href: '/register'}, Msg.login_register)
];
} else {
rightLinks = h('a.nav-item.nav-link.cp-user-btn', { href: '/drive' }, [
h('i.fa.fa-user-circle'),
" ",
username
]);
}
2017-08-04 12:15:35 +00:00
return h('nav.navbar.navbar-toggleable-md',
h('button.navbar-toggler.navbar-toggler-right', {'type':'button'}, {'data-toggle':'collapse'}, {'data-target':'#menuCollapse'}, {'aria-controls': 'menuCollapse'}, {'aria-expanded':'false'}, {'aria-label':'Toggle navigation'},
[h('i.fa.fa-bars ')
]),
2017-08-04 12:15:35 +00:00
h('a.navbar-brand', { href: '/'}),
h('div.collapse.navbar-collapse.justify-content-end#menuCollapse', [
h('a.nav-item.nav-link', { href: '/what-is-cryptpad.html'}, Msg.topbar_whatIsCryptpad),
h('a.nav-item.nav-link', { href: 'https://blog.cryptpad.fr/'}, Msg.blog),
h('a.nav-item.nav-link', { href: '/contact.html'}, Msg.contact),
h('a.nav-item.nav-link', { href: '/about.html'}, Msg.about),
2017-08-04 14:48:01 +00:00
].concat(rightLinks))
);
};
Pages['/about.html'] = function () {
return h('div#cp-main', [
infopageTopbar(),
h('div.container.cp-container', [
h('center', [
h('h1', Msg.about)
]),
2017-08-03 13:58:51 +00:00
setHTML(h('p'), 'CryptPad is created inside of the Research Team at <a href="http://xwiki.com">XWiki SAS</a>, a small business located in Paris France and Iasi Romania. There are 3 core team members working on CryptPad plus a number of contributors both inside and outside of XWiki SAS.'),
h('h2', 'Core Developers'),
h('div.row', [
h('div.col-md-4', [
2017-08-03 16:01:48 +00:00
h('img.bio-avatar', {'src': '/customize/images/aaron.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Aaron MacSween"),
setHTML(h('div#bio'), '<p>Aaron transitioned into distributed systems development from a background in jazz and live stage performance.</p><p>He appreciates the elegance of biological systems and functional programming, and focused on both as a student at the University of Toronto, where he studied cognitive and computer sciences.</p><p>He moved to Paris in 2015 to work as a research engineer at XWiki SAS, after having dedicated significant time to various cryptography-related software projects.</p><p>He spends his spare time experimenting with guitars, photography, science fiction, and spicy food.</p>')
]),
h('div.col-md-4', [
2017-08-03 16:01:48 +00:00
h('img.bio-avatar', {'src': '/customize/images/caleb.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Caleb James Delisle"),
setHTML(h('div#bio'), '<p>Caleb is a cryptography developer, Machine Technology graduate of the Franklin County Technical School and lifelong tinkerer.</p><p>In 2011, he started the cjdns Open Source project to show that secure networking could be invisible and easily deployed.</p><p>After joining XWiki SAS in 2014, he started the CryptPad project with the intent of bringing the same transparent security to collaborative editing.</p><p>He\'s always trying to learn from more experienced colleagues and when someone passes through the Research Team office, his favorite words are "Pull up a chair!".</p>')
]),
h('div.col-md-4', [
2017-08-03 16:01:48 +00:00
h('img.bio-avatar', {'src': '/customize/images/yann.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Yann Flory"),
setHTML(h('div#bio'), '<p>Yann is a mysterious person.</p>')
]),
]),
h('h2', 'Key Contributors'),
h('div.row', [
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/Pierre-new.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Pierre Bondoerffer"),
setHTML(h('div#bio'), '<p>Resident CSS wizard and emoji extraordinaire, Pierre is passionate about anything related to technology. He loves to hack around computers and put parts together.</p><p>He is currently studying at 42, where he learns about algorithms, networking, kernel programming and graphics.</p><p>As a part of an internship, he joined XWiki SAS and worked on CryptPad to improve user experience. He also maintains the Spanish translation.</p>')
]),
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/Catalin.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Catalin Scripcariu"),
setHTML(h('div#bio'), '<p> Catalin is a Maths majour and has worked in B2B sales for 12 years. Design was always his passion and 3 years ago he started to dedicate himself to web design and front-end.</p><p>At the beginning of 2017 he joined the Xwiki family, where he worked both on the business and the community side of XWiki, including the research team and CryptPad. </p>')
2017-08-03 13:58:51 +00:00
]),
h('div.col-md-4', [
2017-08-04 12:19:44 +00:00
h('img.bio-avatar', {'src': '/customize/images/ludovic.jpg'}),
2017-08-03 13:58:51 +00:00
h('h3', "Ludovic Dubost"),
2017-08-04 12:19:44 +00:00
setHTML(h('div#bio'), '<p>A graduate of PolyTech (X90) and Telecom School in Paris, Ludovic Dubost started his career as a software architect for Netscape Communications Europe. He then became CTO of NetValue, one of the first French start-ups that went public. He left NetValue after the company was purchased by Nielsen/NetRatings and in 2004 launched XWiki, the next generation wiki.</p><p>Since the very beginning, Ludovic has been immensely helpful to the CryptPad project. He believed in the idea when there was nothing more than the collaborative pad and his help with sales strategy for the project.</p>')
2017-08-03 13:58:51 +00:00
])
]),
]),
infopageFooter()
2017-08-02 09:50:35 +00:00
]);
2017-06-21 16:02:38 +00:00
};
Pages['/privacy.html'] = function () {
return h('div#cp-main', [
infopageTopbar(),
h('div.container.cp-container', [
h('center', h('h1', Msg.policy_title)),
h('h2', Msg.policy_whatweknow),
h('p', Msg.policywhatweknow_p1),
2017-06-21 16:02:38 +00:00
h('h2', Msg.policy_howweuse),
h('p', Msg.policy_howweuse_p1),
h('p', Msg.policy_howweuse_p2),
2017-06-21 16:02:38 +00:00
h('h2', Msg.policy_whatwetell),
h('p', Msg.policy_whatwetell_p1),
2017-06-21 16:02:38 +00:00
h('h2', Msg.policy_links),
h('p', Msg.policy_links_p1),
2017-06-21 16:02:38 +00:00
h('h2', Msg.policy_ads),
h('p', Msg.policy_ads_p1),
2017-06-21 16:02:38 +00:00
h('h2', Msg.policy_choices),
h('p', Msg.policy_choices_open),
setHTML(h('p'), Msg.policy_choices_vpn),
]),
infopageFooter()
2017-06-21 16:02:38 +00:00
]);
};
Pages['/terms.html'] = function () {
return h('div#cp-main', [
infopageTopbar(),
h('div.container.cp-container', [
h('center', h('h1', Msg.tos_title)),
h('p', Msg.tos_legal),
h('p', Msg.tos_availability),
h('p', Msg.tos_e2ee),
h('p', Msg.tos_logs),
h('p', Msg.tos_3rdparties),
]),
infopageFooter()
2017-06-21 16:02:38 +00:00
]);
};
Pages['/contact.html'] = function () {
return h('div#cp-main', [
2017-08-03 16:01:48 +00:00
infopageTopbar(),
h('div.container.cp-container', [
h('center', h('h1', Msg.contact)),
setHTML(h('p'), Msg.main_about_p2)
]),
infopageFooter(),
]);
2017-06-21 16:02:38 +00:00
};
Pages['/what-is-cryptpad.html'] = function () {
return h('div#cp-main', [
infopageTopbar(),
h('div.container.cp-container', [
2017-08-02 12:57:27 +00:00
h('center', h('h1', Msg.whatis_title)),
setHTML(h('h2'), Msg.whatis_collaboration),
setHTML(h('p'), Msg.whatis_collaboration_p1),
2017-08-02 13:53:04 +00:00
h('img', { src: '/customize/images/pad_screenshot.png?' + urlArgs }),
2017-08-02 12:57:27 +00:00
setHTML(h('p'), Msg.whatis_collaboration_p2),
setHTML(h('p'), Msg.whatis_collaboration_p3),
setHTML(h('h2'), Msg.whatis_zeroknowledge),
2017-08-02 13:53:04 +00:00
h('div.row', [
h('div.col-md-4.align-self-center', [
h('img#zeroknowledge', { src: '/customize/images/zeroknowledge_small.png?' + urlArgs }),
]),
h('div.col-md-8', [
setHTML(h('p'), Msg.whatis_zeroknowledge_p1),
setHTML(h('p'), Msg.whatis_zeroknowledge_p2),
setHTML(h('p'), Msg.whatis_zeroknowledge_p3),
]),
]),
2017-08-02 12:57:27 +00:00
setHTML(h('h2'), Msg.whatis_drive),
setHTML(h('p'), Msg.whatis_drive_p1),
2017-08-02 13:53:04 +00:00
h('img', { src: '/customize/images/drive_screenshot.png?' + urlArgs }),
2017-08-02 12:57:27 +00:00
setHTML(h('p'), Msg.whatis_drive_p2),
setHTML(h('p'), Msg.whatis_drive_p3),
setHTML(h('h2'), Msg.whatis_business),
setHTML(h('p'), Msg.whatis_business_p1),
setHTML(h('p'), Msg.whatis_business_p2),
]),
infopageFooter(),
]);
};
2017-06-21 16:02:38 +00:00
Pages['/'] = Pages['/index.html'] = function () {
var showingMore = false;
2017-06-21 16:02:38 +00:00
return [
h('div#cp-main', [
2017-07-22 14:43:53 +00:00
infopageTopbar(),
h('div.container.cp-container', [
2017-07-22 14:43:53 +00:00
h('div.row', [
h('div.cp-title.col-12.col-sm-6', [
2017-07-22 15:31:40 +00:00
h('img', { src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs }),
2017-07-22 14:43:53 +00:00
h('h1', 'CryptPad'),
h('p', Msg.main_catch_phrase)
]),
h('div.col-12.col-sm-6', [
[
2017-07-31 15:53:31 +00:00
[ 'pad', '/pad/', Msg.main_richTextPad, 'fa-file-word-o' ],
[ 'code', '/code/', Msg.main_codePad, 'fa-file-code-o' ],
[ 'slide', '/slide/', Msg.main_slidePad, 'fa-file-powerpoint-o' ],
[ 'poll.cp-more.cp-hidden', '/poll/', Msg.main_pollPad, 'fa-calendar' ],
[ 'whiteboard.cp-more.cp-hidden', '/whiteboard/', Msg.main_whiteboardPad, 'fa-paint-brush' ],
2017-08-08 10:05:22 +00:00
[ 'recent.cp-more.cp-hidden', '/drive/', Msg.main_localPads, 'fa-hdd-o' ]
].map(function (x) {
return h('a', [
{ href: x[1] },
h('div.bs-callout.cp-callout-' + x[0], [
h('i.fa.' + x[3]),
h('div', [ h('h4', x[2]) ])
])
]);
}),
2017-07-24 12:10:40 +00:00
h('div.bs-callout.cp-callout-more', [
h('div.cp-callout-more-lessmsg.cp-hidden', [
"see less ",
h('i.fa.fa-caret-up')
]),
h('div.cp-callout-more-moremsg', [
2017-07-24 14:56:54 +00:00
"see more ",
h('i.fa.fa-caret-down')
2017-07-24 12:10:40 +00:00
]),
{
onclick: function () {
if (showingMore) {
$('.cp-more, .cp-callout-more-lessmsg').addClass('cp-hidden');
$('.cp-callout-more-moremsg').removeClass('cp-hidden');
} else {
$('.cp-more, .cp-callout-more-lessmsg').removeClass('cp-hidden');
$('.cp-callout-more-moremsg').addClass('cp-hidden');
}
showingMore = !showingMore;
}
}
])
2017-06-21 16:02:38 +00:00
])
])
]),
]),
2017-07-03 18:40:19 +00:00
];
2017-06-21 16:02:38 +00:00
};
2017-06-22 09:04:21 +00:00
var loadingScreen = function () {
2017-06-27 16:17:52 +00:00
return h('div#loading',
2017-06-22 09:04:21 +00:00
h('div.loadingContainer', [
h('img.cryptofist', {
2017-08-02 15:19:16 +00:00
src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs
2017-06-22 09:04:21 +00:00
}),
h('div.spinnerContainer',
2017-08-02 15:19:16 +00:00
h('span.fa.fa-circle-o-notch.fa-spin.fa-4x.fa-fw')),
2017-06-22 09:04:21 +00:00
h('p', Msg.loading)
])
);
};
loadingScreen = loadingScreen; // TODO use this
2017-06-21 16:02:38 +00:00
Pages['/user/'] = Pages['/user/index.html'] = function () {
return h('div#container');
};
Pages['/register/'] = Pages['/register/index.html'] = function () {
return [h('div#cp-main', [
2017-08-01 12:35:45 +00:00
infopageTopbar(),
h('div.container.cp-container', [
2017-08-01 15:11:03 +00:00
h('div.row.align-items-center', [
h('div#data.hidden.col-md-6', [
h('h1', Msg.register_header),
2017-08-01 15:11:03 +00:00
setHTML(h('p.register-explanation'), Msg.register_explanation)
]),
2017-08-01 15:11:03 +00:00
h('div#userForm.form-group.hidden.col-md-6', [
h('input.form-control#username', {
type: 'text',
autocomplete: 'off',
autocorrect: 'off',
autocapitalize: 'off',
spellcheck: false,
placeholder: Msg.login_username,
autofocus: true,
}),
h('input.form-control#password', {
type: 'password',
placeholder: Msg.login_password,
}),
h('input.form-control#password-confirm', {
type: 'password',
placeholder: Msg.login_confirm,
}),
2017-08-01 15:11:03 +00:00
h('div.checkbox-container', [
h('input#import-recent', {
2017-08-07 09:41:04 +00:00
name: 'import-recent',
2017-08-01 15:11:03 +00:00
type: 'checkbox',
checked: true
}),
2017-08-07 09:41:04 +00:00
// hscript doesn't generate for on label for some
// reason... use jquery as a temporary fallback
setHTML($('<label for="import-recent"></label>')[0], Msg.register_importRecent)
/*h('label', {
2017-08-01 15:11:03 +00:00
'for': 'import-recent',
2017-08-07 09:41:04 +00:00
}, Msg.register_importRecent),*/
2017-08-01 15:11:03 +00:00
]),
h('div.checkbox-container', [
h('input#accept-terms', {
2017-08-07 09:41:04 +00:00
name: 'accept-terms',
2017-08-01 15:11:03 +00:00
type: 'checkbox'
}),
2017-08-07 09:41:04 +00:00
setHTML($('<label for="accept-terms"></label>')[0], Msg.register_acceptTerms)
/*setHTML(h('label', {
2017-08-01 15:11:03 +00:00
'for': 'accept-terms',
2017-08-07 09:41:04 +00:00
}), Msg.register_acceptTerms),*/
2017-08-01 15:11:03 +00:00
]),
h('button#register.btn.btn-primary', Msg.login_register)
])
2017-08-01 15:11:03 +00:00
]),
]),
infopageFooter(),
])];
};
Pages['/login/'] = Pages['/login/index.html'] = function () {
return [h('div#cp-main', [
2017-08-01 15:11:03 +00:00
infopageTopbar(),
h('div.container.cp-container', [
h('div.row.align-items-center', [
h('div#data.hidden.col-md-6', setHTML(h('p.left'), Msg.main_info)),
h('div#userForm.form-group.hidden.col-md-6', [
h('input.form-control#name', {
name: 'name',
type: 'text',
autocomplete: 'off',
autocorrect: 'off',
autocapitalize: 'off',
spellcheck: false,
placeholder: Msg.login_username,
autofocus: true,
}),
h('input.form-control#password', {
type: 'password',
'name': 'password',
placeholder: Msg.login_password,
}),
h('div.extra', [
2017-08-01 15:11:03 +00:00
h('button.btn.btn-primary.login.first', Msg.login_login),
h('button#register.btn.btn-success.register', Msg.login_register)
])
])
2017-08-01 15:11:03 +00:00
]),
]),
infopageFooter(),
])];
};
var appToolbar = function () {
return h('div#toolbar.toolbar-container');
};
Pages['/whiteboard/'] = Pages['/whiteboard/index.html'] = function () {
return [
appToolbar(),
h('div#canvas-area', h('canvas#canvas', {
width: 600,
height: 600
})),
h('div#controls', {
style: {
display: 'block',
}
}, [
2017-08-09 12:43:32 +00:00
h('button#clear.btn.btn-danger', Msg.canvas_clear), ' ',
h('button#toggleDraw.btn.btn-default', Msg.canvas_disable),
h('button#delete.btn.btn-default', {
style: {
display: 'none',
}
2017-08-09 12:43:32 +00:00
}, Msg.canvas_delete),
h('div.range-group', [
h('label', {
'for': 'width'
}, Msg.canvas_width),
h('input#width', {
type: 'range',
value: "5",
min: "1",
max: "100"
}),
h('span#width-val', '5px')
]),
h('div.range-group', [
h('label', {
'for': 'opacity',
}, Msg.canvas_opacity),
h('input#opacity', {
type: 'range',
value: "1",
min: "0.1",
max: "1",
step: "0.1"
}),
h('span#opacity-val', '100%')
]),
h('span.selected', [
h('img', {
title: Msg.canvas_currentBrush
})
])
]),
setHTML(h('div#colors'), '&nbsp;'),
loadingScreen(),
h('div#cursors', {
style: {
display: 'none',
background: 'white',
'text-align': 'center',
}
}),
h('div#pickers'),
];
};
2017-06-27 13:38:12 +00:00
Pages['/poll/'] = Pages['/poll/index.html'] = function () {
return [
appToolbar(),
h('div#content', [
h('div#poll', [
h('div#howItWorks', [
h('h1', 'CryptPoll'),
2017-07-04 13:09:09 +00:00
setHTML(h('h2'), Msg.poll_subtitle),
2017-06-27 13:38:12 +00:00
h('p', Msg.poll_p_save),
h('p', Msg.poll_p_encryption)
]),
h('div.upper', [
2017-08-09 10:33:40 +00:00
h('button#publish.btn.btn-success', {
2017-06-27 13:38:12 +00:00
style: { display: 'none' }
}, Msg.poll_publish_button),
2017-08-09 10:33:40 +00:00
h('button#admin.btn.btn-primary', {
2017-06-27 13:38:12 +00:00
style: { display: 'none' },
title: Msg.poll_admin_button
}, Msg.poll_admin_button),
2017-08-09 10:33:40 +00:00
h('button#help.btn.btn-default', {
2017-08-09 09:24:28 +00:00
title: Msg.poll_show_help_button
2017-06-27 13:38:12 +00:00
}, Msg.poll_show_help_button)
]),
h('div.realtime', [
h('br'),
h('center', [
h('textarea#description', {
rows: "5",
cols: "50",
disabled: true
}),
h('br')
]),
h('div#tableContainer', [
h('div#tableScroll'),
2017-08-09 10:33:40 +00:00
h('button#create-user.btn.btn-default', {
2017-06-27 13:38:12 +00:00
title: Msg.poll_create_user
}, h('span.fa.fa-plus')),
2017-08-09 10:33:40 +00:00
h('button#create-option.btn.btn-default', {
2017-06-27 13:38:12 +00:00
title: Msg.poll_create_option
}, h('span.fa.fa-plus')),
2017-08-09 10:33:40 +00:00
h('button#commit.btn.btn-default', {
2017-06-27 13:38:12 +00:00
title: Msg.poll_commit
}, h('span.fa.fa-check'))
])
])
])
]),
loadingScreen()
];
};
2017-06-27 16:17:52 +00:00
Pages['/drive/'] = Pages['/drive/index.html'] = function () {
return loadingScreen();
};
Pages['/file/'] = Pages['/file/index.html'] = function () {
return loadingScreen();
};
2017-07-17 15:18:28 +00:00
Pages['/contacts/'] = Pages['/contacts/index.html'] = function () {
2017-07-06 16:00:03 +00:00
return loadingScreen();
};
2017-06-27 16:17:52 +00:00
Pages['/pad/'] = Pages['/pad/index.html'] = function () {
return loadingScreen();
};
Pages['/code/'] = Pages['/code/index.html'] = function () {
return loadingScreen();
};
Pages['/slide/'] = Pages['/slide/index.html'] = function () {
return loadingScreen();
};
2017-07-05 14:01:50 +00:00
Pages['/invite/'] = Pages['/invite/index.html'] = function () {
return loadingScreen();
};
2017-07-10 16:29:23 +00:00
Pages['/settings/'] = Pages['/settings/index.html'] = function () {
return [
h('div#toolbar'),
h('div#container'),
loadingScreen()
];
};
2017-07-12 16:34:16 +00:00
Pages['/profile/'] = Pages['/profile/index.html'] = function () {
return [
h('div#toolbar'),
h('div#container'),
loadingScreen()
];
};
2017-07-23 12:27:47 +00:00
Pages['/todo/'] = Pages['/todo/index.html'] = function () {
return [
h('div#toolbar'),
h('div#container'),
loadingScreen()
];
};
2017-06-21 16:02:38 +00:00
return Pages;
});