The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
An event-sharing system includes an event application that provides access to an events repository. Event data within the events repository reflects real world events. The event application may be used by clients to share real world event data. Specifically, the event application includes an event application interface that allows clients to share and collaborate in a social events network environment. The event application also allows clients to request event data display code for republishing event data to end-user applications that do not interact directly with the event application or events repository. Clients can insert the event data display code into web pages or applications that are available for end user applications to retrieve.
When end-user applications retrieve web pages or applications that contain the event data display code, the end-user applications process the code and cause a request to retrieve event data to be sent to an event republishing server. The event republishing server responds to the request by performing a query on the events repository and responding with the appropriate event records, which contain event data reflecting real world events. Further, through the event application interface, clients may customize the manner in which event data is displayed to end-users using end-user applications.
Therefore, according to one aspect of the invention, a method is provided for generating event data display code, the method comprising receiving, from a client over a network, first data that identifies a set of event data stored in a repository, wherein the event data stored in the repository reflects real world events, receiving from the client second data that identifies one or more display characteristics for the event data, wherein the display characteristics indicate the manner in which the event data is to be displayed, receiving from the client a request for a set of one or more instructions, which, when processed, causes the set of event data to be displayed on a graphical user interface in the manner specified by the second data, and, in response to the request, generating and providing the set of instructions to the client.
According to one embodiment, the events repository may store event data in an organized data structure. One such data structure is a database, and the event data reflecting real world events is stored in the form of event records. In one embodiment, event records within the events repository may be identified by an event ID, and event-author, an event venue and a time. The event-author information identifies the user that created the event record information. Also, the event venue identifies the physical location of the event while the event time identifies the calendar/clock time when the event will occur. Other information that may be associated with an event record includes a title and description of the event. Additionally, event records may indicate whether a client has republishing rights to an event, and whether the client has selected the event record to be of interest to the client or included in a client's “watch list.” Note that while event data is described as being stored in the form of event records in an events repository, the invention is not limited to such an embodiment, and event data may be stored in any data structure and organized in any appropriate matter.
In order to access information within the events repository, operations are performed against the events repository by an event application. The event application is controlled by end-users through a graphical user interface known as the event application interface, which may be accessed locally or via the Internet.
Referring now to
Events Repository 102 is used to store event data reflecting one or more real world events. According to one embodiment, the event data is stored in a structured data object such as a database. In this particular embodiment, the event data is stored as event records within the Events Repository 102, and event records reflect real world events. Real world events may be events that take place at a geographic location at a calendar based time. For instance, examples of real world events include, without limitation, concert shows, birthday parties, dinner parties, meetings, and other similar events.
Event Application 104 generally represents an application that is designed to perform operations on the Events Repository 102. Example operations that the Event Application 104 may perform on Event Repository 102 include querying data according to user-specified filters and inserting data into the Events Repository 102 in the form of event records. Additionally, Event Application 104 formats data received from the Events Repository 102 for display to a user using the Event Application Interface 106. Through the Event Application Interface 106, a user may interact with the Event Application 104 to perform a number of other tasks as outlines in further detail herein.
Event Application Interface 106 provides an interface for allowing users to access, view and modify information located within the Events Repository 102. The Event Application Interface 106 allows users to control the Event Application 104 through a graphical user interface (GUI) environment. According to one embodiment, the Event Application Interface 106 is implemented as a web application that may be accessed via the Internet or World Wide Web (Web). In other embodiments, the Event Application Interface 106 may be located locally with the same system as Event Application 104 or Events Repository 102.
In another embodiment, the Event Application Interface 106 allows users to request event data display code. Event data display code is used by users to display event data on user's own web pages or applications that are separate from the Event Application 104 and Event Application Interface 106. For instance, using the Event Application Interface 106, a user of Client 108 can interact with Event Application 104 and select a particular set of events that the user would like to republish using an application separate from the Event Application 104. Specifically, a user of Client 108 may desire to re-publish event data to users via Web Server 110. In order to do so, a user of Client 108 may request event data display code so that the display code may be inserted into client applications. Examples of such applications include, without limitation, web pages hosted by a Web Server 110 or other client based applications. Instead of requiring end-users to directly interact with Event Application 104 to obtain the event data, users may simply interact with Web Server 110 and view a tailored set of event data as selected by Client 108.
In one embodiment, when a user would like to republish event data on the user's web page or application, the user may invoke a web browser and request to access the event application interface. The event application interface is provided to the web browser, and, when executed, cause a graphical user interface to be presented to the user using the browser. Through the event application interface, a user requests a set of instructions which may be used to republish the event data. The set of instructions are referred to herein as the event data display code. Using the event application interface, a client can select a set of events, display characteristics, and other parameters causing event data display code to be generated and used to display event data on the user's web page or application.
Generally, according to one embodiment, clients are allowed to republish events from the Events Repository 102 to which a user of Client 108 has republication rights for. In order to determine which event records a user has republication rights for, the event application interface 106 can request user identification information. When Client 108 invokes the event application interface, for example, through a web browser, the event application interface can request that the user enter identifying information such as a user name and password. Once the event application interface verifies the user's identity, the event application can communicate with the event data repository to determine which event records the user is authorized to republish to third parties.
Thus, after verifying the identity of the user of Client 108, Event Application 104 can allow Client 108 to request event data display code using Event Application Interface 106.
Referring now to
In another embodiment, a user may alternatively select all events that are included in a particular user-group. Event Application 104 may define groups of users or user-groups. User-groups define a set of users within the Event Application 104 with a common interest or attribute. For example, one user-group may be directed towards users in one geographic location while another user-group may be directed towards users with a particular taste in music. At screen 302, a user of Client 108 can select the particular group that Client 108 belongs to, causing all events within that user-group to be included in the set of event records for republication.
In other embodiments, a user of Client 108 may choose to republish all events that the user is authorized to republish. Republishing rights may be granted to a user for a particular event if one or more conditions are satisfied. For instance, republishing rights for an event record may be granted to a user if the user is the author of the event. Further, republishing rights may be granted to a user if the author of the event has designated that the user may view and/or republish the author's event. Whether a user has republishing rights to an event may be verified by examining the event record within the Events Repository 102. According to one embodiment, event records may contain a field indicating weather a particular user is allowed to view and/or republish the event record.
Once a user of Client 108 has selected a set of event records for republication, the user can additionally select display characteristics for presenting the selected event records at a graphical user interface. Still referring to
Referring now to
Thus, referring back to
In one embodiment, the event data display code is provided back to a user of Client 108 on a graphical user interface screen of the Event Application Interface 106. Referring now to
In other embodiments, the event data display code may be provided back to a user of Client 108 in any appropriate manner, such as through an e-mail application or any other appropriate method of communicating the event data display code to the user.
Further, in another embodiment, the event data display code may be generated and provided to an entity other than a user of Client 108. For instance, the event data display code may be provided to a Web Server 110 for entry into one or more web page instructions. Web page instructions, referred to hereinafter as web page code, when processed, causes graphical user interface screens to be displayed to users utilizing web browser applications. Additionally, in another embodiment, the event data display code may be provided to a user of Client 108 through any other appropriate means.
Referring to
Once a user of Client 108 has submitted a request for the event data display code, the Event Application 104 receives the request and generates the event data display code in accordance with the client's specifications. For instance, Event Application 104 generates event data display code which includes (a) a request for event records that satisfy the client's criteria, (b) display characteristics such as the color, size and of the display area, (c) the event record fields to include in the display. Note that the invention is not limited to the aforementioned characteristics, and clients may select any number of different characteristics to be used in generating the event data display code.
Thus, a user of Client 108 may request event data display code to be generated with certain characteristics from the Event Application 104, and in response, receive the event data display code as requested. In this manner, a user of Client 108 need not take the time and effort to develop the event data display code. When the event data display code is processed by applications, event records which satisfy the conditions specified by the user be displayed on a graphical user interface in the manner specified by the user. According to one embodiment, the event data display code is a set of one or more instructions, which, when executed, cause the selected event data to be displayed according to the display characteristics selected by the user of Client 108.
According to one embodiment, when a user of Client 108 has received the event data display code, the user may insert the event data display code into a web page or client application located away from the Event Application 104. Referring now to
According to one embodiment, User 406A, through Client 406, requests the particular web page containing the event data display code from Web Server 404. In response, Web Server 404 delivers the web page code, including the event data display code, to Client 406. The web page code is executed by a web browser application hosted on Client 406, which interprets and executes the web page code for display to User 406A. Web browser applications are used to parse and interpret web page code in order to create a graphical representation of web pages to end-users. For example, users browsing the Web may make a request for a web page to be displayed. Users request web pages by connecting to Web Server 404, which contains one or more web pages developed by Client 402. When the web page code is processed by the web browsers, the web page designed by Client 402 will display to User 406A.
During execution of the web page code, the event data display code is also executed by the browser application of Client 406. According to one embodiment, the event data display code is in the form of Javascript commands embedded within Hypertext Transfer Markup Language (HTML) instructions. Javascript commands may be interpreted and executed by any machine containing the appropriate application, such as a Javascript-capable web browser. Further, in other embodiments, the event data display code may be supplied as Flash actionscript code representing a Flash movie or dynamic image. Alternatively, the event data display code may be in any appropriate format. Note that in other embodiments, the code may be processed in many different manners.
When the event data display code is executed, a request for the particular set of event data is sent from Client 406 to Event Republishing Server 408. According to one embodiment, as described above, the request for the particular set of event data may be embedded within the event data display code. When the event data display code is executed, a request command is executed and sent to the Event Republishing Server 408. In response, Event Republishing Server 408 receives the request and performs one or more operations on Events Repository 410. Events Repository 410 responds to Event Republishing Server 408 with event data, and the event data is forwarded to Client 406 through Event Republishing Server 408. In response, to the request, Event Republishing Server 408 populates the event display area of the event data with the event records retrieved from the request.
Referring now to
At step 416, when the event data display code is processed by the browser application, a request to retrieve event data is sent from the user's application to the Event Republishing Server 408. The Event Republishing Server 408 is responsible for authenticating the request and querying the Events Repository 410 for the appropriate event records. According to one embodiment, the request for event data embedded within the event data display code is in a format not native to the Events Repository 410. Thus, Event Republishing Server 408 receives the non-native request, interprets the request and generates a query that is in a format native to the Events Repository 410. At step 418, the Event Republishing Server 408 submits the query to the Events Repository 410, and at step 420, the Events Repository 410 responds with any event records that have satisfied the query.
The Event Republishing Server 408, at step 422, forwards the appropriate event records to the browser application on Client 406. According to one embodiment, the Event Republishing Server 408 is responsible for ensuring that the event records that satisfy conditions of the user's request are displayed with the correct characteristics. Thus, the Event Republishing Server 408 can interpret the event data display code and cause the event records to be displayed in the correct format. As such, the generation of event data display code and the republishing of event data away from an Event Application 104 is enabled.
Computer system 500 may be coupled via bus 502 to a display 512, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 514, including alphanumeric and other keys, is coupled to bus 502 for communicating information and command selections to processor 504. Another type of user input device is cursor control 516, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 504 and for controlling cursor movement on display 512. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 500 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another machine-readable medium, such as storage device 510. Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “machine-readable medium” as used herein refers to any medium that participates in providing data that causes a machine to operate in a specific fashion. In an embodiment implemented using computer system 500, various machine-readable media are involved, for example, in providing instructions to processor 504 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 502. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Common forms of machine-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of machine-readable media may be involved in carrying one or more sequences of one or more instructions to processor 504 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 502. Bus 502 carries the data to main memory 506, from which processor 504 retrieves and executes the instructions. The instructions received by main memory 506 may optionally be stored on storage device 510 either before or after execution by processor 504.
Computer system 500 also includes a communication interface 518 coupled to bus 502. Communication interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522. For example, communication interface 518 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 520 typically provides data communication through one or more networks to other data devices. For example, network link 520 may provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526. ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528. Local network 522 and Internet 528 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 520 and through communication interface 518, which carry the digital data to and from computer system 500, are exemplary forms of carrier waves transporting the information.
Computer system 500 can send messages and receive data, including program code, through the network(s), network link 520 and communication interface 518. In the Internet example, a server 530 might transmit a requested code for an application program through Internet 528, ISP 526, local network 522 and communication interface 518.
The received code may be executed by processor 504 as it is received, and/or stored in storage device 510, or other non-volatile storage for later execution. In this manner, computer system 500 may obtain application code in the form of a carrier wave.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
This application is related to U.S. patent application Ser. No. 11/392,092 filed on Mar. 28, 2006, entitled “ACCESSING AN EVENTS REPOSITORY”; and U.S. patent application Ser. No. ______ (Attorney Docket No. 50269-0802) filed on same date herewith, entitled “REPUBLISHING GROUP EVENT DATA”; the entire content of which is incorporated by this reference for all purposes as if fully disclosed herein.