Systems and methods for incremental loading of collaboratively generated presentations

Information

  • Patent Grant
  • 9946725
  • Patent Number
    9,946,725
  • Date Filed
    Friday, August 26, 2016
    8 years ago
  • Date Issued
    Tuesday, April 17, 2018
    6 years ago
Abstract
Systems and methods for incrementally communicating a document to a client computer are disclosed herein. Time consistent views of the document are maintained throughout the incremental downloading through use of a cryptographically secured permissions token identifying a version of the document the user is permitted to access.
Description
BACKGROUND OF THE INVENTION

This disclosure generally relates to presentation applications, and more specifically, to the concurrent use of network-based collaborative presentation applications by multiple collaborators.


Conventional electronic presentation applications may be used to create electronic documents for pages or slides that are used in a presentation. These presentation slides often include text, images, graphics, audio, video, multimedia, objects and other data to provide a rich audio/visual display to accompany an oral presentation. Some presentation applications are used in a local environment, for example on a single user's computer. Other presentation applications may be shared on a network with multiple users. Shared presentation documents can be difficult to maintain and update accurately, particularly when the shared presentation documents are used and edited concurrently by multiple users.


In some instances the presentations and/or the presentation application may be stored partially or entirely remote from the client. In such instances, particularly with respect to presentations that are rich in media, attempting to download entire presentations prior to presenting any of the slides may incur substantial delays. In collaborative environments, partial downloading of presentations to limit delays incurs the risk of conflicts arising from third party document edits between the downloading of various portions of the presentation.


SUMMARY OF THE INVENTION

Thus, a need exists in the art for managing the incremental retrieval by clients of portions of presentations in a collaborative setting. Accordingly, a collaborative presentation application is disclosed herein that provides to a user a consistent view of a presentation while leveraging incremental downloading to expedite presentation access.


According to one aspect, the invention relates to a system for incrementally communicating a document to a client computer. The system includes a processor and a memory. The memory stores computer executable instructions, which when executed by the processor cause the processor to receive a first request from a user at a client computer to view a first portion of the document, transmit to the user the first portion of a first version of the document over an electronic network in response to the first request, and receive a second request from the user to receive a second portion of the document. The second request indicates a document version from which the user seeks the second portion of the document. The computer executable instructions, when executed, further cause the processor to determine whether the user is authorized to receive the second portion from the document version indicated by the second request. In response to determining that the user is authorized to receive the second portion of the document from the document version indicated by the second request, the computer executable instructions cause the processor to transmit the second portion of the document version indicated by the second request to the client computer. In response to determining that the client computer is not authorized to receive the second portion of the document from the document version indicated by the second request, the computer readable instructions cause the processor to output an error message.


According to another aspect, the invention relates to a system for incrementally loading a document. The system includes a processor and a memory. The memory stores computer executable instructions, which when executed by the processor cause the processor to transmit to a server a first request requesting access for a user to a first portion of a document, receive the first portion of a first version of the document, and transmit a second request to the server requesting access to a second portion of a second version of the document for the user. In response to the second request requesting access to a version of the document to which the user has authorization to access, the computer readable instructions further cause the processor to receive from the server the second portion of the second version of the document. In response to the second request requesting access to a version of the document to which the user lacks authorization to access, the computer readable instructions further cause the processor to receive an error message from the server.


According to additional aspects, the invention relates to methods of incrementally communicating a document to a client computer and incrementally loading a document, as carried out by the systems described above.





BRIEF DESCRIPTION OF THE DRAWINGS

Further features of the invention, its nature and various advantages, will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:



FIG. 1 is an exemplary diagram of a collaborative presentation system, according to an illustrative embodiment of the invention;



FIG. 2 is an alternative view of the collaborative presentation system of FIG. 1, according to an illustrative embodiment of the invention;



FIG. 3 is a timing diagram illustrating the timing of various communications between a client and a server to implement an incremental presentation loading process suitable for use by the system of FIGS. 1 and 2, according to an illustrative embodiment of the invention;



FIG. 4 is a flow chart of a method of handling presentation portion requests suitable for use by the system of FIGS. 1 and 2, according to an illustrative embodiment of the invention;



FIG. 5 is a more detailed flow chart of one particular method for verifying a user's permission to download a further portion of a presentation suitable for use by the system of FIGS. 1 and 2, according to an illustrative embodiment of the invention;



FIG. 6 is a flow chart of method for incremental loading of a presentation suitable for use by the system of FIGS. 1 and 2 from the perspective of a user, according to an illustrative embodiment of the invention; and



FIG. 7 is a flow chart of a method of preserving time consistent versions of collaboratively modified documents suitable for use by the system of FIGS. 1 and 2, according to an illustrative embodiment of the invention.





