Closed
Bug 301624
Opened 20 years ago
Closed 19 years ago
Problem in special timezones - Calendar not creating calendars/events/tasks
Categories
(Calendar :: Internal Components, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: sebo.moz, Assigned: jminta)
References
Details
Attachments
(2 files, 2 obsolete files)
6.56 KB,
patch
|
mvl
:
first-review+
|
Details | Diff | Splinter Review |
6.85 KB,
patch
|
jminta
:
first-review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050719 Firefox/1.0+
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050720 Mozilla Sunbird/0.2+
I use Windows XP Professional German version 2002 SP2.
Having the Timezone set to GMT+01:00 (Amsterdam, Berlin,...) Calendar is not
able to create anything but UI is showing up. JS Console says:
Error: m has no properties
Source File: chrome://calendar/content/calendarUtils.js
Line: 181
When typing: (new Date()).toString()
the following is returned: Mon Jul 18 2005 10:00:41 GMT+0200
Note: I figured out that behaviour is as expected whenever a timezone is
selected that returnes additional information in brackets like timezone
GMT+01:00 Bruessel, Kopenhagen, ... The returned String in the JS Console:
Mon Jul 18 2005 10:00:41 GMT+0200 (Romanische Sommerzeit)
I hope this helps,
Sebo
Reproducible: Always
Steps to Reproduce:
1.select timezone GMT+01:00 (Amsterdam, Berlin, ...)
2.start Sunbird
3.try to create calendar
Actual Results:
nothing is created, also events and tasks cannot be created.
Expected Results:
create calendar
Assignee | ||
Comment 1•20 years ago
|
||
This patch takes a different approach to guessing the TZ of the computer. It
checks the offset during both the winter and summer and then tries to match
that to something in the ical TZ database. It doesn't usually gets things
right (It puts me in the Canary Islands instead of Dublin, but at least the
weather's better there.) but the errors usually have no practical differences.
The advantage is that it doesn't require a TZ name at all, merely the offsets,
which can be grabbed by looking for + or - instead of using the .match()
function that seems to have caused this bug.
Assignee: shaver → jminta
Status: UNCONFIRMED → ASSIGNED
Attachment #190302 -
Flags: first-review?(mvl)
Comment 2•20 years ago
|
||
I guess this patch is better then we have now. But for me, it guesses i'm in
'Africa/Ceuta'. Which really isn't true, but happen to use western european time.
I'm not sure if there is a better way. On my linux box, you could look at
/etc/sysconfig/clock but tha tmight be fedora or gnome specific. On the other
hand, it will increase the number of right guesses we make, even if it doesn't
help windows.
Another way to guess might be to look at the used locale. If i would use a dutch
build, it's likely that i am in the Europe/Amsterdam timezone. I think this
guess is easier to implement then the /etc/sysconfig/clock guess. Just add a
line to a sctringbundle.
Assignee | ||
Comment 3•20 years ago
|
||
(In reply to comment #2)
calendarUtils.js reads:
38 /*
39 * Utility functions used by all calendar hosts (Sunbird, Lightning, etc.).
40 * Functions in this file must _not_ depend on functions in any other files.
41 */
Since Lightning uses this too, the stringbundles solution doesn't really seem
feasible at this point, since lightning has no l10n whatsoever. (Bug 298348
doesn't block Lighting 0.1, so I don't want it to block Sunbird 0.3a1) A third
alterntive would be to put the previously used toString.match() in a try. If
we can grab a 3-letter tz name, then try searching through the TZs with that as
a condition as well. That would (hopefully) increase our correct guesses
substantially. (I'm also working on wiring up the actual TZ preferences
dialog, so it should be easy for people to correct a wrong guess soon.)
Comment 4•20 years ago
|
||
Maybe it can't depend on external things, that doesn't mean it can use them if
available. :)
Using the timezone name won't help in my case, as Africa/Ceute also uses CEST/EST.
(And that guess is wrong for >99% of the european users)
Assignee | ||
Comment 5•20 years ago
|
||
OK, this time I'm using a combination of most of the options discussed. If we
can find a string-bundle identifier, we check that first. If we can get a
tz-short-name we also use that as a condition. Since we're using short-names,
it now gets Dublin correct (IST in summer) and the string-bundle option should
get Amsterdam correct if you update the dutch locale. This is a lot of work
just to guess the TZ, but I don't see a better way.
Assignee | ||
Updated•20 years ago
|
Attachment #190302 -
Attachment is obsolete: true
Attachment #190397 -
Flags: first-review?(mvl)
Assignee | ||
Updated•20 years ago
|
Attachment #190302 -
Flags: first-review?(mvl)
Comment 6•20 years ago
|
||
Comment on attachment 190397 [details] [diff] [review]
guess TZs better v2
I guess this is as good as it gets with out hude timezone list. Having just one
entry for western europe (for example) would make guessing a lot easier.
I have some nits though: With this patch i get 2 js strict warnings. (icssrv,
daylightName and theTZ are not declared as var)
Also, you need to add a space before a (. (like in: + if(probableTZ))
Assignee | ||
Comment 7•19 years ago
|
||
Sorry about that. v3 should fix the nits.
How do I enable js-strict warnings on Sunbird?
(jsBranch.setBoolPref("options.strict",true) didn't work.)
Attachment #190397 -
Attachment is obsolete: true
Attachment #190618 -
Flags: first-review?(mvl)
Assignee | ||
Updated•19 years ago
|
Attachment #190397 -
Flags: first-review?(mvl)
Comment 8•19 years ago
|
||
Comment on attachment 190618 [details] [diff] [review]
guess TZs better v3
>+ try {
>+ var mSummer = summerDate.match(/[^(]* ([^ ]*) \(([^)]+)\)/);
>+ var mWinter = winterDate.match(/[^(]* ([^ ]*) \(([^)]+)\)/);
>+ summerTZname = mSummer[2];
>+ winterTZname = mWinter[2];
>+ }
>+ catch(ex) { } //Oh well, one less piece of information...
I think a if(mSummer) check or something is better then a try block. Also, the
m prefix is generally for module vars, while mSummer here is very much local.
Please use a different var.
with those fixed, r=mvl
Attachment #190618 -
Flags: first-review?(mvl) → first-review+
Comment 9•19 years ago
|
||
How do I install a patch on a winxp????
Assignee | ||
Comment 10•19 years ago
|
||
uses if for the string matching, and renamed the variable.
Assignee | ||
Comment 11•19 years ago
|
||
Comment on attachment 191328 [details] [diff] [review]
guess TZs better v3.1
carrying over r+ from mvl
Attachment #191328 -
Flags: first-review+
Comment 12•19 years ago
|
||
patch checked in
Status: ASSIGNED → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Comment 13•19 years ago
|
||
Comment on attachment 191328 [details] [diff] [review]
guess TZs better v3.1
Nits:
1. Javascript dates are 0-based: 0 is january, 12 rolls over to january. I
suspect you meant to get dates near the solstices, but it's off by a month.
2. July is only a summer month in the north, not in the southern hemisphere or
the tropics, so
"summerDate" and "summerData" are misleading variable names.
Suggest "julyDate" and "julyData"; "januaryDate" and "januaryData". (Or
juneDate/juneData and decemberDate/decemberData after you fix the dates to the
solstices.)
Assignee | ||
Comment 14•19 years ago
|
||
*** Bug 301572 has been marked as a duplicate of this bug. ***
You need to log in
before you can comment on or make changes to this bug.
Description
•