Forum OpenACS Q&A: Calendar: how to add public events?

Collapse
Posted by Tom Lazar on
hi,

after playing around for an hour with a calendar instance, reading the docs and searching this forum, i still haven't got a clue, how to add publicly readable events to the calendar.

setup: user A of group X adds an event to the calendar and the entry defaults to 'Personal' meaning, that user B of group X can't see it.

There is a dropdown box labeled 'type' in the entry form of the event, however, it only has '---' as an option. is this the place where one normally would specify whether an event is public or not?

i'm running oacs 4.6.2 and postgresql 7.2.4 on macosx 10.2.6

Collapse
Posted by Tom Jackson on

I think you add a Calendar with "The Public" as an audience. Then you add events to that calendar.

The Calendar package is a mess. There are no controls for who can post to a calendar. If you want any integrety, as a work around, just mount it somewhere obscure so you can post events, then make a read only calendar using the view page (and the page which shows individual events).

As an example check out the Uniques Unicycle Club Calendar. I just select from a single calendar for these events.

Collapse
Posted by Tom Lazar on
Hi Tom,

thanks for the hint, although I don't quite know what it means to 'set an audience' for a calendar...

in the end i've settled with the following sql statement 😉

update calendars set private_p = 'f';

Now I'll just have to figure out, either how to make new calendars public by default (not so nice) or how to enable people to add events to a calendar other than their own (i.e. the public one)

any hints on that?

thx,

t.

Collapse
Posted by Sean Redmond on

My hint is to stop trying, because every step you take will lead you further into a swamp. We use OACS for our intranet where we had hoped to be able to have a convenient way to handle personal, departmental and institutional calendars, but it's just impossible.

The frustrating thing is, until we have a good calendar solution, people will keep asking us why we don't just use Outlook and it raises a barrier to their full acceptance of an intranet on which we've worked very hard.

For the good of OACS in the workplace there really needs to be a concerted effort to revamp the calendar so that it can handle:

  • Sharing
  • Repeating events
  • Notification
  • The kind of meeting scheduling through email invitations that Outlook does

I'd happily help out in any such effort with coding and testing, but I think it's so central a functionality that the impetus should really come from the core OACS developers.

Collapse
Posted by Claudio Pasolini on
The calendar admin UI is quite obscure, but it works.
Try calendar/admin and visit 'Create a new calendar'. You can then define your new calendar as public or private and then visit 'Manage Calendar Audience' to assign permissions to groups or individuals.
You can create any number of calendars and get a nice shared view of the events you have the permissions to view.
Collapse
Posted by Tom Lazar on
claudio,

thanks for that: I just found the admin page with your help! there is no link to it, but when i manually enter the url

/calendar/admin/

i actually get an admin page, wow 😉

of course, this was *after* i manually converted one of the Personal calendars to public...

anyway, now i got the setup i wanted: everybody has a private calendar and can post to the public one.

one thing, though: when i click onto 'edit your calendar preferences' i get the following error:

Database operation "select" failed (exception NSDB, "Query was not a statement returning rows.")

ERROR:  Attribute 'party_id' not found

SQL:


        select  distinct(o.object_id) as calendar_id,
                calendar__name(o.object_id) as calendar_name,
                calendar__show_p(o.object_id, '292') as show_p
        from    acs_objects o
        where    calendar__readable_p(o.object_id, '292') = 't'
        and      party_id = '292'
        and      acs_object_util__object_type_p(o.object_id, 'calendar') = 't'
        and      calendar__private_p(o.object_id) = 'f'

        union

        select  cal_item__on_which_calendar(o.object_id) as calendar_id,
                calendar__name(cal_item__on_which_calendar(o.object_id)) as calendar_name,
                calendar__show_p(cal_item__on_which_calendar(o.object_id), '292') as show_p
        from    acs_objects o
        where    privilege = 'cal_item_read'
        and      party_id = '292'
        and      acs_object_util__object_type_p(o.object_id, 'cal_item') = 't'
        and      calendar__private_p(cal_item__on_which_calendar(o.object_id)) = 'f'

any ideas?

Collapse
Posted by Dis Continued on
Hi Tom -- did you ever find a solution for this? I have just run in to the same problem. Thanks. Michael
Collapse
Posted by Dis Continued on
The database operation error
Collapse
Posted by Dirk Gomez on
Michael, file a bug in bug-tracker. I'll fix this at some point.