DESCRIPTION OF CERTAIN ILLUSTRATIVE EMBODIMENTS

To provide an overall understanding of the invention, certain illustrative embodiments will now be described, including systems and methods for providing time consistent access to collaboratively generated presentations. However, it will be understood by one of ordinary skill in the art that the systems and methods described herein may be adapted and modified as is appropriate for the application being addressed and that the systems and methods described herein may be employed in other suitable applications, and that such other additions and modifications will not depart from the scope thereof.


Overview


Aspects of the invention relate to a presentation application which may be used in an online networked environment for collaboration between multiple users. Some or all of the users may be physically remote from the others. Various viewers may be granted varying permission levels to access documents created via the system. Documents using the presentation application may be viewed in a time-consistent fashion, despite modifications made to the presentation by others.


System Description



FIG. 1 is a diagram of an exemplary system 100 in which concepts consistent with the principles of the invention may be implemented. System 100 may include multiple clients 110 that can connect to servers, such as server 120, via network 140. Network 140 may be any network, such as an intranet, the Internet, a local area network (LAN), a wide area network (WAN), a telephone network, or a combination of networks. Although only one server 120 and three clients 110 are shown in FIG. 1, any number or combination of servers and clients may be used. In some aspects, a client and server may perform functions of the other.


A client 110 may include a device, such as a personal computer, a lap top computer, tablet, a smart phone, a personal digital assistant (PDA), or other type of computer or communication device. Users of clients 110 may access or receive information from server 120 over the network 140.


As shown in FIG. 1, clients 110 may generally interact with server 120 such that clients 110, in conjunction with server 120, execute an online presentation application. Server 120 may include software, such as presentation module 125, for implementing the online presentation application. Online presentation applications created by users of clients 110 may be stored by server 120 in, for example, storage media such as database 130. Although illustrated as a single device in FIG. 1, server 120 may be implemented as, for example, a single computing device or as multiple distributed computing devices. One of ordinary skill in the art will appreciate that whether a device is functioning as a server or a client often depends on the specific application being implemented and the client-server relationship.


The interaction of clients 110 with server 120 may be through a browser 115 at each client 110. For example, the online presentation application may be an application that runs and is displayed within a browser 115. In this arrangement, clients 110 may not need to install presentation software to use the online presentation at client 110. Browser programs are well known and are widely available in the art. When browsers or browser programs are discussed herein, these terms are intended to refer to any program that allows a user to browse markup documents (e.g., web documents), regardless of whether the browser program is a stand alone program or an embedded program, such as a browser program included as part of an operating system.


An online presentation application, as described herein, may be implemented as a distributed web application in which portions of the application may be executed at one or more of clients 110 and at server 120. More specifically, clients 110 that wish to use the online presentation application may request the presentation application from server 120. In response, server 120 may transmit portions of the presentation application for local execution at clients 110. The online presentation application may thus execute as a distributed application across server 120 and one or more of clients 110.


Presentation module 125 may include components, not shown, for example, a front-end component that interfaces with clients 110, and a back-end component for processing presentation features as well as supporting the collaborative document updating further described herein.


Online Presentation Collaboration


Presentation documents may be used collaboratively online using the system 100. For example, as shown in FIG. 2, a presentation master document 211 may be stored in server data storage 130 and accessed using clients 110. Individual user copies 211a-n of the presentation document may be viewed at the client 110. Generally speaking, the display of user copies 211a-n client 110 are substantially identical and are updated in the client browser 115 based on the presentation master document 211, which includes merged changes to user copies 211a-n received from all users at clients 110.


However, in some circumstances, for example, when actually presenting a presentation, users having permission to edit presentations (referred to as editor-users) may wish to access a time-consistent version of the presentation, such that their view of the presentation is not affected by other users' edits. Similarly, other users (referred to as viewer-users) may be granted limited permissions to access the presentation. Viewer-users may only be granted access to a single time-consistent view of the presentation. To support this functionality, the server 120 stores multiple time consistent versions 2111 to 211n of the presentation at the server. The time consistent versions 2111 to 211n are stored in a read-only fashion so that a user can access them in a time consistent fashion. The respective time consistent versions 2111 to 211n may be stored for a predetermined amount of time, until the presentation master document 211 differs from respective time consistent versions 2111 to 211n to more than a predetermined degree, or until users accessing the respective time consistent versions 211l to 211n have released such versions.


