2007-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+ -newStartDate]): fix the handling of the component start date
+ depending on the "hm" and the "day" parameters.
+
+ * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
+ -roleOfUser:uidinContext:context]): set role of current user to
+ "Assistant" if the object that is accessed is "freebusy.ifb".
+
* SoObjects/Appointments/SOGoAppointmentFolder.m
([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): method
moved from UI/Scheduler/UIxCalView:calendarFolderForUID:.
NSString *aptUID;
aptUID = [[self newApt] uid];
- return [NSString stringWithFormat:@"%@/Calendar/%@/view?tab=participants",
+ return [NSString stringWithFormat:@"%@/Calendar/%@/edit?mail-invitation=yes",
[self homePageURL],
aptUID];
}
return davPermissions;
}
+
- (NSArray *) DAVPermissionsForRole: (NSString *) role
{
return [self DAVPermissionsForRoles: [NSArray arrayWithObject: role]];
return obj;
}
+/* FIXME: here is a vault of hackish ways to gain access to subobjects by
+ granting ro access to the homepage depending on the subobject in question.
+ This is wrong and dangerous. */
- (NSString *) roleOfUser: (NSString *) uid
inContext: (WOContext *) context
{
|| [roles containsObject: SOGoRole_Delegate])
role = SOGoRole_Assistant;
}
+ else if ([objectName isEqualToString: @"freebusy.ifb"])
+ role = SOGoRole_Assistant;
}
return role;
"Next slot" = "Next slot";
"Previous hour" = "Previous hour";
"Next hour" = "Next hour";
+
+"closeThisWindowMessage" = "Thank you! You may now close this window.";
"Next slot" = "Période suivante";
"Previous hour" = "Heure précédente";
"Next hour" = "Heure suivante";
+
+"closeThisWindowMessage" = "Merci! Vous pouvez maintenant fermer cette fenêtre.";
{
now = [NSCalendarDate calendarDate];
[now setTimeZone: [[self clientObject] userTimeZone]];
- if (!([[now hour: 8 minute: 0] earlierDate: newStartDate] == newStartDate))
+ if ([now isDateOnSameDay: newStartDate])
{
hour = [now hourOfDay];
if (hour < 8)
else
newStartDate = now;
}
+ else
+ newStartDate = [newStartDate hour: 8 minute: 0];
}
return newStartDate;
><var:component-content
/></div>
<noscript>
- <div id="noJavascriptError">
+ <div class="javascriptPopupBackground">
</div>
- <div class="noJavascriptErrorMessage">
+ <div class="javascriptMessagePseudoWindow noJavascriptErrorMessage">
<var:string label:value="noJavascriptError"
/><br /><br
/><a class="button" var:href="page.context.uri"
return false;
}
+function closeInvitationWindow() {
+ var closeDiv = document.createElement("div");
+ closeDiv.addClassName("javascriptPopupBackground");
+ var closePseudoWin = document.createElement("div");
+ closePseudoWin.addClassName("javascriptMessagePseudoWindow");
+ closePseudoWin.style.top = "0px;";
+ closePseudoWin.style.left = "0px;";
+ closePseudoWin.style.right = "0px;";
+ closePseudoWin.appendChild(document.createTextNode(labels["closeThisWindowMessage"].decodeEntities()));
+ document.body.appendChild(closeDiv);
+ document.body.appendChild(closePseudoWin);
+}
+
function modifyEventCallback(http) {
if (http.readyState == 4) {
if (http.status == 200) {
log("closing window...?");
- window.close();
+ if (queryParameters["mail-invitation"] == "yes")
+ closeInvitationWindow();
+ else
+ window.close();
}
else {
log("showing alert...");
background-position: 2px 2px;
color: #aaa; }
-DIV#noJavascriptError
+DIV.javascriptPopupBackground
{ position: absolute;
background: #999;
-moz-opacity: 0.6;
bottom: 0px;
text-align: center; }
-DIV.noJavascriptErrorMessage
+DIV.javascriptMessagePseudoWindow
{ position: absolute;
z-index: 2;
border-top: 2px solid #fffffb;
-moz-border-bottom-colors: ThreeDDarkShadow ThreeDShadow transparent;
-moz-border-right-colors: ThreeDDarkShadow ThreeDShadow transparent;
padding: 1em;
- top: 10em;
- left: 17em;
- width: 24em;
margin: 0px auto;
- background: #fff;
-moz-opacity: 1.0;
color: #000;
background: #dedede; }
+DIV.noJavascriptErrorMessage
+{ top: 10em;
+ left: 17em;
+ width: 24em; }
+
DIV.noJavascriptErrorMessage A
{ float: right;
margin: 0px auto; }