Electronic personal information manager (PIM) applications and calendar applications are typically used for business purposes. These applications cater to users in a business environment and allow users to manage business events. Typically, these products are used by businesses having several users, and allow the users to coordinate and manage tasks during business hours. For example, most PIM and calendar applications allow users to schedule meetings with other networked users during a business day and view events scheduled within typical business hour for a work day, week or month.
PIM and calendar applications provide limited display options for days within a work week. Most of these applications provide a calendar for a business day, a business week (e.g., Monday through Friday), a full week, or a month. When more than one day is illustrated within an interface, the calendars typically provide the same emphasis on each business day.
These present technology, roughly described, pertains to a calendar application (social calendar) for managing social events. The social calendar provides an interface which allows a user to manage events during social time periods of one or more days, weeks or months. In one embodiment, the interface allows a user to manage events within social time periods such as evenings of week days and the entire day of weekends. A social time period may be a period in which a user of the social calendar typically does not work.
In one embodiment, the social calendar application provides an interface which emphasizes social periods in multiple-day views. In this case, social periods such as weekday evenings and weekend days include more scheduling bandwidth than business periods associated with less social time. The bandwidth is provided through primary and secondary scheduling modules associated with different periods of time, such as a day, week or month. In another embodiment, the social calendar may provide a view for managing social events for multiple weekends without displaying the intervening business days.
Events associated with a social calendar can be configured as non-business type events. For example, events for a social calendar may include dinner appointments, concerts, athletic events and other events typically associated with non-business hours. Each of these social events may be configured as an event object. The event object may include parameters and meta-data which can be configured by a user. The event object may then be retrieved and displayed by the calendar application providing the calendar view.
The social calendar may be implemented as a client application or a network-based application. A client calendar application can store user calendar data locally on the client device. In this case, event objects associated with different social events may be added, changed and removed from the local client device as a user configures his or her calendar. A network-based social calendar may save user calendar data remotely. In particular, the social calendar may be implemented using a calendar application or browser application on a client device which can access a remote server over a network. When implemented using a browser application, the application may access a web service provided by one or more web servers and/or related devices. When provided over a network, the social calendar allows the user to schedule and share events with other users, view log in status and other information for other users, and other information.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
A calendar application is provided for managing social events. The social calendar provides a user configurable interface. The interface allows a user to manage events during social time periods of one or more days, weeks or months. The social periods include week day evenings, weekends and other social periods. In one embodiment, a social time period is a period in which the user typically does not work. For example, for a user that typically works 9 a.m. to 5 p.m. Monday through Friday, social time periods of the user would be weekdays after 5 p.m. and all day on weekends.
In one embodiment, the social calendar application provides an interface which emphasizes social periods in multiple-day views. The emphasis on social periods may be implemented by allocating more scheduling bandwidth to social time periods then other periods, such as work periods. More scheduling bandwidth may include more interface space, more inclusive time lines, more event categories available for selection, and other interface features.
In one embodiment, the social calendar interface allows for event scheduling in scheduling modules. For example, a scheduling module may be associated for each day displayed in an interface view. Thus, for an interface providing a week view, there may be seven scheduling modules, one module associated with each day in the week.
Scheduling modules may include primary scheduling modules and secondary scheduling modules. A primary scheduling module may have more scheduling bandwidth then a secondary scheduling module. For example, a primary scheduling module may be associated with a full weekend day, while a secondary scheduling module may be associated with evening hours of a weekday. As such, the primary scheduling module may allow social event scheduling of event objects from 10 a.m. to 9 p.m. and the secondary scheduling module may allow social event scheduling of event objects from 6 p.m. to 9 p.m. Additionally, a primary scheduling module may comprise more space within the interface than a secondary scheduling module. Since the primary scheduling module is associated with a longer time period over which events can be scheduled and/or more space within a social calendar interface than a secondary scheduling module, the primary scheduling module is considered to have a larger bandwidth than the secondary scheduling module. Scheduling modules are illustrated in
Events associated with a social calendar can be configured by a user. For example, events for a social calendar may include dinner appointments, concerts, athletic events and other events which typically occur outside the normal business hours of about 9 a.m. to 5 p.m. Each of these social events may be configured as an event object. The event object may include data, such as event parameters and other meta-data, which can be configured by a user. In one embodiment, a user may enter event object data through an interface provided by the calendar application. The event object may then be displayed, stored and later retrieved or deleted by the calendar application.
The social calendar may be implemented on a client device or over a network. When implemented on a client device, the social calendar is provided by a calendar client application. The client application reads and writes calendar data from client device memory. When implemented over a network, at least a portion of the user data for the social calendar is stored on a remote server. In this case, the social calendar may be provided using a client application which accesses the remote server or through a browser application which accesses a web server providing a content page. In the case of a browser application, the content page provides the calendar interface. When provided over a network, the social calendar allows the user to schedule and share events with other users, view log in status and other information for other users, and other information.
The social calendar of the present technology is discussed in more detail below. In particular, systems and methods associated with social calendar functionality and operation are discussed below with respect to
Client application 115 may communicate with user datastore 117 within client device 110. In one embodiment, client application 115 may be implemented as a calendar application, PIM application or some other application which allows a user to manage a social calendar. Client application 115 also provides calendar interface 118, as indicated by the dotted lines in
User datastore 117 includes user data associated with the social calendar. The user data may include event object data associated with the user, user authentication information, calendar parameters configured by the user, and other data used to configure or populate a calendar interface or otherwise associated with the user. In one embodiment, user datastore 117 may be implemented by local memory of client device 110. Local memory of client device 110 is discussed in more detail below with respect to the computing environment of
Client device 120 includes browser application 125. Browser application 125 communicates with network server 130 over network 150. In one embodiment, network 150 may be implemented as the Internet. Though the system of
Browser application 125 may communicate with network server 130 to retrieve and provide content pages. In one embodiment, browser application 125 may provide calendar interface 128 as a content page. In an embodiment wherein another type of application is used to provide a social calendar and access data from a server over network 150, the particular application would provide calendar interface 128.
Network server 130 includes network server front-end 132 and can optionally include user datastore 135. Network server front-end 132 receives and transmits messages from requesting client devices, such as client device 120. The received messages may include content requests, authentication requests, and other messages. The messages sent by network server front-end 132 may include content responses sent in response to a request, authentication responses, and other messages. Network server frontend 132 provides the social calendar functionality described herein. Operation of network server front-end 132 is discussed in more detail below.
Network server front-end 132 may also access user datastore 135. User datastore 135 is optional, as indicated by the dashed lines comprising user datastore 135 in
The present technology is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the present technology include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The present technology may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The present technology may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 210 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 210 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or present technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory present technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 210. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 230 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 231 and random access memory (RAM) 232. A basic input/output system 233 (BIOS), containing the basic routines that help to transfer information between elements within computer 210, such as during start-up, is typically stored in ROM 231. RAM 232 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 220. By way of example, and not limitation,
The computer 210 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 210 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 280. The remote computer 280 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 210, although only a memory storage device 281 has been illustrated in
When used in a LAN networking environment, the computer 210 is connected to the LAN 271 through a network interface or adapter 270. When used in a WAN networking environment, the computer 210 typically includes a modem 272 or other means for establishing communications over the WAN 273, such as the Internet. The modem 272, which may be internal or external, may be connected to the system bus 221 via the user input interface 260, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 210, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
First, a calendar application is initialized at step 310. Initializing a calendar application involves starting up the application which provides the calendar interface. If the application accesses data over a network, initializing the application may include detecting a network connection on the client device on which the application resides. Next, a determination is made as to whether a user is authenticated at step 320. In one embodiment, after initializing the calendar application at 310, the calendar application will provide an authentication interface to a user. The authentication interface may allow a user to enter a user name, password, and/or other authentication information. Once a user name and password are received, the calendar application may confirm that the user name and password match information stored in the appropriate user datastore. If the user name and password information received from a user matches user and password information stored in a datastore, then the user is authenticated.
In the case of a locally implemented calendar application, the user name and password are compared with data stored in user datastore 117 on client device 110. If user data is accessed over network 150, the application determines if the received user name and password match user name and password information stored on user datastore 135 or user datastore 140. In this case, an authentication request is sent to network server 130 by client device 120. Network server front end 132 receives the authentication request and sends an authentication request to user datastore 135 or user datastore 140. The appropriate user datastore receives the request, determines if the username and password match user data stored in the user datastore, and provides an authentication response to network server front end 132. The authentication response indicates whether the authentication was successful. Network server front end 132 forwards the authentication response to the requesting client device 120.
If the user name and password information received from a user matches user and password information stored in a datastore, then the user is authenticated and the flowchart of
User data is retrieved in response to the authentication at step 330. In one embodiment, the user data retrieved can be associated with a default interface or the last calendar view provided in the calendar interface. The data may be retrieved from local datastore 117 or remote user datastore 135 or 140 depending on the implementation of the calendar application. In the case of a local datastore, client application 115 retrieves the user data from user datastore 117. When accessed from local user datastore 117, the user data may include a series of files. Each file may include data associated with an event object for a user. For example, an event object may include data for a dinner appointment, a sporting event, a wedding, or some other social event associated with the user.
User data may also be retrieved from remote datastores 135 and/or 140. In the case of a network-based calendar application, browser application 125 may request the user data from network server 130. Network server 130, or network server front end 132, may process the request similar to the authentication request discussed above. However, instead of comparing received user authentication information to stored user authentication information, the appropriate user datastore retrieves requested user data and places the data in a response. The response is then sent to network server front end 132, which receives the response ands sends it the requesting application.
After user data has been retrieved, the social calendar interface is constructed and provided at step 340. In one embodiment, the social calendar interface is constructed and populated with the retrieved data. In one embodiment, the constructed interface may be a default calendar interface or the last interface accessed by the user. In any case, the interface is provided with one or more primary scheduling modules, one or more secondary scheduling modules, a combination thereof. Once the interface is constructed, the event objects associated with the user are populated within the interface. Constructing and providing the social calendar interface is discussed in more detail below with respect to
After constructing and providing the social calendar interface, a determination is made as to whether input is received to process event objects at step 350. In one embodiment, receiving input to process an event object includes receiving input to add, change or delete an event object. If input is received to process an event object at step 315, the flowchart of
A determination is made as to whether input is received to adjust a calendar view at step 360. Receiving input to adjust a calendar view may be associated with changing the actual calendar view or calendar view parameters. Changing the actual view may include providing a social view, weekend view, multiple weekend view, or other calendar view within the calendar interface. If input is received to adjust a calendar view, the flowchart of
In some embodiments, steps 402 and 403 may be repeated or skipped. For example, one embodiment of a social calendar may provide primary scheduling modules associated with consecutive weekends. In this case, the calendar interface may include two sets of consecutive primary modules associated with weekends and no secondary modules associated with the intervening weekdays. In this case, step 403 is not performed.
After providing modules in the social calendar interface, the scheduling modules are populated with received data at step 404. Populating the scheduling modules includes populating any primary and secondary scheduling modules with user data retrieved at step 330 of
Providing the data in a social calendar interface includes constructing the interface and populating the interface with the retrieved data. In one embodiment, the constructed interface may be a default calendar interface or the last interface accessed by the user. Once the interface is constructed, the event objects associated with the user are populated within the interface. As discussed above, event objects are a set of data and/or information which can be displayed in the interface and are associated with a social event. For example, event objects associated with user appointments are retrieved at step 330 and placed into the interface. Examples of populated calendar interfaces are illustrated in
Event objects provided within a calendar interface may be configured in response to user input.
The flowchart of
Input is received to add an event object at step 410. In one embodiment, input to add an event object may be received through a calendar interface as a selection of a particular time slot or block within a calendar interface, a selection of an element within a drop down menu, a selection of an icon, or some other input. Next, event object data is received at step 412. The event object data is received from a user. In one embodiment, receiving event object data may include providing an interface in response to the input received at step 410. The interface may allow a user to input data associated with the event object. For example, the interface may allow user to select a category for an event object. Exemplary event object categories may include dinner appointment, sporting event, party and other events. The interface may then allow a user to enter meta-data regarding the event object into the interface. The meta-data may include general data and/or data tailored to the particular event. For example, for a dinner event, the entered meta-data may include a name for the event, name of the restaurant, location of the restaurant, a name under which a dinner reservation is made and other information.
After the event object data is received, an event object is created from the received data at step 414. In the case of a calendar application implemented entirely on client device 110, the event object data is saved by client application 115 to user datastore 117. After the data is stored to user datastore 117, an event object may be provided in the current calendar interface if appropriate. For example, the event object will be displayed in the calendar interface if the event object corresponds to a time currently provided in the calendar interface view.
For a calendar application in which the event object is saved remotely, creating the event object from the received data includes storing the event object data on a datastore associated with a network server. With respect to
Input is received to remove an event object at step 420. The input may be received as a selection from a drop down menu associated with the event object, selection of an icon or some other input within the calendar interface. A determination is then made as to whether a user has confirmed to remove the event object at step 422. Step 422 can be optionally performed to confirm that the object event should be removed from the calendar interface and appropriate user datastore. In one embodiment, step 422 includes providing a user prompt inquiring whether the user wishes to remove the object data, as well as buttons for removing or not removing the object. User selection of the one of the buttons satisfies the determination as to whether the user confirms removal of the event object. If confirmation input is received that the event object should be removed, the flowchart of
At step 424, the event object is removed. Removing the event object may include removing the actual object data from the calendar interface and deleting the data from the appropriate datastore. In the case of a social calendar implemented entirely on a client device, client application 115 sends a message to user datastore 117 to remove the event object. In the case of a social calendar implemented using a remote datastore, browser application 125 sends a message to network server 130 to remove the particular user event object data from user datastore 135 or user datastore 140. In this case, network server front-end 132 receives the user request information, processes the user request by sending a message to user datastore 135 or user datastore 140. Network server front-end 132 receives a confirmation message from the appropriate datastore once the event object data is removed from the appropriate datastore, and forwards the confirmation message to browser application 125. The flowchart of
Input is received to change an event object at step 430. Input may be received to change an event object by user selection of an existing object in a calendar interface. The input may select the event object and then an entry within a drop down menu associated with the event object, a double-click of the object or some other input. Next, updated event object data is received at step 432. Similar to step 412 discussed above, the updated event object data may be received through an interface provided in response to selection of the event object. In one embodiment, updated event object data may include changing existing data, adding missing data, or removing existing data in the interface. After the updated event object data is received at step 432, the updated event object data is saved at step 434. Similar to step 414 discussed above, saving updated event object data may include storing the object data on a local or remote datastore. In addition to saving the event object data, the updated event object is provided in the appropriate calendar interface view. The flowchart of
After receiving input, user data associated with the selected interface view is retrieved at step 520. The retrieved user data may include event objects, user parameters and other data, and is associated with the interface view selected at step 510. In one embodiment, the selected interface view will be associated with certain days and certain times for each day. In this case, the request will include parameters which specify the days and times for each day for which data is requested. The datastore receiving the request retrieves the user data that match the request. For example, if the selected view is one weekend view such as that illustrated in
In the case of a social calendar implemented on a client device, user datastore 117 receives the request from client application 115. In the case of social calendar implemented over a network, network server front-end 132 receives the request and forwards the request to either user datastore 135 or user datastore 140. The receiving user datastore retrieves the data and provides a response containing the data to network server front end 132. The response is then forwarded by network server front end 132 to browser application 125.
The selected calendar view is constructed at step 530. In this case, the days and timelines associated with each day are provided in the calendar interface. The constructed calendar may be a new calendar view or a modified calendar view, depending on the input received at step 510. Examples of calendar interface views are illustrated in
The present technology provides for a social calendar provided by an application. The calendar provides information associated with events outside the typical business time periods. In particular, the calendar provides social events during typical social periods.
Month icon 620 is a visual indicator of the currently viewed month. Month icon 620 includes highlight 622. As the current social calendar interface provides data for an entire week (Monday-Sunday) using scheduling modules 630-636, the corresponding week is highlighted within month icon 620 by highlight 622.
View menu 625 includes a list of user selectable views. View menu 625 includes a year view, month view, seven-day view, five-day view, a social view, and a weekend view. The selected view 627 is “social” view, and is displayed in bold to indicate that the view is currently displayed within interface 610.
Secondary scheduling modules 630-633 are associated with weekdays Monday through Thursday. Each module includes a timeline, one or more timeline entries, and a header. One or more object events may be configured for each timeline entry. In the embodiment illustrated, a timeline entry is associated with each hour. However, timeline entries can be configured to exist at every hour within a timeline, every thirty minutes, every two hours, for an entire day, or some other period of time. For example, for secondary scheduling module 630, the timeline includes spans a time period of 5 p.m. to 9 p.m. in one hour intervals. The timeline entries are associated with each hour in the timeline. The module header indicates that secondary scheduling module 630 is associated with Monday, September 11. Secondary scheduling module 630 also includes event object 642. Event object 642 is associated with the 8:00 timeline entry and provides information that the event object is associated with an “Art Class” appointment. In secondary scheduling module 632, associated with Wednesday September 13, event object 644 is displayed in the timeline entry associated with 8 p.m. The displayed event object provides information as “Dinner at Ted's.”
Upon user selection of event object 642, event object 644, or any other event object in a calendar interface, more information may be provided regarding the event object. In one embodiment, a second interface may be provided with more information. For example, when event object 642 with timeline entry information of “Art Class” is selected, an interface may be provided which indicates the name of the class (“Art Class”), detailed time information, the class location (for example, address and room number), and other meta-data associated with the class.
Primary scheduling modules 634-636 are associated with consecutive days Friday through Sunday of the highlighted week within month icon 620. Similar to the secondary scheduling modules, each primary scheduling module includes a timeline, a timeline entry and a header. In the embodiment shown, each primary scheduling module has a timeline which lists one hour intervals from 10 a.m. to 9 p.m. A timeline entry is provided at each hour interval for each primary scheduling module. The heading for each primary scheduling module indicates the current day and date for each primary day (e.g., Friday, September 15 through Sunday, September 17). In primary scheduling module 635, associated with Saturday September 16, event object 646 is displayed in timeline entries associated with 3 p.m. and 4 p.m. The displayed event object 646 provides information as “Basketball game Warriors v. Kings.” Similarly, in primary scheduling module 632, associated with Sunday, event object 648 is displayed in timeline entries associated with 4 p.m. and 5 p.m., and provides information of “Mike's House Warming.”
In the social view illustrated in
Tool bar 650 includes several buttons allowing a user to configure interface 610 and event objects within interface 610. In particular, tool bar 650 includes buttons associated with a “new” calendar object, “categories” configuration, calendar “layout,” “shared” event objects and “print view.” The “new” button allows a user to generate new event objects. Generation of a new event object is discussed in more detail above with respect to the flowchart of
Secondary scheduling modules 731-735 within interface 710 are similar to those discussed above with respect to interface 610 of
Interface 710 of
The social calendar of
The three highlighted days of month icon 820 correspond to primary scheduling modules 830-832. Primary scheduling modules 830-832 are associated with Friday, September 15 through Sunday, September 17, per the header in each module. In particular, primary scheduling modules 830-832 of interface 810 are similar to primary scheduling modules 634-636 of interface 610. Unlike interface 610 of
Primary scheduling modules 830-832 contain event objects 840 and 842. Event objects 840-842 are similar to event objects 646-648 discussed above with respect to
As discussed above, interface 810 is provided by browser application 125. In one embodiment, URL address block 860 and navigation bar 880 are similar to those typical featured in browser applications. URL address block 860 provides the current URL from which browser application 125 accesses the content page having interface 810. In one embodiment, the URL address block is associated with network server 130 providing the social calendar data over network 150. Navigation bar 880 includes navigation buttons for browsing network 150. Exemplary navigation buttons include back, forward, refresh, stop and favorites.
User information 880 includes information associated with a user who is logged into network server 130. User information 880 includes a user name, user viewed status, user actual status and a user icon. The user name is displayed as “John.” The user viewed status is displayed to other users logged into the network server. The user's viewed status is displayed as “online,” but may be displayed as invisible, away, or some other text string. The user's actual status is currently “signed in,” and user's icon is an icon selected by the user which may be displayed by the user when the user is signed in and not displayed as “invisible.”
Month icon 920 is similar to month icon 620 of
Primary scheduling modules 930-935 within interface 910 are similar to those discussed above with respect to interface 610 of
The foregoing detailed description of the technology herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the technology and its practical application to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the technology be defined by the claims appended hereto.