The time consistent versions 2111 to 211n need not be formally distinct versions of a document, e.g., in the context of a document management system. That is, as one of ordinary skill in the art would recognize, current document management systems typically store multiple versions of documents, often distinguished by version number. In the system 100, the server 120 may simultaneously store multiple time-consistent versions of a single version number of a document, each referred to herein as a meta-version. Thus, if a viewer-user opens a version, e.g., version 3 of a first document, and an editor-user subsequently opens, edits, and saves the same version 3 of the first document, the server 120 preserves a meta-version of the unedited version 3 such that the viewer-user can continue to access it in an unchanged form. The server 120 deletes the meta-version upon the viewer-user closing or otherwise releasing the version of the document. As user herein a version of a document shall refer to either a formal version of a document as well as to meta-versions of a document.


Incremental Presentation Loading Process



FIG. 3 is a timing diagram illustrating the timing of various communications between a client, such as client 110, and a server, such as server 120, to implement an incremental presentation loading process 300, according to an illustrative embodiment of the invention. The incremental presentation loading process 300 is configured primarily for use by users having limited permissions. For example, the incremental presentation loading process 300 is particularly suited for users who are granted permission to access only a single version of presentation, which is not updated to reflect edits that may have occurred between document portion downloads. In addition, the incremental loading process 300 is well suited for editor-users who elect to view a presentation in a time-consistent fashion.


The incremental presentation loading process 300 begins with a user operating on a client device, such as client 110, requesting access to a presentation via an initial document request 302. This initial document request 302 includes a user identifier as well as a document identifier. The initial document request 302 may include data identifying a specific time consistent version of the presentation, e.g., any one of time consistent versions 2111 to 211n, the user is requesting. Alternatively, the initial document request 302 may omit a version identifier. In response to requests that omit a requested version identifier, the server 120 interprets the request to be for the most recent version of the presentation, e.g., the presentation master document 211. The server 120 then stores a copy of master presentation document 211 as a new time-consistent version 211n+1, for subsequent access by the user. The initial document request may be accompanied by a digital certificate or other authenticating data object to authenticate the user to the server 120.


In response to the initial document request 302, the server 120 responds by transmitting an initial portion transmission 304 to the client 110. The initial portion transmission 304 includes an initial portion of the requested presentation 211 along with a permissions token and data indicating the number of portions included in the presentation. As used herein, a portion refers to any discrete segment of a presentation document, including, for example, one or more presentation slides or one or more media files. The permissions token includes data from which the server 120 can verify the version or versions of the requested presentation from which the user is permitted to download additional presentation portions.


In one implementation, the permissions token includes a hash of the user identification, the document identifier, and the version identifier received in the initial document request 302. The applied hash function is a secure one-way cryptographic hash function known solely to the server 120. In alternate implementations, the permissions token includes additional data, including, for example a time stamp indicating the time that the initial document request 302 was received or the time the initial portion transmission 304 was transmitted. Such information can be used by the server 120 to limit the time with which the user can access a version of the presentation to limit the possibility of the user receiving overly stale information. The hash may also be based on the time stamp.


Upon receiving the initial portion transmission 304, the user can request additional portions of the presentation through a subsequent portion request 306. The subsequent portion request includes the user's user identifier, the document identifier, a version identifier, and the permissions token received in the initial portion transmission 304.


In response to receiving the subsequent portion request 306, the server 120 verifies whether the user is permitted to download presentation portions from the document identifier-version identifier pair included in the subsequent portion request 306. In particular, the server calculates a hash of the user identifier, document identifier, and version identifier included in the subsequent portion request 306 using the same hash function used to create the hash included in the initial portion transmission 304. The server then compares the newly computed hash with the hash included in the subsequent portion request 306. Alternatively, the server 120 compares the newly computed hash with a locally saved copy of the hash included in the initial portion transmission 304. In either case, if the two hashes match, the server 120 transmits the requested subsequent portion to the user at the client 110 in a subsequent portion request response 308. In some implementations, the subsequent portion request response 308 may also include a flag indicating whether the presentation master document 211 has been modified with respect to the requested version. Upon this flag being set to true, the presentation application may alert a user, for example, through a separate control window.


In implementations in which the permissions token includes a time stamp, if the hashes match, confirming the authenticity of the time stamp, the server 120 compares the time stamp to a timing criteria to determine whether the user still has permission to access the document/version pairing. In one implementation, the timing criteria includes an absolute time limit for which the user is granted permission to download portions of the version of the presentation. If the time limit has been exceeded, the server issues an error in the subsequent portion request response 308.


