76

(2 replies, posted in Need Help)

Hi Fred, there is nothing special to be done to make the calendar responsive. We've tried to make it as responsive as  possible, but of course when you load the Month View page on your cell phone in portrait mode, there is not much room. But it still works.
A very good solution for a narrow display is to use one of the so called "displays". E.g. try: www.yoursite.com/calendar/display3.php.
The displays have been specially made for narrow display devices.
Roel

This new LuxCal version 5.2.3 includes important new features and improvements. Furthermore quite a number of technical issues have been addressed and a few bug have been fixes.

>>>> AS OF THIS VERSION THE MINIMUM PHP VERSION REQUIRED IS 7 <<<<

As always, this new release has been thoroughly tested with the help of John from Denmark, resulting in less bugs and a higher quality. Thank you John!

Hereafter you will find a full summary of all changes since the previous LuxCal version 5.2.2.

New features / improvements
• Drag and drop functionality has been added to the Year and Month view pages, so that events can easily be re-arranged without losing the calendar oversight. With this feature the mouse can be used to drag events from one day cell to an other day cell. Normal events, multi-day events and repeating events can be dragged and dropped. Dragged and dropped events will also have their "edited date/time" and "edited by" fields updated. If the ctrl-key is pressed while dropping the event, the event will not be moved, but a copy of the event will be dropped. If the side panel with the mini calendar is displayed, the drag and drop functionality is also present for this mini calendar and between the mini calendar and the year and month calendar. This makes the drag and drop feature very powerful. In Month view for example, one can select in the mini calendar one of the next months and drag events from the current month to the selected next month and vice versa. Day markings can also be dragged and dropped. They should be dropped in the event area of the day cell and not in the header area of the cell. In addition to the new feature described above, in a multi-calendar setup a user with at least manager rights can now also copy events from the current calendar to the other calendars. This works as follows: When the user drags an event from the Month view page, the Year view page, or the mini-calendar in the side panel and drops it on the calendar's top bar, a dialog box opens where the destination calendar(s) can be selected. If thereafter the Copy Event button is pressed, the event will be copied to the selected calendar(s). Because the other calendar(s) most likely will have different event categories, the category of the copied event will be set to "No cat".
• Since in the Options Panel the Calendar check boxes (if present), the View check boxes and the Language check boxes can have only one check box selected, they have been made auto-submit and therefore for these columns the Done button doesn't need to be pressed to submit the selection.
• On the settings page the event templates, where the fields to be shown in the general views, the upcoming view and the hover box could be specified, has been split in Event templates for public users and Event templates for logged-in users, adding more flexibility to "who should see what". By this change the previous setting "Show event details to users" has become redundant and has been removed.
• The Month, Week and Day view pages have been re-designed to avoid the misalignment of the calendar header and the calendar body, which could occur when the calendar body had no scrollbar. The header row which is now part of the calendar body table, has been made "sticky". Also, when scrolling on narrow screen devices the header will stick at the top of the screen.
• In the side panel's mini calendar, the date in the day cells is now right aligned, as in the Year and Month view calendars. Furthermore the font size of the date in the day cells has been slightly reduced".
• The "todo" events for which the "rolling" option has been set, will stop rolling when the user checks the "todo" check box.
• For events in the event base category "no cat" the "no overlap allowed" option cannot be set anymore. So, events in the "no cat" category can always overlap.
• To make maximum space available for the calendar content, the page footer is now positioned at the very bottom of the page and the footer height is fixed at 20px.
• In the Edit User Profile form the * for the note has been made class='hired'.

