Thanks for the quick reply.

It appears there was another mistake in the code (their most of the
time is I suppose).

The problem was not the callback function, it was the calendarUrl
variable. For some reason it did not get set to the right value at
instantiation (I suppose I don't understand the option concept in
mootools enough).
By modifying the code so it does write the right url to the
calendarUrl variable I fixed the problem.
It appears the google data api does not have a problem with calling a
class method as callback :)

Regards

Kyran

On 8 jan, 09:37, Trevor Johns <[email protected]> wrote:
> On Wed, Jan 7, 2009 at 1:55 PM, Kyran <[email protected]> wrote:
>
> > Hey,
>
> > For my site I'm using the calendar api to format all events into a
> > nice list. Nothing really fancy.
>
> > As I'm using the mootools library I figured it would be if I could put
> > all my google calendar functionality into a class.
>
> > Unfortunately after restructuring the code this way I can no longer
> > get the eventsfeed. I get the following error when the line
> > "this.googleService.getEventsFeed(futureEventsQuery, this.handleFeed,
> > this.handleError);"
> > is executed :
> > XML tag name mismatch (expected meta)
> >http://www.google.com/uds/api/gdata/1.6/ade37c0dee097720d54a5070af58d...
> > Line 96
>
> > Can I use the api from within a mootools class, or should I just
> > reverse back to calling all the calendar api related stuff from the
> > main function?
>
> > Here's the code for the class:
> > var googleCalendar = new Class({
> >        Implements: [Options, Events],
> >        options: {
> >                calendarFeedUrl: "http://www.google.com/calendar/feeds/
> > [email protected]/public/full",
> >        },
> >        initialize: function(options){
> >                this.setOptions(options);
> >                this.getCalendarFeed();
> >        },
> >        calendarFeedUrl: "",
> >        googleService: "ieps",
> >        entries: [],
> >        getCalendarFeed: function(){
> >                google.gdata.client.init(this.handleInitError);
> >                this.googleService = new 
> > google.gdata.calendar.CalendarService
> > ('exodub-exodub_calendar-1.0');
>
> >                var futureEventsQuery = new 
> > google.gdata.calendar.CalendarEventQuery
> > (this.calendarFeedUrl);
> >                futureEventsQuery.setFutureEvents();
>
> >                this.googleService.getEventsFeed(futureEventsQuery, 
> > this.handleFeed,
> > this.handleError);
> >        },
> >        handleFeed: function(calendarFeed){
> >                alert("yes");
> >                this.entries = calendarFeed;
> >        },
> >        handleError: function(e){
> >                alert("An error occured!");
> >                alert(e.cause ? e.cause.statusText : e.message);
> >        },
> >        createEventTable: function(table){
> >                alert((this.entries)[0].getTitle().getText());
> >                for (var i = 0; i < (this.entries).length; i++){
> >                        var eventEntry = this.entries[i];
> >                        alert(eventEntry.getTitle().getText());
> >                        var newHTMLRow = document.createElement('tr');
>
> >                        HTMLContent = 
> > (eventEntry.getTimes())[0].getStartTime().getDate
> > ().toDateString();
> >                        this.addTableElement(newHTMLRow, HTMLContent);
>
> >                        HTMLContent = eventEntry.getTitle().getText();
> >                        this.addTableElement(newHTMLRow, HTMLContent);
>
> >                        HTMLContent = HTMLcontent = 
> > (eventEntry.getLocations())
> > [0].getValueString();
> >                        this.addTableElement(newHTMLRow, HTMLContent);
>
> >                        table.appendChild(newHTMLRow);
> >                }
> >        },
> >        addTableElement: function(row,content){
> >                item = document.createElement('td');
> >                item.innerHTML = content;
> >                item.setStyle('visibility','hidden');
> >                row.addChild(item);
> >        },
> >        handleInitError: function(e){
> >                //Do nothing
> >        },
> > });
>
> > In the main function (which is called after domready), I instantiate
> > the class and call
> >        googleCalendarInstance.createEventTable($('gigs_go_here'));
> > but it already goes wrong during the instantiation.
>
> > Thanks already
>
> > Kyran
>
> Kyran,
> I'm not familiar with MooTools classes, but the most likely
> explanation I can think of is that it's somehow interfering with the
> callback after making a server request.
>
> Maybe somebody else on this list is more familiar with it than I am.
> Barring that, I'd recommend avoiding using MooTools if you can't get
> it to work.
>
> --
> Trevor Johns

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Calendar Data API" group.
To post to this group, send email to 
[email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-calendar-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to