Bug#860977: unblock: sogo/3.2.6-2
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package sogo
Shortly after the release of 3.2.6, the SOGo upstreams published a hotfix
release "3.2.6a" with two important fixes that -2 includes. I think we should
have these two patches included in the version we're going to support. I've
been running them at $work for months (the change had been sitting in git
for ages) and they seem to cause no problems.
unblock sogo/3.2.6-2
-- System Information:
Debian Release: 9.0
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru sogo-3.2.6/debian/changelog sogo-3.2.6/debian/changelog
--- sogo-3.2.6/debian/changelog 2017-01-24 00:04:21.000000000 +0100
+++ sogo-3.2.6/debian/changelog 2017-04-11 01:52:41.000000000 +0200
@@ -1,3 +1,11 @@
+sogo (3.2.6-2) unstable; urgency=medium
+
+ * Cherry pick important fixes from the upstream 3.2.6a release.
+ - [core] fixed "include in freebusy"
+ - [web] improved ACLs handling of inactive users
+
+ -- Jordi Mallach <jordi@debian.org> Tue, 11 Apr 2017 01:52:41 +0200
+
sogo (3.2.6-1) unstable; urgency=medium
* New upstream release.
diff -Nru sogo-3.2.6/debian/patches/improve-acl-handling-of-inactive-users.patch sogo-3.2.6/debian/patches/improve-acl-handling-of-inactive-users.patch
--- sogo-3.2.6/debian/patches/improve-acl-handling-of-inactive-users.patch 1970-01-01 01:00:00.000000000 +0100
+++ sogo-3.2.6/debian/patches/improve-acl-handling-of-inactive-users.patch 2017-02-10 18:20:47.000000000 +0100
@@ -0,0 +1,152 @@
+commit d14b0b0b5e1b34dd9a407295247f7015d2728967
+Author: Francis Lachapelle <flachapelle@inverse.ca>
+Date: Thu Jan 26 12:48:21 2017 -0500
+
+ (js) Improve ACLs handling of inactive users
+
+diff --git a/NEWS b/NEWS
+index 73b834ad7..5987fda3b 100644
+--- a/NEWS
++++ b/NEWS
+@@ -1,3 +1,12 @@
++3.2.7 (2017-01-DD)
++------------------
++
++Enhancements
++ - [web] improved ACLs handling of inactive users
++
++Bug fixes
++ - [core] fixed "include in freebusy" (reverts #3354)
++
+ 3.2.6 (2017-01-23)
+ ------------------
+
+diff --git a/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox b/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox
+index 1fa3430bb..69c3bf38f 100644
+--- a/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox
++++ b/UI/Templates/AdministrationUI/UIxAdministrationAclEditor.wox
+@@ -80,12 +80,12 @@
+ size="40">{{ user.$avatarIcon }}</sg-avatar-image>
+ </span>
+ <div class="sg-tile-content">
+- <div class="sg-md-subhead"><div>{{user.cn}}</div></div>
++ <div class="sg-md-subhead"><div>{{user.$fullname()}}</div></div>
+ <div class="sg-md-body"><div>{{user.c_email}}</div></div>
+ </div>
+ <md-button class="md-icon-button md-secondary" type="button"
+ ng-click="acl.selectAllRights(user)"
+- ng-hide="user.uid != acl.selectedUid || user.$isSpecial()">
++ ng-hide="!acl.showRights(user) || user.$isSpecial()">
+ <md-icon>select_all</md-icon>
+ </md-button>
+ <md-button class="md-icon-button" type="button"
+@@ -95,7 +95,7 @@
+ </md-button>
+ </div>
+ </a>
+- <md-card-content id="AccessRightList" ng-show="user.uid == acl.selectedUid">
++ <md-card-content id="AccessRightList" ng-show="acl.showRights(user)">
+ <var:if condition="canSubscribeUsers">
+ <md-checkbox ng-model="user.isSubscribed"
+ label:arial-label="Subscribe User"
+diff --git a/UI/Templates/UIxAclEditor.wox b/UI/Templates/UIxAclEditor.wox
+index 21b8727a7..3868c4a0b 100644
+--- a/UI/Templates/UIxAclEditor.wox
++++ b/UI/Templates/UIxAclEditor.wox
+@@ -57,12 +57,12 @@
+ size="40">{{ user.$avatarIcon }}</sg-avatar-image>
+ </div>
+ <div class="sg-tile-content">
+- <div class="sg-md-subhead"><div>{{user.cn}}</div></div>
++ <div class="sg-md-subhead"><div>{{user.$fullname()}}</div></div>
+ <div class="sg-md-body"><div>{{user.c_email}}</div></div>
+ </div>
+ <md-button class="md-icon-button md-secondary" type="button"
+ ng-click="acl.selectAllRights(user)"
+- ng-hide="user.uid != acl.selectedUid || user.$isSpecial()">
++ ng-hide="!acl.showRights(user) || user.$isSpecial()">
+ <md-icon>select_all</md-icon>
+ </md-button>
+ <md-button class="md-icon-button" type="button"
+@@ -72,7 +72,7 @@
+ </md-button>
+ </div>
+ </a>
+- <md-card-content id="AccessRightList" ng-show="user.uid == acl.selectedUid">
++ <md-card-content id="AccessRightList" ng-show="acl.showRights(user)">
+ <var:if condition="canSubscribeUsers">
+ <md-checkbox ng-model="user.isSubscribed"
+ label:arial-label="Subscribe User"
+diff --git a/UI/WebServerResources/js/Administration/AdministrationAclController.js b/UI/WebServerResources/js/Administration/AdministrationAclController.js
+index 0b1a23fda..3049005c5 100644
+--- a/UI/WebServerResources/js/Administration/AdministrationAclController.js
++++ b/UI/WebServerResources/js/Administration/AdministrationAclController.js
+@@ -18,6 +18,7 @@
+ vm.selectedUid = null;
+ vm.selectUser = selectUser;
+ vm.selectAllRights = selectAllRights;
++ vm.showRights = showRights;
+ vm.removeUser = removeUser;
+ vm.getTemplate = getTemplate;
+ vm.close = close;
+@@ -56,6 +57,10 @@
+ }
+ }
+
++ function showRights(user) {
++ return vm.selectedUid == user.uid && user.rights;
++ }
++
+ function userFilter($query) {
+ return User.$filter($query, stateFolder.$acl.users, { dry: true, uid: vm.user.uid });
+ }
+diff --git a/UI/WebServerResources/js/Common/AclController.js b/UI/WebServerResources/js/Common/AclController.js
+index babbe54f4..bb0d3ccb2 100644
+--- a/UI/WebServerResources/js/Common/AclController.js
++++ b/UI/WebServerResources/js/Common/AclController.js
+@@ -24,6 +24,7 @@
+ vm.addUser = addUser;
+ vm.selectAllRights = selectAllRights;
+ vm.selectUser = selectUser;
++ vm.showRights = showRights;
+ vm.confirmation = { showing: false,
+ message: ''};
+
+@@ -86,6 +87,10 @@
+ vm.selectedUser.$rights();
+ }
+ }
++
++ function showRights(user) {
++ return vm.selectedUid == user.uid && user.rights;
++ }
+ }
+
+ angular
+diff --git a/UI/WebServerResources/js/Common/User.service.js b/UI/WebServerResources/js/Common/User.service.js
+index 7d9a27544..5d9d860da 100644
+--- a/UI/WebServerResources/js/Common/User.service.js
++++ b/UI/WebServerResources/js/Common/User.service.js
+@@ -126,12 +126,21 @@
+ };
+
+ /**
++ * @function $fullname
++ * @memberof User.prototype
++ * @return a string representing the fullname
++ */
++ User.prototype.$fullname = function() {
++ return this.cn || this.uid;
++ };
++
++ /**
+ * @function $shortFormat
+ * @memberof User.prototype
+ * @return the fullname along with the email address
+ */
+ User.prototype.$shortFormat = function(options) {
+- var fullname = this.cn || this.c_email;
++ var fullname = this.$fullname();
+ var email = this.c_email;
+ var no_email = options && options.email === false;
+ if (!no_email && email && fullname != email) {
diff -Nru sogo-3.2.6/debian/patches/revert-property-honor-include-in-busy.patch sogo-3.2.6/debian/patches/revert-property-honor-include-in-busy.patch
--- sogo-3.2.6/debian/patches/revert-property-honor-include-in-busy.patch 1970-01-01 01:00:00.000000000 +0100
+++ sogo-3.2.6/debian/patches/revert-property-honor-include-in-busy.patch 2017-02-10 18:18:34.000000000 +0100
@@ -0,0 +1,49 @@
+commit 831c1bc9801bfd176d5ea2c1a606df4965fc35b8
+Author: Francis Lachapelle <flachapelle@inverse.ca>
+Date: Thu Jan 26 11:52:58 2017 -0500
+
+ Revert "(fix) properly honor "include in freebusy"
+
+ This reverts commit eed5679068480963f0f5de9a9e784f642fbfb575.
+
+diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m
+index d688a256b..f9974047e 100644
+--- a/SoObjects/Appointments/SOGoAppointmentFolder.m
++++ b/SoObjects/Appointments/SOGoAppointmentFolder.m
+@@ -423,32 +423,26 @@ static Class iCalEventK = nil;
+ //
+ // If the user is the owner of the calendar, by default we include the freebusy information.
+ //
+-// If the user is NOT the owner of the calendar but is subscribed, by default we exclude the freebusy information.
++// If the user is NOT the owner of the calendar, by default we exclude the freebusy information.
+ //
+ // We must include the freebusy information of other users if we are actually looking at their freebusy information
+ // but we aren't necessarily subscribed to their calendars.
+ //
+ - (BOOL) includeInFreeBusy
+ {
+- NSString *userLogin, *subscriptionReference;
+ NSNumber *excludeFromFreeBusy;
++ NSString *userLogin;
++ BOOL is_owner;
+
+- BOOL is_owner, is_subscription;
+-
+ userLogin = [[context activeUser] login];
+ is_owner = [userLogin isEqualToString: self->owner];
+-
+- // We check if we're subscribed. We must NOT use here [self isSubscribed] as it'll look
+- // at the owner's settings, and not the activeUser's settings.
+- subscriptionReference = [NSString stringWithFormat: @"%@:Calendar/%@", self->owner, [self nameInContainer]];
+- is_subscription = [[[[[self->context activeUser] userSettings] objectForKey: @"Calendar"] objectForKey: @"SubscribedFolders"] containsObject: subscriptionReference];
+
+ // Check if the owner (not the active user) has excluded the calendar from her/his free busy data.
+ excludeFromFreeBusy
+ = [self folderPropertyValueInCategory: @"FreeBusyExclusions"
+ forUser: [context activeUser]];
+
+- if (is_subscription)
++ if ([self isSubscription])
+ {
+ // If the user has not yet set an include/not include fb information let's EXCLUDE it.
+ if (!excludeFromFreeBusy)
diff -Nru sogo-3.2.6/debian/patches/series sogo-3.2.6/debian/patches/series
--- sogo-3.2.6/debian/patches/series 2017-01-11 23:25:52.000000000 +0100
+++ sogo-3.2.6/debian/patches/series 2017-02-10 18:21:29.000000000 +0100
@@ -3,3 +3,5 @@
0005-Remove-build-date.patch
0006-Update-unit-test-expected-failures.patch
disable_test_rendering.patch
+improve-acl-handling-of-inactive-users.patch
+revert-property-honor-include-in-busy.patch
Reply to: