Setup Multiple Public Calendars

From WebCalendar Wiki

Jump to: navigation, search

I am writing this as a reference for myself as I try and configure WebCalendar to act as four different public calendars that are all accessible by anonymous users. I should be able to link to each calendar individually and also show all events on one global calendar. My specific situation is four school buildings that are all part of one district. I want each school webpage to link to its own calendar, but also allow viewing of all the school calendars as one big calendar of events. This is a narrative and probably more verbose than it needs to be. I think it is a good format because a hard-written guide doesn’t adapt as well to different situations and I am not a WebSalendar guru by any means. I assume that you have installed WebCalendar. This was written as I worked and then revised once. I don’t guarantee that it is correct or complete, blah, blah…

I quote this from the WebCalendar FAQ:


Can I setup more than one public calendar? You cannot directly setup two public calendars. However, there are two options for emulating this type of functionality: • You can create global categories and point users to the calendar with only a certain category displayed. • You can setup multiple NonUser calendars and enable public access viewing of other users' calendars. You can then link directly to the calendar of one of the NonUser calendars, or you can setup a view that contains the calendar of one or more of the NonUser calendars.


The global categories option sounds good, but this option requires that you select the category manually for each added event. I can tell you right now that my users are going to forget to do this very frequently. What happens when some large percentage of the events have no category assigned? It will be a mess. I have found that the most important consideration in designing software for “normal” people is to make it act as they expect.

The "Multiple NonUser Calendars" option sounds better because it separates the events of each school. Schools will have radically different (and full) calendars if they add all their events and besides that, parents of elementary school children will probably have little interest in the high school calendar. Another perk is that I can make the different calendars match the school pages they are linked from, even if all four have different color schemes.

I plan to attempt the second method and use the first as a fall back.

The first step after installation is to set the public access options in system settings -> public access. I want public access enabled, obviously. I plan to add the four school calendars as layers to the public calendar. The default “Public Access” view will be used to show all the events in all the schools. The rest of the options will be off for now except, “public access can view other users”. I assume this will need to be On so that "Public Access" is allowed to add the calendars of other users as layers to it's own. Note that there should never actually be any events added to the public calendar.

Next is to add two NonUser Calendars (NUCs) for testing. Use Settings->User Manager->NonUser Calendars. I will add highschool and elementary calendars. The “Admin:” box should be set to the “Default Administrator” account for now. Eventually, the secretaries of the schools will be the admins for these things, but I will make their accounts later. The “is public calendar” option determines if the calendars will be shown as links on the login page. This must be set to “Yes” or the calendars will not be viewable without a username. Once you have added the NUCs you can select them from the list of all NUCs to see a link to their default page. i.e. http://server/webcalendar/nulogin.php?login=highschool

This did not work for me and I found I had to add “_NUC_” before “highschool” to match the highschool calendar ID. It seems to work and I can link to it with: http://server/webcalendar/nulogin.php?login=_NUC_highschool . This looks like a bug in WebCalendar.

At this point, the default view for http://server/webcalendar/ is the public calendar and login links for each school calendar are visible on the login screen. Perfect.

Now I am going to make some secretary accounts to administer the two calendars. “hssec” and “elsec” will be created as normal users (they do not need to be admins). In the NUC section, I will set these two users as the administrators for their respective calendars. In production, these would be actual secretaries. They need to use the “Views” -> “Manage Calendar Of” menu to add events for their schools. This is different than just adding events to their own personal calendar.

I will now use the secretary accounts to add two events to each calendar(hs and el). One of each of their two events will be on the same day so I can see how it looks when they overlap on the public calendar. At this point, I expect the public calendar to be blank (since I haven’t added the other calendars as layers yet) and I also expect the events of one calendar to NOT be shown on the other calendar. Everything works as planned. Happy day.

Now I will login as admin and add the school calendars as layers on the public access calendar. It works fantastic! I enabled layers and added two layers (one for each school) to the public calendar. Login as admin, go to Settings->Layers, click the link “..modify…layers for public access…” As with the secretaries, you must always make sure you are altering the settings on the correct calendar. WebCalendar likes to switch back to the current user’s calendar after every change. In other words, adding layers to the admin calendar is useful, but does not accomplish what we want.

I noted that in System Settings -> Public Access, the option “public access is default participant” causes all events to include the public access user as a participant. This makes the events appear on the public calendar. It would seem that this is exactly what we want, but there is a strange caveat here. Public events are displayed on all calendars so if the public access user is a participant in an Elementary event, that event is considered public and will appear on the High School calendar. This option could be useful, but breaks the system I have created.

Now I will flesh the system out and add the other two calendars (district and middle school), their associated secretaries, and also change the test secretary accounts names to reflect the actual people who work here. My goals are achieved: • Each secretary can alter her own school’s events as well as manage her own personal calendar. • I can link to each school’s calendar of events from any webpage on my site using a simple link. • I can also link to the public access calendar to display all district events. • I can create calendars for any teacher who wants one to manage her personal schedule and also create NUCs so she can manage and publish a classroom calendar.

I hope this guide has been helpful. If it has, you can always send our district some money. If you do, the kids might be able to have some kind of meat for lunch sometime. Thanks for reading!

Personal tools