diff --git a/customize.dist/images/ludovic.jpg b/customize.dist/images/ludovic.jpg new file mode 100644 index 000000000..684e0692e Binary files /dev/null and b/customize.dist/images/ludovic.jpg differ diff --git a/customize.dist/pages.js b/customize.dist/pages.js index e8a64d1ce..d3b512f65 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -77,25 +77,19 @@ define([ }; var infopageTopbar = function () { - return h('div.cp-topbar', - h('div', - h('a.navbar-brand', { href: 'index.html'}, [ - h( 'img', { src: '/customize/CryptPad-white-logo.svg' }) - ]) - ), - h('div.navbar.navbar-toggleable-md.navbar-light.navbar-inverse', - 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'}, + 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 ') ]), - h('div.collapse.navbar-collapse.justify-content-end.flex-column#menuCollapse', [ + 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), - h('a.cp-login-btn', { href: '/login'}, Msg.login_login), - h('a.cp-register-btn', { href: '/register'}, Msg.login_register) + 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) ]) - ) ); }; @@ -138,9 +132,9 @@ define([ setHTML(h('div#bio'), '') ]), h('div.col-md-4', [ - h('img.bio-avatar', {'src': '/customize/images/avatar.png'}), + h('img.bio-avatar', {'src': '/customize/images/ludovic.jpg'}), h('h3', "Ludovic Dubost"), - setHTML(h('div#bio'), '') + setHTML(h('div#bio'), '

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.

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.

') ]) ]), ]), @@ -280,9 +274,11 @@ define([ if (showingMore) { $('.cp-more, .cp-callout-more-lessmsg').addClass('cp-hidden'); $('.cp-callout-more-moremsg').removeClass('cp-hidden'); + if ( $( window ).width() >991 ) $('.navbar').css('margin-top','-1em'); } else { $('.cp-more, .cp-callout-more-lessmsg').removeClass('cp-hidden'); $('.cp-callout-more-moremsg').addClass('cp-hidden'); + $('.navbar').css('margin-top','0'); } showingMore = !showingMore; } diff --git a/customize.dist/src/less2/pages/page-index.less b/customize.dist/src/less2/pages/page-index.less index 98963a70f..425182475 100644 --- a/customize.dist/src/less2/pages/page-index.less +++ b/customize.dist/src/less2/pages/page-index.less @@ -62,43 +62,39 @@ //font-style: italic; } } -.cp-topbar { - //position: absolute; - background: transparent; - a { - color: #fff; - padding: 0.5em 0.5em 0.5em 0.5em; +.navbar { + width: 100%; + margin-top: -1em; + @media only screen and (max-device-width: 991px) { + margin-top: 0; } - button:focus { - outline: none; + .navbar-brand { + background: url(/customize/CryptPad-white-logo.svg) no-repeat; + width: 250px; + height: 50px; } - .collapse { - a { - display: block; - } + a { + color: #fff; + border: 2px solid transparent; + &:visited { + color: rgba(255,255,255,.8); + }; } - .navbar-toggler-left { - top: -0.59rem; + .nav-link { + padding: 0.5em 0.7em; + &:hover { + transform: scale(1.05); + }; } - .cp-left { - .fa-bars { - font-size: 1.6rem; - } + .cp-register-btn { + border: 2px solid #fff; } - a.cp-logo { - display: none; - } - img { - height: 5vh; - margin-top: -4px; + button:focus { + outline: none; } - &:hover { - img { - transform: none; - } - }; - a.cp-logo { - display: none; + .navbar-toggler { + margin-top: 10px; + color: #fff; } } @callout-padding: 15px; @@ -119,9 +115,9 @@ a:hover { color: black; &:hover { text-decoration-line: none; } } - div { + div h4 { @media only screen and (min-device-width: 576px) and (max-device-width: 767px) { - left: 4.5em !important; + font-size: 1.3em; } } } @@ -192,11 +188,6 @@ h4 { } } } -.navbar-inverse .navbar-toggler { - border-color: transparent; - margin-top: -12px; - padding: 0; -} @media (min-width: 576px) and (max-width: 767px) { .container { padding-left: 0; @@ -208,22 +199,25 @@ h4 { } @media (max-width: 991px) { #menuCollapse { - /*position: absolute; - left: -131px;*/ - margin-top: 0.5em; - text-align: right; - } - #menuCollapse a { - width: 100%; text-align: right; } .navbar-nav a { text-align: right !important; } - .cp-right .cp-login-btn { - padding: 0.5em; + .cp-register-btn { + margin-right: 13px; + margin-left: 83vw; + text-align: center; + } +} +@media (max-width: 687px) { + .cp-register-btn { + margin-left: 75vw; } } -.collapsing a { - text-align: right !important; +@media (max-width: 467px) { + .cp-register-btn { + margin-left: 63vw; + } } + diff --git a/www/common/common-messaging.js b/www/common/common-messaging.js index 3e620e82f..d82bc03aa 100644 --- a/www/common/common-messaging.js +++ b/www/common/common-messaging.js @@ -165,12 +165,22 @@ define([ var channels = Msg.channels = window.channels = {}; + var msgAlreadyKnown = function (channel, sig) { + return channel.messages.some(function (message) { + return message[0] === sig; + }); + }; + var pushMsg = function (common, channel, cryptMsg) { var msg = channel.encryptor.decrypt(cryptMsg); + + var sig = cryptMsg.slice(0, 64); + if (msgAlreadyKnown(channel, sig)) { return; } + var parsedMsg = JSON.parse(msg); if (parsedMsg[0] === Types.message) { parsedMsg.shift(); - channel.messages.push([cryptMsg.slice(0,64), parsedMsg]); + channel.messages.push([sig, parsedMsg]); return true; } var proxy; diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 3dfe11a5d..048644f1d 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -1813,7 +1813,7 @@ define([ (parseInt(verArr[0]) === parseInt(storedArr[0]) && parseInt(verArr[1]) > parseInt(storedArr[1])); if (!shouldUpdate) { return; } - common.alert(Messages._getKey('newVersion', [verArr.join('.')]), null, true); + //common.alert(Messages._getKey('newVersion', [verArr.join('.')]), null, true); localStorage[CRYPTPAD_VERSION] = ver; };