Use of overriding templates associated with customizable elements when editing a web page

A method is presented for editing and saving a web page at a client based web-page editor. A rendered web page is received from a server computer and displayed at a web-page editor on the client computer. The client computer identifies one or more customizable web parts on the web page and also identifies one or more shared templates that are associated with the customizable web parts. Each identified shared template is copied as an overriding template. A data view of one or more web parts is edited, causing one or more of the overriding templates associated with the web part to be modified. When the edited changes are saved, the client computer sends a message to the server computer. The message includes the portions of the overriding templates that are modified as a result of the edited changes to the web page.

BACKGROUND

Online browser-based collaboration and document management systems can be used to host web sites that provide shared access to documents and workspaces. These collaboration and document management systems typically include a web-page editor that permits users to create or modify web pages.

A web page displayed in a web page editor typically includes web parts that may be edited. The web parts are typically associated with one or more templates used to render the web part. When a web page is edited, typically all the templates used to render the web parts are saved, even though all the templates may not be modified as a result of editing the web page.

SUMMARY

Embodiments of the invention are directed to systems and methods for editing a web page at a client based web-page editor and saving portions of overriding templates that are modified as a result of editing the web page. A rendered web page is received at a client computer from a server computer. In response to receiving the rendered web page, the client computer displays a view of the rendered web page at a web-page editor on the client computer. The view of the web page includes one or more web parts. The client computer identifies one or more web parts that are customizable. The client computer also identifies one or more shared templates that are associated with the one or more customizable web parts. A copy is made of each identified shared template associated with the one or more customizable web parts. Each copy of an identified shared template is an overriding template.

A data view of one or more web parts is edited. The editing of the data view of a web part causes one or more of the overriding templates associated with the web part to be modified. The edited changes to the web part are saved on the web-page editor. In response to saving the edited changes on the web-page editor, the client computer sends a message to the server computer. The message includes the portions of the overriding templates that are modified as a result of the edited changes to the web page.

DETAILED DESCRIPTION

The present disclosure is directed to systems and methods for editing customized data views of a web page on a client based web-page editor and saving portions of overriding templates that are modified as a result of editing the web page. The web page is typically rendered on a server from shared templates and displayed on the web-page editor on the client system. The templates are shared templates because they may be used to render web pages in a plurality of client systems. The web-page editor customizes data views of the web page by creating overriding templates for web-page parts that are edited and modifying the overriding templates without changing the shared templates.

The web page is typically rendered from the shared templates using XSLT (Extensible Stylesheet Language Transformations). The web page is customized by generating overriding XSLT templates from shared XSLT templates and saving edited changes to the web page in the overriding XSLT templates.

In example embodiments, clients102and104are computing devices, such as desktop computers, laptop computers, terminal computers, personal data assistants, or cellular telephone devices. Clients102and104can include input/output devices, a central processing unit (“CPU”), a data storage device, and a network device. In example embodiments, client102includes a web-page editor and client104is a standard client that does not include a webpage editor. In the present disclosure, the terms client and client computer are used interchangeably.

Front-end server108and database server110are computing devices. Front-end server108is accessible to clients102and104through network106. Database server110is typically not directly available to clients102and104and is accessed through front-end server108. Front-end server108and database server110can include input/output devices a central processing unit (“CPU”), a data storage device, and a network device. In example embodiments, network106is the Internet and clients102and104can access front-end server108and resources on and connected to front-end server108and database server108remotely. In the present disclosure, the terms “server” refers to a computing device that acts like a server. Likewise, the term “server computer” also refers to a computing device that acts like a server.

In example embodiment, a web page is rendered on example front-end server108and sent to clients102and104upon request. In example embodiments, the example front-end server108renders the web page from shared XSLT templates stored on example front-end server108, from XML data specific to the web page stored on example database server110and from any overriding templates associated with the web page stored on example database server110.

XSLT (Extensible Stylesheet Language Transformation) is a language used for transforming XML documents into other XML documents. XSLT specifies how XML data for a web part is to be formatted when rendered on a web page. When rendering a web page on the example front-end server108, XSLT transforms XML data into markup language, typically HTML, used to render the web page.

In example embodiments, client102includes a webpage editor, for example Sharepoint Designer 2007 from Microsoft Corporation of Redmond, Wash. Sharepoint Designer 2007 is a web-page editor that is used in conjunction with an online browser-based collaboration and document management system like Microsoft Sharepoint from Microsoft Corporation of Redmond, Wash. Sharepoint Designer 2007 is used create and edit web pages that can be made available to Sharepoint users.

