Where you define EVENT_FEED_URL, change "public" to "private".

The public feed does does not contain the edit links. Private feeds  
do. Otherwise the two feed types contain similar data. See 
http://code.google.com/apis/calendar/reference.html#Visibility


Ray


On Aug 25, 2008, at 6:25 AM, Bharathi wrote:

>
> Thank you for your reply.
>
> But if I  don't use public calendar feed, I could not get the list of
> all calendar feeds displayed in the page.
> I want to update/insert events on my own calendars. For that reason I
> should get the events of all calendars displayed in my page.
>
> Best regards,
> Bharathi
>
>
>
> On Aug 23, 12:10 am, Ray Baxter <[EMAIL PROTECTED]> wrote:
>> You are retrieving events from a public feed (see your
>> EVENT_FEED_URL). Public feeds don't have edit links for the events
>> that they contain. That's why you are receiving the "entry has no  
>> edit
>> link" error.
>>
>> Ray
>> --
>> Ray Baxter
>> [EMAIL PROTECTED]
>>
>> On Aug 22, 2008, at 5:24 AM, Bharathi wrote:
>>
>>
>>
>>
>>
>>> What steps will reproduce the problem?
>>> 1. please access the web page "http://www.sahrudaya.com/DC.html";
>>
>>> 2. I used javascript to communicate with my calendarservices.
>>> In my page I tried to list all my calendars and the respective  
>>> events.
>>> Till that point it is working fine.
>>> I tried to do some changes to the existing event and save it to the
>>> calendar. But it is giving error as "entry has no edit link".
>>
>>> Then I added an update event code in my program and I was able to
>>> update
>>> only my private events.
>>> // Create a CalendarEventQuery, and specify that this query is
>>> // applied toward the "private/full" feed
>>> Here the CalendarEventQuery is not allowing me to give  
>>> "allcalendars/
>>> full"
>>> feed.
>>
>>> What is the expected output? What do you see instead?
>>
>>> Can any one help me to resolve this. I would like to save/modify
>>> events to
>>> my private as well as public and other calendars(who has given me
>>> permissions to update their events) programatically.
>>
>>> Thank you,
>>
>>> Bharathi
>>
>>> My program goes like this:
>>
>>> <html>
>>> <head>
>>> <script type="text/javascript"
>>>  src="http://www.google.com/jsapi?key=mykey";>
>>> </script>
>>>  <script type="text/javascript">
>>
>>> var DEFAULT_PANE = "default-pane";
>>> var AUTHENTICATED_PANE = "authenticated-pane";
>>> var AUTH_BUTTON = "auth-button";
>>> var LOGOUT_BUTTON = "logout-button";
>>> var SAVE_BUTTON = "save-button";
>>> var CAL_SELECT = "cal-select";
>>> var EVENT_SELECT = "event-select";
>>> var TITLE_FIELD = "title-field";
>>> var TITLE_CHANGE="title-change";
>>> var DATE_FIELD = "date-field";
>>> var LOCATION_FIELD = "location-field";
>>> var ATTENDEES_FIELD = "attendees-field";
>>> var NOTES_FIELD = "notes-field";
>>> var STATUS_AREA = "status-area";
>>
>>> var CAL_FEED_URL = "http://www.google.com/calendar/feeds/default/
>>> allcalendars/full";
>>> var myService;
>>> var EVENT_FEED_URL;
>>> var myEventsFeed;
>>> var myCalFeed;
>>
>>> google.load("gdata", "1");
>>
>>> function init()
>>> {
>>>  google.gdata.client.init(handleError);
>>
>>>  var token = google.accounts.user.checkLogin(CAL_FEED_URL);
>>
>>>  myService =
>>>      new google.gdata.calendar.CalendarService("GoogleInc-
>>> jsguide-1.0");
>>
>>>  var authButton = document.getElementById(AUTH_BUTTON);
>>
>>>  if (google.accounts.user.checkLogin(CAL_FEED_URL))
>>>      {
>>>            document.getElementById(DEFAULT_PANE).style.display =  
>>> "none";
>>>             
>>> document.getElementById(AUTHENTICATED_PANE).style.display =
>>> "inline";
>>>            getCalendars();
>>>      }
>>>  else
>>>      {
>>>            document.getElementById(DEFAULT_PANE).style.display =  
>>> "inline";
>>>             
>>> document.getElementById(AUTHENTICATED_PANE).style.display = "none";
>>>      }
>>
>>>  reset();
>>> };
>>
>>> google.setOnLoadCallback(init);
>>
>>> function login()
>>>    {
>>>      var token = google.accounts.user.login(CAL_FEED_URL);
>>>    };
>>
>>> function logout()
>>>    {
>>>      google.accounts.user.logout();
>>>      init();
>>>    };
>>
>>> function getCalendars()
>>>    {
>>>      myService.getAllCalendarsFeed(CAL_FEED_URL,  
>>> handleCalendarFeeds,
>>> handleError);
>>>    };
>>
>>> function handleCalendarFeeds(myCalFeedResults)
>>> {
>>>  var calList = document.getElementById(CAL_SELECT);
>>>  calList.onchange = loadCalEvent;
>>>  calList.disabled = false;
>>>  calList.options[calList.selectedIndex].disabled = true;
>>>  calList.options[calList.selectedIndex].text = "Select...";
>>
>>>  myCalFeed = myCalFeedResults.feed;
>>>  events = myCalFeed.getEntries();
>>
>>>    for (var i = 0; i < events.length; i++)
>>>            {
>>>            var option = document.createElement("option");
>>>            eventTitle = events[i].getTitle().getText();
>>>            option.value = i;
>>>            option.appendChild(document.createTextNode(eventTitle));
>>>            calList.appendChild(option);
>>>            }
>>> };
>>
>>> function loadCalEvent()
>>> {
>>>    var calList = document.getElementById(CAL_SELECT);
>>>    var eventList = document.getElementById(EVENT_SELECT);
>>>    var calIndex = calList.options[calList.selectedIndex].value;
>>>    var entries = myCalFeed.getEntries();
>>>    var calendarEntry = myCalFeed.getEntries()[calIndex];
>>>    var calendarTitle = calendarEntry.getTitle().getText();
>>>    if (calendarEntry.getAuthors()[0].getEmail() !=null)
>>>    {
>>>            var calendarTitle1 = (calendarEntry.getAuthors().length  
>>> > 0) ?
>>> calendarEntry.getAuthors()[0].getEmail().getValue(): undefined;
>>>            EVENT_FEED_URL = "http://www.google.com/calendar/ 
>>> feeds/" +
>>> calendarTitle1 + "/public/full";
>>>    }
>>>    getEvents();
>>> };
>>
>>> function getEvents()
>>> {
>>>  var query = new
>>> google.gdata.calendar.CalendarEventQuery(EVENT_FEED_URL);
>>>  alert(EVENT_FEED_URL);
>>
>>>  // Set the start-min parameter to the beginning of today.
>>>  var todayDate = new Date();
>>>  todayDate.setHours(0);
>>>  todayDate.setMinutes(0);
>>>  todayDate.setSeconds(0);
>>>  todayDate.setMilliseconds(0);
>>>  var today = new google.gdata.DateTime(todayDate, false);
>>>  query.setMinimumStartTime(google.gdata.DateTime.toIso8601(today));
>>
>>>  // Set the start-max parameter to the beginning of tomorrow.
>>>  var tomorrowDate = new Date();
>>>  tomorrowDate.setDate(todayDate.getDate() + 1);
>>>  tomorrowDate.setHours(0);
>>>  tomorrowDate.setMinutes(0);
>>>  tomorrowDate.setSeconds(0);
>>>  tomorrowDate.setMilliseconds(0);
>>>  var tomorrow = new google.gdata.DateTime(tomorrowDate, false);
>>
>>> query 
>>> .setMaximumStartTime(google.gdata.DateTime.toIso8601(tomorrow));
>>
>>>  myService.getEventsFeed(query, handleEventsFeed, handleError);
>>> }
>>
>>>  function handleEventsFeed(myResultsFeedRoot1)
>>>  {
>>>      var eventList = document.getElementById(EVENT_SELECT);
>>>      eventList.onchange = loadEvent;
>>>      eventList.disabled = false;
>>>      eventList.options[eventList.selectedIndex].disabled = true;
>>>      eventList.options[eventList.selectedIndex].text = "Select...";
>>>      eventList.options.length = 1;
>>
>>>      myEventsFeed = myResultsFeedRoot1.feed;
>>>      events = myEventsFeed.getEntries();
>>
>>>      for (var i = 0; i < events.length; i++)
>>>      {
>>>        var option = document.createElement("option");
>>>        eventTitle = events[i].getTitle().getText();
>>>            option.value = i;
>>>        option.appendChild(document.createTextNode(eventTitle));
>>>        eventList.appendChild(option);
>>>      }
>>> };
>>
>>> function loadEvent()
>>> {
>>>  setStatus();
>>>  var saveButton = document.getElementById(SAVE_BUTTON);
>>>  saveButton.disabled = false;
>>>  var eventList = document.getElementById(EVENT_SELECT);
>>
>>>  // If the first option (Select...) is selected, dont do anything
>>>  if (eventList.selectedIndex == 0) { return; }
>>
>>>  var eventIndex = eventList.options[eventList.selectedIndex].value;
>>>  var event = myEventsFeed.getEntries()[eventIndex];
>>
>>>  var title = document.getElementById(TITLE_FIELD);
>>>  title.value = event.getTitle().getText();
>>
>>>  var date = document.getElementById(DATE_FIELD);
>>>  date.value = event.getTimes()[0].getStartTime().getDate();
>>
>>>  var theLocation = document.getElementById(LOCATION_FIELD);
>>>  theLocation.value = event.getLocations()[0].getValueString();
>>
>>>  if (theLocation.value == "undefined") {  theLocation.value = ""; }
>>
>>>  var attendeesDiv = document.getElementById(ATTENDEES_FIELD);
>>>  attendeesDiv.innerHTML = "";
>>
>>>  var participants = event.getParticipants();
>>>  for (var i = 0; i < participants.length; i++)
>>>      {
>>>            var element = document.createElement("div");
>>>            element.innerHTML = participants[i].getEmail();
>>>            attendeesDiv.appendChild(element);
>>>      }
>>
>>>  var notes = document.getElementById(NOTES_FIELD);
>>>  notes.value = event.getContent().getText();
>>>  if (notes.value == "undefined") { notes.value = "";  }
>>> };
>>
>>> /*
>>> * Update an event
>>> */
>>
>>> function update_Event()
>>> {
>>
>>> var searchText= document.getElementById(TITLE_FIELD).value;
>>
>>> // Create a CalendarEventQuery, and specify that this query is
>>> // applied toward the "private/full" feed
>>
>>> var Cal="http://www.google.com/calendar/feeds/default/private/full";;
>>> var token = google.accounts.user.login(Cal);
>>> var query = new google.gdata.calendar.CalendarEventQuery(Cal);
>>
>>> alert('Calendar URL is:'+Cal);
>>
>>> // Set the query with the query text
>>> query.setFullTextQuery(searchText);
>>
>>> // Flag to indicate whether a match is found
>>> var eventFound = false;
>>
>>> // The first matched event entry will have its title updated to this
>>> string
>>
>>> var newTitle= document.getElementById(TITLE_CHANGE).value;
>>
>>> // This callback method that will be called when getEventsFeed()
>>> returns feed data
>>> var callback = function(result) {
>>
>>> // Obtain the array of matched CalendarEventEntry
>>
>>> var entries = result.feed.entry;
>>
>>> // If there is matches for the full text query
>>> alert('The length'+ entries.length);
>>
>>>  if (entries.length > 0)
>>>              {
>>>                    // update the first matched event title
>>
>>>                    var event = entries[0];
>>
>>>                    alert(event.getHtmlLink().getHref());
>>>                    alert('Edit Link is:'+  
>>> event.getEditLink().getHref());
>>
>>>                     
>>> event.setTitle(google.gdata.Text.create(newTitle));
>>
>>>                    event.updateEntry(
>>>                    function(result) {
>>>                    alert('event updated');
>>>                    },handleError
>>>                    );
>>
>>>              }
>>>  else
>>>              {
>>>                    // No match is found for the full text query
>>>                    alert('Cannot find event(s) with text: ' +  
>>> searchText);
>>>              }
>>> }
>>
>>> // Error handler to be invoked when getEventsFeed() or updateEntry()
>>> // produces an error
>>
>>> var handleError = function(error) {
>>>  alert('handleerror'+error);
>>> }
>>
>>> // Submit the request using the calendar service object
>>> myService.getEventsFeed(query, callback, handleError);
>>
>>> };
>>
>>> function saveEvent() {
>>
>>>  var eventList = document.getElementById(EVENT_SELECT);
>>>  var eventIndex = eventList.options[eventList.selectedIndex].value;
>>>  var event = myEventsFeed.getEntries()[eventIndex];
>>>  var title = document.getElementById(TITLE_FIELD).value;
>>
>>>  var date = new Date(document.getElementById(DATE_FIELD).value);
>>>  event.setTimes(null);
>>>  var when = new google.gdata.When();
>>
>> ...
>>
>> read more ยป- Hide quoted text -
>>
>> - Show quoted text -
>
> >


--~--~---------~--~----~------------~-------~--~----~
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