Merge pull request #72 from nextcloud/stable9-backport-33
[stable9] Add JS Unit tests
This commit is contained in:
commit
ea0e443b88
|
@ -1,5 +1,9 @@
|
|||
build:
|
||||
backend:
|
||||
jsunit:
|
||||
image: morrisjobke/nextcloud-ci-jsunit:1.0.2
|
||||
commands:
|
||||
- ./autotest-js.sh
|
||||
sqlite:
|
||||
image: morrisjobke/nextcloud-ci-php7:1.0
|
||||
commands:
|
||||
- git submodule update --init
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"karma-junit-reporter": "*",
|
||||
"karma-coverage": "*",
|
||||
"karma-phantomjs-launcher": "*",
|
||||
"phantomjs": "*",
|
||||
"phantomjs-prebuilt": "*",
|
||||
"jasmine-core": "~2.3.4"
|
||||
},
|
||||
"engine": "node >= 0.8"
|
||||
|
|
|
@ -47,6 +47,12 @@
|
|||
' <input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" />' +
|
||||
' <span class="icon-loading-small hidden"></span>' +
|
||||
'</div>' +
|
||||
' {{#if mailPublicNotificationEnabled}}' +
|
||||
'<form id="emailPrivateLink" class="emailPrivateLinkForm">' +
|
||||
' <input id="email" class="emailField" value="{{email}}" placeholder="{{mailPrivatePlaceholder}}" type="text" />' +
|
||||
' <input id="emailButton" class="emailButton" type="submit" value="{{mailButtonText}}" />' +
|
||||
'</form>' +
|
||||
' {{/if}}' +
|
||||
'{{else}}' +
|
||||
// FIXME: this doesn't belong in this view
|
||||
'{{#if noSharingPlaceholder}}<input id="shareWith-{{cid}}" class="shareWithField" type="text" placeholder="{{noSharingPlaceholder}}" disabled="disabled"/>{{/if}}' +
|
||||
|
@ -77,6 +83,7 @@
|
|||
showLink: true,
|
||||
|
||||
events: {
|
||||
'submit .emailPrivateLinkForm': '_onEmailPrivateLink',
|
||||
'focusout input.linkPassText': 'onPasswordEntered',
|
||||
'keyup input.linkPassText': 'onPasswordKeyUp',
|
||||
'click .linkCheckbox': 'onLinkCheckBoxChange',
|
||||
|
@ -117,6 +124,7 @@
|
|||
|
||||
_.bindAll(
|
||||
this,
|
||||
'_onEmailPrivateLink',
|
||||
'onLinkCheckBoxChange',
|
||||
'onPasswordEntered',
|
||||
'onPasswordKeyUp',
|
||||
|
@ -237,9 +245,38 @@
|
|||
});
|
||||
},
|
||||
|
||||
_onEmailPrivateLink: function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
var $emailField = this.$el.find('.emailField');
|
||||
var $emailButton = this.$el.find('.emailButton');
|
||||
var email = $emailField.val();
|
||||
if (email !== '') {
|
||||
$emailField.prop('disabled', true);
|
||||
$emailButton.prop('disabled', true);
|
||||
$emailField.val(t('core', 'Sending ...'));
|
||||
this.model.sendEmailPrivateLink(email).done(function() {
|
||||
$emailField.css('font-weight', 'bold').val(t('core','Email sent'));
|
||||
setTimeout(function() {
|
||||
$emailField.val('');
|
||||
$emailField.css('font-weight', 'normal');
|
||||
$emailField.prop('disabled', false);
|
||||
$emailButton.prop('disabled', false);
|
||||
}, 2000);
|
||||
}).fail(function() {
|
||||
$emailField.val(email);
|
||||
$emailField.css('font-weight', 'normal');
|
||||
$emailField.prop('disabled', false);
|
||||
$emailButton.prop('disabled', false);
|
||||
});
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var linkShareTemplate = this.template();
|
||||
var resharingAllowed = this.model.sharePermissionPossible();
|
||||
var email = this.$el.find('.emailField').val();
|
||||
|
||||
if(!resharingAllowed
|
||||
|| !this.showLink
|
||||
|
@ -297,9 +334,43 @@
|
|||
hideFileListLabel: t('core', 'Hide file listing'),
|
||||
mailPublicNotificationEnabled: isLinkShare && this.configModel.isMailPublicNotificationEnabled(),
|
||||
mailPrivatePlaceholder: t('core', 'Email link to person'),
|
||||
mailButtonText: t('core', 'Send')
|
||||
mailButtonText: t('core', 'Send'),
|
||||
email: email
|
||||
}));
|
||||
|
||||
var $emailField = this.$el.find('.emailField');
|
||||
if (isLinkShare && $emailField.length !== 0) {
|
||||
$emailField.autocomplete({
|
||||
minLength: 1,
|
||||
source: function (search, response) {
|
||||
$.get(
|
||||
OC.generateUrl('core/ajax/share.php'), {
|
||||
fetch: 'getShareWithEmail',
|
||||
search: search.term
|
||||
}, function(result) {
|
||||
if (result.status == 'success' && result.data.length > 0) {
|
||||
response(result.data);
|
||||
}
|
||||
});
|
||||
},
|
||||
select: function( event, item ) {
|
||||
$emailField.val(item.item.email);
|
||||
return false;
|
||||
}
|
||||
})
|
||||
.data("ui-autocomplete")._renderItem = function( ul, item ) {
|
||||
return $('<li>')
|
||||
.append('<a>' + escapeHTML(item.displayname) + "<br>" + escapeHTML(item.email) + '</a>' )
|
||||
.appendTo( ul );
|
||||
};
|
||||
}
|
||||
|
||||
// TODO drop with IE8 drop
|
||||
if($('html').hasClass('ie8')) {
|
||||
this.$el.find('#linkPassText').removeAttr('placeholder');
|
||||
this.$el.find('#linkPassText').val('');
|
||||
}
|
||||
|
||||
this.delegateEvents();
|
||||
|
||||
return this;
|
||||
|
|
|
@ -154,6 +154,9 @@
|
|||
// Default permissions are Edit (CRUD) and Share
|
||||
// Check if these permissions are possible
|
||||
var permissions = OC.PERMISSION_READ;
|
||||
if (shareType === OC.Share.SHARE_TYPE_REMOTE) {
|
||||
permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_READ;
|
||||
} else {
|
||||
if (this.updatePermissionPossible()) {
|
||||
permissions = permissions | OC.PERMISSION_UPDATE;
|
||||
}
|
||||
|
@ -166,6 +169,7 @@
|
|||
if (this.configModel.get('isResharingAllowed') && (this.sharePermissionPossible())) {
|
||||
permissions = permissions | OC.PERMISSION_SHARE;
|
||||
}
|
||||
}
|
||||
|
||||
attributes.permissions = permissions;
|
||||
if (_.isUndefined(attributes.path)) {
|
||||
|
@ -414,6 +418,12 @@
|
|||
if(!_.isObject(share)) {
|
||||
throw "Unknown Share";
|
||||
}
|
||||
if( share.share_type === OC.Share.SHARE_TYPE_REMOTE
|
||||
&& ( permission === OC.PERMISSION_SHARE
|
||||
|| permission === OC.PERMISSION_DELETE))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return (share.permissions & permission) === permission;
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in New Issue