Web sites are an integral part of an organization's operations. Web sites are used to actively promote companies and products, deliver services and information, manage transactions, and facilitate communications. Changes in site content may occur quickly—daily, hourly, or even minute-by-minute. These rapid changes may create a “ripple effect” of changes throughout a site. The sheer size of many dynamic business sites makes it impossible for all revisions to flow through a manager of the site or even a few site developers. Complexity and speed have created the demand for automated ways to effectively manage web content.
Web site content management products allow users to create and manage the pages of their web site and generate many automatic updates to the content. A web content management solution can enable an organization to save time and money, improve communications, strengthen business relationships, and increase revenues. Some content management systems also provide the scalability, flexibility, and enterprise system interoperability that is necessary to meet future site requirements. However, web content management solutions are still being developed, with many problem areas and developmental hurdles still need to be addressed.
For example, in many web sites, there are often common pieces of text or other content fragments which are usable on many pages. However, managing these common fragments has been difficult to accomplish. Many current web site management systems have yet to address these repeated fragments in a useful way.
Aspects of the present invention are generally related to managing reusable content fragments for a web site. A content management solution is included that is configured to provide locations in the site where the page authors may store reusable text and other content fragments. When creating new pages in the site, page authors may select a section of text or other content and save that as a reusable fragment. The fragment is saved in a reusable fragment library. Other authors may then insert the same fragment of text or other content into their pages. Whenever the fragment in the library is updated, all pages in the Web site which use that fragment are automatically updated as well.
In accordance with one aspect of the present invention, fragment creation and editing may be performed directly inside an author's normal editing environment. The author is not required to open another application and define the fragment before including the fragment in the web page being authored. Additionally, fragment creation and editing may also be performed from the fragment library. In one example, the fragment library shows the user the list of all fragments and supports sorting, filtering, and the like. The fragment library also supports sub-folders for organizing/categorizing related fragments.
In accordance with another aspect of the present invention, it is a reference to the fragment that is inserted within the web page editor rather than the fragment itself. Whenever a page of the site is viewed, the reference is dynamically removed and a current version of the fragment is inserted into the page.
In accordance with still another aspect of the invention, the content management system may be configured to allow the authors and/or designers to select a fragment and then view a list of the pages in the web site which are currently using that fragment. Additionally, the content management system is also configured to prevent a fragment that is currently being used in a page from being deleted.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.
Embodiments of the present invention are described more fully below with reference to the accompanying drawings, which form a part hereof, and which show specific exemplary embodiments for practicing the invention. However, embodiments may be implemented in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Embodiments of the present invention may be practiced as methods, systems or devices. Accordingly, embodiments of the present invention may take the form of an entirely hardware implementation, an entirely software implementation or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
The logical operations of the various embodiments of the present invention are implemented (1) as a sequence of computer implemented steps running on a computing system and/or (2) as interconnected machine modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations making up the embodiments of the present invention described herein are referred to alternatively as operations, steps or modules.
The present invention relates to embodiments of methods and systems that prohibit actions during a web page creation process. In embodiments of the present invention, the web page creation process has two phases: a web page template creation phase and a web authoring phase. A web page template is created during a web page template creation phase, and the web page template has at least one field. A field is an area within the web page template that allows dynamic editing within the field during the web authoring phase. In one embodiment, the field allows the inclusion, deletion, arrangement, or modification of content within the field. In embodiments of the present invention, one or more constraints are assigned to at least one of the fields. The constraints prohibit certain editing actions in the field, including the changes to field content mentioned above, during web authoring.
Computer system 100 displays information, such as display screen 102. Display screen 102 is enlarged to show details of the display. Display 102 relates to an over-simplified display of an example web browser application with the capability of viewing and editing content fragments. Importantly, although display 102 displays a web browser, many other types of software applications may be used to both generate content fragments and create the web page in accordance with the present invention and thus, the web browser example is not meant as a limitation, but merely as an illustration.
In this particular example, display 102 has a web browser window 104. Web browser window 104 has a menu bar 112 and a tool bar 114. Tool bar 114 provides user controls such as a back/forward navigation control 116, among potentially many others. Such user interface controls are generally known in the art and are useful in managing certain types of information. One such control in the current embodiment corresponds to navigation field 118. Navigation field 118 indicates the Uniform Resource Locator (URL) of the current page being viewed/edited and allows a user of web browser 104 to enter other URLs to navigate to other pages.
Since the current view of the page is an authoring view, within web browser window 104, there is a sub-window referred to as content manager window 106. In this particular example, content manager window 106 displays a set of content fields (122, 124, 126) that are included in the web page. The content fields, and the content within the fields may be managed according to another menu bar 108. More content fields may be available to include in a web page as represented by scroll bar 110.
Within each content field are one or more content fragments. The content fragments may correspond to text (e.g., text fragment A 130) or otherwise correspond to other types of content such as images (e.g., image fragment A 138). In one embodiment, the content of the fields is not logically separated into fragments. Instead, only those fragments of text or other content designated as reusable fragments are logically separated into fragments, and the remaining content is generally included in the fields. However, it may be that another option is to treat all content as fragments, with some fragments designated as reusable content fragments, and other fragments designated as general content fragments.
Text fragment C 134, text fragment D 136, and image fragment A 138 are each designated as reusable content fragments. In the present authoring view of the web page, these content fragments are highlighted to the page author (as indicated by the shading). As reusable content fragments, these fragments may be selected from a reusable content library (as described below) and inserted anywhere amongst the content of the fields. In one embodiment, the content manager allows the reusable content fragments to be created and edited directly within the authoring view of the page. In another embodiment, once the reusable content fragment is placed within the content of the page, the reusable content fragment is moved or deleted as a unit, treating the reusable content fragment similar to an embedded image.
In embodiments of the present invention, the field settings contain constraints. A constraint is a limitation or prohibition on a discrete action that may occur during web authoring. Constraints may take numerous forms and limit or prohibit many various discrete actions. In some embodiments, the constraints can limit the types of web parts that a web author can place in a field, can limit the types of manipulations or modifications to the web parts already part of a field, can limit the number of web parts allowed in a field, can prohibit certain types of arrangements of the web parts within the field, or can limit the property configurations allowed for types of web parts within the fields. One skilled in the art will recognize other types of constraints that may be applied to the fields and that the present invention is not limited to the specific embodiments of constraints described herein.
Field 126 is shown as having different constraints from fields 122 and 124. Field 126 is designated to accept only reusable content fragments. This ability to designate a field to correspond to only reusable content fragments is useful when consistent use of the field is required for each page within a web site. For example, a field may be designated on each page of the web site for providing the copyright notice of the page. To maintain the consistent use of the copyright notice throughout the web site, the author of the page is limited to the content that may be included in the field. Limiting the author to inserting reusable content fragments ensures that the author's presentation of the copyright notice is consistent with other pages of the web site. Additional constraints provided by the field may be leveraged to minimum number or maximum number of reusable fragments which may be inserted into the field as well as the type of reusable fragments. These constraints may be leveraged in various combinations. For example, the field may be configured to require a minimum of 1 reusable fragment, a maximum of 1 reusable fragment, and require that the type of fragment be a copyright notice.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 210 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by the computer 210 and includes both volatile and non-volatile media and removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile, non-volatile, removable, and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 210. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 230 includes computer storage media in the form of volatile and/or nonvolatile memory, such as read only memory (ROM) 231 and random access memory (RAM) 232. A basic input/output system 233 (BIOS), containing the basic routines that help to transfer information between elements within computer 210, such as during start-up, is typically stored in ROM 231. RAM 232 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 220. By way of example, and not limitation,
The computer 210 may also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 210 through a user input interface 260 connected to user input devices, such as a keyboard 262 and pointing device 261, commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 220 through a user input interface 260 that is coupled to the system bus 221, but may be connected by other interfaces and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
A monitor 291 or other type of display device is also connected to the system bus 221 via an interface, such as a video interface 290. In addition to the monitor 291, the computer 210 may also include other peripheral output devices such as speakers 297 and printer 296, which may be connected through an output peripheral interface 295.
The computer 210 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 280. The remote computer 280 may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer 210, although only a memory storage device 281 has been illustrated in
When used in a LAN networking environment, the computer 210 is connected to the LAN 271 through a network interface or adapter 270. When used in a WAN networking environment, the computer 210 typically includes a modem 272 or other means for establishing communications over the WAN 273, such as the Internet. The modem 272, which may be internal or external, may be connected to the system bus 221 via the user input interface 260, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 210, or portions thereof, may be stored in the remote memory storage device 281. By way of example, and not limitation, the remote application programs 285 reside on memory device 281. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Server 310 includes content manager 312 and reusable content library 314. In another embodiment, reusable content library 314 may be stored on a third party computer system. Content manager 312 is provided to transmit the data and instructions to client 320 for rendering web page 322 within web browser 324. The data and instructions provided also include the data corresponding to reusable content fragments that may be included in web page 322.
For example, the author of a page may be about to create three new product pages about a new line of rain jackets their company is announcing. As the author creates the first page, the author has also created a nicely formatted table that compares the features of the three jackets. The author desires to use this table on the product page for each jacket. The author selects the table and selects a “Create a new reusable fragment” option (e.g., a toolbar button). The author is then presented with a window (e.g., editing window 700 in
When the editing window closes, the author notices that the table is no longer editable and has a new user interface treatment (e.g., highlighting) indicating that the table corresponds to a reusable fragment. The rendering of a page, including the interface changes, is handled by client 320. In contrast, the management of the actual content included in web page 322, as well as storage of the reusable content fragment, is handled by server 310.
Similarly, when the author moves to create the pages for the other two jackets, the author may then select an “Insert an existing reusable fragment” option. The author is then presented with an asset picker window (e.g., asset picker window 500 in
From system 300, it is apparent that at least one embodiment of the present invention is an integrated client-server process for managing reusable content fragments in a web site. It is appreciated that other processes may also be provided, including an entirely client-based process, as well as a substantially server-based process, without departing from the spirit or scope of the present invention.
An additional process that may be used in the context of system 300 is a dependency determination process. For example, a particular author may manage a particular reusable content fragment. The author may desire to find all of the pages in the site that use the fragment the author manages. The author may open a view to the reusable content library (e.g., view 600 shown in
With regard to the reusable content fragments, reusable content fragments 434, 436, and 438 are not highlighted to the user as are their counterparts in
Directory field 510 allows the author of a web page to select among a group of libraries available for the library from which the author desires to select a reusable content fragment. Each library (e.g., 512) is indicated by its location relevant to the current web site and an identifier or title of the library. In one embodiment, the web site does not allow for a selection amongst various reusable content libraries, but instead stores the reusable content library applicable to the web site at the web site's root location. Once a selection of a particular library is made, the location of the selected library is indicated in site path indicator 530. In an alternative embodiment, the selection of the library may be made by inserting the URL location of the library into location selection field 540.
The contents of the selected reusable content library are then shown in library content field 520. Library content field shows a list of fragments (e.g., 522) and folders (e.g., 524) for selecting a particular fragment for insertion into the web page. As shown, each library may be organized into a listing of fragments or into a listing of folders and sub-folders each including more reusable content fragments for selection.
Asset picker window 500 may be instantiated at any time corresponding to any location of the web page for fields that permit the use of reusable content fragments. In certain circumstances, the libraries available for a particular web site may be limited to a particular set of libraries. Furthermore, certain reusable content libraries may be designated as being associated with a particular site, and therefore are not usable by other web sites for inserting reusable content fragments.
The view 600 of the reusable content library includes a selection window 610 for selecting the rich text fragment to insert into the web page. Selection window 610 provides an alternative selection window to the asset picker window 500 shown in
Editing window 700 includes an optional notification 702 that indicates that the changes to an existing reusable content fragment and/or the creation of a new content fragment are subject to approval before being stored to the reusable content library. A web site may have a variety of web page authors. If each of these web page authors have inserted a particular reusable fragment onto their page, an edit to the fragment may not be allowed. The edit to the reusable content fragment may need to pass an automatic or manual approval process before the new or edited reusable content fragment may be used.
Fields 706, 708, 710, and 712 are user defined fields for creating and identifying the reusable content fragments. Field 706 corresponds to the title of the reusable content fragment. Field 706 may provide an indication of what the fragment is (e.g., “2005 copyright notice), or may just provide an arbitrary designator for the reusable content fragment. Field 708 corresponds to a notes field for the author. The notes field provides the author of the reusable text fragment to describe the fragment's general use and other information about the fragment. In one embodiment, field 708 provides a quick reference that describes the fragment's contents rather than forcing the author of the web page to examine the fragment in its entirety. Field 710 provides a field for entering the type of the reusable fragment. In one embodiment, the types of reusable content fragments are limited to a particular set of types. In the example shown, a bio type of reusable content fragment is being selected from among the available types. Field 712 is provided for entry of the actual text that corresponds to the reusable content fragment. As shown in the label for editing window 700, the editing window is provided for creating/editing of a reusable text fragment. It is contemplated that a similar window is also provided for creating/editing content types other than text. Additionally, an expiration date field (not shown) may be included with the new reusable content fragment that sets an expiration date for the reusable content fragment. Any reusable content fragment that has an expiration date that indicates that the fragment has expired, is no longer available for an author to select from the reusable content library.
Read field data operation 802 reads the data corresponding to the field in the web page into memory for processing. In one embodiment the field that is read is identified according to a field value that uniquely identifies the field from other fields within the web page. Once the field data is read into memory, processing continues to search operation 804.
Search operation 804 searches the field data for reusable content fragment references. In one embodiment, when the filed data is stored as HTML, the reusable content fragment references correspond to one or more tags in the HTML that reference the separately stored reusable content fragment. As the field data is searched, processing continues at a decision operation 806.
Search decision operation 806 makes a determination during search operation 804 of whether a reusable content fragment reference is found in the field data. If a reusable content fragment reference is not found, process 800 ends and processing moves onto other tasks for handling the field data and rendering the web page. If a reusable content fragment reference is found in the field data, then processing continues with parse operation 808.
Parse operation 808 parses the reusable content fragment reference to determine the identifier for the fragment and other information for identifying and locating the reusable content fragment in memory. Once the reusable content fragment is identified by parsing the fragment reference, processing continues at cache decision operation 810.
Cache decision operation 810 determines whether the fragment data or fragment content corresponding to the reusable content fragment reference found is already present in the cache or other storage of the local computing device on which the web page is being rendered. If the fragment content is not in the cache then processing moves to load operation 812.
Load operation 812 loads the fragment content based on the fragment identification information into the cache of the local computing device. The fragment content is obtained from the stored version reusable content library. Once the fragment content is loaded, or if the fragment content was determined to already reside in the cache from cache decision operation 810, processing continues at read content operation 814.
Read content operation 814 reads the fragment content from the cache. The content of the reusable content fragment corresponds to the information required by the web page for rendering the reusable content fragment within the field. After the fragment content is read from the cache, processing continues to permission decision operation 816.
Permission decision operation 816 determines whether the current user of the web page has permission to view the reusable content fragment. It may be that a property associated with the reusable content fragment has been set to prevent the user from viewing the reusable content fragment. If so, then processing moves to conversion operation 817. Conversion operation 817 removes the reusable content fragment reference from the field data and does not replace it with any content. Processing then continues to search decision operation 824 to search for the field data for additional reusable content fragments.
However, if the current user does have permission to view the reusable content fragment, then processing continues with a rendering type decision operation 818. Rendering type decision operation 818 determines whether the type of rendering being done is to produce an editing or author's view of the web page or to produce the web page for an end user. If the web page is being rendering for editing, processing moves to conversion operation 820.
Conversion operation 820 converts the reusable content fragment to an edit version of the fragment. The edit version adds content and allows edits to the fragment to be made. In one embodiment, the fragment is highlighted to differentiate the fragment from the surrounding content of the field. Once the reusable content fragment is converted, or it is determined by rendering type decision operation 818 that no such conversion is necessary, processing continues with replacement operation 822.
Replacement operation 822 replaces the fragment reference in the HTML with the fragment content corresponding to the selected version of the reusable content fragment. Once the fragment content is inserted into the rendering description of the field, processing continues with search decision operation 824.
Search decision operation 824 determines whether the search of the current field data for reusable content fragments is complete. Each field may contain multiple reusable content fragments. If the search is incomplete, processing returns to search operation 804 where the search continues. However, if the search of the field data is complete, process 800 ends and processing moves onto other tasks for handling the field data and rendering the web page.
Process 800 may be repeated as many times as necessary for the various fields that may be included in a particular web page. Once process 800 is completed for each field, then the rendering controls of the web browser take the HTML provided and convert the HTML to a rendered image of the web page. Again, the web page presented is determined, at least in part, by whether the web page is presenting author's view or an end user's view of the page.
Search operation 902, searches the data representing the rendered version (e.g., HTML version) of a field on the web page for data representing an edit version of a reusable content fragment. The edit version of the reusable content fragment corresponds to the version of the fragment rendered for an author of the web page. The edit version of the reusable content fragment is in contrast to an end user view of the same fragment. The edit version may contain addition information, as well as highlighting the reusable content fragment for the author to identify itself as a reusable fragment. As the field data is searched, processing continues to version decision operation 904.
Version decision operation 904 determines whether an edit version of a reusable content fragment is found in the field data. If no edit version is found, processing advances to save operation 912 where the field data is saved. However, if an edit version of a reusable content fragment is found, processing continues at parse operation 906.
Parse operation 906 parses the edit version of the fragment content included in the field data. The parse operation determines the identifying information associated with the fragment content and other information used for saving the reusable content fragment. In one embodiment, parsing the fragment content identifies the reusable content fragment as a new fragment or an edited existing fragment within the field. In another embodiment, when the fragment content is parsed, and change has occurred to the content, the changed fragment is forwarded to the reusable content library. The reusable content library then updates the reusable content fragment within the library for future requests for the reusable content fragment. In still another embodiment, the change to the reusable content fragment is submitted to an approval process before the reusable content library is updated. Once the fragment content is parsed, processing continues at replacement operation 908.
Replacement operation 908 replaces the fragment content with a fragment reference. The fragment reference may be obtained from the reusable content library in the case of an existing reusable content fragment, or may be generated for a new reusable content fragment. Once the fragment content is replaced with the fragment reference, processing continues at search decision operation 910.
Search decision operation 910 determines whether the search of the rendered field data for edit versions of fragment content is complete. Each field may contain multiple reusable content fragments. If the search is incomplete, processing returns to search operation 902 where the search continues. However, if the search of the field data is complete, processing continues to save operation 912.
Save operation 912 saves the field data for that particular field, now including the fragment references rather than the fragment content, to the cache. From the cache, the field data may be forwarded to a server and stored. In another embodiment, the remaining fields of the web page may also have process 900 applied before saving the field data. Instead of saving each set of field data individually, the field data is saved as a portion of the saved web page. Once the field data is saved, process 900 ends and processing continues to other tasks for saving the web page or manipulating the page.
Similar to process 800, process 900 may be repeated as many times as necessary for the various fields that may be included in a particular web page. Once process 900 is completed for each field, a saved version of the web page that represents the latest version of the web page is stored in the content management system.
In addition to the operations described in processes 800 and 900, operations may also be included when saving and rendering reusable content fragments that is related to the formatting (e.g., font, text color, bold, italic etc) of the reusable content fragment. Options may be provided so that a reusable content fragment may preserve the formatting or apply a different formatting to the content of the fragment. For example, a reusable content fragment may contain references to cascading style sheets (CSS) classes that mark up the content. However, the actual formatting is tied to the web page that consumes the fragment. Returning to the example of the web site for selling jackets previously described. There may be three web pages for three jackets that each have a unique color. It is desired that the table display the appropriate color for a particular web page. Although the material content of the table is the same when rendered in each page for each jacket, the color scheme of the table may be different (e.g., on the page for a yellow jacket, the yellow color is shown first on the table. In contrast, a user may desire that no variation of the formatting for a particular reusable content fragment be permitted. In this example, the formatting may be hard coded within the reusable content fragment so that the consuming page is forced to respect the formatting. As a result, the content is displayed as specified with the reusable content fragment (e.g., using inline style formatting).
Although the invention has been described in language that is specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as forms of implementing the claimed invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.