1
0
mirror of http://git.whoc.org.uk/git/password-manager.git synced 2025-10-29 10:27:35 +01:00

Merge remote-tracking branch 'clipperz/export' into import

Conflicts:
	frontend/delta/css/clipperz.css
	frontend/delta/js/Clipperz/PM/DataModel/Record.js
	frontend/delta/js/Clipperz/PM/UI/Components/ExtraFeatures/DeleteAccount.js
	frontend/delta/js/Clipperz/PM/UI/Components/Panels/ExtraFeaturesPanel.js
	frontend/delta/js/Clipperz/PM/UI/MainController.js
	frontend/delta/properties/delta.properties.json
	frontend/delta/scss/style/settingsPanel.scss
This commit is contained in:
Giulio Cesare Solaroli
2015-06-27 18:33:01 +02:00
29 changed files with 1260 additions and 168 deletions

View File

@@ -128,6 +128,7 @@ http://jonibologna.com/flexbox-cheatsheet/
-ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); }
100% {
-webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0);
@@ -141,6 +142,7 @@ http://jonibologna.com/flexbox-cheatsheet/
-ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); }
100% {
-webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0);
@@ -154,6 +156,7 @@ http://jonibologna.com/flexbox-cheatsheet/
-ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); }
100% {
-webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0);
@@ -167,6 +170,7 @@ http://jonibologna.com/flexbox-cheatsheet/
-ms-transform: rotate(0deg) translate(0, 0);
-o-transform: rotate(0deg) translate(0, 0);
transform: rotate(0deg) translate(0, 0); }
100% {
-webkit-transform: rotate(359deg) translate(0, 0);
-moz-transform: rotate(359deg) translate(0, 0);
@@ -484,61 +488,73 @@ div.overlay {
@-webkit-keyframes overlay-spin {
from {
opacity: 1; }
to {
opacity: 0.25; } }
@-moz-keyframes overlay-spin {
from {
opacity: 1; }
to {
opacity: 0.25; } }
@-ms-keyframes overlay-spin {
from {
opacity: 1; }
to {
opacity: 0.25; } }
@keyframes overlay-spin {
from {
opacity: 1; }
to {
opacity: 0.25; } }
@-webkit-keyframes ios-overlay-show {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-moz-keyframes ios-overlay-show {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-ms-keyframes ios-overlay-show {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@keyframes ios-overlay-show {
0% {
opacity: 0; }
100% {
opacity: 1; } }
@-webkit-keyframes ios-overlay-hide {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-moz-keyframes ios-overlay-hide {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@-ms-keyframes ios-overlay-hide {
0% {
opacity: 1; }
100% {
opacity: 0; } }
@keyframes ios-overlay-hide {
0% {
opacity: 1; }
100% {
opacity: 0; } }
/*
@@ -850,7 +866,7 @@ html {
-moz-flex: auto;
-ms-flex: auto;
flex: auto;
overflow: auto;
overflow: scroll;
-webkit-overflow-scrolling: touch; }
#extraFeaturesPanel .extraFeatureIndex footer {
-webkit-box-flex: none;
@@ -873,7 +889,7 @@ html {
height: 100%; }
#extraFeaturesPanel .extraFeatureContent .extraFeature .content {
height: 100%;
overflow: auto;
overflow: scroll;
-webkit-overflow-scrolling: touch; }
.container {
@@ -1368,7 +1384,7 @@ div.dialogBox {
margin: 0px; }
#loginPage {
overflow: auto;
overflow: scroll;
-webkit-overflow-scrolling: touch; }
#loginPage div.loginForm {
display: -webkit-box;
@@ -1516,11 +1532,11 @@ div.dialogBox {
flex: 1;
font-size: 8pt; }
#loginPage div.loginForm footer .applicationVersion span {
color: #999; }
color: #999999; }
#loginPage div.loginForm footer .applicationVersion span:after {
content: ":"; }
#loginPage div.loginForm footer .applicationVersion a {
color: #999;
color: #999999;
text-decoration: none;
padding-left: 5px;
font-weight: bold; }
@@ -2050,13 +2066,13 @@ span.count {
#extraFeaturesPanel .extraFeatureIndex footer {
font-size: 8pt;
padding: 5px 5px 5px 5px;
border-top: 1px solid #999; }
border-top: 1px solid #999999; }
#extraFeaturesPanel .extraFeatureIndex footer span {
color: #999; }
color: #999999; }
#extraFeaturesPanel .extraFeatureIndex footer span:after {
content: ":"; }
#extraFeaturesPanel .extraFeatureIndex footer a {
color: #999;
color: #999999;
text-decoration: none;
padding-left: 5px;
font-weight: bold; }
@@ -2175,57 +2191,12 @@ span.count {
#extraFeaturesPanel .extraFeatureContent .extraFeature .description p em {
text-decoration: underline; }
#extraFeaturesPanel .extraFeatureContent .extraFeature .button {
display: inline-block;
display: inline;
color: white;
background-color: #ff9900;
font-size: 14pt;
border: 1px solid white;
padding: 6px 10px; }
#extraFeaturesPanel .extraFeatureContent .extraFeature .button.disabled {
background-color: #c0c0c0;
cursor: default; }
#extraFeaturesPanel .extraFeatureContent .dataImport .stepNavbar li {
display: inline-block;
margin-right: 1em; }
#extraFeaturesPanel .extraFeatureContent .dataImport .stepNavbar li.disabled {
color: gray; }
#extraFeaturesPanel .extraFeatureContent .dataImport .stepNavbar li.active {
text-decoration: underline; }
#extraFeaturesPanel .extraFeatureContent .dataImport .error {
margin: 1em 0; }
#extraFeaturesPanel .extraFeatureContent .dataImport textarea {
width: 100%;
min-height: 400px;
display: block;
margin: 1em 0;
border: 0; }
#extraFeaturesPanel .extraFeatureContent .dataImport .csvTable {
background: white;
margin: 1em 0; }
#extraFeaturesPanel .extraFeatureContent .dataImport .dropArea {
margin: 1em 0;
width: calc(100% - 6px);
text-align: center;
height: inherit;
line-height: 3em;
border: 3px dashed white;
background: black; }
#extraFeaturesPanel .extraFeatureContent .dataImport .button {
margin-right: 1em; }
#extraFeaturesPanel .extraFeatureContent .dataImport .jsonPreview {
width: 100%;
height: 80%;
overflow: auto;
margin-top: 1em; }
#extraFeaturesPanel .extraFeatureContent .dataImport .jsonPreview h3 {
font-weight: bold; }
#extraFeaturesPanel .extraFeatureContent .dataImport .jsonPreview ul {
margin-bottom: 1em;
padding-left: 1em; }
#extraFeaturesPanel .extraFeatureContent .dataImport .jsonPreview ul li .label {
font-weight: bold; }
#extraFeaturesPanel .extraFeatureContent form input.valid + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.empty + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input:focus + .invalidMsg, #extraFeaturesPanel .extraFeatureContent form input.invalid:focus + .invalidMsg {
visibility: hidden; }
.mainPage.narrow #extraFeaturesPanel .extraFeatureContent header {
display: block;
@@ -2307,7 +2278,7 @@ div.cardList ul {
padding-right: 0px;
box-shadow: -4px 0px 3px -1px rgba(0, 0, 0, 0.2); }
div.cardList ul li.archived {
background-color: #eee;
background-color: #eeeeee;
color: #999; }
div.cardList ul li .favicon {
width: 48px;
@@ -2335,7 +2306,7 @@ div.cardList ul {
padding-right: 8px; }
div.cardList.narrow {
overflow: auto;
overflow: scroll;
-webkit-overflow-scrolling: touch; }
div.cardList.narrow.loadingCard li.selected:after {
color: white;
@@ -2393,7 +2364,7 @@ div.cardList.narrow {
content: ""; }
#cardDetailPage .view.archived, .cardDetail .view.archived {
background-color: #eee; }
background-color: #eeeeee; }
#cardDetailPage .view .cardDetailToolbar, .cardDetail .view .cardDetailToolbar {
background-color: #1863a1;
color: white; }
@@ -2587,7 +2558,7 @@ div.cardList.narrow {
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
background: repeating-linear-gradient(0deg, white, white 2px, #ddd 2px, #ddd 3px);
background: repeating-linear-gradient(0deg, white, white 2px, #dddddd 2px, #dddddd 3px);
width: 28px;
height: 20px;
margin-left: 6px;
@@ -2822,5 +2793,3 @@ This configuration is now located in the first script included in the index_temp
}
}
*/
/*# sourceMappingURL=clipperz.css.map */

View File

@@ -170,7 +170,7 @@ Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.Encrypt
},
//............................................................................
'label': function () {
return Clipperz.Async.callbacks("Record.label", [
MochiKit.Base.method(this, 'fullLabel'),
@@ -1136,7 +1136,7 @@ console.log("Record.hasPendingChanges RESULT", result);
MochiKit.Base.bind(function () { return this; }, this)
], {trace:false});
},
'setUpWithJSON': function(data) {
return Clipperz.Async.callbacks("Record.setUpWithJSON", [
// TODO: proper tag handling

View File

@@ -77,19 +77,19 @@ Clipperz.PM.UI.Components.ExtraFeatures.DeleteAccountClass = React.createClass({
return React.DOM.div({className:'extraFeature deleteAccount'}, [
React.DOM.h1({}, "Delete Account"),
React.DOM.div({'className': 'content'}, [
React.DOM.form({'key':'form', 'className':'deleteAccountForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleDeleteAccount}, [
React.DOM.div({'key':'fields'},[
React.DOM.label({'key':'username-label', 'htmlFor' :'name'}, "username"),
React.DOM.input({'key':'username', 'className': this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}),
React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor' :'passphrase'}, "passphrase"),
React.DOM.input({'key':'passphrase', 'className': this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}),
React.DOM.p({}, [
React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
React.DOM.span({}, "I understand that all my data will be deleted and that this action is irreversible.")
React.DOM.form({'key':'form', 'className':'deleteAccountForm', 'onChange': this.handleFormChange, 'onSubmit':this.handleDeleteAccount}, [
React.DOM.div({'key':'fields'},[
React.DOM.label({'key':'username-label', 'htmlFor' :'name'}, "username"),
React.DOM.input({'key':'username', 'className':this.state['username'], 'type':'text', 'name':'name', 'ref':'username', 'placeholder':"username", 'autoCapitalize':'none'}),
React.DOM.label({'key':'passphrase-label', 'autoFocus': 'true', 'htmlFor' :'passphrase'}, "passphrase"),
React.DOM.input({'key':'passphrase', 'className':this.state['passphrase'], 'type':'password', 'name':'passphrase', 'ref':'passphrase', 'placeholder':"passphrase"}),
React.DOM.p({}, [
React.DOM.input({'key':'confirm', 'className':'confirmCheckbox', 'type':'checkbox', 'name':'confirm', 'ref':'confirm'}),
React.DOM.span({}, "I understand that all my data will be deleted and that this action is irreversible.")
]),
]),
]),
React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableDeleteAccountButton(), 'className':'button'}, "Delete my account")
])
React.DOM.button({'key':'button', 'type':'submit', 'disabled':!this.shouldEnableDeleteAccountButton(), 'className':'button'}, "Delete my account")
])
])
]);
},

View File

@@ -242,7 +242,7 @@ Clipperz.PM.UI.Components.Panels.ExtraFeaturesPanelClass = React.createClass({
'open': isOpen,
'fullOpen': isFullyOpen
}
return React.DOM.div({'key':'extraFeaturesPanel', 'id':'extraFeaturesPanel', 'className':Clipperz.PM.UI.Components.classNames(classes)}, [
this.renderIndex(),
this.renderContent(),

View File

@@ -262,7 +262,7 @@ console.log("THE BROWSER IS OFFLINE");
//-------------------------------------------------------------------------
checkPassphrase: function( passphraseIn ) {
checkPassphrase: function (passphraseIn) {
var deferredResult;
deferredResult = new Clipperz.Async.Deferred("MainController.checkPassphrase", {trace: false});
@@ -1246,7 +1246,7 @@ console.log("THE BROWSER IS OFFLINE");
},
//----------------------------------------------------------------------------
// export_handler: function(exportType) {
// return Clipperz.PM.UI.ExportController.exportJSON( this.recordsInfo(), exportType );
// },
@@ -1274,7 +1274,7 @@ console.log("THE BROWSER IS OFFLINE");
var deferredResult;
var getPassphraseDelegate;
var user;
getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, newPassphrase);
user = new Clipperz.PM.DataModel.User({'username':this.user().username(), 'getPassphraseFunction':getPassphraseDelegate});
@@ -1295,7 +1295,7 @@ console.log("THE BROWSER IS OFFLINE");
deleteAccount_handler: function() {
var deferredResult;
var doneMessageDelay = 2;
deferredResult = new Clipperz.Async.Deferred("MainController.deleteAccount_handler", {trace: false});
deferredResult.addCallback(MochiKit.Base.method(this, 'ask', {
'question': "Do you really want to permanently delete your account?",
@@ -1313,7 +1313,7 @@ console.log("THE BROWSER IS OFFLINE");
return deferredResult;
},
importCards_handler: function(data) {
return Clipperz.Async.callbacks("MainController.importCards_handler", [
MochiKit.Base.method(this.overlay(), 'show', "importing …", true),

View File

@@ -61,7 +61,7 @@
"-- Cubiq/add2home.js",
"-- Modernizr/modernizr-2.8.2.js",
"OnMediaQuery/onmediaquery-0.2.0.js",
"FileSaver/Blob.js",
"FileSaver/FileSaver.js",

View File

@@ -89,7 +89,7 @@ refer to http://www.clipperz.com.
&.offlineCopy {
cursor: default;
}
}
}
&.open {
@@ -281,7 +281,7 @@ refer to http://www.clipperz.com.
}
.button {
display: inline-block;
display: inline;
color: white;
background-color: $main-color;
@@ -293,85 +293,10 @@ refer to http://www.clipperz.com.
&:after {
};
&.disabled {
background-color: #c0c0c0;
cursor: default;
}
}
}
.dataImport {
.stepNavbar {
li {
display: inline-block;
margin-right:1em;
&.disabled {
color: gray;
}
&.active {
text-decoration: underline;
}
}
}
.error {
margin: 1em 0;
}
textarea {
width:100%;
min-height:400px;
display: block;
margin: 1em 0;
border: 0;
}
.csvTable {
background: white;
margin: 1em 0;
}
.dropArea {
margin: 1em 0;
width: calc(100% - 6px);
text-align: center;
height: inherit;
line-height: 3em;
border: 3px dashed white;
background: black;
}
.button {
margin-right:1em;
}
.jsonPreview {
width: 100%;
height:80%;
overflow: auto;
margin-top:1em;
h3 {
font-weight:bold;
}
ul {
margin-bottom:1em;
padding-left:1em;
li {
.label {
font-weight:bold;
}
}
}
}
}
/*
.changePassphraseForm {
label {
@@ -402,15 +327,11 @@ refer to http://www.clipperz.com.
}
*/
form {
input.valid + .invalidMsg, input.empty + .invalidMsg, input:focus + .invalidMsg, input.invalid:focus + .invalidMsg {
visibility: hidden;
}
}
}
}
}
.mainPage.narrow {
#extraFeaturesPanel {
.extraFeatureContent {