Fix share link password input
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
def8af3e7e
commit
7a9ea03943
|
@ -48,16 +48,13 @@
|
||||||
.shareWithLoading {
|
.shareWithLoading {
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
right: 35px;
|
right: 35px;
|
||||||
top: 0px;
|
top: 3px;
|
||||||
}
|
}
|
||||||
.shareWithConfirm,
|
.shareWithConfirm {
|
||||||
.linkPass .icon-loading-small {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
top: 6px;
|
top: 6px;
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
}
|
|
||||||
.shareWithConfirm {
|
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
.shareWithField:focus ~ .shareWithConfirm {
|
.shareWithField:focus ~ .shareWithConfirm {
|
||||||
|
@ -70,6 +67,21 @@
|
||||||
padding: 14px;
|
padding: 14px;
|
||||||
}
|
}
|
||||||
.popovermenu {
|
.popovermenu {
|
||||||
|
.linkPassMenu {
|
||||||
|
.share-pass-submit {
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
.icon-loading-small {
|
||||||
|
background-color: var(--color-main-background);
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
margin: 3px;
|
||||||
|
padding: 10px;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
.datepicker {
|
.datepicker {
|
||||||
margin-left: 35px;
|
margin-left: 35px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
<li class="{{#unless isPasswordSet}}hidden{{/unless}} linkPassMenu">
|
<li class="{{#unless isPasswordSet}}hidden{{/unless}} linkPassMenu">
|
||||||
<span class="menuitem icon-share-pass">
|
<span class="menuitem icon-share-pass">
|
||||||
<input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" autocomplete="new-password" />
|
<input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" autocomplete="new-password" />
|
||||||
|
<input type="submit" class="icon-confirm share-pass-submit" value="" />
|
||||||
<span class="icon icon-loading-small hidden"></span>
|
<span class="icon icon-loading-small hidden"></span>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -54,8 +54,8 @@
|
||||||
// hide download
|
// hide download
|
||||||
'change .hideDownloadCheckbox': 'onHideDownloadChange',
|
'change .hideDownloadCheckbox': 'onHideDownloadChange',
|
||||||
// password
|
// password
|
||||||
'focusout input.linkPassText': 'onPasswordEntered',
|
'click input.share-pass-submit': 'onPasswordEntered',
|
||||||
'keyup input.linkPassText': 'onPasswordKeyUp',
|
'keyup input.linkPassText': 'onPasswordKeyUp', // check for the enter key
|
||||||
'change .showPasswordCheckbox': 'onShowPasswordClick',
|
'change .showPasswordCheckbox': 'onShowPasswordClick',
|
||||||
'change .passwordByTalkCheckbox': 'onPasswordByTalkChange',
|
'change .passwordByTalkCheckbox': 'onPasswordByTalkChange',
|
||||||
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
|
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
|
||||||
|
@ -381,11 +381,12 @@
|
||||||
},
|
},
|
||||||
error: function(model, msg) {
|
error: function(model, msg) {
|
||||||
// destroy old tooltips
|
// destroy old tooltips
|
||||||
$input.tooltip('destroy');
|
var $container = $input.parent();
|
||||||
|
$container.tooltip('destroy');
|
||||||
$input.addClass('error');
|
$input.addClass('error');
|
||||||
$input.attr('title', msg);
|
$container.attr('title', msg);
|
||||||
$input.tooltip({placement: 'bottom', trigger: 'manual'});
|
$container.tooltip({placement: 'bottom', trigger: 'manual'});
|
||||||
$input.tooltip('show');
|
$container.tooltip('show');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -154,7 +154,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\" class=\"linkPassText\" type=\"password\" placeholder=\""
|
+ "\" class=\"linkPassText\" type=\"password\" placeholder=\""
|
||||||
+ alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"passwordPlaceholder","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"passwordPlaceholder","hash":{},"data":data}) : helper)))
|
||||||
+ "\" autocomplete=\"new-password\" />\n <span class=\"icon icon-loading-small hidden\"></span>\n </span>\n </li>\n";
|
+ "\" autocomplete=\"new-password\" />\n <input type=\"submit\" class=\"icon-confirm share-pass-submit\" value=\"\" />\n <span class=\"icon icon-loading-small hidden\"></span>\n </span>\n </li>\n";
|
||||||
},"9":function(container,depth0,helpers,partials,data) {
|
},"9":function(container,depth0,helpers,partials,data) {
|
||||||
return "disabled=\"disabled\"";
|
return "disabled=\"disabled\"";
|
||||||
},"11":function(container,depth0,helpers,partials,data) {
|
},"11":function(container,depth0,helpers,partials,data) {
|
||||||
|
|
|
@ -186,13 +186,11 @@ describe('OC.Share.ShareDialogLinkShareView', function () {
|
||||||
});
|
});
|
||||||
view.render();
|
view.render();
|
||||||
|
|
||||||
var $passwordDiv = view.$el.find('#linkPass');
|
|
||||||
$passwordText = view.$el.find('.linkPassText');
|
$passwordText = view.$el.find('.linkPassText');
|
||||||
$workingIcon = view.$el.find('.linkPassMenu .icon-loading-small');
|
$workingIcon = view.$el.find('.linkPassMenu .icon-loading-small');
|
||||||
|
|
||||||
sinon.stub(shareModel, 'saveLinkShare');
|
sinon.stub(shareModel, 'saveLinkShare');
|
||||||
|
|
||||||
expect($passwordDiv.hasClass('hidden')).toBeFalsy();
|
|
||||||
expect($passwordText.hasClass('hidden')).toBeFalsy();
|
expect($passwordText.hasClass('hidden')).toBeFalsy();
|
||||||
expect($workingIcon.hasClass('hidden')).toBeTruthy();
|
expect($workingIcon.hasClass('hidden')).toBeTruthy();
|
||||||
|
|
||||||
|
|
|
@ -127,28 +127,6 @@ describe('OC.Share.ShareDialogView', function() {
|
||||||
describe('Share with link', function() {
|
describe('Share with link', function() {
|
||||||
// TODO: test ajax calls
|
// TODO: test ajax calls
|
||||||
// TODO: test password field visibility (whenever enforced or not)
|
// TODO: test password field visibility (whenever enforced or not)
|
||||||
it('update password on focus out', function() {
|
|
||||||
$('#allowShareWithLink').val('yes');
|
|
||||||
|
|
||||||
dialog.model.set({
|
|
||||||
linkShares: [{
|
|
||||||
id: 123
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
dialog.render();
|
|
||||||
|
|
||||||
// Enable password, enter password and focusout
|
|
||||||
dialog.$el.find('[name=showPassword]').click();
|
|
||||||
dialog.$el.find('.linkPassText').focus();
|
|
||||||
dialog.$el.find('.linkPassText').val('foo');
|
|
||||||
dialog.$el.find('.linkPassText').focusout();
|
|
||||||
|
|
||||||
expect(saveLinkShareStub.calledOnce).toEqual(true);
|
|
||||||
expect(saveLinkShareStub.firstCall.args[0]).toEqual({
|
|
||||||
cid: 123,
|
|
||||||
password: 'foo'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('update password on enter', function() {
|
it('update password on enter', function() {
|
||||||
$('#allowShareWithLink').val('yes');
|
$('#allowShareWithLink').val('yes');
|
||||||
|
|
||||||
|
@ -171,6 +149,28 @@ describe('OC.Share.ShareDialogView', function() {
|
||||||
password: 'foo'
|
password: 'foo'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
it('update password on submit', function() {
|
||||||
|
$('#allowShareWithLink').val('yes');
|
||||||
|
|
||||||
|
dialog.model.set({
|
||||||
|
linkShares: [{
|
||||||
|
id: 123
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
dialog.render();
|
||||||
|
|
||||||
|
// Enable password and enter password
|
||||||
|
dialog.$el.find('[name=showPassword]').click();
|
||||||
|
dialog.$el.find('.linkPassText').focus();
|
||||||
|
dialog.$el.find('.linkPassText').val('foo');
|
||||||
|
dialog.$el.find('.linkPassText + .icon-confirm').click();
|
||||||
|
|
||||||
|
expect(saveLinkShareStub.calledOnce).toEqual(true);
|
||||||
|
expect(saveLinkShareStub.firstCall.args[0]).toEqual({
|
||||||
|
cid: 123,
|
||||||
|
password: 'foo'
|
||||||
|
});
|
||||||
|
});
|
||||||
it('shows add share with link button when allowed', function() {
|
it('shows add share with link button when allowed', function() {
|
||||||
$('#allowShareWithLink').val('yes');
|
$('#allowShareWithLink').val('yes');
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue