Employee Work Schedule / Multi-calendar

Employee Work Schedule / Multi-calendar

Employee Work Schedule / Multi Calendar


Dashboard with many options

Multiple calendars


Users can register themselves [optional] or the admin can add users.

User groups

Hour calculation

Drag & drop possible

Assigning items to users/employees

Public, private and group calendars

Recurring events

custom dropdowns

Notifications on screen and/or by email

Printing views

PDF export

viewing Exchange calendars

ICS (iCalendar) export

I welcome new features

More info

This calendar application is very flexible and has many options. Adding items to the calendar is very easy and quick. Unlike other calendar solutions this calendar is very versatile and for every event you have many fields to fill in (optionally) and you can even create own custom edit dialog fields. Drag and drop is possible and also clicking and selecting dates in the calendar views.
An admin can assign items to employees easily.

You can schedule employees to several calendars/spaces (rooms, shops etc.) or you can do it the other way around; add the employees as calendars and assign spaces to them.

It’s a complete JavaScript calendar system, with the base jQuery Fullcalendar, Bootstrap and a PHP/MySQL backend. All Fullcalendar options can be set from the dashboard, you don’t have to go in the code yourself.
The calendar can be accessed with a login, on IP address or public use for everybody.

Unique features
- optional locking of an event when the event is being edited by someone. - PDF export and print of the views. - Assigning events is possible. - Every minute (or faster) notification on admin’s client pc when a user adds/changes an event
- Inserting, editing and deleting items is fast and easy.
- Powerful searching of the complete current calendar.
- Public, private or group calendars.
- Besides admin(s) now users can also create calendars.
- Supports recurring events.
- New view with period selection
- You can create two custom dropdowns, the events can also be filtered on those.
- Multilanguage: English, Dutch, German, Spanish, French, Norwegian, Italian, Polish, Russian and Czech. You can add your own language file.
- Automatic backup of database including data. (no knowledge of cronjobs necessary)
- The complete calendar is searchable. And the search results can be clicked to go to the event in the calendar. The search results depend on the chosen calendar
- Extensive dashboard, with Hour calculation, User administration, Group administration, Calendar administration and settings. in admin area
- Set alterable range and the option to make the dates gray
- Set active range
- Mobile / Touch friendly
- Import users from a Wordpress users table.
- Possibility to move events to another calendar.
- Add files to an event.
- Admins (employees) can create Usergroups, with sepcified users.
- Securely show events from an Exchange account.
- You can predefine locations for each calendar, so choosing a location in the event edit dialog is easier.
- Notifications can be send to the admin/employer when an event is added/edited.
- Moving events to other calendars is possible.
- Users can be added to user-groups and a calendar can be assigned to such a group.

- Popup dialog for adding, editing and deleting items.
- Choose date and time formats, choose 24 hr. or AM/PM.
- Title fist or time first
- Drag and drop items, external and within the calendar.
- It uses Fullcalendar, a jQuery plug-in.
- Resizing calendar items.
- Month-, week-, day- and listview.
- The calendar can stretch to whole screen width.
- Users can easily change their profile and settings.
- You can install it in a subdomain of your wordpress installation and add a link into one of the website pages to the calendar.

NEW! second list view, searchable and selectable period. You can choose what should happen after a click on an item.

When you have a linux server also make sure that all the folders are readable by group and others and system, dbdump and templates_c have to be writable.

I would appreciate it if people with languages other than included in the calendar would be willing to share the languagefiles so i can include them in the calendar.

INSTALLATION NOTES: Some people seem to have trouble setting the path to the calendar. (FULLCAL_DIR in config.php)
This should be the path to your personal folder on your domain with your provider. You can find it in your provider dashboard or by putting this at the top of config.php: echo getcwd();
Other known startup problems are that the paths are set incorrect in config.php and all the folders should be readable and templates_c, system and system/dbdump should be writable by everyone.
Someone was having problems because some files were writable by group. The providers security didn’t allow that and an Exception (softexception) was thrown. Making it not writable for group fixed the problem.
Also some people had trouble with a https site, because the google api includes in cal.html arre http. changing the urls to https fixes the problem.