Technical issues
• To keep the calendar state of the art and cutting edge, in various files the calendar's PHP code has been simplified by using new features introduced in PHP 7, like e.g. the null coalescing operator and the shorthand ternary (Elvis) operator.
• To keep the calendar state of the art, in the JavaScript code the variable and constant declarations have been aligned with the ES6 JavaScript standard. In addition the deprecated JavaScript "substr" function has been replaced by the "slice" function.
• Two vulnerabilities reported by JPCERT/CC solved. A cross-site scripting and an SQL injection vulnerability. [VN: JVN#04876736, JVN#59855261 / TN: JPCERT#90779540].
• To avoid vulnerabilities, in passwords the characters <, > and ~ are not allowed. When using these characters, an error message will be shown.
• On the week and day view pages, for each time slot the date and the time are now stored in the id of the time slot <div>, rather than in a "data-" field, which makes the drag functions simpler.
• For "todo" events toggling the check box in the database is now done via the more modern and simpler "async await fetch" method, rather than using the XMLHttpRequest method (AJAX). The checkevt.php file has been integrated in the toolsaaf.php file and has been removed.
• Toggling the check box for "todo" events and editing events using the new drag and drop feature has been made more secure by applying a token.
• The parameter "dbSel" in the lcconfig.php file was redundant and has been removed. Whether in case of multiple calendars and when an administrator is logged in, the Options Panel shows a column with calendar IDs (to switch calendars), now solely depends on the setting "Options panel menus" in the section Navigation Bar on the Settings page.
• The HTML <pre> </pre> tags (spacers) have been replaced by &ensp; (if one space in between) and &emsp; (if 2 spaces in between).
• On the Settings page the event related fields have moved from the Views section to the Events section, which is more logical.
• Code simplified by using the $eDetails variable set in index.php, rather than performing the "may see details" test again.
• The bar with the left and right arrows with the time span in between has been made 4 pixels higher and the time span text is now better aligned with the arrows.
• In the head section of the mini-calendar the toolbox.js was loaded twice and the calID JavaScript calID variable was defined twice. This was no problem, but redundant.
• On the Settings page, in the general section, improved label and text of the Maintenance mode.
• For all admin pages the div with class 'scrollbox' has been removed and the scrollbar of the 'content' div will be used. This is a code simplification and the scrolling is done over the total vertical space.
• Header with arrows and date span made more responsive by switching to 3-letter months on narrow displays.
• Because of the limited space available in the Options menu and in the side bar's text field, the scroll bars have been made "thin". NOTE: for the moment this only works in the Firefox browser. We hope and expect the scrollbar-width property will be endorsed by W3C and thereafter be supported by other browsers.
• Rather than validating entered email addresses using a user-defined regular expression, now the PHP filter_var function is used, which is a simplification
• When a user logs in with an invalid email address, rather than displaying a generic error message, now the message will be "invalid email address". Furthermore the "Register" button has been made bold.
• The dates stored in the "checked' and 'xDates' fields of the events database table have been replaced by an offset number of days w.r.t. the event start date. This gives a much better user experience when events are moved with the drag and drop feature.
• During the calendar upgrade process the database tables will be compacted before the post-processing starts.
• In the upgrade section the tables post processing processes have been rearranged in the order of the calendar versions. This way it will be easier for future versions to selectively run the processes and speed up
    the overall calendar upgrade time.

Bug fixes
• Several PHP warning messages resolved, which occurred when the user asked for a pdf file. These warnings did not prevent the PDF feature from functioning.
• When exporting a .ics file, some lines in the exported file could become longer than 75 characters, which is the maximum length allowed according to the RFC 5545 specification.
• In the displays 1 - 3 empty lines in the event description were not shown due to a css error. Solved.

Hi Windo,

I'm sorry for that, but I did not receive an email from you. I also checked my spam box, but nothing!
Could you please send an email directly to rb@luxsoft.eu.

Roel

Hi Windo,

Send me your email address (via the Contact page) and then I will send you a small test script to test the PHP mail function.
If this works, the calendar mail should work as well.

Roel

Hi Windo,
Please also check if the Calendar URL on the Settings page in the General section is correct. In particular if the https (secure) part is correct.

Roel

81

(3 replies, posted in Problems)

Hi Greg,

I've completed the re-design of Month view page (and Week and Day view pages, which have the same problem).
This change will be part of the next LuxCal version (V5.2.3).

I've sent you an email with the modified files, which you can upload in your current calendar version 5.2.2.
Roel

82

(3 replies, posted in Problems)

Hi Greg,

Would it be possible to send me a link to your calendar embedded in the iframe? If you don't want to post it here, you can send it to me by email.
I would like to have a look at the whole page to see why the Full Screen button doesn't work.

The second problem you posted is a known problem. It happens when in Month view the lower part (the weeks) does fit and has no scroll bar, while the header with the day names has a (tiny) scrollbar (The inverted V is the upper part of a tiny scroll bar).
I've planned for a long time to slightly re-design the Month view page to solve this misalignment. This is maybe the right moments to do so.
I will work on this and come back to you in a couple of days.
Roel

83

(7 replies, posted in Need Help)

Hi there,
When after having uploaded and reviewed the events from a .sql or .csv file and have selected "Add Events to Database", you can't easily remove them. That's why you can first review them before adding wink

Your 2nd question:
This is not so easy to answer; it depends on how you want it to work in detail.
The way you described it above is not possible, but maybe one of the following solutions will work for you:
1. With one calendar installation you can create as many calendars as you want, So you could for instance create a calendar per group and on the Settings page of each calendar, in the Events section, you could set "Show event details to users" to Logged in. Now you could give the Public User read access to each calendar. Group 1 can now open the calendar of group 2 and see all events, but no details.
2. If you don't want the Public User to have read access: Same as 1. above, but set Public user to group "No access" and on the Settings page, in section Events set "Show event details to users" to "disabled". Give the group members "post all" rights in their own calendar. and give the members f the other group "Read" rights

These two solutions have the disadvantage that you will have two calendars and the group members have to switch calendars to see  the calendar of the other group.
There is another possibility with just one calendar:
On the Settings page, in the Events section, set "Show event details to users" to "disabled" and give group 2 "Post all" rights and give group 1 "Post own" rights. Now group 2 can see the details of all events and group 1 can see only see the details of their own evens. (I've not tested this and don't know if this is a good solution for you)

Roel

84

(7 replies, posted in Need Help)

Hi There,
When you import your holiday calendar (in iCal format), before it is added to the LuxCal calendar, all events to be imported are shown to you. So you can make changes before importing or just cancel the import if it is not the right calendar.
Roel

Hi Mucu,
Something I forgot to mention:
Quite some internet providers only support the sending of PHP emails to the outside world if the sender email address is an address created via the ISP.
In other words: It is always a good idea to use for the calendar email address an address created via the cPanel of the provider.

I don't know if this could be the reason of your problems, but maybe it helps.
Roel

Hi Mucu,
It's hard to say why the user doesn't receive the email with the generated password. I tested this again in our test calendars and all seems to function as it should.
Could you check if on the Settings page in the section Reminders - General, the "Max. no. of recipients per email" is set? The default is 10.

The email with the generated password is sent to the calendar email address with a Bcc to the user. So if the calendar owner receives the email, it means it has been sent (as Bcc) to the user as well. Could it be that it ends up in the user's spam folder?

I'm thinking in this direction, because nobody else reported this problem.
Roel

87

(5 replies, posted in Suggestions)

Hi Pat,

I've sent you a patch by email wink

Roel

88

(5 replies, posted in Suggestions)

I see what you mean Pat.
There is a "kind of" confirmation pop-up: before deleting events, it will show the list of events matching your date selection.
I can give you a patch to have the date fields for Past Events and Inactive Users blank. Should the software test on minimum a month earlier remain?
Roel

89

(5 replies, posted in Suggestions)

Hi Pat,
I'm not sure I understand what you mean. What do you exactly mean by "can we not have the pre-loaded dates (month old) for the 'Past events' and the 'Inactive users' when opening the clean up functions panel". Do you mean just a textual change?
Some more details please wink
Roel

Hi there,
If you don't want Public Users (not logged in users) to see the calendar, then via the side menu (☰) you should open the Users page, edit Public Access and put this in the group "No access".
That's all. Now when a Public User browses to the calendar, the user will get the calendar's log in page.
Roel

91

(1 replies, posted in Problems)

Hi Duncan,
On the admin's Settings page, in the section Views, edit "Weeks to show in month view" (5th from the top) and make it 0 or 1. Thereafter you will get exactly one month.
If you select a larger value (the number of weeks to show), it will always show one week in the past and the rest in the future.
Roel

Hi David,
I will send you an example notification email with an explanation.
Roel

This new LuxCal version 5.2.2 includes new features and improvements. Furthermore quite a number of technical issues and bug fixes have been addressed.

As usual, this new release has been tested with the help of John from Denmark, resulting in less bugs and higher quality. Thank you John!

Hereafter you will find a full summary of all changes since LuxCal version 5.2.1.

New features / improvements
• On the Upcoming Events page an option has been added to change the start and and end date. Furthermore a possibility has been added to download a file in CSV format with the events in the selected period. In the CSV file the values are separated by the vertical bar (|) character. The download buttons are not available on narrow displays.
• A setting has been added to the Views section of the administrator's Settings page, to enable a scrollbar in the day cells in Month view. When a day cell overflows, rather than increasing the height of the cell, a scrollbar will be shown. This can be particularly useful when you have many events per day.
• When in Month view a day cell is completely filled with events, it was not possible to click an empty space to create a new event. To solve this problem, the day number in the right upper corner of the day cell has been made an hyper link, which can be clicked to create a new event.
• In the Event window it is now possible to specify a venue either by typing it or by selecting it from a drop-down menu with predefined venues. When predefined venues are used, the calendar's 'files' folder must contain a file called venues.txt with a venue on each line UTF-8 encoded. On the Settings page the administrator can specify whether the user should type the venue, select it from a drop-down menu or can choose either.
• A new predefined event description texts feature has been added to the Event Add/Edit window. When the files folder contains a file named descriptions.txt with predefined description texts for one or more event categories, then in the Event Add/Edit window when a event category is selected and the description field is empty, the predefined text for that category will be copied from this file to the description field.
• On the Edit Users page (for users with manager or administrator rights), an option has been added for events owned by a certain user to transfer the ownership to an other user. This can be particularly useful for owners having Post Own rights when for instance a user leaves the team of calendar editors. Ownership can be transferred for events in a certain event category and/or with a start date in a certain date range and/or with a creation date in a certain date range.
• In the right upper corner of the calendar a "full screen" icon has been added. When clicked, the current calendar page will be shown full screen. The page will stay in full screen mode until the full screen icon is clicked again, or the Esc key is pressed or a new calendar page is selected.
• When adding and editing items, to distinguish error messages from confirmation messages, the confirmation messages of successful actions are now displayed in a different color (default green).
• In day and week view, rather than the event title, now the full event box can be clicked to view/edit the event details. The pop-up details will now also be shown when hovering the event box, rather than the event title.
• The four displays now also accept an URL parameter 'cats', with the same layout as the $cats setting in the display files. Example: www.mysite.xxx/calendar/display1.php?cats=1,3,4,8. Category IDs in the URL parameter, which are not part of the $cats setting will be ignored.
• A new admin page to perform the following clean up functions: 1. Delete past events 2. Delete inactive user accounts 3. Delete attachment files which have been used in the past or not at all 4. Delete recipients  list which have been used in the past or not at all 5. Delete thumbnails which have been used in the past or not at all.
• In the stand-alone sidebar an onclick attribute has been added to the event titles to pop up the event details. So now also on mobile devices (no hover) the event details will pop up when an event title is clicked.
• When importing events from a CSV file, it is now possible to import 'no time' events. If the imported event has no start time (blank), the event will be shown as a 'no time' event in the calendar. If the start time is 00:00 or 12:00am, the event will be shown as an 'all day' event in the calendar.
• Because iCal events without start time and end time are often national holidays, importing iCal events without start time will now result in 'no time' events in the calendar. This used to be 'all day' events.
• Embellishment of the Log In fieldset and a visibility eye has been added on the right side in the password field.

Technical issues
• To avoid duplication of PHP code (4x), the function makeTime has been added to the toolbox. This function is used to produce the event time text for display1 - 3 and the pdf creation script.
• In the logMessage function, when writing the log message to disk, to avoid corrupt files, we now lock the log file during the write operation.
• The pop functions have been simplified by setting the max-width of the hover box, rather than the width derived from the content length.
• Date and Time Picker code simplified by using template literals (JavaScript ES6).
• In the pop function (static) setting the maxHeight of the hover box has been removed. In sporadic cases the hover box content overflowed the bottom of the box, in particular when using the mini calendar (display 1).
• The text "cat_scat_must" was not used by the software and has been removed from the files.
• In the function importSqlFile the transaction (start / commit) has been removed because the it sometimes conflicting with the MySQL auto-transaction.
• On the Search page the New Search button was a bit lost to the right and is now centered.
• The cursor for all elements with an onClick attribute is now set to 'pointer' (hand) in the style sheet and the 'point' style has been removed from all individual files.
• Te ensure a consistent set of styles, the styles are checked against the default styles and saved in the styles table at the very end of the upgrade process.
• For Month view the event title container has changed from <p> to <div> to avoid long titles from being justified. Furthermore the code to create a day cell has been optimized.
• When checking for overlaps, this is now done for today and the future days, because checking for overlaps in the past doesn't make much sense.
• When on the Settings page, in the Periodic Services section, the setting "Event expiry days" has been specified and the lcalcron.php script is started, only expired events that have not been deleted yet are deleted. Before all expired events, including already delete events, were deleted (again).
• When on the admin's Database page the Events function is used to delete events and an end date has been selected, events belonging to a category for which a repetition has been set will not be deleted. (events in a category with a repetition set have no end date and go on forever).
• To avoid selecting wrong files, the selection of file names from a folder is now done using a simple regular expression.
• For the PDF birthday calendar it is now possible to add the birthday trigger, e.g. #Frank(1983)#, in either the event description field or in one of the extra fields, rather than only in extra field 2.
• When for birthdays the age should be shown in the event title, the year of birth enclosed in parenthesis should be present somewhere either in the event description field or in one of the extra fields.
• The check on file extensions has been removed. The allowed file extensions for file uploads are specified in the File Uploads section of the Settings page and therefore there is no need to check the extension again when downloading files. Downloading program files is always forbidden.
• Since on mobile devices there is no possibility to hover an event, it was not possible to see the event details in the stand-alone sidebar. This has been solved by making side bar events clickable on mobile phones and tablets.
• Long array definitions (array()) replaced by short ([]).
• Possible birthday tags ( #name(yyyy)# ) in extra fields 1 or 2, used by the birthday calendar, are not shown anymore in the various calendar views.
• Removed the text justification for the event titles and body texts, which didn't look good when viewed on a narrow display, like a smart phone.
• For aesthetic reasons a border has been added options menu, user menu and side menu.
• There was no color specified for the "no event" text. When there was no event to show, depending on the specified display colors, this could result in an invisible, or hardly visible "no event" text.
• When an image was used in one of the event description fields, the alt attribute showed the image name and extension. The extension should not be part of the alt attribute and has been removed.
• When an imported CSV file contains image names and or email addresses, now both will be expanded to HTML tags (img-tag and a-tag with href='mailto') respectively. Images only work when the image name refers to an image in the calendar's thumbnails folder.
• For narrow screen devices the text Log In (or user name) has moved 20px to the left because t overlapped with the Full Screen icon.
• For narrow screen devices the current date in the center of the top bar is suppressed because it overlapped with the calendar title.

Bug fixes
• On the matrix-users page, the title of the left column read Event Categories, while it should be Calendar Users.
• If the calendar's upcoming sidebar is embedded in a page that can scroll, the position of the hover boxes was off-centered when the page was scrolled. Solved in the pop function by adding scrollX and scrollY to the hover box position.
• In the calcFTDate function the "case 'WEEK'" switch had two problems. 1) the $set variable was not defined as global and 2) the brackets were not placed correctly.
• Due to a possible NULL value of the temp_password field in older LuxCal versions, the upgrade to the latest 5.2.1 version could fail. The preprocessing code of the upgrade function has been revised to solve this problem.
• When events contain large images (which float left / right) and a short description, the events were shown staggered due to a missing "clear:both;" property in the "event" style.
• The makeE function performed an rtrim with the 'glue' before returning the event. For glue "<br>" and the venue within <a>-tags at the end of the event, this caused the last ">" to be removed. The rtrim was redundant and has been removed.
• When an event category allows no overlap, then when checking for overlaps, the xDates (multi-day and repeating events) were not taken into account.
• When checking for overlaps for repeating events, in the overlap function the last occurrence of the repeating event was not checked (problem solved by Stefan).
• When checking for overlaps events with "no time" checked (which are mostly reminders) are excluded from the overlay check.
• The overlap function was only checking against events in the event category the user was allowed to see even when no overlap allowed for all categories was checked. Solved.