In still other implementations, independent of or in conjunction with any time stamp that may be included in prior messages, the server 120 determines whether the users' permission to access the requested document version may have been revoked despite the matching hash. For example, permissions may be revoked if the presentation master document 211 has more than a threshold level of difference with the version requested by the user. Alternatively, permissions may be revoked if more than a threshold period of time has passed since revisions have been made to requested document in comparison to the requested version. The revocation criteria may be set by users with editor or administrative permissions on a document by document basis, a user by user basis, permission level by permission level basis, workgroup by workgroup basis, or any combination of the above. Upon permission being revoked with respect to a particular version of the document, the user is forced to restart the presentation download process with the then current state of the presentation master document 211.


The incremental presentation loading process 300 is described further below from the server and client perspectives in FIGS. 4-6.



FIG. 4 is a flow chart of a method 400 of handling presentation portion requests according to an illustrative embodiment of the invention. The method 400 begins with a server, such as server 120, receiving an initial document request, such as initial document request 102 (step 402) from a user at a client device, such as client 110. As indicated above, the initial document request includes a user identifier, a document identifier, and in some cases, a version identifier. If no version identifier is included, the server assumes the request is for the presentation master document 211.


Based on the identifiers in the initial document request, the server 120 generates a permissions token that can be used to verify the permissions of the user with respect to which version or versions of the presentation the user may access (step 404). Preferably, the user is granted access to a single version of the presentation. The permissions token includes a one-way hash of the user identifier, the document identifier, and the version identifier. In alternative implementations the permissions token may include any data resulting from a cryptographic function or other substantially irreversible transformation of the set of identifiers.


The server transmits the initial portion, referred to as the head, of the requested version of the requested presentation to the user along with the permissions token (step 406). In an alternative embodiment, the server stores the permissions token locally (i.e., in physical memory located at the server itself, or preferably in memory accessible by multiple servers providing the presentation server).


Subsequently, the server receives a request for a second portion of the presentation, for example, as part of a subsequent portion request 306 (step 408). The request includes the user identifier, the document identifier, a requested portion number, the version identifier, and, if included in the initial portion transmission to the user, the permissions token. Based on this data, the server determines whether the user is authorized to receive the second portion of the presentation (step 410). This authorization determination (step 410) can be based on any of the authorization evaluations described above in relation to FIG. 3, including without limitation a comparison of a newly generated hash of data included in the request to the previously generated permissions token, evaluation of a time stamp, and/or an evaluation of a degree of difference between the requested version and the presentation master document 211.


If the server determines that that the user is authorized to receive the second portion from the requested version (decision block 412), the server transmits the second portion to the user at the client (step 414). If the server determines that the user is not authorized to receive the second portion from the requested version (decision block 412), the server transmits an error message to the user (step 416). In one implementation, the error indicates the reason for the error message. For example, the error message may indicate whether the request was refused due to the identification of an incorrect version number, the expiration of a time limit, or due to degree of difference with respect to the presentation master document 211. The error message may be displayed to the user, for example, in a separate control window associated with the presentation application.



FIG. 5 is a more detailed flow chart of one particular method 500 for verifying a user's permission to download a further portion of a presentation, according to an illustrative embodiment of the invention. The method 500 begins with a server, such as server 120, receiving a subsequent document portion request from a user at a client, such as client 110 (step 502). The server extracts from the subsequent document portion request a user identifier, a document identifier, and a version identifier (step 504). The server then calculates a hash of the extracted triplet (step 506) and compares this newly generated hash to a previously generated hash (step 508). The previously generated hash in one implementation is extracted from a permissions token included in the subsequent document portion request. In another implementation, the previously generated hash is retrieved from server memory. If the hashes match (decision block 510), the server concludes the user is authorized to receive the requested subsequent portion (step 512). If not, the server denies the user authorization to the access the requested subsequent portion (step 514).



FIG. 6 is a flow chart of method 600 for incremental loading of a presentation from the perspective of a user, such as the user of client 110 of FIG.1, according to an illustrative embodiment of the invention. The incremental loading method 600 commences with the user at the client transmitting a request, such as the initial document request 302 of FIG. 3, to a server, such as server 120 (step 602). The user triggers the request, for example, through a user interface component (e.g., a file open icon or menu option) of the presentation application or a document management system or by selecting a URL embedded in another document, such as an e-mail, a word processing document, a spreadsheet, another presentation, or in a web page. For editor-users who wish to view a presentation in a time-consistent fashion, the initial document request may include a data flag indicating such desire. In response to the request, the client receives a first portion of the presentation from the server, for example, as part of an initial portion transmission 304 (step 604) along with a number of portions associated with the presentation. The user extracts a permissions token from the initial portion transmission (step 606) for inclusion in subsequent portion requests. The permission token may take the form of any of the permissions tokens described above. The user then displays the first portion of the presentation (step 608).


