Abstract:
A system for creating and dynamically managing websites includes a set of tables; a database associated with the set of tables; and a software tool for generating a web interface based on the database using the set of tables. A method for creating and dynamically managing websites includes creating a set of tables associated with a database; and generating a web interface based on the database using the set of tables.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]    This application claims priority under Section 119 of U.S. Provisional Application No. 60/291,828, filed on May 18, 2001. 
     
    
     
       BACKGROUND OF INVENTION  
         [0002]    A modern computer system comprises a microprocessor, memory, and peripheral computer resources, i.e., monitor, keyboard, software programs, etc. The microprocessor includes arithmetic, logic, and control circuitry that interpret and execute instructions from a computer program. FIG. 1 shows a prior art block diagram of a microprocessor ( 22 ) having, among other components, a central processing unit (“CPU”) ( 24 ), a memory controller ( 26 ), also known as a load/store unit, and on-board, or level 1, cache memory ( 30 ). The microprocessor ( 22 ) is also connected to external, or level 2, cache memory ( 32 ) and to the main memory ( 34 ) of the computer system. The basic functionality of a computer is dictated by the type of operating system it uses. Various operating systems exist in the market place, including the “Windows” Operating Systems, e.g., Windows 95/98 and Windows NT, from Microsoft, Solaris from Sun Microsystems, Macintosh from Apple Computers, and Linux. The different types of operating systems will be referred to herein as “platforms”.  
           [0003]    Content is delivered across the Internet to various platforms in the form of web pages. The look and feel of these web pages is largely dependent on Hypertext Markup Language (HTML) code. This code, which is understood by web browsers such as Microsoft® Internet Explorer® and Netscape® Communicator®, dictates attributes, position, and the like of the text and graphics on a web page. A web browser is a program that provides a way to view and interact with information on the Internet. Essentially, web browsers use the Hypertext Transfer Protocol (HTTP) to make requests of Web servers connected to the Internet on behalf of a user.  
           [0004]    HTML (Hypertext Markup Language) is a set of markup symbols that tell a web browser how to display words and images to a user. Each individual markup code is referred to as an element or tag. Certain elements come in pairs that indicate the start and end of an effect. Those skilled in the art will appreciate that server-side and client-side scripts exist and can be used to tailor the operation of a web page.  
           [0005]    An Active Server Page (ASP) is an HTML page that includes one or more scripts (small embedded programs) that are processed before the page is sent to the user. An ASP is similar to a server-side include or a common gateway interface (CGI) application in that all involve programs that run on the server, usually tailoring a web page for the user. Typically, the script in the web page at the server uses input received as the result of the user&#39;s request for the page to access data from a database and then updates the content of the page before sending it to the requester. ASP files can be created by including a script written in VBScript or JScript in an HTML file or by using ActiveX Data Object program statements in an HTML file.  
           [0006]    Another generally server-side format is ColdFusion. ColdFusion is a development system for creating web pages and web applications. Web pages developed under the ColdFusion system contain both HTML and a tag-based server scripting language, called ColdFusion Markup Language (CFML). When the ColdFusion pages are requested, the CFML tags are processed on the server before returning a dynamically generated HTML page.  
         SUMMARY OF INVENTION  
         [0007]    In general, in one aspect, the present invention involves a system for creating and dynamically managing websites comprising a set of tables; a database associated with the set of tables; and a software tool for generating a web interface based on the database using the set of tables.  
           [0008]    In general, in one aspect, the present invention involves a method for creating and dynamically managing websites comprising creating a set of tables associated with a database; and generating a web interface based on the database using the set of tables.  
           [0009]    In general, in one aspect, the present invention involves an apparatus for creating and dynamically managing websites comprising means for creating a set of tables associated with a database; and means for generating a web interface based on the database using the set of tables.  
           [0010]    Other aspects and advantages of the invention will be apparent from the following description and the appended claims. 
       
    
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0011]    [0011]FIG. 1 is a conventional computer.  
         [0012]    [0012]FIG. 2 is a computer system network in accordance with an embodiment of the present invention.  
         [0013]    [0013]FIG. 3 shows exemplary components of a system in accordance with an embodiment of the present invention.  
         [0014]    [0014]FIG. 4 shows exemplary association between database tables and files in accordance with an embodiment of the present invention.  
         [0015]    [0015]FIG. 5 shows an exemplary set of screens associated with the files in accordance with an embodiment of the present invention.  
         [0016]    [0016]FIG. 6 shows an exemplary dialog box containing table properties.  
         [0017]    [0017]FIG. 7 shows an exemplary dialog box containing website properties.  
         [0018]    [0018]FIG. 8 shows a special menu items dialog box.  
         [0019]    [0019]FIG. 9 shows a site wizard dialog box.  
         [0020]    [0020]FIG. 10 is a flow chart describing a production website creation process in accordance with an embodiment of the present invention.  
         [0021]    [0021]FIG. 11A shows an exemplary new site dialog box.  
         [0022]    [0022]FIG. 11B shows an exemplary delete site dialog box.  
         [0023]    [0023]FIG. 12 is a flow chart describing a trial website creation process in accordance with an embodiment of the present invention.  
         [0024]    [0024]FIG. 13 shows an exemplary dialog box for the creation of a trial site.  
         [0025]    [0025]FIG. 14 shows an exemplary dialog box for moving a trial site to production.  
         [0026]    [0026]FIG. 15 is a flow chart describing an update process for production sites in accordance with an embodiment of the present invention.  
         [0027]    [0027]FIG. 16 is a flow chart describing an update process for trial sites in accordance with an embodiment of the present invention.  
         [0028]    [0028]FIG. 17 is a flow chart describing a database update process in accordance with an embodiment of the present invention.  
         [0029]    [0029]FIG. 18 is a flow chart describing a database update process in accordance with an embodiment of the present invention.  
         [0030]    [0030]FIG. 19 is a flow chart describing a database update process in accordance with an embodiment of the present invention.  
         [0031]    [0031]FIG. 20 shows an exemplary mass update dialog box.  
     
    
     DETAILED DESCRIPTION  
       [0032]    Referring to the drawings wherein like reference characters are used for like parts throughout the several views, FIG. 2 shows an embodiment of the present invention.  
         [0033]    In general, in one or more embodiments, the invention can be embodied in electronic software residing in one or more computers ( 40 ), ( 42 ), ( 44 ), and ( 46 ) connected through a network ( 48 ). Those skilled in the art will appreciate the many possible configurations available that satisfy this requirement. The computers shown in FIG. 2 may be mainframe computers, network computers, web-browsing terminals, desktop computers, laptop computers, palmtop computers, etc., and may run under IBM-compatible operating systems, Macintosh operating systems, UNIX operating systems, etc. Further, the network ( 48 ) may be embodied in many different forms. The embodiments described below relate to websites published on the Internet. However, those skilled in the art will appreciate that the present invention is equally applicable to the production of pages for any type of network, e.g., a local intranet. Further, it will be understood by those skilled in the art that there are many methods of connecting to the Internet and publishing websites thereon.  
         [0034]    In one embodiment, the present invention may be a system that automatically creates and dynamically manages websites in real-time. Referring to FIGS.  3 - 5 , a software tool ( 50 ) creates a website ( 54 ) to help maintain and control a database ( 52 ) through a web interface ( 56 ). The website ( 54 ) includes login screens ( 60 ), control source ( 62 ), menus ( 64 ), and multiple files ( 66   a - n ) for each table ( 65   a - n ) in the control database ( 52 ). The series of files ( 66   a - n ) may be, for example, an Add Screen ( 70 ), an Edit Screen ( 72 ), a Delete Screen ( 74 ), an Update File Screen ( 76 ), an Inquiry Screen ( 78 ), an Inquiry Result Screen ( 80 ), and a Menu Screen ( 82 ). Because the software tool ( 50 ) uses database ( 52 ) to build the website ( 54 ), the included components are fully customizable.  
         [0035]    The software tool ( 50 ) has information about each table ( 65   a - n ) in the database ( 52 ). Each table ( 65   a - n ) can be designated as having a parent. Also, whether the parent or grandparent of a given table ( 65   a - n ) controls access to the table can be set. For example, an invoice may be the parent and each line of detail on the invoice may be a child. Further, tables have the attribute of being “used elsewhere.” This attribute allows protection against orphaning entries in related tables. The table can be “used elsewhere” which creates the files for the table but does not create an entry in the menu for the table or any special update code during an add, edit, or delete.  
         [0036]    Referring to FIG. 6, an exemplary dialog box containing table properties is shown. As can be seen, the dialog box ( 61 ) is configured with a series of text and check boxes. These boxes provide the software tool ( 50 ) information about each field in each table ( 65   a - n ). The database provides certain information about each field, but for reasonable data entry far more attributes are needed. Thus, the software tool ( 50 ) tracks the table information in order to prompt for a field and determine characteristics of the field. The dialog box ( 61 ) also includes standard Ok ( 63 ) and Cancel ( 65 ) buttons, which operate in the conventional manner.  
         [0037]    The field characteristics included on the table properties dialog box ( 61 ) are used to specify various system attributes. Check boxes ( 67 ) control whether to prompt users with the contained prompts on the lookup screen, whether the field is required; whether the field appears on the lookup page, whether the field appears on the result page; whether the field is a date field, a file upload field; a password field; a timestamp, whether the field is used in a sort on the result page; and whether the grandparent or parent controls lookup. Pull-down menus ( 69 ) dictate the parent table. The text boxes ( 71 ) contain the menu name, default values for field prompts, unique filename prefixes, and the maximum number of records for the table.  
         [0038]    Other characteristics that may be included are whether a field is a unique field, an email field, etc.; whether to sort in descending order on result page; whether the field generates unique filenames or retains file names on upload; whether to permit executable file uploads; whether the field contains a DNS third level field name; whether the field is part of a many to many relationship; whether to retain old field value on edits; source table and table field and prompt field, sort order; image library entry code; standard image width and height size; name of memo overflow field, and special query constraints.  
         [0039]    Further, the software tool ( 50 ) tracks created websites&#39; properties.  
         [0040]    Referring to FIG. 7, an exemplary dialog box ( 75 ) for website properties is shown. As can be seen, text boxes ( 77 ) contain values for the website URL (uniform resource locator), the logo filename, email address for errors, and background color. Further, text boxes ( 77 ) contain values dictating the file full production and test paths, DNS base address, IP address, test and production help directories, and display path. Text boxes may include a browse button ( 83 ) that allows a user to browse through the directories on their computer and mapped network drives to select path names and files.  
         [0041]    Pull-down menus ( 79 ) allow a user to select the login table, user ID and password fields, welcome first and last names, control ID, and subweb logo. The dialog box ( 75 ) also contains check boxes ( 81 ) for controlling whether the control ID is used for subweb access; whether to submit the website URL and description to Internet search engines; whether to allow real media; whether to suppress wizard sub items; whether the website is a secure site; whether to allow HTML uploads; and whether to use a MySQL database. Finally, the dialog box ( 75 ) also includes standard Ok ( 85 ) and Cancel ( 87 ) buttons, which operate in the conventional manner.  
         [0042]    The software tool ( 50 ) allows the selection of any table ( 65   a - n ) in a database ( 52 ) to hold login/password pairs. The system creates login screen ( 60 ) and validates login/password pairs. At the beginning of each template, the system validates that the interaction is done in a secure session. This prevents unauthorized users from jumping into the middle of a secure site and making changes. Also, the security role is checked for the current login. The role allows add/edit/delete access on both entire tables and data sensitive areas. The levels of each role entry is to allow or disallow a user access to login, access to tables, access to field names, and access to field data. Referring to FIG. 8, the software tool ( 50 ) allows users to modify menu items, each pointing to a file, through a special menu items dialog box ( 91 ). The dialog box ( 91 ) contains buttons for adding a menu item ( 93 ), editing a menu item ( 95 ), and deleting a menu item ( 97 ). Also, the dialog box ( 91 ) includes standard save changes ( 99 ) and cancel ( 101 ) buttons.  
         [0043]    Referring to FIG. 9, production sites are created using a visual “check-box” interface. Through the site wizard dialog box ( 105 ), the software tool ( 50 ) manages the exact features and functions via the check-box options ( 107 ). Though the selection of these options, a user is allowed to choose which modules are created on the site, such as Banner Ads, Newsletters, Catalog, Shopping Cart, Press Release, Contest, Directory, Event Calendar, Document Management, Frequently Asked Questions (FAQ), Real Estate, Classified, etc. Also, the system determines whether the site is a “plain” site or one for associates ( 109 ). Association websites include additional features ( 111 ) such as an association directory and associate signup, and a text box ( 113 ) is included for entry of the association home page name. The dialog box ( 105 ) includes text boxes for entry of the company name ( 115 ), display path ( 117 ), meta tags (description ( 119 ) and keywords ( 121 )), email address for errors ( 123 ) and email server ( 125 ). Finally, the site wizard dialog box ( 105 ) includes create website ( 127 ), save changes ( 129 ), and cancel ( 131 ) buttons.  
         [0044]    Software tool ( 50 ) creates and manages trial and production sites. Both trial and production sites consist of several directories, a public site, and a secure private administrative site. As discussed above, the public and private sites are fully customizable. The software tool ( 50 ) creates the website by examining the options configured and writing the application code.  
         [0045]    Referring to FIG. 10, creating a production site occurs in the following manner. First, an empty IP address is obtained (step  90 ) and the Domain Name Server (DNS) Entries are created (step  92 ). Next, a site directory is created (step  94 ) for the obtained IP address. The production site is created in the directory using the process described above (step  96 ). Also, the HTML Upload, non-public site, and File Upload directories are created. Then, the software tool ( 50 ) creates the non-Public Site (step  100 ), the database (step  102 ), the ODBC entries for the new database (step  104 ), and an entry in the web server for the new site (step  106 ). Finally, the mail server is informed of the new ‘local’ site (step  108 ) and the client billing database is updated (step  110 ). The deletion of a production site follows the same steps in reverse order, with the reverse effects. The production site is archived by coping the database and uploaded files directory to an archive directory.  
         [0046]    Referring to FIGS. 1A and 1B, the software tool ( 50 ) displays dialog boxes ( 135 ) and ( 137 ) respectively to allow users to create or delete production websites. The new site dialog box ( 135 ) includes a text box ( 139 ) for entry of the new website name, create new site button ( 141 ), new site options button ( 143 ) for accessing website options, and a standard close button ( 145 ). The delete site dialog box ( 137 ) includes a pull-down menu ( 147 ), a delete button ( 149 ), and a standard close button ( 151 ). Also, the delete site dialog box ( 137 ) includes a check box ( 153 ) allowing a user to select whether to delete the archive of the website being deleted.  
         [0047]    The addition of a Trial Site is essentially the same as the creation of a production site, however, trial sites are created under an existing URL, e.g., www.netsential.com. Referring to FIG. 12, a trial site is added by the following process. First, a subdirectory is created under an existing site directory (step  120 ). Then, the production site is created in the subdirectory (step  122 ). Also, the HTML Upload, non-public site, and File Upload directories are created (step  124 ). Next, the software tool ( 50 ) creates the non-Public Site (step  126 ), the database (step  128 ), and the ODBC entries for the new database (step  130 ). The software tool ( 50 ) then checks whether the trial site should be moved into production (step  132 ).  
         [0048]    If so, a production site is created, e.g., as described above, preserving the database and upload file directory from the trial site. Thus, the production site is created (step  134 ), the database from trial site is copied to the production site (step  136 ), and the upload directory from the trial site is copied to the production site (step  138 ). Moving a trial site into production ends the process.  
         [0049]    If, on the other hand, the site is not moved into production (step  132 ), a check is performed to determine whether the site should be deleted (step  133 ). Trial site may be restricted, for instance, to certain lengths of time. Thus, trial sites that are determined to exceed a restriction should be deleted. If the software tool ( 50 ) determines that the site should be deleted (step  133 ), the trial site is deleted (step  135 ) and the process ends. Otherwise, the software tool ( 50 ) continues to monitor whether the trial site should be moved into production (step  132 ) or deleted (step  133 ).  
         [0050]    Referring to FIGS. 13 and 14, the dialog boxes for the creation of a trial site and moving a trial site to production are shown. As can be seen, the trial site dialog box ( 155 ) includes check boxes ( 157 ) for selecting options similar to those of site wizard ( 105 ). Also, the trial site dialog box ( 155 ) contains a text box ( 159 ) for entry of the trial site name, a pull-down menu ( 161 ) for trial site type, and a pull-down menu ( 163 ) for tracking the sales person involved with the trial site. Control buttons are included for creation of the trial site ( 165 ), deletion of the trial site ( 167 ), moving the trial site to production ( 169 ), archiving sites ( 171 ), new trial site options ( 173 ), and a standard close ( 175 ). Upon user selection of the make production site button ( 169 ), the Move Trial to Production dialog box ( 177 ) appears. The Move Trial to Production dialog box ( 177 ) includes pull-down menus for tracking the site name ( 179 ) and salesperson involved ( 181 ) and text boxes for entry of the production URL ( 183 ) and IP address ( 185 ). Further, the dialog box ( 177 ) has a move site button ( 187 ) and standard cancel button ( 189 ).  
         [0051]    When changes are made to the web software and/or database design, it is important to provide the latest version to every website built or maintained by the system. In order to efficiently deliver these updates, client web sites are updated by the system “en mass.” Mass update of production sites occurs using the following mass update procedure. A mass update dialog box ( 191 ), which controls the mass update and visitor deletion processes described below, is shown in FIG. 20.  
         [0052]    Referring to FIG. 15, for each production site that receives periodic updates, the production site database is compared with the model database (step  140 ). The model database is the main system database containing the latest updates. The production site database is then updated so that all the tables, indexes, and relationships in the model database are the same (step  142 ). Nonpublic site table information is copied from the model site to the production site (step  144 ). Next, the non-public site is re-created by rewriting all the code for the site (step  146 ). Finally, the public site is re-created by rewriting all the code for the site (step  148 ).  
         [0053]    For trial sites the update is essentially the same overall procedure.  
         [0054]    Referring to FIG. 16, for each production site that receives periodic updates, the trial site database is compared with the model database (step  150 ). The trial site database is then updated so that all the tables, indexes, and relationships in the model database are the same (step  152 ). Non-public site table information is copied from the model site to the trial site (step  154 ). Next, the non-public site is re-created by rewriting all the code for the site (step  156 ). Finally, the public site is re-created by rewriting all the code for the site (step  158 ). Those skilled in the art will appreciate that the re-creation of the trial site follows the process discussed above for adding trial sites, whereas the re-creation of production sites follows the process discussed above for adding production sites.  
         [0055]    Referring to FIG. 17, the database update of the mass updates (steps  142  and  152 ) performs the following algorithm. For each table in the model database, the system checks to see if the table exists (step  160 ). If the table does not exist (step  162 ), the system creates the table with all the fields described in the model database (step  163 ). If the table does exist (step  162 ), then the system determines whether a field exists for each field in the database (step  164 ). If the field does not exist (step  166 ), the field is added to the table (step  169 ). If the field does exist (step  166 ), the field type and length are compared to determine that they are the same (step  168 ). If the field length or type is different (step  168 ) then determine whether the table is empty (step  170 ). If the table is empty (step  170 ), drop the table and re-add the table with the new description (step  173 ). If the table has entries ( 170 ) report the difference in an error file (step  172 ).  
         [0056]    For each index on the table check to see if the index exists (step  174 ). If the index does not exist (step  176 ) add the index (step  178 ). If the index does exist (step  176 ), determine if different (step  179 ). If the existing index is different (step  178 ), drop the old index and add the new description (step  181 ).  
         [0057]    For each index on the production table check to see if the index exists on the model table (step  180 ). If the index does not exist on the model table (step  182 ) then drop the index ( 185 ). For each field in the production table check to see if the field exists on the model table ( 184 ). If the field does not exist ( 186 ) on the model table then drop the field ( 188 ).  
         [0058]    The model database also has “standard information” as described above. This information complements the data structure defined in the design of the database. For each table in the model database the mass update copies the standard information from the model database description file to the production database description file.  
         [0059]    Referring to FIGS.  18 - 19 , the software tool ( 50 ) tracks visitors through the use of “cookies.” The use of cookies is well known to those skilled in the art. For each visitor, the system tracks name, address, email, and any additional information available. Also, each visit a particular visitor makes is tracked. When a visitor arrives, this information is collected (step  190 ) and, if a visitor report does not already exist (step  192 ), a visitor report is created (step  194 ). If a visitor report does exist (step  192 ) the information collected is used to update the existing visitor report (step  196 ). The information contained in a visitor report is used to pre-fill forms (step  200 ) whenever the visitor reaches a page requesting a name, address, or the like (step  198 ).  
         [0060]    For efficiency, visitor reports are deleted after a specified start period, e.g., at the start every month. When the specified start period occurs, visitor reports are retrieved (step  210 ). The visitor report for any visitors who have not returned in a specified interval, e.g., 6 months, are then deleted. Thus, the system determines from the retrieved visitor reports which visitors have not returned for the specified interval (step  212 ) and deletes those visitors (step  214 ). Further, the system may restrict access to resources for users after a specified number of visits. Accordingly, for all visitor reports not expired in time (step  212 ), the system determines whether the number of visits has been exceeded (step  216 ). If so, the visitors access rights are modified (step  218 ). Otherwise, the process ends.  
         [0061]    Referring to FIG. 20, the mass update dialog box ( 191 ) includes buttons for the validation of trial sites ( 193 ), update of trial sites ( 195 ), update of production sites ( 197 ), deletion of visitor information ( 199 ), deletion of old visitors ( 201 ), and closing the dialog box ( 203 ). The mass update dialog box ( 191 ) also includes a window ( 205 ) for displaying results matching a prior-to-date pull-down box ( 207 ) and visitor number range ( 209 ).  
         [0062]    Advantages of the present invention may include one or more of the following. The system disclosed allows efficient creation and maintenance of websites. The processes and operations of the system are optimized to ensure error-free code is quickly generated.  
         [0063]    While the present invention has been described with respect to a limited number of preferred embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. The appended claims are intended to cover all such modifications and variations which occur to one of ordinary skill in the art.  
         [0064]    While the invention has been described with respect to a limited number of embodiments, those skilled in the art, having benefit of this disclosure, will appreciate that other embodiments can be devised which do not depart from the scope of the invention as disclosed herein. Accordingly, the scope of the invention should be limited only by the attached claims.