============================
= LuxCal Development Notes =
============================

Change log - version 4.5.0
==========================
01. matrixc.php, matrixu.php, index.php: Matrix view has now two versions: rows 
    with event categories and rows with event users. A button has been added to 
    each of the versions, to easily switch between both versions.
		(in index.php the page number for the edit page in the "pages" array has 
    moved to 30 to make room for matrixu.php, which is number 10)
02. settings.php, index.php, header.php, toolboxx.php, matrixc.php, 
    ai-{lang}.php: New settings have been introduced on the admin's settings 
    page, under Navigation Bar. The following can now be specified for public 
    and logged in users separately: 1) the available calendar views, 2) the view 
    buttons to be displayed on the navigation bar and 3) the default calendar 
    view on start-up. If the calendar view specified with the URL parameter cP 
    is not part of the available views, the default view will be selected.
03. login.php: When logging in with a new password, the new password is kept and 
    the previous password is deleted. For security reasons it's better not to 
    keep two passwords.
04. installation_guide.html: A new section has been added to the installation 
    guide explaining how to switch from a MySQL to a SQLite database or vice 
    versa.
05. upcoming.php: To the downloadable upcoming events text file, the calendar 
    title has been added. Furthermore possible HTML <br>-tags in the event 
    description are now replaced by a 'new line' character.
06. installxxx.php: During the installation of a calendar, the character set and 
    collation of the database are set to utf-8 and utf8_unicode_ci respectively. 
		(MySQL only)
07. lcalcron.php: When the cron service runs locally, $_SERVER['REMOTE_ADDR'] is 
    empty and consequently cannot be logged. Solved.
08. groups.php, ai-{lang}.php, others.php: When adding/editing user groups, the 
    admin can specify for the users of this group both separately the categories 
    that can be viewed and the categories that can be added/edited.
09. retrieve.php, retrieve2.php, index.php: The filtering on event categories 
    that may be viewed by the current user (user's categories plus categories of 
    public user) has been reviewed and simplified.
10. eventform1.php, detach.php, css.php, toolbox.php, toolbox.js, ui-{lang}.php: 
    Attachments can now also be opened in the Event Add/Edit window. The way 
    attachments are removed has changed to a separate remove button (X) in 
    front of the attachment name. Text "Click to open" added as hover title for 
    attachment hyperlinks.
11. detach.php: It was not possible to remove attachments with a file extension 
    of more than 3 characters (for instance 'webm'). Solved.
12. eventreport.php, event.php, all files with editE: The event report is now 
    called directly from the index page and not anymore from the event.php file.
13. help.php, index.php, css.php, files in 'help' folder: Context-sensitive help 
    files introduced. The admin can create context sensitive help files in the 
    "help" folder. The file names should be as follows: ug-{page}-{lang}.html, 
    where {page} is the number of the calendar page for which the help text is 
    made and {lang} is the language. For instance: ug-02-english.html would be 
    the help page for Month view in the  English language.
    If the help file extension is .htm, the content will be inserted within the 
    <body>-tags of the Help window and if the extension is .html, an iframe with 
    a link to the help text file will be added to the Help window.