The user requests a subsequent portion of the presentation at step 610. The request may be for the second portion or any other portion of the presentation. The request may be initiated before or after the first portion is displayed. The subsequent portion request, as described above identifiers the requested portion, the user making the request, the document, and the version of the document. The portion may be identified by a slide number, portion number, URL, or any other suitable identifier for a portion of a presentation. In response to the subsequent portion request, the user receives either an error or the requested subsequent portion (decision block 612). If the user receives an error it is reported to the user, e.g., via a control window associated with the presentation application (step 614). If the user receives the requested subsequent portion, the portion is displayed by the client (step 616).



FIG. 7 is a flow chart of a method 700 of preserving time consistent versions of collaboratively modified documents suitable for use by system of FIGS. 1 and 2, according to an illustrative embodiment of the invention. The method 700 is particularly suited for use with implementations of the systems of FIGS. 1 and 2 that employ document management systems with versioning control. The method 700 begins with the server 120 granting a viewer-user access to a version of a document stored in a document management system (step 702). More particularly, the server 120 grants the viewer-user access to a meta-version of the version of the document. The server 120 then responds to a request from the viewer user to download a first portion of the version of the document (step 704). This can be accomplished, for example, according to steps 402-406 of method 400 of FIG. 4. For example, the server 120 responds to the request by creating a permissions token that identifies the meta-version of the document to which the viewer-user has been granted access. The server 120 then includes the permissions token in a transmission to the viewer-user along with the requested portion. In addition, the server 120 stores the meta-version of the version of the document for future access by the viewer-user (step 706).


If, while the viewer-user has access to the version, an editor-user requests access to the same version from the document management system (at decision block 708), the server 120 creates a new meta-version of the version of the document being viewed by the viewer-user (step 710). In one embodiment, the records of the document management system are updated upon creation of the new meta-version to indicate that the new editor-user meta-version of the version of the document is the new official instance of the version. After receiving edits to the editor-user meta-version (step 712), the server 120 stores the modified editor-viewer meta-version as the official version of the document in the document management system. The server 120 continues to preserve the viewer-user meta-version of the document, without any of the modifications entered by the editor-user. Upon the server 120 receiving a request from the viewer user for a subsequent portion of the version of the document (step 716), the server 120 transmits the subsequent portion from the presented viewer-user meta-version. If the viewer-user closes or otherwise releases the meta-version of the document (decision block 720), the server 120 deletes the viewer-user meta-version, leaving only the edited editor-user version in storage. Otherwise, the server 120 continues to preserve the viewer-user meta-version until it is released (step 724).


In an alternative implementation, instead of the server 120 creating a new meta-version of a version of a document upon receipt of an access request from an editor-user, the server 120 creates a new meta-version for use by the viewer user upon granting the viewer-user access. It is then this new viewer-user meta-version that is preserved until the user closes or otherwise releases the meta-version.


While various embodiments of the present invention have been shown and described herein, it will be obvious to those skilled in the art that such embodiments are provided by way of example only. Numerous variations, changes, and substitutions will now occur to those skilled in the art without departing from the invention. It should be understood that various alternatives to the embodiments of the invention described herein may be employed in practicing the invention. It is intended that the following claims define the scope of the invention and that methods and structures within the scope of these claims and their equivalents be covered thereby.