When the example web-page editor opens an existing web page on client102, client102makes a request for the web page to example front-end server108and example front-end server108returns a rendered view of the web page to example client102.

When the example webpage editor on example client102receives the rendered web page from example front-end server108, the example web-page editor analyzes the rendered web page to determine the XSLT templates used to render the web page. A web page consists of a plurality of web parts, a web part being any element that can be rendered on a web page.

A web page is typically rendered from a plurality of XSLT templates. For example, one or more XSLT templates may be used to specify the presentation of a table or a toolbar or a banner or any other web part that may be rendered. Because a table, toolbar, banner or similar component is a common component used on many web pages, the XSLT templates used to render these components are considered to be shared XSLT templates.

Some users may wish to customize web parts, for example to add a specific font to a table heading. However, if a shared XSLT template for the table is modified, the appearance of the table is altered for all users. In order to preserve the common XSLT templates used for a web part but also allow the web part to be customized, the example web-page editor on client102makes use of overriding XSLT templates.

An overriding XSLT template is a copy of an existing XSLT template. When a web page is rendered on the example web-page editor on client102, the example web page editor analyzes the rendered view and identifies all shared XSLT templates needed to render the web parts in the rendered web page view. The example web-page editor then creates a copy of each identified shared XSLT template and designates each copy as an overriding template.

Often the same set of shared XSLT templates is used to render multiple fields in a web page view. For example, the same set of shared XSLT templates may be used to render every column in a table. In order to permit a user to makes changes to more than one column, a separate overriding template set is created for each column. In this example, more than one overriding template is crated from the same shared template. When an overriding template set is created, each overriding template in the overriding template set is renamed so that each overriding template in the overriding template set is uniquely identified.

When a user edits a web part on the example web-page editor, changes are made to the overriding XSLT templates corresponding to portion of the web part that is edited. There may be more than one overriding template associated with a web part but when the web part is edited, only some overriding templates may change. No changes are made to the shared XSLT templates. When the web page is saved at the example web-page editor, only the portions of the overriding XSLT templates that are modified are saved.

In example system100, when the example web page is saved the portions of the overriding XSLT templates that are modified are included as text in the XML data of the web parts that are edited. The XML data for the web parts, including the modified portions of the overriding XSLT templates, are then transmitted from example client102across network106to example front-end server108. The shared XSLT templates are not transmitted from example client102to example front-end server108because the shared XSLT templates are not modified. The example front-end server108transmits the XML data for the web parts to database server110to be stored.

In addition to opening an existing web page, the example webpage editor on example client102also creates new web pages. The example web-page editor includes the shared XSLT templates stored on example front-end server108. When the example web-page editor adds new web parts to a new web page, the web parts are built from the associated shared XSLT templates included in the example web-page editor.

The example web-page editor on example client102typically has several views. In an example designer view, the web page appears as it would on a client system web browser. In an example data view, web parts are generally displayed in tabular form. Web parts are typically edited when in data view. In an example code view, the XSLT templates corresponding to the web part in data view are displayed.

An example online browser-based collaboration and document management system like Microsoft Sharepoint, typically uses lists to display data to client systems. In this regard, the data view of a web part is consistent with the list structure of typical online browser-based collaboration and document management systems like Microsoft Sharepoint.

Client104is an example browser-based client in example system100. Example client104does not include a web-bared editor that can edit XSLT template riles. Example client104can make modifications to a web page displayed on the client104browser, but only by modifying the markup language that renders the web page.

When example client104makes a request for a web page to be displayed on the client104browser, example client104sends a request for the web page to example front-end server108. Example front-end server108parses the request for the web page and determines the shared XSLT templates needed to render the web page. Example front-end server108also obtains the XML for the web parts included in the web page. The XML for the web parts included in the web page are stored on example database server110.

The shared XSLT files are typically stored on example front-end server108. The example front-end server108renders the web page from the shared XSLT templates stored on example front-end server108, from the XML data for the web parts used on the web page and from any overriding XSLT templates stored with the XML data for the web parts. The XML data for the web parts and any associated overriding XSLT templates are stored on example database server110. The example front-end server108then sends the rendered web page to example client104for display on the browser of example client104.

FIG. 2shows example modules used in example client102. Example client102includes an example webpage editor, for example Microsoft Sharepoint Designer 2007. The example client102includes example rendering module202, example edit module204and example analysis and save module206. The example rendering module202renders a web page in the example web-page editor. The rendered web page is obtained from example front-end server108when the web page is opened.

