mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-26 22:05:23 +00:00
merge of '19a9cb7dca6866c4d759812496468f9d93e33225'
and '96effe6b8b81620e6321b228cbab54c6d0ff3555' Monotone-Parent: 19a9cb7dca6866c4d759812496468f9d93e33225 Monotone-Parent: 96effe6b8b81620e6321b228cbab54c6d0ff3555 Monotone-Revision: 3ebb6d8ed27fdb6ba4b35f0bfcdbc625fd8620b2 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-19T22:03:30 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -9,7 +9,9 @@
|
||||
- fixed search in message content;
|
||||
- added tooltips for toolbar buttons (English and French);
|
||||
- added checkmarks in live search options popup menus;
|
||||
- added browser detection with recommanded alternatives;
|
||||
- initial support for resizable columns in tables;
|
||||
- improved IE7 and Safari support: attendees selector;
|
||||
- countless bugfixes;
|
||||
|
||||
0.9.0-20070824
|
||||
|
||||
@@ -27,6 +27,11 @@
|
||||
|
||||
"Sorry, the user rights can not be configured for that object." = "Sorry, the user rights can not be configured for that object.";
|
||||
|
||||
"browserNotCompatible" = "We've detected that your browser version is currently not supported on this site. Our recommendation is to use Firefox. Link to download the most current version of this browser is provided bellow:";
|
||||
"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers";
|
||||
"alternativeBrowserSafari" = "Alternatively, you can also use Safari.";
|
||||
"Download" = "Download";
|
||||
|
||||
/* generic.js */
|
||||
"Unable to subscribe to that folder!"
|
||||
= "Unable to subscribe to that folder!";
|
||||
|
||||
@@ -28,6 +28,11 @@
|
||||
|
||||
"Sorry, the user rights can not be configured for that object." = "Sorry, the user rights can not be configured for that object.";
|
||||
|
||||
"browserNotCompatible" = "La version de votre navigateur Web n'est présentement pas supportée par ce site. Nous recommandons d'utiliser Firefox. Vous trouverez un lien vers la plus récente version de ce navigateur ci-dessous:";
|
||||
"alternativeBrowsers" = "Comme alternative, vous pouvez aussi utiliser les navigateurs suivants:";
|
||||
"alternativeBrowserSafari" = "Comme alternative, vous pouvez aussi utiliser Safari.";
|
||||
"Download" = "Télécharger";
|
||||
|
||||
/* generic.js */
|
||||
"Unable to subscribe to that folder!" = "Impossible de s'abonner à ce dossier.";
|
||||
"You cannot subscribe to a folder that you own!" = "Impossible de vous abonner à un dossier qui vous appartient.";
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#define UIXPAGEFRAME_H
|
||||
|
||||
#import <SOGoUI/UIxComponent.h>
|
||||
#import <NGObjWeb/WEClientCapabilities.h>
|
||||
|
||||
@interface WOComponent (PopupExtension)
|
||||
|
||||
@@ -56,6 +57,10 @@
|
||||
- (void) setToolbar: (NSString *) newToolbar;
|
||||
- (NSString *) toolbar;
|
||||
|
||||
- (BOOL) isBrowserCompatible;
|
||||
- (BOOL) isIE7Compatible;
|
||||
- (BOOL) isMac;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* UIXPAGEFRAME_H */
|
||||
|
||||
@@ -258,4 +258,44 @@
|
||||
return toolbar;
|
||||
}
|
||||
|
||||
/* browser/os identification */
|
||||
|
||||
- (BOOL) isCompatibleBrowser
|
||||
{
|
||||
WEClientCapabilities *cc;
|
||||
|
||||
cc = [[context request] clientCapabilities];
|
||||
|
||||
//NSLog(@"Browser = %@", [cc description]);
|
||||
NSLog(@"User agent = %@", [cc userAgent]);
|
||||
//NSLog(@"Browser major version = %i", [cc majorVersion]);
|
||||
|
||||
return (
|
||||
([[cc userAgentType] isEqualToString: @"IE"] && [cc majorVersion] >= 7) ||
|
||||
([[cc userAgentType] isEqualToString: @"Mozilla"] && [cc majorVersion] >= 5) ||
|
||||
([[cc userAgentType] isEqualToString: @"Safari"] && [cc majorVersion] >= 4)
|
||||
);
|
||||
}
|
||||
|
||||
- (BOOL) isIE7Compatible
|
||||
{
|
||||
WEClientCapabilities *cc;
|
||||
|
||||
cc = [[context request] clientCapabilities];
|
||||
|
||||
return ([cc isWindowsBrowser] &&
|
||||
([[cc userAgent] rangeOfString: @"NT 5.1"].location != NSNotFound ||
|
||||
[[cc userAgent] rangeOfString: @"NT 6"].location != NSNotFound));
|
||||
}
|
||||
|
||||
- (BOOL) isMac
|
||||
{
|
||||
WEClientCapabilities *cc;
|
||||
|
||||
cc = [[context request] clientCapabilities];
|
||||
|
||||
return [cc isMacBrowser];
|
||||
}
|
||||
|
||||
|
||||
@end /* UIxPageFrame */
|
||||
|
||||
@@ -221,6 +221,11 @@ static NSString *defaultModule = nil;
|
||||
date = [NSCalendarDate calendarDate];
|
||||
[cookie setExpires: [date yesterday]];
|
||||
[response addCookie: cookie];
|
||||
|
||||
[response setHeader: date forKey: @"Last-Modified"];
|
||||
[response setHeader: @"no-store, no-cache, must-revalidate, max-age=0" forKey: @"Cache-Control"];
|
||||
[response setHeader: @"post-check=0, pre-check=0" forKey: @"Cache-Control"];
|
||||
[response setHeader: @"no-cache" forKey: @"Pragma"];
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@
|
||||
{
|
||||
NSArray *calendars;
|
||||
|
||||
calendars = [[self calendarList] valueForKey: @"folder"];
|
||||
calendars = [[self calendarList] valueForKey: @"nameInContainer"];
|
||||
|
||||
return [calendars componentsJoinedByString: @","];
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
/><var:string value="primaryEmail" escapeHTML="NO"
|
||||
/><var:string value="secondaryEmail" escapeHTML="NO"
|
||||
/><var:string value="screenName" escapeHTML="NO"
|
||||
/><var:string value="preferredTel" escapeHTML="NO"
|
||||
/><var:string value="preferredAddress" escapeHTML="NO"
|
||||
/></div
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
xmlns:const="http://www.skyrix.com/od/constant"
|
||||
xmlns:rsrc="OGo:url"
|
||||
xmlns:label="OGo:label"
|
||||
><var:string var:value="doctype" const:escapeHTML="NO" />
|
||||
><var:string var:value="doctype" const:escapeHTML="NO"/>
|
||||
<form id="connectForm" var:href="connectURL">
|
||||
<div id="loginScreen">
|
||||
<img rsrc:src="lori-login.jpg"/><br/><br/>
|
||||
<img id="splash" rsrc:src="lori-login.jpg"/><br/><br/>
|
||||
<label><var:string label:value="Login:"/><br/>
|
||||
<input class="textField" id="userName" name="userName"
|
||||
type="text" var:value="userName" /></label><br/>
|
||||
@@ -21,6 +21,6 @@
|
||||
<input class="button" id="submit" name="submit" type="submit" label:value="Connect" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<img id="preparedAnimation" rsrc:src="busy.gif"/>
|
||||
</form
|
||||
><img id="preparedAnimation" rsrc:src="busy.gif"/>
|
||||
</var:component>
|
||||
|
||||
@@ -33,8 +33,9 @@
|
||||
/></var:if-ie>
|
||||
</head>
|
||||
|
||||
<body var:class="bodyClasses">
|
||||
<script type="text/javascript">
|
||||
<body var:class="bodyClasses"
|
||||
><var:if condition="isCompatibleBrowser"
|
||||
><script type="text/javascript">
|
||||
var ApplicationBaseURL = '<var:string value="applicationPath" />';
|
||||
var ResourcesURL = '/SOGo.woa/WebServerResources';
|
||||
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
|
||||
@@ -92,6 +93,23 @@
|
||||
<div class="pageContent"
|
||||
><var:component-content
|
||||
/></div>
|
||||
</var:if>
|
||||
<var:if condition="isCompatibleBrowser" const:negate="YES">
|
||||
<div id="loginScreen">
|
||||
<img id="splash" rsrc:src="lori-login.jpg"/><br/><br/>
|
||||
<p><var:string label:value="browserNotCompatible"/></p>
|
||||
<p class="browser"><a href="http://www.getfirefox.com/"><img rsrc:src="browser_firefox.gif"/><var:string label:value="Download"/> Firefox</a></p>
|
||||
<var:if condition="isIE7Compatible">
|
||||
<p><var:string label:value="alternativeBrowsers"/></p>
|
||||
<p class="browser"><a href="http://www.microsoft.com/ie/download/"><img rsrc:src="browser_ie.gif"/><var:string label:value="Download"/> Internet Explorer 7</a></p>
|
||||
<p class="browser"><a href="http://www.apple.com/safari/download/"><img rsrc:src="browser_safari.gif"/><var:string label:value="Download"/> Safari 3</a></p>
|
||||
</var:if>
|
||||
<var:if condition="isMac">
|
||||
<p><var:string label:value="alternativeBrowserSafari"/></p>
|
||||
<p class="browser"><a href="http://www.apple.com/safari/download/"><img rsrc:src="browser_safari.gif"/><var:string label:value="Download"/> Safari 3</a></p>
|
||||
</var:if>
|
||||
</div>
|
||||
</var:if>
|
||||
<noscript>
|
||||
<div class="javascriptPopupBackground">
|
||||
</div>
|
||||
|
||||
@@ -39,8 +39,8 @@ DIV#contactsListContent
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 16em;
|
||||
overflow: hidden;
|
||||
overflow-y: auto; }
|
||||
overflow: scroll;
|
||||
overflow-x: hidden; }
|
||||
|
||||
.aptview_text
|
||||
{
|
||||
@@ -108,8 +108,7 @@ table.titletable td.titlecell SELECT
|
||||
}
|
||||
|
||||
DIV#contactFoldersList
|
||||
{
|
||||
position: absolute;
|
||||
{ position: absolute;
|
||||
top: 6em;
|
||||
left: 0px;
|
||||
width: 15em;
|
||||
@@ -130,8 +129,11 @@ UL#contactFolders
|
||||
list-style-image: none;
|
||||
clear: both;
|
||||
cursor: default;
|
||||
color: #000;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
position: absolute; /* required for Safari & IE */
|
||||
top: 53px; /* leave space for the mini addressbook */
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0px;
|
||||
@@ -141,8 +143,7 @@ UL#contactFolders
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
-moz-border-top-colors: #9c9a94 #000;
|
||||
-moz-border-left-colors: #9c9a94 #000;
|
||||
overflow: auto; }
|
||||
-moz-border-left-colors: #9c9a94 #000; }
|
||||
|
||||
DIV#contactFoldersList LI
|
||||
{
|
||||
@@ -214,7 +215,8 @@ DIV#contactView A
|
||||
|
||||
DIV#contactView H3.contactCardTitle
|
||||
{ display: block;
|
||||
margin: .2em 0px;
|
||||
margin: 0px;
|
||||
padding: .2em 0px;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
width: 100%;
|
||||
|
||||
@@ -614,6 +614,7 @@ function configureDragHandles() {
|
||||
handle.addInterface(SOGoDragHandlesInterface);
|
||||
handle.leftBlock=$("contactFoldersList");
|
||||
handle.rightBlock=$("rightPanel");
|
||||
handle.leftMargin = 100;
|
||||
}
|
||||
|
||||
handle = $("rightDragHandle");
|
||||
|
||||
@@ -33,8 +33,7 @@ DIV#leftPanel
|
||||
}
|
||||
|
||||
DIV#rightPanel
|
||||
{
|
||||
position: absolute;
|
||||
{ position: absolute;
|
||||
top: 5.5em;
|
||||
left: 15em;
|
||||
right: 0px;
|
||||
@@ -42,8 +41,7 @@ DIV#rightPanel
|
||||
margin: 0px;
|
||||
margin-left: 5px;
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
overflow: hidden; }
|
||||
|
||||
/* top list */
|
||||
DIV#mailboxContent
|
||||
@@ -54,8 +52,8 @@ DIV#mailboxContent
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
height: 15.5em;
|
||||
overflow: hidden;
|
||||
overflow-y: auto; }
|
||||
overflow: scroll;
|
||||
overflow-x: hidden; }
|
||||
|
||||
DIV#messageContent
|
||||
{ position: absolute;
|
||||
|
||||
@@ -15,14 +15,13 @@ DIV#loginScreen
|
||||
padding: 5px;
|
||||
border: 2px solid transparent;
|
||||
width: 200px;
|
||||
height: 315px;
|
||||
-moz-border-top-colors: #efebe7 #fff;
|
||||
-moz-border-left-colors: #efebe7 #fff;
|
||||
-moz-border-right-colors: #000 #9c9a94 transparent;
|
||||
-moz-border-bottom-colors: #000 #9c9a94 transparent;
|
||||
}
|
||||
|
||||
DIV#loginScreen IMG
|
||||
IMG#splash
|
||||
{ border: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
@@ -46,3 +45,15 @@ DIV#loginButton IMG#progressIndicator
|
||||
border: 0px none;
|
||||
margin-top: 5px;
|
||||
margin-left: 5px; }
|
||||
|
||||
P.browser
|
||||
{ background-color: #fff;
|
||||
border-top: 1px solid #888;
|
||||
border-left: 1px solid #888;
|
||||
border-right: 1px solid #eee;
|
||||
border-bottom: 1px solid #eee;
|
||||
line-height: 32px; }
|
||||
|
||||
P.browser img
|
||||
{ padding: 2px;
|
||||
vertical-align: middle; }
|
||||
@@ -20,6 +20,13 @@ DIV#freeBusyView
|
||||
-moz-border-top-colors: #9c9a94 #000;
|
||||
-moz-border-left-colors: #9c9a94 #000; }
|
||||
|
||||
TABLE#freeBusy
|
||||
{ border-collapse: collapse;
|
||||
table-layout: auto; }
|
||||
|
||||
TABLE#freeBusy THEAD TH
|
||||
{ white-space: nowrap; }
|
||||
|
||||
TABLE#freeBusy TD,
|
||||
TABLE#freeBusy TH
|
||||
{ padding: 0px;
|
||||
@@ -56,14 +63,14 @@ TABLE#freeBusy TR.freeBusyHeader2 TH,
|
||||
TABLE#freeBusy TR.freeBusyHeader3 TH
|
||||
{ text-align: left;
|
||||
color: #777;
|
||||
background: #fff;
|
||||
border-collapse: collapse; }
|
||||
background: #fff; }
|
||||
|
||||
TABLE#freeBusy TR.freeBusyHeader2 TH
|
||||
{ width: 6em; }
|
||||
{ padding-right: 2em; }
|
||||
|
||||
TABLE#freeBusy TR.freeBusyHeader3 TH
|
||||
{ border-bottom: 1px solid #cecbff; }
|
||||
{ border-left: 1px solid #fff;
|
||||
border-bottom: 1px solid #cecbff; }
|
||||
|
||||
TABLE#freeBusy TR.attendeeModel
|
||||
{ display: none; }
|
||||
@@ -84,6 +91,7 @@ TABLE#freeBusy TD.noFreeBusy
|
||||
SPAN.freeBusyZoneElement
|
||||
{ display: block;
|
||||
float: left;
|
||||
clear: right;
|
||||
width: 25%;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
|
||||
@@ -268,9 +268,9 @@ function setSlot(tds, nbr, status) {
|
||||
var td = tds[i];
|
||||
var spans = $(td).childNodesWithTag("span");
|
||||
if (status == '2')
|
||||
spans[spannbr].addClassName("maybe-busy");
|
||||
$(spans[spannbr]).addClassName("maybe-busy");
|
||||
else
|
||||
spans[spannbr].addClassName("busy");
|
||||
$(spans[spannbr]).addClassName("busy");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,7 +282,7 @@ function updateFreeBusyData(http) {
|
||||
var tds = node.parentNode.parentNode.cells;
|
||||
for (var i = 0; i < slots.length; i++) {
|
||||
if (slots[i] != '0')
|
||||
setSlot(tds, i, slots[i]);
|
||||
setSlot(tds, i, slots[i]);
|
||||
}
|
||||
}
|
||||
document.contactFreeBusyAjaxRequest = null;
|
||||
@@ -502,14 +502,14 @@ function prepareAttendees() {
|
||||
for (var i = 0; i < attendeesNames.length; i++) {
|
||||
var tr = body.insertRow(i);
|
||||
var td = document.createElement("td");
|
||||
td.addClassName("attendees");
|
||||
$(td).addClassName("attendees");
|
||||
var input = document.createElement("input");
|
||||
var value = "";
|
||||
if (attendeesNames[i].length > 0)
|
||||
value += attendeesNames[i] + " ";
|
||||
value += "<" + attendeesEmails[i] + ">";
|
||||
input.value = value;
|
||||
input.addClassName("textField");
|
||||
$(input).addClassName("textField");
|
||||
input.setAttribute("modified", "0");
|
||||
tr.appendChild(td);
|
||||
td.appendChild(input);
|
||||
|
||||
@@ -74,13 +74,7 @@ function onChangeCalendar(event) {
|
||||
var form = document.forms["editform"];
|
||||
var urlElems = form.getAttribute("action").split("/");
|
||||
var choice = calendars[this.value];
|
||||
var ownerLogin;
|
||||
if (choice.indexOf(":") > -1)
|
||||
ownerLogin = choice.split(":")[0];
|
||||
else
|
||||
ownerLogin = UserLogin;
|
||||
urlElems[urlElems.length-4] = ownerLogin;
|
||||
|
||||
urlElems[urlElems.length-3] = choice;
|
||||
form.setAttribute("action", urlElems.join("/"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user