Claims
  • 1. A method of collaborative document editing, the method comprising: receiving, at a server from a client system, a first request to access a document stored at the server;providing, by the server, to the client system, an application in a browser of the client system, wherein the application is enabled to modify the document;providing, by the server, to the client system, a first portion of the document in the application;receiving, by the server, a second request to access the document;determining, by the server, whether a user that is associated with the second request is authorized to access the document;in response to determining that the user is authorized to access the document, transmitting, by the server, a second portion of the document;receiving an edit to at least one of the first portion of the document or the second portion of the document;andsaving, by the server, the edit to the at least one of the first portion of the document or the second portion of the document.
  • 2. The method of claim 1, wherein the application is distributed over the server and the client system.
  • 3. The method of claim 1, wherein the first request to access the document comprises at least one of a user identifier, a file identifier or a version identifier.
  • 4. The method of claim 1, wherein in response to determining that the user is not authorized to access the document transmitting an error message.
  • 5. The method of claim 1, wherein the second request comprises at least one of a user identifier, document identifier, portion identifier, or a version identifier.
  • 6. The method of claim 5, wherein determining whether the user is authorized to access the document comprises: calculating a hash of the user identifier, the file identifier and the version identifier; andcomparing a stored cryptographic hash with the generated hash.
  • 7. The method of claim 1, wherein transmitting the second portion of the document comprises sending an indication that the second portion of the document has been modified.
  • 8. The method of claim 1, further comprising: saving to the server an unedited version of the document.
  • 9. The method of claim 8, further comprising: providing different versions of the document to the user and a different user, based on user type, wherein:an editor user type has a first authorization level that allows an editor user to provide suggested edits to the document, anda viewer user type has a second authorization level that allows a viewer user to view the unedited version of the document.
  • 10. A system for collaborative document editing the system comprising: a memory to store a document;at least one processor coupled to the memory, the at least one processor configured to: receive, from a client system, a first request to access the document stored in the memory;provide, to the client system, an application in a browser of the client system, wherein the application is enabled to modify the document;provide, to the client system, a first portion of the document in the application;receive a second request to access the document;determine whether a user that is associated with the second request is authorized to access the document;in response to a determination that the user is authorized to access the document, transmit a second portion of the document;receive an edit to at least one of the first portion of the document or the second portion of the document;andsave the edit to the at least one of the first portion of the document or the second portion of the document.
  • 11. The system of claim 10, wherein the application is distributed over a server and the client system.
  • 12. The system of claim 10, wherein the first request to access the document comprises at least one of a user identifier, a file identifier or a version identifier.
  • 13. The system of claim 10, wherein in response to the determination that the user is not authorized to access the document, the at least one processor is to transmit an error message.
  • 14. The system of claim 10, wherein the second request comprises at least one of a user identifier, a document identifier, portion identifier, or a version identifier.
  • 15. The system of claim 14, wherein to determine whether the user is authorized to access the document the at least one processor is to: calculate a hash of the user identifier, the file identifier and the version identifier; andcompare a stored cryptographic hash with the generated hash.
  • 16. The system of claim 10, wherein to transmit the second portion of the document the at least one processor is to send an indication that the second portion of the document has been modified.
  • 17. The system of claim 10, wherein the at least one processor is further configured to save an unedited version of the document.
  • 18. The system of claim 17, wherein the at least one processor is further configured to: provide different versions of the document to the user and a different user, based on user type, wherein:an editor user type has a first authorization level that allows an editor user to provide suggested edits to the document, anda viewer user type has a second authorization level that allows a viewer user to view the unedited version of the document.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 14/296,246, filed Jun. 4, 2014 (pending), which is a continuation of U.S. patent application Ser. No. 13/608,584, filed Sep. 10, 2012, now U.S. Pat. No. 8,769,045, which is a continuation of U.S. patent application Ser. No. 13/275,044 filed Oct. 17, 2011, now U.S. Pat. No. 8,266,245, each of which is incorporated herein by reference in its entirety.

