See ChangeLog.

Monotone-Parent: 66db9463cbafa20e7fce07829dca8d5d59f33165
Monotone-Revision: aa47b57f3bbc833ffcc7199f21b79f0453a1cd87

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2010-06-29T20:21:48
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Francis Lachapelle 2010-06-29 20:21:48 +00:00
parent f291320413
commit 0ff309bb15
11 changed files with 133 additions and 31 deletions

View File

@ -1,3 +1,19 @@
2010-06-29 Francis Lachapelle <flachapelle@inverse.ca>
* UI/WebServerResources/UIxCalendarProperties.js
(onLoadCalendarProperties): we now make use of tabs in the
properties window.
* UI/Scheduler/UIxCalendarProperties.m (-isPublicAccessEnabled):
new method, copied from Common/UIxAclEditor.m.
(-_basePublicCalDAVURL): new method that return the public base
URL of the calendar.
(-publicCalDavURL, -publicWebDavICSURL, -publicWebDavXMLURL): new
methods to return the various public URLs associated to the calendar.
* SoObjects/SOGo/SOGoGCSFolder.m (-publicDavURL): new method to
return the public DAV URL of the folder.
2010-06-28 Francis Lachapelle <flachapelle@inverse.ca>
* UI/Contacts/UIxContactEditor.m (-initSnapshot, -_saveSnapshot):

View File

@ -113,6 +113,7 @@
- (void) sendFolderAdvisoryTemplate: (NSString *) template;
/* DAV */
- (NSURL *) publicDavURL;
- (NSURL *) realDavURL;
- (NSDictionary *) davSQLFieldsTable;

View File