The example edit module204processes edits to a rendered web page view and permits a user to create new web-page views. The example web-page editor includes shared XSLT templates that correspond to web parts in the web page. When an existing web page is opened on the example web-page editor, the example edit module204analyzes the rendered view of the web page and determines the shared XSLT templates used to render the web parts on the web page. The example edit module204makes a copy of each shared XSLT template used to render customizable web parts on the web page, for which an overriding template does not already exist. Each copy of a shared XSLT template is designated as an overriding template.

Not all parts of a web page are customizable. For example, a toolbar is a web page component that is typically not customizable so the example edit module204does not make a copy of shared XSLT templates that are used to render the toolbar.

The example edit module204processes changes to the web parts in the web page view. Typically, edits to the web page are made in data view. A data view is a specific type of web part that renders collaboration data, for example Sharepoint data, into specific formats, typically tabular formats. The data view of a web part typically consists of one or more shared XSLT templates. For example, one shared XSLT template may specify the body of the table and other shared XSLT templates may specify fields within the table.

When a user edits a web part in the example web-page editor on example client102, the overriding XSLT template corresponding to the portion of the web part that is modified is also modified For example, if a user bolded a column heading in the web part, the overriding XSLT template corresponding to the column header is modified. When a change is made to a web part in data view, the overriding XSLT template corresponding to the change is displayed in code view. A user may view the changes to the XSLT template in code view and may make additional changes to the web part while in code view.

When a user saves changes to a web page made with the example web-page editor of client102, the example analysis and save module206analyzes the saved web page to determine if any overriding XSLT templates associated with the web page were modified. If the example analyze and save module206determines that one or more overriding XSLT templates were modified, the modified portions of the overriding XSLT templates are incorporated as text in the XML data of the web parts associated with the overriding XSLT templates. The XML data of the web parts are then sent to example front-end server108.

When the example front-end server108receives the XML data from example client102the example front-end server108determines whether the XML data includes any overriding XSLT templates. The presence of any overriding XSLT templates informs the example front-end server108that the overriding XSLT templates are to be used in place of the corresponding shared XSLT templates when rendering the web page.

The example front-end server108sends the XML data of the web parts received from example client102to be stored on example database server110. By not uploading the shared XSLT templates to the example front-end server108and by only uploading the edited XML data of the web parts and the modified portions of the overriding XSLT templates, system performance is improved.

When an edited web page is saved, the example analysis and save module206also performs a callstack analysis on the modified overriding XSLT templates. The callstack analysis determines any additional XSLT templates that may need to be modified. When the example edit module204makes copies of all the customizable shared XSLT templates and creates corresponding overriding XSLT templates, often the customizable shared XSLT templates are renamed. For example, when a set of overriding XSLT templates is created from a set of customizable shared XSLT templates, for example when rendering several different columns in a table, each overriding XSLT template in the set of overriding XSLT templates is renamed.

The callstack analysis determines all the overriding templates that call the overriding XSLT templates that are modified. The name changes in the overriding XSLT templates that call the modified XSLT templates are also saved and sent to front-end server108. Typically the callstack changes to the overriding templates are saved in the XML data of the overriding XSLT templates that are modified.

FIG. 3shows an illustration of an example web part30displayed in data view on the example web-page editor of client102. The example web part300is displayed in tabular form, with columns showing the fields on the web part and rows showing the values of each field. The tabular form is consistent with the display of lists in the online browser-based collaboration and document management system. For example, the example web part300may be a table displaying a list of books. The fields in the table may include the title, the author, the publisher, the year published, etc. The values in the rows show the title, author, publisher, year published, etc, for each book listed.

The example web part300is rendered from a plurality of templates. The example templates include view template302, header template304, header field template306, body template308, item template310and field template312. The example view template302specifies format for the overall structure of the table. The example header template304specifies format of the structure of the table header, specifying that the example table header includes four fields, for example title, author, publisher, year published, etc. The example header field template306specifies the format of a specific header field, for example the publisher. For example, the publisher field may be bolded. The example body template308specifies format of the body of the example web part including the rows and the tables. The example item template310specifies the format of a row in the table, each row of the example table listing an individual book. The example field template312specifies the format of a specific field. For example, if field4represents the year published, the example template312specifies the font type and size of the year, the color that the in which the year is displayed, whether the year is bolded or italicized, etc.

