Location: PHPKode > scripts > LuxCal Web Based Event Calendar > DevNotes-26.txt
============================
= 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.
Return current item: LuxCal Web Based Event Calendar