Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2016-05-06 12:08:22 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2016-05-09 09:51:25 +0300
commit3c258e88576dbc18d1ed1456a9e1bf1053463b3e (patch)
treea5b38592d35f5a026a0a1cea962db4cf42ceae38
parentaac7cc438fa534b5909422779114bdb445e340b9 (diff)
show only writable calendars
-rwxr-xr-xcss/mail.css2
-rw-r--r--js/service/davservice.js27
-rw-r--r--js/views/messageattachment.js16
3 files changed, 36 insertions, 9 deletions
diff --git a/css/mail.css b/css/mail.css
index f7ef10dd1..898615f64 100755
--- a/css/mail.css
+++ b/css/mail.css
@@ -697,7 +697,7 @@ input.submit-message,
}
.attachment-name {
display: inline-block;
- width: calc(100% - 110px);
+ width: calc(100% - 148px);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
diff --git a/js/service/davservice.js b/js/service/davservice.js
index e91dabb70..a73dfcfa2 100644
--- a/js/service/davservice.js
+++ b/js/service/davservice.js
@@ -59,14 +59,37 @@ define(function(require) {
return parseInt(t.split(' ')[1]);
}
+ function getACLFromResponse(properties) {
+ var canWrite = false;
+ var acl = properties['{DAV:}acl'];
+ if (acl) {
+ for (var k = 0; k < acl.length; k++) {
+ var href = acl[k].getElementsByTagNameNS('DAV:', 'href');
+ if (href.length === 0) {
+ continue;
+ }
+ href = href[0].textContent;
+ var writeNode = acl[k].getElementsByTagNameNS('DAV:', 'write');
+ if (writeNode.length > 0) {
+ canWrite = true;
+ }
+ }
+ }
+ properties.canWrite = canWrite;
+ }
+ ;
+
function getCalendarData(properties) {
+ getACLFromResponse(properties);
+
var data = {
displayname: properties['{DAV:}displayname'],
color: properties['{http://apple.com/ns/ical/}calendar-color'],
order: properties['{http://apple.com/ns/ical/}calendar-order'],
components: {
vevent: false
- }
+ },
+ writable: properties.canWrite
};
var components = properties['{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set'] || [];
@@ -95,7 +118,7 @@ define(function(require) {
}
if (getResponseCodeFromHTTPResponse(cal.propStat[0].status) === 200) {
var properties = getCalendarData(cal.propStat[0].properties);
- if (properties && properties.components.vevent) {
+ if (properties && properties.components.vevent && properties.writable === true) {
properties.url = cal.href;
calendars.push(new Calendar(properties));
}
diff --git a/js/views/messageattachment.js b/js/views/messageattachment.js
index 1aff1ae63..33e12465f 100644
--- a/js/views/messageattachment.js
+++ b/js/views/messageattachment.js
@@ -99,12 +99,16 @@ define(function(require) {
var _this = this;
$.when(fetchingCalendars).done(function(calendars) {
- _this.ui.attachmentImportPopover.removeClass('hidden');
- var calendarsView = new CalendarsPopoverView({
- collection: calendars
- });
- calendarsView.render();
- _this.ui.attachmentImportPopover.html(calendarsView.$el);
+ if (calendars.length > 0) {
+ _this.ui.attachmentImportPopover.removeClass('hidden');
+ var calendarsView = new CalendarsPopoverView({
+ collection: calendars
+ });
+ calendarsView.render();
+ _this.ui.attachmentImportPopover.html(calendarsView.$el);
+ } else {
+ Radio.ui.trigger('error:show', t('mail', 'No writable calendars found'));
+ }
});
$.when(fetchingCalendars).always(function() {
_this.ui.importCalendarEventButton