I need a php based calendar that does the following things:
1. Allows the user to click on dates in a calendar and toggle the date as open, closed, open mornings, open evenings.
2. Each time the user clicks and sets a specific day in the calendar a string variable is updated with the day selected and it’s status, e.g.g closed, open etc.
3. Anytime a date is selected, I want a master/details view of the day where the master is the day in the calendar, and the details view is all the hours in that day.
I need three levels of configuration:
1. Admin : they set the over all functionality of the calendar
2. Client: they set their availability in the calendar and manage the appointments, etc.
3. client’s customer: They select from available days and times and request appointments.
All data has to be stored in string variables, no database. The string data is built on each page load from another source.
More Detail:
The master display is a grid of seven cells per row, one for each day of the week. There should be as many rows as necessary to show all days for the given month.
There shall be a header row to display the days of the week. The calendar should be able to be configured to specify which day of the week is represented by the left most cell in each row. The following days should be in the standard order: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.
Each box in the calendar that corresponds to a date in the given month should be clickable/selectable. When selected the detail screen for the corresponding date should be displayed below the calendar. Boxes that are empty because they do not represent days with the given month should have a style that indicates they are not selectable.
The day detail is a list of 96 (potentially) selectable rows each representing 15 minutes, starting at 12:00 AM on the given day with the last row representing a start time of 11:45 PM.
The detail view should be configurable so that rows representing times earlier than a given start time are not selectable, and times beginning at a specified end time are not selectable.
Rows in the detail that are not selectable should be greyed out.
Each time slot in the detail view represents a unit of time that can be part of an appointment. Rows that represent a
time with an existing appointment should be displayed in red or something else.
The application should allow configurable integer number of 15 minute units that comprise an appointment in the range [1..n].
An individual appointment is represented by a string in the form YYMMDDnn, where:
YY is the two digit year
MM is the two digit month
DD is the two digit date
nn is the start time of the appointment which is the number of 15 minute units from midnight of that day starting (offset)
so for example:
12071435 would be an appointment starting at 8:45 AM on July 14th 2012.
The data store will allow storage and retrieval of an arbitrarily long string of appointment substrings as above, separated by semicolons.
This string shall be parsed to find existing appointments on for the date selected. Newly added appointments will just return the string for that appointment. So from the example above the return would be 12071435.
The user shall not be allowed to select a row that represents an existing appointment.