@ -1,7 +1,7 @@
/* SOGoGCSFolder.m - this file is part of SOGo
*
* Copyright (C) 2004-2005 SKYRIX Software AG
* Copyright (C) 2006-2009 Inverse inc.
* Copyright (C) 2006-2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
*
@ -419,6 +419,21 @@ static NSArray *childRecordFields = nil;
return error;
}
- (NSURL *) publicDavURL
{
NSMutableArray *newPath;
NSURL *davURL;
davURL = [self realDavURL];
newPath = [NSMutableArray arrayWithArray: [[davURL path] componentsSeparatedByString: @"/"]];
[newPath insertObject: @"public" atIndex: 3];
davURL = [[NSURL alloc] initWithScheme: [davURL scheme]
host: [davURL host]
path: [newPath componentsJoinedByString: @"/"]];
return davURL;
}
- (NSURL *) realDavURL
{
NSURL *realDavURL, *currentDavURL;

View File

@ -530,7 +530,8 @@ vtodo_class2 = "(Confidential task)";
"Show tasks" = "Show tasks";
"Links to this Calendar" = "Links to this Calendar";
"CalDAV url" = "CalDAV url";
"Authenticated User Access" = "Authenticated User Access";
"CalDAV URL" = "CalDAV URL";
"WebDAV ICS URL" = "WebDAV ICS URL";
"WebDAV XML URL" = "WebDAV XML URL";

View File

@ -530,7 +530,8 @@ vtodo_class2 = "(Tâche confidentielle)";
"Show tasks" = "Afficher les tâches";
"Links to this Calendar" = "Liens vers cet agenda";
"CalDAV url" = "Accès en CalDAV";
"Authenticated User Access" = "Accès aux utilisateurs authentifiés";
"CalDAV URL" = "Accès en CalDAV";
"WebDAV ICS URL" = "Représentation ICS en WebDAV";
"WebDAV XML URL" = "Représentation XML en WebDAV";

View File

@ -29,7 +29,7 @@
@interface UIxCalendarProperties : UIxComponent
{
SOGoAppointmentFolder *calendar;
NSString *baseCalDAVURL;
NSString *baseCalDAVURL, *basePublicCalDAVURL;
BOOL reloadTasks;
}

View File

@ -1,6 +1,6 @@
/* UIxCalendarProperties.m - this file is part of SOGo
*
* Copyright (C) 2008-2009 Inverse inc.
* Copyright (C) 2008-2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
*
@ -28,6 +28,7 @@
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserSettings.h>
#import <SOGo/SOGoSystemDefaults.h>
#import <Appointments/SOGoAppointmentFolder.h>
#import <Appointments/SOGoWebAppointmentFolder.h>
@ -41,6 +42,7 @@
{
calendar = [self clientObject];
baseCalDAVURL = nil;
basePublicCalDAVURL = nil;
reloadTasks = NO;
}
@ -50,6 +52,7 @@
- (void) dealloc
{
[baseCalDAVURL release];
[basePublicCalDAVURL release];
[super dealloc];
}
@ -186,6 +189,13 @@
return ([userLogin isEqualToString: [calendar ownerInContext: context]]);
}
- (BOOL) isPublicAccessEnabled
{
// NOTE: This method is the same found in Common/UIxAclEditor.m
return [[SOGoSystemDefaults sharedSystemDefaults]
enablePublicAccess];
}
- (BOOL) isWebCalendar
{
return ([calendar isKindOfClass: [SOGoWebAppointmentFolder class]]);
@ -253,6 +263,23 @@
return baseCalDAVURL;
}
- (NSString *) _basePublicCalDAVURL
{
NSString *davURL;
if (!basePublicCalDAVURL)
{
davURL = [[calendar publicDavURL] absoluteString];
if ([davURL hasSuffix: @"/"])
basePublicCalDAVURL = [davURL substringToIndex: [davURL length] - 1];
else
basePublicCalDAVURL = davURL;
[basePublicCalDAVURL retain];
}
return basePublicCalDAVURL;
}
- (NSString *) calDavURL
{
return [NSString stringWithFormat: @"%@/", [self _baseCalDAVURL]];
@ -268,4 +295,19 @@
return [NSString stringWithFormat: @"%@.xml", [self _baseCalDAVURL]];
}
- (NSString *) publicCalDavURL
{
return [NSString stringWithFormat: @"%@/", [self _basePublicCalDAVURL]];
}
- (NSString *) publicWebDavICSURL
{
return [NSString stringWithFormat: @"%@.ics", [self _basePublicCalDAVURL]];
}
- (NSString *) publicWebDavXMLURL
{
return [NSString stringWithFormat: @"%@.xml", [self _basePublicCalDAVURL]];
}
@end

View File

@ -13,7 +13,17 @@
<form const:href="saveProperties" name="propertiesform" id="propertiesform">
<input type="hidden" const:name="calendarID" const:id="calendarID"
var:value="calendarID"/>
<div id="propertiesView">
<div class="tabsContainer" id="propertiesTabs">
<ul>
<li target="propertiesView"><span>
<var:string label:value="Properties" /></span></li>
<li target="davLinksView"><span>
<var:string label:value="Links to this Calendar"/></span></li>
</ul>
<div class="tabs">
<div id="propertiesView" class="tab">
<!--<div id="propertiesView">-->
<fieldset>
<legend><var:string label:value="Properties"/></legend>
<div><span class="label"><var:string label:value="Name:"/></span
@ -22,12 +32,6 @@
class="textField"
var:value="calendarName"
/></span></div>
<var:if condition="isWebCalendar"
><div const:id="webCalendarUrl"><span class="label"
><var:string label:value="URL:"/></span
><span class="content" var:title="webCalendarURL"
><a var:href="webCalendarURL" target="_new"><var:string var:value="webCalendarURL"/></a>
</span></div></var:if>
<div><span class="label"><var:string
label:value="Color:"
/></span><span class="content"
@ -98,17 +102,39 @@
/><var:string label:value="Reload on login"
/></label></div></var:if>
</fieldset>
</div>
<div id="davLinksView" class="tab">
<var:if condition="isWebCalendar"
><fieldset id="webCalendarUrl">
<legend><var:string label:value="URL:"/></legend>
<div><a const:class="clickableLink" var:href="webCalendarURL" var:title="webCalendarURL"
target="_new"><var:string var:value="webCalendarURL"/></a></div>
</fieldset
></var:if>
<var:if condition="isWebCalendar" const:negate="YES"
><fieldset id="davLinks">
<legend><var:string label:value="Links to this Calendar"/></legend>
<a const:class="clickableLink" var:href="calDavURL"
><var:string label:value="CalDAV url"/></a><br/>
<a const:class="clickableLink" var:href="webDavICSURL"
><fieldset id="authenticatedLinks">
<legend><var:string label:value="Authenticated User Access"/></legend>
<div><a const:class="clickableLink" var:href="calDavURL" var:title="calDavURL"
><var:string label:value="CalDAV URL"/></a><br/>
<a const:class="clickableLink" var:href="webDavICSURL" var:title="webDavICSURL"
><var:string label:value="WebDAV ICS URL"/></a><br/>
<a const:class="clickableLink" var:href="webDavXMLURL"
><var:string label:value="WebDAV XML URL"/></a>
</fieldset></var:if>
<a const:class="clickableLink" var:href="webDavXMLURL" var:title="webDavXMLURL"
><var:string label:value="WebDAV XML URL"/></a></div>
</fieldset>
<var:if condition="isPublicAccessEnabled"
><fieldset id="publicLinks">
<legend><var:string label:value="Public Access"/></legend>
<div><a const:class="clickableLink" var:href="publicCalDavURL" var:title="publicCalDavURL"
><var:string label:value="CalDAV URL"/></a><br/>
<a const:class="clickableLink" var:href="publicWebDavICSURL" var:title="publicWebDavICSURL"
><var:string label:value="WebDAV ICS URL"/></a><br/>
<a const:class="clickableLink" var:href="publicWebDavXMLURL" var:title="publicWebDavXMLURL"
><var:string label:value="WebDAV XML URL"/></a></div>
</fieldset
></var:if
></var:if>
</div>
</div>
<div id="buttons">
<a href="#" class="button actionButton" id="okButton"

View File

@ -1,7 +1,3 @@
DIV#propertiesView
{ overflow: hidden;
padding: 5px 5px 0 5px; }
DIV
{ clear: both; }
@ -43,7 +39,10 @@ BUTTON#colorButton
height: 18px; }
DIV#buttons
{ padding: 10px;
{ position: absolute;
bottom: 5px;
right: 5px;
padding: 10px;
padding-top: 5px;
text-align: right; }
@ -53,9 +52,6 @@ INPUT#calendarSyncTag
LABEL
{ white-space: nowrap; }
#davLinks A
{ margin-left: 60px; }
#webCalendarUrl SPAN.content
{ white-space: nowrap;
overflow: hidden; }

View File

@ -1,6 +1,10 @@
/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
function onLoadCalendarProperties() {
var tabsContainer = $("propertiesTabs");
var controller = new SOGoTabsController();
controller.attachToTabsContainer(tabsContainer);
var colorButton = $("colorButton");
var calendarColor = $("calendarColor");
colorButton.setStyle({ "backgroundColor": calendarColor.value, display: "inline" });

View File

@ -94,11 +94,11 @@ TABLE
BUTTON#colorButton
{ margin-top: 2px; }
DIV#propertiesView FIELDSET
DIV#propertiesTabs FIELDSET
{ margin: 0.5em;
padding: 5px; }
DIV#propertiesView LEGEND
DIV#propertiesTabs LEGEND
{ margin-bottom: 5px; }
/* UIxMailPartICalViewer */