14. toolbox.php: Regex to validate URL links in the description fields improved. 
    Links with an IP-address (e.g. http://192.166.1.100) were not detected.
15. settings.php: On the settings page, form validation errors on the second 
    half of the page, were not aligned with the erroneous fields. Bug solved.
16. header.php: Category filter not working for Todo list. The Todo list always
    showed events in all categories, irrespective of the category selection in 
    the options panel. Solved.
17. header.php: Help button added to the Log-In page. With context-sensitive 
    help a Help button on the Log-In page will be very useful.
18. index.php: When logged in and a filter was activated in the options panel, 
    and the user logged out, the filter remained active. This could be confusing 
    if thereafter the same computer was used by a public user.
19. toolbox.php: Bug solved in the error logging when trying to send SMTP mails.
    When calling the logMessage function, argument #3 was missing.
20. lctools.php: When importing .sql files of a previous LuxCal version, the 
    program should take into account that the groups table may be missing in the 
    .sql files of previous LuxCal versions.
21. importCSV.php: The function to import CSV-files does now also accept the tab 
    character (\t) as field separator. All HTML-tags, except <a>, <b>, <i>, <u>, 
    <s>, <br> and <img>, are removed from the description field.
22. upgrade450.php: When upgrading from older LuxCal version, like V2.7.2, it 
    was assumed that the database table prefix string was never empty. This 
    assumption is incorrect; the database table prefix can be empty and could 
    lead to an error when upgrading from v2.7.2. Solved.
23. smtptest.php: When initiating the SMTP conversation, a syntax error in the 
    argument with the client domain name, sometimes caused the SMTP servers to 
    reject the EHLO command (argument "domain name" invalid). The EHLO domain 
    name argument should be in the following simple format: www.domain.xxx (no 
    "http://" and no trailing "/").
24. importICS.php, ai-{lang}.php: When importing an iCal file, the validation of 
    dates in the import form added and the problem with 'as of' date on the 
    start page fixed.
25. importICS.php, ai-{lang}.php: If the iCalendar file to be imported contains 
    time zone information and the file contains events in a different time zone, 
    the admin can now choose in the iCal file import form to apply time zone 
    adjustments for event dates and times.
26. toolboxx.php: Number of 'text' fields in database tables reduced (space 
    saving) and no default values anymore for text fields. For some mysterious 
    reason MySQL does not allow default values for text fields.
27. lctools.php: In the upgrade function the processing of the date/time added 
    and date/time last edited went wrong for the LuxCal MySQL version. To 
    concatenate strings MySQL uses "CONCAT" and SQLite uses "||".
28. toolboxx.php, settings.php, ai-{lang}.php, event.php: A new setting has been 
    added to the administrator's Settings page, under Events, to check the 'All 
    day' checkbox in the Event window by default when adding new events.
29. all.php: For all check boxes and radio buttons "checked='checked'" replaced 
    by "checked" and for all drop-down menus "selected='selected'" replaced by 
    "selected". This is the HTML5 standard which is supported by all modern 
    browsers.
30. toolboxx.php, categories.php, year.php, matrixc/u.php, ai-{lang}.php: For
    each event category a symbol can be specified. When specified, this symbol 
    will replace the mini-square in Year view and Matrix view.
31. categories.php, eventform1.php, event.php, ai-{lang}.php, retrieve.php, 
    retrieve1.php: Per event category four subcategories can be specified, with 
    their own text and background color. When specified, the Event edit window 
    will show an additional drop down menu from which the user can select a 
    subcategory. Events for which a subcategory has been selected will be shown 
    in the colors of the subcategory. When Day color has been selected on the 
    categories page, the full day will be shown in the subcategory colors.
32. events.php: When opening multi-day events ending in the next month, the edit 
    window opened without asking "edit the series or this occurrence".
33. categories.php, year.php, month.php, week.php, day.php, matrixx.php, 
    ai-{lang}.php: There are now two Day color check boxes for each category, 
    one for year and matrix view (mini-squares) and another for month, week and 
    day view (event titles).
34. month.php: If in Month view images are displayed in the day cells, then the 
    mouseover effect will now apply to both the event title and the image. 
    Furthermore the HTML code of events in the day cells has been simplified.
35. toolbox.js, header.php, groups.php, categories.php: The LuxCal color picker 
    has been replaced by the more sophisticated jscolor picker.
36. categories.php, matrixc.php, toolboxx.php, ai-{lang}.php: For each event 
    category an URL link can be specified. If defined, this link will be shown 
    in the matrix (C) view in the left hand column just below the category name.
37. lcmin.php: When on the settings page "Show event details to all users" was 
    disabled or set to logged in, in the mini calendar event details were still 
    displayed. This has been corrected.
38. settings.php: On the settings page under Mini Calendar and under Stand-Alone 
    Sidebar, blank hover box event fields were not accepted, which should be 
    allowed.
39. index.php, year.php, month.php, week.php, day.php: A new hdr value of -1 has 
    been introduced. If hdr=-1 is added to the calendar URL, the header will be 
    suppressed, but the navigation links in the various view remain enabled.
40. header.php, toolbox.js, year.php, month.php, dw_function.php, matrixu.php:
    When a category filter has been set to show only one event category in the 
    calendar views, then when adding a new event, in the Event window the event 
    category will be preset to the active category.
41. index.php, many.php: in case of multiple calendars, option panel parameters 
    (current page, groups, users, categories and language) and other calendar 
    dependent parameters are now kept per individual calendar.
42. index.php, many.php: Complete overhaul, clean up and simplification of the 
    index.php script. Session and cookie system completely revised.
43. toolbox.js, index.php, many.php: To get rid of the visible URL parameters, 
    all GET parameters have been replaced by POST parameters. The index file has 
    been completely revised and simplified.
44. toolboxx.php: The createDbTable function always first deleted a table, if 
    it existed, and then recreated it. When creating new databases via the 
    installxxx.php script, this had as side effect that the tables in already 
    existing calendars were deleted and recreated, resulting in the loss of the 
    existing data.
45. toolbox.js, header.php, all-views.php: When an event is added or edited, the 
    scrollTop value of the main calendar view is remembered in a cookie. When in 
    the Event window the Save button is pressed and the main calendar view is 
    refreshed to reflect the change, the saved scrollTop value is reloaded so 
    that the scrolling of the main calendar will remain unchanged.
46. header.php: The ToDo sidebar, which can be opened from the navigation bar, 
    now only shows events with check boxes that have not been checked, on other 
    words: that are not done yet.
47. importCSV.php, importICS.php: When during the import process a "back" button 
    was pressed, the selected parameter values entered on the start page were 
    not retained. Solved.
