Package: release.debian.org
Severity: normal
User: release.debian....@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 <jo...@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 <flachape...@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 <flachape...@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 via email to