94

(1 replies, posted in Suggestions)

Hi Rob,
No, unfortunately this feature doesn't exist in the calendar.
No plans yet to implement this.
We started looking at possibilities, but this is not an easy change.
Roel

95

(7 replies, posted in Suggestions)

Hi there,

Yes, this feature will be included in the next calendar version.

It will work with a file in the 'files' folder, called venues.txt. This venues.txt file should have a venue per line.
On the admin's Settings page, it will be possible for the venue field to select the following values:
• Free text, • List, or • Both.
When Both is specified, the user can select Free text or List.

Roel.

I see your point Greig. There are other ways to add an event on a certain "full" day (e.g. go to week view or day view), but I agree clicking some free space in a day cell in month view is the most convenient.
I have considered in the past, rather than clicking in the day cell header or in de day cell body, to always open an Add Event window and offer the choice via two radio buttons "Event" and "Day Marking". Maybe I should reconsider this wink

Roel

97

(10 replies, posted in Problems)

Hi Hubert,
I'm a bit confused by the explanations of your last two posts.
Could you send me an email (via the contact page) and explain to me step-by-step what you have done and what is going wrong please.

Roel

98

(5 replies, posted in Problems)

Hi greg,

It's not a work-around, and it's not a fix, ha ha. It's just how it works. The calendar remembers "users" So if you create a user for on your PC and a separate user for on your smart phone, both will be remembered individually.

Roel

Hi Greig,

I agree that the SESSION EXPIRED popup was very frustrating, but this problem has been solved several LuxCal versions ago.
What calendar version are you using?
I would like to urge users of old calendar versions to upgrade to the latest version.

(Very clever to add a space to h ref and also to htt s in your previous post. smile I like it)

Roel

Hi Greig,

Repeating events on the first day of each month is possible by creating an event on the first day of a month and select "repeat every 1 month". Repeating events on the last day of each month however, is currently not possible.
I will see if there is a possibility to implement this. I'm not sure, the repetition mechanism is rather complicated and I have to see if it is compatible.

Roel