[kronolith] Can't add or edit events in dynamic view Horde webmail 5.2.2, Kronolith 4.2.2

Eric Van Bocxlaer evb at ping.be
Thu Oct 30 18:10:48 UTC 2014


Citeren Jan Schneider <jan at horde.org>:

> Zitat von Eric Van Bocxlaer <evb at ping.be>:
>
>> Citeren Eric Van Bocxlaer <evb at ping.be>:
>>
>>> Citeren Jan Schneider <jan at horde.org>:
>>>
>>>> Zitat von Eric Van Bocxlaer <evb at ping.be>:
>>>>
>>>>> Citeren Jan Schneider <jan at horde.org>:
>>>>>
>>>>>> Zitat von Eric Van Bocxlaer <evb at ping.be>:
>>>>>>
>>>>>>>> Zitat von Eric Van Bocxlaer <evb at ping.be>:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> For some time now I can't edit or add events in the dynamic view. No
>>>>>>>>> problem in editing or adding in the simple view!
>>>>>>>>>
>>>>>>>>> So I did some debug in FireBug and the reason is a undefined
>>>>>>>>> 'date_format' in the javascript file kronolith.js, function getDate:
>>>>>>>>>  getDate: function(what) {
>>>>>>>>>      var dateElm, timeElm, date, time;
>>>>>>>>>      if (what == 'start') {
>>>>>>>>>          dateElm = 'kronolithEventStartDate';
>>>>>>>>>          timeElm = 'kronolithEventStartTime';
>>>>>>>>>      } else {
>>>>>>>>>          dateElm = 'kronolithEventEndDate';
>>>>>>>>>          timeElm = 'kronolithEventEndTime';
>>>>>>>>>      }
>>>>>>>>>      date = Date.parseExact($F(dateElm), Kronolith.conf.date_format)
>>>>>>>>>          || Date.parse($F(dateElm));
>>>>>>>>>      if (date) {
>>>>>>>>>          time = Date.parseExact($F(timeElm),
>>>>>>>>> Kronolith.conf.time_format);
>>>>>>>>>          if (!time) {
>>>>>>>>>              time = Date.parse($F(timeElm));
>>>>>>>>>          }
>>>>>>>>>          if (time) {
>>>>>>>>>              date.setHours(time.getHours());
>>>>>>>>>              date.setMinutes(time.getMinutes());
>>>>>>>>>          }
>>>>>>>>>      }
>>>>>>>>>      return date;
>>>>>>>>>  },
>>>>>>>>>
>>>>>>>>> Kronolith.conf.date_format is for some reason undefined.
>>>>>>>>> When I look via FireBug into the object 'Kronolith' I see two child
>>>>>>>>> objects 'conf' and 'text'. In the child object 'conf' I see a
>>>>>>>>> defined 'time_format', but no 'date_format'.
>>>>>>>>> When I define via FireBug a 'date_format', everything is working, I
>>>>>>>>> can add and edit events in the dynamic view!
>>>>>>>>>
>>>>>>>>> I searched but did not (yet) found where the configuration
>>>>>>>>> information is read and putted in the 'Kronolith' object?
>>>>>>>>> Can someone guid me to find the correct code?
>>>>>>>>
>>>>>>>> See below, it's probably the same problem, because the date format
>>>>>>>> depends on the current locale.
>>>>>>>>
>>>>>>>>> During my search I verified the global settings of Horde for the
>>>>>>>>> date_format, date_format_mini and the time_format. There are all set!
>>>>>>>>> Some remark though, when I take these lists I can see entries, but
>>>>>>>>> also some empty lines. The filled in lines and the empty lines are
>>>>>>>>> corresponding with the enum array in prefs.php.
>>>>>>>>> Example date_format list:
>>>>>>>>> 09/20/14
>>>>>>>>> 2014-09-20
>>>>>>>>> 20/09/2014
>>>>>>>>> Saturday 20 September 2014
>>>>>>>>> Saturday, September 20, 2014
>>>>>>>>> Saturday, 20. September 2014
>>>>>>>>> Saturday, 20 September 2014
>>>>>>>>> empty line
>>>>>>>>> empty line
>>>>>>>>> empty line
>>>>>>>>> empty line
>>>>>>>>> empty line
>>>>>>>>> Sat 20 Sep 2014
>>>>>>>>> Sat 09/20/14
>>>>>>>>> Sat 2014-09-20
>>>>>>>>> The rest of the lines are empty
>>>>>>>>>
>>>>>>>>> Why these empty lines and why the weekdays/months are not in dutch?
>>>>>>>>> Everything else is translated but not the weekdays and months?
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Some of those entries depend on your current locale. If you don't see
>>>>>>>> expected date strings, make sure you have the system locales for your
>>>>>>>> current language installed.
>>>>>>>>
>>>>>>>
>>>>>>> I verified the system locale on my server, it was correctly set to
>>>>>>> 'Dutch (Belgium)' the same as my selected language when I log in
>>>>>>> Horde webmail and the same as the selected language in the horde
>>>>>>> global settings.
>>>>>>
>>>>>> It doesn't matter what you set the locale to, if the locale isn't
>>>>>> installed.
>>>>>>
>>>>>>> I found a file Registry.php, function setLanguage. I added some php
>>>>>>> error logging and found that the language
>>>>>>> returned from this function is 'nl_BE'.
>>>>>>
>>>>>> Then this is the preferred language set by your browser, but it's not
>>>>>> supported by Horde and maybe not by your system either (see above).
>>>>>> I'm not even sure how the language got so far in the code, other than
>>>>>> on the login screen, because logging in should only be possible with
>>>>>> one of the languages we actually support.
>>>>>>
>>>>>>> Where can I start to debug this thing?
>>>>>>> The server is a windows system running apache24 and horde webmail
>>>>>>> installed via pear.
>>>>>>
>>>>>> Well, that's an important information too. Windows' locale support
>>>>>> isn't actually very good, so some date formats may not be available to
>>>>>> you at all. And frankly, I haven't tested a recent Horde version on a
>>>>>> Windows system in years, so I'm not even sure if it still works.
>>>>>>
>>>>>
>>>>> I'm using without any problem horde on windows now for years.
>>>>> Sometimes after an upgrade there is some little problem, but I
>>>>> learned to wait and allmost the problem is gone with a next upgrade.
>>>>> Sometimes it is blocking and then I use RoundCube as emergency
>>>>> system ;-)
>>>>> The problem described above is now already for some time in the
>>>>> system and upgrades are not fixing the problem.
>>>>> So I decided to do some debugging.
>>>>>
>>>>> There is no problem in the static simple view, it only appears in
>>>>> the dynamic view.
>>>>> So I don't understand: don't you use 'locales' in the static simple view?
>>>>
>>>> The difference is we don't use the date format from the preferences in
>>>> dynamic view, because we must be able to re-parse the entered dates
>>>> from free-text fields. We use the default date format of the current
>>>> locale in dynamic view.
>>>>
>>>>> Can you point me to the code where the object
>>>>> 'Kronolith.conf.date_format' in the javascript file Kronolith.js is
>>>>> initialized.
>>>>> If I know where to debug I can maybe repair the problem apparently
>>>>> appearing only on Windows systems and only in the dynamic view.
>>>>
>>>> kronolith/lib/Ajax.php, Kronolith_Ajax::_addBaseVars().
>>>
>>> Like said, I'm running horde with apache24 on a windows server.
>>> That horde isn't tested under windows should be mentionned on the
>>> www.horde.org website so that users are warned!
>>>
>>> I found two problems under windows causing the above described problems:
>>> 1. the php function nl_langinfo is used, but this function isn't
>>> implemented on windows platforms
>>> 2. the php function setlocale is used, but the locale strings used are
>>> not the same on windows platforms
>>>
>>> For the first problem a workaround exists by simulating the missing
>>> function. Paul Kemper did write a 'windows' nl_langinfo function. This
>>> function is too long to include here, but I can send it if requested.
>>> There was still a bug in his function for the D_FMT locale and
>>> strftime parameter '%e'. The latter isn't implemented on windows, so
>>> it must be replaced by '%#d'.
>>> And because of this the function translateFormat in Datejs.php
>>> (C:\php\pear\Horde\Core\Script\Package\Datejs.php) must be adapted for
>>> the '%e' translation, no leading space on windows:
>>>     /**
>>>      * Translates date format strings from strftime to datejs.
>>>      *
>>>      * @param string $format  A date format string in strftime syntax.
>>>      *
>>>      * @return string  The date format string in datejs format.
>>>      */
>>>     static public function translateFormat($format)
>>>     {
>>>         $from = array('%e', '%-d', '%d', '%a', '%A', '%-m', '%m',
>>> '%h', '%b', '%B', '%y', '%Y');
>>>         $to = array('d', 'd', 'dd', 'ddd', 'dddd', 'M', 'MM', 'MMM',
>>> 'MMM', 'MMMM', 'yy', 'yyyy');
>>>         if (defined('D_FMT')) {
>>>             $from[] = '%x';
>>>             $to[] = str_replace($from, $to, Horde_Nls::getLangInfo(D_FMT));
>>>         }
>>>         return str_replace($from, $to, $format);
>>>     }
>>>
>>> Add the simulated function nl_langinfo as an include in the Nls.php
>>> file (C:\php\pear\Horde\Nls.php):
>>> include( 'WindowsNl_LangInfo.php' );
>>>
>>> For the second problem, I first created a new nls.local.php
>>> configuration file (C:\Apache24\htdocs\webmail\config\nls.local.php)
>>> with the windows locales strings:
>>>         'usa_usa' => '&#x202d;English (American)',
>>>         'uk_uk' => '&#x202d;English (British)',
>>>         'canadian_can' => '&#x202d;English (Canadian)',
>>>         'fra_fra' => 'Français',
>>>         'nld_nld' => 'Nederlands'
>>> And then modified the function setLanguage in Registry.php
>>> (C:\php\pear\Horde\Registry.php) to not include 'UTF-8', also not
>>> supported on each windows platform.
>>> But that didn't work, I'm missing something I think.
>>> If I hard code the wanted language 'nld_nld' in the function
>>> setLanguage, then it works. Of course the user can't change the
>>> language anymore. That's not a problem for me, but as generic
>>> solution, this can't be coded like this!
>>>
>>> With all these changes the agenda is now working in the wanted
>>> language, I can now add events, delete and change events.
>>> But it is not future proof, the next upgrade of horde will delete the
>>> changes and I'm back at the beginning.
>>> The key question is, will horde support an installation on windows in
>>> the future? For this to happen, the code must be made cross-platform...
>>>
>>> Regards,
>>> Eric
>>
>> I didn't receive any reaction about above questions.
>> Will windows support be added or not?
>> If not, it should be mentionned in the documentation to pinpoint
>> people, working with window platforms, to the existing problems.
>> Regards,
>>
>>
>>
>> --
>> kronolith mailing list
>> Frequently Asked Questions: http://wiki.horde.org/FAQ
>> To unsubscribe, mail: kronolith-unsubscribe at lists.horde.org
>
> This takes some time to consider, and I don't even have a working
> Windows server system at the moment to test this myself.
> Since this only affects the dynamic view though, I wouldn't say that
> we don't support Windows. Support may just be limited to the basic and
> mobile view.
>
> --
> Jan Schneider
> The Horde Project
> http://www.horde.org/
> https://www.facebook.com/hordeproject

Ok, if it will be mentionned in the documentation,  no problem.
I'm happy to see that support for the dynamic view will be considered.
I will encode a ticket in the https://bugs.horde.org/ to be able to  
follow up more easily.
Regards,





More information about the kronolith mailing list