============================
= LuxCal Development Notes =
============================
To do list for next versions:
============================
1. Make a printer friendly print button in Month view (and maybe other views).
2. Add admin setting to enable/disable "authentication required" for posting via
mini-calendar + make logging in / self-registering via mini-cal possible.
3. Separate styles sheet for mini-calendar.
4. Add possibility to the user's page to select cats which the user may see.
5. For week and day view option to specify "end" hour and sink all events after
the end hour to the bottom.
Change log - version 2.6.0:
==========================
01. events.php, users.php, categories.php, importCSV.php, importICS.php:
simplified syntax for SQL INSERT query (values only).
02. all.php: Store calendar settings in the database and encrypt the database
credentials.
02a. lcaldbc.dat: This is a new file replacing the LuxCal version number and the
database credentials of the previous config.php file. The lcaldbc.dat file
contains:
- the text 'LuxCal'
- the version number of the installed calendar configuration (e.g. 2.5.4)
- the database credentials (host name, database name, user name, pass word
and table prefix) in encrypted form.
02b. toolbox.php: ciph function added (encryption/decryption of db credentials).
02c. install.php, upgradexxx.php: The file config.php is replaced by the new
database table 'settings' and the file lcaldbc.dat. This table 'settings'
holds all calendar settings and per setting the following data are stored:
name, value and description.
03. lcconfig.php: new utility to edit and test the encrypted db credentials in
the file lcaldbc.dat and to test if the calendar configuration is ready for
use. This tool is available on request.
04. ai-{lang}.php: options panel texts separated from general settings texts (no
changes for users).
05. settings.php, ai-{lang}.php, upgradexxx.php, install.php: new admin setting
details4All added. Show event details only to owner (disabled) or to all
users (enabled).
06. settings.php, database.php, importICS.php, exportICS.php, importCSV.php,
users.php, ai-{lang}.php: various corrections made to produce valid xhtml.
07. install.php: minor improvement in "description" and "optional" added to the
form field "Database Prefix".
08. dloader.php, exportICS.php: download file name supplied by exportICS.php
rather than produced by the dloader. No config data needed by dloader.php.
09. index.php, lcalcron.php, lcmini.php, toolbox.php: functions to connect to
the database and to get the calendar settings from database centralized in
the toolbox.
10. year.php, month.php, dw_functions.php, upcoming.php, changes.php,
rssfeed.php: if 'details4All' is disabled, event details are only visible
for the event owner and for users who have 'post all' rights.
11. lcmini.php, events.php: Rather than using the admin setting 'miniCalPost' on
various places, the mini calendar sets privs to 3 (post all). Same effect.
12. settings.php, toolbox.php, install.php, upgradexxx.php: htmlentities() added
for all $_SERVER['PHP_SELF'] occurences to avoid PHP_SELF exploits, like
cross site scripting (XSS).
13. header.php: To match the style of the other elements on the navigation bar,
the log in / log out link has been replaced by a button.
14. event.php: regex for URLs improved to cope with URL format xxxxx.yyy, in
other words: URLs without subdomain prefix.
15. header.php, search.php, css.php, lctheme.php: A text search capability has
been added, which can be started via a button on the navigation bar. The
user can specify the text to search for, the event fields that should be
included in the search (title, venue, description or all fields), the event
category to search and a start and end date between which the search should
take place. The search results contains hyper-links to go to corresponding
date in month view and to open a show/edit event window.
16. retrieve.php, events.php, eventform2.php, changes.php, notify.php,
sendchg.php, rssfeeds.php, importICS.php, exportICS.php: In the 'Set
Repetition' pop up the selection "Repeat every Xth Mo|Tu|We|Tu|Fr|Sa|Su of
the month" now allows the selection of "each month" or a specific month.
E.g. "Every second Monday of June".
17. exportICS.php: In the DTSTART and DTEND properties the time zone has been
added (to avoid "floating time" problems when importing in Outlook).
18. css.php: class "flush" changed to solve the IE7 problem with the dummy Log
In line in the login.php file to invoke a log in when the users presses the
Enter key.
19. eventform2.php, ui-{lang}.php: button "Add and close" added to the Add
Event window. When the user selects Add, the created event remains displayed
and the Add Event window changes to Edit Event so that the user can edit or
re-use the event to create another event.
20. event.php: slashes stripped in title, venue and description fields when
reloading the Edit Event window after selecting the Save button (without
closing the window).
21. event.php: url regex improved to avoid matching strings like 22.00.
22. upcoming.php: when clicking a repeating event on the Upcoming Events page
and then selecting to edit the occurrence, the date of the occurrence was
not passed on and consequently not displayed in the start date field (bug).
23. header.php, categories.php, event.php, eventform0.php, eventform1.php: The
event category text color and background color can now be set independently.
If either one is not set, it will take the default.
24. importICS.php: The linefeed charactes "\n" in the descriptions of imported
events were not properly handled and converted to "<br />" tags. Other
escaped characters (e.g. ;) are now properly un-escaped.
25 event.php: undefined start time /end time values in the JavaScript function
hide_times() solved.
26. general.js: event window width slightly increased to solve space problem for
the time picker in certain browsers.
27. header.php, ug-{lang}, css.php: On-line User Guide restructured and changed
to only display relevant help items, depending on the user rights.
28. footer.php: If the calendar URL on the admin Settings page doesn't end with
a slash, the slash is automatically inserter in the RSS link at the bottom
left of the calendar pages.
29. css.php: Button texts normalized. Not all captions had the same font size.
30. header.php: user list in options panel and on the admin's User page sorted
on user name (rather than user id).
31. eventform2.php: When "one click event" is enabled (Settings page) the Event
window title was wrong, when editing events. The title of the event window
both to show an event and to edit an event has been changed to "Event".
32. ui-{lang}.php, ai-{lang}.php, ug-{lang}.php: Language files with character
encoding "utf-8" (instead of "utf-8 without BOM") will cause no PHP errors
any more. However, character encoding "utf-8 without BOM" is recommended to
avoid the display of unexpected characters at the top of the web page. The
BOM specifies the byte order ("little-endian" or "big-endian") for
multi-byte characters.
33. notify.php: When sending email reminders via a cron job, spaces are trimmed
off beginning and end of email addresses to solve problems with spaces in
the email list.
34. lctheme.php, css.php, year.php, month.php: When a new date is selected with
the date picker in the navigation bar, this date will be marked with a red
border in month and year view. The border color can be changed in the
lctheme.php file.
35. upcoming.php, general.js: Printing of multiple pages in Upcoming View
solved.
Change log - as of version 2.6.1:
================================
36. index.php, lcconfig.php, install.php: Test on PHP version number added.
Users will be warned if the PHP version running on their server is too low.
37. lcalcron.php, dloader.php, lcconfig.php, and others: The current working
directory "./" added to all file-related statements (file, file_....,
require, unlink, etc.). This improves performance and avoids that on certain
servers (include) files cannot be found/saved.
38. lcalcron.php: At the start of the script the current directory is set to the
calendar root, to ensure that independently of the php include path and the
server settings the current directory is set correctly.
39. search.php: Texts "title", 'venue' and 'description' in header of the search
results moved to the ui-{lang}.php file.
40. exportICS.php, ai-{lang}.php: Wrong title of iCal file export form fixed.
41. index.php, header_x.php, footer_x.php: Including the right header with the
right calendar page improved. Some new header added. Now the display of the
menus and aids in the Navigation bar depend on the page which is displayed.
42. index.php, event.php: passing of arguments via the pages list in index.php
simplified. (In this particular case passing parameters to events.php.)
43. lcmini.php: Error in RSS-feed link in footer of mini calendar solved.
44. settings.php, toolbox.php, urgradexxx.php, install.php: all settings of type
'string' are escaped (mysql_real_escape_string() function) before saving in
the database and are un-escaped (stripslashes() function) when retrieved
from the database. Solves problems with quotes in text fields like calendar
title.
45. footer_fbar.php: changed the link "powered by LuxSoft" so that it opens in a
new window.
46. year.php: Day number in day cells not properly aligned. Bug: <td>-tag was
not closed.
47. upgradexxx.php: measures have been taken to avoid interference between the
settings ($set) loaded by the index.php script and the settings saved to
the database at the end of the upgrade process.
48. css.php, week.php, day.php, dw_functions.php, all_admin_scrips.php: Styles
have been optimized.
49. login.php: After self registration the username was not remembered for login
and had to be re-entered. Bug.
50. login.php, settings,php, ai-{lang}.php, install.php, upgradexxx.php: a new
admin setting 'selfRegNot' has been added. If set, the admin will receive an
email notification with details of each self registration.
51 changes.php, users.php, settings.php: PHP undefined variable warnings fixed.
52. categories.php, eventcheck.php (added), install.php, upgrade.php, month.php,
year.php, dw_functions.php, upcoming.php, search.php, notify.php, lcmini.php
ui-{lang}.php: The possibility to use one or two event check
box(es) added. On the Categories page the admin can activate one or two
check boxes per event category, assign a label to each box and specify an
associated check mark. For example "approved": 'ok' and "completed": ?.
Thereafter, when a user creates an event and selects this event category,
automatically one or two check box(es) will appear at the start of the event
title. These check boxes can be clicked to open a Check Event window where
the check boxes and their labels are displayed and can be checked or
unchecked. If checked, in all views the specified check mark will be
displayed at the start of the event title. In the navigation bar a new
button (checkbox) can be clicked to display a "todo" list with all events
which require at least one check mark.
53. general.js, all.php files: new login, go-to-view and event functions added
to general.js. This results in a much cleaner html code, which is reduced in
size.
54. rssfeeds.php: For each event in the RSS feeds a <link> tag has been added
with a link to the calendar URL and the corresponding date.
55. settings.php: Validation of the calendar URL improved, so that it doesn't
end with index.php. The calendar URL is used for the RSS feeds and must be
valid and end with a slash (/).
56. lctheme.php, css.php: via the lctheme.php file the user can specify for the
overlay boxes (event details box, options panel, side bar) whether the box
corners should be rounded and whether shadows should be visible (works in
IE9 up, Firefox, Chrome).
57. login.php, header_x.php,general.js: Log-in dialogue displayed in a separate
small window. This makes it possible to add user authentication to the mini
calendar in one of the next LuxCal versions.
58. css.php: for <input> fields of type password the font size has been made
identical to text fields to ensure proper alignment of the right side of the
fields on the log-in page.
59. changes.php: onclick for event removed. The actual date for multi-day and
repeating events is not available in this view and therefore events can not
be viewed/edited on the actual date. This neither worked in past versions.
60. lcalcron.php, notify.php: notify is now using the retrieve function. The
script is much simplified and processes repeating events correctly now.
61. retrieve2.php, changes.php, sendchg.php: Function grabChanges moved from
both scripts to a separate file 'retrieve2.php'. Easier to maintain.
62. rssfeed.php: XML/RSS validation errors solved. The RSS feeds now meets the
RSS 2.0 specification.
63. users.php:
64. index.php, event.php, eventform1.php, ai-{lang}.php: "one step edit" setting
removed. Unnecessary complicated and no added value. If the user has no edit
rights, the event window will open in read-only mode.
65. sendchg.php: PHP Notice "undefined variables: count + emlText" solved. Bug.
66. notify.php, event.php, login.php, users.php: email address validation regex
changed to accept email addresses like hide@address.com
67. all_admin_scripts.php: display of forms, data and error messages improved.
68. settings.php: Validation of field "days to look ahead" updated. The value
must be 1 - 365.
69. importCSV.php: Problem with the "delete" and "birthday" check boxes in front
of the imported events solved. Bug.
70. importICS.php: In iCal files both a CRLF pair (standard) and a single LF are
accepted as line separator.
71. install.php: Error (2x http://) solved in the URL which is preloaded in the
Calendar URL field. Bug.
72. importICS.php: When importing a .ics file and an alarm component appears
inside an event component, the description and summary of the alarm
component were taken, rather than the description and summary of the event
component. Bug.
73. index.php, year.php, month.php: The selected date should only be highlighted
(red border) if a new date is selected via the date picker on the navigation
bar and not if the forward and backward (arrow) keys are used.
74. month.php, week.php, css.php, headerx.php, settings.php, ui-{lang}.php,
settings.php, install.php, upgradexxx.php: In the Options panel Month view
and Week view each have two options: Full Month / Full Week and Work Month /
Work Week. The admin has a new setting which defines which days of the week
should be displayed in the weeks in "work" view. Which days and the number
of days is fully flexible.
75. rssfeed.php, year.php, month.php, dw_fuctions.php, search.php, changes.php,
upcoming.php: the event category and the event owner are considered to be
not confidential. The display of these fields will therefore not depend any
more on the admin setting details4All.\
76. css.php: Input field of type "file" (ICS import and CSV import) have now the
same font size as other buttons.
77. ai-english.php, ui-english.php, ug-english.php: The texts in the English
language pack used at the user interface has been updated and improved.
78. header0.php: when the calendar was loaded without header (?hdr=0), in week
and day view the time slots could not be dragged to open the Add Event
window with pre-loaded date and times. Bug.
79. lcconfig.php, readme.txt: For users having problems after the installation
of the LuxCal calendar, a configuration tool can be downloaded from the
Download page on the LuxSoft website. This tool can be used to check the
following: The correctness of the database credentials, the required file
permissions, the functioning of PHP sessions and if cookies are enabled in
the browser.
80. eventform1.php: When adding/editing events, the maximum text length for the
form fields 'title', 'venue' and 'reminder email list' is now limited to the
size of the corresponding database fields. This is to avoid that texts are
truncated when saving them in the database.
Change log - as of version 2.6.1a:
=================================
81. eventform1.php: When adding an event, after a "refresh" when a repeat value
has been set, the wrong set of buttons (edit buttons) was displayed at the
bottom.
82. notify.php, ai-{lang}.php: Presentation of status with check boxes in email
reminders improved.
83. event.php, eventform0.php, eventform1.php, ui-{lang}.php: When in the event
window notify "now" has been selected, then for single day, not repeating
events falling in a category with check box(es) the status of the check
box(es) will be added to the notification email.
84. event.php: In some IE versions, when selecting "delete" in the event window
the event was added instead of deleted. IE problem! Solved.
Change log - as of version 2.6.1b:
=================================
85. lcalcron.php: To avoid malicious use, cronjobs can now be run via a cron job
on the server only. When launched via the browser, the user will be
redirected to the index.php file.
86. general.js, index.php, header1.php, headerm.php: Opening a login or an event
window was sometimes blocked by the browsers popup blocker. Popups should
always be the result of a user action (selecting a button/link).
Change log - as of version 2.6.1c:
=================================
87. footer1.php: Don't show RSS feed link in footer if user has no view rights.
88. event.php: Spaces before URLs in the event's description field should stay
and not be removed.
89. event.php: In the Event window when no edit rights (fields greyed out) the
URLs were displayed in HTML format (with <a>tags) instead of edit format.