The example field templates412include a plurality of templates for displaying fields of the web part. Example field templates may include example text header field template414for formatting a text header field, example date header field template416for formatting a date header fields example text field value template418for formatting the value of a text field and example date field value template420for formatting the value of a date field. Other field templates are possible.

The example overriding XSLT templates422include example include common XSLT templates424that represent shared XSLT templates obtained from include or import statements in an example web-page text editor. The example overriding XSLT templates422also include tabular view template426, item (row) template428, text field header field templates430,432,434date field header field template436, text field value field templates438,440,442and date field value field template444.

The example templates400show that overriding tabular view template428is a copy of common (shared) tabular view template406, overriding item (row) template428is a copy of common (shared) tabular view template410, overriding text field header field templates430,432,434are copies of common (shared) text field header414, date field header field template436is a copy of common (shared) date field header template416, text field value field templates438,440,442are copies of text field value template418and date field value field template444is a copy of date field value template420.

FIG. 5shows the example modules500of example front-end server108. The example front-end server108includes example web interface module502, example edit save module504and example rendering module506. The example web interface module502receives requests for web pages from clients102and104and returns rendered web pages to clients102and104.

The example edit save module504receives information of edited changes to web page views from example web interface module502. If the edited changes originated at a client that includes a web-page editor, for example client102, the example edit save module, analyzes the saved changes. The edit save module sends the XML data of the modified web pans to example database server110. The XML data of the modified web parts includes the modified portions of the overriding XSLT templates. Example database server110stores the XML data and stores the changes to the overriding XSLT templates. The overriding XSLT template associated with a web part is saved as part of the XML data of the web part.

The example rendering module506renders a web page for a client system, for example client102or client104. The example rendering module506renders the web page from the shared XSLT templates stored on the example front-end server108, from the XML for the web parts that comprise the web page, the XML for the web parts being obtained from the example database server110, and from any overriding XSLT templates stored along with the web parts on example database server110. When the web page is rendered from the shared XSLT templates, from the XML for the web parts and from any overriding XSLT templates, the example web interface module502sends the web page to the client system that requested the web page, for example client102or client104.

FIG. 6shows an example flowchart illustrating an example operation600performed by example client102. In example operation600, an example web-page editor on example client102opens and edits an existing web page. At operation602, example client102opens an existing web page on the example web-page editor on client102and requests the web page from example front-end server108.

At operation604a rendered web page is received by client102. At operation606a view of the rendered web page is displayed on the example web-page editor on client102. At operation608, the example web-page editor on example client102identifies the shared XSLT templates used to tender the customizable web parts in the data view of the web page.

At operation610, example edit module204on the example web-page editor makes a copy of the shared XSLT templates used to render the identified customizable web part. Each copy of a customizable shared XSLT template is an overriding template. The overriding XSLT templates are created at operation610but they are not displayed.

At operation612, a user of the example web-page editor edits the data view of one or more web parts. At operation614, the example analysis and save module206saves the edited web page. At operation616, the example analysis and save module206identifies the portions of all the overriding XSLT templates that are modified as a result of the edit. At operation618, the modified portions of the identified overriding XSLT templates are incorporated into the XML data of the edited web parts that use the identified XSLT templates. At operation620, the XML data for the modified web parts are sent to example front-end server108. The XML data for the modified web parts includes the modified portions of the XSLT overriding templates associated with the web parts.

FIG. 7shows an example flowchart illustrating an example operation710performed by example front-end server108. In example operation700, example front-end server renders a web page to be displayed on example client102. At operation702, example front-end server108receives a request for a web page from example client computer102. At operation704the example front-end server108identifies the web parts and the shared XSLT templates needed to render the web page.

At operation706, XML data for the identified web parts are obtained from example database server108. At operation708, the example front-end server108determines whether the obtained XML data for the web parts includes any overriding XSLT templates.

At operation710, the web page is rendered from the XML data of the identified web parts, from the shared XSLT templates and from any identified overriding XSLT templates. The web page is rendered in a markup language, typically HTML. When rendering the web page, the example front-end server108uses any identified overriding XSLT templates in place of the corresponding sections of the shared XSLT templates.

At operation712, the rendered web page is sent to the client computer that requested the web page. When the rendered web page is requested from example client102, the rendered web page is displayed in the example web-page editor of example client102. When the rendered web page is requested from example client104, the rendered web page is displayed on the web-based browser of example client104.

