System and method for creation and handling of configurable applications for website building systems
By introducing WCA and related processing modules, the existing website construction system's functional conflicts and loss in multi-level user permissions and dynamic layout processing have been solved, the system's stability and scalability have been achieved, and the integration and update efficiency of third-party applications and components have been improved.
Patent Information
- Application Number
- JP2024218597
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-10-30
- Filing Date
- 2024-12-13
- Publication Date
- 2025-03-18
AI Technical Summary
The existing website construction system has functional conflicts and loss of function when dealing with multi-level user permissions and dynamic layout processing, especially during the integration and update of third-party applications and components.
The concept of Website Building System Configurable Application (WCA) is introduced, through the ghost module and masquerader modules in the WCA handler, ensuring that the system can maintain compatibility and functional integrity when elements are deleted or updated, and conflict resolution and functional merging are carried out through machine learning and artificial intelligence modules.
It effectively solves the problem of functional conflicts and loss of website construction systems in multi-level user permissions and dynamic layout processing, ensures the stability and scalability of the system, and improves the integration and update efficiency of third-party applications and components.
Smart Images

Figure 2025038084000001_ABST
Abstract
Description
[Technical field]
[0001] This application claims priority from U.S. Provisional Patent Application No. 62 / 760,965, filed November 14, 2018, and U.S. Provisional Patent Application No. 62 / 927,703, filed October 30, 2019, both of which are incorporated herein by reference.
[0002] The present invention relates generally to website building systems, and more particularly to configurable applications. [Background technology]
[0003] Typically, visual editing systems used in website building systems are used by both novices and experts to create interactive websites. Existing website building systems are based on a visual editing model, and most website building systems provide multiple templates, usually with templates including complete sample websites, website sections, single pages or sections of pages.
[0004] A user of the website building system (also called a designer, subscriber, subscriber user or site editor) may design a website, and an end user of the website ("user's user") may access the website created by said user. Although the end user normally accesses the system in a read-only mode, the website building system (and the website) may enable the end user to perform modifications to the website, such as adding or editing a data record, adding a talkback to a news article, adding a blog entry to a blog, etc. The website building system may actually allow multiple levels of users (i.e., three or more levels) and assign different permissions and capabilities to each level. Users of the website building system (particularly in the fully or partially online configuration described below) may register with a website building system server that manages the users, their websites, and access by the end users.
[0005] The website building system may be a stand-alone system or may be embedded within a larger editing system. It may also be online (i.e., applications are edited and stored on a server), offline or partially online (websites are edited locally but uploaded to a central server for publication). The website building system may use an internal data architecture to store the website building system-based site, which may organize the internal data and elements of the site being handled within the system. This architecture may differ from the external view of the site (e.g., as seen by an end user) and is usually different from the way the HTML pages sent to the browser are organized.
[0006] For example, the internal data architecture may include additional properties for each element in a page (creator, creation time, access permissions, links to templates, SEО (Search Engine Optimization) related information, etc.) that are related to the editing and maintenance of the site in the website building system, but are not visible from the outside even to the end user (or some editing users). The website building system may implement part of its functionality (including both editing and runtime functionality) on a server or a set of servers and part of its functionality on client elements. The website building system may also dynamically decide whether to execute some functionality on the server or on the client platform.
[0007] A website building system handles the creation and editing of visually designed applications (such as websites) that typically consist of pages, containers, and components. Pages are displayed separately and may contain components. Components can contain containers as well as atomic components.
[0008] The website building system can support hierarchical arrangement of components using atomic components (text, images, shapes, videos, etc.) as well as various types of container components (e.g., normal containers, single-page containers, multi-page containers, gallery containers, etc.) that contain other components. Subpages contained within a container component are called minipages, each of which can contain multiple components. Some container components display only one minipage at a time, while others display multiple minipages simultaneously.
[0009] These components may be content-less or may have internal content. An example of the first category is a star component, which does not have any internal content (although it has color, size, position, and some other parameters). An example of the second category is a text paragraph component, whose internal content includes the inner text as well as font, formatting, and layout information. Of course, this content may vary from one instance of the text paragraph component to another. Components that contain content are often called fields (e.g., "text fields").
[0010] A page can use a template, a general page template, or a component template. Special cases of templates include the use of an application master page that contains components duplicated on all other regular pages, or the use of an application header or footer (repeated on all pages). Templates can be used for entire pages or page sections. Website building systems can provide inheritance between templates, pages, or components, potentially including multi-level inheritance, multiple inheritance, and diamond-shaped inheritance (i.e. A inherits from B and C, and both B and C inherit from D).
[0011] The visual arrangement of components within a page is called a layout. Website building systems can also support dynamic layout processing, i.e., a process in which editing a given component (or other changes affecting it, such as externally driven content changes) can affect other components, as further described in U.S. Patent No. 10,185,703, entitled "Website Design System Integrating Dynamic Layout and Dynamic Content," issued on January 22, 2019, assigned to the common assignee of the present invention, and incorporated herein by reference.
[0012] The website building system can be extended using third party applications and components thereof as well as list applications (such as those described in U.S. Patent Application Publication No. 2014 / 0282218, entitled "Website Building System Integrating Data Lists with Dynamic Customization and Adaptation," published Sep. 18, 2014, assigned to the common assignee of the present invention, and incorporated herein by reference). These third party applications and list applications can be added and integrated into the designed website.
[0013] Such third-party applications and list applications may be purchased (or obtained) through several distribution mechanisms, such as being pre-included in the website building system design environment, from an application store (either integrated into the website building system or external to it) or directly from the third-party application vendor.
[0014] The third-party application may be hosted on the website building system vendor's own servers, on the third-party application vendor's servers, or on a fourth-party server infrastructure.
[0015] The website building system may also allow for adding procedural code to some or all of the system's entities. Such code may be written in a standard language (such as JavaScript), an extended version of a standard language, or a language proprietary to the particular website building system. The executed code may reference Application Programming Interfaces (APIs) provided by the website building system itself or by external providers. The code may also reference internal structures and objects of the website building system, such as pages, components, and their attributes.
[0016] Procedural code elements can be activated via event triggers, which can be tied to user activity (such as a mouse move or click, or a page transition), other user-related activity (such as the underlying database or a specific database record being changed by another user), system events, or other types of conditions.
[0017] The activated code can be executed within a client element of the website building system, on a server platform, or by using a combination of the two or a dynamically determined execution platform. Such a system is described in U.S. Patent Application Publication No. 2018 / 0293323, entitled "System and Method for Smart Interaction Between Website Components," published October 11, 2018, which is assigned to the common assignee of the present invention and is incorporated herein by reference.
[0018] Typical site creation can be based on several models, including a visual editing model (where a user edits a previously created site) and an automated site generation model or a combination thereof, as shown in Figure 1. Reference is also made to Figure 1, which is described in U.S. Patent No. 10,073,923, entitled "System and Method for the Creation and Update of Hierarchical Websites Based on Collected Business Knowledge," issued on September 11, 2018, assigned to the common assignee of the present invention, and incorporated herein by reference.
[0019] It is understood that throughout this specification, the acronym WBS may be used to represent a website building system. Figure 1 shows a system 100 comprising a typical website building system 5 in communication with a client system operated by a WBS vendor staff 61, a site designer 62 (i.e., a user), a site viewer 63 (i.e., a user of a user), and an external system 70. The website building system 5 may further comprise a WBS (Website Building System) Site Manager 10, an object marketplace 15, a WBS (Website Building System) Runtime (RT) server 20, a WBS (Website Building System) Editor 30, a site generation system 40, and a WBS Content Management System (CMS) 50. It is understood that the elements of Figure 1 may function as described in U.S. Pat. No. 10,073,923.
[0020] In the visual editing model, users (designers) edit a site based on one or more website templates. A website building system provider may offer multiple site (or other) templates, each of which may contain complete sample websites, website sections, single pages or sections of pages. Users may have the option to start with an empty site (essentially a "blank page" template), but typically start with an actual site template.
[0021] WBS providers can offer site templates ranging from the very general (e.g., mobile sites, e-stores), to the more specific (e.g., law firms, restaurants, florists), to the very specific (e.g., commercial real estate law firms or Spanish tapas restaurants). Such templates are typically stored in a repository accessible to users of the website building system and are typically categorized according to business type, subtype, or industry. Templates can also be created (and categorized) according to business type, but also style, color range, or other parameters. Site templates can be extended with additional (typically back-end) features, services, and code to become fully-fledged vertical solutions integrated with the website building system.
[0022] Thus, a user's initial experience when creating a site using a website building system's visual editor is typically for the user to select a template (e.g., according to style or industry type / subtype), possibly selecting a blank template, and editing the template in the visual editor, including editing content, logic, layout and attributes. Such editing may include (among other things) adapting the template and its elements to the specifics of the user's business. The user can then publish the modified site.
[0023] Under the site generation model, the website building system generates an initial site for a user based on a selected template, which is then potentially modified by filling in common elements of information, possibly allowing follow-up editing of the generated site. This filling is necessary because the template contains different information (such as the business name and a description of the management team) in multiple places within its pages. Thus, the user may have to change the business name (for example) in multiple places throughout the template.
[0024] Furthermore, some template elements (e.g., a generic product page) may appear multiple times, with each instance displaying details of a different instance of the underlying entity (e.g., a different product offered on the site). Such multiple instances may be specified manually (e.g., details of different people in a company's management team) or may be dynamically derived from an external database (e.g., product details from a "products for sale" database). Such configurations are often known as "repeaters."
[0025] Templates can also contain fields. For example, a website building system may allow a template designer to specify fields (also called "placeholders") for inserting values into the template, such as {CompanyName}, {ProductName}, {ProductPrice}, etc. A user can also specify values for fields defined in the template selected for the website.
[0026] The website building system may allow the user to enter simple or complex values (e.g., text and images), as well as additional (non-field) information such as selection of included pages or website areas, colors, style information, links, formatting options, website display options, decorative elements (such as borders and backgrounds), etc.
[0027] The website building system may also allow the user to enter some of this additional information before selecting a template and use this information to aid in the selection of the template (e.g., by narrowing down the set of suggested templates). For example, the user may select a general color scheme (e.g., pastel) or style (e.g., business / formal) and the system may then use this selection to narrow down the set of suggested templates.
[0028] The system may also display a series of views or questionnaires to allow the user to enter values or selections (for both the defined fields and the additional information described above). The system may further create connections (or bindings) between the template's multiple instance elements (described earlier in this specification) and internal or external databases that provide the data instances used to generate the displayed instances.
[0029] Once a template has been selected and its domains and additional information specified (e.g., through a questionnaire or through binding to a data source), the website building system can generate a website containing the combined information. The user can then publish the site (through the website building system or other methods).
[0030] A website building system can perform semi-automated site creation using different models, such as those described in U.S. Patent No. 10,073,923. Under this model, the system collects information about the user and the user's website requirements from multiple sources, which may include, for example, user-filled questionnaires, existing user presence (such as existing websites or social media presence), industry sources (such as general trade websites), offline information, and an internal system repository that provides information about a particular industry (such as lawyers, restaurants, plumbers, graphic designers, etc.) such as basic template information for a particular industry (e.g., differentiating between real estate lawyers and personal injury lawyers).
[0031] The system may also collect external information from other sites, both internal and external to the system. Such information may influence, for example, the surveys and layout element choices offered, suggested defaults, etc. Such information may also be collected statistically or summarily, typically to not reveal information belonging to any single user and to protect users' privacy, anonymity, and legal rights (such as copyright). Such information may be found based on information provided by the user, which may be direct (e.g., existing website addresses) or indirect (business names and geographic addresses that may be used to find information about a business).
[0032] The collected information is analyzed and placed into a repository of content elements. The content elements are mapped to layout elements that present content from the content elements and combine to form a site. The layout element mapping, selection, and combination process can be fully automatic or semi-automatic (i.e., includes user interaction).
[0033] To support the above functions, a website building system typically maintains a set of repositories stored on one or more servers or server farms. Such repositories may typically include various related repositories such as a user information / profile repository, a WBS (website building system) component repository, a WBS site repository, a Business Intelligence (BI) repository, an edit history repository, a third party application store repository, etc. The system may also include site / content creation related repositories such as a survey type repository, a content element type repository, a layout element type repository, a design kit repository, a completed survey repository, a content element repository, a layout element repository, a rule repository, a family / industry repository, etc. A description of these repositories may be found in U.S. Pat. No. 10,073,923. Summary of the Invention
[0034] According to a preferred embodiment of the present invention, there is provided a website building system comprising at least one database for storing definitions and instances of Website building system Configurable Applications (WCAs) together with components of a website, where the WCA is a single packaged entity also accessible as a set of customizable elements, a WCA app builder enabling a developer to build and edit an initial version of the WCA, an insight editor providing a user with specific editing capabilities to edit at least one of the definitions or instances of the initial version of the WCA, a WCA Handler receiving at least one modification to the initial version of the WCA from a user and at least one update to the initial version of the WCA from a developer, the WCA Handler merging between the at least one modification and the at least one update to create a modified WCA and handling permissions between the at least one modification and the at least one update resolving conflicts or losses of functionality, and a WCA viewer supporting viewing of the initial version of the WCA and the modified WCA when the website building system is running.
[0035] Furthermore, according to a preferred embodiment of the present invention, the at least one database also stores website parameters of the website built by the website building system and user collected information of the user of the website building system, the user collected information being at least one of geographic location, language, editing history, and collected business intelligence.
[0036] Further, according to a preferred embodiment of the present invention, the WCA handler includes at least one of: a ghost module that ensures the operation of the modified WCA as a result of elements that have been removed from an initial version of the WCA by at least one modification, at least one update, and at least one combination thereof; and a masquerader that protects compatibility between replaced elements and replacement elements of the modified WCA as a result of at least one modification, at least one update, and at least one combination thereof in order to ensure the operation of the modified WCA.
[0037] Further, in accordance with a preferred embodiment of the present invention, the ghost module performs at least one of: obtaining the original definition, structure, and attributes of the deleted component; providing some or all of the behavior of the deleted component based on user-collected information; and simulating the API of the deleted component.
[0038] Furthermore, according to a preferred embodiment of the present invention, the masquerader provides conversion functionality for interaction between elements of the modified WCA and replacement elements using specific conversion drivers based on website parameters and user collected information.
[0039] Further, in accordance with a preferred embodiment of the present invention, the system includes a WCA Manager providing management services for the initial version of WCA and modified WCA within the website building system, a WCA CMS Coordinator that has access to at least the website components and user collected information from at least one database, and a WCA Handler that coordinates activities among the WCA App Builder, the WCA Manager, the WCA Site Viewer, the WCA Insight Editor and the WCA CMS Coordinator.
[0040] Further, in accordance with a preferred embodiment of the present invention, the system includes at least one of a WCA application store manager for enabling purchase of WCA for use in a website building system, and a WCA site generation system (SGS) for generating a site including an initial version of the WCA and a modified WCA.
[0041] Further, in accordance with a preferred embodiment of the present invention, the WCA App Builder includes a customization panel creator that configures and generates associated specific customization panels for the WCA, and a dialog editor that enables creation and editing of definitions for customizable elements for the WCA and a WCA analyzer that performs at least one of recognizing repeating or hierarchical elements within the structure of the WCA, performing static source analysis on the WCA for the customization panel creator, and performing static source analysis to determine runtime permissions and generate template code for the WCA.
[0042] Further, in accordance with a preferred embodiment of the present invention, the system includes at least one of: a WCA modification handler that receives and resolves conflicts between at least one modification and at least one update for the initial version of the WCA; a machine learning / artificial intelligence module that uses machine learning (ML) and artificial intelligence (AI) techniques to provide conflict resolution and loss of functionality support for ghost modules and masqueraders and to provide merge support for the WCA modification handler; an application programming interface (API) handler for replacing at least the initial version of the WCA with at least one other WCA having the same or a similar API; a warning provider that provides warnings regarding the implementation and use of the WCA handler; a feedback provider that collects information and provides analysis regarding general WCA instance changes; and a database connector for checking field types and previous connections made by the user of the at least one WCA or other users.
[0043] Further, according to a preferred embodiment of the present invention, the WCA modification handler includes an update receiver for receiving at least one modification and at least one update to an initial version of the WCA, an API analyzer for analyzing a pre-packaged API of the existing WCA to detect API properties and interfaces and generate a matching settings panel for the modified version of the WCA, a WCA merger for merging the at least one modification and the at least one update to create a modified WCA from the initial version of the WCA, a change resolver for resolving conflicts between the at least one modification and the at least one update, a permission determiner for determining and applying any permission restrictions to the at least one modification and the at least one update to determine any permissions required when running the modified WCA, and a change applicator for applying the at least one modification and the at least one update to the initial version of the WCA in response to the WCA merger, the change resolver and the permission determiner to create a modified WCA.
[0044] Furthermore, in accordance with a preferred embodiment of the present invention, the system includes a variant creator for creating a new variant WCA based on an existing WCA.
[0045] Furthermore, in accordance with a preferred embodiment of the present invention, the WCA merger includes a difference analyzer that collects and analyzes change sets between the at least one modification and the at least one update, and a conflict resolver that resolves conflicts between the at least one modification and the at least one update.
[0046] Further, according to a preferred embodiment of the present invention, the ML / AI module includes a CMS extractor / trainer that extracts and trains data from at least one database, an element behavior tracker / trainer that tracks the behavior of WCAs and their elements, an element behavior AL / AI module that learns about the behavior of the WCAs from the element behavior tracker / trainer and the CMS extractor / trainer, a merge ML / AI module that learns about the merged behavior of the WCAs from the element behavior tracker / trainer and the CMS extractor / trainer, and a decision engine that makes decisions on ghost modules, masqueraders, and WCA correction handlers based on the element behavior AL / AI module and the merge ML / AI module.
[0047] Furthermore, in accordance with a preferred embodiment of the present invention, the WCA merger merges according to at least one of developer or user hints, semantic tags, and the output of a decision engine.
[0048] According to a preferred embodiment of the present invention, a method is provided for a website building system, comprising the steps of: storing website components together with definitions and instances of configurable applications (WCAs) in at least one database, where the WCA is a single packaged entity also accessible as a set of customizable elements; enabling a developer to build and edit an initial version of the WCA; providing a user with specific editing capabilities to edit at least one of the definitions or instances of the initial version of the WCA; receiving at least one modification to the initial version of the WCA from a user and at least one update to the initial version of the WCA from a developer; at least merging between the at least one modification and the at least one update; resolving conflicts or losses of functionality; handling permissions between the at least one modification and the at least one update; creating a modified WCA from the merging, conflict resolution and permission handling steps; and supporting viewing of the initial version of the WCA and the modified WCA during runtime of the website building system.
[0049] Furthermore, according to a preferred embodiment of the present invention, the storing step also stores website parameters of the website built by the website building system and user collected information of a user of the website building system, the user collected information being at least one of geographic location, language, editing history, and collected business intelligence.
[0050] Further, according to a preferred embodiment of the present invention, the receiving, merging, conflict resolving and permission handling steps include at least one of the following steps: ensuring operation of the modified WCA as a result of elements removed from the initial version WCA by at least one modification, at least one update and combinations thereof; and protecting compatibility between the replaced elements and replacement elements of the modified WCA as a result of at least one modification, at least one update and at least one combinations thereof in order to ensure operation of the modified WCA.
[0051] Further, in accordance with a preferred embodiment of the present invention, the step of ensuring the behavior of the modified WCA as a result of the deleted element includes performing at least one of the steps of obtaining the original definition, structure, and attributes of the deleted component, providing some or all of the behavior of the deleted component based on user-collected information, and simulating the API of the deleted component.
[0052] Further, according to a preferred embodiment of the present invention, the step of preserving compatibility includes a step of providing conversion functions for interaction between elements of the modified WCA and replacement elements using specific conversion drivers based on website parameters and information collected by the user.
[0053] Furthermore, according to a preferred embodiment of the present invention, the method further includes steps of providing management services for the initial version WCA and the modified WCA within the website building system, accessing website components and user collected information from at least one database, enabling developers, receiving, merging, resolving conflicts, handling permissions, providing management services, providing specific editing functions, supporting viewing, and coordinating activities between the accessing and receiving steps.
[0054] Further in accordance with a preferred embodiment of the present invention, the method includes at least one of the steps of enabling purchase of the WCA for use in a website building system and generating a site including the initial version of the WCA and the modified WCA.
[0055] Further, in accordance with a preferred embodiment of the present invention, the step of enabling a developer to build and edit an initial version of a WCA includes the steps of configuring and generating an associated specific customization panel for the WCA and enabling the creation and editing of definitions for customizable elements for the WCA, and includes the steps of recognizing repeating or hierarchical elements within the structure of the WCA, performing static source analysis on the WCA for the step of configuring and generating an associated specific customization panel, performing static source analysis to determine runtime permissions for the WCA, and generating template code.
[0056] Further, according to a preferred embodiment of the present invention, the method includes at least one of the following steps: receiving and resolving conflicts between at least one modification and at least one update for the initial version of the WCA; providing support in resolving conflicts and loss of functionality for the step of ensuring operation of the modified WCA as a result of the step of protecting deleted elements and compatibility and providing merging support for the step of receiving and resolving conflicts; replacing at least the initial version of the WCA with at least one other WCA having the same or similar API; providing warnings regarding receiving, merging, conflict resolution and permission handling; collecting information and providing analysis regarding general WCA instance changes; and checking field types and previous connections made by the user of the at least one WCA or other users.
[0057] Further, according to a preferred embodiment of the present invention, the step of receiving and resolving conflicts includes the steps of receiving at least one modification and at least one update into the initial version of the WCA, analyzing a pre-packaged API of the existing WCA, detecting API properties and interfaces, generating a matching settings panel for the modified version of the WCA, merging the at least one modification and at least one update to create a modified WCA from the initial version of the WCA, resolving conflicts between the at least one modification and the at least one update, determining and applying any permission restrictions for the at least one modification and at least one update, determining any permissions required at run time for the modified WCA, and applying the at least one modification and at least one update to the initial version of the WCA in accordance with the steps of merging, resolving conflicts, determining and applying any permission restrictions, and creating the modified WCA.
[0058] Furthermore, in accordance with a preferred embodiment of the present invention, the method includes the step of creating a new variant WCA based on the existing WCA.
[0059] Furthermore, in accordance with a preferred embodiment of the present invention, the merging step includes collecting and analyzing change sets between the at least one modification and the at least one update, and resolving conflicts between the at least one modification and the at least one update.
[0060] Further, according to a preferred embodiment of the present invention, the step of using machine learning and artificial intelligence techniques includes the steps of extracting data from at least one database and training, tracking the behavior of WCAs and their elements, tracking the behavior of WCAs and learning about the behavior of WCAs from the steps of extracting data and training, learning about merging the behavior of WCAs from the steps of tracking the behavior of WCAs and the steps of extracting data and training, and making decisions for ensuring the operation of the modified WCA, protecting compatibility and receiving and resolving conflicts based on the steps of learning about the behavior of WCAs and the steps of learning about merging the behavior of WCAs.
[0061] Furthermore, in accordance with a preferred embodiment of the present invention, the WCA includes at least one of a front-end element, a back-end element, a support element, and a content element.
[0062] Furthermore, according to a preferred embodiment of the present invention, the support elements include at least one of an API definition, a dashboard, a UI support panel, rendering support, SEO support and application store support, specific operation handles, editing action plugins, and a frame element.
[0063] Furthermore, in accordance with a preferred embodiment of the present invention, a WCA is one of a single WBS component, a set of components forming a layout, a set of components forming a new composite component, a page section, a page, a website, a vertical application, a dashboard component, a dashboard page, and a panel.
[0064] Furthermore, in accordance with a preferred embodiment of the present invention, the customizable elements are at least one of a hierarchical set of included components, components running on a back-end, associated code, API definitions, data bindings, and configuration dialogs.
[0065] Furthermore, in accordance with a preferred embodiment of the present invention, related code is encapsulated to provide functionality for the associated customizable element.
[0066] Furthermore, in accordance with a preferred embodiment of the present invention, at least one update is in accordance with user change acceptance rules regarding WCA components and their attributes.
[0067] Furthermore, in accordance with a preferred embodiment of the present invention, the at least one update is by at least one of inheritance, reference, and distribution.
[0068] Furthermore, according to a preferred embodiment of the present invention, the distribution is at least one of: internal distribution from within the website building system, external electronic distribution from outside the website building system, and external physical distribution from outside the website building system.
[0069] Further, in accordance with a preferred embodiment of the present invention, at least one of the conflicts is at least one of a complete interruption and a partial interruption of a connection between at least two components of the initial version of the WCA, the connection being at least one of a direct connection, a message-based connection, and a code-based connection.
[0070] Furthermore, in accordance with a preferred embodiment of the present invention, at least one of the permissions is developer defined for each of the customizable elements.
[0071] Further in accordance with a preferred embodiment of the present invention, at least one of the permissions is a level of access defined by a developer for a user.
[0072] Furthermore, in accordance with a preferred embodiment of the present invention, the level of access is at least one of the visibility of the element, the ability to edit the element, the ability to delete the element, and the ability to expand.
[0073] Furthermore, in accordance with a preferred embodiment of the present invention, at least one update is a variant generation of the initial version of the WCA.
[0074] Furthermore, in accordance with a preferred embodiment of the present invention, at least one of the conflicts is at least one of customizable component functionality and attribute incompatibility. [Brief description of the drawings]
[0075] The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of this specification, however, the invention, both as to organization and method of operation, together with its objects, features, and advantages, may best be understood by reference to the following detailed description when read in conjunction with the accompanying drawings.
[0076] [Figure 1] 1 is a schematic diagram of a typical representation of a prior art website building system; [Figure 2A] FIG. 2A is a listing of elements of a website building system configurable application (WCA) constructed and operative in accordance with the present invention. [Figure 2B] FIG. 2B is a listing of elements of a website building system configurable application (WCA) constructed and operative in accordance with the present invention. [Diagram 3] FIG. 3 is a schematic diagram of a system for processing Web Site Building System (WBS) Configurable Applications (WCA) in a Web Site Building System, constructed and operative in accordance with the present invention. [Figure 4]FIG. 4 is a schematic diagram of elements of the WCA module of FIG. 3 constructed and operative in accordance with the present invention. [Diagram 5] FIG. 5 is a schematic diagram of various elements of an exemplary WCA constructed and operative in accordance with the present invention. [Figure 6] FIG. 6 is a schematic diagram of a particular frame element of a UI associated with a recipe WCA constructed and operative in accordance with the present invention. [Figure 7A] FIG. 7A is a schematic diagram of elements of the WCA handler of FIG. 4, constructed and operative in accordance with the present invention. [Figure 7B] FIG. 7B is a schematic diagram of elements of the ML / AI module of FIG. 7 constructed and operative in accordance with the present invention. [Figure 8] FIG. 8 is a schematic diagram of elements of the WCA remediation handler of FIG. 7 constructed and operative in accordance with the present invention. [Figure 9] FIG. 9 is a schematic diagram of a modified version of the WCA of FIG. 5, constructed and operative in accordance with the present invention. [Figure 10] FIG. 10 is a schematic diagram illustrating how to deploy different versions of a WCA while merging changes made by WCA users, constructed and operative in accordance with the present invention. [Figure 11] FIG. 11 is a schematic diagram of elements of the WCA merger of FIG. 8, constructed and operative in accordance with the present invention. [Figure 12] FIG. 12 is a schematic diagram of a WCA attribute tree constructed and operative in accordance with the present invention. [Figure 13A] FIG. 13A is a schematic diagram of an implementation of a WCA constructed and operative in accordance with the present invention. [Figure 13B] FIG. 13B is a schematic diagram of an implementation of a WCA constructed and operative in accordance with the present invention. [Figure 13C] FIG. 13C is a schematic diagram of an implementation of a WCA constructed and operative in accordance with the present invention. [Figure 13D] FIG. 13D is a schematic diagram of an implementation of a WCA constructed and operative in accordance with the present invention. [Figure 13E] FIG. 13E is a schematic diagram of an implementation of a WCA constructed and operative in accordance with the present invention.
[0077] It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0078] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.
[0079] Widgets (also known as web widgets) are known in the art as mini-applications that can be used to provide information to visitors on a website or to collect information for other purposes. They are typically standalone applications that can be embedded on third-party sites by any user on a copyrighted page. The term widget can encompass terms such as search widgets, trackers, news headlines, feeds, and other such live apps. They also provide a user interface that allows website designers and website end users to interact with them.
[0080] An exemplary widget is a travel widget that allows selection of a particular city and may have sub-functions that provide the weather, a list of upcoming events and attractions for the associated city, as well as a map of the city. Sub-functions may be associated such that clicking on a particular event may open a map showing the location of the event in question. Additionally, the map may be downloadable, allowing the user to adjust its layout to better suit their target platform.
[0081] Applicant has found that if the owner of a particular widget updates or changes its subelements (e.g., removes the map subelement or changes the event display subelement), the code connection between the event subelement and the map subelement may be "broken," resulting in loss of functionality, and the designer may have to "fix" the code to reconnect the two or for the widget to function without one of those subelements. Widgets typically have inheritance, so changes to the code that affect the functionality of some parts or subelements will affect the other parts / subelements.
[0082] Applicant has also discovered that in this scenario, the designer of a website using the widget need not be a computer programmer or have the necessary knowledge or skills to modify the necessary code.
[0083] Applicant has further discovered that the limitations of prior art widgets may be overcome using WCAs (website building system configurable applications), which may be widgets as described above, as well as other types of applications such as vertical solutions, applications, and plug-ins, or other WBS entities. WCAs are sets of elements packaged together that may be used in a website or mobile application. The elements may include website building system components, associated code, and additional elements as described further below and shown in Figures 2A and 2B referenced herein. WCAs may be customized to manipulate some or all of those elements to provide component-based behavior. WCAs may be embedded as instances into website pages in a manner similar to widgets or third-party applications.
[0084] Thus, in the travel widget scenario described above, if a designer embeds a travel WCA (as opposed to the prior art travel widgets described above) and they remove a map element (for example), the code that updates the map element when an event is selected will be updated or changed accordingly. As noted above, designers may not have the skills to modify the code themselves.
[0085] It is understood that such a WCA may function simultaneously as an embedded application (similar to a third-party application), as a component of a website building system, or as an entity whose elements / sub-elements may be separately manipulated by a website designer. The WCA may be edited (at a level determined by the developer) by both the WCA developer and the website designer to allow for updates, creation of variants, etc. The WCA developer may be part of the WBS vendor's 61 development team, or may be a separate entity selling via an app store or via any other channel, or may be part of the site designer organization. As noted above, any modifications made to the WCA may not necessarily affect its functionality.
[0086] It is understood that developers may update the WCAs they have developed, and that site designers 62 or users of the WCA may further modify the WCA to customize it themselves and create multiple versions of the WCA. Updates may also occur automatically as a result of inheritance or modification of references. Updates may also be distributed via internal distribution from within the website building system, external electronic distribution from outside the website building system via web services, email, FTP, P2P, etc., or external physical distribution such as media distribution.
[0087] It will also be appreciated that typical updates to the WCA will come from WCA developers, and also modifications from WCA users, such as site designer 62. These modifications may be interchangeable, since (for example) the site designer 62 may create a modified version of an existing WCA, and then the site designer 62 may themselves customize the WCA for each instance on their site. When this happens, the site designer 62 can become a developer of the WCA, since they have a modified version of the original WCA that they can publish for users.
[0088] This customization can be done through methods predefined by the WCA vendor (such as custom-built panels), by using pre-packaged APIs directly or through auto-generated panels, by adding or removing some of the elements, by modifying any of the elements through the normal editor menus and panels, and by writing code that interfaces with the WCA as a whole and utilizes its APIs. Another customization might involve writing code that interfaces with the WCA's elements to add functionality, adding more functionality than was originally intended. For example, a button used as the WCA's "play video" button could be modified by the site designer 62 adding code that counts clicks on the button and updates an incremental counter. Customization can also be applied to other elements of the WCA, such as back-end elements or the WCA's configuration and settings panel itself. These forms of customization are described in more detail below.
[0089] It is also understood that the techniques described below are not only applicable to changes that break code. There may also be other types of changes that may "break" or affect the functionality of the WCA. For example, a WBS may support components that update each other without code, such that a change in a value displayed by component A (for example) is reflected in some way in component B (for example) that displays the sum of the values displayed in component A, and such a link may be a feature of a WBS without code. If either of the components (A or B) is removed or replaced with a different component or component type, the link may be broken.
[0090] Such a breakdown could be due to a site designer 62 breaking something in the WCA during their site creation, or due to an update from the original developer of the WCA that does not match the changes made by the site designer 62. For example, a site designer 62 using WCA X creates a connection between components A and B (in WCA X) that did not exist before. Later, B is removed from WCA X, which is only an issue for the site designer 62 who created the A-B link, not for other site designers 62 using the same WCA. Such a break in code or connections / links may be complete or partial.
[0091] Thus, with respect to a WCA functioning as a travel widget as described herein, a change or event that breaks a code connection or an update to a sub-element of the map WCA may not affect the ability of the WCA to ghost some of the lost functionality of the modified or updated sub-element, masquerade some of the lost functionality of the modified or updated sub-element, or update predefined installation policies for changes, as described in more detail below. It will be appreciated that the connections between sub-elements of a WCA may be direct or message-based, as well as code-based.
[0092] Applicant further realized that this functionality can improve the functionality of the embedding website and the computer running the website itself by "fixing" the breaks, i.e., compensating for the fixes after allowing the WCA to retain full functionality. If a "broken" widget does not function properly, the website that runs it will also not function properly and may crash. Furthermore, the ability to embed WCAs into WBS websites (which are based on a complex set of inherited elements, such as layout, content, code, etc.) improves system storage usage (because the WCA's definition is included by reference instead of duplicated) and performance (because the WCA can be loaded only when needed, and parts of it are only loaded on the server). The ability to resolve breaks and conflicts, along with site-specific modifications and customizations, greatly facilitates the use of such inherited / by-reference WCAs.
[0093] Reference is now made to Figure 3, which illustrates a system 200 for processing website building system (WBS) configurable applications in a website building system according to one embodiment of the present invention. System 200 may include elements of system 100 (as well as any sub-elements) as described in U.S. Patent No. 10,073,923, in conjunction with a WCA module 300. System 200 may enable the creation and integration of WCAs into the website building system, as well as the operation of WCAs as described in more detail below.
[0094] As will be understood herein, system 200 refers to applications created by designers using a website building system and accessed by end users as websites, although system 200 may apply to other categories of online applications accessed using specific client software. Such client software may run standalone or may be activated from a browser (e.g., Adobe Flash plug-in). End users may access these websites using client software on ordinary personal computers, smartphones, tablet computers, and other desktop, mobile, and wearable devices. Alternatively, system 200 may apply to systems for generating mobile applications, native applications, or other application types, as described in U.S. Patent No. 9,996,566, entitled “Visual Design System for Generating a Visual Data Structure Associated with a Semantic Composition Based on a Hierarchy of Components,” issued June 12, 2018, assigned to the common assignee of the present invention, and incorporated herein by reference.
[0095] It will be understood that all elements of the system 200 are generally capable of processing objects or components of a website building system.
[0096] The WCA module 300 can directly interface with multiple parts of the website building system 5 as well as with various types of users. Reference is now made to Figure 4, which illustrates elements of the WCA module 300. The WCA module 300 can include a WCA manager 310, a WCA app store manager 315, a WCA site viewer 320, a WCA repository 325, a WCA deployment / usage environment (insight editor) 330, a WCA SGS (Site Generation System) interface 340, a WCA CMS coordinator 350, a WCA building environment (app builder) 360 and a WCA handler 370. The WCA app builder 360 can further include a customization panel creator 361, a dialog editor 362 and a WCA analyzer 363.
[0097] The WCA Manager 310 may integrate with the WBS Site Manager 10 to provide management services for WCA (at the WBS Vendor 61, Site Designer 62 and WCA Developer 64 levels). The WCA App Store Manager 315 may integrate with the Object Marketplace 15 to offer WCAs for sale and provide the ability to purchase offered WCAs. The WCA Site Viewer 320 may integrate with the WBS RT Server 20 to deploy and run applications including WCAs for end users (site visitors / viewers 63) using sites that embed WCAs. The Insight Editor 330 may integrate with the regular WBS Editor 30 for specific editing capabilities related to WCAs for WCA users (site owners / designers 62) who embed WCAs in their sites, and the WCA SGS Interface 340 may interface with the Site Creation System 40 for the creation of sites including WCAs. The WCA CMS Coordinator 350 may interface with the WBS CMS 50 to provide access to the necessary repositories. The App Builder 360 may be used by a WCA developer 64 to build and edit a WCA, and the WCA Handler 370 may adjust the functionality of elements within the WCA module 300 accordingly.
[0098] The system 200 may store the WCA definition in a particular WCA repository 325, or may store it elsewhere, such as in the WBS CMS 50, using it in pages or applications that contain references to it. Such a central storage may simplify further updates and version control of the WCA. The WCA CMS coordinator 350 may also analyze such references and bring up the relevant WCA copy from a local application copy, a higher-level repository, or any other storage. The system 200 may store the WCA definition (including all of its elements) in the WBS component repository 516 and the actual WCA instance in the WBS site repository 509 (as discussed in U.S. Pat. No. 10,073,923). Alternatively, the system 200 may store it in the WCA repository 325.
[0099] It is understood that all elements of the WCA can have a front end, a back end, and additional sub-elements, as described in more detail below. Additionally, the portions of the WBS that handle some or all of the sub-elements may be implemented as a website building system application (which may itself include the WCA) that sits on top of the website building system, or portions may be implemented as extensions or applications that run on the website building system.
[0100] As mentioned above, relevant user categories may include WCA users (site designers) 62, end users (site visitors / viewers) 63, and WCA developers 64 (part of the website building system vendor staff or external developers).
[0101] It is understood that there may be some overlap between user segments and that users in one segment may function as users in another segment (under the same or different sets of user IDs or entitlements). For example, a WCA developer 64 may develop a website using his or her own WCA. The website building system may allow an end user / viewer 63 to make some edits to the site he or she is visiting and, in some cases, may also use or modify the WCA instance within the site.
[0102] It is also understood that the site designer 62 may be the site owner or a separate user who has been given editing permissions on the site by the site owner, such as the site owner (who does not own the site) or an employee of an external design agency. WCAs can be created by WCA developers 64, who can be members of the WBS vendor staff 61 or third-party providers of WCAs. The system 200 can also support the creation of WCAs by the designer community and a marketplace for such WCAs, as well as the creation of WCAs based on existing WCAs (described in more detail below). Also, reference to the term "user" can refer to someone in the above-mentioned categories who is processing a WCA.
[0103] As described above with reference to Figures 2A and 2B, a WCA is a set of elements packaged together, including components of a website building system, related code, and additional elements. It is understood that the included components may be inseparable, such as container components, and that the components may include third-party applications (both front-end and back-end). A WCA may also include additional (lower-level) WCAs, as well as regular components and containers.
[0104] WCAs can also be categorized and understood in a variety of different ways, such as the size or scope of the elements / sub-elements provided. It is understood that WCAs can range in their object size (or scope) from a single component WCA (e.g., a button or image field) to a WCA that includes multiple interactive websites.
[0105] For example, a single WCA offering may contain multiple related sub-WCAs of various sizes, either using the WCA and some of its elements individually or through an offering that contains multiple WCAs (such as a primary WCA and a number of add-on related WCAs). These concepts are discussed in more detail below.
[0106] WCAs may also be categorized by their sub-elements, which may include front-end, back-end, and associated code. They may also be categorized by their level of abstraction, i.e., how detailed the WCA definition is on a continuum between pure templates / structures (specifying minimal characteristics and lacking actual content) and actual elements (such as ready-to-run verticals), as described in more detail below.
[0107] As mentioned above, WCAs may come in various sizes, such as a set of components forming a layout proposal, as described in U.S. Patent No. 9,747,258, entitled "System and Method for the Creation and Use of Visual-Diverse High-Quality Dynamic Layouts," issued on August 29, 2017, which is assigned to the common assignee of the present invention and incorporated herein by reference, and as a set of components forming a new composite component (such as predefined smart composites, as described in U.S. Patent No. 2018 / 0032626, entitled "System and Method for Implementing Containers which Extract and Apply Semantic Page Knowledge," issued on February 1, 2018, which is incorporated herein by reference), as a single component, etc., possibly with some customization added. WCAs may also be page sections, typically horizontal edge-to-edge page strips (also known as coast-to-coast sections), pages (such as product gallery pages, checkout pages, thank you pages, etc.), page sets / site sections, websites (or templates thereof), and vertical applications. A vertical application is a dedicated website adapted to a specific industry (such as e-commerce, hospitality, restaurants, or law firms) that may include additional subsystems (such as ordering, shipping, or reservations). A vertical application thus serves as a platform that may be used as is or customized. A WCA may also be a set of multiple collaborating (or otherwise interacting) websites or vertical applications (such as a multi-module ERP system). Thus, the size of a WCA can range from a single component or widget to a complete vertical application (such as a car sales platform) or set of applications.
[0108] It is understood that system 200 may have multiple architectures for WCAs of different scopes. For example, system 200 may implement a simple version of WCA (known as a "shared part") that includes only a single component or a simple arrangement of components. This may allow for a simpler arrangement of storage for the WCA and its application in a containing application.
[0109] The WCA may also include dashboard-based elements. The dashboard is a part of the website building system GUI (different from the site GUI) that is accessible by the site owner but not by the site viewer / end user 63. The system 200 may allow the site owner to specify access to certain areas or elements of the dashboard for certain additional users who log into the website building system (e.g., by adding a site operator role that is different from the site owner).
[0110] Some dashboard GUIs are generic, while others are site-specific: such dashboards may include, for example, specific GUIs for viewing order queues (for a restaurant site) or product stock levels (for an e-commerce or logistics site), or for uploading new content (e.g., new products) to the site.
[0111] The WCA may provide a dashboard page or pages or portions thereof (e.g., widgets, components, or page sections). Such a customized GUI may include, for example, a particular dashboard page section that displays a restaurant's pending orders using a customized format.
[0112] The WCA may also include website building system User Interface (UI) support panels (also called "dialog boxes") or panel sections. A website building system GUI typically includes higher level panels (such as "My Sites" or "Media Manager" panels) as well as lower level panels (such as panels that appear while editing a particular page or a particular component). The WCA may provide additional or alternative panels, panel sections (such as the menu sections described in U.S. Pat. No. 10,459,699, entitled "System and Method for the Generation of an Adaptive User Interface in a Website Building System," issued Oct. 29, 2019, which is assigned to the common assignee of the present invention and incorporated herein by reference), or panel behaviors (e.g., modifications to system panel behaviors that do not necessarily have a visual representation in the actual panel).
[0113] As an example, a WCA developer 64 can create a "Recipe Book" WCA. The WCA can include a sub-element called "Single Recipe Summary" that displays a single recipe summary during site browsing. After installing this WCA via the WCA App Store Manager 315 (e.g., from an app store in the website building system 5), the site owner can select (during site editing) which recipes the widget displays via the WCA Site Viewer 320 during site browsing on a particular page. The recipes can be stored in a database associated with the installed WCA instance.
[0114] So, for the above example, the Recipe Book WCA, when used in the WBS Editor 30 (e.g., as part of a website building system configuration dialog / menu), may provide an option called "Select Recipe" that allows recipe selection from the WCA's recipe repository (325 / CMS 50). These added options and panels may behave as if they were part of the normal website building system page / component editing GUI, or may extend the behavior or interface of the GUI. This is known as a website building system panel WCA.
[0115] It is understood that this new panel (as defined by WCA) may contain procedural elements (accessible to repository 325 / CMS 50) and be packaged as part of WCA. Such a panel (and its associated elements) may be specific to WCA or may be shared across multiple WCA types (e.g., the widget "Next Recipe Suggestion" may reuse the same generic "Select Recipe" panel).
[0116] It is understood that WCAs (of all sizes) can include any combination of the sub-elements described above. These elements can appear in all types of WCAs, including regular WCAs (serving sites or site elements), dashboard WCAs, and website building system panel WCAs.
[0117] The WCA itself can also specify which of its sub-elements are encapsulated within the WCA (and therefore not accessible or visible to users of the WCA), which sub-elements are accessible to users of the WCA, and which sub-elements can actually be modified by users of the WCA at the instance level. These concepts are explained in more detail below.
[0118] Reference is now made to FIG. 5, which illustrates how the sub-elements of the WCA 400 can be divided into four main categories: front-end elements 410 , back-end elements 420 , support elements 430 , and data content elements 440 .
[0119] The front-end element 410 can be a (usually hierarchical) set of contained components, such as atomic components, container components, third party applications (TPAs), and possibly other WCAs and related code, all related to the main activity of the application. For example, a "city visit" WCA can contain a local weather WCA, a "things to do" WCA, and a browsable maps WCA, with appropriate links between all three sub-WCAs.
[0120] The back-end element 420 can include one or more components that run in the back-end, such as atomic components, container components, third party applications, and possibly other WCAs, all related to the back-end activities of an application.
[0121] The support elements 430 may require interaction with other elements of the website building system 5. Dashboard components 432, such as atomic components, container components, third party applications, and possibly other WCAs, are integrated into the dashboard of the website building system (as described above). The API definition 431 may be a particular API defined for the WCA by a WCA developer. This may specify a local API, a remote API (such as a web service), or both.
[0122] Content elements may contain links or other references to additional WCA-level component and attribute / property databases (e.g. Repository 325 / CMS50) such as city name for a weather widget or similar / share counts for a social media widget, along with the content's underlying database, including any combination of schema, data storage, database level code (e.g. data event hooks and triggers) and data relationships. This may also include underlying database data bundled with WCA.
[0123] The associated code 415 may include code that executes on the front end, the back end, or both (as described in U.S. Pat. Nos. 10,209,966, granted Feb. 19, 2019; 10,326,821, granted Jun. 18, 2019; and 10,397,305, granted Aug. 27, 2019, entitled "Custom Back-End Functionality in an Online Website Building Environment," all of which are assigned to the common assignee of the present invention and are incorporated herein by reference). Such code may be visible to the user or encapsulated within the WCA.
[0124] Other sub-elements (not shown) may include data bindings (such as associations between the WCA and the database 325 / CMS 50) so that the WCA is used in dynamic pages (as described in U.S. Patent Application Publication No. 2019 / 0026082, entitled "Dynamic Preview of Database-Populated Web Pages," published Jan. 24, 2019, which is assigned to the common assignee of the present invention and incorporated herein by reference), as well as regular pages that provide the ability to edit data access and support panels 433, panel sections, and other elements. These may include configuration panels / dialogs that may provide special configuration setting dialogs for the WCA. Such dialogs may be automatically generated or custom coded to reflect defined properties (as described in U.S. Patent Application Publication No. 9,753,911, entitled "System and Method for Dialog Customization," issued Sep. 5, 2017, which is assigned to the common assignee of the present invention and incorporated herein by reference) or otherwise marked properties.
[0125] Subelements may also include edit action plugins (such as those described in U.S. Publication Nos. 2018 / 0032626 and 2018 / 0293323) that can define alternative edit actions for that element (e.g., one that is only allowed to be resized between a few predefined sizes) and specific manipulation handles (as described in U.S. Patent No. 10,169,307, entitled “Method and System for the Use of Adjustment Handles to Facilitate Dynamic Layout Editing,” granted Jan. 1, 2019, and U.S. Publication No. 2018 / 0032626, both of which are assigned to the common assignee of the present invention and incorporated herein by reference). These may be specialized handles that control the geometric properties of the WCA (such as resizing or rotating). They may also be handles that provide specialized control functions that affect the properties of some parts of the WCA but not others.
[0126] Another type of sub-element may be a frame element, which may be a specific manipulation UI element attached to the frame of the WCA (in addition to geometric manipulation handles), as described in US Patent Application Publication No. 20180032626. Reference is now made to Figure 6, which shows how the above-mentioned recipe widget (400) has a set of special frame elements (for use when editing) with functions such as "next recipe" (a), "previous recipe" (b) and "random recipe" (c).
[0127] It is understood that editing the viewing support code in an editing environment can provide improved viewing for the WCA during editing. For example, the video player WCA can provide a limited frame rate or reduced quality video preview that can be performed during editing without burdening the editing platform.
[0128] Further subelements include rendering support code 434 that affects the rendering of the components at runtime. Rendering support code 434 can include specific server-side pre-rendering behavior and SEO support code 435 that affects SEO and indexing support, allowing specialized handling of the components during (spider) indexing and searching (as described in U.S. Patent No. 9,436,765, “System And Method For Deep Linking and Search Engine Support For Web Sites Integrating Third Party Application and Components,” dated September 6, 2016, and U.S. Publication No. 2019 / 0026280, “Website Builder With Integrated Search Engine Optimization Support,” dated January 24, 2019). App store support 436 can provide app store related information such as name, description, commercial information, and version information.
[0129] Variations of a WCA may provide alternatives for some elements of the WCA, while some of the elements remain constant. For example, a single WCA may provide multiple variations of its design (e.g., left justified and right justified) while using the same code for those multiple designs. Or a single design may have multiple variants with different versions of the code attached to the elements of the WCA. The different variants may also each have some different design elements and some different code elements.
[0130] Such functionality may allow (for example) a designer 62 to create different look and feels without involving a code writer. This functionality differs from using skins because the layouts may be radically different, have different UI and customizations, and possibly different functionality.
[0131] The WCA handler 370 may select which variant to use based on available information, such as website elements of the site that contains the WCA, system configuration (e.g., what third-party applications and verticals have been purchased), and user-collected information, such as geographic location, language, editing history, collected business intelligence (BI), etc. The WCA handler 370 may provide the user with multiple variants (possibly filtering them according to the available information described above) and allow the user to select which one to use, as described in more detail below.
[0132] In addition to variants, the WCA may include optional parts (hidden from the display in some WCA configurations) that are activated (automatically) based on available information or based on user selection as described above.
[0133] It is understood that system 200 may maintain a dual outlook on the WCA, both as a single packaged entity and as a set of customizable elements (which may be visible and / or editable by a user for a site that uses the WCA). Different WCAs may allow different levels of access to their "inside," as discussed in more detail below. Related website building systems may interact with and treat the WCA as a single element and as a component, as represented by dashed line 500 in FIG. 5, to which reference is made back.
[0134] As described above, WCAs can be constructed with different levels of abstraction. On the one hand, a WCA can be abstract, providing only a set of abstract components (also called layouts) that can be used to format a page (for example). A user (e.g., site designer 62) must populate the user with content, edit the user's attributes, and possibly change the user's type (e.g., changing one gallery type to another). At the other end of the continuum, a WCA can be a fully functional site, site section, or vertical application. Such a WCA includes all the necessary front-end and back-end elements, underlying code, associated initial content, etc., as described herein above.
[0135] It is understood that a WCA may be created at any level of abstraction on the continuum between these two examples (e.g., specifying some of the components' elements and attributes while leaving other elements and attributes unspecified or as defaults).
[0136] It will be appreciated that a WCA may be built inside a given site (for use at a particular site) or may be packaged for use at multiple sites. It may be used for different sites of the same user or owner, or for use at other sites. In the latter case, the WCA may be provided via an application store (run by the website building system vendor 61 or a third party). Such packaged WCAs are often referred to as plug-in WCAs.
[0137] It is understood that once a WCA or plug-in WCA is made available to the website building system's tool palette UI (as described in U.S. Patent No. 10,459,699), the WCA's insight editor 330 can be used by a user to edit all elements of the WCA, including in particular its components, layout and front-end / back-end code, as permitted by the WCA provider (this may lock parts or elements of the WCA against some or all types of editing, as discussed further below).
[0138] It is understood that system 200 may treat a packaged WCA (or a plug-in WCA) as essentially a high-level component (or other website building system element) that still consists of sub-elements, and possibly additional elements, each of which may retain full editing capabilities and retain full functionality both as an atomic level element and within the WCA and its semantic role within the WCA.
[0139] Reference is now made to Figure 7A, which illustrates the elements of a WCA Handler 370. The WCA Handler 370 may further comprise a warning provider 372, a WCA correction handler 373, a feedback provider 374, a ghost module 375, a masquerader 376, a database (DB) connector 377, an API handler 378 and a machine learning (ML) / artificial intelligence (AI) module 379. The functionality of these elements is described in more detail below.
[0140] 7B, which illustrates elements of the ML / AI module 379. The ML / AI module 379 may further comprise a decision engine 3791, a CMS extractor / trainer 3792, an element behavior tracker / trainer 3793, an element behavior ML / AI module 3794, and a merge ML / AI module 3795.
[0141] The ML / AI module 379 can provide decisions for the ghost module 375, the masquerader 376, and the merge function of the WCA modification handler 373, as described in more detail below. The ML / AI module 379 can train machine learning models implemented by the element behavior ML / AI module 3794 and the merge ML / AI module 3795. The ML / AI module 379 can train both modules (3794, 3795) based on data extracted from the CMS 50 and the WCA repository 325 by the CMS extractor / trainer 3792 (including site and user parameters, as well as user collected information such as edit history and business intelligence information). The ML / AI module 379 can further train both modules (3794, 3795) based on tracking the behavior of WCAs and their elements (including code execution paths, user interactions, inputs / outputs, data exchanged, API calls, internal services called, etc.). The decision engine 3791 can make decisions based on the element behavior ML / AI module 3794 to support the ghost module 375 and the masquerader 376 in performing their functions. The decision engine 3791 can also make decisions based on the merge ML / AI module 3795 to support the WCA remediation handler 373 (and in particular its merge function) in performing their functions.
[0142] The ML / AI module 379 can implement any machine learning / artificial intelligence algorithm, including, in particular, Long Short Term Memory (LSTM) neural networks (for processing sequences such as edit history and BI data) and Convolutional Neural Networks (for processing geometrically defined data such as component layouts).
[0143] See Figure 8 which illustrates the elements of the WCA modification handler 373. The WCA modification handler 373 can handle modifications to the WCA, such as creating and customizing variants. The WCA modification handler 373 can further comprise a variant creator 3731, an API analyzer 3732, a permission determiner 3734, a change resolver 3735, a WCA merger 3736, an update receiver 3737, and a change applicator 3738. The functionality of these elements is described in more detail below.
[0144] It will be appreciated that WCAs may be created using the WCA app builder 360 and further edited using the customization panel creator 361 and the dialog editor 362. The dialog editor 362 may typically focus on editing the WCA definition itself, while the customization panel creator 361 is typically focused on editing various WCA-specific customization panels associated with the WCA and may be displayed during editing (or at run-time if some editing functionality is available at run-time) to help configure a particular WCA instance. Such customization panels may be displayed with the WCA (e.g., on its border) or embedded in the WBS main editing UI. In other embodiments, they may be edited using the WCA insight editor 330 and the regular WBS editor 30, which may be extended with additional functionality to support WCA editing.
[0145] The WCA Insight Editor 330 and WCA App Builder 360 may function separately or be integrated together, and each may consist of a single integrated editor or multiple visual editors (e.g., one for each included component, a properties panel and frame element / handle / edit action add-ons, etc.).
[0146] It is understood that such creation and editing may be performed by the original WCA developer 64. The WCA developer 64 may further specify whether the WCA can be edited by site designers 62 that use the WCA (i.e., at the instance level), and if so, which sub-elements of the WCA are visible and which can be edited.
[0147] System 200 may also enable some level of end user / viewer 63 editing capabilities, such as allowing end users to edit component-based blog posts posted to the blog system (including having multiple end user levels as far as editing is concerned). In this scenario, a WCA developer 64 (who developed the blog WCA used in this exemplary blog system) may also specify which areas and elements are editable by end users / viewers 63, and how they are editable. System 200 may enable such specification to be made by the WCA developer 64, or by a site designer 62 who designed the site used by end users / viewers 63, subject to user change acceptance rules described in more detail below.
[0148] Thus, the WCA developer 64 may decide, for example, that WCA components may be edited but not deleted and new ones may be inserted. The user may also decide that WCA code is not visible and cannot be edited by the designer 62 using WCA. Such decisions may also apply to additional elements of WCA, such as its customization / settings panels.
[0149] System 200 may provide different levels of granularity for such configuration (i.e., what is visible and what can be edited), including different sized WCAs as discussed above. At the simplest level, system 200 may specify that WCA developers 64 cannot edit the WCA (i.e., the WCA is locked in a "factory setting"). In other embodiments, WCA developers 64 may specify highly detailed rules (similar to User Change Acceptance (UCA) rules, described below) regarding which components and attributes can be edited and how. Such rules may specify editing restrictions such as subcomponent positioning change limits, attribute change limits (e.g., what fonts can be selected), whether insertions / deletions are allowed, etc. As previously mentioned, system 200 may enable WCA developers 64 / designers 62 to delegate some or all of these capabilities to WCA users, who can specify such rules (if available) that apply to end-user edits. It will be appreciated that limiting the scope of edits for a given WCA can make merging edits from multiple sources much easier (as described in more detail below).
[0150] The update receiver 3737 can receive updates from users at all levels and coordinate with other elements of the WCA modification handler 373 accordingly.
[0151] The permission determiner 3734 may prevent updates and modifications (or parts thereof) from occurring at all. It is understood that the permission determiner 3734 may thus prevent future WCA failures, as well as any incompatibilities in design and the like. An exemplary embodiment may initially put the WCA into a "locked mode." In this locked mode, the permission determiner 3734 may process the user's permissions during editing, lock the position and size of the WCA's sub-elements, and prevent the user from deleting any sub-elements. The user may, however, change the style, font, content (for example) of the various sub-elements. In this way, updates may be easier to integrate (as described in more detail below).
[0152] In such an embodiment, the user may specify that the WCA should be unlocked and that the WCA may be left unchanged or only partially modified (to allow for code updates that do not affect the layout of the WCA). Warning provider 372 may warn the user before such an unlocking occurs.
[0153] It is further understood that there are multiple types of customization available for a WCA. At one level, a WCA may be modified by editing its elements (by creating a variant WCA). At a different level, a WCA instance may be modified "in place" (i.e., within the page / site in which it resides) without creating a replacement WCA. Such instance customization may also take into account (and integrate) other elements within the WCA's environment, such as the page / site that contains it. Customization may vary from instance to instance and may be dynamic in nature (e.g., changing as the site is used or otherwise based on external inputs and triggers). The WCA modification handler 373 can handle both automatic and manual customization.
[0154] A WCA instance can be customized, for example, using any of the following methods, or a combination of them: It can be customized using pre-packaged APIs that come with WCA. This may be done, for example, through user-written code via the WCA Insight Editor 330. The pre-packaged APIs may be similar to those provided by typical components in website building systems (as described in U.S. Patents 10,209,966, 10,326,821, and 10,397,305). For example, the code "$w('#VisitCityWCA').city='London'" can be edited to change the city name.
[0155] The variant creator 3731 may allow the edited WCA to be saved and used as a WCA variant in its own right (also known as a "fork"). The system 200 may restrict the ability of the edited WCA to be further redistributed, e.g., uploaded to an application store for further use. Referring now to Figure 9, Figure 9 shows the WCA of Figure 5 (here 400B) with the back-end related code 415 removed and new code 416 added.
[0156] Alternatively, the variant creator 3731 may enable such redistribution, e.g., WCA developer A creates a WCA X and publishes it as a plugin, WCA developer B creates a modified version of the plugin X* and republishes it, and WCA developer C uses X* on his site and possibly further modifies it to X**. Distribution may be via an application store (via the WCA app store manager 315), and the system 200 may implement a revenue sharing model between the original WCA developer (A above) and the modified version redistributors (B above).
[0157] It is understood that the above configuration (variation creation) in which a WCA is created based on another WCA may be considered as an arrangement of inheritance. The system 200 can also support multiple inheritance, i.e., creating a WCA that combines elements from multiple WCAs.
[0158] A WCA instance can be customized using UI panels that are automatically generated from WCA's pre-packaged APIs. In this scenario, the API analyzer 3732 can analyze WCA's pre-packaged APIs to detect the API's properties and interfaces and generate matching configuration panels. The API analyzer 3732 can also populate the configuration panels with default values based on properties in WCA's APIs.
[0159] Thus, for the above example API, the API analyzer 3732 may generate a settings panel that allows the user to enter a city value for "VisitCityWCA." It will be appreciated that this method may be more useful with static attributes, since dynamic attributes (which change at WCA runtime) may typically require the use of an API to dynamically specify their value.
[0160] The WCA analyzer 363 can recognize repeating or hierarchical elements in the WCA structure and thus generate lists and nested elements in the generated customization panel. Such analysis can also generate source code elements (such as setters and getters) for use when including the WCA in a larger application. These may be used by the WBS editor 30 when creating code in the included application. It is understood that the WBS editor 30 may generate templates for the required code. If a WCA is used, the WCA analyzer 363 can also generate template code for the code editor to aid in processing the WCA's API.
[0161] Customization can also be performed using methods predefined by the WCA developer 64, such as custom-built panels. Customization can also be performed manually by the user via the WCA insight editor 330 or WBS editor 30, by adding or removing WCA subcomponents, modifying WCA subcomponents through normal editor menus and panels, and writing code that interfaces with the WCA subcomponents, i.e., code added as a layer above the WCA subcomponents. It should be clarified that these WCA subcomponents may typically be normal WBS components (which already have existing default customization menus and panels). For example, a video player WCA may use a button as a "play video" button, but customization of the WCA instance may add code that clicks on that button (or a WCA event in general) to execute additional code, such as code to increment a counter on the page (such as a video view counter). Such customization is available even when the WCA's internal code is hidden (encapsulated) as described above. In these scenarios, the WCA modification handler 373 can receive these edits and implement them accordingly.
[0162] The WCA analyzer 363 can also perform static source analysis on the WCA. Such analysis can be used by the customized panel creator 361 to generate customized panels (similar to the panel generation based on API analysis described above). Such analysis can also be used to determine the permissions required for the WCA to run and to request the WCA user to confirm the grant of the required permissions for use by the permission determiner 3734.
[0163] Thus, as described above, the customization panel creator 361 can automatically create a customization panel that includes relevant elements for WCA customization, including WCA-specific properties that may not be present in any of the components that make up WCA (as described in U.S. Patent No. 9,753,911).
[0164] As described above, the customization panel creator 361 and dialog editor 362 can further provide an editing environment for the operational UI (e.g., buttons, toolbars and menus) of the website building system used with WCA. The WCA site viewer 320 may support WCA display at run time.
[0165] It should be noted that such UI editing may be at another level than the creation of a customization panel for the WCA. The normal customization panel may be used by users who only want to customize the WCA (i.e., change pre-specified attributes of the WCA). The customization panel creator 361 and dialog editor 362 may allow the UI of the WBS editor 30 to be modified for users who actually want to edit the WCA (e.g., add / remove / modify components of the WCA), including those who create derived (inherited) WCA variants. An example UI is described below.
[0166] In particular, system 200 may provide a building environment that allows WCA developers 64 to edit the UI and any interactions at the WCA level and at the sub-element level. Thus (for example), WCA developers 64 can create a video player WCA that uses a plain button as a play button. WCA developers 64 can create new editing experiences for WCA users at both the video player level and the play button level (hence becoming a slightly different entity than the play button).
[0167] It is understood that such multiple changes to the editing environment (e.g., resulting from the use of multiple WCAs, each with its own set of editor UI changes) may conflict with each other. The change resolver 3735 can resolve such conflicting changes as the changes are introduced in real time or during editing. The change resolver 3735 can take into account the user's profile, editing history, user editing behavior, current editing focus, site / page / WCA related parameters, collected site BI, etc. to resolve the conflict. Such resolution may be fully automatic, semi-automatic or manual (including the WCA developer 64).
[0168] A WCA developer 64 can update the original WCA and distribute the modified version, even if a site designer 62 using the WCA has made instance-level changes to the WCA. Such updates may be done by merging the two sets of changes (the WCA developer's 64 changes and the site designer's 62 changes) as described further below (for each instance of the WCA in use).
[0169] It will be appreciated that the system 200 may implement a physical update distribution architecture in which modified versions of the WCA are actually delivered to WCA client site instances. Such distributed updates may include a completely modified WCA or may be differential in nature.
[0170] System 200 may also implement a reference / inheritance-based architecture, in which sites that use only a given WCA include a reference to a centrally stored version of the WCA. System 200 may still store multiple copies of a master version in some cases, e.g., to support localized caching. All of the techniques and features described below are applicable to embodiments that use physical (full or partial) update distribution, as well as embodiments that use a reference / inheritance-based method of updating WCAs. In the latter case, the various system elements under discussion may operate at any phase of system 200 functionality, including page creation, saving, publishing, or run-time (e.g., when pages are dynamically constructed for rendering and WCA updates from multiple sources are processed and merged in real time).
[0171] The WCA CMS coordinator 350 can store in the database 325 (or CMS 50) local changes made by the site designer 62 for a particular WCA instance in a particular site. These local changes may also include other parameters and settings, such as the selection of the WCA variant to use, or the specification of basic parameters such as the city selection for a "local news" WCA.
[0172] It is understood that the WCA SGS interface 340 can dynamically integrate the WCA into a page each time the page is loaded, e.g., when the page is edited or displayed (including the modified master version and any local changes and parameters). Thus, the page always reflects the latest updates to the "master version" of the referenced WCA. This dynamic integration may apply any of the rules or policies described below to this dynamic integration process (e.g., "limit updates from master copy to code changes, not just layout").
[0173] The WCA Handler 370 may also implement silent updates that the WCA Handler 370 may distribute to client sites (that use WCA) without notification. Alternatively, the WCA Handler 370 may distribute updates with additional information that is presented to the user upon receiving the update. Such additional information may include interactive elements (displayed before, during, or after installation) such as user confirmation forms, feedback requests, training, and documentation for the proposed update. The additional information may also include defining codes or conditions for installing the update. This also applies to by-reference architectures (where there is no explicit update distribution operation) since the page integration process may detect that the master copy of the WCA has been modified during editing and present the above additional information to the site designer. The same process may also be used on a live site (i.e., at run time) to present the modified version to the end user, possibly including additional information (e.g., a "Press here to learn about the new "City Tour" view" button).
[0174] The WCA handler 370 can support update installation at run time for some or all updates of the WCA. In such a scenario, the update may be applied to the currently running instance on the server or to the client side of the website that contains the WCA. It is understood that a client side installation requires an update of the end user accessing the website. In many cases, the running code cannot be "switched on the fly" and such run time updates are not always possible, although the system 200 can determine whether this is possible based on the current running state of the WBS.
[0175] The WCA modification handler 373 may also allow a WCA user (such as a site designer) to specify an update installation policy for a given WCA instance within a site that the user is creating or editing. For example, the update receiver 3737 may allow a WCA user to specify whether updates are automatically installed (also known as a "formal layout" or "classical layout") or not (also known as a "customized layout"), in which case the user is notified that they are "disconnected" from the update stream.
[0176] The permission determiner 3734 may implement a policy where some elements of the WCA are changed and some are not. For example, the WCA modification handler 373 may choose to always update WCA code elements but not WCA layouts (component selection, placement, size) unless explicitly approved. Updates may be conditional on whether elements have been modified by a WCA user, such as "only modify the layout if the user has not previously (before looking at the entire WCA layout or subelements of the layout at a given granularity)". Under such a policy, the two parts may at some point get out of sync, as the code may break if the layout is modified too much. It is understood that such a merge may work even when a site designer modifies the WCA to create a local variant, or when such a variant is published and used by additional parties.
[0177] The modification applicator 3738 may apply any modifications according to the output of the other sub-elements of the WCA modification handler 373 .
[0178] It will be understood that the following description of the WCA merger 3736 and its elements below is also applicable to the inheritance mode in which changes are merged online. Thus, the WCA modification handler 373 can process an initial version of a WCA (W1), a follow-up version of a WCA (W2), and a modified version of W1 customized by a site designer (W1a), as shown in the currently referenced Figure 10.
[0179] The WCA merger 3736 may implement such merging by treating changes made to the WCA as attribute overrides / modifiers (which modify existing attribute values). Reference is now made to Figure 11, which illustrates the elements of the WCA merger 3736. The WCA merger 3736 may further comprise a difference analyzer 37361 and a conflict resolver 37362. The functionality of these elements is described in more detail below.
[0180] The difference analyzer 37261 can arrange the attributes of each object in the WCA as an attribute tree. Now, referring to FIG. 12, a geometric attribute node (a) is shown. Subnodes (b) in the geometric attribute node (a) are "position" and "size", and subsubnodes (b) are x, y, height (H) and width (W) (the position attribute could be the position of the component relative to its container). The attribute tree has a "code attributes" node, with subnodes "backend (BE) code" and "frontend (FE) code", and subsubnodes are code snippets related to a particular trigger. Additionally, another node could be a "matrix gallery settings" node with subnodes for the number of rows and columns, the particular margins used, etc.
[0181] Different implementations or embodiments may have different levels of granularity for their attribute trees: for example, for a color attribute, one implementation may have separate attribute nodes for each of the R, G, and B color components, while another embodiment may use a single "color value" attribute node (that combines the R, G, and B elements).
[0182] Thus, any changes made to W1 (e.g., such as when creating W1a, referring back to FIG. 10) may be stored as a set of modifiers for the attributes (e.g., setting the color attribute to red). The WCA insight editor 330, dialog editor 362 and customization panel creator 361 may also provide "reset to inherited value" (re-inherit) editing options for particular attributes (at various node levels) to restore the particular attribute node to inherit its original value (i.e., by canceling the attribute node modifier).
[0183] It will be appreciated that a WCA developer 64 can edit a WCA component using the WBS editor 30 as a modification of a normal website building system component (i.e., editing W1 to W2 in FIG. 10 ), and some or all of the changes made by the WCA developer 64 can likewise be stored in the CMS 50 as a set of attribute modifiers.
[0184] Thus, the WCA merger 3736 can reapply or merge the modifications of W1a (originally made to W1) into W2 to create a merged version, W2a, as described in more detail below. The process can continue with further versions; for example, a user can modify W2a to create W2b, and the WCA merger 3736 can apply such changes to W3 to create W3b.
[0185] It is understood that when creating a merged changed version (e.g., W2a in the above example), the difference analyzer 37361 can analyze and collect change set #1 (changes from W1 to W2: WCA developer 64 changes), analyze and collect change set #2 (changes from W1 to W1a: WCA user changes), and then merge the changes (vendor and user) of the two sets to create W2a.
[0186] It is understood that the difference analyzer 37361 can perform the difference analysis and change set collection described herein using a number of techniques that benefit from the component-based architecture of the underlying system. Such techniques (described in U.S. Patent No. 9,817,804, issued Nov. 14, 2017, entitled "System For Comparison and Merging of Versions in Edited Websites and Interactive Applications," and U.S. Patent No. 10,176,154, issued Jan. 8, 2019, entitled "System and Method For Automated Conversion of Interactive Sites and Applications to Support Mobile and Other Display Environments," both of which are assigned to the common assignee of the present invention and incorporated herein) include, for example, any of the following: identification of the underlying website building system components, establishing geometric and semantic relationships between components, analyzing the attributes and content of components, analyzing the edit history of components, and high performance ordering of components at each hierarchical level (such as using linear comparison and merging algorithms known in the art).
[0187] The difference analyzer 37361 may further analyze changes made to code (back-end or front-end code) related to the WCA. Such analysis may use regular code text analysis as well as object-based analysis that can benefit from associations between code segments and sub-objects of the WCA.
[0188] The difference analyzer 37361 can also handle the use of external editing tools by the user and detect changes that it cannot track explicitly. For example, elements of code may be edited using external code development tools that complete the internally provided code editing tools. As another example, the WCA modification handler 373 allows export and import of some WCA elements to and from a standard format (such as XML), and such external standard files may be editable using external tools.
[0189] In such cases, the difference analyzer 37361 may find it difficult to follow the "edit history chain" that details the changes made to the WCA. In particular, such a "chain" may have gaps due to elements that have been edited using external tools and re-imported into the system 200.
[0190] The difference analyzer 37361 can analyze such gaps and create an extended edit history chain that provides a more complete view of the editing steps performed by the person (vendor or user) editing the WCA. Such gap analysis may be fully automatic or may be editor-assisted. The difference analyzer 37361 can also perform such gap analysis by performing a component-based comparison between pre-gap and post-gap versions to establish the changes made by the user in an external tool.
[0191] Exemplary techniques for performing such component-based comparisons are described in U.S. Pat. No. 9,817,804 and are performed, for example, by comparator and merger 650 (and in particular version comparator 655 and version resolver 656) as described therein.
[0192] The difference analyzer 37361 may also utilize website building system component IDs. It is understood that such comparisons and analyses often use website building system component IDs (as described for the ID-based matcher 721 in U.S. Pat. No. 9,817,804). However, such website building system IDs are often lost due to external editing.
[0193] The system 200 can add such ID information to the exported / imported component metadata that may have been preserved by external editing. The difference analyzer 37361 can also re-establish such IDs after import (e.g., re-inserting an ID from a pre-gap component into its located post-gap counterpart) based on any IDs stored in the metadata or based on the results of the comparison process itself.
[0194] It is also understood that a person editing a WCA may perform editing steps that are difficult to analyze or follow automatically. For example, a user may replace the "Play" and "Stop" buttons of a video player ([A] and [B], respectively) with a toggle switch [C] (having "Play" and "Stop" states). Such a replacement may involve deleting the two existing WCA buttons, creating a new WCA toggle switch, and specifying a new associated code (and functionality) for [C] that is similar (but different) from the code used in [A] and [B].
[0195] The difference analyzer 37361 may in some cases be able to understand such changes on its own (e.g., based on the various types of analysis described above). For example, the difference analyzer 37361 may understand a change based on a sequence of operations in the edit history (e.g., the deletion of two components followed by the creation of a component). As another example, the difference analyzer 37361 may understand a change based on a new toggle [C] occupying the same geometric region in the WCA previously occupied by [A] and [B].
[0196] However, in many cases, the difference analyzer 37361 may not be able to recognize the change for what it is. To address this, the system 200 may also provide the ability for an editor (vendor or user) to specify merge hints in conjunction with the editing process. Thus, in the above example, the editor would specify that [A] and [B] were merged to form [C].
[0197] Instead of merge hints, the system 200 may support active semantic tags that tie specific components or other triggers (such as "active areas" in an image) to a given event that activates (for example) some WCA code. For example, let an editing user manually assign multiple objects (e.g., a "play" button [X] and a UI image [Y]) with an active semantic tag that is associated with a video playback function.
[0198] It is understood (as described in further detail below) that such hints and tags (and the resulting understanding) may be used by the change applicator 3738. For example, based on this knowledge, the change applicator 3738 may (in the scenario described above) apply the new colors used for [A] and [B] to [C] as well.
[0199] As mentioned above, when creating a merged version of the WCA, W2a, the WCA merger 3736 may be required to merge two sets of changes: a vendor set (W1 to W2) and a user set (W1 to W1a). These two change sets may (and often do) contain conflicting changes. For example, a particular attribute [a] of an object [X] is set to a value [a=v1] in one change set and to a value [a=v2] in a second change set. As mentioned above, object / component attributes can include design-related attributes, code-related attributes, and attributes of other classes. For example, the two change sets may include the assignment of two different database tables used for the "source data" attribute of a particular list display field [X].
[0200] Conflicts may also concern the actual existence of a component or its subelements. For example, one change set may specify that some attributes [a, b] of a given object [X] have been set, while a second change set specifies that [X] has been completely removed. Such two sets are clearly inconsistent.
[0201] Conflicts can also arise involving multiple components with clashing or incompatible attributes or behaviors. For example, one change set moves a given component [X] into a given (now empty) screen region [r] in the WCA. A second change set moves a different component [Y] into the same region [r]. In theory, two components [X] and [Y] can appear in [r], but one of them overlaps the other. As another example, two change sets can change the color of an object and its containing object to the same or very similar colors, causing the two objects to visually "blend".
[0202] Another area of conflict is dynamic behavior or functionality. For example, each change set contains its own time-based trigger that plays a (separate) music file in the background. This can work in some cases if there are clear (and mutually exclusive) conditions for the music to start at each time trigger. However, playing two music files at the same time may not work for a typical user.
[0203] The WCA merger 3736 may use a smart merge process that is adapted to and uses information available in the WBS and its various repositories, including collected information (such as edit history and business intelligence (BI)), as well as current information (such as component hierarchy, structure, semantics, geometry, associated code definitions, etc.).
[0204] It will be appreciated that in typical embodiment system 200, the processing of the two sets of changes by WCA merger 3736 is not symmetric, since changes made by a WCA developer 64 may take precedence over changes made by a user (e.g., site designer 62). This is typically recommended because user changes tend to be smaller in scope or more superficial, while WCA developer 64 changes can be very substantial (e.g., releasing an entirely new version of the WCA).
[0205] As described above, the difference analyzer 37361 can analyze the user change sets (W1 through W1a). The change applicator 3738 can then reapply these changes to a new version of the WCA (W2 in the above example), and the conflict resolver 37362 can resolve conflicts whenever conflicting changes are detected. It will be appreciated that such merging / reapplication and handling of conflicts can be done in a number of ways (or combinations thereof), as described in more detail below.
[0206] The conflict resolver 37362 can simply discard changes from the user change set whenever they conflict with changes from the WCA developer 64 change set, so the vendor change set completely overrides the user change set.
[0207] The conflict resolver 37362 can interactively consult with the user to determine how to resolve each conflict. The conflict resolver 37362 can also add an element of assistance and automation to the manual interaction. This can be done, for example, by tracking responses to the current user (or other users) and gradually providing recommendations for conflict handling based on the collected responses and their analysis.
[0208] As described above, the ML / AI module 379 can provide decision support for conflict resolution during the merging process based on information extracted from the CMS 50.
[0209] It is understood that the merge AI / ML module 3795 can provide such recommendations for such conflict resolution. Thus, as the system 200 is used more and more, the merge AI / ML module 3795 can provide the user with better recommendations regarding merging changes. It is also understood that analysis and use of additional user responses can be based on categorization of other users' answers according to parameters related to the resolved conflict (e.g., those involving vendor and user changes) or the user himself (e.g., geography, experience, etc. as described in U.S. Pat. No. 10,073,923). The ML / AI module 379 may also provide an interface with the WCA remediation handler 373 to directly apply merge recommendations without user involvement. It is understood that the merge AI / ML module 3795 may operate using known machine learning / artificial intelligence algorithms or may use any decision engine technology.
[0210] In yet another option, the vendor's new version of W2 may include a set of User Change Acceptance (UCA) rules. These rules, which may be stored in CMS 50, may control which changes in the user's change set should be applied to W2 and in which way. The rules may apply to all user's changes or only to conflicting user's changes. The rules may include conditions on any system aspect, such as the objects and attributes involved, attribute values (original or either change set), the nature of the user or vendor change to be applied, the nature of the conflict (if any), parameters of the edit history underlying both the change and existing version information, page / WCA information, etc.
[0211] One extreme example is a version of W2 that is a major upgrade or redesign of W1. In such a case, W2 may be released with the UCA rule "discard all user changes" since none of the user changes to W1 are expected to be relevant (or technically applicable) to the heavily modified W2. In this scenario, all instances of W1a (for all users) will be reset to the unmodified W2, i.e., reverting all W2 instances to a "factory default" state (although the W2 update may define some exceptions for some users where their W2 instances will not be reset).
[0212] In another example of UCA rules, system 200 may allow limited types of user modifications to override conflicting vendor changes that would otherwise be used. For example, system 200 may allow some design-related user modifications (e.g., colors or fonts) to override vendor modifications, while preventing other user modifications from overriding conflicting vendor modifications.
[0213] In yet another example, a UCA rule may include conditions based on the details or parameters of a change. For example, a UCA rule may instruct the change applicator 3738 to apply user changes to the size and position of subelements of the WCA, but only if those changes are constrained to not destroy the basic visual structure of the WCA.
[0214] As another example, system 200 can allow user changes related to WCA integration (such as which databases are used, which databases interface to other components, etc.) to override matching vendor changes. In this way, new W2a versions can be incorporated into containing pages that are already connected to the appropriate data sources and interfaces.
[0215] As mentioned above, a WCA may be described as a set of sub-elements (front-end code, back-end code, UI components, etc.), each of which consists of a hierarchy of objects / components (e.g. website building system components), each of which has a hierarchy of attributes. The set of differences between WCA versions is similarly structured, and the structure may define a natural hierarchical model of change sets.
[0216] However, the change applicator 3738 may also categorize changes into larger areas or groups based on simplified models, for example categorizing WCA changes into general areas (such as layout, data, front-end code, back-end code) or WCA-specific areas (such as a specific sub-area of WCA).
[0217] The system 200 can allow a user to determine which changes to apply and how to apply them per region (e.g., for all changes in a given region together), using the full hierarchical model described above, or using simplified regions.
[0218] For example, the WCA modification handler 373 can update the visual layout of a WCA (i.e., the set of visual sub-elements and layout information) separately from the WCA code, allowing a WCA user (site designer) to update his or her WCA instance to a new version of one of them (layout / code) but not the other.
[0219] The system 200 can also implement UCA rules based on area (as described above). For example, a WCA developer 64 can define a set of UCA rules that automatically apply user changes to data / content while preserving design and location vendor changes (i.e., the design and location used in a new "official" version of W2).
[0220] Regarding layout / design / structural updates to code, the system 200 can provide multiple options. For example, the system 200 can allow the user to choose to keep the previous look and feel, merge with the new look, or snap to the official look and feel. UCA rules can dictate that some of these options may not be available (e.g., the user is required to migrate to the new design because the version breaks code compatibility or is too important to skip).
[0221] The change applicator 3738 may also use dynamic layout (as described in U.S. Patent No. 10,185,703) to support merging of modified WCA elements (e.g., by rearranging the layout to support insertions, deletions, and modified subcomponents).
[0222] Thus, once the difference analyzer 37361 determines the two sets of changes, the change applicator 3738 can apply any combination of the above methods (such as using UCA rules) to determine which set of changes to apply, and in what order (as the changes may not be transitive). The conflict resolver 37362 can handle the conflicts, and the change applicator 3738 can generate a merged WCA instance (W2a in the above example) that is placed on the page, replacing W1a.
[0223] It is understood that a single website or application (and indeed a single page) may contain multiple instances of one or more WCAs, and the update / merge process may result in different configurations of the merged WCA (W2a above) replacing each WCA instance.
[0224] It will be appreciated that one embodiment of system 200 can provide feedback to WCA developers 64 about actual changes made to WCAs by their users, so they can see what needs to be done when making changes to improve backward compatibility. This can include enabling WCA developers 64 to test potential WCA updates against actual changes made by site designers 62 to see how much functionality would be broken by the update and provide compatibility guidance.
[0225] The feedback provider 374 can collect information and provide analysis on such WCA instance changes according to user parameters (e.g., geography, experience level), site parameters (size, WCA popularity, given specific WCA parameters, premium package type, etc.), site usage information (number of users, site ranking / popularity, business type / family, site business volume, actual audience access to WCA, etc.) and more. This information can be obtained from the CMS 50 via the WCA CMS coordinator 350 as appropriate.
[0226] The analysis of the detected conflicts or clashes may be multi-faceted and may include, for example, either design / visual clashes, e.g., a WCA user has modified the WCA in an instance by adding a new component (that occupies a particular unused area of the widget WCA) and the WCA developer 64 also wants to add a component in the same or overlapping unused area (some of which may be types of merge conflicts as described above). The analysis may also be functional and API related. For example, it may be a check for conflicts that are not visual in nature (such as element X overlapping element Y), but resulting from an update that breaks an existing API, or an update that breaks a particular functionality performed by the WCA. For example, an advanced user may have changed the API between two sub-elements of the WCA and the update to the WCA may contain different (and conflicting) changes to the same API.
[0227] The feedback provider 374 may also use clustering analysis using standard clustering algorithms to construct one or more variations of "this is what a modified WCA would look like on average". The feedback provider 374 may also filter and unify the changes, for example filtering out mere layout changes (moving / resizing components) that are unlikely to create version incompatibilities.
[0228] As mentioned above, the system 200 can also use ghosting and masquerading techniques. These are applicable when a site designer 62 changes a WCA element or component that immediately causes a code interruption, or when an update from a WBS vendor 61 causes an interruption. The ghosting module 375 and masquerader 376 can compensate for these interruptions as they occur.
[0229] Ghosting represents the ability of the WCA module 300 (i.e., multiple parts such as the WCA site viewer 320, the insight editor 330, and others as directed by the ghost module 375 described in more detail below) to execute WCA's code and ensure that WCA functions even if a subcomponent is removed from a particular WCA instance. For example, a user may have removed the "play" button from a video player instance, but the WCA code will continue to run on the "ghost" version of that component even though it does not exist in the actual WCA instance.
[0230] As mentioned above, a designer 62 using a WCA (when building a site) may update the WCA at the instance level, and such updates may include the removal of internal WCA components. The ghost module 375 may ensure that code functionality is preserved despite such changes by simulating (also known as "ghosting") the removed (typically internal) components, as described in more detail below. The ghost module 375 may also do this across levels of containment or WCA nesting. For example, WCA A may include WCA AB. A site designer 62 may deploy WCA A in his site W, but remove its internal WCA AB. The ghost module 375 may provide the necessary simulations so that WCA A (and its site W inclusive) continue to function properly. This also occurs at additional levels of WCA nesting.
[0231] It will be appreciated that in some scenarios, the WCA developer 64 may encapsulate the WCA code, prohibiting the designer 62 from accessing or modifying this code (for example, to prevent the designer from breaking this code and gaining access to trade secrets detailed in the code, or access keys for any reason).
[0232] In other scenarios, a WCA developer 64 may open the WCA code for update by a designer 62, who may update the WCA's code in parallel with changes to components contained in the WCA, however, even in these cases the designer 62 may refrain from updating the code (because they may lack the skills to do so).
[0233] In some scenarios, inconsistencies between the WCA structure and the code can arise, for example, if WCA X references a component C that does not exist in the set of WCA X components. This can happen if designer 62 removes component C in WCA X, or if a modified version v2 of WCA X's code is installed replacing existing v1 code (without updating X's component set in parallel) and the v2 code uses a new component C that was added in v2 to the set of existing X components.
[0234] This can also happen with the simultaneous use of multiple components, i.e., the ghosting module 375 may be required to ghost multiple components in the same WCA. Under this process, the ghosting module 375 can simulate some of the behavior of such missing components, allowing code that references them to continue to operate even if the components themselves are missing.
[0235] For example, code embedded in the WCA may assume the presence of a (currently missing) image subcomponent XX and set its source via a code statement such as:
[0236] XX.image.source=“xx.jpg”
[0237] The ghost module 375 can use the WCA general definition to determine what to do (if an image component is removed) and need not rely solely on information available in the WCA instance. The ghost module 375 can also use additional sources of information, such as site experience (i.e., the actual behavior and usage history of the WCA stored in the CMS 50), as described in more detail below.
[0238] As another example, when attempting to use a value for a deleted component in the current instance, the ghost module 375 may use a default value from the original WCA definition, even if such a value is not typically shown to the user in the field.
[0239] The ghost module 375 may also have substantial information about the missing components from the original WCA, the site itself, and possibly explicit hints specified by the WCA developer 64. The ghost module 375 may also use edit history and business intelligence (for the current site and possibly other sites, such as sites using the same WCA). The ghost module 375 may also use AI techniques to analyze such collected information. For example, the system 200 may train an AI model on the behavior of a given component, i.e., the outputs it produces, and the conditions under which it functions (given specific inputs or otherwise). Such a model may be trained using context information (e.g., details about including the WCA and the site), user parameters, site parameters, and other information within the CMS 50. The AI model may then provide the information necessary to drive the simulation of the ghost components (input responses, exception outputs, etc.).
[0240] It is understood that such derived information and behavior created for the (now removed) component may include the type of the missing component, its characteristics, its default values, and behavior at the default values. It may also include the edit-time attributes (data, layout, design), and run-time API (properties, functions, events) of the component.
[0241] Ghosting is typically performed as part of the editing process, at the point where relevant code that may use the missing components is created. In a typical embodiment, the ghosting module 375 creates a "model" (representing the site elements) for the relevant code to work against.
[0242] When a ghost element is needed, the ghost module 375 can retrieve the original definition, structure, and attributes of the missing element and simulate how some of the APIs work so that they remain coherent (e.g., missingElement.hide() returns as if the element was successfully hidden, etc.).
[0243] The ghost module 375 can retrieve the necessary information from a number of sources, including the original "master copy" (i.e., the "factory configuration" which is the unmodified WCA as provided by the WCA developer 64), the actual version of the component and the data that was in the component on the site before it was deleted, or a merged version of the two.
[0244] In other embodiments, the ghost module 375 may provide behavior of the component based on collected data about it (including observing the runtime behavior on various instances of the associated WCA and simulated component).
[0245] In a ghost-related feature, the system 200 can provide a user interface that allows a WCA user to reconfigure components that have been deleted from a WCA. Thus, a user can select WCA components that have been deleted in the current WCA instance and return them to the WCA based on their "factory settings" or the settings and content used by the components when they were deleted.
[0246] Masquerader 376 can provide the ability for a component of a given type to behave as a component of another type, known as “masquerading.” Thus, masquerader 376 can protect compatibility between a replaced element and the element that replaces it as necessary (e.g., depending on the replaced element's environment).
[0247] One example is a user changing the type of an internal WCA component from type A to type B (e.g. changing the gallery type from a slider gallery to a matrix gallery), and another example is replacing a picture gallery component with a database component that does not have a gallery display but can still provide a "list of items" functionality.
[0248] Masquerader 376 can provide translation capabilities for interactions between various elements and component types in system 200, such as using specific translation drivers provided by the code implementing the two gallery types (in the example above). Thus, masquerader 376 can provide a B-type component (new type) with the ability to masquerade as an A-type component (old type) for some or all relevant interactions. Such translation drivers can translate input and output messages and events implemented by the various components and can also implement common or standardized message and event formats. In the example above, masquerader 376 can define a set of common gallery message and event formats and can use specific translation drivers to cause gallery components to masquerade as other types of gallery components. Masquerader 376 can perform additional translations and modifications of the translated messages and events based on parameters and information related to the contained WCAs and sites, user parameters and other system information in CMS 50.
[0249] In addition to explicit type changes by the user, the masquerader 376 can provide interaction transformation capabilities for other cases where a component may be required to act as if it were another related component (masquerading). Examples may include two components that are related through their defined roles (e.g., an image and a button may both be assigned the role "play button"), or two components that are related by inheriting a common set of functions or capabilities from a common archetype. An example would be components X and Y that inherit (albeit differ in other respects) and support the functionality of a "product gallery."
[0250] As described above, the ML / AI module 379 and, in particular, the element behavior ML / AI module 3794 can support the functionality of the ghost module 375 and masquerader 376 by learning component and code behavior and providing the necessary component / code behavior and information transformations.
[0251] Reference is now made to FIGS. 13A-13E, which illustrate an exemplary user interface for manipulating WCAs within a WCA insights editor 330 as part of the Wix platform by Wix.com, Ltd.
[0252] FIG. 13A shows the sample stock chart WCA.
[0253] FIG. 13B shows a sample stock chart WCA with the WCA-specific settings dialog open, allowing the site designer 61 to specify the stock symbol (WIX) and change warning threshold (2%) to be used by this WCA.
[0254] FIG. 13C shows a sample stock chart WCA with the “percentChange” subcomponent removed and the “Add elements” dialog opened, allowing the removed elements to be restored or the latest official appearance to be applied.
[0255] FIG. 13D shows a sample weather WCA with its own WCA-specific settings dialog open (including city and country).
[0256] Figure 13E shows a sample weather WCA with focus on a text field displaying a temperature, which has the usual "Edit text" and "Connect to data" options.
[0257] As explained above, the WCA developer 64 can set (by setting appropriate UCA rules) if the new WCA version is a normal version (one that may be altered by user modifications) or if it is a major upgrade that is not backward compatible with the previous WCA version. A major upgrade can force the WCA user (i.e., the site designer 62) to revert to the unmodified "factory-default" WCA version (based on the new version in this case).
[0258] In some scenarios, a user may choose to update the code from version 1 to version 2 without updating the structure (i.e., leaving the structure at version 1 or modified version 1a). Because the version 1 structure has not changed, the WCA may be missing some elements of the version 2 structure. In such cases, the ghost module 375 can click in and provide the ghost fields required by the version 2 code, so the code can reference the missing components.
[0259] It will be appreciated that collecting information for ghosting is also useful during the WCA building and testing phase by WCA developer 64. WCA designers may want to preview and run WCA code while building the WCA, and in other embodiments, system 200 may provide a test environment for the WCA.
[0260] The ability of the system 200 to collect information about specific interactions performed by WCA subcomponents may allow a WCA to be realistically tested. Such testing may include the stream of interactions associated with the subcomponents, as well as other environmental aspects that determine how the WCA will perform (which users are logged in, what roles, geographic location, etc.).
[0261] The system 200 may allow a user to provide such interaction and environmental information via the WCA insights editor 330, or the WCA app builder 360 may generate appropriate values for testing the WCA with additional or alternative data.
[0262] The WCA insight editor 330 and WCA app builder 360 may also provide support for creating database connections during editing by providing potential fields in related databases to connect through data mining of possible field options. The database connector 377 may check field types and previous connections made by the same user or other users of the same WCA. This may be done at the time of WCA creation by the WCA developer 64. The WCA designer 62 may also bind elements in the WCA to values of properties passed to it. For example, the property "city name" may be bound to an element in the weather WCA that shows the name of the city. The WCA designer 62 may bind elements in the WCA to data from databases (also called "collections") packaged and installed with the WCA. This may be done during the time of use of the WCA by the user.
[0263] WCA users can bind WCA properties to values from a database so that the values are passed to WCA at run time. For example, a website may have a dynamic page showing city details, and a weather WCA city property placed on that page is bound to the city name in the site's database.
[0264] As mentioned above, several databases, known as collections, can be bundled with WCA itself. Collections are typically small databases, since larger databases are usually served from the website building system's servers, the WCA provider's servers, or separate external servers and cannot be included in the displayed page.
[0265] Thus the database may be specific to an installed WCA instance - that is, there may be a separate copy for each WCA instance, it may be included on the page that contains WCA (this typically happens with smaller WCAs), it may be specific to a website (or set of related websites) and shared between multiple instances of WCA within the same website (or related sites), or it may be generic to WCA and accessible from multiple instances of WCA (possibly from multiple unrelated websites).
[0266] The database connector 377 can track the amount of data in a given database and recommend to the user to convert (internal) collections to (external) databases or vice versa, providing seamless conversion in both directions.
[0267] As mentioned above, a WCA can be characterized by an API that accesses its functionality. The API handler 378 may enable a WCA user to switch between multiple WCAs that have the same (or similar) API. The system 200 may typically provide a default implementation or version of a WCA, and may also provide alternative WCAs (e.g., via the object marketplace 15).
[0268] The WCA app store manager 315 can combine such selections based on API fit with selections based on other WCA parameters, such as fit to the containing page (based on design / style matching or other parameters) when searching the app store of system 200 (or another object marketplace 15 embodiment).
[0269] For example, a creator in the e-commerce industry with a storefront can include a specific product WCA to display product details. Site designers 62 using vertical applications can find alternative product widgets that can be used interchangeably with the original, as long as the relevant API calls exist for both.
[0270] Thus the WCA, with all its different types of sub-elements and code, can be copied, modified, manipulated, it can have different versions merged, and by using ghosting and masquerading techniques, it can have the ability to continue functioning after elements / code have been removed or changed.
[0271] Unless otherwise indicated, discussions throughout this specification using terms such as "processing," "calculating," "computing," "determining," and the like, are understood to refer to the operations and / or processes of any type of general-purpose computer, such as a client / server system, mobile computing device, smart appliance, cloud computing unit, or similar electronic computing device that manipulates and / or transforms data in the registers and / or memory of a computing system to other data in the memory, registers, or other such information storage, transmission, or display device of the computing system.
[0272] An embodiment of the present invention may include an apparatus for performing the operations herein. The apparatus may be specially constructed for the desired purpose or may comprise a computing device or system, typically having at least one processor and at least one memory, selectively activated or reconfigured by a computer program stored in the computer. The resulting apparatus, when instructed by software, can transform a general-purpose computer into an inventive element as described herein. The instructions can define the device of the present invention to operate with the computer platform for which it is desired. Such a computer program can be stored on a computer-readable storage medium, such as any type of disk, including but not limited to optical disks, magnetic optical disks, read-only memory (ROM), volatile and non-volatile memory, random access memory (RAM), electrically programmable read-only memory (EPROM), electrically erasable and programmable read-only memory (EEPROM), magnetic or optical cards, flash memory, disk-on-key, or any other type of medium suitable for storing electronic instructions and capable of coupling to a computer system bus. The computer-readable storage medium can also be implemented in a cloud storage device.
[0273] Some general purpose computers may include at least one communication element to enable communication with data networks and / or mobile communication networks.
[0274] The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired methods. The desired structure for a variety of these systems will appear from the description that follows. Further, embodiments of the present invention are not described with reference to any particular programming language. It will be understood that a variety of programming languages may be used to implement the teachings of the present invention as described herein.
[0275] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will occur to those skilled in the art, and it is therefore to be understood that the appended claims are intended to cover all such modifications and changes as fall within the spirit and scope of the invention.
Claims
1. A website building system (WBS), a WCA (WBS configurable application) App Builder that enables a WCA developer to build and edit at least one WCA, where a WCA is a single packaged entity that includes a set of customizable elements that are embedded as instances of pages to provide the behavior of a website; a machine learning (ML) / artificial intelligence (AI) module that uses machine learning and artificial intelligence techniques to provide support for the resolution of conflicts between the at least one WCA and replaced or replacing elements in a modified version of the WCA; Including, Website building system.
2. a website component of said WBS website and at least one database that stores at least definitions and instances of WCAs along with user-collected information of users of said WBS; 2. The website construction system according to claim 1.
3. The ML / AI module includes: a content management system (CMS) extractor / trainer for extracting and training data from said at least one database; an element behavior tracker / trainer for tracking the behavior of the WCAs and their elements; an element behavior ML / AI module that learns about the behavior of WCAs from the element behavior tracker / trainer and the CMS extractor / trainer; a merge ML / AI module that learns about the merged behavior of WCAs from the element behavior tracker / trainer and the CMS extractor / trainer; Including, 3. The website construction system according to claim 2.
4. a WCA handler for receiving at least one modification to an initial version of a WCA from a user and at least one update to said initial version of a WCA from a WCA developer; 2. The website construction system according to claim 1.
5. the WCA handlers include a WCA modification handler that merges between at least one modification and at least one update to create a modified WCA; 5. The website construction system according to claim 4.
6. The WCA correction handler includes: an update receiver for receiving the at least one modification and for receiving the at least one update; a WCA merger for merging the at least one modification and the at least one update; a change applicator that applies the at least one modification and the at least one update to create the modified WCA; Including, 6. The website construction system according to claim 5.
7. The WCA merger includes: a difference analyzer for collecting and analyzing a change set between the at least one modification and the at least one update; a conflict resolver for resolving conflicts between the at least one modification and the at least one update; Including, 7. The website construction system according to claim 6.
8. a decision engine for making decisions for the WCA handler and the WCA merger based on the output of the ML / AI module; 7. The website construction system according to claim 6.
9. A method for a website building system (WBS), comprising: Enabling a WCA (WBS configurable application) developer to build and edit at least one WCA through a WCA app builder, where a WCA is a single packaged entity that includes a set of customizable elements that are embedded as instances of pages to provide website behavior; using machine learning and artificial intelligence techniques by a machine learning (ML) / artificial intelligence (AI) module to provide support for resolution of conflicts between the at least one WCA and replaced or replacing elements in a modified version of the WCA; Including, method.
10. and storing at least the definition and instance of the WCA in at least one database along with a website component of the WBS website and user-collected information of users of the WBS.
10. The method of claim 9.
11. Using said machine learning and artificial intelligence techniques: Extracting and training data from said at least one database; Tracking the behavior of WCAs and their elements; learning about the behavior of the WCA from said tracking and said extracting and training; learning about the merging behavior of WCA from the tracking and the extracting and training; Including, The method of claim 10.
12. receiving at least one modification to the initial version of the WCA from a user and at least one update to the initial version of the WCA from a WCA developer.
10. The method of claim 9.
13. and merging between the at least one modification and the at least one update to create a modified WCA. The method of claim 12.
14. The merging comprises: receiving said at least one modification and receiving said at least one update; merging the at least one modification and the at least one update; applying said at least one modification and said at least one update to create said modified WCA; Including, The method of claim 13.
15. The merging comprises: collecting and analyzing a change set between the at least one modification and the at least one update; resolving conflicts between the at least one modification and the at least one update; Including, The method of claim 14.
16. and making the receiving and merging decisions based on an output of the using machine learning and artificial intelligence techniques. The method of claim 14.
Citation Information
Patent Citations
Rich website authoring and design
JP2012520509A
System and method for creating and processing configurable applications for website building systems
JP2022508086A
System for synchronization of changes in edited websites and interactive applications
US20150227533A1
System and method for implementing containers which extract and apply semantic page knowledge
WO2018020462A1
Cited By
Software design support device, software design support method, and software design support program
JP7784101B1