Overview The term "Advantage Tool" refers to a specialized system designed for managing "Structured Content." Structured content is defined as information that adheres to a specific format and exhibits predictable behaviors. Examples of structured content include news articles, calendar events, and personal profiles. This kind of content benefits from a systematic approach to management due to its organized nature, which often follows a consistent pattern or structure. To effectively handle this structured content, two main components are utilized: a tool for managing the data, and a module for presenting the content on the front-end interface of a website or application. The tool is responsible for the back-end management of data, ensuring that content is organized, stored, and accessible as needed. On the other hand, the module serves as the front-end component that displays the structured content to users. It translates the managed data into a format that is visually appealing and easy to interact with on a website or application. A common practice in the development of these modules is to inherit from the "AdvantageModuleRewrite" class. This inheritance allows for the creation of friendly URLs, which are more readable and easier to remember for users, improving the overall user experience and potentially boosting SEO performance. Friendly URLs are a key feature in making content easily accessible and navigable. The front-end expression of content, through the "AdvantageModule" and "AdvantageModuleRewrite," relies on the "AdvantageModuleEngine" (referred to as this.ModuleEngine in code). This engine is a critical component that provides the modules with access to the underlying data. By utilizing the AdvantageModuleEngine, the front-end modules can retrieve, display, and interact with the structured content stored in the back-end. This seamless interaction between the back-end management tool and the front-end modules ensures that users are presented with up-to-date and correctly formatted content, enhancing the overall functionality and user experience of a website or application. Steps Intro This guide provides a step-by-step walkthrough for creating an "Advantage Tool" designed to manage structured content. Structured content refers to any data that follows a specific format, making it easier to organize, manage, and display. This process involves several key steps: creating a BusinessObject, developing a Tool Control, implementing a Tool List Manager, and finally, registering the tool. Each of these steps plays a vital role in the setup and functionality of the Advantage Tool, ensuring that it effectively manages and presents structured content. 1. Create a BusinessObject The first step in the process is to create a BusinessObject. This object serves as the foundation for your structured content, defining the data structure and the logic for handling data. A BusinessObject typically represents a specific type of content (e.g., a news article, an event, a product listing) and includes properties that describe the content (such as title, date, description). It also contains methods for data manipulation, such as adding, updating, and deleting content. Creating a BusinessObject is crucial as it outlines the structure and behavior of the content you intend to manage. 2. Develop a Tool Control After defining the BusinessObject, the next step is to develop a Tool Control. This component acts as the interface for managing the BusinessObject's data. The Tool Control provides functionalities such as forms for entering or editing data, buttons for submitting changes, and validation logic to ensure data integrity. It's essentially the user interface through which administrators or content managers interact with the structured content, making it an essential part of the content management process. 3. Implement a Tool List Manager The Tool List Manager is the third step in the process. This component is responsible for displaying a list of the structured content managed by the BusinessObject. It allows users to view, sort, filter, and select content items for editing or deletion. The Tool List Manager is crucial for providing an overview of the content and enabling efficient management, especially when dealing with large volumes of data. It typically includes features such as pagination, search functionality, and various filters to help users navigate the content easily. 4. Register the Tool The final step in creating an Advantage Tool is to register the tool within the system. This process involves integrating the BusinessObject, Tool Control, and Tool List Manager into the content management system or application framework. Registration makes the tool available for use, linking it with the system's backend and frontend components. It ensures that the tool is recognized by the system, allowing it to access and manipulate the structured content as designed. Registration typically involves configuring settings, defining URLs for accessing the tool, and setting permissions for different user roles. By following these steps—creating a BusinessObject, developing a Tool Control, implementing a Tool List Manager, and registering the tool—you can effectively set up an Advantage Tool for managing structured content. This process lays the groundwork for organizing, managing, and presenting data in a structured manner, enhancing the efficiency and usability of content management systems and applications. BusinessObject A business entity is an structured data object. These are created to store customizable data. To implement a BusinessObject, you would create a Tool that allows administrators to add/update/delete the information, and a Module that would allow for display of the information to the end user. Important things to note in this file Inherits from BusinessObject<T>. (Pass through your Entity Type instead of T.) Contains a list of properties based on client requirements Set up your override classes: Set Summary Data Row : the column to show in the List [LINK] Set Searchable Properties : Validate : the properties must be validated Create your own file Your BusinessObjects will go into the Domain folder within App_Code (if website project). If you have multiple domains and want an object to be common across the board, you can house them in the common folder. You can either copy and paste the example file and change all the names, or you can right click and add a new user control to start from scratch. Don't forget to add all the important parts as mentioned above. Create A BusinessObject BusinessObject API Reference example Override methods (Mandatory) Validate - > used to validate the data at any particular action point. Failing the data validation will cause the event to not fire. PreSaveDraft-> Called directly before the data is saved as a draft PostSaveDraft-> Called directly after the data is saved as a draft PrePublish -> Called directly before the data is published PostPublish -> Called directly after the data is published PreUnpublish-> Called directly before the data is unpublished PostUnpublish-> Called directly after the draft is unpublished PreDeleteRecord-> Called directly before the entire record is deleted ProstDeleteRecord-> Called directly after the entire record is deleted Sample: Create a BusinessObject and save to the correct folder Sample News Article and News Category Classes Create A Tool Control API Reference This is the control that binds the BusinessObject to the User interface in the admin. The Control will inherit from ToolControl<T> Create new User control that inherits from ToolControl<T>. Add all of the front-end elements you will need for binding. Fieldset<fieldset> <legend>Article Information</legend> <div class="form-row"> <label>Headline</label> <telerik:RadTextBox runat="server" ID="txtHeadline"></telerik:RadTextBox> </div> <div class="form-row"> <label>Date</label> <telerik:RadDatePicker ID="dtDate" runat="server"></telerik:RadDatePicker> </div> <div class="form-row"> <label>Summary</label> <telerik:RadTextBox runat="server" ID="txtSummary" TextMode="MultiLine" Rows="4"></telerik:RadTextBox> </div> </fieldset> <fieldset> <legend>Page Url</legend> <div class="form-row"> <label>SEO Name</label> <telerik:RadTextBox runat="server" ID="txtSEO"></telerik:RadTextBox> </div> </fieldset> Override the Methods. protected override void LoadDataFromObject(ActionArgs e) -> Bind data to the front-end expression protected override void SaveDataToObject() -> save data from front end expression to object Create A Tool List Manager The list control provides the list screen for the tool manager for adding or editing a specific record. Create new User control that inherits from ToolGridList<T> Add a grid list control in the .ascx file. Grid List Control<advantage:ToolGridList runat="server" ID="StandardToolGridListControl1" /> Bind Property to grid control defined. Attach GridList Control protected override void OnInit(EventArgs e) { grdToolList = StandardAdvantageToolListControl1.Grid; base.OnInit(e); } Override DefineColumn Method and bind to properties set in (SetSummaryData on the BusinessObject class) Register A Tool How to register a Tool in Advantage CSP Go to Advantage Tools > Data Sections > Tools Set up Roles Go to User Manager > Roles The Tool should be available in your left navigation now.