FIG. 8is a block diagram illustrating example physical components on an electronic computing device800. Client systems102and104and server systems108and110and/or electronic computing devices within client systems102and104and/or server systems108and110may be implemented in the manner of electronic computing device800. As illustrated in the example ofFIG. 8, electronic computing device800comprises a memory unit801. Memory unit801is a computer-readable data storage medium that is capable of storing data and instructions. Memory unit801may be a variety of different types of computer-readable data storage media including, but not limited to, dynamic random access memory (DRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), reduced latency DRAM, DDR SDRAM, DDR3 SDRAM, Rambus RAM, or other types of computer-readable data storage media.

In addition, electronic computing device800comprises a processing unit802. In a first example, processing unit802may execute software instructions that cause processing unit802to provide specific functionality. In this first example, processing unit802may be implemented as one or more processing cores and/or as one or more separate microprocessors. For instance, in this first example, pressing unit802may be implemented as one or more Intel Core2 microprocessors. Processing unit802may be capable of executing instructions in an instruction set, such as the x86 instruction set, the POWER instruction set, a RISC instruction set, the SPARC instruction set, the IA-64 instruction set, the MIPS instruction set, or another instruction set. In a second example, processing unit802may be implemented as an application specific integrated circuit (ASIC) that provides specific functionality. In a third example, processing unit802may provide specific functionality by using an ASIC and by executing software instructions.

Electronic computing device800also comprises a video interface804that enables a clients system (102and104) or a server system (108and110) to output video information to display device806. Display device806may be a variety of different types of display devices. For instance, display device806may be a cathode-ray tube display, an LCD display panel, a plasma screen display panel, a touch-sensitive display panel, a LED array, or another type of display device.

In addition, electronic device802includes a non-volatile storage device808. Non-volatile storage device108is a computer-readable data storage medium that is capable of storage data and/or instructions. Non-volatile storage device808may be a variety of different types of different non-volatile storage devices. For example, non-volatile storage device808may be one or more hard disk drives, magnetic tape drives, CD-ROM drives, DVD-ROM drives, Blu-Ray disc drives, or other types on non-volatile storage devices.

Electronic computing device80, also includes an external component interface810that enables client systems102and104and server systems108and110to communicate with external components. As illustrated in the example ofFIG. 8, external component interface810communicates with an input device812and an external storage device814. In one implementation of electronic computing device800, external component interface810is a Universal Serial Bus (USB) interface. In other implementations of electronic computing device800, electronic computing device800may include another type of interface that enables electronic computing device800to communicate with input device, and/or output devices. For instance, electronic computing device800may include a PS/2 interface. Input device812may be a variety of different types of devices including, but not limited to keyboards, mice, trackballs, stylus input devices, touch pads, touch-sensitive display devices, touch-sensitive display screens, or other types of input devices. External storage device814may be a variety of different types of computer-readable data storage media including magnetic tape, flash memory modules, magnetic disk drives, optical disc drives, and other computer-readable data storage media.

In addition, electronic computing device800includes a network interface816that enables electronic computing device800to send data to and receive data from network110. Network interface816may be a variety of different types of network interface. For example, network interface816may be an Ethernet interface, a token-ring interface, a fiber optic interface, a wireless network interface (e.g. WiFi, WiMax, etc.), or another type of network interface.

Electronic computing device800also includes a communications medium818that facilitates communication among the various components of electronic computing device800. Communications medium818may comprise one or more different types of communication media including, but not limited to, a PCI bus, a PCI Express bus, an accelerated graphics port (AGP) bus, an Infiniband interconnect, a serial Advanced Attachment (ATA) interconnect, a parallel ATA interconnect, a Fiber Channel interconnect, a USB bus, a Small Computer System Interface (SCSI) interface, or another type of communications medium.

Several computer-readable data storage media are illustrated in the example ofFIG. 8(i.e. memory unit801, non-volatile storage device808, and external storage device814). Together, these computer-readable data storage media may constitute a single logical computer-readable data storage medium. This single logical computer-readable data storage medium may store instructions executable by processing unit802. Actions described in the above description may result from the execution of the instructions stored on this single logical computer-readable data storage medium. Thus, when this description says that a particular logical module performs a particular action, such a statement may be interpreted to mean that instructions of the software module cause a processing unit, such as processing unit802, to perform the action.

The various embodiments described above are provided by way of illustration only and should not be construed to limiting. Various modifications and changes that may be made to the embodiments described above without departing from the true spirit and scope of the disclosure.