diff --git a/customize.dist/application_config.js b/customize.dist/application_config.js index 0e067331e..e391134eb 100644 --- a/customize.dist/application_config.js +++ b/customize.dist/application_config.js @@ -4,7 +4,7 @@ define(function() { /* Select the buttons displayed on the main page to create new collaborative sessions * Existing types : pad, code, poll, slide */ - config.availablePadTypes = ['pad', 'code', 'slide', 'poll']; + config.availablePadTypes = ['drive', 'pad', 'code', 'slide', 'poll']; /* Cryptpad apps use a common API to display notifications to users * by default, notifications are hidden after 5 seconds diff --git a/customize.dist/index.html b/customize.dist/index.html index cc7be8877..22ced1111 100644 --- a/customize.dist/index.html +++ b/customize.dist/index.html @@ -70,14 +70,14 @@
-
+ -
+ +
diff --git a/customize.dist/main.css b/customize.dist/main.css index 44f3f5aae..4e0c48fd1 100644 --- a/customize.dist/main.css +++ b/customize.dist/main.css @@ -679,9 +679,6 @@ html.cp, background-color: #000; opacity: 0.35; } -.cp #mainBlock.hidden { - display: none; -} .cp #noscriptContainer { color: black; position: absolute; @@ -714,6 +711,9 @@ html.cp, background-attachment: fixed; background-position: center; } +.cp #main .hidden { + display: none !important; +} .cp #main_other { padding: 0 15vw; background-color: #fafafa; @@ -783,6 +783,32 @@ html.cp, margin-top: 20px; margin-bottom: 5px; } +.cp #main #loggedIn, +.cp #main_other #loggedIn { + color: #fff; + display: inline-block; + position: absolute; + top: 50%; + right: 0; + margin-left: 50px; + width: 350px; + max-width: 35%; + transform: translateY(-50%); + text-align: center; + font-weight: bold; +} +.cp #main #loggedIn button, +.cp #main_other #loggedIn button { + font-weight: bold; + cursor: pointer; +} +.cp #main #loggedIn p, +.cp #main_other #loggedIn p { + margin: 20px; + padding: 0; + font-size: 20px; + line-height: 1.5em; +} .cp #main #userForm, .cp #main_other #userForm { position: absolute; diff --git a/customize.dist/main.js b/customize.dist/main.js index 5606b1960..ba0626853 100644 --- a/customize.dist/main.js +++ b/customize.dist/main.js @@ -6,37 +6,55 @@ define([ '/customize/languageSelector.js', '/bower_components/jquery/dist/jquery.min.js', ], function (Messages, Config, Cryptpad, LilUri, LS) { - if (Cryptpad.isLoggedIn()) { - document.location.href = '/drive'; - return; - } - var $ = window.$; - - var USE_TABLE = Config.USE_HOMEPAGE_TABLE; - var USE_FS_STORE = Config.USE_FS_STORE; + var $main = $('#mainBlock'); var APP = window.APP = { Cryptpad: Cryptpad, }; + // Language selector + var $sel = $('#language-selector'); + Cryptpad.createLanguageSelector(undefined, $sel); + $sel.find('button').addClass('btn').addClass('btn-secondary'); + $sel.show(); + + $(window).click(function () { + $('.cryptpad-dropdown').hide(); + }); + // main block is hidden in case javascript is disabled - $('#mainBlock').removeClass('hidden'); + $main.removeClass('hidden'); - var padTypes = { - '/pad/': Messages.type.pad, - '/code/': Messages.type.code, - '/poll/': Messages.type.poll, - '/slide/': Messages.type.slide, - }; + // Make sure we don't display non-translated content (empty button) + $main.find('#data').removeClass('hidden'); - var now = new Date(); - var hasRecent = false; + if (Cryptpad.isLoggedIn()) { + var name = localStorage[Cryptpad.userNameKey] || sessionStorage[Cryptpad.userNameKey]; + var $loggedInBlock = $main.find('#loggedIn'); + var $hello = $loggedInBlock.find('#loggedInHello'); + var $logout = $loggedInBlock.find('#loggedInLogOut'); + + $hello.text(Messages._getKey('login_hello', [name])); + $('#buttons').find('.nologin').hide(); + + $logout.click(function () { + Cryptpad.logout(function () { + window.location.reload(); + }); + }); + + $loggedInBlock.removeClass('hidden'); + //return; + } else { + $main.find('#userForm').removeClass('hidden'); + } var displayCreateButtons = function () { var $parent = $('#buttons'); var options = []; Config.availablePadTypes.forEach(function (el) { + if (el === 'drive') { return; } options.push({ tag: 'a', attributes: { @@ -55,17 +73,6 @@ define([ $block.find('button').addClass('btn').addClass('btn-success'); $block.appendTo($parent); }; - - // Language selector - var $sel = $('#language-selector'); - Cryptpad.createLanguageSelector(undefined, $sel); - $sel.find('button').addClass('btn').addClass('btn-secondary'); - $sel.show(); - - $(window).click(function () { - $sel.find('.cryptpad-dropdown').hide(); - }); - var addButtonHandlers = function () { $('button.login').click(function (e) { var username = $('#name').val(); diff --git a/customize.dist/src/fragments/index.html b/customize.dist/src/fragments/index.html index 66f474156..914194cde 100644 --- a/customize.dist/src/fragments/index.html +++ b/customize.dist/src/fragments/index.html @@ -3,14 +3,14 @@
-
+ -
+ +
diff --git a/customize.dist/src/less/cryptpad.less b/customize.dist/src/less/cryptpad.less index a067e62c6..c65fdafae 100644 --- a/customize.dist/src/less/cryptpad.less +++ b/customize.dist/src/less/cryptpad.less @@ -251,11 +251,6 @@ body.html { opacity: 0.35; } } -#mainBlock { - &.hidden { - display: none; - } -} #noscriptContainer { color: black; position: absolute; @@ -287,6 +282,9 @@ body.html { background-size: cover; background-attachment: fixed; background-position: center; + .hidden { + display: none !important; + } } #main_other { padding: 0 @main-border-width; @@ -355,6 +353,31 @@ body.html { } } + #loggedIn { + color: @main-color; + display: inline-block; + position: absolute; + top: 50%; + right: 0; + margin-left: 50px; + width: 350px; + max-width: 35%; + transform: translateY(-50%); + text-align: center; + font-weight: bold; + button { + font-weight: bold; + cursor: pointer; + } + p { + margin: 20px; + padding: 0; + font-size: 20px; + line-height: 1.5em; + } + + } + #userForm { position: absolute; right: 0; diff --git a/customize.dist/translations/messages.fr.js b/customize.dist/translations/messages.fr.js index cb88b4987..071791fb9 100644 --- a/customize.dist/translations/messages.fr.js +++ b/customize.dist/translations/messages.fr.js @@ -13,6 +13,7 @@ define(function () { out.type.code = 'Code'; out.type.poll = 'Sondage'; out.type.slide = 'Présentation'; + out.type.drive = 'Drive'; out.errorBox_errorType_disconnected = 'Connexion perdue'; out.errorBox_errorExplanation_disconnected = [ @@ -82,8 +83,8 @@ define(function () { out.shareSuccess = 'URL copiée dans le presse-papiers'; out.shareFailed = "Échec de la copie de l'URL dans le presse-papiers"; - out.newPadButton = 'Nouveau'; - out.newPadButtonTitle = 'Créer un nouveau document'; + out.appsButton = 'Apps'; + out.appsButtonTitle = 'Accéder aux autres applications'; out.presentButton = 'PRÉSENTER'; out.presentButtonTitle = "Entrer en mode présentation"; @@ -278,6 +279,8 @@ define(function () { out.loginText = '

Votre nom d\'utilisateur et votre mot d epasse sont utilisés pour générer une clé unique qui reste inconnue de notre serveur.

\n' + '

Faîtes attention de ne pas perdre vos identifiants, puisqu\'il est impossible de les récupérer

'; + out.login_hello = 'Bonjour {0},'; // {0} is the username + out.login_accessDrive = 'Accédez à votre drive'; // index.html diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js index 95257b256..29bee7bd3 100644 --- a/customize.dist/translations/messages.js +++ b/customize.dist/translations/messages.js @@ -14,6 +14,7 @@ define(function () { out.type.code = 'Code'; out.type.poll = 'Poll'; out.type.slide = 'Presentation'; + out.type.drive = 'Drive'; out.errorBox_errorType_disconnected = 'Connection Lost'; out.errorBox_errorExplanation_disconnected = [ @@ -87,8 +88,8 @@ define(function () { out.shareSuccess = 'Copied URL to clipboard'; out.shareFailed = "Failed to copy URL to clipboard"; - out.newPadButton = 'New'; - out.newPadButtonTitle = 'Create a new document'; + out.appsButton = 'Apps'; + out.appsButtonTitle = 'Access other applications'; out.presentButton = 'PRESENT'; out.presentButtonTitle = "Enter presentation mode"; @@ -280,6 +281,8 @@ define(function () { out.loginText = '

Your username and password are used to generate a unique key which is never known by our server.

\n' + '

Be careful not to forget your credentials, as they are impossible to recover

'; + out.login_hello = 'Hello {0},'; // {0} is the username + out.login_accessDrive = 'Access your drive'; // index.html diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 1f11e2783..a7bbf746b 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -65,22 +65,26 @@ define([ }; var userHashKey = common.userHashKey = 'User_hash'; + var userNameKey = common.userNameKey = 'User_name'; var fileHashKey = common.fileHashKey = 'FS_hash'; - var login = common.login = function (hash, remember, cb) { + var login = common.login = function (hash, name, remember, cb) { if (!hash) { throw new Error('expected a user hash'); } + if (!name) { throw new Error('expected a user name'); } if (!remember) { sessionStorage.setItem(userHashKey, hash); + sessionStorage.setItem(userNameKey, name); } else { localStorage.setItem(userHashKey, hash); + localStorage.setItem(userNameKey, name); } if (cb) { cb(); } }; var logout = common.logout = function (cb) { [ -// fileHashKey, + userNameKey, userHashKey, ].forEach(function (k) { sessionStorage.removeItem(k); diff --git a/www/common/toolbar.js b/www/common/toolbar.js index 055e60fb6..fcc45a438 100644 --- a/www/common/toolbar.js +++ b/www/common/toolbar.js @@ -1,7 +1,8 @@ define([ '/customize/messages.js', + '/customize/application_config.js', '/bower_components/jquery/dist/jquery.min.js' -], function (Messages) { +], function (Messages, Config) { var $ = window.jQuery; var Bar = { @@ -349,24 +350,24 @@ define([ if (config.displayed.indexOf('newpad') !== -1) { var pads_options = []; - ['pad', 'code', 'slide', 'poll'].forEach(function (p) { + Config.availablePadTypes.forEach(function (p) { pads_options.push({ tag: 'a', attributes: { - 'target': '_blank', // TODO: open in the same window? + 'target': '_blank', 'href': '/' + p, }, - content: Messages.type[p] // Pretty name of the language value + content: Messages.type[p] }); }); - var $newButton = $('
').append($('', {'class': 'fa fa-plus'})).append(Messages.newPadButton); + var $newButton = $('
').append($('', {'class': 'fa fa-th-large'})).append(Messages.appsButton); var dropdownConfig = { text: $newButton.html(), // Button initial text options: pads_options, // Entries displayed in the menu left: true, // Open to the left of the button }; var $newPadBlock = Cryptpad.createDropdown(dropdownConfig); - $newPadBlock.find('button').attr('title', Messages.newPadButtonTitle); + $newPadBlock.find('button').attr('title', Messages.appsButtonTitle); $newPadBlock.appendTo($userContainer); } diff --git a/www/drive/main.js b/www/drive/main.js index ad8852028..3f145f4fe 100644 --- a/www/drive/main.js +++ b/www/drive/main.js @@ -452,6 +452,12 @@ define([ $menu.find('a.own').parent('li').hide(); } + $menu.find('[data-type]').each(function (idx, el) { + if (AppConfig.availablePadTypes.indexOf($(el).attr('data-type')) === -1) { + $(el).hide(); + } + }); + $menu.css({ display: "block", left: e.pageX, @@ -893,6 +899,7 @@ define([ options.push({tag: 'hr'}); } AppConfig.availablePadTypes.forEach(function (type) { + if (type === 'drive') { return; } var path = filesOp.isPathInTrash(currentPath) ? '' : '/#?path=' + encodeURIComponent(currentPath); var attributes = { 'class': 'newdoc', diff --git a/www/user/main.js b/www/user/main.js index 414691ad3..c1da83fe2 100644 --- a/www/user/main.js +++ b/www/user/main.js @@ -131,7 +131,7 @@ define([ APP.setAccountName(getAccountName(proxy)); APP.setDisplayName(getDisplayName(proxy)); - Cryptpad.login(opt.userHash, opt.remember); + Cryptpad.login(opt.userHash, getAccountName(proxy), opt.remember); APP.revealLogin(false); APP.revealUser(true); APP.revealLogout(true);