Working on

Moreday recurring events
Add events via a form outside of the calendar
Reminders (next update, via cronjob)
Admin dashboard New lay-out and completely responsive (next update)
Adding Google calendars
Include events from an external table/database (already in Fast & Easy Calendar


Installing for the 1st time

NEW!: DB install and migrate easier now

1. Extract the zip file and copy all the files to a folder on your server.
2. Create a database and execute all the queries in ‘calendar_complete_db_for_new_users.sql’.
3. Open configs/db.config.php and change the host, name, user and password to match with your database.
4. Open configs/config.php and change the paths (FULLCAL_DIR and FULLCAL_URL) to match your paths.
If you don’t know what the path-to-web-server should be you can remove the // in front of getcwd() and press f5 on your website. That will show the correct FULLCAL_DIR.
define(‘FULLCAL_URL’, $http_host . ’/employee-work-schedule’);
Don’t change $http_host.
5. Make all the folders readable
6. Make the following folders writable (773) for everyone:
– templates_c
– system
– system/dbdump
– system/uploads
Someone was having problems because some other folders/files were writable by group.
The providers security didn’t allow that and an Exception (softexception) was thrown.
Making them not writable for group fixed the problem.

Installing updates

First make backups of all your files in your calendar folder and your database !

1. Extract the zip file and copy all the files, NOT the configs folder, uploads folder and templates_c, to your server.
2. Check the change.log if there are database updates. If there are, execute the queries that are in the updateXX.sql file.
3. Check the change.log if there are any new config-options. If there are, add them to your config.php.

Common mistakes

1. Incorrect paths in configs/config.php
2. Incorrect database credentials in configs/db.config.php
3. File/folder permissions incorrect. Only a few folders (and files in it) have to be writable. see point 6 in section ‘Installing for the 1st time’.
4. Forgetting to execute the database queries.

Summary of Updates

All the updates are in the changelog. The most important updates are here:

Update 49 (25-08-2017)
Added possibility to set employee availability. (CHECK_EMPLOYEE_AVAILABILITY in config.php)
Added Russian languagefile
Added ‘assigned to’ in mouseover.
Added possibility to allow users to edit only the current item of a recurrence pattern instead of the whole pattern, config-option: USERS_CAN_EDIT_WHOLE_PATTERN
Added possibility to show dates with no events in the custom list view, config-option: SHOW_EMPTY_DATES_IN_LISTVIEW
Fixed: in some cases when adding an event, the end time was not set correctly according to the default event duration setting.
Fixed: the check if an new item will be overlapping was not looking at the calendarID.
Fixed: dropdown labels were undefined in the mouse over popup when the event was added right before that.
Fixed an issue with checking on overlapping events when drag&drop a user group DD-item.
Fixed: issue with showing the custom dropdown values in the email.
Fixed issue with calculation in hour calculation when there was an event with starttime same as endtime.
Fixed issue in hour calculation when calculating hours of events with team members selected.
Deprecated config-option: SELECTED_TEAMMEMBERS_ARE_AUTOMATICALLY_ASSIGNED, now you can set it for each calendar separately.

Update 48 (21-6-2017)
added possibility to use a specific error log file within the calendar folder. you can set it in config.php
fixed issue with adding and removing a team member immediately in the edit dialog without saving in between.
fixed issue with users being able to drag events, when in config,php was set that users only can change teammemberfield or title. added possibility to set that past events are blocked for changing by users.
fixed: user that only can change team member can also not see the simple edit dialog.
fixed: message in login form was not showed.
fixed: clicking in the custom list view on a last month date was taking you to the wrong month and therefore the emphasizing of the event was not visible.
fixed: issue with saving the color of a user in the user edit form in the dashboard.
added possibility that a user can optionally have rights to manage team members for an event. new config-option: USERS_CAN_MANAGE_EVENT_TEAMMEMBERS (default: false)
added automatic database install and migrate functionality.

Update 47 (13-5-2017)
userfilter can now also be visible for users.
Added possibility to define how the user filter should work.
added ‘last updated events’ to dashboard.
Added option to automatically assign all the selected team members, and thus also include in hour calculation
added possibility to let a user only change team member field
If you want to set a specific calendar height it is possible now
now you can choose if you want to display a message if you add an event and there is already a duplicate of it existing,
tweak: users couldn’t add themselves to teammemberfield without removing the other selected user(s)
tweak: now it is configurable how many items are shown in dashboard.
several new config-options
Added possibility to set a width for the left block
Fixed MYSQL issue with hour calculation, users (ID 1, ID 2, ID 3 .. until 10) where assigned hours that not belonged to them.
Fix: due to upgrading jQuery version, some buttons in the edit dialog were not visually disabled.

Update 1 (16-3-2015) – update 20:
Added the possibility to show a mouseover with event details.
Added a scrolling timepicker which also supports AM/PM.
Added possibility to show the events in AM/PM timeformat.
Added possibility to set one or more calendars as default calendar(s), so their items will be opened on initial view of the calendar.
Improved layout for mobile devices
Added posibility to ignore timezones
Added hour calculation of employees in admin area, with ability to filter the results by calendar and period.
Added many options to the settings form in the admin area, easier than setting them in config.php.
Simplified and improved permissions.
Share_type of a calendar can be set now. (public, private of private_group)
It’s really multi-calendar now, besides the employee work schedule functionality.
Added possibility to quickly add new users and new admins.
Added possibility for users to create their own calendars.
Removed wordcloud functionality, because the hourcalculation part made that unnecessary.
Added possibility to show description, location and phone in week view, day view and list view
Added print button for calendar and everything in admin area.
Added possibility to export parts of admin area to Excel.
See and undelete deleted calendars in admin area.
Set calendar active, inactive or active for specific period.
Set alterable range, with config option MASK_UNALTERABLE_DAYS you can choose if you want the unalterable days to be gray.
2 added fields (active and alterable range) in admin panel (last update) should also have been added in user panel
Little change in permissions, so admin with FULL_CONTROL can also see public calendars
Current event is shown in admin dashboard.
Possibility to mail an event to an emailaddress that is set for a calendar. Another admin emailaddress, subject and body (with variables) can be set in config.php
- Added possibility to move event to another calendar
- Notifications to admin/employer by email when user adds or changes an event
- Nicer looking messages
- Included yearly recurring possibility, SQL update necessary, see update7.sql for existing users, for new users it’s in the complete_db_for_new_users.sql.
Fixed a syntax error in mailEvent in cal_events.php (overlooked that one)
Added possibility to set a color and info for a DD-item. (info field is used for mouseover for DD-item, SQL queries needed, see update8.sql for existing users, see complete_db_for_new_users.sql for first installation)
Automatically insert 1 calendar if there is no calendar in the database.
Added possibility to show URL field in the edit dialog
Added Italian language file: langIT.js
Calendar name is now configurable.
IMPORT USERS FROM WORDPRESS TABLE: Added possibility to import users from Wordpress wp_users table. (CSV)
TOUCH FRIENDLY: Made drag & drop and daycell select working on touch devices, configurable in config.php.
Added checkbox in profile edit form to set a user active.
Added possibility to upload and attach files to events, SQL update and 2 config options added: SHOW_FILE_UPLOAD, MAX_EVENT_FILE_UPLOAD, don’t forget to add a writable folder: ‘uploads’.
Added Czech language
3 new config options, to determine which day is first day of week, which hour should be scrolled to initially and which hour should be first visible hour
Improved error catching for new installations, e.g. check on correct ‘calendars’ table and check if the path to the files directory on the webserver doesn’t start with http, an error that some people make. (changed files: /config/config.php and /model/calendar.class.php)
The superadmin with FULL_CONTROL can see the calendar buttons on the frontend now.

- Let me know what else you want to see in the hour calculation