Abstract:
A method and system for enabling the real-time styling and adornment of multiple disparate web pages through remote method calls. A local host may request content created from resources on a remote host. The remote host may accept parameters from the local host that allow for customization of the remote content that is returned. The customization may include attributes, a render type, and a style. The remote content may comprise data sets that could hold appropriate layout, branding, images, text, hyperlink paths, or the like. In some embodiments, the remote content is cached once it has been generated to allow it to be returned more quickly during future requests.

Description:
TECHNICAL FIELD 
       [0001]    This application relates to methods of displaying content having the same characteristics on disparate websites. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0002]      FIG. 1  is a block diagram of a system for returning customized remote content. 
           [0003]      FIG. 2  is a flow chart of a method of returning customized remote content. 
           [0004]      FIG. 3  is a web page containing multiple regions requiring resource requests to load content. 
           [0005]      FIG. 4  is the web page from  FIG. 3  after content is parsed from responses to resource requests. 
           [0006]      FIG. 5  is a break out of an exemplary web page containing content from a remote host. 
           [0007]      FIG. 6  is a break out of another exemplary web page containing alternate content from a remote host. 
       
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       [0008]    A local host may wish to display one or more web pages having the same characteristics, such as the same look, feel, and/or behavior, as remote web pages on one or more remote hosts. For example, multiple hosts may employ a single sign-on (“SSO”) scheme that allows a user to move from one host to another without reentering sign-on information. By making the web pages of each host have the same characteristics, the transition between hosts will feel even more seamless to users. The user may be able to jump between features or web pages of the different hosts without being confused by rearranged content or a sharp contrast in appearance or function. In some embodiments, the hosts have different characteristics and the characteristics of the first host will follow the user as she moves to web pages on other hosts. In other embodiments, a group of hosts will all have the same set of characteristics for users visiting any of the hosts. 
         [0009]    One method of ensuring consistent characteristics is to manually maintain the content on each site such that it has the appropriate characteristics. Alternatively, hosts can be configured to automatically load the appropriate characteristics. In one embodiment, multiple hosts have access to the same resource set from which they load content with appropriate characteristics. In other embodiments, one or more hosts implement remote content methods that returns content with appropriate characteristics to hosts calling the remote content methods. Some embodiments may also implement a hybrid system where some hosts share resources and other hosts call remote methods to receive content. 
         [0010]    The embodiments of the disclosure will be best understood by reference to the drawings, wherein like elements are designated by like numerals throughout. In the following description, numerous specific details are provided for a thorough understanding of the embodiments described herein. However, those of skill in the art will recognize that one or more of the specific details may be omitted, or other methods, components, or materials may be used. In some cases, operations are not shown or described in detail in order to avoid obscuring more important aspects of the disclosure. 
         [0011]    Furthermore, the described features, operations, or characteristics may be combined in any suitable manner in one or more embodiments. It will also be readily understood that the order of the steps or actions of the methods described in connection with the embodiments disclosed may be changed as would be apparent to those skilled in the art. Thus, any order in the drawings or detailed description is for illustrative purposes only and is not meant to imply a required order, unless specified to require an order. 
         [0012]    Embodiments may include various steps, which may be embodied in machine-executable instructions to be executed by a computer system. A computer system comprises one or more general-purpose or special-purpose computers (or other electronic device). Alternatively, the computer system may comprise hardware components that include specific logic for performing the steps or comprise a combination of hardware, software, and/or firmware. 
         [0013]    Embodiments may also be provided as a computer program product including a computer-readable medium having stored thereon instructions that may be used to program a computer system or other electronic device to perform the processes described herein. The computer-readable medium may include, but is not limited to: hard drives, floppy diskettes, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, solid-state memory devices, or other types of media/computer-readable medium suitable for storing electronic instructions. 
         [0014]    Computer systems and the computers in a computer system may be connected via a network. Suitable networks for configuration and/or use as described herein include one or more local area networks, wide area networks, metropolitan area networks, and/or “Internet” or IP networks, such as the World Wide Web, a private Internet, a secure Internet, a value-added network, a virtual private network, an extranet, an intranet, or even standalone machines which communicate with other machines by physical transport of media (a so-called “sneakernet”). In particular, a suitable network may be formed from parts or entireties of two or more other networks, including networks using disparate hardware and network communication technologies. 
         [0015]    One suitable network includes a server and several clients; other suitable networks may contain other combinations of servers, clients, and/or peer-to-peer nodes, and a given computer system may function both as a client and as a server. Each network includes at least two computers or computer systems, such as the server and/or clients. A computer system may comprise a workstation, laptop computer, disconnectable mobile computer, server, mainframe, cluster, so-called “network computer” or “thin client,” tablet, smart phone, personal digital assistant or other hand-held computing device, “smart” consumer electronics device or appliance, medical device, or a combination thereof. 
         [0016]    The network may include communications or networking software, such as the software available from Novell, Microsoft, Artisoft, and other vendors, and may operate using TCP/IP, SPX, IPX, and other protocols over twisted pair, coaxial, or optical fiber cables, telephone lines, satellites, microwave relays, modulated AC power lines, physical media transfer, and/or other data transmission “wires” known to those of skill in the art. The network may encompass smaller networks and/or be connectable to other networks through a gateway or similar mechanism. 
         [0017]    Each computer system includes at least a processor and a memory; computer systems may also include various input devices and/or output devices. The processor may include a general purpose device, such as an Intel®, AMD®, or other “off-the-shelf” microprocessor. The processor may include a special purpose processing device, such as an ASIC, SoC, SiP, FPGA, PAL, PLA, FPLA, PLD, or other customized or programmable device. The memory may include static RAM, dynamic RAM, flash memory, one or more flip-flops, ROM, CD-ROM, disk, tape, magnetic, optical, or other computer storage medium. The input device(s) may include a keyboard, mouse, touch screen, light pen, tablet, microphone, sensor, or other hardware with accompanying firmware and/or software. The output device(s) may include a monitor or other display, printer, speech or text synthesizer, switch, signal line, or other hardware with accompanying firmware and/or software. 
         [0018]    The computer systems may be capable of using a floppy drive, tape drive, optical drive, magneto-optical drive, or other means to read a storage medium. A suitable storage medium includes a magnetic, optical, or other computer-readable storage device having a specific physical configuration. Suitable storage devices include floppy disks, hard disks, tape, CD-ROMs, DVDs, PROMs, random access memory, flash memory, and other computer system storage devices. The physical configuration represents data and instructions which cause the computer system to operate in a specific and predefined manner as described herein. 
         [0019]    Suitable software to assist in implementing the invention is readily provided by those of skill in the pertinent art(s) using the teachings presented here and programming languages and tools, such as Java, Pascal, C++, C, database languages, APIs, SDKs, assembly, firmware, microcode, and/or other languages and tools. Suitable signal formats may be embodied in analog or digital form, with or without error detection and/or correction bits, packet headers, network addresses in a specific format, and/or other supporting data readily provided by those of skill in the pertinent art(s). 
         [0020]    Several aspects of the embodiments described will be illustrated as software modules or components. As used herein, a software module or component may include any type of computer instruction or computer executable code located within a memory device. A software module may, for instance, comprise one or more physical or logical blocks of computer instructions, which may be organized as a routine, program, object, component, data structure, etc., that perform one or more tasks or implement particular abstract data types. 
         [0021]    In certain embodiments, a particular software module may comprise disparate instructions stored in different locations of a memory device, different memory devices, or different computers, which together implement the described functionality of the module. Indeed, a module may comprise a single instruction or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices. Some embodiments may be practiced in a distributed computing environment where tasks are performed by a remote processing device linked through a communications network. In a distributed computing environment, software modules may be located in local and/or remote memory storage devices. In addition, data being tied or rendered together in a database record may be resident in the same memory device, or across several memory devices, and may be linked together in fields of a record in a database across a network. 
         [0022]    Much of the infrastructure that can be used according to the present invention is already available, such as: general purpose computers; computer programming tools and techniques; computer networks and networking technologies; digital storage media; authentication; access control; and other security tools and techniques provided by public keys, encryption, firewalls, and/or other means. 
         [0023]      FIG. 1  is a block diagram of a system  100  on which the methods disclosed herein may be implemented. The system comprises a remote host  110  that may communicate over a network with a plurality of local hosts  120 ,  130 . Various users  141 ,  142 ,  143  may also communicate with the hosts  110 ,  120 ,  130  over the network. For example, a user  142  may wish to view web pages located on one of the hosts  120 . The web page on the local hosts  120  may contain content loaded from the remote host  110 . To display this content, the local host  120  requests the content from the remote host  110  by calling a remote content method implemented by the remote host. In some embodiments, the local host  120  would like the content returned by the remote host  110  to be custom tailored, such as by containing custom text or titles. The local host  120  may pass attributes to the remote host  110  to receive remote content customized by the attributes. 
         [0024]      FIG. 2  is a flow chart of a method  200  performed by the remote host  110  to return customized remote content. The method  200  begins when the remote host  110  receives  202  a request for a resource that can be turned into content. The request may contain parameters, such as a resource identifier, a resource render type, a resource style, and one or more resource attributes. In some embodiments, the parameters may be encapsulated within an object, and the resource request may contain multiple objects indicating a plurality of resources to be returned. The local host  120  may make the request in some embodiments. Alternatively, the local host  120  may inform the user  142  to make the resource request. The user  142  request may be made synchronously with the loading of the web page, or the user  142  may be able to make the request asynchronously, such as by using asynchronous javascipt and XML (“AJAX”). 
         [0025]    The remote host  110  then looks up  204  the resource using the resource identifier in the request. The resource identifier parameter indicates what resource the local host  120  is requesting. In some embodiments, the identifier may be a numeric or alpha numeric code referring to the desired resource. In other embodiments, the identifier may be a word or abbreviation that is understandable by a human designing a web page as well as the remote host  110 . For example, the identifier may be “header,” “footer,” “menu”, or the like in some embodiments. The remote host  110  uses the resource identifier to locate the resource. The resource may be stored in a local memory, or it may need to be loaded from another host or computer system. 
         [0026]    Once the resource is loaded, the remote host  110  qualifies  206  all resource paths. The resource may comprise hyperlinks, images, and other outside content. The resource may use relative paths in hyperlinks or when indicating the location on the remote host  110  from which to load the outside content. The local host  120  may incorrectly resolve a relative path as referring to non-existent locations on the local host  120  if they are not corrected. The remote host  110  qualifies the resource paths by converting the relative paths into absolute paths. This allows the local host  120  to resolve all paths correctly. In other embodiments, all resources on the remote host  110  may be designed in advance to use absolute paths. 
         [0027]    Next, the remote host  110  injects resource attributes  208 . The resource attributes allow the local host  120  to customize various aspects of the resource. For example, when requesting a header resource, the resource attributes may include a title, slogan, logo, or the like to be placed in the header. Thus, web pages across hosts may have the same characteristics while still identifying which host is providing the current web page. The type and number of resource attributes available to the local host  120  may vary in some embodiments depending on the particular resource requested. The remote host  110  modifies the resource in accordance with any attributes that have been specified by the local host  120 . In some embodiments, unspecified attributes may be result in a default attribute being used or no attribute being applied. 
         [0028]    The remote host  110  then converts  210  the resource into renderable content of the requested render type. The render type parameter indicates the format of the renderable content. This may include XML, HTML, JSON, or the like for web content. For image and document content, the render type may specify an image format or document type. In alternate embodiments, a resource may be stored in multiple render types, and renderable content of the appropriate render type is loaded as part of step  210 . The renderable content may comprise data sets that hold appropriate layout, branding, images, text, hyperlink paths, or the like. 
         [0029]    Once the resource has been converted, the remote host  110  determines  212  whether the render type is capable of being styled. For example, some images, web content, and documents, such as portable document format (“pdf”) documents, may not be capable of being styled. Additionally, the remote host  110  may determine at this point whether the resource style parameter has been specified in the remote content method call. In some embodiments, if no style is specified, the remote host  110  skips applying  214  the resource style. In other embodiments, the remote host  110  proceeds to step  214  even if no style is specified. Alternatively, the remote host  110  may determine whether to perform step  214  when no style is specified based on the resource identifier. 
         [0030]    The remote host  110  then applies  214  the style in those cases when it is appropriate. The resource style parameter indicates the type of style that should be applied to the renderable content. The resource style may be specified using cascading style sheets (“CSS”) in some embodiments or other formats of specifying style. Alternatively, the resource style may be a reference to predefined styles stored on the remote host  110 , which may be stored in CSS or other formats. In some embodiments, a null, empty, default value, or the like may indicate to the remote host  110  to apply its own style. The resource request may not include a resource style in other embodiments. The remote host  110  may apply its own style if none is specified. 
         [0031]    Next, the remote host  110  determines  216  whether additional resources were requested. If another resource is needed, the remote host  110  returns to step  204  for the next resource. Otherwise, the remote host  110  proceeds with returning  218  the styled, renderable content in response to the request. In other embodiments, the steps  204  to  214  may be performed in parallel by performing each step for all resources before proceeding to the next or by creating a separate thread for each resource requested with the threads running in parallel. 
         [0032]    When each resource that was requested has been processed, the remote host  110  returns  218  the styled, renderable content in a response sent to the local host. In some embodiments, the response may comprise the styled, renderable content broken up by each resource requested. In other embodiments, each resource is returned in a separate response as soon as processing of that resource is completed to speed loading of the web page. Once the local site  120  or user  142  receives the response, it parses the response and displays the styled, renderable content in the appropriate region. 
         [0033]    In some embodiments, the remote  110  and/or local host  120  engages in caching. For content individualized for a single user, the local host  120  may cache the styled, renderable content for the duration of the user&#39;s session and may clear the cached content if a request has not been received from the user  142  within a predetermined time. For non-individualized content, the local host  120  may cache the content for a predetermined time, such as a day, a week, a month, or the like. 
         [0034]    The remote host  110  may cache non-individualized content for predetermined time, or it may check a modified date of the resource to determine whether to use the cached content. In some embodiments, the remote host  110  may clear a portion of its cache and/or notify the local host  120  when a resource has been modified. Alternatively, the remote host  110  may delete content from the cache when the space is needed for new content. For individualized content, the remote host  110  may cache a partially processed resource without the individualizing attributes applied. The remote host  110  may also clear individualized content after a predetermined time or when space is needed. For cached content, the remote host  110  immediately returns the cached content when a request is received and it does not perform steps  204  to  214 . 
         [0035]      FIG. 3  is a web page  300  containing multiple regions  310 ,  320 ,  330  requiring resource requests to load content. The web page  300  also contains content from the local site  340 . In  FIG. 3 , resource requests are depicted in the region where the returned content is to be loaded. One region  310  may require a header from the remote host  110 . The local host  120  may submit a resource request with a resource ID  311  of “Header,” a render type  312  of “HTML,” and a resource style  313  of “Lorem-Ipsum.” The “Header” resource may comprise a “SiteSlogan” attribute  315  and a “SiteSubSlogan” attribute  316  that specify text to appear in the header. Another region  320  may require a menu, so the resource ID  321  is “Menu.” For this request, the local host  120  may wish to specify its own style, so it sets the resource style  323  to “None.” The “Menu” may accept an “ItemCount” attribute  325  that specifies the number of items in the menu. Finally, for a footer region, the local host  120  may submit a request with a resource ID  331  of “Footer,” that takes “ContactEmail”  335  as an attribute. 
         [0036]      FIG. 4  is a web page  400  that results once the local host  120  has received and parsed responses to its resource requests. A header  410  contains the text  415 ,  416  from the “SiteSlogan” attribute  315  and “SiteSubSlogan” attribute  316  passed to the remote host  110 . Additionally, the remote host  110  has applied its own attributes to the header  410 , such as by inserting a “Log in” link  417  in the upper right hand corner. Similarly, the footer  430  has a set of links  437  inserted by the remote host  110 . The local host  120  has applied its own style to the menu  420 . This may allow a user to distinguish between features, such as the menu  420 , that will allow for navigation of the web pages on the local host  120  and features, such as the footer links  437 , that will allow for navigation of web pages on the remote host  110  or among several hosts. The local host  120  may have overwritten the style applied by the remote host  110 , or no style may have been applied. 
         [0037]      FIG. 5  is a break out of an exemplary web page  500  containing content  510 ,  520  from a remote host  110 . The remote content  510 ,  520  includes a header  510  and a footer  520  for display by the local host  120 . The local host  120  calls the remote content method  550  with an object  560  for a header request and an object  570  for a footer request. The remote content method  550  generates the header  510  and footer  520  from the objects passed to it. It then returns the header  510  and footer  520  to the local host  120 , which wraps its content  540  with the header  510  and footer  520 . The returned web page  500  incorporating the remote header and footer may be more visually pleasing and user friendly than other methods of loading remote headers and footers, such as using iFrames. 
         [0038]      FIG. 6  is a break out of an exemplary web page  600  containing alternate content  610  from a remote host  110 . In this example, the local host  120  loads a navigation ribbon  610  from the remote host. The local host  120  again calls the remote content method  550 , but this time passes an object  660  for a ribbon request. The navigation ribbon  610  may allow a user to navigate among multiple sites, such as under an SSO scheme. Each site uses the navigation ribbon  610  to provide navigation to other cooperating sites. The user is able to more easily interact with the websites and move among them because the navigation ribbon is consistent among the cooperating sites. This allows the user to avoid searching around on each site to find the location of links to other cooperating sites. 
         [0039]    It will be obvious to those having skill in the art that many changes may be made to the details of the above-described embodiments without departing from the underlying principles of the disclosure. The scope of the present disclosure should, therefore, be determined only by the following claims.