Code

Employee Work Schedule / Multi-calendar

Employee Work Schedule / Multi-calendar

Employee Work Schedule / Multi Calendar

Includes:

Dashboard with many options

Multiple calendars, create your own calendars/categories

Multi-user

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, many options

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
- In the settings you can determine if users have to login to see or edit the calendar.
- 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.

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.

Known issues

1. model/events.class.php line 873 should be:
$from_dashboard = '';<br /> if(!empty($arr_loggedin_user)) {<br /> $from_dashboard = Utils::getLog('from_dashboard', $arr_loggedin_user['user_id'], $arr_line['event_id']);<br /> }

2. ‘copy to admin’ checkbox is not visible in add user dialog.
in /view/admin_panel.tpl on line 1176 remove this: style="width:0;"


Next update

combine days of weekly recurring pattern, so they will show as more-day events
possibility to set maximum users
superadmins can add users now, all admins can see those users in the dashboard and can select them in groups.

Roadmap

dashboard responsive
Configurable emailtexts
Add events via a form outside of the calendar
beheer 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

KNOWN ISSUES

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.
define(‘FULLCAL_DIR’,’/path-to-web-server/employee-work-schedule’);
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 50 (13-11-2017)
update28.sql
added possibility to create memos and show them as popup to users. when the user clicks the ‘x’ it is hidden the next time
added lines to language files
updated documentation
added reminders (email), cronjob required, see documentation
fixed issue with showing the ‘infix’ field in forms.
tweak: availability should not be checked if the event belongs to an admin
added a config-option (CALENDAR_ID_SELECTABLE_IN_ADD_EVENT_DIALOG) that allows you to select a calendar when adding an event, even when more than 1 calendars are selected in the calendar. (not preferable ! can give problems if you have calendars with teammember field shown and other calendars with teammember field hidden)
tweak: in the add event dialog the phone icon and url icon should not be visible.
tweak: improved behavior of mouseover
tweak: changed icon for assigned event
fixed: setting ‘calendar can be moved to other calendar’ was always ticked in calendar edit form.
fixed: When the DD-items block had fixed position (CAL_BLOCK_FIXED_POSITION in config.php) the DD-item was moved under the calendar.
Added possibility to set a calendar as type ‘vacation’ with special features. The admin can approve vacations in the dashboard.
Added vacations hour calculation section in the dashboard.
Added hour calculation export to CSV, for better support with ‘Numbers for Mac’.
Added another option to monthly recurring pattern, example: every 4th Monday of the month.

Update 49 (25-08-2017)
update27.sql
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)
update26.sql
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.

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

by
by
by
by
by
by