Updated Bootstrap, jQuery and jQuery UI. Updated and removed some old code. UI modified to use plain Bootstrap.

This commit is contained in:
varjolintu 2017-03-31 17:01:29 +03:00
parent c0de6941cd
commit 8b16e0808b
25 changed files with 550 additions and 1010 deletions

View file

@ -248,8 +248,8 @@ keepass.associate = function(callback, tab) {
page.tabs[tab.id].errorMessage = null;
var rawKey = nacl.randomBytes(keepass.keySize * 2);
//var rawKey = [41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]; // This is just for testing with the test client. KSorLC0uLzAxMjM0NTY3OA== )*+,-./012345678
//var rawKey = nacl.randomBytes(keepass.keySize * 2);
var rawKey = [41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]; // This is just for testing with the test client. KSorLC0uLzAxMjM0NTY3OA== )*+,-./012345678
//console.log(rawKey);
var key = keepass.b64e(rawKey);

View file

@ -1,468 +0,0 @@
.b2c-btn {
display: inline-block;
*display: inline;
padding: 4px 14px;
margin-bottom: 0;
*margin-left: .3em;
font-size: 14px;
line-height: 20px;
*line-height: 20px;
color: #333333;
text-align: center;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
vertical-align: middle;
cursor: pointer;
background-color: #f5f5f5;
*background-color: #e6e6e6;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
background-repeat: repeat-x;
border: 1px solid #bbbbbb;
*border: 0;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
border-bottom-color: #a2a2a2;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
*zoom: 1;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.b2c-btn:hover,
.b2c-btn:active,
.b2c-btn.active,
.b2c-btn.disabled,
.b2c-btn[disabled] {
color: #333333;
background-color: #e6e6e6;
*background-color: #d9d9d9;
}
.b2c-btn:active,
.b2c-btn.active {
background-color: #cccccc \9;
}
.b2c-btn:first-child {
*margin-left: 0;
}
.b2c-btn:hover {
color: #333333;
text-decoration: none;
background-color: #e6e6e6;
*background-color: #d9d9d9;
/* Buttons in IE7 don't get borders, so darken on hover */
background-position: 0 -15px;
-webkit-transition: background-position 0.1s linear;
-moz-transition: background-position 0.1s linear;
-o-transition: background-position 0.1s linear;
transition: background-position 0.1s linear;
}
.b2c-btn:focus {
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.b2c-btn.active,
.b2c-btn:active {
background-color: #e6e6e6;
background-color: #d9d9d9 \9;
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.b2c-btn.disabled,
.b2c-btn[disabled] {
cursor: default;
background-color: #e6e6e6;
background-image: none;
opacity: 0.65;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.b2c-btn-large {
padding: 9px 14px;
font-size: 16px;
line-height: normal;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
.b2c-btn-large [class^="icon-"] {
margin-top: 2px;
}
.b2c-btn-small {
padding: 3px 9px;
font-size: 12px;
line-height: 18px;
}
.b2c-btn-small [class^="icon-"] {
margin-top: 0;
}
.b2c-btn-mini {
padding: 2px 6px;
font-size: 11px;
line-height: 17px;
}
.b2c-btn-block {
display: block;
width: 100%;
padding-right: 0;
padding-left: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.b2c-btn-block + .b2c-btn-block {
margin-top: 5px;
}
input[type="submit"].b2c-btn-block,
input[type="reset"].b2c-btn-block,
input[type="button"].b2c-btn-block {
width: 100%;
}
.b2c-btn-primary.active,
.b2c-btn-warning.active,
.b2c-btn-danger.active,
.b2c-btn-success.active,
.b2c-btn-info.active,
.b2c-btn-inverse.active {
color: rgba(255, 255, 255, 0.75);
}
.b2c-btn {
border-color: #c5c5c5;
border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
}
.b2c-btn-primary {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #006dcc;
*background-color: #0044cc;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-primary:hover,
.b2c-btn-primary:active,
.b2c-btn-primary.active,
.b2c-btn-primary.disabled,
.b2c-btn-primary[disabled] {
color: #ffffff;
background-color: #0044cc;
*background-color: #003bb3;
}
.b2c-btn-primary:active,
.b2c-btn-primary.active {
background-color: #003399 \9;
}
.b2c-btn-warning {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #faa732;
*background-color: #f89406;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
background-image: -o-linear-gradient(top, #fbb450, #f89406);
background-image: linear-gradient(to bottom, #fbb450, #f89406);
background-image: -moz-linear-gradient(top, #fbb450, #f89406);
background-repeat: repeat-x;
border-color: #f89406 #f89406 #ad6704;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-warning:hover,
.b2c-btn-warning:active,
.b2c-btn-warning.active,
.b2c-btn-warning.disabled,
.b2c-btn-warning[disabled] {
color: #ffffff;
background-color: #f89406;
*background-color: #df8505;
}
.b2c-btn-warning:active,
.b2c-btn-warning.active {
background-color: #c67605 \9;
}
.b2c-btn-danger {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #da4f49;
*background-color: #bd362f;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
background-repeat: repeat-x;
border-color: #bd362f #bd362f #802420;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-danger:hover,
.b2c-btn-danger:active,
.b2c-btn-danger.active,
.b2c-btn-danger.disabled,
.b2c-btn-danger[disabled] {
color: #ffffff;
background-color: #bd362f;
*background-color: #a9302a;
}
.b2c-btn-danger:active,
.b2c-btn-danger.active {
background-color: #942a25 \9;
}
.b2c-btn-success {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #5bb75b;
*background-color: #51a351;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
background-image: -webkit-linear-gradient(top, #62c462, #51a351);
background-image: -o-linear-gradient(top, #62c462, #51a351);
background-image: linear-gradient(to bottom, #62c462, #51a351);
background-image: -moz-linear-gradient(top, #62c462, #51a351);
background-repeat: repeat-x;
border-color: #51a351 #51a351 #387038;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-success:hover,
.b2c-btn-success:active,
.b2c-btn-success.active,
.b2c-btn-success.disabled,
.b2c-btn-success[disabled] {
color: #ffffff;
background-color: #51a351;
*background-color: #499249;
}
.b2c-btn-success:active,
.b2c-btn-success.active {
background-color: #408140 \9;
}
.b2c-btn-info {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #49afcd;
*background-color: #2f96b4;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
background-repeat: repeat-x;
border-color: #2f96b4 #2f96b4 #1f6377;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-info:hover,
.b2c-btn-info:active,
.b2c-btn-info.active,
.b2c-btn-info.disabled,
.b2c-btn-info[disabled] {
color: #ffffff;
background-color: #2f96b4;
*background-color: #2a85a0;
}
.b2c-btn-info:active,
.b2c-btn-info.active {
background-color: #24748c \9;
}
.b2c-btn-inverse {
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
background-color: #363636;
*background-color: #222222;
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
background-image: -webkit-linear-gradient(top, #444444, #222222);
background-image: -o-linear-gradient(top, #444444, #222222);
background-image: linear-gradient(to bottom, #444444, #222222);
background-image: -moz-linear-gradient(top, #444444, #222222);
background-repeat: repeat-x;
border-color: #222222 #222222 #000000;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
}
.b2c-btn-inverse:hover,
.b2c-btn-inverse:active,
.b2c-btn-inverse.active,
.b2c-btn-inverse.disabled,
.b2c-btn-inverse[disabled] {
color: #ffffff;
background-color: #222222;
*background-color: #151515;
}
.b2c-btn-inverse:active,
.b2c-btn-inverse.active {
background-color: #080808 \9;
}
button.b2c-btn,
input[type="submit"].b2c-btn {
*padding-top: 3px;
*padding-bottom: 3px;
}
button.b2c-btn::-moz-focus-inner,
input[type="submit"].b2c-btn::-moz-focus-inner {
padding: 0;
border: 0;
}
button.b2c-btn.b2c-btn-large,
input[type="submit"].b2c-btn.b2c-btn-large {
*padding-top: 7px;
*padding-bottom: 7px;
}
button.b2c-btn.b2c-btn-small,
input[type="submit"].b2c-btn.b2c-btn-small {
*padding-top: 3px;
*padding-bottom: 3px;
}
button.b2c-btn.b2c-btn-mini,
input[type="submit"].b2c-btn.b2c-btn-mini {
*padding-top: 1px;
*padding-bottom: 1px;
}
.b2c-input-append {
display: inline-block;
margin-bottom: 10px;
white-space: nowrap;
vertical-align: middle;
}
.b2c-input-append input,
.b2c-input-append select,
.b2c-input-append .b2c-uneditable-input,
.b2c-input-append .b2c-dropdown-menu,
.b2c-input-append .b2c-popover {
font-size: 14px;
}
.b2c-input-append input,
.b2c-input-append select,
.b2c-input-append .b2c-uneditable-input {
position: relative;
margin-bottom: 0;
*margin-left: 0;
vertical-align: top;
-webkit-border-radius: 0 4px 4px 0;
-moz-border-radius: 0 4px 4px 0;
border-radius: 0 4px 4px 0;
}
.b2c-input-append input:focus,
.b2c-input-append select:focus,
.b2c-input-append .b2c-b2c-uneditable-input:focus {
z-index: 2;
}
.b2c-input-append .b2c-add-on {
display: inline-block;
width: auto;
height: 20px;
min-width: 16px;
padding: 4px 5px;
font-size: 14px;
font-weight: normal;
line-height: 20px;
text-align: center;
text-shadow: 0 1px 0 #ffffff;
background-color: #eeeeee;
border: 1px solid #ccc;
}
.b2c-input-append .b2c-add-on,
.b2c-input-append .b2c-btn,
.b2c-input-append .b2c-btn-group > .b2c-dropdown-toggle {
vertical-align: top;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.b2c-input-append .b2c-active {
background-color: #a9dba9;
border-color: #46a546;
}
.b2c-input-append input,
.b2c-input-append select,
.b2c-input-append .b2c-uneditable-input {
-webkit-border-radius: 4px 0 0 4px;
-moz-border-radius: 4px 0 0 4px;
border-radius: 4px 0 0 4px;
}
.b2c-input-append .b2c-add-on,
.b2c-input-append .b2c-btn,
.b2c-input-append .b2c-btn-group {
margin-left: -1px;
}
.b2c-input-append .b2c-add-on:last-child,
.b2c-input-append .b2c-btn:last-child,
.b2c-input-append .b2c-btn-group:last-child > .b2c-dropdown-toggle {
-webkit-border-radius: 0 4px 4px 0;
-moz-border-radius: 0 4px 4px 0;
border-radius: 0 4px 4px 0;
}

View file

@ -79,12 +79,12 @@ window.addEventListener("keydown", function(e) {
}, false);
function _f(fieldId) {
var field = (fieldId) ? cIPJQ("input[data-cip-id='"+fieldId+"']:first") : [];
var field = (fieldId) ? jQuery("input[data-cip-id='"+fieldId+"']:first") : [];
return (field.length > 0) ? field : null;
}
function _fs(fieldId) {
var field = (fieldId) ? cIPJQ("input[data-cip-id='"+fieldId+"']:first,select[data-cip-id='"+fieldId+"']:first").first() : [];
var field = (fieldId) ? jQuery("input[data-cip-id='"+fieldId+"']:first,select[data-cip-id='"+fieldId+"']:first").first() : [];
return (field.length > 0) ? field : null;
}
@ -115,17 +115,17 @@ cipAutocomplete.init = function(field) {
}
cipAutocomplete.onClick = function() {
cIPJQ(this).autocomplete("search", cIPJQ(this).val());
jQuery(this).autocomplete("search", jQuery(this).val());
}
cipAutocomplete.onOpen = function(event, ui) {
// NOT BEAUTIFUL!
// modifies ALL ui-autocomplete menus of class .cip-ui-menu
cIPJQ("ul.cip-ui-autocomplete.cip-ui-menu").css("z-index", 2147483636);
jQuery("ul.cip-ui-autocomplete.cip-ui-menu").css("z-index", 2147483636);
}
cipAutocomplete.onSource = function (request, callback) {
var matches = cIPJQ.map( cipAutocomplete.elements, function(tag) {
var matches = jQuery.map( cipAutocomplete.elements, function(tag) {
if ( tag.label.toUpperCase().indexOf(request.term.toUpperCase()) === 0 ) {
return tag;
}
@ -135,32 +135,32 @@ cipAutocomplete.onSource = function (request, callback) {
cipAutocomplete.onSelect = function (e, ui) {
e.preventDefault();
cip.setValueWithChange(cIPJQ(this), ui.item.value);
var fieldId = cipFields.prepareId(cIPJQ(this).attr("data-cip-id"));
cip.setValueWithChange(jQuery(this), ui.item.value);
var fieldId = cipFields.prepareId(jQuery(this).attr("data-cip-id"));
var combination = cipFields.getCombination("username", fieldId);
combination.loginId = ui.item.loginId;
cip.fillInCredentials(combination, true, false);
cIPJQ(this).data("fetched", true);
jQuery(this).data("fetched", true);
}
cipAutocomplete.onBlur = function() {
if(cIPJQ(this).data("fetched") == true) {
cIPJQ(this).data("fetched", false);
if(jQuery(this).data("fetched") == true) {
jQuery(this).data("fetched", false);
}
else {
var fieldId = cipFields.prepareId(cIPJQ(this).attr("data-cip-id"));
var fieldId = cipFields.prepareId(jQuery(this).attr("data-cip-id"));
var fields = cipFields.getCombination("username", fieldId);
if(_f(fields.password) && _f(fields.password).data("unchanged") != true && cIPJQ(this).val() != "") {
if(_f(fields.password) && _f(fields.password).data("unchanged") != true && jQuery(this).val() != "") {
cip.fillInCredentials(fields, true, true);
}
}
}
cipAutocomplete.onFocus = function() {
cip.u = cIPJQ(this);
cip.u = jQuery(this);
if(cIPJQ(this).val() == "") {
cIPJQ(this).autocomplete("search", "");
if(jQuery(this).val() == "") {
jQuery(this).autocomplete("search", "");
}
}
@ -218,16 +218,16 @@ cipPassword.createDialog = function() {
_called.passwordCreateDialog = true;
var $dialog = cIPJQ("<div>")
var $dialog = jQuery("<div>")
.attr("id", "cip-genpw-dialog");
var $divFloat = cIPJQ("<div>").addClass("cip-genpw-clearfix");
var $btnGenerate = cIPJQ("<button>")
var $divFloat = jQuery("<div>").addClass("cip-genpw-clearfix");
var $btnGenerate = jQuery("<button>")
.text("Generate")
.attr("id", "cip-genpw-btn-generate")
.addClass("b2c-btn")
.addClass("b2c-btn-primary")
.addClass("b2c-btn-small")
.addClass("btn")
.addClass("btn-primary")
.addClass("btn-sm")
.css("float", "left")
.click(function(e) {
e.preventDefault();
@ -237,78 +237,78 @@ cipPassword.createDialog = function() {
});
$divFloat.append($btnGenerate);
var $btnClipboard = cIPJQ("<button>")
var $btnClipboard = jQuery("<button>")
.text("Copy to clipboard")
.attr("id", "cip-genpw-btn-clipboard")
.addClass("b2c-btn")
.addClass("b2c-btn-small")
.addClass("btn")
.addClass("btn-sm")
.css("float", "right")
.click(function(e) {
e.preventDefault();
chrome.extension.sendMessage({
action: "copy_password",
args: [cIPJQ("input#cip-genpw-textfield-password").val()]
args: [jQuery("input#cip-genpw-textfield-password").val()]
}, cipPassword.callbackPasswordCopied);
});
$divFloat.append($btnClipboard);
$dialog.append($divFloat);
var $textfieldPassword = cIPJQ("<input>")
var $textfieldPassword = jQuery("<input>")
.attr("id", "cip-genpw-textfield-password")
.attr("type", "text")
.addClass("cip-genpw-textfield")
.on('change keypress paste textInput input', function() {
cIPJQ("#cip-genpw-btn-clipboard:first").removeClass("b2c-btn-success");
jQuery("#cip-genpw-btn-clipboard:first").removeClass("btn-success");
});
var $quality = cIPJQ("<span>")
var $quality = jQuery("<span>")
.addClass("b2c-add-on")
.attr("id", "cip-genpw-quality")
.text("123 Bits");
var $frameInputAppend = cIPJQ("<div>")
var $frameInputAppend = jQuery("<div>")
.addClass("b2c-input-append")
.addClass("cip-genpw-password-frame");
$frameInputAppend.append($textfieldPassword).append($quality);
$dialog.append($frameInputAppend);
var $checkboxNextField = cIPJQ("<input>")
var $checkboxNextField = jQuery("<input>")
.attr("id", "cip-genpw-checkbox-next-field")
.attr("type", "checkbox")
.addClass("cip-genpw-checkbox");
var $labelNextField = cIPJQ("<label>")
var $labelNextField = jQuery("<label>")
.append($checkboxNextField)
.addClass("cip-genpw-label")
.append(" also fill in the next password-field");
$dialog.append($labelNextField);
var $btnFillIn = cIPJQ("<button>")
var $btnFillIn = jQuery("<button>")
.text("Fill in & copy to clipboard")
.attr("id", "cip-genpw-btn-fillin")
.addClass("b2c-btn")
.addClass("b2c-btn-small")
.addClass("btn")
.addClass("btn-sm")
.click(function(e) {
e.preventDefault();
var fieldId = cIPJQ("#cip-genpw-dialog:first").data("cip-genpw-field-id");
var field = cIPJQ("input[data-cip-id='"+fieldId+"']:first");
var fieldId = jQuery("#cip-genpw-dialog:first").data("cip-genpw-field-id");
var field = jQuery("input[data-cip-id='"+fieldId+"']:first");
if(field.length == 1) {
var $password = cIPJQ("input#cip-genpw-textfield-password:first").val();
var $password = jQuery("input#cip-genpw-textfield-password:first").val();
if(field.attr("maxlength")) {
if($password.length > field.attr("maxlength")) {
$password = $password.substring(0, field.attr("maxlength"));
cIPJQ("input#cip-genpw-textfield-password:first").val($password);
cIPJQ("#cip-genpw-btn-clipboard:first").removeClass("b2c-btn-success");
jQuery("input#cip-genpw-textfield-password:first").val($password);
jQuery("#cip-genpw-btn-clipboard:first").removeClass("b2c-btn-success");
alert("The generated password is longer than the allowed length!\nIt has been cut to fit the length.\n\nPlease remember the new password!");
}
}
field.val($password);
if(cIPJQ("input#cip-genpw-checkbox-next-field:checked").length == 1) {
if(jQuery("input#cip-genpw-checkbox-next-field:checked").length == 1) {
if(field.data("cip-genpw-next-field-exists")) {
var nextFieldId = field.data("cip-genpw-next-field-id");
var nextField = cIPJQ("input[data-cip-id='"+nextFieldId+"']:first");
var nextField = jQuery("input[data-cip-id='"+nextFieldId+"']:first");
if(nextField.length == 1) {
nextField.val($password);
}
@ -325,7 +325,7 @@ cipPassword.createDialog = function() {
$dialog.append($btnFillIn);
$dialog.hide();
cIPJQ("body").append($dialog);
jQuery("body").append($dialog);
$dialog.dialog({
closeText: "×",
autoOpen: false,
@ -334,12 +334,12 @@ cipPassword.createDialog = function() {
minWidth: 340,
title: "Password Generator",
open: function(event, ui) {
cIPJQ(".cip-ui-widget-overlay").click(function() {
cIPJQ("#cip-genpw-dialog:first").dialog("close");
jQuery(".cip-ui-widget-overlay").click(function() {
jQuery("#cip-genpw-dialog:first").dialog("close");
});
if(cIPJQ("input#cip-genpw-textfield-password:first").val() == "") {
cIPJQ("button#cip-genpw-btn-generate:first").click();
if(jQuery("input#cip-genpw-textfield-password:first").val() == "") {
jQuery("button#cip-genpw-btn-generate:first").click();
}
}
});
@ -372,7 +372,7 @@ cipPassword.createIcon = function(field) {
}
$zIndex += 1;
var $icon = cIPJQ("<div>").addClass("cip-genpw-icon")
var $icon = jQuery("<div>").addClass("cip-genpw-icon")
.addClass($className)
.css("z-index", $zIndex)
.data("size", $size)
@ -388,17 +388,17 @@ cipPassword.createIcon = function(field) {
return;
}
var $dialog = cIPJQ("#cip-genpw-dialog");
var $dialog = jQuery("#cip-genpw-dialog");
if($dialog.dialog("isOpen")) {
$dialog.dialog("close");
}
$dialog.dialog("option", "position", { my: "left-10px top", at: "center bottom", of: cIPJQ(this) });
$dialog.dialog("option", "position", { my: "left-10px top", at: "center bottom", of: jQuery(this) });
$dialog.data("cip-genpw-field-id", field.data("cip-id"));
$dialog.data("cip-genpw-next-field-id", field.data("cip-genpw-next-field-id"));
$dialog.data("cip-genpw-next-is-password-field", field.data("cip-genpw-next-is-password-field"));
var $bool = Boolean(field.data("cip-genpw-next-field-exists"));
cIPJQ("input#cip-genpw-checkbox-next-field:first")
jQuery("input#cip-genpw-checkbox-next-field:first")
.attr("checked", $bool)
.attr("disabled", !$bool);
@ -407,7 +407,7 @@ cipPassword.createIcon = function(field) {
cipPassword.observedIcons.push($icon);
cIPJQ("body").append($icon);
jQuery("body").append($icon);
}
cipPassword.setIconPosition = function($icon, $field) {
@ -417,30 +417,30 @@ cipPassword.setIconPosition = function($icon, $field) {
cipPassword.callbackPasswordCopied = function(bool) {
if(bool) {
cIPJQ("#cip-genpw-btn-clipboard").addClass("b2c-btn-success");
jQuery("#cip-genpw-btn-clipboard").addClass("btn-success");
}
}
cipPassword.callbackGeneratedPassword = function(entries) {
if(entries && entries.length >= 1) {
console.log(entries[0]);
cIPJQ("#cip-genpw-btn-clipboard:first").removeClass("b2c-btn-success");
cIPJQ("input#cip-genpw-textfield-password:first").val(entries[0].password);
jQuery("#cip-genpw-btn-clipboard:first").removeClass("btn-success");
jQuery("input#cip-genpw-textfield-password:first").val(entries[0].password);
if(isNaN(entries[0].login)) {
cIPJQ("#cip-genpw-quality:first").text("??? Bits");
jQuery("#cip-genpw-quality:first").text("??? Bits");
}
else {
cIPJQ("#cip-genpw-quality:first").text(entries[0].login + " Bits");
jQuery("#cip-genpw-quality:first").text(entries[0].login + " Bits");
}
}
else {
if(cIPJQ("div#cip-genpw-error:first").length == 0) {
cIPJQ("button#cip-genpw-btn-generate:first").after("<div style='block' id='cip-genpw-error'>Cannot receive generated password.<br />Is your version of KeePassHttp up-to-date?<br /><br /><a href='https://github.com/pfn/keepasshttp/'>Please visit the KeePassHttp homepage</a></div>");
cIPJQ("input#cip-genpw-textfield-password:first").parent().hide();
cIPJQ("input#cip-genpw-checkbox-next-field:first").parent("label").hide();
cIPJQ("button#cip-genpw-btn-generate").hide();
cIPJQ("button#cip-genpw-btn-clipboard").hide();
cIPJQ("button#cip-genpw-btn-fillin").hide();
if(jQuery("div#cip-genpw-error:first").length == 0) {
jQuery("button#cip-genpw-btn-generate:first").after("<div style='block' id='cip-genpw-error'>Cannot receive generated password.<br />Is your version of KeePassXC up-to-date?<br /><br /><a href='https://keepassxc.org'>Please visit the KeePassXC homepage</a></div>");
jQuery("input#cip-genpw-textfield-password:first").parent().hide();
jQuery("input#cip-genpw-checkbox-next-field:first").parent("label").hide();
jQuery("button#cip-genpw-btn-generate").hide();
jQuery("button#cip-genpw-btn-clipboard").hide();
jQuery("button#cip-genpw-btn-fillin").hide();
}
}
}
@ -457,10 +457,10 @@ cipPassword.checkObservedElements = function() {
}
cipPassword.observingLock = true;
cIPJQ.each(cipPassword.observedIcons, function(index, iconField) {
jQuery.each(cipPassword.observedIcons, function(index, iconField) {
if(iconField && iconField.length == 1) {
var fieldId = iconField.data("cip-genpw-field-id");
var field = cIPJQ("input[data-cip-id='"+fieldId+"']:first");
var field = jQuery("input[data-cip-id='"+fieldId+"']:first");
if(!field || field.length != 1) {
iconField.remove();
cipPassword.observedIcons.splice(index, 1);
@ -505,8 +505,8 @@ cipForm.destroy = function(form, credentialFields) {
}
}
if(form && cIPJQ(form).length > 0) {
cIPJQ(form).unbind('submit', cipForm.onSubmit);
if(form && jQuery(form).length > 0) {
jQuery(form).unbind('submit', cipForm.onSubmit);
}
}
@ -516,8 +516,8 @@ cipForm.setInputFields = function(form, credentialFields) {
}
cipForm.onSubmit = function() {
var usernameId = cIPJQ(this).data("cipUsername");
var passwordId = cIPJQ(this).data("cipPassword");
var usernameId = jQuery(this).data("cipUsername");
var passwordId = jQuery(this).data("cipPassword");
var usernameValue = "";
var passwordValue = "";
@ -547,13 +547,13 @@ cipDefine.selection = {
cipDefine.eventFieldClick = null;
cipDefine.init = function () {
var $backdrop = cIPJQ("<div>").attr("id", "b2c-backdrop").addClass("b2c-modal-backdrop");
cIPJQ("body").append($backdrop);
var $backdrop = jQuery("<div>").attr("id", "b2c-backdrop").addClass("b2c-modal-backdrop");
jQuery("body").append($backdrop);
var $chooser = cIPJQ("<div>").attr("id", "b2c-cipDefine-fields");
cIPJQ("body").append($chooser);
var $chooser = jQuery("<div>").attr("id", "b2c-cipDefine-fields");
jQuery("body").append($chooser);
var $description = cIPJQ("<div>").attr("id", "b2c-cipDefine-description");
var $description = jQuery("<div>").attr("id", "b2c-cipDefine-description");
$backdrop.append($description);
cipFields.getAllFields();
@ -567,44 +567,44 @@ cipDefine.init = function () {
}
cipDefine.initDescription = function() {
var $description = cIPJQ("div#b2c-cipDefine-description");
var $h1 = cIPJQ("<div>").addClass("b2c-chooser-headline");
var $description = jQuery("div#b2c-cipDefine-description");
var $h1 = jQuery("<div>").addClass("b2c-chooser-headline");
$description.append($h1);
var $help = cIPJQ("<div>").addClass("b2c-chooser-help").attr("id", "b2c-help");
var $help = jQuery("<div>").addClass("b2c-chooser-help").attr("id", "b2c-help");
$description.append($help);
var $btnDismiss = cIPJQ("<button>").text("Dismiss").attr("id", "b2c-btn-dismiss")
.addClass("b2c-btn").addClass("b2c-btn-danger")
var $btnDismiss = jQuery("<button>").text("Dismiss").attr("id", "b2c-btn-dismiss")
.addClass("btn").addClass("btn-danger")
.click(function(e) {
cIPJQ("div#b2c-backdrop").remove();
cIPJQ("div#b2c-cipDefine-fields").remove();
jQuery("div#b2c-backdrop").remove();
jQuery("div#b2c-cipDefine-fields").remove();
});
var $btnSkip = cIPJQ("<button>").text("Skip").attr("id", "b2c-btn-skip")
.addClass("b2c-btn").addClass("b2c-btn-info")
var $btnSkip = jQuery("<button>").text("Skip").attr("id", "b2c-btn-skip")
.addClass("btn").addClass("btn-info")
.css("margin-right", "5px")
.click(function() {
if(cIPJQ(this).data("step") == 1) {
if(jQuery(this).data("step") == 1) {
cipDefine.selection.username = null;
cipDefine.prepareStep2();
cipDefine.markAllPasswordFields(cIPJQ("#b2c-cipDefine-fields"));
cipDefine.markAllPasswordFields(jQuery("#b2c-cipDefine-fields"));
}
else if(cIPJQ(this).data("step") == 2) {
else if(jQuery(this).data("step") == 2) {
cipDefine.selection.password = null;
cipDefine.prepareStep3();
cipDefine.markAllStringFields(cIPJQ("#b2c-cipDefine-fields"));
cipDefine.markAllStringFields(jQuery("#b2c-cipDefine-fields"));
}
});
var $btnAgain = cIPJQ("<button>").text("Again").attr("id", "b2c-btn-again")
.addClass("b2c-btn").addClass("b2c-btn-warning")
var $btnAgain = jQuery("<button>").text("Again").attr("id", "b2c-btn-again")
.addClass("btn").addClass("btn-warning")
.css("margin-right", "5px")
.click(function(e) {
cipDefine.resetSelection();
cipDefine.prepareStep1();
cipDefine.markAllUsernameFields(cIPJQ("#b2c-cipDefine-fields"));
cipDefine.markAllUsernameFields(jQuery("#b2c-cipDefine-fields"));
})
.hide();
var $btnConfirm = cIPJQ("<button>").text("Confirm").attr("id", "b2c-btn-confirm")
.addClass("b2c-btn").addClass("b2c-btn-primary")
var $btnConfirm = jQuery("<button>").text("Confirm").attr("id", "b2c-btn-confirm")
.addClass("btn").addClass("btn-primary")
.css("margin-right", "15px")
.click(function(e) {
if(!cip.settings["defined-credential-fields"]) {
@ -615,7 +615,7 @@ cipDefine.initDescription = function() {
cipDefine.selection.username = cipFields.prepareId(cipDefine.selection.username);
}
var passwordId = cIPJQ("div#b2c-cipDefine-fields").data("password");
var passwordId = jQuery("div#b2c-cipDefine-fields").data("password");
if(cipDefine.selection.password) {
cipDefine.selection.password = cipFields.prepareId(cipDefine.selection.password);
}
@ -637,7 +637,7 @@ cipDefine.initDescription = function() {
args: [cip.settings]
});
cIPJQ("button#b2c-btn-dismiss").click();
jQuery("button#b2c-btn-dismiss").click();
})
.hide();
@ -647,14 +647,14 @@ cipDefine.initDescription = function() {
$description.append($btnDismiss);
if(cip.settings["defined-credential-fields"] && cip.settings["defined-credential-fields"][document.location.origin]) {
var $p = cIPJQ("<p>").html("For this page credential fields are already selected and will be overwritten.<br />");
var $btnDiscard = cIPJQ("<button>")
.attr("id", "b2c-btn-discard")
var $p = jQuery("<p>").html("For this page credential fields are already selected and will be overwritten.<br />");
var $btnDiscard = jQuery("<button>")
.attr("id", "btn-warning")
.text("Discard selection")
.css("margin-top", "5px")
.addClass("b2c-btn")
.addClass("b2c-btn-small")
.addClass("b2c-btn-danger")
.addClass("btn")
.addClass("btn-sm")
.addClass("btn-danger")
.click(function(e) {
delete cip.settings["defined-credential-fields"][document.location.origin];
@ -667,13 +667,13 @@ cipDefine.initDescription = function() {
action: 'load_settings'
});
cIPJQ(this).parent("p").remove();
jQuery(this).parent("p").remove();
});
$p.append($btnDiscard);
$description.append($p);
}
cIPJQ("div#b2c-cipDefine-description").draggable();
jQuery("div#b2c-cipDefine-description").draggable();
}
cipDefine.resetSelection = function() {
@ -694,52 +694,52 @@ cipDefine.isFieldSelected = function($cipId) {
cipDefine.markAllUsernameFields = function($chooser) {
cipDefine.eventFieldClick = function(e) {
cipDefine.selection.username = cIPJQ(this).data("cip-id");
cIPJQ(this).addClass("b2c-fixed-username-field").text("Username").unbind("click");
cipDefine.selection.username = jQuery(this).data("cip-id");
jQuery(this).addClass("b2c-fixed-username-field").text("Username").unbind("click");
cipDefine.prepareStep2();
cipDefine.markAllPasswordFields(cIPJQ("#b2c-cipDefine-fields"));
cipDefine.markAllPasswordFields(jQuery("#b2c-cipDefine-fields"));
};
cipDefine.markFields($chooser, cipFields.inputQueryPattern);
}
cipDefine.markAllPasswordFields = function($chooser) {
cipDefine.eventFieldClick = function(e) {
cipDefine.selection.password = cIPJQ(this).data("cip-id");
cIPJQ(this).addClass("b2c-fixed-password-field").text("Password").unbind("click");
cipDefine.selection.password = jQuery(this).data("cip-id");
jQuery(this).addClass("b2c-fixed-password-field").text("Password").unbind("click");
cipDefine.prepareStep3();
cipDefine.markAllStringFields(cIPJQ("#b2c-cipDefine-fields"));
cipDefine.markAllStringFields(jQuery("#b2c-cipDefine-fields"));
};
cipDefine.markFields($chooser, "input[type='password']");
}
cipDefine.markAllStringFields = function($chooser) {
cipDefine.eventFieldClick = function(e) {
cipDefine.selection.fields[cIPJQ(this).data("cip-id")] = true;
cipDefine.selection.fields[jQuery(this).data("cip-id")] = true;
var count = Object.keys(cipDefine.selection.fields).length;
cIPJQ(this).addClass("b2c-fixed-string-field").text("String field #"+count.toString()).unbind("click");
jQuery(this).addClass("b2c-fixed-string-field").text("String field #"+count.toString()).unbind("click");
cIPJQ("button#b2c-btn-confirm:first").addClass("b2c-btn-primary").attr("disabled", false);
jQuery("button#b2c-btn-confirm:first").addClass("b2c-btn-primary").attr("disabled", false);
};
cipDefine.markFields($chooser, cipFields.inputQueryPattern + ", select");
}
cipDefine.markFields = function ($chooser, $pattern) {
//var $found = false;
cIPJQ($pattern).each(function() {
if(cipDefine.isFieldSelected(cIPJQ(this).data("cip-id"))) {
jQuery($pattern).each(function() {
if(cipDefine.isFieldSelected(jQuery(this).data("cip-id"))) {
//continue
return true;
}
if(cIPJQ(this).is(":visible") && cIPJQ(this).css("visibility") != "hidden" && cIPJQ(this).css("visibility") != "collapsed") {
var $field = cIPJQ("<div>").addClass("b2c-fixed-field")
.css("top", cIPJQ(this).offset().top)
.css("left", cIPJQ(this).offset().left)
.css("width", cIPJQ(this).outerWidth())
.css("height", cIPJQ(this).outerHeight())
.attr("data-cip-id", cIPJQ(this).attr("data-cip-id"))
if(jQuery(this).is(":visible") && jQuery(this).css("visibility") != "hidden" && jQuery(this).css("visibility") != "collapsed") {
var $field = jQuery("<div>").addClass("b2c-fixed-field")
.css("top", jQuery(this).offset().top)
.css("left", jQuery(this).offset().left)
.css("width", jQuery(this).outerWidth())
.css("height", jQuery(this).outerHeight())
.attr("data-cip-id", jQuery(this).attr("data-cip-id"))
.click(cipDefine.eventFieldClick)
.hover(function() {cIPJQ(this).addClass("b2c-fixed-hover-field");}, function() {cIPJQ(this).removeClass("b2c-fixed-hover-field");});
.hover(function() {jQuery(this).addClass("b2c-fixed-hover-field");}, function() {jQuery(this).removeClass("b2c-fixed-hover-field");});
$chooser.append($field);
//$found = true;
}
@ -748,48 +748,48 @@ cipDefine.markFields = function ($chooser, $pattern) {
/* skip step if no entry was found
if(!$found) {
alert("No username field found.\nContinue with choosing a password field.");
cIPJQ("button#b2c-btn-skip").click();
jQuery("button#b2c-btn-skip").click();
}
*/
}
cipDefine.prepareStep1 = function() {
cIPJQ("div#b2c-help").text("").css("margin-bottom", 0);
cIPJQ("div#b2c-cipDefine-fields").removeData("username");
cIPJQ("div#b2c-cipDefine-fields").removeData("password");
cIPJQ("div.b2c-fixed-field", cIPJQ("div#b2c-cipDefine-fields")).remove();
cIPJQ("div:first", cIPJQ("div#b2c-cipDefine-description")).text("1. Choose a username field");
cIPJQ("button#b2c-btn-skip:first").data("step", "1").show();
cIPJQ("button#b2c-btn-confirm:first").hide();
cIPJQ("button#b2c-btn-again:first").hide();
jQuery("div#b2c-help").text("").css("margin-bottom", 0);
jQuery("div#b2c-cipDefine-fields").removeData("username");
jQuery("div#b2c-cipDefine-fields").removeData("password");
jQuery("div.b2c-fixed-field", jQuery("div#b2c-cipDefine-fields")).remove();
jQuery("div:first", jQuery("div#b2c-cipDefine-description")).text("1. Choose a username field");
jQuery("button#b2c-btn-skip:first").data("step", "1").show();
jQuery("button#b2c-btn-confirm:first").hide();
jQuery("button#b2c-btn-again:first").hide();
}
cipDefine.prepareStep2 = function() {
cIPJQ("div#b2c-help").text("").css("margin-bottom", 0);
cIPJQ("div.b2c-fixed-field:not(.b2c-fixed-username-field)", cIPJQ("div#b2c-cipDefine-fields")).remove();
cIPJQ("div:first", cIPJQ("div#b2c-cipDefine-description")).text("2. Now choose a password field");
cIPJQ("button#b2c-btn-skip:first").data("step", "2");
cIPJQ("button#b2c-btn-again:first").show();
jQuery("div#b2c-help").text("").css("margin-bottom", 0);
jQuery("div.b2c-fixed-field:not(.b2c-fixed-username-field)", jQuery("div#b2c-cipDefine-fields")).remove();
jQuery("div:first", jQuery("div#b2c-cipDefine-description")).text("2. Now choose a password field");
jQuery("button#b2c-btn-skip:first").data("step", "2");
jQuery("button#b2c-btn-again:first").show();
}
cipDefine.prepareStep3 = function() {
/* skip step if no entry was found
if(!cIPJQ("div#b2c-cipDefine-fields").data("username") && !cIPJQ("div#b2c-cipDefine-fields").data("password")) {
if(!jQuery("div#b2c-cipDefine-fields").data("username") && !jQuery("div#b2c-cipDefine-fields").data("password")) {
alert("Neither an username field nor a password field were selected.\nNothing will be changed and chooser will be closed now.");
cIPJQ("button#b2c-btn-dismiss").click();
jQuery("button#b2c-btn-dismiss").click();
return;
}
*/
if(!cipDefine.selection.username && !cipDefine.selection.password) {
cIPJQ("button#b2c-btn-confirm:first").removeClass("b2c-btn-primary").attr("disabled", true);
jQuery("button#b2c-btn-confirm:first").removeClass("b2c-btn-primary").attr("disabled", true);
}
cIPJQ("div#b2c-help").html("Please confirm your selection or choose more fields as <em>String fields</em>.").css("margin-bottom", "5px");
cIPJQ("div.b2c-fixed-field:not(.b2c-fixed-password-field,.b2c-fixed-username-field)", cIPJQ("div#b2c-cipDefine-fields")).remove();
cIPJQ("button#b2c-btn-confirm:first").show();
cIPJQ("button#b2c-btn-skip:first").data("step", "3").hide();
cIPJQ("div:first", cIPJQ("div#b2c-cipDefine-description")).text("3. Confirm selection");
jQuery("div#b2c-help").html("Please confirm your selection or choose more fields as <em>String fields</em>.").css("margin-bottom", "5px");
jQuery("div.b2c-fixed-field:not(.b2c-fixed-password-field,.b2c-fixed-username-field)", jQuery("div#b2c-cipDefine-fields")).remove();
jQuery("button#b2c-btn-confirm:first").show();
jQuery("button#b2c-btn-skip:first").data("step", "3").hide();
jQuery("div:first", jQuery("div#b2c-cipDefine-description")).text("3. Confirm selection");
}
@ -808,7 +808,7 @@ cipFields.setUniqueId = function(field) {
// yes, it should be, but there are many bad developers outside...
var fieldId = field.attr("id");
if(fieldId) {
var foundIds = cIPJQ("input#" + cipFields.prepareId(fieldId));
var foundIds = jQuery("input#" + cipFields.prepareId(fieldId));
if(foundIds.length == 1) {
field.attr("data-cip-id", fieldId);
return;
@ -817,7 +817,7 @@ cipFields.setUniqueId = function(field) {
// create own ID if no ID is set for this field
cipFields.uniqueNumber += 1;
field.attr("data-cip-id", "cIPJQ"+String(cipFields.uniqueNumber));
field.attr("data-cip-id", "jQuery"+String(cipFields.uniqueNumber));
}
}
@ -830,10 +830,10 @@ cipFields.prepareId = function(id) {
cipFields.getAllFields = function() {
var fields = [];
// get all input fields which are text, email or password and visible
cIPJQ(cipFields.inputQueryPattern).each(function() {
if(cIPJQ(this).is(":visible") && cIPJQ(this).css("visibility") != "hidden" && cIPJQ(this).css("visibility") != "collapsed") {
cipFields.setUniqueId(cIPJQ(this));
fields.push(cIPJQ(this));
jQuery(cipFields.inputQueryPattern).each(function() {
if(jQuery(this).is(":visible") && jQuery(this).css("visibility") != "hidden" && jQuery(this).css("visibility") != "collapsed") {
cipFields.setUniqueId(jQuery(this));
fields.push(jQuery(this));
}
});
@ -841,9 +841,9 @@ cipFields.getAllFields = function() {
}
cipFields.prepareVisibleFieldsWithID = function($pattern) {
cIPJQ($pattern).each(function() {
if(cIPJQ(this).is(":visible") && cIPJQ(this).css("visibility") != "hidden" && cIPJQ(this).css("visibility") != "collapsed") {
cipFields.setUniqueId(cIPJQ(this));
jQuery($pattern).each(function() {
if(jQuery(this).is(":visible") && jQuery(this).css("visibility") != "hidden" && jQuery(this).css("visibility") != "collapsed") {
cipFields.setUniqueId(jQuery(this));
}
});
}
@ -956,19 +956,19 @@ cipFields.getUsernameField = function(passwordId, checkDisabled) {
// search all inputs on this one form
if(form) {
cIPJQ(cipFields.inputQueryPattern, form).each(function() {
cipFields.setUniqueId(cIPJQ(this));
if(cIPJQ(this).attr("data-cip-id") == passwordId) {
jQuery(cipFields.inputQueryPattern, form).each(function() {
cipFields.setUniqueId(jQuery(this));
if(jQuery(this).attr("data-cip-id") == passwordId) {
// break
return false;
}
if(cIPJQ(this).attr("type") && cIPJQ(this).attr("type").toLowerCase() == "password") {
if(jQuery(this).attr("type") && jQuery(this).attr("type").toLowerCase() == "password") {
// continue
return true;
}
usernameField = cIPJQ(this);
usernameField = jQuery(this);
});
}
// search all inputs on page
@ -1018,7 +1018,7 @@ cipFields.getPasswordField = function(usernameId, checkDisabled) {
// search all inputs on this one form
if(form) {
passwordField = cIPJQ("input[type='password']:first", form);
passwordField = jQuery("input[type='password']:first", form);
if(passwordField.length < 1) {
passwordField = null;
}
@ -1038,7 +1038,7 @@ cipFields.getPasswordField = function(usernameId, checkDisabled) {
if(inputs[i].attr("data-cip-id") == usernameId) {
active = true;
}
if(active && cIPJQ(inputs[i]).attr("type") && cIPJQ(inputs[i]).attr("type").toLowerCase() == "password") {
if(active && jQuery(inputs[i]).attr("type") && jQuery(inputs[i]).attr("type").toLowerCase() == "password") {
passwordField = inputs[i];
break;
}
@ -1068,7 +1068,7 @@ cipFields.prepareCombinations = function(combinations) {
if(pwField && !pwField.data("cipFields-onChange")) {
pwField.data("cipFields-onChange", true);
pwField.change(function() {
cIPJQ(this).data("unchanged", false);
jQuery(this).data("unchanged", false);
});
}
@ -1129,7 +1129,7 @@ cip.submitUrl = null;
// received credentials from KeePassXC
cip.credentials = [];
cIPJQ(function() {
jQuery(function() {
cip.init();
});
@ -1350,8 +1350,8 @@ cip.fillInFromActiveElement = function(suppressWarnings) {
return;
}
cipFields.setUniqueId(cIPJQ(el));
var fieldId = cipFields.prepareId(cIPJQ(el).attr("data-cip-id"));
cipFields.setUniqueId(jQuery(el));
var fieldId = cipFields.prepareId(jQuery(el).attr("data-cip-id"));
var combination = null;
if(el.type && el.type.toLowerCase() == "password") {
combination = cipFields.getCombination("password", fieldId);
@ -1373,8 +1373,8 @@ cip.fillInFromActiveElementPassOnly = function(suppressWarnings) {
return;
}
cipFields.setUniqueId(cIPJQ(el));
var fieldId = cipFields.prepareId(cIPJQ(el).attr("data-cip-id"));
cipFields.setUniqueId(jQuery(el));
var fieldId = cipFields.prepareId(jQuery(el).attr("data-cip-id"));
var combination = null;
if(el.type && el.type.toLowerCase() == "password") {
combination = cipFields.getCombination("password", fieldId);
@ -1400,9 +1400,9 @@ cip.fillInFromActiveElementPassOnly = function(suppressWarnings) {
cip.setValue = function(field, value) {
if(field.is("select")) {
value = value.toLowerCase().trim();
cIPJQ("option", field).each(function() {
if(cIPJQ(this).text().toLowerCase().trim() == value) {
cip.setValueWithChange(field, cIPJQ(this).val());
jQuery("option", field).each(function() {
if(jQuery(this).text().toLowerCase().trim() == value) {
cip.setValueWithChange(field, jQuery(this).val());
return false;
}
});
@ -1605,8 +1605,8 @@ cip.contextMenuRememberCredentials = function() {
return;
}
cipFields.setUniqueId(cIPJQ(el));
var fieldId = cipFields.prepareId(cIPJQ(el).attr("data-cip-id"));
cipFields.setUniqueId(jQuery(el));
var fieldId = cipFields.prepareId(jQuery(el).attr("data-cip-id"));
var combination = null;
if(el.type && el.type.toLowerCase() == "password") {
combination = cipFields.getCombination("password", fieldId);
@ -1672,7 +1672,7 @@ cip.rememberCredentials = function(usernameValue, passwordValue) {
});
}
var url = cIPJQ(this)[0].action;
var url = jQuery(this)[0].action;
if(!url) {
url = document.location.href;
if(url.indexOf("?") > 0) {

File diff suppressed because one or more lines are too long

4
chromeKeePassXC/jquery-3.2.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
chromeKeePassXC/jquery-ui.min.css vendored Normal file

File diff suppressed because one or more lines are too long

13
chromeKeePassXC/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -43,14 +43,13 @@
],
"js":
[
"jquery-1.11.1.min.js",
"jquery-ui-1.10.2.custom.min.js",
"jquery-3.2.0.min.js",
"jquery-ui.min.js",
"chromekeepassxc.js"
],
"css":
[
"jquery-ui-1.10.2.custom.min.css",
"bootstrap-btn.css",
"jquery-ui.min.css",
"chromekeepassxc.css"
],
"run_at": "document_idle",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,143 @@
body {
padding-top: 20px;
padding-bottom: 60px;
}
/* Custom container */
.container {
margin: 0 auto;
max-width: 1000px;
}
.container > hr {
margin: 30px 0;
}
/* Custom navbar */
.navbar-default {
background-color: #3a8233;
border-color: #01520e;
display: inline-block;
float: none;
width: 100%;
}
.navbar-default .navbar-brand {
color: #ffffff;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: #ffffff;
}
.navbar-default .navbar-text {
color: #ffffff;
}
.navbar-default .navbar-nav > li > a {
color: #ffffff;
text-align: center;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: #cccccc;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: #ffffff;
background-color: #01520e;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
color: #ffffff;
background-color: #01520e;
}
.navbar-default .navbar-toggle {
border-color: #01520e;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #01520e;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #ffffff;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
border-color: #ffffff;
}
.navbar-default .navbar-link {
color: #ffffff;
}
.navbar-default .navbar-link:hover {
color: #ffffff;
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #ffffff;
}
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: #ffffff;
}
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #ffffff;
background-color: #01520e;
}
}
.tab {
display: none;
}
h2+hr {
margin-top: 0;
}
#tab-connected-databases .color.dropdown .dropdown-menu {
width: 180px;
padding: 7px 10px;
line-height: 175%;
}
#tab-connected-databases .color.dropdown .dropdown-menu a {
margin-right: 3px;
}
#tab-connected-databases .color.dropdown a.dropdown-toggle img {
margin-right: 5px;
}
tr.clone {
display: none;
}
td.last-used,
td.created {
white-space: nowrap;
}
.bold {
font-weight: bold;
}
.radio.inline,
.checkbox.inline {
display: inline-block;
white-space: nowrap;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
margin-left: 40px;
}
.checkUpdateKeePassXC {
margin-left: 40px;
}
#dangerousSettings {
display: none;
}

View file

@ -3,121 +3,24 @@
<head>
<title>Settings | chromeKeePassXC</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<link href="bootstrap-responsive.min.css" rel="stylesheet" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<!--<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>-->
<link rel="stylesheet" href="bootstrap.min.css" />
<link rel="stylesheet" href="options.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="bootstrap.min.js"></script>
<script type="text/javascript" src="options.js"></script>
<style type="text/css">
body {
padding-top: 20px;
padding-bottom: 60px;
}
/* Custom container */
.container {
margin: 0 auto;
max-width: 1000px;
}
.container > hr {
margin: 30px 0;
}
/* Customize the navbar links to be fill the entire space of the .navbar */
.navbar .navbar-inner {
padding: 0;
margin-bottom: 40px;
}
.navbar .nav {
margin: 0;
display: table;
width: 100%;
}
.navbar .nav li {
display: table-cell;
width: 1%;
float: none;
}
.navbar .nav li a {
font-weight: bold;
text-align: center;
border-left: 1px solid rgba(255,255,255,.75);
border-right: 1px solid rgba(0,0,0,.1);
}
.navbar .nav li:first-child a {
border-left: 0;
border-radius: 3px 0 0 3px;
}
.navbar .nav li:last-child a {
border-right: 0;
border-radius: 0 3px 3px 0;
}
.tab {
display: none;
}
h2+hr {
margin-top: 0;
}
#tab-connected-databases .color.dropdown .dropdown-menu {
width: 180px;
padding: 7px 10px;
line-height: 175%;
}
#tab-connected-databases .color.dropdown .dropdown-menu a {
margin-right: 3px;
}
#tab-connected-databases .color.dropdown a.dropdown-toggle img {
margin-right: 5px;
}
tr.clone {
display: none;
}
td.last-used,
td.created {
white-space: nowrap;
}
.bold {
font-weight: bold;
}
.radio.inline,
.checkbox.inline {
display: inline-block;
white-space: nowrap;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
margin-left: 40px;
}
.checkUpdateKeePassXC {
margin-left: 40px;
}
#dangerousSettings {
display: none;
}
</style>
</head>
<body>
<div class="container">
<div class="masthead">
<h3 class="muted"><img src="/icons/keepassxc_48x48.png" alt="logo" /> chromeKeePassXC</h3>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li class="active"><a href="#general-settings">General</a></li>
<li><a href="#connected-databases">Connected Databases</a></li>
<li><a href="#specified-fields">Specified credential fields</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
</div>
</div><!-- /.navbar -->
</div>
<h3 class="muted"><img src="/icons/keepassxc_48x48.png" alt="logo" /> chromeKeePassXC</h3>
<nav class="navbar navbar-default">
<ul class="nav navbar-nav">
<li class="active"><a href="#general-settings">General</a></li>
<li><a href="#connected-databases">Connected Databases</a></li>
<li><a href="#specified-fields">Specified credential fields</a></li>
<li><a href="#about">About</a></li>
</ul>
</nav>
<!-- General Settings -->
<div class="tab" id="tab-general-settings">
@ -129,86 +32,100 @@
If you only want to insert the password, just press Ctrl + Shift + P.
</p>
<p>
<label for="blinkTimeout">Blink Time:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="blinkTimeout" placeholder="7500" value="7500" />
<button class="btn" id="blinkTimeoutButton" type="button">Save</button>
<div class="form-group">
<label for="blinkTimeout">Blink Time:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="blinkTimeout" placeholder="7500" value="7500" />
<button class="btn btn-sm" id="blinkTimeoutButton" type="button">Save</button>
</div>
</div>
<span class="help-inline">
What is the maximum time (ms) the icon should blink after detecting new credentials
<br />
Default: 7500
</span>
</div>
<span class="help-inline">
What is the maximum time (ms) the icon should blink after detecting new credentials
<br />
Default: 7500
</span>
</p>
<p>
<div class="form-group">
<label for="blinkMinTimeout">Redirect Offset:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="blinkMinTimeout" placeholder="2000" value="2000" />
<button class="btn btn-sm" id="blinkMinTimeoutButton" type="button">Save</button>
</div>
</div>
<span class="help-inline">
What is the minimum time (ms) the icon should blink before deactivating due to page redirects.
<br />
-1 to only use <i>Blink Time</i> ignoring Redirect Allowance (old behavior)
<br />
Default: -1, Recommended: 2000
</span>
</div>
</p>
<p>
<label for="blinkMinTimeout">Redirect Offset:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="blinkMinTimeout" placeholder="2000" value="2000" />
<button class="btn" id="blinkMinTimeoutButton" type="button">Save</button>
</div>
<span class="help-inline">
What is the minimum time (ms) the icon should blink before deactivating due to page redirects.
<br />
-1 to only use <i>Blink Time</i> ignoring Redirect Allowance (old behavior)
<br />
Default: -1, Recommended: 2000
</span>
</div>
</p>
<p>
<label for="allowedRedirect">Redirect Allowance:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="allowedRedirect" placeholder="1" value="1" />
<button class="btn" id="allowedRedirectButton" type="button">Save</button>
</div>
<span class="help-inline">
How many pages should the tab cycle through after the redirect offset before deactivating the icon
<br />
Default: 1
</span>
</p>
<p>
<div class="form-group">
<label for="allowedRedirect">Redirect Allowance:</label>
<div class="control-group">
<div class="input-append">
<input type="number" id="allowedRedirect" placeholder="1" value="1" />
<button class="btn btn-sm" id="allowedRedirectButton" type="button">Save</button>
</div>
</div>
<span class="help-inline">
How many pages should the tab cycle through after the redirect offset before deactivating the icon
<br />
Default: 1
</span>
</div>
</p>
<hr />
<p>
<label class="checkbox">
<input type="checkbox" name="usePasswordGenerator" value="1" /> Activate password generator.
</label>
<span class="help-block">For all password-fields there will be an icon added to generate a new password.<br />
It is generated by KeePassXC with the profile for automatically generated passwords for new entries.</span>
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" name="usePasswordGenerator" value="1" /> Activate password generator.
</label>
<span class="help-block">For all password-fields there will be an icon added to generate a new password.<br />
It is generated by KeePassXC with the profile for automatically generated passwords for new entries.</span>
</div>
</p>
<hr />
<p>
<label class="checkbox">
<input type="checkbox" name="autoRetrieveCredentials" value="1" /> Automatically retrieve credentials.
</label>
<span class="help-block">chromeKeePassXC will immediately retrieve the credentials when the tab is activated.</span>
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" name="autoRetrieveCredentials" value="1" /> Automatically retrieve credentials.
</label>
<span class="help-block">chromeKeePassXC will immediately retrieve the credentials when the tab is activated.</span>
</div>
</p>
<hr />
<p>
<label class="checkbox">
<input type="checkbox" name="autoFillSingleEntry" value="1" /> Automatically fill-in single credentials entry.
</label>
<span class="help-block">If chromeKeePassXC does only receive a single entry from KeePassXC it automatically fills this credentials into the found credential fields.</span>
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" name="autoFillSingleEntry" value="1" /> Automatically fill-in single credentials entry.
</label>
<span class="help-block">If chromeKeePassXC does only receive a single entry from KeePassXC it automatically fills this credentials into the found credential fields.</span>
</div>
</p>
<hr />
<p>
<label class="checkbox">
<input type="checkbox" name="autoCompleteUsernames" value="1" /> Activate autocomplete for username fields.
</label>
<span class="help-block">For all username fields on a page a dropdown list appears which contains all available credentials.</span>
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" name="autoCompleteUsernames" value="1" /> Activate autocomplete for username fields.
</label>
<span class="help-block">For all username fields on a page a dropdown list appears which contains all available credentials.</span>
</div>
</p>
<hr />
<p>
Check for updates of KeePassXC:
<br />
<label class="radio inline"><input type="radio" name="checkUpdateKeePassXC" value="3" /> every 3 days</label>
<label class="radio inline"><input type="radio" name="checkUpdateKeePassXC" value="7" /> every week</label>
<label class="radio inline"><input type="radio" name="checkUpdateKeePassXC" value="30" /> every month</label>
<label class="radio inline"><input type="radio" name="checkUpdateKeePassXC" value="0" /> never</label>
<label class="radio-inline"><input type="radio" name="checkUpdateKeePassXC" value="3" /> every 3 days</label>
<label class="radio-inline"><input type="radio" name="checkUpdateKeePassXC" value="7" /> every week</label>
<label class="radio-inline"><input type="radio" name="checkUpdateKeePassXC" value="30" /> every month</label>
<label class="radio-inline"><input type="radio" name="checkUpdateKeePassXC" value="0" /> never</label>
</p>
<div class="help-block kphVersion">
chromeKeePassXC needs KeePassXC to retrieve credentials.
@ -216,25 +133,26 @@
You can download the latest stable version from here: <a target="_blank" href="https://keepassxc.org/">https://keepassxc.org/</a>
<br />
<br />
<div class="row">
<div class="span3">Your running version of KeePassXC:</div>
<div class="span6"><em class="yourVersion"></em></div>
<div>
Your running version of KeePassXC: <em class="yourVersion"></em>
</div>
<div class="row">
<div class="span3">Latest available version of KeePassXC:</div>
<div class="span6"><em class="latestVersion"></em><button class="btn btn-mini checkUpdateKeePassXC">Check for updates</button></div>
<div>
Latest available version of KeePassXC: <em class="latestVersion"></em>
<button class="btn btn-sm checkUpdateKeePassXC">Check for updates</button>
</div>
</div>
<hr />
<p>
<label class="checkbox">
<input type="checkbox" name="autoFillAndSend" value="1" /> Auto fill HTTP Auth dialogs and send them.
</label>
<span class="help-block">
If credentials are found for a page and the login-type is an HTTP Auth request, chromeKeePassXC tries to login with the first given credentials.
<br />
An HTTP Auth dialog looks like this:
</span>
<div class="checkbox">
<label class="checkbox">
<input type="checkbox" name="autoFillAndSend" value="1" /> Auto fill HTTP Auth dialogs and send them.
</label>
<span class="help-block">
If credentials are found for a page and the login-type is an HTTP Auth request, chromeKeePassXC tries to login with the first given credentials.
<br />
An HTTP Auth dialog looks like this:
</span>
</div>
<img src="/options/http-auth-dialog.png" alt="http-auth-dialog" />
</p>
<hr />
@ -252,11 +170,11 @@
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="span5">Identifier</th>
<th class="span2">Icon</th>
<th class="span2">Last used</th>
<th class="span2">Created</th>
<th class="span1">Delete</th>
<th>Identifier</th>
<th>Icon</th>
<th>Last used</th>
<th>Created</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
@ -273,20 +191,25 @@
</tbody>
</table>
<div style="text-align: right">
<button id="connect-button" class="b2c-btn b2c-btn-primary">Connect</button>
</div>
<div id="dialogDeleteConnectedDatabase" class="modal hide" tabindex="-1" role="dialog">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Remove identifier from Chrome?</h3>
</div>
<div class="modal-body">
<p>Do you really want to remove the identifier <span class="bold"></span> from Chrome?</p>
<p class="help-block">You can reconnect your database at any time.</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button class="btn yes btn-primary">Yes, remove now</button>
<button id="connect-button" class="btn btn-primary">Connect</button>
</div>
<div id="dialogDeleteConnectedDatabase" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 class="modal-title" id="myModalLabel">Remove identifier from Chrome?</h3>
</div>
<div class="modal-body">
<p>Do you really want to remove the identifier <span class="bold"></span> from Chrome?</p>
<p class="help-block">You can reconnect your database at any time.</p>
</div>
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button class="btn yes btn-primary">Yes, remove now</button>
</div>
</div>
</div>
</div>
</div>
@ -305,8 +228,8 @@
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th class="span10">Page URL</th>
<th class="span2">Delete</th>
<th>Page URL</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
@ -319,18 +242,22 @@
</tr>
</tbody>
</table>
<div id="dialogDeleteSpecifiedCredentialFields" class="modal hide" tabindex="-1" role="dialog">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Remove specified credential fields?</h3>
</div>
<div class="modal-body">
<p>Do you really want to remove the specified credential fields on the page <strong></strong>?</p>
<p class="help-block">chromeKeePassXC will automatically detect the credential fields the next time you visit this page.</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button class="btn yes btn-primary">Yes, remove now</button>
<div id="dialogDeleteSpecifiedCredentialFields" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Remove specified credential fields?</h3>
</div>
<div class="modal-body">
<p>Do you really want to remove the specified credential fields on the page <strong></strong>?</p>
<p class="help-block">chromeKeePassXC will automatically detect the credential fields the next time you visit this page.</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button class="btn yes btn-primary">Yes, remove now</button>
</div>
</div>
</div>
</div>
</div>
@ -350,14 +277,12 @@
<a target="_blank" href="https://github.com/varjolintu/chromeKeePassXC">Visit project's page in GitHub</a>.
</p>
<hr />
<div class="row">
<div class="span2">chromeKeePassXC Version:</div>
<div class="span6"><em class="versionCIP"></em></div>
</div>
<div class="row">
<div class="span2">KeePassXC Version:</div>
<div class="span6"><em class="versionKPH"></em></div>
</div>
<p>
chromeKeePassXC Version: <em class="versionCIP"></em>
</p>
<p>
KeePassXC Version: <em class="versionKPH"></em>
</p>
</div>
<hr>
<div class="footer">

View file

@ -1,5 +1,5 @@
if(cIPJQ) {
var $ = cIPJQ.noConflict(true);
if (jQuery) {
var $ = jQuery.noConflict(true);
}
$(function() {
@ -79,46 +79,7 @@ options.initGeneralSettings = function() {
$("#blinkMinTimeout").val(options.settings["blinkMinTimeout"]);
$("#allowedRedirect").val(options.settings["allowedRedirect"]);
$("#portButton").click(function() {
var port = $.trim($("#port").val());
var portNumber = parseInt(port);
if(isNaN(port) || portNumber < 1025 || portNumber > 99999) {
$("#port").closest(".control-group").addClass("error");
alert("The port number has to be in range 1025 - 99999.\nNothing saved!");
return;
}
options.settings["port"] = portNumber.toString();
$("#port").closest(".control-group").removeClass("error").addClass("success");
setTimeout(function() {$("#port").closest(".control-group").removeClass("success")}, 2500);
localStorage.settings = JSON.stringify(options.settings);
chrome.extension.sendMessage({
action: 'load_settings'
});
});
$("#hostnameButton").click(function() {
var hostname = $("#hostname").val();
if($.trim(hostname) == "") {
$("#hostname").closest(".control-group").addClass("error");
alert("Hostname cannot be empty.\nNothing saved!");
return;
}
options.settings["hostname"] = hostname;
$("#hostname").closest(".control-group").removeClass("error").addClass("success");
setTimeout(function() {$("#hostname").closest(".control-group").removeClass("success")}, 2500);
localStorage.settings = JSON.stringify(options.settings);
chrome.extension.sendMessage({
action: 'load_settings'
});
});
$("#blinkTimeoutButton").click(function(){
$("#blinkTimeoutButton").click(function(){
var blinkTimeout = $.trim($("#blinkTimeout").val());
var blinkTimeoutval = parseInt(blinkTimeout);
@ -249,6 +210,7 @@ options.initConnectedDatabases = function() {
else {
$("#tab-connected-databases table tbody:first tr.empty:first").show();
}
$("#connect-button").click(function() {
chrome.extension.sendMessage({
action: "associate"

View file

@ -2,8 +2,9 @@ body {
font-family: sans-serif;
min-width:357px;
overflow-x:hidden;
background: #eee;
background-color: #eee;
font-size: 15px;
padding: 8px;
}
.credentials ul {
margin-left: 0;

View file

@ -2,16 +2,16 @@
<head>
<title>KeePassXC - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<!--<script type="text/javascript" src="../jquery-3.2.0.min.js">-->
<script type="text/javascript" src="popup_functions.js"></script>
<script type="text/javascript" src="popup.js"></script>
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../options/bootstrap.min.js" /></script>
<script type="text/javascript" src="popup_functions.js" /></script>
<script type="text/javascript" src="popup.js" /></script>
</head>
<body>
<div id="settings" class="settings">
<button id="btn-options" class="b2c-btn b2c-btn-small b2c-btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="b2c-btn b2c-btn-small">Choose own credential fields for this page</button>
<button id="btn-options" class="btn btn-sm btn-success">Settings</button>
<button id="btn-choose-credential-fields" class="btn btn-sm">Choose own credential fields for this page</button>
<div id="update-available">
You use an old version of KeePassXC.
@ -30,7 +30,7 @@
Press the connect button to register and pair with KeePassXC.
</p>
<div style="text-align: right">
<button id="connect-button" class="b2c-btn b2c-btn-primary">Connect</button>
<button id="connect-button" class="btn btn-primary">Connect</button>
</div>
</div>
@ -43,7 +43,7 @@
Press the reconnect button to establish a new connection.
</p>
<div style="text-align: right">
<button id="reconnect-button" class="b2c-btn b2c-btn-primary">Reconnect</button>
<button id="reconnect-button" class="btn btn-primary">Reconnect</button>
</div>
</div>
@ -62,7 +62,7 @@
connected to KeePassXC.
</p>
<div style="text-align: right">
<button id="redetect-fields-button" class="b2c-btn">Redetect credential fields</button>
<button id="redetect-fields-button" class="btn">Redetect credential fields</button>
</div>
</div>
@ -74,7 +74,7 @@
<code id="error-message"></code>
</p>
<div style="text-align: right">
<button id="reload-status-button" class="b2c-btn">Reload</button>
<button id="reload-status-button" class="btn">Reload</button>
</div>
</div>
</body>

View file

@ -1,4 +1,4 @@
var $ = cIPJQ.noConflict(true);
var $ = jQuery.noConflict(true);
var _settings = typeof(localStorage.settings)=='undefined' ? {} : JSON.parse(localStorage.settings);
//var global = chrome.extension.getBackgroundPage();

View file

@ -2,15 +2,16 @@
<head>
<title>KeePassXC - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../options/bootstrap.min.js" /></script>
<script type="text/javascript" src="popup_functions.js"></script>
<script type="text/javascript" src="popup_httpauth.js"></script>
</head>
<body>
<div id="settings" class="settings">
<button id="btn-options" class="b2c-btn b2c-btn-small b2c-btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="b2c-btn b2c-btn-small">Choose own credential fields for this page</button>
<button id="btn-options" class="btn btn-sm btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="btn btn-sm">Choose own credential fields for this page</button>
<div id="update-available">
You use an old version of KeePassXC.

View file

@ -8,9 +8,9 @@ $(function() {
for (var i = 0; i < data.logins.length; i++) {
var li = document.createElement("li");
var a = document.createElement("a");
a.textContent = data.logins[i].Login + " (" + data.logins[i].Name + ")";
a.textContent = data.logins[i].login + " (" + data.logins[i].name + ")";
li.appendChild(a);
$(a).data("url", data.url.replace(/:\/\//g, "://" + data.logins[i].Login + ":" + data.logins[i].Password + "@"));
$(a).data("url", data.url.replace(/:\/\//g, "://" + data.logins[i].login + ":" + data.logins[i].password + "@"));
$(a).click(function() {
chrome.tabs.update(tab.id, {"url": $(this).data("url")});
close();

View file

@ -2,15 +2,16 @@
<head>
<title>KeePassXC - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../options/bootstrap.min.js" /></script>
<script type="text/javascript" src="popup_functions.js"></script>
<script type="text/javascript" src="popup_login.js"></script>
</head>
<body>
<div id="settings" class="settings">
<button id="btn-options" class="b2c-btn b2c-btn-small b2c-btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="b2c-btn b2c-btn-small">Choose own credential fields for this page</button>
<button id="btn-options" class="btn btn-sm btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="btn btn-sm">Choose own credential fields for this page</button>
<div id="update-available">
You use an old version of KeePassXC.

View file

@ -2,14 +2,15 @@
<head>
<title>KeePassXC - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../options/bootstrap.min.js" /></script>
<script type="text/javascript" src="popup_functions.js"></script>
</head>
<body>
<div id="settings" class="settings">
<button id="btn-options" class="b2c-btn b2c-btn-small b2c-btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="b2c-btn b2c-btn-small">Choose own credential fields for this page</button>
<button id="btn-options" class="btn btn-sm btn-warning">Settings</button>
<button id="btn-choose-credential-fields" class="btn btn-sm">Choose own credential fields for this page</button>
<div id="update-available">
You use an old version of KeePassXC.

View file

@ -2,8 +2,9 @@
<head>
<title>KeePassXC - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../bootstrap-btn.css" />
<script type="text/javascript" src="../jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.0.min.js"></script>
<script type="text/javascript" src="../options/bootstrap.min.js" /></script>
<script type="text/javascript" src="popup_functions.js"></script>
<script type="text/javascript" src="popup_remember.js"></script>
<style type="text/css">
@ -25,9 +26,9 @@
<span class="small information-username">Username: <span class="normal"></span></span>
</p>
<p>
<button id="btn-new" class="b2c-btn b2c-btn-success">New</button>
<button id="btn-update" class="b2c-btn b2c-btn-warning">Update</button>
<button id="btn-dismiss" class="b2c-btn b2c-btn-danger">Dismiss</button>
<button id="btn-new" class="btn btn-success">New</button>
<button id="btn-update" class="btn btn-warning">Update</button>
<button id="btn-dismiss" class="btn btn-danger">Dismiss</button>
</p>
</div>

View file

@ -11,7 +11,7 @@ function _initialize(tab) {
// no existing credentials to update --> disable update-button
if(_tab.credentials.list.length == 0) {
$("#btn-update").attr("disabled", true).removeClass("b2c-btn-warning");
$("#btn-update").attr("disabled", true).removeClass("btn-warning");
}
var url = _tab.credentials.url;
@ -33,7 +33,7 @@ function _initialize(tab) {
if(_tab.credentials.list.length == 1) {
chrome.extension.sendMessage({
action: 'update_credentials',
args: [_tab.credentials.list[0].Uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
args: [_tab.credentials.list[0].uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
}, _verifyResult);
}
else {
@ -52,17 +52,17 @@ function _initialize(tab) {
for(var i = 0; i < _tab.credentials.list.length; i++) {
var $a = $("<a>")
.attr("href", "#")
.text(_tab.credentials.list[i].Login + " (" + _tab.credentials.list[i].Name + ")")
.text(_tab.credentials.list[i].Login + " (" + _tab.credentials.list[i].name + ")")
.data("entryId", i)
.click(function(e) {
e.preventDefault();
chrome.extension.sendMessage({
action: 'update_credentials',
args: [_tab.credentials.list[$(this).data("entryId")].Uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
args: [_tab.credentials.list[$(this).data("entryId")].uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
}, _verifyResult);
});
if(_tab.credentials.usernameExists && _tab.credentials.username == _tab.credentials.list[i].Login) {
if(_tab.credentials.usernameExists && _tab.credentials.username == _tab.credentials.list[i].login) {
$a.css("font-weight", "bold");
}