The disclosed embodiments relate generally to calendar systems. More particularly, the disclosed embodiments relate to methods, systems, and user interfaces for transmitting and rendering information events from publication sources on a calendar in the calendar system.
Electronic calendars are useful because, typically, they can be viewed and manipulated in a convenient manner from either a user's desktop or portable device. Further, electronic calendars can be shared easily amongst individuals.
However, it is typically inconvenient to incorporate information from various publication sources into a user's selected electronic calendar. For example, recent photographs, blog posts, and news feeds include a date component, but are inconvenient to view through a calendar application.
Various embodiments of the invention are disclosed in the following Description of Embodiments herein, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
Methods, systems, user interfaces, and other aspects of the invention are described. Reference will be made to certain embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the embodiments, it will be understood that it is not intended to limit the invention to these particular embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents that are within the spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Moreover, in the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that the invention may be practiced without these particular details. In other instances, methods, procedures, components, and networks that are well known to those of ordinary skill in the art are not described in detail to avoid obscuring aspects of the present invention.
According to certain embodiments of the invention, a publication source that provides content that has one or more dates associated with the content is identified and accessed. It is determined whether the data from the publication source conforms with a predefined data exchange format for calendars. If the data conforms with the predefined data exchange format, then the data is transmitted to at least one client where at least a portion of the transmitted data is rendered in a calendar view at a display location corresponding to a date specified for the data. According to some embodiments, if the data fails to conform with a predefined data exchange format, then the data is re-formatted to a default data exchange format for calendars before transmitting the data to at least one client where at least a portion of the transmitted data is rendered in a calendar view at a display location corresponding to a date specified for the data.
Non-limiting examples of publication sources include electronic news feeds, blog posts, electronic photo galleries, and websites that publish content that has one or more dates associated with the content. Client computers 102 can be any of a number of computing devices (e.g., Internet kiosk, personal digital assistant, cell phone, gaming device, desktop computer, laptop computer, handheld computer, or combinations thereof) used to enable the activities described below. Client computer(s) 102 is also referred to herein as client(s). Client 102 includes a graphical user interface (GUI) 111. One embodiment of client 102 is described in greater detail herein with reference to
Calendar system 108 includes one or more servers, such as server 112, connected to the communications network 106 via network communication module 122. Calendar system 108 may also include user information databases 116, calendar database 120 and may include other databases 118. Server 112 includes a user information processing module 124 and applications 128. The network communications module 122 connects server 112 to the communication network 106 and enables the receipt of communications from the communication network 106 and the provision of communications to the communication network 106 bound for client 102 or other destinations. Server 112 communicates with databases internal to the calendar system 108, such as user information databases 116, calendar database 120 and other databases 118, if any. These internal communications may be handled by network communication module 122, by a local area network, by internal communication busses, or by any other appropriate mechanism or combination of mechanism. One embodiment of server 112 is described in greater detail herein with reference to
Server 112 communicates with clients 102 and publication sources 132 via network communication module 122 and communication network(s) 106. Publication sources 132 reside in web servers, or other computers or devices 130 external to the calendar system. Publication sources 132 are typically generated and updated by entities other than the calendar system 108, and thus are typically outside the control of the calendar system 132. Nevertheless, publication sources 132 may contain information events that are of interest to the users of the calendar system 132. When information events are properly formatted (as defined below), the calendar system 108 can import the information events from such publication sources 132 and then provide the information events to those users who have subscribed to one or more of the publication sources.
In the case where the calendar system includes multiple servers, each server, such as server 112, is coupled to a communications network 106 via a network communication module 122. The communications network 106 may be the Internet, but may also be any local area network (LAN), wide area network (WAN), metropolitan area network, or a combination of such networks. In some embodiments, server 112 is a Web server that manages electronic calendars using appropriate communication protocols. Alternatively, if server 112 is used within an intranet, it may be an intranet server.
Applications 128 include application programs used for managing an online calendar system and for retrieving data from publication sources 132. User information processing module 124 assists in accessing, updating and modifying user information databases 116. User information databases 116 store various information associated with the users of the calendar system 108, including user preferences and user calendar subscription lists as described in greater detail herein in reference to
In essence, server 112 is configured to manage certain aspects of calendar system 108, including transmitting data to a respective client 102 for rendering at least a portion of the data on an electronic calendar in calendar system 108 based on the respective user's preferences and calendar subscription lists.
In some embodiments, fewer and/or additional modules, functions or databases are included in calendar system 108 and server 112. The modules shown in calendar system 108 and server 112 represent functions performed in certain embodiments.
Notwithstanding the discrete blocks in
Memory 206 may include high speed random access memory and may also include non-volatile memory, such as one or more magnetic or optical disk storage devices. Memory 206 may optionally include one or more storage devices remotely located from the CPU(s) 202. In some embodiments, memory 206 stores the following programs, modules and data structures, or a subset or superset thereof:
In some embodiments, server 112 includes the following non-limiting examples of elements, or a subset of such elements: a user information processing module 124, and an applications module 128 that includes application programs such as a calendar client interface application program 128-1, a calendar trawler application program 128-2, and optionally a text-to-information event transformation program 128-3. Applications module 128 may optionally include other applications 128-N. In some embodiments, server 112 uses calendar trawler application program 128-2 to retrieve data from publication sources 132. For example, in some embodiments the calendar trawler 128-2 may periodically (e.g., one or more times per day) access publication sources that provide content that has one or more dates associated with the content and to which users of the calendar system have subscribed, so as to retrieve any new or updated content in those publication sources. The retrieved content, if formatted in a manner compatible with the calendar system, is then incorporated into the calendar database 120. According to certain embodiments, the retrieved content may have a format that is incompatible with the calendar system. In some embodiments, the calendar system includes a text-to-information event transformation program 128-3 that is used to automatically transform the retrieved content into a default format that is compatible with the calendar system. The transformed content is stored in the calendar system and transmitted to calendar users who have subscribed to the publication source from which the content was retrieved. The calendar client interface application program 128-1 sends calendar information to clients 102, and receives and responds to commands received from clients 102. User information processing module 124 may be used for accessing and modifying user information database 116. For example, when a user subscribes to a publication source from which information events can be imported, or the calendar of another user, or un-subscribes from any such publication source or calendar, the user information processing module updates the user information database 116 accordingly. In some embodiments, server 112 and/or the databases 116, and 120 include additional modules.
In some embodiments, calendar data 336 includes all the calendar data needed for a current display of calendar information on the GUI 111 of the client 102, as well as additional calendar data for a range of dates before and after the dates currently on view in the GUI 111. The range of dates for which calendar data is stored in the client 102 may vary in accordance with the range of dates that the user (of client 102) has viewed during a current session of working with or viewing the user's online calendar. This calendar data 336 is downloaded by the client calendar program 330, which is executed by the client 102 (e.g., by a browser application residing in the client 102). In some embodiments, the calendar data 336 is organized in a manner similar to the calendar database 500 shown in
The above identified modules and applications in
Although
According to certain embodiments, a user can subscribe to a number of publication sources 132 from which information events can be imported. If a publication source subscribed by the user is published in a predefined calendar exchange format, then content from the subscribed publication source can be rendered on the user's electronic calendar as information events as described with reference to
In
Non-limiting examples of predefined calendar exchange formats include extensions to content feed formats (e.g., the Atom Syndication format or the RSS format), and extensions to the iCalendar format, according to certain embodiments. In some embodiments, a content feed is specified using a content syndication format, such as RSS. RSS is an acronym that stands for “rich site summary,” “RDF site summary,” or “Really Simple Syndication.” “RSS” may refer to any of a family of formats based on the Extensible Markup Language (XML) for specifying a content feed and content items included in the feed. In some other embodiments, other content syndication formats, such as the Atom syndication format, may be used to specify content feeds.
In some embodiments, the calendar system 108 accepts, from publication sources, content that is formatted in any one of the following distinct calendar data exchange formats: a first calendar data exchange format that is an extension of the iCalendar format (i.e., it includes additional fields for defining information events, as explained in more detail below), a second calendar data exchange format that is based on XML, and a third calendar data exchange format that is based on a predefined content feed format (e.g., Atom or RSS). In other embodiments, the calendar system 108 may accept content in the VCalendar format, extended to include additional fields for defining information events, in addition to or in place of any of the aforementioned data exchange formats. An addition calendar Further, according to certain embodiments, the calendar system will accept information events that are not formatted in any of the above calendar data exchange formats. In such cases, the calendar system automatically re-formats the information event to a default format (e.g., the Atom content feed format for information events) that is compatible with the calendar system. Fields of the resulting information event, such as date, title and summary may be inferred from the received information, while other fields, such as the icon, may be populated with default values.
Table 1 shows an example of the data for an information event, using a calendar exchange format based on the iCalendar format.
Similarly, Table 2 shows the data for an information event using an XML-based calendar data exchange format. In this example, the XML-based format is also an Atom content feed format.
Table 2 shows a “start” and “end” field that specifies a date for the information event. The “title” field specifies a title that may be displayed as an information event summary, as described in greater detail with reference to
The link rel=http://schemas.google.com/gCal/2005/webContent defines the relation type. The “href” field specifies the icon URL for the information event. The icon URL specifies the location (e.g., an Internet location) of an information event icon to be displayed in a user's calendar. The “gCal: webcontent” field specifies the content URL. The content URL specifies the location (e.g., an Internet location) of content to be displayed when a user selects the information event.
In one embodiment, the first calendar data exchange format is incompatible with the second calendar data exchange format. For example, each publication source provides information events using a distinct calendar data exchange format. According to certain embodiments, an API is exposed for use by content publishers. The API defines fields relating to calendar content, calendar content icon, calendar content title, calendar content URL, calendar content type, calendar content width, and calendar content height, according to certain embodiments.
The calendar database 500 stored in the calendar system 108 will typically include data for many publication sources. A smaller version of the calendar database 500 (corresponding to information events data 338,
As shown in
As shown above, an information event is initially represented in a user's calendar by an icon. The icon may contain a graphic or picture that specifies or hints at the type of information provided by the information event. The displayed icon will typically occupy much less display space than either the summary or the content of the information event. As a result, many information events can be displayed on a calendar, including a plurality of information events on individual dates, without overrunning the display space allocated for those individual dates.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.
This application claims priority to U.S. Provisional Patent Application Ser. No. 60/825,562, filed Sep. 13, 2006, which is incorporated herein in its entirety by reference.
Number | Date | Country | |
---|---|---|---|
60825562 | Sep 2006 | US |