it-swarm.com.de

Fügen Sie Ereignisse zu Google Kalender, Yahoo Kalender, Outlook und ical hinzu

Die Benutzer meiner Javascript-basierten Site müssen häufig ein Ereignis erstellen, in dem sie den Namen, die Ereignisbeschreibung, die Startzeit und die Endzeit des Ereignisses zusammen mit dem Datum angeben. Jetzt möchten sie diese Ereignisdetails zu ihrem Google-Kalender oder Yahoo-Kalender oder iCal oder Outlook hinzufügen. Gibt es dafür eine Standardbibliothek? Ich versuche, es in den letzten 3 Tagen herauszufinden, obwohl mir Google apis bekannt ist, iCal und Outlook oder auch Yahoo sind mir nicht bekannt. Ich suche etwas sehr Ähnliches " http://compute2011.doattend.com/ ". Auf der rechten Seite sehen Sie diesen Teil "Diese Seite zu Ihrer Site hinzufügen". Ich möchte dasselbe tun.

Bitte hilf mir, in die Hände zu bekommen.

19
Jeevan Dongre

Ich habe heute Abend nach etwas Ähnlichem gesucht und dieses jQuery-Plugin gefunden, das Ihnen scheinbar helfen könnte. Sie können direkt .ics-Dateien "on the fly" direkt erzeugen, was für Google, Outlook, iCal und Yahoo von Vorteil sein sollte.

http://keith-wood.name/icalendar.html

Ich hatte zwar noch keine Gelegenheit, es selbst zu testen, plane es aber in den nächsten Tagen. Jedoch HTH!

12
Zalakain

Hier ist, was ich verwende, wenn es jemandem hilft, ich verwende ASP.NET MVC/C #, sollte Ihnen aber den Überblick geben, was für den Aufbau selbst erforderlich ist.

Outlook & iCal:

var icsUrl = '/todos/geticsfile/' + id;

public ActionResult GetIcsFile(string id) {
            var user = UserService.Get(UserId);
            var todo = ToDoService.Get(id);
            var content = GetOutlookFileContents(user, todo);
            var bytes = Encoding.UTF8.GetBytes(content);
            return File(bytes, "text/calendar", "housters-todo.ics");
        }

public static string GetOutlookFileContents(User user, ToDo todo) {
            var builder = new StringBuilder();

            builder.AppendLine("BEGIN:VCALENDAR");
            builder.AppendLine("METHOD:REQUEST");
            builder.AppendLine("PRODID:Microsoft Exchange Server 2010");
            builder.AppendLine("VERSION:2.0");
            builder.AppendLine("BEGIN:VTIMEZONE");
            builder.AppendLine("TZID:Eastern Standard Time");
            builder.AppendLine("BEGIN:STANDARD");
            builder.AppendLine("DTSTART:16010101T020000");
            builder.AppendLine("TZOFFSETFROM:-0700");
            builder.AppendLine("TZOFFSETTO:-0800");
            builder.AppendLine("RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11");
            builder.AppendLine("END:STANDARD");
            builder.AppendLine("BEGIN:DAYLIGHT");
            builder.AppendLine("DTSTART:16010101T020000");
            builder.AppendLine("TZOFFSETFROM:-0800");
            builder.AppendLine("TZOFFSETTO:-0700");
            builder.AppendLine("RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3");
            builder.AppendLine("END:DAYLIGHT");
            builder.AppendLine("END:VTIMEZONE");
            builder.AppendLine("BEGIN:VEVENT");
            builder.AppendLine("ORGANIZER;CN=" + user.Name + ":MAILTO:" + user.EmailAddress);
            builder.AppendLine("ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=" + user.EmailAddress + ":MAILTO:" + user.EmailAddress);
            builder.AppendLine("DESCRIPTION;LANGUAGE=en-US:" + todo.Task);
            builder.AppendLine("SUMMARY;LANGUAGE=en-US:" + todo.TitleOrTask);
            builder.AppendLine("DTSTART;TZID=Eastern Standard Time:" + todo.DueDate.Value.ToString("yyyyMMdd"));
            builder.AppendLine("DTEND;TZID=Eastern Standard Time:" + todo.DueDate.Value.ToString("yyyyMMdd"));
            builder.AppendLine("UID:" + Guid.NewGuid().ToString());
            builder.AppendLine("CLASS:PUBLIC");
            builder.AppendLine("PRIORITY:5");
            builder.AppendLine("DTSTAMP:" + todo.DueDate.Value.ToString("yyyyMMdd") + "T023422Z");
            builder.AppendLine("TRANSP:OPAQUE");
            builder.AppendLine("STATUS:CONFIRMED");
            builder.AppendLine("SEQUENCE:0");
            if(todo.PropertyId != null) {
                var property = PropertyService.Get(todo.PropertyId);
                builder.AppendLine("LOCATION;LANGUAGE=en-US:" + property.FullAddress);
            }
            else {
                builder.AppendLine("LOCATION;LANGUAGE=en-US:Unknown");
            }
            builder.AppendLine("X-Microsoft-CDO-APPT-SEQUENCE:0");
            builder.AppendLine("X-Microsoft-CDO-OWNERAPPTID:2112076272");
            builder.AppendLine("X-Microsoft-CDO-BUSYSTATUS:TENTATIVE");
            builder.AppendLine("X-Microsoft-CDO-INTENDEDSTATUS:BUSY");
            builder.AppendLine("X-Microsoft-CDO-ALLDAYEVENT:FALSE");
            builder.AppendLine("X-Microsoft-CDO-IMPORTANCE:1");
            builder.AppendLine("X-Microsoft-CDO-INSTTYPE:0");
            builder.AppendLine("X-Microsoft-DISALLOW-COUNTER:FALSE");
            builder.AppendLine("BEGIN:VALARM");
            builder.AppendLine("ACTION:DISPLAY");
            builder.AppendLine("DESCRIPTION:REMINDER");
            builder.AppendLine("TRIGGER;RELATED=START:-PT15M");
            builder.AppendLine("END:VALARM");
            builder.AppendLine("END:VEVENT");
            builder.AppendLine("END:VCALENDAR");

            return builder.ToString();
        }

Google:

var text = encodeURIComponent('Housters To-Do Due: ' + self.task());
            var startDate = moment(self.dueDate()).format('YYYYMMDD');
            var endDate = moment(self.dueDate()).add('days', 1).format('YYYYMMDD');
            var details = encodeURIComponent(self.task());
            var location = encodeURIComponent(self.propertyName());
            var googleCalendarUrl = 'http://www.google.com/calendar/event?action=TEMPLATE&text=' + text + '&dates=' + startDate + '/' + endDate + '&details=' + details + '&location=' + location;
5
Justin

Für eine reine Javascript-Lösung gibt esics.js. Es generiert ics-Dateien nur mit Javascript. Der einzige Nachteil ist, dass ältere Versionen von IE nicht unterstützt werden.

4
InsanelyADHD
4
Praveen Vijayan

Ich denke, dass dies die beste Option ist. Dieses Plugin kann eine .ics-Datei aus Variablen in HTML erstellen.

http://addtocalendar.com/

1
RicardoGonzales