US Referenced Citations (149)
Number Name Date Kind
5231577 Koss Jul 1993 A
5408470 Rothrock et al. Apr 1995 A
5557722 DeRose et al. Sep 1996 A
5708826 Ikeda et al. Jan 1998 A
5758358 Ebbo May 1998 A
5761669 Montague et al. Jun 1998 A
5793966 Amstein et al. Aug 1998 A
5799325 Rivette et al. Aug 1998 A
5819304 Nilsen et al. Oct 1998 A
6049664 Dale et al. Apr 2000 A
6061697 Nakao May 2000 A
6073144 van Hoff Jun 2000 A
6243706 Moreau et al. Jun 2001 B1
6327584 Xian et al. Dec 2001 B1
6341305 Wolfe Jan 2002 B2
6349308 Whang et al. Feb 2002 B1
6349314 Patel Feb 2002 B1
6377957 Jeyaraman Apr 2002 B1
6418441 Call Jul 2002 B1
6501779 McLaughlin et al. Dec 2002 B1
6662210 Carleton et al. Dec 2003 B1
6766333 Wu et al. Jul 2004 B1
6988241 Guttman et al. Jan 2006 B1
7017112 Collie et al. Mar 2006 B2
7031954 Kirsch Apr 2006 B1
7035910 Dutta et al. Apr 2006 B1
7069502 Numata et al. Jun 2006 B2
7162693 Yamanaka et al. Jan 2007 B2
7213199 Humenansky et al. May 2007 B2
7263497 Wiser et al. Aug 2007 B1
7305613 Oezgen Dec 2007 B2
7350142 Kraft et al. Mar 2008 B2
7437421 Bhogal et al. Oct 2008 B2
7478330 Branson et al. Jan 2009 B1
7491399 Vakharia Feb 2009 B2
7506242 Kotler et al. Mar 2009 B2
7529778 Dewey et al. May 2009 B1
7634728 Kraft Dec 2009 B2
7656543 Atkins Feb 2010 B2
7667862 Ziegler et al. Feb 2010 B2
7680932 Defaix et al. Mar 2010 B2
7698379 Dutta et al. Apr 2010 B2
7774703 Junuzovic et al. Aug 2010 B2
7890928 Patrudu Feb 2011 B2
8019780 Pinkerton et al. Sep 2011 B1
8151204 Lusen et al. Apr 2012 B2
8184811 Patten et al. May 2012 B1
8266534 Curtis et al. Sep 2012 B2
8332815 Balfe et al. Dec 2012 B2
9256753 Sawicki Feb 2016 B2
20010037346 Johnson Nov 2001 A1
20020032701 Gao et al. Mar 2002 A1
20020035580 Tanabe Mar 2002 A1
20020051185 Yamaguchi et al. May 2002 A1
20020133492 Goldstein et al. Sep 2002 A1
20020174085 Nelson et al. Nov 2002 A1
20020194302 Blumberg Dec 2002 A1
20030014406 Faieta et al. Jan 2003 A1
20030033287 Shanahan Feb 2003 A1
20030037076 Bravery et al. Feb 2003 A1
20030037303 Bodlaender et al. Feb 2003 A1
20030084078 Torii et al. May 2003 A1
20030105719 Berger et al. Jun 2003 A1
20030145279 Bourbakis et al. Jul 2003 A1
20040044965 Toyama et al. Mar 2004 A1
20040085354 Massand May 2004 A1
20040088653 Bell et al. May 2004 A1
20040133444 Defaix et al. Jul 2004 A1
20040215672 Pfitzner Oct 2004 A1
20040215825 Pfitzner Oct 2004 A1
20040215826 Pfitzner Oct 2004 A1
20040216090 Kaler et al. Oct 2004 A1
20040248612 Lee et al. Dec 2004 A1
20040255005 Spooner Dec 2004 A1
20050055337 Bebo et al. Mar 2005 A1
20050091291 Kaler et al. Apr 2005 A1
20050125461 Filz Jun 2005 A1
20050131887 Rohrabaugh et al. Jun 2005 A1
20050144256 Blumberg Jun 2005 A1
20050185636 Bucher Aug 2005 A1
20050200896 Narusawa et al. Sep 2005 A1
20050246526 Forlenza Nov 2005 A1
20050273695 Schnurr Dec 2005 A1
20060031751 Ehud Feb 2006 A1
20060075332 Fairweather et al. Apr 2006 A1
20060101071 Henderson May 2006 A1
20060149831 Dutta et al. Jul 2006 A1
20060200755 Melmon et al. Sep 2006 A1
20060230344 Jennings et al. Oct 2006 A1
20070033654 Wilson Feb 2007 A1
20070061714 Stuple et al. Mar 2007 A1
20070070066 Bakhash Mar 2007 A1
20070186157 Walker et al. Aug 2007 A1
20070208992 Koren Sep 2007 A1
20070220068 Thompson et al. Sep 2007 A1
20070288637 Layton et al. Dec 2007 A1
20080028302 Meschkat Jan 2008 A1
20080034008 Burke et al. Feb 2008 A1
20080040659 Doyle Feb 2008 A1
20080059417 Yamada et al. Mar 2008 A1
20080059539 Chin et al. Mar 2008 A1
20080082604 Mansour et al. Apr 2008 A1
20080126943 Parasnis et al. May 2008 A1
20080127212 Nakamizo et al. May 2008 A1
20080222273 Lakshmanan et al. Sep 2008 A1
20090055755 Hicks et al. Feb 2009 A1
20090089664 Wagner et al. Apr 2009 A1
20090112953 Barsness et al. Apr 2009 A1
20090112990 Campbell et al. Apr 2009 A1
20090119572 Koivunen May 2009 A1
20090132907 Shao et al. May 2009 A1
20090164620 Ziegler et al. Jun 2009 A1
20090307585 Tranchant et al. Dec 2009 A1
20100005410 Pang Jan 2010 A1
20100030578 Siddique et al. Feb 2010 A1
20100050089 Kim et al. Feb 2010 A1
20100070852 Li Mar 2010 A1
20100083096 Dupuis-Latour et al. Apr 2010 A1
20100205230 Simeonov et al. Aug 2010 A1
20100205520 Parish et al. Aug 2010 A1
20100218099 van Melle et al. Aug 2010 A1
20100229086 Howell et al. Sep 2010 A1
20100235763 Massand Sep 2010 A1
20100245256 Estrada et al. Sep 2010 A1
20100251122 Lee et al. Sep 2010 A1
20100281076 Pan et al. Nov 2010 A1
20100309436 Allen, Jr. et al. Dec 2010 A1
20100318894 Billharz et al. Dec 2010 A1
20110035661 Balinsky et al. Feb 2011 A1
20110051158 Yamahata et al. Mar 2011 A1
20110066957 Prats et al. Mar 2011 A1
20110078246 Dittmer-Roche Mar 2011 A1
20110085211 King et al. Apr 2011 A1
20110099093 Mills Apr 2011 A1
20110164043 Arora et al. Jul 2011 A1
20110179427 Krishnamoorthy et al. Jul 2011 A1
20110219331 DeLuca et al. Sep 2011 A1
20110252299 Lloyd et al. Oct 2011 A1
20110252335 Lloyd et al. Oct 2011 A1
20110252339 Lemonik et al. Oct 2011 A1
20110264712 Ylonen Oct 2011 A1
20110282933 Schmier Nov 2011 A1
20110296299 Parker Dec 2011 A1
20120072821 Bowling Mar 2012 A1
20120117406 Eun May 2012 A1
20120117452 Lloyd et al. May 2012 A1
20120131483 Archer et al. May 2012 A1
20130080507 Ruhlen et al. Mar 2013 A1
20130080785 Ruhlen et al. Mar 2013 A1
Non-Patent Literature Citations (29)
Entry
Simultaneously edit a presentation with other authors, by MicrosoftTM Office: MAC, published Nov. 11, 2010, pp. 1-4.
Advisory Action dated Sep. 7, 2012 for U.S. Appl. No. 13/274,723.
Bibi et al., A Platform for Delivering Multimedia Presentations on Cultural Heritage, 2010 14th Panhellenic Conference on Informatics, pp. 175-179.
Ellis et al., “Concurrency Control in Groupware Systems,” ACM 1989, pp. 399-407.
Final Office Action dated May 31, 2012 for U.S. Appl. No. 13/274,720.
Final Office Action dated Jun. 1, 2012 for U.S. Appl. No. 13/274,797.
Final Office Action dated Jun. 14, 2012 for U.S. Appl. No. 13/275,093.
Final Office Action dated Jun. 20, 2012 for U.S. Appl. No. 13/274,723.
Final Office Action dated Nov. 16, 2012 for U.S. Appl. No. 13/274,716.
Final Office Action dated Dec. 7, 2012 for U.S. Appl. No. 13/275,123.
Huang et al., “A General Purpose Virtual Collaboration Room,” Google 1999, pp. 1-9.
Kindberg, Mushroom: A Framework for Collaboration and Interaction across the Internet, Google 1996, pp. 1-11.
Krieger, “Documents, Presentations, and Workbooks: Using Microsoft@ Office to Create Content That Gets Noticed,” published May 2011, pp. 1-104.
Mulvany, “What's Going on in Indexing,” ACM 1997, pp. 10-15.
Munteaunu et al., “Collaborative Editing for Improved Usefulness and Usability of Transcript-Enhanced Webcasts,” ACM 2008, pp. 373-382.
Non Final Office Action dated Aug. 31, 2012 for U.S. Appl. No. 13/275,101.
Non-Final Office Action dated Jan. 6, 2012 for U.S. Appl. No. 13/275,093.
Non-Final Office Action dated Jan. 11, 2012 for U.S. Appl. No. 13/274,797.
Non-Final Office Action dated Jan. 19, 2012 for U.S. Appl. No. 13/274,716.
Non-Final Office Action dated Feb. 17, 2012 for U.S. Appl. No. 13/275,123.
Non-Final Office Action dated Feb. 29, 2012 for U.S. Appl. No. 13/274,723.
Non-Final Office Action dated Mar. 1, 2012 for U.S. Appl. No. 13/275,101.
Non-Final Office Action dated Jun. 12, 2012 for U.S. Appl. No. 13/274,716.
Non-Final Office Action dated Jul. 20, 2012 for U.S. Appl. No. 13/084,951.
Non-Final Office Action dated Dec. 30, 2011 for U.S. Appl. No. 13/274,720.
Notice of Allowance dated May 14, 2012 for U.S. Appl. No. 13/275,044.
Pacull et al., Duplex: A Distributed Collaborative Editing Environment in Large Scale, ACM 1994, pp. 165-173.
Raggett, Dave, “Slidy—a web based alternative to Microsoft PowerPoint,” published 2006, pp. 1-13.
Taylor, “Cool Apple Keynote Presentation Tricks and Tips,” published Apr. 2011, p. 1-5.
Continuations (3)
Number Date Country
Parent 14296246 Jun 2014 US
Child 15248986 US
Parent 13608584 Sep 2012 US
Child 14296246 US
Parent 13275044 Oct 2011 US
Child 13608584 US