|
cpsys_DataDiffs
cpsys_DataDiffs
This table is designed to create a relationship from the content record to changed values of attributes within the record.
The cpsys_DataDiffs table was released in Centralpoint version 8.11.51 and is supported against content residing in GenericEnhanced modules.
Records are only inserted in this table when content is submitted with trigger execution. Difference recording is a moving forward feature. This means that if the tools below are applied to existing content, there is no means to determine the changes that occurred prior to this feature being enabled.
Console Instructions
-
Module Properties > Is Data Diffs Relation Enabled
Go to this location within the desired module. Set the radio-button to Yes.
-
Module Properties > Data Diffs Attributes
This attribute is visible when the previous step is completed. Enter a comma-separated list of Attribute System Names. When a value in one of these defined attributes have changed, a record is recorded to cpsys_DataDiffs.
*IMPORTANT*
- Ensure the list of defined attributes which detect changes is a complete and final list before using this feature.
- If new attributes are added after data begins recording, the original recorded diffs will not be able to render these attribute values.
- These notes do not mean that an excessive list of attributes should be entered for the concern of possibly using them in the future. Doing this is likely to lead to other problems which may not be resolvable and require deleting the problem data out of cpsys_DataDiffs.
- Module Configuration
This step is recommended if this feature is applied against existing content and one of the defined attributes is generating data from Word Document HTML. Go to the Module Configuration within the desired module. Add a custom attribute with a System Name of: IsCpMovingAsposeExtractedFiles. This should be a Yes/No attribute and the XML required is shown below. The purpose of this step is that differences in extracted files from the Word Document could not be tracked until this release. The files generated when using this feature are created with a SHA256 hash as the file name. The unique names applied to embedded files within the Word Document allow us to detect when changes occur within the embedded files. Previously, the file names were generic and overwritten each time a record using Word Document features was saved. This attribute will move the old files to the website's \Temp directory to free up disk-space.
<property id="IsCpMovingAsposeExtractedFiles">
<value>1</value>
<attribute name="Is Moving Aspose Extracted Files?" isEnabled="false" isVisible="false" allowScripts="false">
<control id="CpKeywordRadioButtonList" type="Centralpoint.Web.UI.Controls.CpKeywordRadioButtonList">
<controlProperty name="RepeatColumns" value="0" />
<controlProperty name="RepeatDirection" value="Horizontal" />
<controlProperty name="KeywordListId" value="c52d9d0d-09f4-4547-96b0-0850f7fade47" />
</control>
</attribute>
</property>
- Design > Script Generator > Script
This step is where the DataDiffs UI is managed. Set this attribute to Data Diffs. A default UI is provided and the attributes contain instructions and allow for customization. Take the CpScript produced from this record and place it into a Details View of a module designer record that is tied to a content module where this feature is enabled.
Creating self-signed PFX for SAML SSO
Creating Visual Studio Solution
Creating an empty solution
- On the File menu, click New and then click New Project.
- In the left pane, select Installed Templates, and select Other Project Types, then Visual Studio Solutions from the expanded list.
- In the middle pane, select Blank Solution.
- Set the Name (Centralpoint) and Location values for your solution, and then click OK.
Add projects to Centralpoint solution
- In the right pane right click on Centralpoint and select Add >New Solution Folder. Set folder to the name of your project. Example: DevWebsite
- In the right pane right click on DevWebsite and select Add > Existing WebsiteThen, navigate to Centralpoint directory on your web server (for easier access you may want to map the drive)
- Pick your \\WebServer\Centralpoint\WebSites\cpweb_Development\Root folder and click Open.
- Click save All.Repeat step 1 true 4 for any other solutions.
Other Possible Solutions Example:
Master: \\WebServer\Centralpoint\Master\Root
Console: \\WebServer\Centralpoint\WebSites\cpweb_Development\Console
Downloadable Video avalible here.
* You can’t make any changes to any of the files unless they prefix my_ or code in inside of Uploads Folder.
Cryptographic Features of Centralpoint
Symmetric Encryption
- Type
- RijndaelManaged encryption with a 256 bit key.
- The Key is generated from a base64 string stored in the Admin > Settings module. The maximum key size supported is 256 bit. Changing this key will invalidate any encrypted values already stored in the system.
- Use Cases
- Passing configuration data in web requests (query strings, form fields, or JSON).
- Credentials stored in scheduled tasks like Data Update.
- Credentials stored in modules like Retention Policies, Email Access, Global Login, Forms, Ecommerce.
- User authentication token cookies used for the Web API and Word Add-In.
- PDF Passwords stored in session state for file output.
- FormState CpScripts can be used to encrypt data passed into the system using Forms Management.
- Credit card information stored in Ecommerce Billing when enabled.
Password Hashing
- Type
- Passwords entered in version 8.9.14 or later are hashed using Rfc2898DeriveBytes. This implements password-based key derivation functionality, PBKDF2, using a pseudo-random number generated based on HMACSHA1. The hash is generated using a 32 character salt and 10,000 iterations.
- Passwords entered prior to version 8.9.14 may still exist and were combined with a 10 character random salt and hashed using the SHA1CryptoServiceProvider. This computes the SHA1 hash for the password and salt using the managed library. These passwords will be updated the next time the user logs in.
- Use Cases
- Master > Admin > Users
- Site Architecture > Administrators
- Members
- Master & Client Console Logins
- Web site authentication via Site Architecture > Administrators or Members. This does not apply to front end authentication non-Centralpoint global logins.
- Verify that values passed to the system were not modified during transmission.
Machine Keys
- Type
- Defaults to HMACSHA256.
- Managed in the Admin > Settings module.
- Use Cases
- Message Authentication Code (MAC) Operations
- View State Validation
- Session State Isolation
Data Transmission (HTTPS)
- All sites and consoles support HTTPS.
- Consoles can require HTTPS using Admin > Properties > Console Requires Secure Channel.
- Web sites can force HTTPS using Admin > Friendly URLs.
- SSL or TLS security must be configured manually in IIS.
- HTTPS can be added to all web service communication using Admin > Settings.
Transparent Data Encryption (TDE)
- SQL Server TDE can be used to encrypt data in the database at rest.
- This must be configured manually at the database level.
Culture
Centralpoint Digital Experience Platform stores all dates and times using the English (United States) culture. Many UI elements of the site will utilize the selected culture when they are displayed.
The culture used on the front end of the web site can be set in Admin > Properties > Globalization or Site Architecture > Audiences > Globalization. Audience overrides will take precedence over site overrides.
Current Issue link for Publishing > Articles
Current Issue link for Publishing > Articles
/Modules/PubArticles/CurrentIssue.aspx?AudienceSystemName=Main&RoleSystemName=Public&SiteMapSystemName=Articles
The link to the issue page that is the most current issue available for the audience and role that you place within the link. Use this for links to the current issue page within the Publishing > Articles module.
Insert the audience system name, role system name and navigation system name as appropriate to link to the desired current issue. The navigation system name is the name of the Site Architecture > Navigation item that links to the Publishing > Articles module.
Custom Attributes
Custom Attributes
Executive Summary
The custom attributes functionality -- available to ancestor administrators within the Module Configuration file of all CentralPoint modules -- allows administrators to insert new fields or re-arrange current module layout within the console without requiring a synch process. The changes effectively occur real-time, after administrators upload their new custom attributes XML file. The process to produce these changes is outlined here, as is the structure of the document required to affect these changes.
The custom attributes functionality supports only Centralpoint-specific XML attributes, which allow administrators to add and manipulate form elements, data types and console user interface. Those controls -- and their functionalities -- are listed here.
Chapters
Document Structure
Control functionality and examples
Uploading custom controls
The XML attributes document that controls module layout within the console -- and allows administrators to add fields to their modules -- is comprised by six major XML nodes: group, property, value, attribute, control and validator.
A group functions as a separate tab of form elements within the CentralPoint administrative console. Many of CentralPoint's modules, such as Forms and Design, include multiple tabs for easier administrator interface. A group attribute takes two required parameters: id and name. The value of each of these should be identical for organizational purposes, and they must be alpha-numeric, beginning with a letter. Spaces and special characters are not allowed.
Example:
<group id="Workflow" name="Workflow">
...
</group>
The property node is effectively a field in your module's database design. It takes one parameter: id, the value of which must be alpha-numeric, beginning with a letter. Spaces and special characters are not allowed. Additionally, no two property nodes can have the same id.
A group is comprised of one or more property nodes, and property nodes are comprised of the value, attribute, control and validator nodes.
Example:
<group id="Workflow" name="Workflow">
<property id="UserEmail">
...
</property>
<property id="IncludeFormData">
...
</property>
</group>
A value node sets the default value of a property (or database field) when andministrator creates a new record in the console's module interface. The value node is required to be present in the configuration document, but it is not required to contain a value.
Examples:
(With a value):
<property id="UserEmail">
<value>01</value>
...
</property>
(Without a value):
<property id="UserName">
<value />
...
</property>
The attribute node determines a label in the console's module interface, as well as whether the associated control is visible and if Cp:scripting is allowable in the form element. Those parameters are:
name - Alpha-numeric, with spaces and special characters allowed
isEnabled - true/false
isVisible - true/false
allowScripts - true/false
Example:
<attribute name="User Name" isEnabled="true" isVisible="true" allowScripts="true">
...
</attribute>
Attribute nodes are comprised of a single control, which determines the form element in the console and data type of the field in the module database.
There are 19 possible control types. Control types are comprised of controlproperty nodes that govern the display of the control itself. Control types can also be validated by one or more validator nodes. Below are the control types and a brief description of what they do. A full list of code examples can be found in the Control Functionality and Examples chapter.
- CpAttributeSwitch - Dynamically toggle the display of existing attributes. It is recommended that you set the visiblity of all initally unselected controls to false. This control may cause attributes hidden using module configurations to appear.
- CpAudienceSelector - audience multiselect
- CpColorPicker - color picker
- CpDataListBox - data list box (A custom list box populated using data displayed on the selected Navigation Item.)
- CpDateTimePicker - Date and Time selector
- CpEditor - RTF editor
- CpHyperlink - An uneditable field containing a linked image or text.
- CpKeywordListBox - A list box populated using the selected Keyword List, available in Development > Keyword Lists
- CpKeywordRadioButtonList - A list of radio buttons populated using the selected Keyword List, available in Development > Keyword Lists
- CpListBox - A list box populated from any SQL table.
- CpModuleListBox - A radio button list box of available modules in the console
- CpRadioButtonList - A radio button list populated from any SQL table.
- CpTaxonomySelector - The standard taxonomy selector
- CpTextArea - a standard text area that does not allow RTF control
- CpTextBox - a standard text box
- CpTieredSelector - Tiered selectors dynamically populated using a SQL table with a parent field.
- CpTimeZoneListBox - a standard time zone rop-down menu
- CpUpload - a standard file upload button and its associated functionality
- CpXmlListBox - A list box populated using the given XML file.
Examples:
<attribute name="Confirmation Email" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpAttributeSwitch" type="Centralpoint.Web.UI.Controls.CpAttributeSwitch">
<controlProperty name="RepeatDirection" value="Horizontal" />
<controlProperty name="RepeatColumns" value="0" />
<listItem value="01:" index="0">No</listItem>
<listItem value="02:cfrUserName|cfrTo|cfrFrom|cfrCC|cfrBCC|cfrSubject|cfrBody|cfrIncludeFormData" index="1">Yes</listItem>
</control>
...
</attribute>
<attribute name="User Name" isEnabled="true" isVisible="true" allowScripts="true">
<control id="CpTextBox" type="Centralpoint.Web.UI.Controls.CpTextBox">
<controlProperty name="Width" value="" />
<controlProperty name="AllowCopy" value="true" />
<controlProperty name="TextMode" value="SingleLine" />
<controlProperty name="ReadOnly" value="false" />
<controlProperty name="MaxLength" value="256" />
<controlProperty name="ToolTip" value="" />
</control>
</attribute>
As previously mentioned, control types can be checked using validator nodes. Validator nodes require two parameters: id and type. The id must be a unique, alpha-numeric value that does not contain spaces or special characters. The type must be one of the supported types below. Validator nodes also take controlproperty nodes that govern the error message that display if a form element does not pass validation, as well as patterns that the validator will use to verify the form element.
- CpCompareValidator - Enter either an attribute with which to compare values, or a static value to check before submission.
- CpIdCompareValidator - Compare the control value to the DataId.
- CpLengthValidator - Validates that the length of the controls string value.
- CpRegularExpressionValidator - evaluates and verifies that the form element matches the regular expression
- CpRequiredFieldValidator - checks to ensure the form element contains a value
- CpUniqueFieldValidator - Prevents records with duplicate field values.
Examples:
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
<validator id="PatternCpRegularExpressionValidator" type="Centralpoint.Web.UI.Controls.CpRegularExpressionValidator">
<controlProperty name="Pattern" value="Email" />
<controlProperty name="ErrorMessage" value="" />
</validator>
CpAttributeSwitch
<property id="ContentType">
<value>02</value>
<attribute name="Content Type" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpAttributeSwitch" type="Centralpoint.Web.UI.Controls.CpAttributeSwitch">
<controlProperty name="RepeatDirection" value="Horizontal" />
<controlProperty name="RepeatColumns" value="0" />
<listItem value="01:cfrContentHtml" index="0">HTML</listItem>
<listItem value="02:cfrContentText" index="1">Plain Text</listItem>
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
The attribute switch works in conjunction with more than one attribute further down in your XML configuration document. Notice the example above indicates the value of the listItems as cfrContentHtml and cfrContentText. Each attribute to which you refer in your attribute switch must be prefixed with the "cfr" notation. The "Advertisers" module and the "Forms" module have good examples of this item.
CpAudienceSelector
<property id="Audiences">
<value>bf7bb52f-eae7-4d5a-bd20-6849d0260c80</value>
<attribute name="Audiences" isEnabled="true" isVisible="true" allowScripts="false">
<headerText>Audiences will be used for console filtration only</headerText>
<control id="CpAudienceSelector" type="Centralpoint.Web.UI.Controls.CpAudienceSelector" />
</attribute>
</property>
Take note that there is a headertext node in this property. It determines text that will appear just above the audience selector control within the console. Nearly every module in the console contains an audience selector.
CpColorPicker
<property id="BackgroundColor">
<value>#FFFFFF</value>
<attribute name="Background Color" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpColorPicker" type="Centralpoint.Web.UI.Controls.CpColorPicker">
<controlProperty name="ToolTip" value="" />
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
CpDataListBox
<property id="SiteMapItems">
<value />
<attribute name="Navigation Items" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpDataListBox" type="Centralpoint.Web.UI.Controls.CpDataListBox">
<controlProperty name="FilterAudiences" value="true" />
<controlProperty name="FieldsClause" value="InheritValue" />
<controlProperty name="SearchableFields" value="InheritValue" />
<controlProperty name="NoResultsText" value="No records were found." />
<controlProperty name="SelectionMode" value="Multiple" />
<controlProperty name="NavigationItemSystemName" value="SiteMap" />
<controlProperty name="EmptyItemText" value="" />
<controlProperty name="TableName" value="InheritValue" />
<controlProperty name="ScrollHeight" value="171" />
<controlProperty name="ShowHeader" value="false" />
<controlProperty name="JoinClauses" value="InheritValue" />
<controlProperty name="Columns" value="InheritValue" />
<controlProperty name="WhereClause" value="" />
<controlProperty name="ShowSearch" value="InheritValue" />
<controlProperty name="OrderByClause" value="InheritValue" />
<controlProperty name="PageSize" value="100" />
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
A data list box is typically used to display site map items from the Site Architecture > Navigation module.
CpDateTimePicker
<property id="StartDate">
<value />
<attribute name="Publish Start Date">
<control id="CpDateTimePicker" type="Centralpoint.Web.UI.Controls.CpDateTimePicker">
<controlProperty name="Accuracy" value="Second" />
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
CpEditor
<property id="ContentHtml">
<value />
<attribute name="Content" isEnabled="true" isVisible="true" allowScripts="true">
<control id="CpEditor" type="Centralpoint.Web.UI.Controls.CpEditor">
<controlProperty name="UploadsSubFolder" value="" />
<controlProperty name="AllowResources" value="true" />
<controlProperty name="Configuration" value="Default" />
<controlProperty name="Height" value="" />
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
CpHyperlink
<property id="ViewPages">
<value>Click here to view all associated article pages.</value>
<attribute name="View Associated Pages" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpHyperLink" type="Centralpoint.Web.UI.Controls.CpHyperLink">
<controlProperty name="Target" value="" />
<controlProperty name="NavigateUrl" value="/Console/Module.aspx?sn=PubPages&keywords={{0}}&match=Phrase&fields=cprel_PubPages.Article" />
<controlProperty name="ImageUrl" value="" />
<controlProperty name="NavigateUrlReplacementTextControlPath" value="../../../../../cfProperties/cfrDataId/clblDataId" />
<controlProperty name="ToolTip" value="" />
</control>
</attribute>
</property>
CpKeywordListBox
<property id="State">
<value />
<attribute name="State" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpKeywordListBox" type="Centralpoint.Web.UI.Controls.CpKeywordListBox">
<controlProperty name="KeywordListId" value="ef96d94f-5a0f-4a72-a776-843bb32348a9" />
<controlProperty name="PleaseSelect" value="Please Select..." />
<controlProperty name="SelectionMode" value="Single" />
<controlProperty name="ToolTip" value="" />
</control>
</attribute>
</property>
CpKeywordRadioButtonList
<property id="AutoUpdateGeoCodes">
<value>1</value>
<attribute name="Auto Update Geo Codes" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpKeywordRadioButtonList" type="Centralpoint.Web.UI.Controls.CpKeywordRadioButtonList">
<controlProperty name="KeywordListId" value="c52d9d0d-09f4-4547-96b0-0850f7fade47" />
<controlProperty name="RepeatDirection" value="Horizontal" />
<controlProperty name="RepeatColumns" value="0" />
</control>
</attribute>
</property>
CpListBox
<property id="Roles">
<value>87d65c27-6e78-4e5c-b423-78d47d4f2768</value>
<attribute name="Roles">
<control id="CpListBox" type="Centralpoint.Web.UI.Controls.CpListBox">
<controlProperty name="SelectionMode" value="Multiple" />
<controlProperty name="TableName" value="cpsys_Roles" />
<controlProperty name="TextField" value="dbo.cpsys_Roles.[Name]" />
<controlProperty name="ValueField" value="dbo.cpsys_Roles.RoleId" />
<controlProperty name="Filter" value="dbo.cpsys_Roles.IsDataRole = 1" />
<controlProperty name="PrefixFields" value="false" />
</control>
</attribute>
</property>
CpModuleListBox
No sample available
CpRadioButtonList
No sample available
CpTaxonomySelector
<property id="Taxonomy">
<value />
<attribute name="Taxonomy">
<control id="CpTaxonomySelector" type="Centralpoint.Web.UI.Controls.CpTaxonomySelector" />
</attribute>
</property>
CpTextArea
<property id="ContentText">
<value />
<attribute name="Content" isEnabled="true" isVisible="true" allowScripts="true">
<control id="CpTextArea" type="Centralpoint.Web.UI.Controls.CpTextArea">
<controlProperty name="ToolTip" value="" />
<controlProperty name="ReadOnly" value="false" />
<controlProperty name="Wrap" value="true" />
<controlProperty name="Height" value="295" />
</control>
<validator id="CpRequiredFieldValidator" type="Centralpoint.Web.UI.Controls.CpRequiredFieldValidator" />
</attribute>
</property>
CpTextBox
<property id="CpScript">
<value />
<attribute name="CpScript" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpTextBox" type="Centralpoint.Web.UI.Controls.CpTextBox">
<controlProperty name="Width" value="" />
<controlProperty name="AllowCopy" value="true" />
 
Custom delimiters in Data Transfer
Unfortunately, oledb connection completely ignores any custom delimiter.
Our solution for this problem involves some manual setup.
You will need to add a Schema.ini file, which needs to be in same folder as the file you are trying to import.
Example:
[NAME_OF_YOUR_FILE.txt]
Format=Delimited(|)
ColNameHeader=True
MaxScanRows=1000
Character=OEM
The first entry in Schema.ini is always the name of the text source file enclosed in square brackets.
The following example illustrates the entry for the file Sample.txt: [Sample.txt]
Format: The Format option in Schema.ini specifies the format of the text file.Format=Delimited(custom character)
ColNameHeader: Defines if the file contains headers
MaxScanRows: How many rows in the file are scanned.
Character: You can select from two character sets: ANSI and OEM. The following example shows the Schema.ini entry that sets the character set to OEM: Character=OEM
If you have multiple files you will need to import, they will need to be in different folders.
Click here to download template for Schema.ini
If the content of the column is being truncated.
That means that the Jet database engine might not correctly determine the data type of each column, which could result in data truncation. In that case, you can use the Schema.ini file to specify the format of text data when you're using the Microsoft Jet database engine to import or link to the data.
Especially pay attention to the MaxScanRows setting in the Schema.ini file. This setting scans rows to determine the data type and size of that column. If it is set to a low number, the Jet database engine might not correctly determine the data type of each column, which could result in data truncation.
Here's an example of a Schema.ini file for a CSV file:
[YourFileName.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0
CharacterSet=OEM
Col1=ID Long
Col2=Name Text
Col3=Age Long
Col4=Salary Double
In this example:
• YourFileName.csv is the name of your CSV file.
• Format=CSVDelimited specifies that the file is a CSV file.
• ColNameHeader=True indicates that the first row of the file contains column names.
• MaxScanRows=0 tells the driver to scan all rows (not just a subset) to guess the data type of each column.
• CharacterSet=OEM specifies the character set. OEM is a common choice for English language Windows operating systems.
• Col1=ID Long, Col2=Name Text, Col3=Age Long, Col4=Salary Double define the columns in the file. Each column is given a name and a data type (Long, Text, Double).
Please replace YourFileName.csv and the column definitions with your actual file name and columns.
Dashboard Modules
Dashboard Modules allow you to define modules you want your users to update from the FRONT of the website (instead of the Client Console). This involves two different components, FORMS which need to be set up, which are then referenced by the Dashboard Modules. Dashboard Modules works with the values found in ADMINISTRATORS, to determine which modules users have access to, including their personalization settings (like how many records per page view, and in what order). This filtration also allows for the ADMINISTRATOR to only manage content relative to the AUDIENCES and ROLES that he or she has access to. VIDEO BELOW
STEP ONE. Set up the form. These forms should already be found within the TEMPLATE GALLERY, and are faster to set up using these helpful guides. The template Gallery contains pre defined forms for NAVIGATION, NEWS, EVENTS, and GENERIC ENHANCED A - I. Any one of these could be used as a guide to set up a custom form should you need to do so. NOTE: Each of these forms must have a unique DEFAULT VALUE OR GROUP, and also maintain a unique REDIRECT Link. This is used to return the user back to the default grid view, when done editing, adding new, or deleting their records.
STEP TWO. Once these forms are set up, you will need to create DASHBOARD MODULE records which relate to these forms. Again, these default DASHBOARD MODULE records should be found in the TEMPLATE GALLERY, for you to release. You will need to DEFINE THE PATH of the module, for each form, and the CPScript provided, is then managed either on a Navigation page (or within a Dynamic Tab, if provided as a menu). It is important to ADD THE DEFAULT VALUE OR GROUP (FROM THE FORM) to the tail end of this CPScript (FROM DASHBOARD MODULES) to prevent any confusion from within the Dynamic Tabs. ADDITIONAL NOTE: To take full advantage of the EDIT/RELEASE/ON HOLD Icons (served from the Design/Styles Module, and if not uploaded, they will appear as hard coded), PLEASE BE SURE TO ADD: DisplayStatus='true' and DisplayAudiences='true' added to them to take advantage of the "Hold"/"Release" images and the audience display.
Also, the dashboard scripts in the current dashboard
need DisplayStatus='true' and DisplayAudiences='true' added to them to
take advantage of the "Hold"/"Release" images and the
audience display.
STEP THREE. Set up the Dynamic Tab (Newest JQuery UI Theme). You should find this DASHBOARD VIEW also in the TEMPLATE GALLERY, and is easiest to simply release it (as the forms and dashboard module records above already relate to it). Be sure to add your DASHBOARD MODULE SCRIPTS (Complete with DefaultValue or Group for each form you are calling to) while in HTML View. Adding them in DESIGN view can skew the results, adding unnecessary formatting to your scripts upon submission. Dynamic Tabs allows users to switch tabs without a page refresh. The cost for this UI enhancement is that all tabs are loaded every time a post back occurs. If you have many tabs containing large grids of data the performance of these post backs can be significantly affected. NOTE: IT IS IMPORTANT TO SET REMEMBER CLICKED TAB (jqtRememberClickedTab) to YES.
Data Broadcasts
* When copying Data Broadcast record make sure that Send attribute is set to never. Otherwise the module trigger will update Scheduled Next Run Date attribute and send a copy of the broadcast.
* The CAN-SPAM Act: A Compliance Guide for Business.
The CAN-SPAM Act, a law that sets the rules for commercial email, establishes requirements for commercial messages, gives recipients the right to have you stop emailing them, and spells out tough penalties for violations.
Despite its name, the CAN-SPAM Act doesn’t apply just to bulk email. It covers all commercial messages, which the law defines as “any electronic mail message the primary purpose of which is the commercial advertisement or promotion of a commercial product or service,” including email that promotes content on commercial websites. The law makes no exception for business-to-business email. That means all email – for example, a message to former customers announcing a new product line – must comply with the law.
Each separate email in violation of the CAN-SPAM Act is subject to penalties of up to $16,000, so non-compliance can be costly. But following the law isn’t complicated. Here’s a rundown of CAN-SPAM’s main requirements:
- Don’t use false or misleading header information. Your “From,” “To,” “Reply-To,” and routing information – including the originating domain name and email address – must be accurate and identify the person or business who initiated the message.
- Don’t use deceptive subject lines. The subject line must accurately reflect the content of the message.
- Identify the message as an ad. The law gives you a lot of leeway in how to do this, but you must disclose clearly and conspicuously that your message is an advertisement.
- Tell recipients where you’re located. Your message must include your valid physical postal address. This can be your current street address, a post office box you’ve registered with the U.S. Postal Service, or a private mailbox you’ve registered with a commercial mail receiving agency established under Postal Service regulations.
- Tell recipients how to opt out of receiving future email from you. Your message must include a clear and conspicuous explanation of how the recipient can opt out of getting email from you in the future. Craft the notice in a way that’s easy for an ordinary person to recognize, read, and understand. Creative use of type size, color, and location can improve clarity. Give a return email address or another easy Internet-based way to allow people to communicate their choice to you. You may create a menu to allow a recipient to opt out of certain types of messages, but you must include the option to stop all commercial messages from you. Make sure your spam filter doesn’t block these opt-out requests.
- Honor opt-out requests promptly. Any opt-out mechanism you offer must be able to process opt-out requests for at least 30 days after you send your message. You must honor a recipient’s opt-out request within 10 business days. You can’t charge a fee, require the recipient to give you any personally identifying information beyond an email address, or make the recipient take any step other than sending a reply email or visiting a single page on an Internet website as a condition for honoring an opt-out request. Once people have told you they don’t want to receive more messages from you, you can’t sell or transfer their email addresses, even in the form of a mailing list. The only exception is that you may transfer the addresses to a company you’ve hired to help you comply with the CAN-SPAM Act.
- Monitor what others are doing on your behalf. The law makes clear that even if you hire another company to handle your email marketing, you can’t contract away your legal responsibility to comply with the law. Both the company whose product is promoted in the message and the company that actually sends the message may be held legally responsible.
* Those rules and regulations always change. For more information and latest version of the document please visit http://www.ftc.gov and seach for CAN-SPAM Act.
Soft bounces are when an email address is temporarily unavailable. Maybe the recipient’s server was down, or just too busy. You generally don’t have to do anything—Data Broadcast retries delivering a reasonable, non-server-annoying amount of times, and if it still gets rejected, we keep that email address on your list for the next campaign. It’s only if an email address soft bounces 5 campaigns in a row that we clean it off your list for good.
Hard bounces mean an email address was non-deliverable. It’s gone. Deleted. Doesn’t exist anymore, never existed in the first place, whatever. Lost cause. These get removed from your list by Data Broadcast immediately. That’s because if you try resending to these emails, you could get blocked by that server (they track who keeps sending emails to bad addresses).
Hard bounces are recorded immediately in the broadcast messages table as true bounce backs. Soft bounces are recorded in the broadcast messages table as bounce backs after five failures to send.
RecipientInfo
This script displays the values for current user.
[cp:scripting key='RecipientInfo' attributeSystemName='DisplayName' /]
| Property |
Description |
| attributeSystemName |
The id of the item in the Configuration/Properties collections. It's also supports following attributes:UserName,UserId,IntegrationId,DisplayName. |
MessageInfo
This script returns values of the current message.
[cp:scripting key='MessageInfo' attributeSystemName='FromAddress' /]
| Property |
Description |
| attributeSystemName |
The id of the item in the broadcast record. Example: FromAddress, FromName, DataId or MessageId, Created or CreateDate, BroadcastId, ScheduledLastRunDate and all the Properties which are all the properties, configuration and attributes if source has those. |
CurrentDate
The Current Date cp script uses the creates the current date/time in the correct Time Zone using specified formats.
[cp:scripting key='CurrentDate' Format='MM-dd-yyyy'/]
| Property |
Description |
| Format |
These are the formats that will format the current date. You can combined different abbreviations together to form unique Date Formats.
| Format Value |
Example |
| MM/dd/yyyy |
04/17/2012 |
| MM-dd-yyyy |
04/17/2012 |
| MM/dd/yyyy hh:mm:ss tt |
04/17/2012 01:59:06 PM |
| MM-dd-yyyy hh:mm:ss tt |
04-17-2012 01:59:06 PM |
| hh:mm:ss tt |
02:05:15 PM |
| ddd |
Tue |
| dddd |
Tuesday |
| MMM |
Apr |
| MMMM |
April |
| yy |
12 |
| yyyy |
2012 |
|
| AddDays |
This optional attribute can be a positive or negative number and will add or subtract that many days from the current date. |
Reference Examples for Commonly Used Scripts in Broadcast are:
[cp:scripting key='RecipientInfo' attributeSystemName='ContactTitle' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactFirstName' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactMiddleName' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactSuffix' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactAddress' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactCity' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactState' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactHomePhone' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactCellPhone' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactOfficePhone' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactCompany' /]
[cp:scripting key='RecipientInfo' attributeSystemName='ContactCompanyPosition' /]
Example of HTML Used for Unsubscribe links (instead of the unsubscribe images) to paste into the bottom of Email table.
<table id="Table1">
<tbody>
<tr>
<td colspan="2">If you no longer wish to receive our e-mail(s), please click one of the buttons below.</td>
</tr>
<tr>
<td><a href="/Modules/DataBroadcast/Subscriptions.aspx?mid="> Unsubscribe from this Broadcast </a></td>
<td><a href="/Modules/DataBroadcast/Subscriptions.aspx?mid=&bid="> Completely Unsubscribe from all Broadcasts</a></td>
</tr>
<tr>
<td colspan="2"><a href="/Modules/DataBroadcast/ViewMessage.aspx?mid=">Trouble viewing? Click to open in browser.</a></td>
</tr>
</tbody>
</table>
Q&A
How Email Email Broadcast tracks open emails.
When email is sent the small image is embed with unique Id of the broadcast into the email body.
When someone reads his mail, with images enabled, the email-client will send a request to to load the image, passing that unique Id as a parameter.
Our handler on the server will check the id parameter and record that emails was opened.
How Email Email Broadcast tracks clicks.
Every link in the broadcast will be replaces with reference to click.aspx and unique Id of the broadcast. When link is clicked click.aspx will parse those parameters and record the click in cpsys_ClicksLog table.
Email validation status codes
When completed, email validation snapshots bring one or more validation entries along with their email validation statuses. Verifalia defines several different statuses, where every value signals a successful validation or a particular issue.
All new unknown statuses will be threaten as undetermined results, for future compatibility.
Generic status codes
Syntax status codes
UnmatchedQuotedPair
A quoted pair within a quoted word is not closed properly.
UnexpectedQuotedPairSequence
An unexpected quoted pair sequence has been found within a quoted word.
InvalidWordBoundaryStart
A new word boundary start has been detected at an invalid position.
InvalidCharacterInSequence
An invalid character has been detected in the provided sequence.
UnbalancedCommentParenthesis
The number of parenthesis used to open comments is not equal to the one used to close them.
DoubleDotSequence
An invalid sequence of two adjacent dots has been found.
InvalidLocalPartLength
The local part of the e-mail address has an invalid length.
InvalidFoldingWhiteSpaceSequence
An invalid folding white space (FWS) sequence has been found.
AtSignNotFound
The at sign symbol (@), used to separate the local part from the domain part of the address, has not been found.
InvalidEmptyQuotedWord
An invalid quoted word with no content has been found.
InvalidAddressLength
The email address has an invalid total length.
DomainPartCompliancyFailure
The domain part of the email address is not compliant with the IETF standards.
DNS status codes
SMTP status codes
SmtpConnectionTimeout
A timeout has occured while connecting to the mail exchanger which serves the e-mail address domain.
SmtpConnectionFailure
A socket connection error occured while connecting to the mail exchanger which serves the e-mail address domain.
Mailbox status codes
MailboxDoesNotExist
The mailbox for the e-mail address does not exist.
MailboxConnectionFailure
A connection error occurred while validating the mailbox for the e-mail address.
LocalSenderAddressRejected
The external mail exchanger rejected to accept messages from Verifalia.
MailboxValidationTimeout
A timeout occured while verifying the existence of the mailbox.
MailboxTemporarilyUnavailable
The requested mailbox is temporarily unavailable (perhaps it is over quota). Please note that Verifalia validates email addresses in multiple passes and every temporary condition is checked for up to 20 minutes before having this status applied.
Data Cleaner
Data Cleaner
Data Cleaner - Enrich Metadata, Classification & more with Data Governance rules
Data Cleaner (or Data Governance) allows you to manage Data Governance & Metadata rules to enhance your content. These tools may be used simply to rewrite common misspellings upon submission. They may also be used to enrich metadata or taxonomy, allowing all records containing the word apple to be tagged to fruit, trees and food. It may also be used to search the contents for any file, uploaded record or imported data for certain values, in which to reclassify it's security disposition or to alter roles....governing who will see the data. Data cleaner can deeply mine your records to determine what is found within, and then assign, append or change those values automatically. Enabling records and module properties that relate to this module may lead to overwritten or lost content. Creating a large number of records in this module may also cause the submission of records take significantly longer to complete. It is to be used at your own risk. If records exist in the target module before the module property is enabled or data cleaner records are added they will not apply to those records until the next time they are submitted. Tools > Re-Submit All Module Records can be used to resubmit all existing records.
Types of Data Transformation which are supported and the required fields needed for each:
- STRUCTURED DATA SOURCES SUPPORTED
- Sharepoint -Source Site URL, Title, List Title, Username, Password
- Oracle -Connection String/table name, any query or filter (credentials)
- SQL -Connection String/table name, any query or filter (credentials)
- Office 365- (Ondrive) Authorization, Source Folder (Office365 file Selector), Source Recursive (y/n), Source End Point (bulk or changes)
- OLEDB - Connection String/table name, any query or filter (credentials)
- ODBC - Connection String/table name, any query or filter (credentials)
- XML- ReadXML -XML Source (path to xml), Available tables and columns, Source Table Index
- XML- CpCollection –Source XML (path to xml), Default File, Source Directory, Number of Files to select, XSLT
- Delimited TXT (oledb)– Source Directory, Source Delimiter used, Source Text Qualifier, Source Header Row, Source Select Command
- Delimited TXT (Stream)– Source Directory, Source Delimiter used, Source Text Qualifier, Source Header Row, Source Select Command
- Active Directory – (Used to build employee directories typically) – Directory Path, Filter
- Excel – Source File (path to excel, if not uploaded into centralpoint), Source Header row, Source Select Command (if any)
- RSS- Source Feed URL (Web path to RSS Feed), Feed type (atom or rss)
- Access- Source File (Path), Source Select Command (query)
- Office 365 – Source Authorization (Authorize), Source Folder, Source is Recursive, Source End Point
- Custom Provider – Typically used when ingesting from a WebAPI/Web Services – Source Type, Source Parameters (Custom covers virtually any configuration) wherein certain security considerations or custom methods must be passed in order to authorize or encrypt.
- Centralpoint (Modules, Audiences, Taxonomy, Roles) – This is used when transforming data Centralpoint to Centralpoint or to an outside system
- UNSTRUCTURED
- File path (and/or credentials) to spider (Network drive, web based drive (onedrive- Source Directory, Source Pattern, Source Options
When to consider INDEXING vs. INGESTING Data using Centralpoint Data Transformation
- Centralpoint supports both indexing or ingesting data. This is because you will want a federated search against all records, but need to preserve where some records currently live. In another case, you may need to have a new system of record or home to MOVE records into Centralpoint.
- You may want to avoid duplication of your records
- You may may need to consider the size of certain files (like CAD, Hi resolution images, etc.)
- You may need to consider the security of the file paths in which your files live today and user’s network accessibility to them.
- Indexing vs. Ingesting– The difference is whether you want to leave the record were it is found (to avoid duplication) in order to make it search able within Centralpoint, or whether you want to sunset an old system, where the new record will now live in Centrapoint as it’s new home. When creating your data transformation routine, the difference will be when field mapping ALTERNATIVE URL. Alternative URL is only used when indexing, allowing the path to record to be recorded in centralpoint (as well as the enrichment), wherein the user will be returned to the original source, should they have the access to see the record. If you are intending to move the record to Centralpoint as the new system of record, then DO NOT USE Alternative URL, and make sure each record is moved during the ingestion (via an available) File Upload field.
- Security Consideration- Whether you are ingesting or indexing records using Data Transformation, always be sure to map the security roles from the system or path your scanning, in which to maintain who may see or access records (either indexed o ingested in Centralpoint)
Data Governance (Data Cleaner) considerations, when executing your Data Transformation.
Data cleaning is a separate module found under the Centralpoint Data Transformation suite of tools, which allow you to set up data governance rules which may work in unison with your Data Transformation routines.
- Keyword Generator – Used to enrich, supplement or add new keywords to any record, where certain values are is found (during mining).
- Example: If the word ‘apple’ is found, add keywords of ‘fruit, food, nutrition, pectin’ which will enhance search (searching fruit, and relate anything apple to any other record which may also relate to fruit or food)
- What it will ask you fo this routine : Search for?, attributes, add keywords
- Taxonomy Generator- Used to apply one or more metadata/taxonomy types when certain value(s) are found.
- Example: If the word ‘apple’ is found, apply to N-tiered taxonomy under Food/Fruit, which will enhance search (searching fruit, and relate anything apple to any other record which may also relate to fruit or food)
- What it will ask you fo this routine Search for?, case sensitive?, regex?, Taxonomy
- Attribute Generator – Used to apply new values in any field within one or more modules when certain value(s) are found (during mining).
- Example: If the term ‘Top Secret’ is found within any document, apply the value for the Role=Top Secret, to the ‘Roles’ attribute for any module. This will override the security roles for all documents which contain ‘Top Secret’
- What it will ask you fo this routine : Search for?, regex?, value to add, attribute, which modules?
- HTML Cleaner- Used to clean or scrub any HTML or code where certain values are found (during mining). Often used to fix older or bad HTML or convert bad characters from MS/Word or faulty HTML being ingested.
- Example: Should you need to replace any fault HTML, codes or characters which includes “<b>Apple<b>, and replace with <b>Apple</b> (correcting the original faulty html)
- What it will ask you fo this routine : Search for?, replacement type (html/text), replace with?
- Attribute HTML Cleaner- Used to apply new values into certain fields into specific modules whenever certain values are found (during mining)-allowing you to apply new values to any attribute as a result
- What it will ask you fo this routine : Search for? , replacement type (html/text), replace with, attribute to add, which modules?
- Data Triage- Used to redirect certain file types into certain modules.
- Example, when spidering a shared network drive or database, you may want to deposit all documents containing ‘Marketing’ references into a module designated for only Marketing, or place all Excel documents found into it’s own module. This is used to organize content by type (within separate modules)
- What it will ask you fo this routine: Search for?, regex (yes or no), searched attribute, destination modules, logging attribute
Keyword Generator
- This tool is currently supported in all Generic Enhanced modules. It can be enabled by setting the generic enhanced Keyword Generator module property to Enabled and entering the Keyword Generator attribute. This is the attribute which will have its value overwritten upon each submission with keywords generated from this module even if no keywords are generated.
- Submitting a record in the generic enhanced module will trigger a lookup of records in Data Transform > Data Cleaner with Type = Keyword Generator. Each of these records will be used to find matches in all attributes of the submitted record. When the Search For word is matched at least the number of times noted in the Threshold provided the Add Keywords will be added. If more than one data cleaner record returns keywords those keywords will be combined and the resulting set of keywords will overwrite the value of the attribute in the Keyword Generator Attribute module property. If no keywords are found the attribute will be overwritten with an empty value.
Taxonomy Generator
- This tool is currently supported in all Generic Enhanced modules. It can be enabled by setting the generic enhanced Taxonomy Generator module property to Enabled. By default the system appends generated taxonomy to existing selections, but setting Taxonomy Generator Overwrite = Enabled will overwrite the exist values in the Taxonomy attribute with the generated taxonomy upon each submission. Hide the Taxonomy attribute with Module Configuration > Hidden Attributes when enabling overwrites because manual selections will be overwritten.
- Submitting a record in the generic enhanced module will trigger a lookup of records in Data Transform > Data Cleaner with Type = Taxonomy Generator. Each of these records will be used to find matches in all attributes of the submitted record. When the Search For word is matched at least the number of times noted in the Threshold provided the Taxonomy will be added. If more than one data cleaner record returns taxonomy, that taxonomy will be combined and the resulting set of taxonomy will append to or overwrite the record's selected Taxonomy. If overwrites are enabled and no taxonomy is found the Taxonomy will be overwritten with an empty value.
Automated Taxonomy: Exclude Individual Records
Support to exclude individual records from using the Taxonomy generation tools begins in version 8.11.48
Record Exclusion Instructions
- Module Configuration Go to this location within the desired module. Add a custom attribute with a System Name of: IsUsingCpTaxonomyGenerator. This should be a CpKeywordRadioButtonList attribute as shown below. The values of this attribute are 0 and 1. When the attribute is set to 0 within the record, the Taxonomy attribute will not be populated from Data Cleaner records set to a type of Taxonomy Generator or Attribute Generator.
-
<property id="IsUsingCpTaxonomyGenerator">
<value>1</value>
<attribute name="Is Using Taxonomy Generator?" isEnabled="true" isVisible="true" allowScripts="false">
<control id="CpKeywordRadioButtonList" type="Centralpoint.Web.UI.Controls.CpKeywordRadioButtonList">
<controlProperty name="RepeatColumns" value="0" />
<controlProperty name="RepeatDirection" value="Horizontal" />
<controlProperty name="KeywordListId" value="c52d9d0d-09f4-4547-96b0-0850f7fade47" />
</control>
</attribute>
</property>
HTML Cleaner
- This feature is especially unpredictable. The result of the matches and replacements is dependent upon the validity of each regular expression as it relates to the content after the previous replacement occurs. There is no reporting or way to debug whether the regular expressions are executing as expected. This feature is to be used at your own risk and is not supported by Oxcyon.
- This tool is currently supported in the Procedure Manuals > Policies module. It can be enabled by setting the policies HTML Cleaner module property to Enabled.
- Submitting a record in the policies module will trigger a lookup of records in the Data Transform > Data Cleaner module with Type = HTML Cleaner. These records will be executed in order of priority executing regular expression replacements on the content.
Roles or Audiences
To set up data cleaner to assign (roles or audiences), please use this rule set below:
First, you will need to set up this statement to allow PUBLIC/EVERYONE records to be assigned as usual. Pay careful note to the exlusions in the Regex, as if you change those roles, you will ALSO need to change this condition.
NOT \bROLE 1\b|\(R1\) AND NOT \bROLE 2\b|//RO 2 AND NOT \bROLE 3\b AND NOT \bROLE 4\b AND NOT /ROLE 5 AND NOT \bROLE 6\b AND NOT \bROLE7\b|\bRole 7\b
Individual Rule set up for:
- Role 1: \bROLE 1\b|\(Role 1\)
- Role 2: \bROLE 2\b|//Role 2
- Role 3: \bROLE 3\b|\bRole 3\b
- Role 4: \bROLE 4\b
- Role 5: \bROLE 5\b
- Role 6: /ROLE 6
- Role 7: \bROLE 7\b
(\b denotes a regex word boundary)
PLEASE NOTE that you will need to utilize the attribute cleaner option and the value you place in the AddValue field will be the GUID of the Role/Audience, and the value you place in the Attribute field will be "Roles" (or "Audiences").
-
Data Sources
Understanding DataSource Architecture
Every Centralpoint DataSource consists of four distinct components that must work together. Understanding this architecture is critical to building effective DataSources.
| Component |
Purpose |
Location in Admin |
| SQL SELECT Command |
Retrieves data from the database |
DataSource → SQL tab |
| Template Content (Header) |
Wrapper HTML, table structure, scripts, registrations |
DataSource → Template tab |
| Item Content |
Repeating row/card template for each record |
DataSource → Item tab |
| Styles (CSS) |
Visual styling (prefer embedding in Template) |
DataSource → Styles tab |
Additionally, there is an Empty Item Content section for displaying a message when no records are found.
Critical Rules for DataSources
Rule 1: The Placeholder Requirement
The Template Content MUST include this exact placeholder or rows will NOT render:
ItemContent
❌ WRONG: [cp:ItemContent] — This will cause rows to silently fail
✅ CORRECT: ItemContent
If rows are not displaying, check this FIRST.
Rule 2: Attributes vs. Standard Fields — THE MOST IMPORTANT DISTINCTION
Most fields are actual database columns, but some are Custom Attributes or XQueries added to the Module Configuration. These will NOT be found directly in the SELECT command.
Attributes need to be called differently:
- In SQL: They come from
cpsys_DataCurrent.Attributes (included via JOIN)
- In Item Content: Use
cpsys_Attributes:NameOfField NOT simply NameOfField
They will NOT render unless you call them correctly.
How to Reference Each Field Type
| Field Type |
In SQL SELECT |
In Item Content (cp:scripting) |
| Standard Fields |
cprel_ModuleName.[FieldName] AS [FieldName] |
name='FieldName' |
| Attributes (Custom/XQuery) |
Included via cpsys_DataCurrent.Attributes JOIN |
name='cpsys_Attributes:FieldName' |
Rule 3: Embed CSS in Template Content
Prefer embedding styles within <style> tags inside the Template Content rather than using the separate Styles field. This keeps the DataSource compartmentalized and prevents CSS from leaking out to other page components.
Rule 4: No Server Module Tags
NEVER use module:* server tags in DataSource templates — they cause ASP.NET compilation errors.
Rule 5: ALWAYS Include Commented cp:scripting Patterns in SQL
The SQL SELECT command should include ALL potential cp:scripting filter patterns, even if commented out with the // prefix. This preserves the DataSource's flexibility — developers can simply uncomment the patterns they need rather than having to look up or recreate the syntax.
The // prefix comments out a cp:scripting tag — it remains in the code as a reference but does not execute.
Rule 6: Double-Check Field Types Before Rendering
Always verify whether a field is a standard field or an attribute. Use the appropriate cp:scripting syntax based on the field type. They will NOT render if called incorrectly.
Data Sources provide a powerful way to retrieve data from any source and put it on the front end of the web site anywhere. There are 2 Tabs for Data Sources: Attributes and Formatting.
Attributes
- System Title:
This is the title for the Data Source.
- Publish Start Date:
This is the Start Date for the Data Source.
- Publish End Date:
This is the End Date for the Data Source.
- CpScript:
After the record is saved, you can click back into the record and copy the CpScript it generates to put it anywhere where CpScripts are supported.
- Cache Duration:
This is the cache duration. If you're information tends to not change for long periods of time, you can set this to a longer time. Warning: any dynamic Data Source that uses attributes, taxonomies, query strings, etc cannot use cache. This will break what the Data Source will display.
- Data Source:
This is where the information will be retrieved from:
- Current Web Site:
This is the current Centralpoint Database.
- Module Cache:
This caches a Module Data Source based on the Module(s) and the specific type of caching.It is not recommended to use the Cache Duration with this Caching type.
- Modules:
Please select the Module(s) you will be using in the Select Command.
- Audience Specific:
If this is enabled, please use this System Filter CpScript (IsEnabled = 1 AND ((DataId IN (SELECT dbo.cpsys_DataCurrentInAudiences.DataId FROM dbo.cpsys_DataCurrentInAudiences WHERE (dbo.cpsys_DataCurrentInAudiences.AudienceId IN ('5f2d099d-a0df-4e62-bb88-93662c972ae0', 'bf7bb52f-eae7-4d5a-bd20-6849d0260c80') AND IsCda = 1))))). Note: some may have to be set to true if you using other specific types of cache.
- Role Specific:
If this is enabled, please use this System Filter CpScript (IsEnabled = 1 AND (DataId IN (SELECT cpsys_DataCurrentInRoles.DataId FROM cpsys_DataCurrentInRoles WHERE (cpsys_DataCurrentInRoles.RoleId IN ('782aa391-8922-4be1-9f1b-345be35b726b', '87d65c27-6e78-4e5c-b423-78d47d4f2768'))))). Note: some may have to be set to true if you using other specific types of cache.
- Date Specific:
If this is enabled, please use this System Filter CpScript (IsEnabled = 1 AND EndDate >= '2026-02-14T22:22:02' AND ((DataId IN (SELECT dbo.cpsys_DataCurrentInAudiences.DataId FROM dbo.cpsys_DataCurrentInAudiences WHERE (dbo.cpsys_DataCurrentInAudiences.AudienceId IN ('5f2d099d-a0df-4e62-bb88-93662c972ae0', 'bf7bb52f-eae7-4d5a-bd20-6849d0260c80') AND IsCda = 1))))) and make sure you have StartDate and EndDate in the SELECT part of the Select Command. Note: some may have to be set to true if you using other specific types of cache.
- Connection String:
You can use a Connecton String to retrieve data from any source:
- Database Provider:
These are the Databases that Centralpoint supports with this option.
- Connection String:
This is the connection string for the database. All four options have different versions of the connection string.
- RSS Feed:
This will pull information from an RSS Feed. The fields available for the Formatting Tab are Title, Date, Link, and Content.
- Url:
This URL for the RSS Feed.
- Number Of Items:
This is the number of records to pull from the Feed. There is no SELECT Command for this option.
- ATOM Feed:
This will pull information from an ATOM Feed. The fields available for the Formatting Tab are Title, PublishedDate, UpdatedDate, Link, and Content.
- Url:
This URL for the RSS Feed.
- Number Of Items:
This is the number of records to pull from the Feed. There is no Select Command for this option.
- Custom Source:
This is a advanced option and will require a developers to create Custom method which will have to return an DataTable.
The fields available for the Formatting Tab in the Example of the Custom Source are: Title, AutoNumber, DataId, AudienceSystemName and Parameters.
- Twitter:
This will pull information from an Twitter User Timeline. The fields available for the Formatting Tab are Body, CreateDate, RetweetCount, FavoriteCount, Source.
In order to use the Twitter feed you will need to go to https://dev.twitter.com/ and log in using your Twitter crendentials. In the upper right hand
corner there is a blue tab, hover of that and click 'My Applications'. This will take you to https://apps.twitter.com/. Click the button 'Create New App'.
You will be taken to a page called 'Create an application' where you need to fill out information about the application. Name and Description should be descriptive like 'Main Site Twitter Source'.
The Website and Callback URL must be your website's Home Page ie 'http//www.mysite.com'. Click 'Yes I agree' at the bottom and push the button 'Create Your Twitter Application'. This will take you to
to the https://apps.twitter.com/ page where you can find your information for the Twitter parameters in the API Keys section. At the bottom of this page, push the
button Create Access Token. This will allow Centralpoint to request information from Twitter on your behalf.
- Slack:
Please use the Slack Wizard to guide you through this Data Source.
- Facebook:
Please use the Facebook Wizard to guide you through this Data Source.
- Yammer:
Please use the Yammer Wizard to guide you through this Data Source.
- Select Command:
This is the Query that is used to pull the data from a Data Source. You can use the Select Comman Builder to build a Select Command from any module. It is a wizard that lets you selects fields from a module.
- Supports Data Broadcast Member Profiles:
If you want to filter by MemberProfile add: FilterByMemberProfile='true' to your DataSource cp:script.
- Filter Member Profiles By:
If you select to filter MemberProfiles by one or all of those fileds(DataId, Keywords or Taxonomy), then those fields must be included in the SelectCommand.
Formatting
Formatting Options give you the option to format your information in a certain way.
- Data List:
The Data List puts the infomation out in a table format.
This is the basic representation of the Data List. These are its attributes:
- Repeat Columns:
How many columns will the items display in.
- Repeat Direction:
This is the direction the List will repeat, either horizontal, or vertical.
- Width:
Controls the width of the container that will hold your content. You can specify a percentage or pixel based width.
- Padding:
This is the overall padding for the Data List in pixels.
- Empty Item:
If Data Source Script return no records and Empty Item Content is selected the Header/Footer Content will be included and text from Empty Item Content displayed, otherwise, it will not.
- Error Message
This will output an red error message.
- Empty String
This will output nothing on the front end.
- Empty Item Content
This will output what is in the RTF Editor.
- Header Content:
This will be placed at the top of the Data List output.
- Item Content:
This is where the information will be displayed.
- Alternating Item Content:
This is display alternating to the Item Content if there is a value in this RTF Editor.
- Footer Content:
This will be placed at the bottom of the Data List output.
- Custom Styles:
This is optional custom CSS that will be added to the Data List output.
- Image Slideshow:
This is the basic representation of the Image Slideshow option. Here are the additional fields to change the functionality:
- Slideshow Width:
This is the entire slideshow width in pixels.
- Slideshow Background Color:
This is the background color for the entire slideshow.
- Slideshow Padding Top:
This is the padding top for the entire slideshow.
- Slideshow Padding Bottom:
This is the padding bottom for the entire slideshow.
- Slideshow Padding Left:
This is the padding left for the entire slideshow.
- Slideshow Padding Right:
This is the padding right for the entire slideshow.
- Main Gallery Height:
This is the main gallery region height.
- Main Gallery Padding Top:
This is the main gallery region padding top.
- Main Gallery Padding Bottom:
This is the main gallery region padding bottom.
- Display Main Gallery Previous / Next Images:
This will show the Left and Right Main Image Gallery Images.
- Main Gallery Left Arrow:
This is the image for the left arrow of the gallery. It will have a default image if none is selected.
- Main Gallery Right Arrow:
This is the image for the right arrow of the gallery. It will have a default image if none is selected.
- Caption Background Color:
The caption is made from the Define Title Field and Define Content Field 1 columns. This is the background color for the gallery caption popup.
- Caption Text Color:
This is the text color for the gallery caption popup.
- Caption Opacity:
This is the opacity of the caption.
- Thumbnail Height:
This is the height of the thumbnail. The width will automatically be generated.
- Thumbnail Opacity:
This will set the opacity for the thumbnails.
- Thumbnail Padding Top:
This is the padding top for the Thumbnails region.
- Thumbnail Padding Bottom:
This is the padding bottom for the thumbnail region.
- Display Thumbnail Previous / Next Images:
This will display the thumbnail previous and next images.
- Thumbnail Tooltip:
This will show a tooltip for the Thumbnail based on a column.
- Thumbnail Tooltip Column Name:
This is the Column name for the Thumbnail Tooltip contents.
- Navigation Bar Text Color:
This is the text color for the image count and the start and stop links (the Navigation Bar).
- Navigation Padding Top:
This is the padding top for the Navigation bar.
- Navigation Padding Bottom:
This is the padding bottom for the Navigation bar.
- Navigation Padding Left:
This is the padding left for the Navigation Bar.
- Navigation Padding Right:
This is the padding right for the Navigation Bar.
- Auto Start:
This will start the slideshow automatically.
- Slide Show Effect:
This is the effect for the slide show.
- Animation Speed:
This is the speed of the animation effect.
- Auto Play Duration:
This is the time in which images switch when the slide show is running.
- Hide Navigation Bar:
This will hide the image numbers and the start stop links.
- Hide Thumbnails:
This will hide the thumbnails from the slideshow.
- Hide Main Gallery:
This will hide the main image part of the slideshow.
- Paged Data List
This is the basic representation of the Paged Data List. These are its attributes:
- Limited Records:
It is highly recommended that you use a SELECT TOP in your select statement and you select no more that 500 records. By choosing yes you have agreed to limit your record count.
- Navigation Location:
The location of the navigation. Options are Top and Bottom of information.
- Header Content:
This is the header of the datasource. This will come after the pager if the pager is at the top.
- Item Content:
This will be in each page. To reference Fields in Data Source use placeholders.
- Alternating Item Content:
This is the alternating item content.
- Footer Content:
This is the footer of the datasource. This will come before the pager if the pager is at the bottom.
- Records Per Page:
This is the number of records in the item content that will display per page.
- Total Page Links:
This is the total number of page number links that will display in the navigation.
- Background Color:
Background color of navigation.
- Text Color:
The text color of previous, next, and page number counts.
- Previous Link Text:
This the text of the previous link.
- Next Link Text:
This the text of the next link.
- Page Inactive Text Color:
The color of inactive page number links.
- Page Inactive Background Color:
The background color of inactive page number links.
- Page Active Text Color:
The color of active page number link.
- Page Active Background Color:
The background color of active page number link.
- Text Decoration:
The text decoration style of the page number links.
- Width:
The width of the navigation element.
- Height:
The height of the navigation element.
- Minimum Page:
If there is less than or equal to this number, the pager will be hidden. It defaults to 10.
- Raw HTML
This is a representation of what the Raw HTML can do. These are are its attributes and examples of how this was created.
- Empty Item:
This will be displayed if If Data Source Script return no records.
- Error Message
This will output an red error message.
- Empty String
This will output nothing on the front end.
- Empty Item Content
This will output what is in the RTF Editor.
- Styles:
This is the custom CSS that can be used for this option.
- Scripts:
This is the custom JavaScript that can be used for this option. Centralpoint supports JavaScript, jQuery, jQuery UI.
- Template Content:
This attribute is used to wrap HTML, CpScripts, or text around the placeholder. ItemContent The placeholder will get populated with the item content. This is an example from the image above:
<table>
<tbody>
<tr>
<th>ImageLink<th><ht>Title</th>
ItemContent
</tbody>
</table>
- Item Content:
To reference Fields in Data Source use placeholders. Column: Object reference not set to an instance of an object.. This is an example from the image above:
<tr><td>Column: Object reference not set to an instance of an object.</td><td>Column: Object reference not set to an instance of an object.</td></tr>
- Chart(Basic)
- Empty Item:
This will be displayed if If Data Source Script return no records.
- Error Message
This will output an red error message.
- Empty String
This will output nothing on the front end.
- Empty Item Content
This will output what is in the RTF Editor.
- Title Column Name
This is title column name in SELECT command. This will also show in the Legend as colors.
- Number of Value Columns
This is the number of value column names that the graph will represent. You will have 1 - 10 columns names to choose from from your SELECT command.
- Title
This is the title of the chart.
- JCChartType
These are the chart types for that you can display. There are extra attributes for each chart type.
- Bar
This is a basic representation of a Bar Chart.
- Bar Group Margin
This is the space around each group of bars in a bar chart.
- Bar Margin
This creates space around bars in the bar chart (added to both sides of each bar).
- Area
This is a basic representation of a Area Chart.
- Line Width
This is the width of the line in the area chart.
- Pie
This is a basic representation of a Pie Chart.
- Pie Margin
This is the space around outer circle of pie chart.
-
Data Sources > Template Content > JavaScript Extension
Data Sources > Template Content > JavaScript Extension
When using the command builder to create markup for a Data Source record, the
Template Content attribute contains default markup explained below.
JavaScript & CSS Files (Above Table HTML)
<link href="/Modules/DataSource/DataTablesJS/Styles.css?v=8.11.112" rel="stylesheet">
[cp:scripting key='RegisterUnmanagedScriptInclude' url='/Integrations/JQuery/Plugins/dataTables/cp_DataSources_Extender.js?v=8.11.112' /]
[cp:scripting key='RegisterUnmanagedScriptInclude' url='/Scripting/ModuleResults/Export/Scripts.js?v=8.11.112' /]
[cp:scripting key='ExtTable' targetId='dataSource_TUGI' bPaginate='true' sPaginationType='two_button' bFilter='true' bSort='true' bInfo='true' bLengthChange='true' iDisplayLength='100' bJQueryUI='false' bProcessing='true' aLengthMenu='10, 25, 50, 100, 250, -1' aaSorting='0,cpsys_Aposdesccpsys_Apos' asStripeClasses='' bAutoWidth='false' sScrollY='' hasSearchableColumns='1' skippedSearchableColumns='0' /]
[cp:scripting key='DataSourceExportButton' id='ExcelXml' type='ExcelXml' imagePath='/Integrations/Centralpoint/Resources/Icons/Microsoft_Excel.png' linkText='Export to Excel Xml Format' /]
- The <link> tag registers default styles for the UI created from the Data Source.
-
The RegisterUnmanagedScriptInclude CpScripts register system JavaScript plugin files to the page.
These extend functionality of the source plugin via DataTables.js
- The ExtTable CpScript registers the DataTables.js source plugin files.
-
The DataSourceExportButton outputs a button that downloads the results from the Data Source into a
XML file that can be imported into Microsoft Excel.
Table HTML
<table id="dataSource_XBMN" align="left" style="max-width: none;">
<thead>
<tr>
<th><input type="checkbox" class="select-all"></th>
<th>StartDate</th>
<th>Title</th>
<th>DataId</th>
<th>AutoNumber</th>
</tr>
</thead>
<tbody>
[cp:placeholders key='ItemContent' /]
</tbody>
</table>
- The number of columns has been reduced here and will reflect the relational columns in the table selected.
-
The first column will always contain the checkbox input. This allows users to select rows and download files
referenced in the record's attributes or use the selected values for other purposes.
-
The CpScript, [cp:placeholders key='ItemContent' /], is where the dynamic content from the
Item Content attribute is inserted.
Search Taxonomy HTML (Below Table)
<div class="cp-dtjs overlay">
<div data-filter="taxonomy">
<h2>File Types</h2>
[cp:scripting key='FormRadioButtonList' id='TaxonomyList1' selectionmode='Multiple' repeatlayout='Flow' repeatColumns='4' tablename='cpsys_Taxonomy' filter='cpsys_Taxonomy.ParentTaxonomyId = cpsys_Apos8982210e-0447-47d6-9c09-4ad5014e30c6cpsys_Apos' valuefield='SystemName' textfield='Name' /]
<hr>
<h2>Document Types</h2>
[cp:scripting key='FormRadioButtonList' id='TaxonomyList2' selectionmode='Multiple' repeatlayout='Flow' repeatColumns='4' tablename='cpsys_Taxonomy' filter='cpsys_Taxonomy.ParentTaxonomyId = cpsys_Apos10ef4b4d-f913-4447-94fd-11dc71a4b157cpsys_Apos' valuefield='SystemName' textfield='Name' /]
<hr>
<h2>Terms</h2>
[cp:scripting key='FormRadioButtonList' id='TaxonomyList3' selectionmode='Multiple' repeatlayout='Flow' repeatColumns='4' tablename='cpsys_Taxonomy' filter='cpsys_Taxonomy.ParentTaxonomyId = cpsys_Apos39421aa9-99ad-4dfe-8931-3f95ab57b74ccpsys_Apos' valuefield='SystemName' textfield='Name' /]
</div>
<button type="button" class="srch-tbl">Search Table</button>
</div>
- This HTML provides users a means to filter the table by Taxonomy.
-
To complete the setup, the FormRadioButtonList CpScripts need updated with Taxonomy in the site
that is associated to data being queried.
-
This requires that a QueryStringTaxonomyFilter CpScript is included in the SQL query via the
Select Command attribute in the Data Source. When using the Select Command builder, this is
provided in the SQL by default.
-
The default example provides users three tiers of taxonomy that when used would filter results by File Types,
Document Types, and Terms. Records that match the taxonomy items selected will be returned.
-
When this setup is implemented properly, there will be a clickable element labeled Other Filters
that users may click that will show the taxonomy search controls.
Embedded JavaScript in HTML (Very Bottom)
<script type="text/javascript">
$('#dataSource_XBMN').cp_DataSourcesExtTable({{
onInitComplete: function () {{ }},
searchTermsLabel: "Search for:",
taxonomy: {{
hasSearch: true,
queryStringVariableName: "tax",
modalTriggerHtml: '<strong>Other Filters:</strong> <img src="/Integrations/Centralpoint/Resources/Icons/Hierarchy.png" alt="filters">',
resetButton: "Remove Filters",
noneSelectedMessage: "Please select at least one taxonomy item."
}},
dates: {{
hasSearch: true,
from: "From:",
to: "To: ",
placeholder: "mm/dd/yyyy",
searchButton: "Search",
resetButton: "Reset"
}},
download: {{
columnIndex: 0,
buttonHtml: 'Download Files',
attributes: ["FileUpload1", "FileUpload2", "FileUpload3", "FileUpload4", "FileUpload5", "Image", "Document"],
fileName: "Attachments",
selectedRowsControl: {{
hasControl: true,
unfilteredButtonHtml: "View Selected Rows",
filteredButtonHtml: "Clear Selected Filter"
}},
onChange: function (selectedIds) {{ }},
onLoadSelectedIds: function() {{ return []; }}
}}
}});
</script>
cp_DataSourcesExtTable Configurable Properties
- onInitComplete: function () callback after the extender plugin has found the table and finished initialization
- searchTermsLabel when using the taxonomy search, the names of the searched items will be rendered above the table. This allows the bolded language to be changed in the following example: Search for: TaxonomyName1, TaxonomyName2
Taxonomy Properties
- hasSearch setting this to false will ensure the taxonomy search feature does not render. If this is set to true and the modalTriggerHtml does not render, it likely means that there are no checkboxes in the Search Taxonomy HTML. This feature prevents providing users an overlay with no options to search.
- queryStringVariableName should match the names used in the QueryStringTaxonomyFilter CpScript of the SQL query. This base name tax stored in the JavaScript property expects the names in the CpScript to be tax1, tax2, tax3 etc. Meaning the names in the CpScript are required to start at 1 and each subsequent name needs to be incremented by 1 as produced in the defaults explained here.
- modalTriggerHtml is the clickable HTML that triggers the search controls overly.
- resetButton is the text within the button HTML tag. This button shows after a user has filtered results by taxonomy.
- noneSelectedMessage is the alert presented to the user when they try to search within the overlay and no taxonomy is selected.
Date Properties
- hasSearch setting this to false will ensure the date search feature does not render.
- from the label text for the first date input.
- searchButton the text for the search button
- resetButton the text for the reset button. This buttons shows after a user has executed a date search
*IMPORTANT This feature requires QueryString CpScripts in the SQL with name='' values of fromDate and toDate. The Command Builder default SQL provides this.
Download Properties
- columnIndex the zero-based index of the column that holds the checkbox for rows in the table. Set this to -1 to disable this feature when the table is does not have a checkbox column. The defaults use the first column which is an index of 0 and allows users to move the checkbox to other columns if desired; which requires updating this value.
- buttonHtml is the text within the button HTML tag.
- attributes this defines the attribute system names within each selected record that contain file paths. These are the files included in the ZIP file downloaded to the user.
- fileName this is the name of the downloaded ZIP for the user when the button is clicked.
- selectedRowsControl.hasControl boolean property that determines if the selected rows filter button is rendered to the page. The default is false.
- selectedRowsControl.unfilteredButtonHtml inner HTML of the button tag the renders when the table is not filtered by selected rows.
- selectedRowsControl.filteredButtonHtml inner HTML of the button tag the renders when the table is filtered by selected rows.
- onChange: function (selectedIds) this is a callback function that occurs each time a checkbox is changed. This is commonly used to pass the DataIds to a hidden input. An example is below.
- onLoadSelectedIds: function () this is a callback function that occurs a single time when the plugin is initialized and provides a means to set selected DataId values. The system use for this is to ensure values are maintained when the plugin is used in a form as users may get stuck on a validator during postback. An example is below.
*IMPORTANT This value attribute within checkbox HTML of the table rows is required to use the DataId column. The HTML in this column should look like:
<input type="checkbox" value="e2ec3c7f-fc71-f011-807a-0050b6c0caf2" class="cp-file-download">
Callback Examples
onChange: function (selectedIds) {{
$('#cpsys_FormItem_cpsys_DefaultGroup_SelectedDataIds').val(selectedIds.join(', '));
}}
onLoadSelectedIds: function() {{
return $('#cpsys_FormItem_cpsys_DefaultGroup_SelectedDataIds')?.val()?.split(/[,\s]+/);
}}
Template Content vs Item Content: When to Use Each
Understanding the difference between Template Content and Item Content is essential for building effective DataSources.
| Component |
Purpose |
Renders |
| Template Content |
Wrapper HTML, table headers, scripts, CSS |
Once (at the beginning) |
| Item Content |
Repeating row/card template |
Once per database record |
Critical Requirement: The ItemContent Placeholder
Your Template Content MUST include this exact placeholder, or rows will NOT render:
ItemContent
This placeholder is where each Item Content template will be inserted for every database row. Without it, your DataSource will appear empty even if the SQL query returns data.
Displaying Data with CpScript Column Tags
The Column script is the primary way to display data in your Item Content. Here's how to use it for different field types.
Basic Column Usage
<!-- Display a standard field -->
Column: Object reference not set to an instance of an object.
<!-- Display a custom attribute -->
Column: Object reference not set to an instance of an object.
<!-- Display formatted date -->
Column: Object reference not set to an instance of an object.
<!-- Display with prefix text -->
Column: Object reference not set to an instance of an object.
<!-- Truncated description -->
Column: Object reference not set to an instance of an object.
<!-- Status with value replacement -->
Column: Object reference not set to an instance of an object.
Column Script Parameters
| Parameter |
Description |
Example |
name |
Column or attribute name (required) |
name='Title' |
format |
.NET format string with {{0}} placeholder |
format='By {{0}}' |
datatype |
Force data type: datetime, number, etc. |
datatype='datetime' |
default |
Value if column is empty |
default='N/A' |
truncate |
Max character length |
truncate='100' |
striphtml |
Remove HTML tags |
striphtml='true' |
replacetext |
Comma-separated values to find |
replacetext='1,2,3' |
replacewith |
Comma-separated replacements |
replacewith='Active,Pending,Archived' |
Custom Attributes Prefix: When accessing custom attributes (fields not in your SQL SELECT but stored in the Attributes XML), you MUST use the cpsys_Attributes: prefix. Example: name='cpsys_Attributes:CustomField'
-
Data Tables
The DataTables plugin uses a jQuery JavaScript library to transform a HTML table to an advanced table; providing features such as search capability, paginated results, and column sorting.
Centralpoint generates two type of sources: Static and Dynamic.
This method connects to an existing Data Source and applies the DataTable plugin to the table HTML in the Formatting tab of the Data Source record.
This method provides more flexibility with the table HTML format, but the disadvantage is that it retrieves the entire data set on the initial page load. The plugin hides a majority of the records retrieved and lets you search and paginate through the results.
The Static option works very similar to the original ExtTable CpScript, except that the HTML binds to the newer version of the DataTable plugin.
In the Formatting Tab you have Styles, Scripts, Template and Data Source Attributes.
Styles are used to add any custom styles to the page where Data Table will be displayed.
Scripts will add custom JavaScript to the page.
The Template attribute is used to format the table's HTML The placeholder CpScript will get populated with the DataSource content.[cp:placeholders key='DataSource' /]
Dynamic:
This method uses an AJAX model to call a Web API which returns JSON. The DataTable plugin uses the JSON result to generate the table's format.
This method has less formatting flexibility, but works great with larger data sets because it only retrieves (n) number of records at a time. Each time the result set changes by user's interacting with the table's search, pagination, or sorting; the Web API is called to return an updated result set.
The initial ordering of the results is based on data in the first column. The DataTable plugin only allows ordering and sorting on by columns which are in relation of the module.
Another performance benefit to the Dynamic option is that the search is executed through a server-side Full-Text Index search compared to a client-side text search that the Static option uses.
When a record is saved in the Data Table module, a corresponding Web API module record will be created or updated if the type attribute is set to Managed.
The corresponding Web API record name will be formatted as shown here: DataTables (Managed) - <<Name of the Data Table record>>
If the type attribute is set to Detached then you have to manage your Web API record manually. The order of the columns in Data table records and in WebApi has to match. The columns which are in webApi but not in DataTable have to be at the end of the Columns in WebApi record same as hidden columns.
* If you creating API record manually make sure the Result is set to Object
Formatting Tab
The Formatting Tab provides the following attributes: Custom Control, Styles, Scripts, and Template.
Custom Control
This control provides a user interface to configure and retrieve data for dynamic option.
-
The Hide/Show Available Columns link will display all available columns for the selected module.
Columns prefixed with cpsys_Attributes: are not in the table's relation and can't be used for the sorting.
-
Add Column Button will add new row with the selector of columns.
When you select the standard column option, the column names will be used in the table header as is.
One of the options in the selector is custom. When this option is selected you have control over the column names in the table header, and you may use Column CpScripts to retrieve content for that column.
The check box next to the row is to display that column in the table. Sometimes you may need to retrieve a column, but don't want to display the column on your page. In this case you may uncheck a checkbox and the column will not be displayed in the table. You can drag and drop rows to arrange the order of the table header.
To the right of the row there is a delete icon which would remove that row from data table.
Supported Scripts:
Dynamic Types
-
Managed: This type will generate or update a corresponding Web API record each time the Data Tables module record is saved.
**Important** Due to the behavior applied when "Managed" is selected, you will not be able to manually edit the corresponding Web API record. This is because manual changes made to the Web API record will be overwritten each time the Data Table record is saved.
-
Detached: This type provides flexibility to format and customize the corresponding Web API record.
**Important** This option should only be applied and managed by advanced users.
Data Tables plugin options: Work with both options Static and Dynamic types.
Minimum Number Of Characters:
How many characters need to be typed before search will be executed
Page Length:
Number of rows to display on a single page when using pagination. Default: 10
Search Enabled:
Enable or disable search (filtering) abilities.
Pagination Enabled:
Enable or disable table pagination
Sort Enabled:
Enable or disable ordering of columns
Length Menu:
Parameter allows you to readily specify the entries in the length drop down select list that DataTables shows when pagination is enabled.
Will let user to change number of records display per page.
Number of Pages in Pagination:
Number of pages control presented for pagination (forward and backward buttons with up to (n) page numbers in-between)
Scroll Vertical:
If enabled DataTables table body scrolling in the vertical direction.
Container Height attribute let you set Height in px or in vh(viewpoint height)
You can pass any information from the page DataTable page onto the API.
In order to do that you need to set the global Javascript variable _dataTablePageInformation with JavaScript object (key-value pairs).
Example:
var pageInfo = {{
PageAudience: "Main",
UserName: "development",
Roles: "Admin"
}};
_dataTablePageInformation = pageInfo;
Then you can use that information in the API by getting it from the placeholders.
Example:
[cp:placeholders key='PageAudience' /]
-
Data Transformation: Take Back Control Over Your Disparate, Siloed Information
Overview: The data transfer module can be used to move data from any source to any destination. The source is typically a delimited text file or database, and the destination is typically a standard module, however, the system supports much more.
Getting Started with Data Transfer
When creating a new data transfer, you begin by configuring the following settings:
System Title: Give the transfer a descriptive system title.
Notification Options: Set up notifications that are commonly used to send an email when a scheduled transfer completes.
Execute Attribute: This should be set to Never while designing your transfer, but can be used to execute a transfer immediately or on a schedule. When Now is selected, the transfer will be executed immediately after the transfer record is saved.
File Upload Feature
The General tab contains a File Upload attribute which can be used to upload source files, zip files, etc.
- If you upload a recognized source file like an Access database, the system will automatically select your source and initialize the attribute accordingly
- Uploading a .ZIP file triggers the system to extract that file into the site's
/Uploads/DataTransfer folder in a sub-folder with the same name as the .ZIP file
- All uploads are placed in the
/Uploads/DataTransfer folder
⚠️ Important: Files in the /Uploads/DataTransfer folder are accessible from the web site via an unpublished URL.
Once you've set up the initial tab, proceed to the Source & Destination tab where you determine where the data comes from and where it goes.
Source & Destination Configuration
Selecting a Source
Selecting a different source provides you with the attributes required to read the data in that source. The attributes within each source will appear when it is selected, and typically contain header text that describes their use. The system also validates sources and destinations, so you should be prompted if you don't provide enough information.
In addition to the predefined sources, we have added a Custom Provider option. This can be used to write code to retrieve data from any source by inheriting the TransferReader interface.
Selecting a Destination
After filling in the source information, you can make a selection in the destination attribute. This attribute also displays different attributes depending upon your destination selection, and contains a custom provider option so that data can be transferred into any system.
Standard Module Destination: Selecting the Standard Module destination provides you with the options necessary to transfer data into a standard module. The majority of the attributes displayed are described adequately within the module.
Bulk Method: Fast, but not very forgiving. No data will be transferred if the data doesn't meet the requirements of the database, and the error messages are typically difficult to decipher.
Incremental Method: Much slower, but supports partial document updates and has much better error handling. In some cases, it will even transfer some records and provide a list of the data that could not be transferred.
Status Interval: This attribute defines how often to report on the progress of the transfer to the process log.
Monitoring Transfers: All transfers record their progress permanently in the Development > Process Log module and can be monitored in real time from the Development > Process Monitor module.
Field Mapping
The Fields tab is used to map source columns to destination columns once the source and destination have been defined and verified. You must select the mapping type for each destination column:
Column: When the mapping type is Column, you select the source column. The data transfer engine will then know to simply move the data from the source column to the destination column.
Text: The Text mapping type allows you to transfer the same text value into every row of the destination column.
Default and Null: The Default and Null options work similarly. The default value for a destination column is determined by the destination provider.
Scripting: The Scripting mapping type allows you to enter one or more of the data transfer scripts defined below. There are many scripts that generate dates or guids, retrieve and manipulate column data, and even translate text into unique identifiers.
The Audiences, Taxonomy, Roles, Module, and Keywords scripts can be used to translate data in a module into their respective Guids used by the system to relate these records. They can also be used to validate the data in that column to ensure that it is in the required format and exists in the related module.
Types of Data Transformation Supported
Structured Data Sources Supported
SharePoint
Required Fields: Source Site URL, Title, List Title, Username, Password
Oracle
Required Fields: Connection String/table name, any query or filter (credentials)
SQL
Required Fields: Connection String/table name, any query or filter (credentials)
Office 365 (OneDrive)
Required Fields: Authorization, Source Folder (Office365 file Selector), Source Recursive (y/n), Source End Point (bulk or changes)
OLEDB
Required Fields: Connection String/table name, any query or filter (credentials)
ODBC
Required Fields: Connection String/table name, any query or filter (credentials)
XML - ReadXML
Required Fields: XML Source (path to xml), Available tables and columns, Source Table Index
XML - CpCollection
Required Fields: Source XML (path to xml), Default File, Source Directory, Number of Files to select, XSLT
Delimited TXT (OLEDB)
Required Fields: Source Directory, Source Delimiter used, Source Text Qualifier, Source Header Row, Source Select Command
Delimited TXT (Stream)
Required Fields: Source Directory, Source Delimiter used, Source Text Qualifier, Source Header Row, Source Select Command
Active Directory
Purpose: Used to build employee directories typically
Required Fields: Directory Path, Filter
Excel
Required Fields: Source File (path to excel, if not uploaded into Centralpoint), Source Header row, Source Select Command (if any)
RSS
Required Fields: Source Feed URL (Web path to RSS Feed), Feed type (atom or rss)
Access
Required Fields: Source File (Path), Source Select Command (query)
Office 365
Required Fields: Source Authorization (Authorize), Source Folder, Source is Recursive, Source End Point
Custom Provider
Purpose: Typically used when ingesting from a WebAPI/Web Services
Required Fields: Source Type, Source Parameters
Note: Custom covers virtually any configuration wherein certain security considerations or custom methods must be passed in order to authorize or encrypt
Centralpoint (Modules, Audiences, Taxonomy, Roles)
Purpose: This is used when transforming data Centralpoint to Centralpoint or to an outside system
Unstructured Data Sources
File Path (Spider)
Purpose: Spider network drives or web-based drives (OneDrive)
Required Fields: File path (and/or credentials), Source Directory, Source Pattern, Source Options
When to Consider Indexing vs. Ingesting Data
Centralpoint supports both indexing and ingesting data. This is because you will want a federated search against all records, but need to preserve where some records currently live. In another case, you may need to have a new system of record or home to MOVE records into Centralpoint.
Key Considerations
- You may want to avoid duplication of your records
- You may need to consider the size of certain files (like CAD, high resolution images, etc.)
- You may need to consider the security of the file paths in which your files live today and users' network accessibility to them
The Difference Between Indexing and Ingesting
Indexing: Leave the record where it is found (to avoid duplication) in order to make it searchable within Centralpoint. When creating your data transformation routine and field mapping, use Alternative URL to record the path to the original record (as well as the enrichment). The user will be returned to the original source when they access the record (if they have the access to see it).
Ingesting: Move the record to Centralpoint as the new system of record (sunset the old system). Do NOT use Alternative URL. Make sure each record is moved during the ingestion via an available File Upload field.
⚠️ Security Consideration: Whether you are ingesting or indexing records using Data Transformation, always be sure to map the security roles from the system or path you're scanning, in order to maintain who may see or access records (either indexed or ingested in Centralpoint).
Data Governance (Data Cleaner) Considerations
Data cleaning is a separate module found under the Centralpoint Data Transformation suite of tools, which allows you to set up data governance rules that may work in unison with your Data Transformation routines.
Keyword Generator
Purpose: Used to enrich, supplement or add new keywords to any record where certain values are found (during mining).
Example: If the word 'apple' is found, add keywords of 'fruit, food, nutrition, pectin' which will enhance search (searching fruit will relate anything apple to any other record which may also relate to fruit or food).
Required Input: Search for?, attributes, add keywords
Taxonomy Generator
Purpose: Used to apply one or more metadata/taxonomy types when certain value(s) are found.
Example: If the word 'apple' is found, apply to N-tiered taxonomy under Food/Fruit, which will enhance search (searching fruit will relate anything apple to any other record which may also relate to fruit or food).
Required Input: Search for?, case sensitive?, regex?, Taxonomy
Attribute Generator
Purpose: Used to apply new values in any field within one or more modules when certain value(s) are found (during mining).
Example: If the term 'Top Secret' is found within any document, apply the value for the Role=Top Secret to the 'Roles' attribute for any module. This will override the security roles for all documents which contain 'Top Secret'.
Required Input: Search for?, regex?, value to add, attribute, which modules?
HTML Cleaner
Purpose: Used to clean or scrub any HTML or code where certain values are found (during mining). Often used to fix older or bad HTML or convert bad characters from MS Word or faulty HTML being ingested.
Example: Should you need to replace any faulty HTML, codes or characters which includes "<b>Apple<b>", and replace with "<b>Apple</b>" (correcting the original faulty html).
Required Input: Search for?, replacement type (html/text), replace with?
Attribute HTML Cleaner
Purpose: Used to apply new values into certain fields into specific modules whenever certain values are found (during mining) - allowing you to apply new values to any attribute as a result.
Required Input: Search for?, replacement type (html/text), replace with, attribute to add, which modules?
Data Triage
Purpose: Used to redirect certain file types into certain modules.
Example: When spidering a shared network drive or database, you may want to deposit all documents containing 'Marketing' references into a module designated for only Marketing, or place all Excel documents found into its own module. This is used to organize content by type (within separate modules).
Required Input: Search for?, regex (yes or no), searched attribute, destination modules, logging attribute
See Also: Data Cleaner works in unison with Data Transfer to filter and assign (keywords, taxonomy, regular expressions) based upon your rules.
Developer Notes & Tips Regarding Data Transfers
1. Use Console Utilities
- With so many modules containing triggers, utilizing this option saves a step post-import
- Useful when the DataId Attributes configuration is in use on the module
- Important Step: To activate console utilities on a per module basis, you must first visit the Module Properties for the receiving module (the module you are ingesting or indexing data into). In this way you can configure your module to leverage the data governance or data cleaning rules
2. "Export" Feature on Scripts
Allows you to insert a human value in place of a GUID on the way out (exporting).
3. UseDefaultValueOnUpdates
Allows you to mix and match your data set:
- If the data being imported is new, the new value in that column will be used
- If the data is being updated, the existing value will be maintained
4. RemoveDuplicateValues
Allows the system to de-dupe a comma-separated list.
5. FTP Files
Place on the source and destination tab's Execute Scripts on Open to send the file generated (presumably an export) to an FTP site provided by the client.
Scheduling Recurring Imports from Third Party Content Providers
⚠️ Important: When Scheduling Recurring Imports from Third Party Content Providers (RSS, XML or Syndicated Content)
When importing from third party sources (like RSS, JSON, XML or Syndicated News Feeds) and scheduling the recurring import of information from them (daily, weekly, or monthly):
- The Incremental Update managed within the Source & Destination tab (of Data Transfer) should be set to IntegrationID, and NOT DataId
- In the Fields tab (of Data Transfer):
- The Autonumber field should be set to the Default radio button option
- The DataId field should be set to the Default radio button option
- The IntegrationId field should be set to column and the column assigned should be the unique identifier from the third-party sources
Summary
The combination of the Incremental Update by DataId (where there is no data id coming from the third-party system) and the fields map having the DataId set to the NewGuid script means the system would never do an incremental update. The newguid would force the system to produce a new record each time, and the system was no doubt getting confused with the autonumber script and dataid being set to Newguid while attempting to update records by existing dataids (that don't exist).
Commonly Used Scripts When Executing a Data Transfer
Audiences Script
Replaces a value or values with valid AudienceIds.
[cp:scripting key='Audiences' name='COLUMN_NAME' valueColumn='AudienceId' defaultValue='bf7bb52f-eae7-4d5a-bd20-6849d0260c80:1:1, 5f2d099d-a0df-4e62-bb88-93662c972ae0:0:1' /]
| Property |
Description |
| DefaultValue |
Enter the default value to be used when the value cannot be found. |
| Name |
The system name of the column in the current data source. Select the Column mapping type for a list of column names. The system name appears in parenthesis. |
| Format |
A format string used to prefix or suffix the return value. Just include '{{0}}' in the string where you would like the value to be placed. |
| ValueColumn |
This property supports the following values: AudienceId, SystemName, Name, IntegrationId. By default this property uses the value 'AudienceId' which validates the values without replacements. |
| isCda |
Optional parameter. default value = 1. Supported values (0,1 OR true, false) |
| isConsole |
Optional parameter. default value = 1. Supported values (0,1 OR true, false) |
| Export |
When Export='true' the replacement process is reversed allowing you replace GUIDs with a plain text value retrieved using the ValueColumn parameter. |
AutoNumber Script
Generates the next available auto number for transfers into standard modules. This script can only be included once because it will generate a new auto number each time it is used.
[cp:scripting key='AutoNumber' /]
Column Script
Retrieves the value of a single column from the data source.
[cp:scripting key='Column' name='COLUMN_NAME' /]
| Property |
Description |
| AddHours |
This property adds or subtracts hours from the value when dataType='DateTime'. It is primarily used to convert local times to UTC. |
| DataType |
This property supports the following values: String, DateTime, Integer, Decimal, Double, Guid. By default this property uses the value 'String'. |
| DefaultValue |
Enter the default value to be used when the column value cannot be parsed into the selected data type. |
| EmptyValue |
An empty string will be returned when this value matches the script's DataType, and it is equal to the calculated value. Do not use this property when you require the script to return a data type other than String because an empty string may be returned instead of the desired data type. |
| Format |
A format string used to prefix or suffix the return value. Just include '{{0}}' in the string where you would like the value to be placed. This can also be used to format data types: {{0:d}}. |
| MinValue |
The minimum allowed value. This property ignored with some data types. |
| MaxValue |
The maximum allowed value. This property ignored with some data types. |
| Name |
The system name of the column in the current data source. Select the Column mapping type for a list of column names. The system name appears in parenthesis. |
| RemoveMarkup |
This property supports the following values: true, false. Enter true to have all HTML stripped from the column value. By default HTML will not be stripped from the column value. |
| ReplaceText |
Use this parameter to replace a string in the column value using the value of the ReplaceWith parameter. |
| ReplaceWith |
This parameter will not be used unless the ReplaceText parameter contains a value. Enter a string that will be the replacement in the column value for the value of the ReplaceText parameter. |
| ReplaceTextRegexEnabled |
If you pass in a string into a regular expression, you need to make sure some special c
-
Data Triggers
Selecting Actions and Modules
Upon launching the module, users are prompted to select the action(s) they wish to trigger (delete, insert, or update) and the modules from a provided list. This selection determines the events the module will monitor for execution.
Setting Conditions
After selecting actions and modules, users navigate to the "If" tab to define whether the action should be conditionally or always executed when the specified event occurs. If the conditional option is chosen, users can utilize the dynamic condition builder to configure a set of boolean rules based on the affected record.
Defining Actions
In the "Do" tab, users specify the action(s) to be performed when the selected condition is met. Currently, the tool supports sending an email as the action. However, additional actions may be incorporated in future updates.
Executing Actions
Once the tool is configured, it monitors the specified events within the selected modules. When a triggered event meets the defined condition, the corresponding action is executed. For example, if a record is updated according to the specified condition, an email notification will be sent.
Logging and Monitoring
The "Log" tab allows users to view the history of trigger actions. This feature provides visibility into the execution of actions, aiding in monitoring and troubleshooting.
Note: Bulk data transfers do not fire triggers. Incremental data transfers with Console Utilities turn on, however, will fire the trigger.
-
Database & Connection String Changes
The easiest way to change the connection string is to have the old and new databases working at the same time. If this is the case you can simply change the connection string in the corresponding sites Admin > Settings module before removing the old database.
If the old database is corrupt or you have already deleted it, you will have to manually update the connection strings in the corresponding sites web.config file. After this has been done the master or web site console should load, but you still have to update Centralpoint. To do this you simply go to the Admin > Settings module and submit the page without making any changes.
-
Date Formats
| Standard Formats |
| Display Example |
Format Code (Case Sensitive) |
| 3/9/2008 |
d |
| 4:05:07 PM |
T |
| Sunday, March 09, 2008 |
D |
| Sunday, March 09, 2008 4:05 PM |
f |
| Sunday, March 09, 2008 4:05:07 PM |
F |
| Sun, 09 Mar 2008 16:05:07 GMT |
r |
| 3/9/2008 4:05 PM |
g |
| 3/9/2008 4:05:07 PM |
G |
| March 09 |
m |
| March, 2008 |
y |
| 2008-03-09T16:05:07 |
s |
| 2008-03-09 16:05:07Z |
u |
| |
| Custom Formats |
| Display Example |
Format Code (Case Sensitive) |
| 3/9/2008 |
M/d/yyyy |
| 03/09/2008 |
MM/dd/yyyy |
| Sun, Mar 9, 2008 |
ddd, MMM d, yyyy |
| Sunday, March 9, 2008 |
dddd, MMMM d, yyyy |
| 03/09/08 |
MM/dd/yy |
| 03/09/2008 |
MM/dd/yyyy |
| SQL Date Formats |
| Display Example |
Format Code |
| 03/09/2008 |
DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date)) |
-
Decrypter Utility
This utility will decrypt encrypted emails generated by form management.
-
Deep Links
Deep Links - Extending your secure SAML authentication to other applications
Deep Links allow you to extend your Centralpoint authentication with SAML, allowing one click access to other applications your end users may need to access (without having to log in repeatedly). Deep links broker the initial authentication with SAML, and empower you to pass secure tokens to other systems. Deep Links is similar to the former Microsoft Passport, allowing one user's credentials to give them access to all applications once logged in. Deep Links empower your organization to oversee an ACL, Active Control List, granting certain roles, full access to back office applications. In order to create a new record in the Deep Links module log into the console then click on Admin followed by Deep Links. Here you will see the normal module view for Deep Links you can click on NEW button in order to navigate to the add new form to create the record.
Once in the form you will have to fill out required information.
- Title – This is just the title of the record. This will have no bearing on the connection. It is for you to be able to identify the connection on your own terms.
- Deep Link Options – To create a SAML 2.0 record please select the “SSO SAML 2.0” option. Once this is selected many more options will appear for you to fill out.
- SAML Name – This will serve as the agreed upon name of the third party vendor. Most likely they will already have something setup and will provide you with this information. This will be used to properly identify the requests coming from the third party which will then enable our system to use the other proper configuration options for this established connection. This field is required.
- SAML Description – This is just a description of the established connection. It is here in order to give you more context if needed about the SAML connection being established. This is an optional field.
- SAML Auth Request Signed – Specifies whether the authentication request from the partner service provider should be signed. This field is required and the default value is No.
- SAML Sign Response – Specifies whether SAML responses sent to the partner service should be signed. This field is required and the default value is Yes.
- SAML Sign Assertion – Specifies whether SAML assertions sent to the partner service provider should be signed. This field is required and the default value is No.
- SAML Encrypt Assertion – Specifies whether SAML assertions sent to the partner service provider should be signed. This field is required and the default value is No.
- SAMLAssertionPartnerCert – this field is only used when we encrypting the assertion. This is a file upload field where you are to upload the certificate the partner is wanting to use for encryption. Please note that this file should be coming from the third party as they need to key in order to decrypt the data being passed.
- SAML Assertion URL – this is URL provided by the third party where we should be sending the SAML assertion to.
- SAML Relay State – If the third party uses relay states to dictate where in their system the user whom is attempting to get into their system is to be navigated to this is the property to place in that URL they will provide. This field can be entered as a hard coded value or as a CpScript in order to accommodate custom logic which may be needed if certain users need to go directed to a specific page while other users to another. This is an optional field and not all SAML connections will use this field.
- SAML Response Attributes – This attribute will accept XML data formatted just like you would for the Field Map for Users in the Forms module. But you will not be able to use the Form State CpScript to grab the values for the attributes. Instead you will have to use the User Info CpScript. The list of attributes required is dependent upon what the third party you are connecting to requires to load up the appropriate user in their system. Please notes the systemName attribute of the attribute element will be the name of the field as described by the third party. For instance, they might call a field First Name while in Central Point it is called Contact First Name. Example of data for this property: <attribute systemName="UserName"> <![CDATA[ ]]></attribute> <attribute systemName="Email"> <![CDATA[ ]]></attribute>
If this is your first time setting up a SAML 2.0 connection, then you will have to also configure the Module Properties. These properties will setup your Central Point as the Identity Provider (IdP) for this SAML Connection. In here you will see the following options used for the SAML 2.0 portion of the Deep Links module. The properties here will serve two separate purposes the first group of optional properties will build a client.xml file which you can share with the third party to help assist in the building of the SAML connection.
Type of certificates supported
Using SSO SAML 2.0 Connecting from Central Point to third Party (Identity Provider initiated)
This is the normal circumstance for general usage of the SAML connection whereas a Centralpoint user has access to a third party via a link inside of central point and is logged in seamlessly via the SAML protocols into the third party’s system.
Once you have configured the module and created your SAML 2.0 record you can access the record again at which point in time the CpScript property will be filled. This generated CpScript will provide a link to the webpage which will be used in order to navigate to the page for the initialization of the SAML connection building the SAML data and sending it to the third party page. From there the third party will read the assertion and attempt to match up with a user in their system. If successful it will then navigate you to a page based on their internal system or the page dictated by the relay state property if they build their system around that. This Cp script will specifically return the link to the page with the dataId of the record we are connecting to EX:
/Modules/DeepLinks/SAML2/InitSSO.aspx?dataId= DataId of record from module here.
From here you can make this a link or whatever you need it to be to fit your needs. You can add in the Format property to the CpScript in order to have it formatted the way you want within the CpScript call itself as well.
Once the script is linked properly on a page or a navigation item. A user whom has to be logged in can click on the link in order to gain access to the third party system.
Using SSO SAML 2.0 logging in from third party site via Centralpoint login information (Service Provider initiated)
Used to log into a third party’s site using your login information from Centralpoint. Think about it like using your Facebook login in order to login into a different company’s website.
Centralpoint has a special page which serves as a listener for the SAML connection. You will have to give the page to the third party so that they can configure their side accordingly. The page is located at Modules/DeepLinks/SAML2/SSOService.aspx upon connecting to this page the third part will send over a request for SAML assertion data. Upon reading this data Centralpoint will lookup data setup inside of our system based upon the SAML Name that is setup in the Deep Link module record. From there Centralpoint will look up the proper module record and build the SAML assertion using the user data logged into Centralpoint. Upon receiving the SAML assertion the third party will then look up and compare against the data in their system in order to login them into the site automatically using their Centralpoint’s active user session.
Using a Custom Deep Link
-
Delete Taxonomy Utility
Because taxonomy supports N-Tiered relationships this means that should you ever want to delete a taxonomy tree, or individual taxonomy terms, you would need to do so manually, indvidiually, until all nodes of that taxonomy tree were deleted. This tool was created to allow all taxonomy items under a particular parent to be deleted in one fell swoop. Without this tool, each taxonomy found under the parent would have to be deleted manually, and individually and be time consuming.
Note: You will want to confirm that the taxonomy (or family tree) you are deleting is not already in use by other modules, prior to deleting. If you delete the taxonomy list or tree, and it was in use prior, then you will need to retag all of those records to a new taxonomy post facto. It is highly recommended that you back up your site (See Tools/Backup) prior to the deletion of any taxonomy.
-
Design
Maintain the web site styles classified by Audience and Role to render distinct looking web sites. These styles primarily relate to colors, fonts, images, and other design elements. The 'Global' attributes are always available, but the majority of this modules attributes are controlled by the Site Type. A web site's site type is selected in the master consoles update page for the given web site. Site types generate the area around the web site's content. This module will have additional dynamically generated tabs relating to the surrounding areas provided by the site type. Typically, these sections are top, right, bottom, left, and navigation. Sections that appear in more than one site type are typically named the same, but you may have to revisit your design records after changing site types.
In Centralpoint Digital Experience Platform 7 the design elements were stored in three different modules: Design::Color Schemas, Design::Module Font Settings, Design::Site Images. These modules have been combined to make it easier to locate design attributes. Instead of categorizing these module's attributes by type (color, font, images), they are categorized by location (top, right, bottom, left). You'll find that this new organization caused each tab's attributes to be virtually the same. All attributes from the old modules that referenced the 'Nav Bar' have been have been removed and will be implemented using Centralpoint Digital Experience Platform Scripting.
Numerous Centralpoint Digital Experience Platform 7 site properties have also been mapped to attributes in this module: Center Window Spacing, Core Page Sub Nav Alignment, Global Padding, Left Bar Display, Left Bar Drop Shadow, Left Bar Padding, Left Bar Width, Left Image Nav Alignment, Left Navigation Width Control Option, Main Homepage Center Content Window Padding, Main Site Border, Main Site Border Thickness, Main Site Homepage Alignment, Main Site Width, Right Bar Display, Right Bar Padding, Right Bar Width, Site Border, Site Border Thickness, Site Navigation - HTML Divider Line, Site Navigation - Sub Nav Item Indentation, Site Navigation Bold Option, Site Navigation Section Homepage Padding, Suppress All Site Navigation, Suppress Bottom Bar, Vertical Nav Display Options, Vertical Navigation Display Only Options. There were also many old site properties relating to design which were simply no longer necessary. Generally speaking, when the old site properties referred to a location (top, right, bottom, left) they have been moved to the appropriate tab in the new design module. The same goes for old site properties relating to the navigation or sub navigation.
Setting Up A Responsive Design
• Setting up a responsive audience design may require changes that you can not anticipate. If you are upgrading an existing audience we recommend you first test your changes on an audience that is not accessible to the public.
• Set Global > Rendering Mode to "Hybrid" to force the site to use DIVs in modern browsers. Mobile devices won't be using the older browsers anyway. This change should have little or no effect on the way that your site renders.
• Set Media Queries (Responsive Design) to "1 (Mobile)" and use the default settings to support mobile devices. This will add a viewport meta tag to all pages to prevent them from automatically resizing on mobile devices.
• Add "img, object {{ max-width: 100% !important; }}" to the Global > Custom Styles attribute to allow your images to resize with the viewport. If you experience problems with image resizing in some browsers it can be resolved by adding “div.cpsys_Block {{ table-layout: fixed; }}”. This tells the browser to interpret the size of a column without considering the content and therefore the content (image) size is determined relative to its container. You may also have to add style=”table-layout: fixed;” to HTML tables that you have added in the content of your site. Applying this change will cause your left and right columns to be exactly the width that you define; removing the “rubber band” effect. If your audience utilizes Left and Right Perimeter advertisements you may also have to add “.cpweb_PerimeterLeftTd, .cpweb_PerimeterRightTd {{ width: 10% !important; }} .cpweb_PerimiterCenterTd {{ width: 80% !important; }}” to explicitly set the width of these columns.
• Remove predefined pixel widths from the Global > Wrapper Width and Navigation > Width attributes. Setting them to the empty string will let their widths change with the viewport. You can also add something like ".cpweb_Wrapper {{ max-width: 960px; margin: 0px auto; }}" to the Global > Custom Styles attribute if you'd like to convert your wrapper width to a max wrapper width.
• Set Left > Width Units and Right > Width Units to "Percentage". This will allow the column widths to change with the viewport.
• Remove all explicitly defined widths and HTML tables used for formatting from records in the client console. You can typically discover these elements by loading the pages using a mobile width to discover what is forcing the page to be wider than its viewport. Sometimes you'll have to view and search the source and style sheets for "width" to find the offending elements.
• The media query styles can be designed to manually modify the page as the viewport changes if any of the steps above are unacceptable. This process requires manual analysis and implementation on a case-by-case basis.
• Use Development > Content Audit > Responsive Audit to find content that has the potential to cause display issues issues in a responsive audience. The preceding link may not work if the module is not accessible or enabled.
Setting Up Sub Navigation CSS Tiers
By default all sub levels of Site Navigation are setup using Design > Styles > Sub Nav Tab. The CSS that this tab eventually translates is as follow:
/* Default CSS from the Style Module */
.cpsty_SubNavigation {{ background-color:#CCCCCC; text-align:left; text-decoration:inherit; font-size:95%; font-weight:bold; }}
.cpsty_SubNavigation a, .cpsty_SubNavigation a:link {{ text-decoration:inherit; }}
.cpsty_SubNavigation a:hover {{ }}
.cpsty_SubNavigationSelected {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigationSelected a, .cpsty_SubNavigationSelected a:link {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigationHover {{ color:#FFFFFF; text-decoration:inherit; background-color:#888888; }}
.cpsty_SubNavigationHover a, .cpsty_SubNavigationHover a:link {{ color:#FFFFFF; text-decoration:inherit; }}
.cpsty_SubNavigationText {{ padding:2px 3px 2px 3px; margin:0px 0px 0px 0px; }}
Each site will have different properties to each one of these class names. So when you need to setup a multilevel CSS class block, be sure to use your sites default by viewing source and loading the /SiteTypes/Default.master.css.aspx into note pad. When you start setting up the different blocks for each level remember that anything that you keep the same will inherit from the default class block above.
Here is what the 1st level of the sub navigation CSS:
/* 1st Level of the sub navigation */
.cpsty_SubNavigation1 {{ background-color:#CCCCCC; text-align:left; text-decoration:inherit; font-size:95%; font-weight:bold; }}
.cpsty_SubNavigation1 a, .cpsty_SubNavigation1 a:link {{ text-decoration:inherit; }}
.cpsty_SubNavigation1 a:hover {{ }}
.cpsty_SubNavigation1Selected {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigation1Selected a, .cpsty_SubNavigation1Selected a:link {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigation1Hover {{ color:#FFFFFF; text-decoration:inherit; background-color:#888888; }}
.cpsty_SubNavigation1Hover a, .cpsty_SubNavigation1Hover a:link {{ color:#FFFFFF; text-decoration:inherit; }}
.cpsty_SubNavigation1Text {{ padding:2px 3px 2px 3px; margin:0px 0px 0px 0px; }}
As you can see here with this example, if placed on the page would change nothing. You will need to go through each property and make sure it is unique to that level and differs from the default unless you want it inherited.
And here is for a 2nd level:
/* 2nd Level of the sub navigation */
.cpsty_SubNavigation2 {{ background-color:#CCCCCC; text-align:left; text-decoration:inherit; font-size:95%; font-weight:bold; }}
.cpsty_SubNavigation2 a, .cpsty_SubNavigation1 a:link {{ text-decoration:inherit; }}
.cpsty_SubNavigation2 a:hover {{ }}
.cpsty_SubNavigation2Selected {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigation2Selected a, .cpsty_SubNavigation2Selected a:link {{ color:#990000; text-decoration:inherit; }}
.cpsty_SubNavigation2Hover {{ color:#FFFFFF; text-decoration:inherit; background-color:#888888; }}
.cpsty_SubNavigation2Hover a, .cpsty_SubNavigation2Hover a:link {{ color:#FFFFFF; text-decoration:inherit; }}
.cpsty_SubNavigation2Text {{ padding:2px 3px 2px 3px; margin:0px 0px 0px 0px; }}
This essentially can go on forever depending on how many tiers you have. Just make sure to change each number in ALL the class names.
Audiences: Apply Unique Design
- To first begin applying a unique design per audience, please step through all steps outlined in Audiences: Create a new Website via Audiences
- You will want to assign this audience with a unique record in both Homepages & Design > Styles.
- Site Architecture > Module Designer: You will want to begin with creating 2 new records here. One if for the Homepage layout, and the other is to control the interior pages / all pages pulling from the Navigation module. This is done using the drop-down menu labeled Module after you click the "NEW" button.
- When inside these records it is best practice to set the field Use Navigation Content? to No.
- Insert this CpScript to pull the primary content from these modules:
- Go back to the Audience that you want to enable this new design for. Site Architecture > Audiences > (find / select audience)
- Click the tab labeled Company.
- Near the bottom of the record, there are two fields that you need to utilize to assign the newly created records built within Module Designer.
- Near the bottom of the record, there are two fields that you need to utilize to assign the newly created records built within Module Designer.
- Homepages Module Design (HomePagesModuleViews): Set this to new Homepages Module Designer record that you've just created.
- Navigation Module Design (NavigationModuleViews): Set this to new Navigation Module Designer record that you've just created.
- Now save the audience record, and refresh your new audience's URL. The homepage & navigation pages will be reading the design layout from these new Module Designer records.
- Please note: You may need to also create other new records in Module Designer to finish your site. For example: If you're utilizing News & Events modules, there is a good chance that you will need to create new versions of these to specifically match the look & feel of your new audience.
Audiences: Create a new Website via Audiences
The instructions are for you to create a new website using CentralPoint's Audiences module. You can blend this into an existing design, or make it look like a completely different site all-together. The instructions below will assist you in the initial creation of a new audience/website.
Audiences play a huge factor in back-end management. You can assign Administrators to individual Audiences, and they will only be able to view/edit records that are assigned to the same Audience as their Administrator record.
- Site Architecture > Audiences: Create your new audience using the console location in this step. Please note that your Audience system name will show in the URL bar within every page of that particular audience. I typically will keep them as short as possible, often using acronyms to abbreviate the system name.
The "Main" audience is the root & default audience in every client console.
Example: client-domain-here.com/main/navigation-system-name.aspx
The bold piece of the example URL above is the audience system name. After creating your audience, this system name is set in stone. There is no way to change it, so please be certain this is desired from initially creating the audience.
In this example, lets pretend we created an Audience with the system name being site1.
- Site Architecture > Homepages: To access your new audience using a front-end URL, you will need to assign it to a record in this Homepages module. You can share a homepage with another audience, or create a brand new one specific to site1.
In this example, lets pretend we created a new Homepage record with the system name being site1-home.
Your front-end URL would now be: client-domain-here.com/site1/site1-home.aspx
Please note the following. You still will not be able to access the front-end until the next step is complete. Each audience should ONLY be assigned to ONE & ONLY ONE homepage record. Audiences assigned to multiple homepages could, and most likely will produce errors on the front-end website.
- Design > Styles: This is the final step before your new site/audience is ready for front-end viewing. You must either tag an existing Styles record to your new audience, or create a brand new one. Again, each audience should only be assigned to ONE & ONLY ONE record in Design > Styles. An audience assigned to multiple records in this section of the console could, and most likely will cause issues within your new audience/site.
- If you have followed these steps exactly as laid out, you will now be able to access the front-end of your website @: client-domain-here.com/site1/site1-home.aspx
-
Disabling IE Clipboard Prompt
Yes. Go to Internet Options in the Tools menu of Internet Explorer. Click on the Security Tab. Click the 'Custom Level...' button in the 'Security Level for this zone' section. Select 'Enable' under 'Allow Programmatic clipboard access' in the Scripting section.
-
DITA Module Suite
The DITA management suite empowers its users to organize Specialized Elements, Generalized Elements, Vocabulary, and Media elements to assemble dynamic DITA documents via Document Shells (or downloads, for the benefit of the user community. Each DITA document is made up of elements, which are intelligent; able to be rendered 'ON DEMAND' by the user, yielding a potentially unique file output (or download) for each user. The benefit is in managing one document (which contain intelligent elements) secure to only those users who request it (by role, by region or both).
This module suite is made up of three sub categories: Elements, Documents and Collections, and Types
Elements:
-
Generalized Elements - A module which allows the author to create and manage reusable boilerplate content, and drag-n-drop into the Document Shell(s) or template
-
Specialized Elements- A module which allows the author to create re-usable dynamic content elements, and drag-n-drop into the Document Shell(s) or template (live changes from within the Shell) as the element values change.
-
Vocabulary- A module to manage any (roles based) terminology, and or associated help files or hyperlinks. These can be added to the Document Shell via drag-n-drop to manage the changes to terminology found within documents.
-
Media Elements- A module to manage any (roles based) digital assets (or media). These can be added to the Document Shell via drag-n-drop to manage (live changes from within the Shell) as the media element values change.
Documents & Collections:
-
Documents- A module to manage the storage of the elements into their respective (indvidual) document record(s)
-
Colletions- A module in which to group the Documents into collections (like manuals and booklets)
-
Document Shells- A module to manage the templates, output file types and download links
Types:
-
Specialized Element Types-A link to the Taxonomy used for all Specialized Elements
-
Generalized Element Types- A link to the Taxonomy used for all Generalized Elements
-
Media Element Types- A link to the Keyword List used for all Media Elements
-
Vocabulary Types- A link to the Taxonomy used for all Vocabulary
-
Document Shell Types- A link to the Taxonomy used for all Document Shells
-
Document Content Attributes: Remove Sections
Document Content Attributes: Remove Sections
This feature was designed to remove cover pages from the HTML extracted within a Word document. However, using the instructions below, it could be used to remove any content that should not render on the web version of the document.
This feature only manipulates the extracted HTML inserted into the attribute and does not alter the source document.
There is no automated means to identify whether or not a Word document contains a cover page, so the following instructions must be followed to use this feature and achieve desirable results.
Console Instructions
- Module Properties > Document Content Attributes: Remove Sections? Go to this location within the desired module. Set the radio-button to Yes and save the module properties.
- Module Configuration Go to this location within the desired module. Add a custom attribute with a System Name of: CpAsposeWordsDocumentSectionsToRemove. This should be a CpTextBox attribute and expects a comma separated list of integers. Determine whether or not there should be a default value. Remember, there is no guarantee a Word document has sections or the content expected to be removed within the identified sections.
- The XML below demonstrates the attribute needed for the module configuration XML file noted in the previous list-item. This example has a default value of 1, 2 for records in this module. It will remove the first two sections within each record containing a Word document unless that specific record is manually adjusted afterwards.
<property id="CpAsposeWordsDocumentSectionsToRemove">
<value>1, 2</value>
<attribute name="Word Document Sections To Remove">
<headerText>If these sections exist, they will be removed from the HTML extracted from the Word Document.</headerText>
<control id="CpTextBox" type="Centralpoint.Web.UI.Controls.CpTextBox" />
</attribute>
</property>
Word Instructions
Aspose is the vendor that provides development components used in Centralpoint to read and manipulate various file types including MS Word.
There is no means within Aspose to identify specific pages within a Word document without the use of Section Breaks within the word document.
- Read Microsoft's documentation on how-to insert section breaks.
- Read Microsoft's documentation on how-to view existing section breaks.
For example, by inserting a Next Page Section Break after the cover page, this feature may now accurately identify the cover page.
The CpAsposeWordsDocumentSectionsToRemove attribute within the record would contain a value of 1 in this case.
Console Trace
If issues are reported that unexpected content is being removed or expected content is not being removed, please view the console trace while saving a problem record.
There will be lines beginning with WordDocumentRemoveSections which provide information on the sections within the word document and the sections targeted for removal within the CpAsposeWordsDocumentSectionsToRemove attribute .
-
Document Icons
This module is used to manage a list of document icons that are placed using Centralpoint Digital Experience Platform Scripting. Simply enter the file extension in the Extension attribute and upload the corresponding icon. A default icon will be used if a corresponding record cannot be found.
-
Dynamic Feeds
Dynamic feeds allow you to consume RSS feeds from the outside world, and re-format them in line with the style(s) of your website. In this way, live information may serve your site, as if it is your own.
-
Dynamic Navigation
This module is used to design a DHTML menu that displays items from the Site Architecture > Navigation module. It generates a CpScript that can be placed in any module and attribute that supports scripting. Be sure to use your mouse to hover over the names of the attributes because many of the more confusing attributes are described using tool tips. If you would like a dynamic navigation to behave responsively you must set Rendering Mode to List, especially when Orientation is set to Horizontal. The Orientation attribute also supports a Vertical On Mobile Only option for responsive designs, but this feature only works when the server recognizes the browser as a mobile device. Tablets and some newer mobile phones may not be recognized as a mobile device without manual changes to the site or server's browser definition files.
The generated menu control only supports a single selected item, therefore the Last Level Selected attribute was added to allow you to determine which level appears to be selected when any of the descendants of an item in that level are selected. We have also included a Custom Styles attribute to add CSS Classes and reference them from any of the CSS Class attributes in the different tabs in this module. These CSS classes will be added to the page so the names must be globally unique. You can also use the Nav Groups attribute in this module to display only the records in the Site Architecture > Navigation module with overlapping Nav Groups selections.
The Static tab allows you to design the static portion of the menu. There is always at least one static level, but you can display more than one level as static using the Static Display Levels attribute. All static levels have the static styles applied, but the styles in the Level tabs may be used to override the static styles at any level.
The Dynamic tab allows you to design the dynamic portion of the menu. The dynamic levels begin after the last static level and the Dynamic Display Levels attribute allows you to control the maximum number of dynamic levels. You can use this attributes to suppress some levels of navigation. All dynamic levels have the dynamic styles applied, but the styles in the Level tabs may be used to override the dynamic styles at any level.
The Level # tabs allow you to apply styles to a specific level regardless of whether it is static or dynamic. The styles under these tabs will not be applied unless you select 'Yes' in the Override Level # attribute. By selecting 'Yes' you are stating that you understand that the static or dynamic styles for that level will be overriden by the styles in the Level # tab.
-
Dynamic Scripts
Easily create dynamic content within your enterprise without knowing code
The Dynamic Scripts module allows administrators to pull records from individual modules and display that data in list or columnar format on the front end of the site. See Figure 1 and Figure 2 below.
Title 1
Date 1 (if displayed)
Content Field 1 (if displayed)
Title 2
Date 2 (if displayed)
Content Field 2 (if displayed)
Title 3
Date 3 (if displayed)
Content Field 3 (if displayed)
Figure 1
| Title 1
Date 1 (if displayed)
Content Field 1 (if displayed) |
Title 4
Date 4 (if displayed)
Content Field 4 (if displayed) |
| Title 2
Date 2 (if displayed)
Content Field 2 (if displayed) |
Title 5
Date 5 (if displayed)
Content Field 5 (if displayed) |
| Title 3
Date 3 (if displayed)
Content Field 3 (if displayed) |
Title 6
Date 6 (if displayed)
Content Field 6 (if displayed) |
Figure 2
Placing the dynamic script in any RTF editor that supports Cp scripting allows administrators to control the look and feel -- and output display -- of their content, as well as increase access to module records.
Dynamic Scripts is located under the "Design" tab within CentralPoint's administrative console. The module features three tabs: Details, Fields and Formatting.
Administrators can format the output of their records using Cascading Style Sheets (CSS), as well as determine which fields display as part of their output list.
The system allows administrators to pull records dynamically by Taxonomy or manually by employing a custom SQL "where" clause. Additionally, administrators can order their output lists by one of CentralPoint's pre-defined fields, or they can enter their own "order by" clause.
Finally, the script that administrators place on the front end of the site will generate valid HTML, allowing search engines to easily follow links.
(Administrators of CentralPoint ME2 recognize this functionality from the Design > Script Generator module.)
Chapters
Details Tab
Fields Tab
Formatting Tab
Placing a Script
Details Tab
The Details tab requires administrators to define the name of the script and the module from which the script will pull records. Other fields are optional, but in order to create a valid script a title and module must be defined.
The title of the script is used for console display only, although the name of the script will appear within an HTML comment on the front end of a web site immediately before the script's output.
Publish Start Date and Publish End Date allow administrators to define when the script will be valid for output purposes. As long as today's date falls between the Start Data and End Date range, the script will display output.
The system uses the CpScript field to generate the script that administrators will place within the console to deliver their dynamic content. Administrator input is not required, though after a script is created (saved), administrators can use the "copy" button adjacent to the CpScript field to copy the script for placement.
The Cache Duration field instructs the system on how often to look for new data related to the script to display it on the front end. The default is set to 1 day, although administrators can choose from among the following options:
No Cache
1 Minute
5 Minutes
15 Minutes
30 Minutes
1 Hour
4 Hours
8 Hours
12 Hours
1 Day
1 Week
Setting at least some cache will improve the performance of the script, and the web site as a whole. Generally speaking, if an administrator's organization is producing content on a daily basis, setting a cache of between 4 Hours and 1 Day is good practice.
Choose the module from which your script will pull data in the Module radio-button list. This field is fully searchable using the "Search" field, as well as the "Match" and "In" drop-downs.
The Filter Type option allows administrators to query the module with either a custom SQL filter (choose "Manual") or a system-aided script (Choose "Dynamic"). "Dynamic" will work for the majority of scripts administrators create. Choosing "Dynamic" requires administrators to filter the module's content with the "Taxonomy" field.
Choosing one or more taxonomies from the "Taxonomy" field allows administrators to filter easily which records they wish to display. Choosing one taxonomy will tell the system to deliver the records that are tied to that taxonomy; choosing more than one taxonomy tells the system to display records that are tied to those taxonomies chosen.
For instance, if an administrator wants to display Articles that are tied to Taxonomy A, Taxonomy F and Taxonomy K. The administrator should choose those taxonomies from the Taxonomy multi-select field only, and the system will display records that are tied to all three taxonomies.
Administrators choosing the "Manual" option will have access to a "WHERE clause" field in which they can insert valid where-type clauses. Administrators should use the "Manual" filter only when they demonstrate a firm grasp of the fields (and their data types) available in each module and competency in SQL. Choosing "Manual” The common syntax for the Manual filter field follows closely that of a standard "where" clause in SQL. As an example, this "manual" filter looks for records whose taxonomy matches a specific ID:
(Taxonomy like '%086b607d-bac4-45cd-8600-06c877489f7b%')
The Archive Type field determines which type of records the script will display. The options are: All Current, Expired, Future and Published.
"All Current" will display any record whether it is on hold or released, hidden or visible.
"Expired" will display all records whose Publish End Date is past.
"Future" displays those records whose Publish Start Date has not yet come.
"Published" displays records that are "released" and "visible" only.
The "Organizational Filter" options of "Automatic" and "Specify" give administrators further control over the records that display in their scripts. The "Audience Filtration" and "Role Filtration" attributes are used in conjunction with the "Automatic" option.
Choosing "Automatic" -- along with "Yes" for "Audience Filtration" and "Role Filtration" -- will display records tied to the audience and role a user is on when he or she views the content on the front end of the site. For instance, if user views the contents of a script while browsing in /AudienceA/RoleF/, the script will display content that is tied to that audience and that role only.
Choosing "No" for "Audience Filtration" and "Role Filtration" will allow any records from within the module to display, regardless of where a user browses.
To maintain greater control over the records that display within the script, choose "Specify" as the "Organizational Filter" value. Choosing "Specify" displays an "Audience" and "Role" drop-down menus from which administrators are required to define their desired values. Note that the audience drop-down menu displays relevant children of an audience when a parent is chosen.
The "Record Count" field allows administrators to display up to 999 records from a module in list or columnar format.
The "Record Skip Count" field -- in conjunction with the "Record Count" field -- allows administrators to display the "[Record Count] - [Record Skip Count]" records from a given query, where [Record Skip Count] is a number less than the number assigned in the Record Count field. For example, if the "Record Count" field is 10 and the "Record Skip" field is 6, the script will display five records -- in this case, records 7 through 10 -- of that 10-record list. This is particularly useful on pages that contain multiple scripts displaying similar content.
"Record Order" works in conjunction with the "Predefined Order" drop-down if administrators choose the "Predefined" value. This functionality allows administrators to display their lists in a desired order. Available predefined order options include:
Date Ascending (Oldest on top, newest on the bottom)
Date Descending (Newest on top, oldest on the bottom)
Highest Rated (highest rated on top)
Most Viewed (most viewed on top)
Random (completely random display of records)
Title Ascending (A on top, Z on the bottom)
Title Descending (Z on top, A on the bottom)
Choosing "Custom" allows administrators to define their own "Custom Order" clause. Administrators should use the "Custom" filter only when they demonstrate a firm grasp of the fields (and their data types) available in each module and competency in SQL. As an example, this "Custom order" filter will order the records by Field1, ascending:
Field1 ASC
The "Audiences" multi-select is for console use only. Administrators can choose relevant audiences to filter which administrators have access to which scripts.
The "Display Status" determines whether or not the contents of the dynamic script are displayed on the front end of the web site.
Formatting Options
- Standard:
This is a basic representation of the Standard option. The other tabs define exactly how this will look.
- Content Pager:
This is a basic represenation of the Content Pager option. There are new attributes to choose from when creating this:
- Next Button:
This will show an image for the next button. This will only apply if both Next Button and Previous Button image are uploaded.
- Next Link Label:
This will show the Next Text if an image is not selected. It is Next by default.
- Previous Button:
This will show an image for the previous button. This will only apply if both Next Button and Previous Button image are uploaded.
- Previous Link Label:
This will show the Previous Text if an image is not selected. It is Previous by default.
- Reveal Type:
This has two option. Click will make the selected page change when you click the mouse. Mouseover will make the selected page change when you hover over a page number.
- Enable Fade Transition:
This will enable a Fade Transition to the pager when new items are selected.
- Auto Rotate:
This will rotate the contents automatically.
- Rotation Pause Time:
This is the pause time for the Auto Rotate option. This is the time will take before the content is rotated.
- Rotation Pause Time:
This is the pause time for the Auto Rotate option. This is the time will take before the content is rotated.
- Define Slide Background Image Field:
This will put a background image to the content based on a field in the module.
- Wrapper DIV CSS:
This is the Styles for the wrapper of the content pager.
- Slide DIV CSS:
This is the Styles for each individual slide for the content.
- Pagination CSS:
This is the Styles for the pagination at the bottom of the content pager.
- Z Index Auto Increment:
If you are experience issues with the content pager showing on top of other content, set this option to no.
- Image Slideshow
This is the basic representation of the Image Slideshow option. Here are the additional fields to change the functionality:
- Slideshow Width:
This is the entire slideshow width in pixels.
- Slideshow Background Color:
This is the background color for the entire slideshow.
- Slideshow Padding Top:
This is the padding top for the entire slideshow.
- Slideshow Padding Bottom:
This is the padding bottom for the entire slideshow.
- Slideshow Padding Left:
This is the padding left for the entire slideshow.
- Slideshow Padding Right:
This is the padding right for the entire slideshow.
- Main Gallery Height:
This is the main gallery region height.
- Main Gallery Padding Top:
This is the main gallery region padding top.
- Main Gallery Padding Bottom:
This is the main gallery region padding bottom.
- Display Main Gallery Previous / Next Images:
This will show the Left and Right Main Image Gallery Images.
- Main Gallery Left Arrow:
This is the image for the left arrow of the gallery. It will have a default image if none is selected.
- Main Gallery Right Arrow:
This is the image for the right arrow of the gallery. It will have a default image if none is selected.
- Caption Background Color:
The caption is made from the Define Title Field and Define Content Field 1 columns. This is the background color for the gallery caption popup.
- Caption Text Color:
This is the text color for the gallery caption popup.
- Caption Opacity:
This is the opacity of the caption.
- Thumbnail Height:
This is the height of the thumbnail. The width will automatically be generated.
- Thumbnail Opacity:
This will set the opacity for the thumbnails.
- Thumbnail Padding Top:
This is the padding top for the Thumbnails region.
- Thumbnail Padding Bottom:
This is the padding bottom for the thumbnail region.
- Display Thumbnail Previous / Next Images:
This will display the thumbnail previous and next images.
- Link Thumbnail To Record:
This will link the Thumbnails to the record displayed. This should only be used when Hide Main Gallery is set to Yes.
- Thumbnail Tooltip:
This will show a tooltip for the Thumbnail based on a column.
- Thumbnail Tooltip Column Name:
This is the Column name for the Thumbnail Tooltip contents.
- Navigation Bar Text Color:
This is the text color for the image count and the start and stop links (the Navigation Bar).
- Navigation Padding Top:
This is the padding top for the Navigation bar.
- Navigation Padding Bottom:
This is the padding bottom for the Navigation bar.
- Navigation Padding Left:
This is the padding left for the Navigation Bar.
- Navigation Padding Right:
This is the padding right for the Navigation Bar.
- Auto Start:
This will start the slideshow automatically.
- Slide Show Effect:
This is the effect for the slide show.
- Animation Speed:
This is the speed of the animation effect.
- Auto Play Duration:
This is the time in which images switch when the slide show is running.
- Hide Navigation Bar:
This will hide the image numbers and the start stop links.
- Hide Thumbnails:
This will hide the thumbnails from the slideshow.
- Hide Main Gallery:
This will hide the main image part of the slideshow.
Fields Tab
The Fields tab determines what your script will display, including whether or not the title of the record will display, the date will display (and if so, what format) and if the script will display an image for each record.
The first attribute administrators must decide on is "Display Title Field". The majority of scripts display this field, and the corresponding link to the record, so the default is set to "Show". Showing the title field requires the administrator to define the title field, which is "Title" by default.
Administrators that wish to display lists of content that do not link to records should choose "Hide".
If the script displays the "Title" field, administrators can control the design of that field and its corresponding link with the "Title Field CSS". Administrators have complete control over the contents of this field -- except the names of the CSS classes. dsTitleField must remain as the class name or the design defined in the CSS will not function properly.
Next, administrators can define the data field in the "Define Date Field" attribute. If the script should not display the date, choose the "Hide" option in the "Display Date Field" attribute.
"StartDate" is the default date that displays with each script, but administrators can choose other valid date fields from a particular module should they desire. Keep in mind, however, that the value of the "Define Date Field" must be a valid date field or the system will not display it.
Administrators that wish to display the date field can control the date display in two ways: the date format itself (using the "Date Format" field) and the font format (using the Date Field CSS).
There are several date format options from which to choose. Clicking the "Date Format" text within the module will pop up a window that displays all of the options. They are listed below, as well.
| Standard Formats |
| Display Example |
Format Code (Case Sensitive) |
| 3/9/2008 |
d |
| 4:05:07 PM |
T |
| Sunday, March 09, 2008 |
D |
| Sunday, March 09, 2008 4:05 PM |
f |
| Sunday, March 09, 2008 4:05:07 PM |
F |
| Sun, 09 Mar 2008 16:05:07 GMT |
r |
| 3/9/2008 4:05 PM |
g |
| 3/9/2008 4:05:07 PM |
G |
| March 09 |
m |
| March, 2008 |
y |
| 2008-03-09T16:05:07 |
s |
| 2008-03-09 16:05:07Z |
u |
| |
| Custom Formats |
| Display Example |
Format Code (Case Sensitive) |
| 3/9/2008 |
M/d/yyyy |
| 03/09/2008 |
MM/dd/yyyy |
| Sun, Mar 9, 2008 |
ddd, MMM d, yyyy |
| Sunday, March 9, 2008 |
dddd, MMMM d, yyyy |
| 03/09/08 |
MM/dd/yy |
| 03/09/2008 |
MM/dd/yyyy |
To employ a standard format, type the letter of the code in the "Date Format" field. This code is case-sensitive.
To employ a custom format, enter into the "Date Format" field the format of the date as it appears above.
The "Number of Content Fields" option allows administrators to extend the amount of information that displays with each record. The default is "One", but administrators can display up to three fields, in addition to date and title.
Typical usage of more than one content field is when administrators wish to display product catalog items or calendar of event records.
Each content field allows administrators to define the field they wish to display, control the display of that field using CSS (Content Field [n] CSS), determine whether or not the field display is truncated (Content Field [n] Truncation) and determine whether or not the system removes HTML formatting from the display of that field (Content Field [n] Retain HTML).
To determine the content field ("Define Content Field [n]"), enter the exact name of the field from the module. If you wish to display no additional fields, leave the "Define Content Field 1" field empty.
Administrators can control the design of the content [n] field by altering the "Content Field [n] CSS". Please note that the class name defined in the CSS -- .dsContentField[n] -- must remain intact for the formatting to take effect.
To limit the number of characters that display from the content field, enter a number up to 999 in the "Content Field [n] Truncation" field.
Administrators can also strip HTML formatting from the content field by setting the "Content Field [n] Retain HTML" attribute to "No". The advantage of stripping HTML formatting is if your content field contains many < Div > or < Table > references. Stripping the HTML content will return plain text that will inherit the formatting assigned in the "Content Field [n] CSS" field.
Maintaining HTML formatting -- setting Content Field [n] Retain HTML to "Yes" -- will return HTML and text. Take note that truncating HTML may adversely affect the design of your site.
Administrators can display an image adjacent to or on top of every record that appears in the dynamically generated content list by inserting the name of the image field from the module into the "Define Image Field" attribute. If the module from which the content is coming contains no image filed, leave the image field blank and move on to the "Formatting" tab.
The attributes "Image HSpace," "Image VSpace", Image Height", "Image Width" and "Image Display Position" define the location and appearance of the image that will appear in each record.
"Image HSpace" defines the horizontal margin (in pixels) around the image.
"Image VSpace" defines the vertical margin (in pixels) around the image.
To proportionally size the image using the height attribute, insert a height (in pixels) into the "Image Height" field, and leave the "Image Width" field blank. All images will appear at that height and width.
To proportionally size the image using the width attribute, insert a width (in pixels) into the "Image Width" field, and leave the "Image Height" field blank. All images will appear at that width and height.
Administrators can also leave both image width and height blank to display the image at its real, uploaded size.
Finally, the "Image Display Position" determines where, relative to the content, the image will display. The options include:
Content Left (inline, aligned to the left of the content)
Content Right (inline, align to the right of the content)
Top Left (on top of each record, aligned left)
Top Center (on top of each record, aligned center)
Top Right (on top of each record, aligned right)
Formatting Tab
The "Formatting" Tab allows administrators to further define the look and feel of their scripts, determining the orientation of the list or columnar display, the record alignment, and a custom "no data to display" message, among other options.
The "Repeat Columns" and "Repeat Direction" attributes work in tandem to display the list. The default "Repeat Columns" value is "1" and the default "Repeat Direction" value is "Vertical". These two settings will display records in this orientation:
Title 1
Date 1 (if displayed)
Content Field 1 (if displayed)
Title 2
Date 2 (if displayed)
Content Field 2 (if displayed)
Title 3
Date 3 (if displayed)
Content Field 3 (if displayed)
Assigning a value greater than one to the "Repeat Columns" attribute will allow administrators to display records adjacent to each other. For example, entering "2" in the "Repeat Columns" attribute and choosing "Vertical" as the "Repeat Direction" option will display six records in this orientation:
| Title 1
Date 1 (if displayed)
Content Field 1 (if displayed) |
Title 4
Date 4 (if displayed)
Content Field 4 (if displayed) |
| Title 2
Date 2 (if displayed)
Content Field 2 (if displayed) |
Title 5
Date 5 (if displayed)
Content Field 5 (if displayed) |
| Title 3
Date 3 (if displayed)
Content Field 3 (if displayed) |
Title 6
Date 6 (if displayed)
Content Field 6 (if displayed) |
Choosing "Horizontal" as the "Repeat Direction" value will display six records in this orientation:
| Title 1
Date 1 (if displayed)
Content Field 1 (if displayed) |
Title 2
Date 2 (if displayed)
Content Field 2 (if displayed) |
| Title 3
Date 3 (if displayed)
Content Field 3 (if displayed) |
Title 4
Date 4 (if displayed)
Content Field 4 (if displayed) |
| Title 5
Date 5 (if displayed)
Content Field 5 (if displayed) |
Title 6
Date 6 (if displayed)
Content Field 6 (
-
-
Ecommerce Cart
All standard modules are designed to support ecommerce by simply enabling it using the module’s properties. Enabling ecommerce adds the Ecommerce tab to the module and allows you to begin setting up the values required for ecommerce to work. Once all of the records in a module contain the required Ecommerce values you can then create a record in the Ecommerce > Cart module or use the Default record to store items that are added to the cart. The cart module is designed to create an invisible repository for both open and closed orders and control how the cart behaves and looks.
The cart module contains four tabs: Details, Default, Summary, and Completed. The Details tab is used to give the cart a name, set up some initial values, and determine how the cart behaves. The other three tabs are used to control how the cart will look. The View property of the generated CpScript may be set to Default, Summary, or Completed and will display data using the attributes from the related tab in the module. In addition to simply displaying the data, the Completed view will clear the cart and store the order with the new status of Completed. This view should only be displayed once the final processing is completed which is typically done using Form > Thank You Message attribute. All views also generate two hidden fields, ItemQuantity and DigitalItems, which can be used within forms management for validation or processing.
The CpScript generated by this module must be included in a Form and will cause the generation of a new cart if one does not already exist. If it is included on a public page the user has not been authenticated (logged in), therefore, a temporary user id will be generated. The cart can be completed using the temporary user id, but if the user does log in the cart will be transferred to their account. The cart maintains its items across user sessions and can be integrated with Sales Tax, Shipping, Discounts, and other CpScripts. When a cart is regenerated after a user’s session expires, or the items or their quantity changes, all external data is cleared and must be reentered by the user.
Adding items to the cart is easy from the Details View (#3) of a standard module. You simply include a FormAddToCartButton CpScript in the module designer and it will automatically add the item to the cart using the values stored in the Ecommerce tab of the record. This button also automatically searches for a form item, typically a FormTextBox, in the same form group named Quantity and will add the item to the cart the provided number of times. The FormAddToCartButton may also be used on the Results View (#2) or within a Data Source, but the setup is a bit more complicated. First you must be sure to add the Group and UniqueIdColumn properties to the button and all related form items so that it does not use the default group and creates a unique form per record. You also must explicitly assign the DataId of the item that you want added to the cart. You do this by adding a FormHiddenField with the same Group and UniqueIdColumn and the following additional properties: Id=’DataId’, and DefaultValue=’cpsys_Constant:ColumnData:DataId’. The DataId column must exist when using this technique within a DataSource. You can also set up a FormHiddenField called Origin if you wish to populate the documents originating URL manually. If you are on a standard modules results view you can even set defaultValue='BuildUrl' to have the appropriate URL generated for the record.
You can also add integrated items to the cart. An integrated item is any item that does not have a DataId and therefore is not automatically recognized by the system. It is typically displayed on the site using Data Sources. In this case you simply create form items, typically FormHiddenField CpScripts, containing the following Id’s: IntegrationId, Title, Summary, OriginalPrice, CurrentPrice, DimWeight, IsTaxable, and Type. These form items will usually have the DefaultValue property set using cpsys_Constant:ColumnData:ColumnName. The item will be added to the cart using these values instead of the values stored in the module’s ecommerce tab. Since integrated items cannot be verified by the system many cart features are not supported.
Some items require additional information like Size or Color. The system supports this kind of item and calls this additional information Variants. Variants are added to an item by adding a form item, typically FormRadioButtonList, containing the appropriate Group and UniqueIdColumn when necessary and setting the property Variant=’Message displayed when the variant is not selected.’ This new variant property is supported in all standard CpScripting Form controls when used with a FormAddToCartButton. Be aware that variants will not work with cart validation based on stock or the maximum quantity per user because these values are only set once per item, not per variant.
Finally, the FormAddToCartButton may be included within Default > Item Content attribute of the Cart module itself. In this case you must set Group=’OrderItem’ and UniqueIdColumn=’OrderItemId’ so that the button works in coordination with the order item hidden fields generated by the system. You can also add a FormTextBox CpScript with the Id=’Quantity’ to allow the user to enter the quantity, but in this case the quantity will replace the items current quantity instead of adding to it. This CpScript must also use the same Group and UniqueIdColumn as the button itself. You may add a Remove=’true’ property to cause the button to remove an item from the cart instead of looking for a DataId text box, but changing the Quantity to 0 will also remove an item from the cart. If you wish the form buttons (next, previous, submit, custom) to automatically update the cart item quantities you cannot use individual item update buttons and you should change the Id of the FormTextBox to '{{0}}_Quantity'. In this case you must also include the cart on every page of the form so that it is available to update the item quantities. If you have a page where you do not want the cart you may use the view='Hidden' property of the cart CpScript.
This module contains a Custom Provider module property which developers can use to override standard cart methods like InsertItem. To use this property you must first create a class which inherits from Centralpoint.WebSite.Ecommerce.Cart. It can be created in a my_Modules or Custom file/folder and namespace depending on whether you want it to sync to all sites or use it in select sites. This class must override both public constructors as demonstrated in this example. It can then override any virtual method in the inherited Cart class. Be aware that overriding a method, especially without calling the base method, may cause compatibility issues in future updates. Be sure to watch the sync notes and test any ecommerce related changes in the development site before syncing to a production site when this module property is in use. Once the class is created the module property should be set to the complete type name, e.g., Centralpoint.WebSite.Custom.TemplateCart.
Ecommerce Sales Tax
You can setup an Sales Tax for your Ecommerce in Ecommerce > Sales Tax Module.
This module let you setup international or local tax rates for regular product or a digital product.
FormAddressInfo cp:script will retrieve appropriate tax rates based on user billing information and set those rates in cart of the user.
CartDownloadDigitalItems
This script will display URL for Digital Items which were purchased. It can be used in thank you page or in the email.
[cp:scripting key='CartDownloadDigitalItems' id='DigitalItems' usefullyqualifiedurl='' /]
| Property |
Description |
| usefullyqualifiedurl |
true or false. Optional value. need to be set to true if this script used in email. |
| Format |
A format string used to prefix or suffix the return value. Include '{{0}}' in the string where you would like the value to be placed. |
Add Additional payment method(
In order to add additional payment mended you need to follow next steps:
1. Cart Checkout From add additional page and shift Editor HTML from page 3 to page 4 and page 4 to page 5.
2. On page 3 and FormRadioButtonList csript SystemType='KeywordList' SystemName='PaymentMethod' and apply validator to that control.
Example:
3. On page 4 of the form add alternativePaymentMethod='true' PaymentMethodId='PaymentMethod' to 'FormPayment' cpScript
4. Ecommerce > Cart > Summary > SummaryHeaderContent add PaymentMethodId='PaymentMethod' to 'FormPayment' cpScript
FormPayment
This script will display FormPayment form and posses the payment based on the data id parameter which should match data id of the record in Ecommerce > Merchants module.
[cp:scripting key='FormPayment' dataid='DataId_Ecommerce_Merchants_Module' stage='summary' alternativePaymentMethod='true' PaymentMethodId='PaymentMethod' FormPaymentPreview='true' /]
| Property |
Description |
| dataid |
data id of the record in Ecommerce > Merchants module |
| stage |
stage of the script. supported values are: form or summary. |
| alternativePaymentMethod |
optional. true, false. default false. If form payment supports alternative Payment Method like e-check or Purchase Order. Custom set-up required. |
| PaymentMethodId |
optional. works with alternativePaymentMethod. takes id of the control which defined all Payment Methods. |
| FormPaymentPreview |
optional. default value is false. if set to true then payment information will be stored in the form and available in emails or completed page.
The card number will only display last 4 characters of the Credit Card.
NameOnCard: [cp:scripting key='FormState' id='FormPayment_NameOnCard' /]
CardNumber: [cp:scripting key='FormState' id='FormPayment_CardNumber' /]
CardType:[cp:scripting key='FormState' id='FormPayment_CardType' /]
CardExpiration:[cp:scripting key='FormState' id='FormPayment_CardExpiration' /]
|
-
Ecommerce Discounts
Form Discounts
This script will create Form Discounts control.
This script will only work on the Cart Checkout > Payment Method page and preview on Ecommerce gt; Cart gt; SummaryFooterContent.
We support 3 css classes which will let you change display of the discount items.
formdiscountsalert - any error/alert message.
formdiscounttext - discount text.
formdiscountitems - all discount which has been applied.
[cp:scripting key='FormDiscounts' id='FormDiscounts' format='<br/><div>{{0}} {{1}}</div><br/>' textBoxFormat='Coupon {{0}}' buttonText='Apply Discounts' buttonImage='/Integrations/Centralpoint/Resources/CartDefaultImages/Apply_sm.gif' Limit='' AutomaticDiscounts='false' RemoveDiscountButtonImage='' EditDiscountButtonImage='' view='hiddenform' /]
| Parameter |
Description |
| Id |
The id of the form element. |
| TextBoxFormat |
A format string used to prefix or suffix the return value. Just include '{{0}}' in the string where you would like the value to be placed. |
| ButtonText |
Enter the text you want to display on your button. |
| ButtonImage |
Takes image path and an image button will be used instead of a standard button. |
| Limit |
Takes numeric value to limit number of discounts to be applied. By removing the value you will remove any restrictions. By default it has no limit. |
| AutomaticDiscounts |
This property supports the following values: true, false. Enter true to have to apply dicsounts automaticly(without clicking of the apply button).Those discount can't be removed. By default automatic discounts are disabled. |
| RemoveDiscountButtonImage |
Takes image path and will replace a default image. |
| EditDiscountButtonImage |
Takes image path and will replace a default image. |
| SuppressIndividualItemsErrorMessages |
optional. supported values. true, false. will Suppress Individual Items Error Messages and display only one message instead. |
| View |
This property supports the following values: Empty and hiddenform. hiddenform will remove discount text box and apply button. |
You can insert a coupon code in a URL and have the system automatically apply that code to the cart. In order to do this you will need to provide user with link to the cart.aspx and passing coupon value in URL query string parameter. http://www.example.com/Main/Cart.aspx?couponCode=save10.
We also support an optional query string parameter pageURL.
pageURL parameter is used to redirect user to the specific page after applying a coupon code.
http://www.example.com/Main/Cart.aspx?couponCode=save10&pageURL=/Main/Home.aspx.
Form Field Types Reference
Centralpoint Forms support 13 different field types. Here's a quick reference for the most commonly used types:
| Field Type |
Purpose |
Key Parameter |
| FormTextBox |
Single-line or multi-line text |
TextMode='MultiLine', Rows='4' |
| ExtDatePicker |
Date picker with calendar |
sourceFieldId (requires 3 components) |
| FormListBox |
Dropdown selection |
AddListItems (XML format) |
| FormUpload |
File upload control |
defaultValue stores file path |
| FormSignature |
Digital signature capture |
Width, Height (auto-creates 4 metadata fields) |
| FormEditor |
Rich text WYSIWYG editor |
Width='980' |
Key Point: All form fields require a group attribute that must be identical across all form components (HTML, Field Map XML, email templates). Mismatched group names cause silent failures.
DataSource Best Practices
DataSources consist of four components that must work together correctly:
| Component |
Purpose |
| SQL SELECT |
Retrieves data from database |
| Template Content |
Wrapper HTML, runs once at beginning |
| Item Content |
Repeating template for each record |
| Styles (CSS) |
Visual styling (prefer embedding in Template) |
Critical Rules
Rule 1: The Placeholder Requirement
Template Content MUST include: ItemContent
Without this exact placeholder, rows will NOT render even if SQL returns data.
Rule 2: Attributes vs Standard Fields
Standard fields: name='FieldName'
Attribute fields: name='cpsys_Attributes:FieldName'
They will NOT render if called incorrectly.
-
Editor Loads Slowly
Visit the link below for a technical description of the problem. http://www.telerik.com/support/kb/article/b454K-8op-b454T-K.aspx
-
Editor Module Manager Tool Properties Inspector Option Problems
This problem has been resolved in Centralpoint v8.7.1 with the release of Telerik UI for ASP.NET AJAX v2017.1.228.
You may notice that the properties inspector option in the editor's module manager toolbar tool doesn't work when you have it enabled via Admin > RTF Editor > Tools > Module Manager = Yes and Editor Modules > Properties Inspector Enabled = Yes. This is a known issues released by Telerik in the latest update, but could not be resolved by Telerik in time for inclusion in Centralpoint's upgrade. It will be resolved in Centralpoint's next Telerik upgrade, but the following work-around is available in the meantime if you rely on this feature.
A new Properties Inspector Visible option has been added to the Admin > RTF Editor > Editor Modules tab which is set to No by default. If you change this attribute to Yes the properties inspector option will work properly but the properties inspector will be visible in all RTF editors by default. If you would prefer that the properties inspector is hidden by default as it was previously, you can set the RTF Editor > Configuration > Custom Client Load Scripts attribute to "/Integrations/Centralpoint/Resources/Controls/CpEditor/PropertiesInspectorBugFix.js" to hide the properties inspector by default using a client method. The module manager toolbar tool's properties inspector option will then function as it did previously. This patch will not affect future editor upgrades, but can be removed after the next upgrade if desired.
If your site already contains Custom Client Load Scripts you must open the referenced file and copy the code from the CpEditor_Custom_OnClientLoad into your existing CpEditor_Custom_OnClientLoad method. If editor layout issues occur they can resolved by commenting in the editor.repaint(); line in the custom file. It would be wise to copy this file to the site's Uploads directory and reference it locally before making any changes to prevent overwrites during the sync process.
The fixes outlined above only apply to Centralpoint consoles. If you are experiencing this problem on the front-end of a site via the FormEditor CpScript it will require a manual change in the /Root/App_Data/RadControlsEditorToolsFile.xml or RadControlsEditorToolsFile_Basic.xml file by setting root/modules/module name="RadEditorNodeInspector" visible="true" to show the properties inspector by default. If you require that the properties inspector is hidden by default you'll also have to update the /Root/Modules/Forms/Editor.js file manually. The onClientLoad method can be updated to include the same line of code from the CpEditor_Custom_OnClientLoad method, and this file should be added to the site's sync exclusions to ensure that the file is not overwritten during the sync. If this change is necessary it should be removed after the next Telerik upgrade so that the file can be removed from sync exclusions and get system updates.
-
Email Access
This module is used to design an interface to display a user's email. It has been depreciated in favor of Admin > Mail, Contacts, Calendars. It generates a CpScript that can be placed in any module and attribute that supports scripting. Be sure to use your mouse to hover over the names of the attributes because many of the more confusing attributes are described using tool tips. This script is designed to retrieve the user's credentials from their account using UserInfo scripts, therefore, it should be placed on private pages to ensure that the user has been authenticated.
The Details tab describes how the users account will be accessed. You may type a username and password into the provided attributes, but it is recommened that you use UserInfo scripts to access this information. For instance, if you are using the Active Directory Global Login with Outlook Web Access you can use the [cp:scripting key='UserInfo' attributesystemname='OwaUsername' /] and [cp:scripting key='UserInfo' attributesystemname='OwaPassword' /] CpScripts which are automatically populated by the login. Since the OwaPassword is automatically encrypted by the system you should set the IsEncrypted attribute to "Yes".
The Formatting tab is in charge of designing your email interface. In this case we use Template Content attribute both the header and footer content included the item content using the [cp:placeholders key='ItemContent' /] script. If you are using the Active Directory Global Login with Outlook Web Access you can also link the Inbox text to "/Accounts/Owa.aspx" to automatically link the interface to Outlook.
-
Enable WCF on windows server 2012
ENABLE WCF WINDOWS SERVER 2012
If you didn’t install HTTP-Activation for WCF Services, you will get a 404 error when trying to access your service directly.
To be able to run HTTP WCF Services, do as follows:
1. Run Server Manager from your task bar or start menu
2. Choose the server you want to install WCF on
3. Scroll down to “Roles and Features” from task drop down
4. On “Add Role or Feature Wizard” dialog, click down to “Features” in the list of pages on the left
5. Expand “.NET 4.5″ – if you haven’t installed it already, go back to “roles” and install it first
6. Under WCF Services” check the box “HTTP-Activation”. You can also add other types (TCP, Named Pipes, etc) if you will need them
7. Click “Install”

-
Enabling Solutions In Visual Studio
Go to Tools/Options in the Visual Studio toolbar. Click on 'Projects and Solutions' and check the 'Always Show Solution' checkbox. This will allow you to right click on your solution, rename it, and add additional projects.
-
Enter Key Submission
ASP.NET automatically clicks the first image button on the page unless you specifically state which button to click. This can cause a search box or login form at the top of the page to be executed after filling out a physician search in the middle of the page. To prevent this problem you must wrap your form in a div and tell the div which button to click. You can find the id of the button by viewing the source of the page and looking for the id attribute of the button form element.
<div onkeypress="javascript: return [cp:scripting key='FireDefaultButton' /]">FORM CONTENTS</div>
Fire Default Button
Creates the enter key event for the element..
[cp:scripting key='FireDefaultButton' /]
| Property |
Description |
| targetClass |
This the optional class of the button to be clicked. |
-
Error Messages
The web sites web.config file and Global.asax file have been equipped to handle custom errors. When an error occurs within the application the Global.asax determines if the error is an HTTP error and handles it accordingly. This feature requires custom errors to be on in the web.config file.
If the current error is a 404 error and a 404 Redirect record exists with an Original URL value that matches the URL on which the error originated the user will be redirected to the URL entered in the Redirect To attribute. The Redirect To URL cannot exist in any other record as the Original URL or the redirect will be blocked. The original URL must be root relative or fully qualified and directories should not contain a trailing slash (/). This redirect only occurs if the page on which the error occurred is handled by the .NET framework. To get other pages to support this feature you manually change the IIS settings for the site. Under the Custom Errors tag the 404 HTTP Error must point to the URL '/Error.aspx'.
All HTTP errors that are not existing 404 Redirects are redirected to a page that finds the custom error message based on the current error. If no message is found the default message will be displayed regardless of its enabled status or whether it is URL specific. If this record does not contain a valid message a system message will be displayed. URL specific error messages that exist for the current hostname will be displayed before general error messages, and may be formatted "*.yoursite.com" to use one error message for all versions of a hostname including "yoursite.com". Pages that are not handled by the .NET framework may not report errors properly in IIS 6. In this case change the Custom Error within IIS 6 to '/Error.aspx'. This will cause IIS to send these errors to your custom error page.
We support custom error handling. You can enable this by navigating to module property and setting Custom Error Pre-Processor to yes.
Chane the name of the method in Custom Method to your method name and create that method in your cp:scripting file. You can copy the template for CustomErrors which located in Root\App_Code\DevV\CpScripting.cs
-
Errors
When an unhandled exception occurs this console or web site a copy of the error is stored in this module. An unhandled exception assumes that the client was was provided an error page. This page then trapped the error, page, and user details and reported them to this module. This list of errors is designed to provide a place to study errors, look for patterns, and store notes regarding site problems.
-
Errors
When an unhandled exception occurs in any console or web site CDA (Content Delivery Application) a copy of the error is stored in this module. An unhandled exception assumes that the client was was provided an error page. This page then trapped the error, page, and user details and reported them to this module. This list of errors is designed to provide a place to study errors, look for patterns, and store notes regarding site problems. A master error has an empty web site name.
-
Errors
When an unhandled exception occurs in any console or web site CDA (Content Delivery Application) a copy of the error is stored in this module. An unhandled exception assumes that the client was was provided an error page. This page then trapped the error, page, and user details and reported them to this module. This list of errors is designed to provide a place to study errors, look for patterns, and store notes regarding site problems. An uber error has an empty master and web site names, and a master error has an empty web site name. Only errors where the 'System' attribute is set to 'No' will be displayed in descendant consoles. Setting this attribute to yes will remove that error from all descendant consoles. The 'Notes' attribute is used to store system notes related error, such as a solution if it cannot be solved programmatically. This attribute is never displayed in descendant consoles. The database is enforcing automatic error deletions when web sites deleted, but not when masters are deleted. Masters should never be deleted, but if they are manually deleted from the database the errors table may contained orphaned records.
-
Events Module
Setting up the calendar
Starting on July 16, 2018 new prices systems are now in effect for the Google Maps Platform. This is only in affect if you are using the GeoCodes attribute in this module.
Please see the User Guide and view this option's billing
here.
- Linking
To link to the calendar month view you must use a query string variable. The link looks like this: /AudienceSystemName/NavigationItemSystemName.aspx?calendar=y
- Module Designer
There is a new tab in Site Architecture > Module Designer > Events called Calendar Month View. This is where you control the design of the calendar view.
- Attribute Definitions
- Header Content
The html that will show up above the calendar.
- Event Item Content
Here you can use cp:scripting to build and display any information from the relation. Each event’s data will show up in its own DIV. In order to make the event titles link to their details view, you must build the link yourself.
Here is an example: /Main/Events/Column: Object reference not set to an instance of an object..aspx.
The CSS for the div that holds the event data and its title link is handled in the attribute called "Event Title CSS".
The default is “<a href="#">Column: Object reference not set to an instance of an object.</a>”
- Link to Day View
This will link the calendar's date to the List View for a single day of events.
- Display Top Events
This will filter the top events by in a single day.
- Record Filter
This is the number of events to show in a single day.
- Calendar See More Link
This will show a linkk to the List View for a single day of events if there is more events than the Record Filter displays.
- See More Link Text
This is the text for the See More Link. It defaults to See More..
- Grid Color
A color picker that will set the color of the calendar grid lines. The default is black.
- Title Bar CSS
This is where you control the CSS class for the bar where the month navigation and month name is.
- Event Title CSS
Here is where you control the div and its child controls (links) for the event data. So there is no need to add a class definition to the Event Item Content html.
- Event Day Cell CSS
For the days that have events on them, you may control the look of the cell that holds the title.
- Day Header CSS
The class definition for the cells that hold the day names.
- Day Cell CSS
This class definition controls all the day cells that do not have an event or is not the current day.
- Today’s Day Cell CSS
This class definition controls the current day’s cell.
- Calendar Date Number CSS
This class definition controls the date numbers.
- Previous Navigation Type
This is an attribute switch that will allow you to choose between an image or text for the month navigation.
- Next Navigation Type
This is an attribute switch that will allow you to choose between an image or text for the month navigation.
- Footer Content
The html that will display under the calendar.
- CSS classes for Calendar
- Day Class
cpsty_CalendarDayCell
- Day Header Class
cpsty_CalendarDayHeader
- Today Day Class
cpsty_CalendarTodaysDayCell
- Title Class
cpsty_CalendarTitleBar
- Other Month Day Class
cpsty_CalendarOtherMonth
- Weekend Day Class
cpsty_CalendarWeekendDayStyle
- Day Class
cpsty_CalendarDayStyle
- Date Number Class
cpsty_CalendarDateNumber
CalendarDate
This databind method displays the Calendar date.
[cp:databind key='CalendarDate("m")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| format |
The date formats. For valid formats please Click here |
DateSelector
This cpcontrol populates the dropdown with dates based on passed values for pastMonths and futureMonths attributes.
[cp:control key='DateSelector' cpsys_src='/Modules/Events/Common/Calendar/DateSelector.ascx' pastMonths='58' futureMonths='49' format='{{0:y}}' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| pastMonths |
An integer value to calculate starting date. It calculates the starting date based on current date. Its default value is set to 12. Eg. If current date is 11/2011 and if this attribute is set to 12 then starting date will start from 11/2010. |
| futureMonths |
An integer value to calculate end date. It calculates the end date based on current date. Its default value is set to 12. Eg. If current date is 11/2011 and if this attribute is set to 26 then end date will be 01/2014. |
| format |
The format for date. The syntax for this should be : {{0:format}} eg: {{0:y}}. For formats please click here |
| pleaseSelectText |
The text to set text for Please Select. The 'Please Select...' text is set as it's default. |
TaxonomySelector
This cpcontrol populates the dropdown with taxonomies for passed parentTaxonomyId.
[cp:control key='TaxonomySelector' cpsys_src='/Modules/Events/Common/Calendar/TaxonomySelector.ascx' parentTaxonomyId='' futureMonths='49' pleaseSelectText='' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| parentTaxonomyId |
A guid value for Parent Taxonomy Id. It takes the Root taxonomy id if it is left empty. |
| pleaseSelectText |
The text to set text for Please Select. The 'Please Select...' text is set as it's default. |
| showSubCategories |
This will create a children Taxonomy dropdown. It's values are true or false. It is set to false by default. |
| subCategoriesPleaseSelectText |
The text to set text for Please Select for the children Taxonomy dropdown. The 'Please Select...' text is set as it's default. |
ViewSelector
This cpcontrol populates with List and Grid options to display the Events. This control can be used in Header Content of any Calendar View as per requirement.
[cp:control key='ViewSelector' cpsys_src='/Modules/Events/Common/Calendar/ViewSelector.ascx' pleaseSelectText='' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| pleaseSelectText |
The text to set text for Please Select. The 'Please Select...' text is set as it's default. |
Setting up the Calendar List View
- Linking
To link to the calendar list view you must use a query string variable. The link looks like this: /AudienceSystemName/NavigationItemSystemName.aspx?list=y
There is also an option for a Day List View. The link looks like this: AudienceSystemName/NavigationItemSystemName.aspx?list=day&date=MM-dd-yyyy if the date is left empty it will show the current day.
- Module Designer
There is a new tab in Site Architecture > Module Designer > Events called Calendar List View. This is where you control the design of the calendar view.
- Attribute Definitions
- Css Class
The css classes for calendar list view contents. You can write css classes for list view contents.
- Header Content
The html that will show up above the calendar list view. Here you can use calendar cpcontrols like DateSelector, TaxonomySelector and View Selector. To display the selected date in header, the databind 'DisplaySelectedDate(string dateFormat)' can be used. The databind WeekView(string text) and MonthView(string text) can be used here to switch to week and month view respectively.
- Day Header Content
Here you can use cp:scripting to build and display any information from the relation. This will be displayed as header for each event in the list. For example : Column: Object reference not set to an instance of an object. This will display Event start date of each event as its header.
- Item Content
Here you can use cp:scripting to build and display any information from the relation. In order to make the event titles link to their details view, you must build the link yourself.
Here is an example: /Main/Events/Column: Object reference not set to an instance of an object..aspx. To show the body copy of event, you can use databind 'ViewDetails(object dataItem, String text, string cssClassVDLink)', this will display content of each event with View Details link to link to Details view of Event.
- Footer Content
The html that will display under the calendar list view.
DisplaySelectedDate
This databind works in Header Content of CalendarListView tab for Events Module. This dipslays the Selected date from DateSelector in List View if date is selected from DateSelector control otherwise displays the Current month date.
[cp:databind key='DisplaySelectedDate(Container.DataItem,"MMMM yyyy")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| dataItem |
The current DataItem. |
| dateFormat |
The date formats. No need to pass 0, just pass the format as string. For example: DisplaySelectedDate("d"). The default value is "y". For valid formats please Click here |
ViewDetails
This databind works in Item Content of CalendarListView tab for Events Module. This dipslays the content of each event with View Event Details link if content length is more than 256 characters. This link points to the Details View of the event.
[cp:databind key='ViewDetails(Container.DataItem,"View Event Details","CssClassNameForLink")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| dataItem |
The current DataItem. |
| text |
The text(label) for View Event Details link. The default value is 'View Event Details'. |
| cssClass |
The name of css class which will be applied to View Event Details link. |
Setting up the Calendar Week View
- Linking
To link to the calendar week view you must use a query string variable. The link looks like this: /AudienceSystemName/NavigationItemSystemName.aspx?week=y
- Module Designer
There is a new tab in Site Architecture > Module Designer > Events called Calendar Week View. This is where you control the design of the calendar week view.
- Attribute Definitions
- Css Class
The css classes for calendar week view contents. You can write css classes for week view contents.
- Header Content
The html that will show up above the calendar week view. Here you can use cp:scripting to build and display any information from the relation. Here you can use calendar cpcontrol like TaxonomySelector to filter the content. To display the date for current week in header, the databind 'DisplayCurrentWeek(string dateFormat)' can be used. To navigate through previous and next week, the datbind 'Next(string textForLink)' and databind 'Previous(string textForLink)' can be used. The databind MonthView(string text) and ListView(string text) can be used to switch to Month and List View respectively.
- Item Content
Here you can use cp:scripting to build and display any information from the relation. In order to make the event titles link to their details view, you must build the link yourself.
Here is an example: /Main/Events/Column: Object reference not set to an instance of an object..aspx. The content can be alingned using tables or Divs.
- Footer Content
The html that will display under the calendar week view.
DisplayCurrentWeek
This databind works in Header Content of CalendarWeekView tab for Events Module. This dipslays the date for Current week.
[cp:databind key='DisplayCurrentWeek("dateFormat")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| dateFormat |
The date formats. The default format is {{0:D}}. Need to use format {{0:dateformat}}. For valid formats please Click here |
DisplayDayInCurrentWeek
This databind works in Header Content of CalendarWeekView tab for Events Module. This will display the date for Current week, adding or subracting days to the first day of the week.
[cp:databind key='DisplayDayInCurrentWeek("daysToAdd", "dateFormat")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| daysToAdd |
This will add or subtract days to show the date. This will offset from the first day of the week. So to show the week end, use 6. It can be a positive or negative number. |
| dateFormat |
The date formats. The default format is {{0:D}}. Need to use format {{0:dateformat}}. For valid formats please Click here |
NextWeek
This databind works in Header Content of CalendarWeekView tab for Events Module. This dipslays the link to navigate to Next week events.
[cp:databind key='NextWeek("Next")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| text |
The text for Next week. The defualt value is "Next Week". |
PreviousWeek
This databind works in Header Content of CalendarWeekView tab for Events Module. This dipslays the link to navigate to previous week events.
[cp:databind key='PreviousWeek("Previous")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| text |
The text for Previous week. The defualt value is "Prev Week". |
WeekView
This databind displays a link to switch to Calendar Week View. This can be used in Header Content of any Calendar View.
[cp:databind key='Centralpoint.WebSite.Modules.Events.Calendar.WeekView("Week")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| text |
The text for Week view link. The defualt value is "Week". |
ListView
This databind displays a link to switch to Calendar List View. This can be used in Header Content of any Calendar View.
[cp:databind key='Centralpoint.WebSite.Modules.Events.Calendar.ListView("List")' /]
| Property |
Description |
| Key |
The term which will have its alias displayed if it exists, otherwise the term itself will be displayed. |
| text |
The text for List view link. The defualt value is "List". |
MonthView
This databind displays a link to switch to Calendar Month View. This can be used in Header Content of any Calendar View.
[cp:databind key='Centralpoint.WebSite.Modules.Events.Calendar.MonthView("Month")' /]
| Property |
Description |
| Excel truncating text in cells in DataTransfer
Excel truncating text in cells in DataTransfer
When you import data from a Jet OLEDB 4.0 data source(microsoft products)
Microsoft samples some number of rows at the beginning of your spreadsheet when it creates the Excel source. If on the ShortDescription column it doesn't notice anything too large, it will default to a 255 character text column.
So To import data from a column that contains rows with large amounts of data without truncation, you must make sure that the ShortDescription column in at least one of the sampled rows contains a value longer than 255 characters, or you must increase the number of rows sampled by the Jet Excel driver to include such a row. You can increase the number of rows sampled by increasing the value of TypeGuessRows under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel registry key.
sometime for 64 bit computers you may need to alos update Access Connectivity
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel
Or better and safer solution is to export data to
tab or comma delimited format and
as you matching columns change their type to Memo instead of the text
Here is the microsoft article describing same issue
http://support.microsoft.com/kb/281517
Ther reference Data Transformation Services (DTS)
which use same microsoft drivers.
DataSource Best Practices
DataSources consist of four components that must work together correctly:
| Component |
Purpose |
| SQL SELECT |
Retrieves data from database |
| Template Content |
Wrapper HTML, runs once at beginning |
| Item Content |
Repeating template for each record |
| Styles (CSS) |
Visual styling (prefer embedding in Template) |
Critical Rules
Rule 1: The Placeholder Requirement
Template Content MUST include: ItemContent
Without this exact placeholder, rows will NOT render even if SQL returns data.
Rule 2: Attributes vs Standard Fields
Standard fields: name='FieldName'
Attribute fields: name='cpsys_Attributes:FieldName'
They will NOT render if called incorrectly.
CpScript Tag Reference
Common CpScript tags for displaying dynamic content:
| Tag |
Purpose |
Example |
| Column |
Display field values |
Column: Object reference not set to an instance of an object. |
| UserInfo |
Display user properties |
UserInfo: Your UserInfo script must have attributeSystemName parameter. |
| IfInRole |
Show content by role |
|
| NavigationTier |
Display navigation menu |
|
Syntax Rules: All CpScript tags are lowercase, use single quotes only, and end with a space before /]
-
Export SQL Builder Utility
This tool typically used by senior developers, allows you to see the SQL Query for any module in your site. By selecting any module, it will provide the complete SQL Statement for all records from that module. This Query can then be used to create Data Sources, Data Transfers, or to build any report.
It has been optimized for use within Data Transfer, and although it could be used for reporting or others tasks (to filter record sets), it is not optimized for those purposes.
DataSource Best Practices
DataSources consist of four components that must work together correctly:
| Component |
Purpose |
| SQL SELECT |
Retrieves data from database |
| Template Content |
Wrapper HTML, runs once at beginning |
| Item Content |
Repeating template for each record |
| Styles (CSS) |
Visual styling (prefer embedding in Template) |
Critical Rules
Rule 1: The Placeholder Requirement
Template Content MUST include: ItemContent
Without this exact placeholder, rows will NOT render even if SQL returns data.
Rule 2: Attributes vs Standard Fields
Standard fields: name='FieldName'
Attribute fields: name='cpsys_Attributes:FieldName'
They will NOT render if called incorrectly.
-
Extract Sharepoint Documents Utility
When migrating or extracting documents 'from' Sharepoint this tool is essential to retreive and restore binary images and documents. It will allow you to create a new file structure of all documents (previously in Sharepoint) into a new file directory, wherein files will no longer be binary. From this new directory, typically imports are run in order to migrate these records into Centralpoint. This would be a tool used by senior developers.
Note: This tool will mimic the file directory previously maintained in Sharepoint (including the documents). This tool gives you the option to control various versions of Sharepoint (old to new), wherein some fields below pertain only to certain versions of Sharepoint.
-
Failed Login Attempts
Yes. Users are given 3 attempts to enter their password correctly. If they do not do so, an error message is displayed. To gain access to the system they must contact their administrator and have their password reset. You can view the number of failed of password attempts for a user along with other useful information in the properties view in the client console. To get to the user's properties just visit their record and select 'Show/Hide Properties' from the 'Page Options...' drop down list.
-
File Upload Problems
The file upload component does not support tracing. Ensure that tracing is disabled via the web.config file.
-
FileOutput POST
FileOutput POST
The console tools below make a POST request to generate a dynamic document from the File Output module.
- Design > Script Generator > File Output (Results Download)
- Data Transform > Search Results Output > File Output
*IMPORTANT*
These tools do not have knowledge of the content inside the template. The file output template is expected to contain Data Sources that query tables which contain rows matching the DataIds passed to it in the POST request.
If the downloaded file does not render results that are shown from the website search, please investigate the template file within the File Output record.
The template file either does not contain Data Sources that query tables where the DataIds passed to it reside or the queries have other filters that the website search does not which is excluding results.
Ensuring downloaded files contain the expected results is a responsibility of the console administrator.
These tool sets FormState values for the following IDs: DataIds, Taxonomy
Example SQL Filter for Taxonomy
WHERE LEN('[cp:scripting key='FormState' id='Taxonomy'/]') >= 36
AND (TaxonomyId IN ('[cp:scripting key='FormState' id='Taxonomy' replaceText=', ' replaceWith='cpsys_Apos, cpsys_Apos' /]'))
Example SQL Filter for DataIds
WHERE LEN('[cp:scripting key='FormState' id='DataIds'/]') >= 36
AND (cprel_GenericEnhancedCC.DataId IN ('[cp:scripting key='FormState' id='DataIds' replaceText=', ' replaceWith='cpsys_Apos, cpsys_Apos' /]'))
Form Field Types Reference
Centralpoint Forms support 13 different field types. Here's a quick reference for the most commonly used types:
| Field Type |
Purpose |
Key Parameter |
| FormTextBox |
Single-line or multi-line text |
TextMode='MultiLine', Rows='4' |
| ExtDatePicker |
Date picker with calendar |
sourceFieldId (requires 3 components) |
| FormListBox |
Dropdown selection |
AddListItems (XML format) |
| FormUpload |
File upload control |
defaultValue stores file path |
| FormSignature |
Digital signature capture |
Width, Height (auto-creates 4 metadata fields) |
| FormEditor |
Rich text WYSIWYG editor |
Width='980' |
Key Point: All form fields require a group attribute that must be identical across all form components (HTML, Field Map XML, email templates). Mismatched group names cause silent failures.
DataSource Best Practices
DataSources consist of four components that must work together correctly:
| Component |
Purpose |
| SQL SELECT |
Retrieves data from database |
| Template Content |
Wrapper HTML, runs once at beginning |
| Item Content |
Repeating template for each record |
| Styles (CSS) |
Visual styling (prefer embedding in Template) |
Critical Rules
Rule 1: The Placeholder Requirement
Template Content MUST include: ItemContent
Without this exact placeholder, rows will NOT render even if SQL returns data.
Rule 2: Attributes vs Standard Fields
Standard fields: name='FieldName'
Attribute fields: name='cpsys_Attributes:FieldName'
They will NOT render if called incorrectly.
-
FitBit
In order to setup FitBit within any Centrlapoint Portal you must:
1.) Log into https://dev.fitbit.com/login. Since Google has acquired Fitibt, you will need to use your Google Credentials. and click on the link “Manage Your Apps”.
2.) Register a New App (found in top right of the FITBIT Dev administration page)
3.) It will ask you to enter the Application Name (which can be whatever you choose to call it),
4.) It will ask for a Description (which can be whatever description you choose to give it)
5.) Application Website URL: This will be the URL of your website, or can be a prefixed name (like https://test.oxd20.com)
6.) Organization : Here it will be asking for the actual Organization or owner of the URL (It need not be the same as the URL above in step 5)
7.) Terms of Service URL: Here it is asking for the website which outlines the terms of service or Privacy Policy from the organization (and need not be the same as in step 5)
8.) Privacy Policy URL: Here it is asking for the URL to the Privacy Policy. Often times the terms and privacy are on the same page or url, and you can use the same link for both step 7 and 8 if needed)
9.) oAUTH 2.0 Application Type: Select Server
10.) Redirect URL: Here it asking where to return the user after they have authenticated with FITBIT. THis would be same URL as found within Admin/Properties (or https://www.yourdoman.com//Modules/MyLogs/FitBit/Authorize.aspx)
11.) Default Access Type: Read Only
12.) Next you will need to agree to FITBIT's terms of service (checkbox).
12.) When completed, click on REGISTER
Once you have completed these steps, FITBIT will provide you with FITBIT generated values (needed information) for you to enter into your Admin/Properties, within your Centralpoint Client Console.
They are: FITBIT CLIENT ID, FITBIT CONSUMER SECRET, and FITBIT CALLBACK URL. Please enter the ClientID and Consumer Secret ID, and for the FITBIT Callback URL, use:
https://YOURDOMAIN/main/fit-bit-authorize
In the Client Console's Admin > Template Gallery, click on Sleep Log: Awakenings Count, Sleep Log: Efficiency, Sleep Log: Minutes After Wakeup, Sleep Log: Minutes Asleep, Sleep Log: Minutes Awake, and Sleep Log: Minutes To Fall Asleep. This will put records in the module My Logs > Logs.
On the front end of the client Centralpoint site, make sure that the Navigation record that points to /Modules/MyLogs/FitBit/Authorize.aspx is Private, and send Authenticated Users who have a FitBit to that page. They will then have to Authorize the web site to use their FitBit. When they Authorize, this will take some time for the web site to create a record in Members > Fitbit and also gather the data that will go into My Logs > Member Logs and My Logs > Member Logs Records.
Then if you haven't already, you can set up a Module Designer record for My Logs so that Users can view their Sleep Logs in real time.
There is also a Scheduled Task called FitBit that you will need to turn on. This will go through all of the Members > Fitbit records and if they are enabled, it will gather their data on a daily basis preferably. The Scheduled Task is in the Master > Content > Scheduled Tasks. The Job is called FitBit. You will want to set which website or all the websites that you want the FitBit Scheduled Task to run on, then choose Type Daily.
-
Form State Decode Utility
This tools was created in order to take any encoded form state string, in which to decode. Enter the encoded form state string and click decode. This would be strictly for developers.
Note: Form state stores information about a form, their controls and their values. That information is encrypted, which is why we developed this tool....allowing to decode the form into an unencrypted format, including its values.
-
Forms Management
Forms, Forms Wizard, Workflow & Reporting
T
Centralpoint Forms Wizazrd - The easiest way to create new forms, workflow & reporting
The Forms Management module allows administrators to create and manage single- or multi-page forms that capture data within the CentralPoint database (to specific modules), third-party databases, within emails or in all three -- depending on the administrator's choice. Whichever choice administrators adopt, they can manage email notifications both to the form submitter and web site administrators. Additionally, this module can be used to manage workflow for content that web site users submit.
The module suite is comprised of two modules: Forms and Results, both of which reside under the Forms Management tab. The Forms module manages and displays forms; the Results module houses the form submission results. The module uses CpScripting to build the form elements and form validators. Examples of the Cpscripting that drives the module can be found later in this tutorial.
Chapters
- Creating forms | CpScripting
- Validating Form Fields
- Managing email notifications and workflow
Confirmation emails
Approval emails
- Managing data insertion and sharing
Data insertion into a CentralPoint module
Data insertion into a third-party database
Creation of a user/member profile
Data submission to web requet/response page
* We don't support dash inside of the Group parameter.
Creating Forms
To begin a new form, locate the Forms Management link in the console and click it. The system will automatically send you to the grid view of the Forms module. Click the "New" button in the upper left- hand corner of the grid view to create a new form.
Within the Forms module, the "General" tab allows administrators to build the form to their specifications. This tab contains the following fields: System Title, System Caption, Publish Start Date, Publish End Date, Results, CpSCript, Manage Form Buttons, Submit Button, Cancel Button, PRevious Button, Next Button, Number of Pages, Page 1 through Page 10, Completed, Thank You Message, Prevent Multiple Submissions, Display Status and Audiences.
The "System Title" field is used for console purposes only, but should contain a label that administrators can recognize.
Likewise, the "System Caption" field is used within the console only. Administrators can insert a 512-charactrequireder description for the form's function within this field.
Administrators can set the date range in which the form is available for display on the front end by altering the "Publish Start Date" and "Publish End Date" fields. Take note, too, that you can begin and end the form's display at a precise moment in time by using the hour, minute, second fields.
The "Results" field provides administrators with a link to their form's submission results. This link is also displayed on the module's grid view.
The form that administrators build is referenced through the "CpScript" field. Administrators can copy the contents of this field and place it within a page (or any other RTF field that supports CPscripting) to display the form. A "copy link" feature is also available in the grid view of the Forms module.
"Manage Form Buttons" is a switch (Yes/No) that allows administrators to insert their own custom image buttons that will display as part of the form. Choosing "No" means that CentralPoint's default buttons will display. Choosing "Yes" allows administrators to upload a button for the following actions: "Submit", "Cancel", "Previous Page", "Next Page".
Administrators can define the number of pages a form will contain by choosing the appropriate number from the "Number of Pages" radio button array. Choosing more than one page will trigger the console to display a new RTF editor that corresponds to that page number. The front-end display will always default to the "Page 1" information, and users can toggle from page to page using the "Previous Page" and "Next Page" buttons. Administrators can require users to enter form item values to move from one page to the next. More about that in the "validators" section below.
The "Page [n]" RTF field is where administrators build the form elements. CentralPoint currently supports these form elements:
Text box - [cp:scripting key='FormTextBox' id='Name of Item' /]
Multi-line Text box - [cp:scripting key='FormtextBox' id='Name of Item' TextMode='MultiLine' Rows='5' style='width:250px;' /]
File Upload - [cp:scripting key='FormUpload' id='Name of Item' /]
Radio buttons - [cp:scripting key='FormRadioButtonList' id='Name of Item' AddListItems='<listItem value="Item1" index="1">Item2</listItem><listItem value="Item2" index="2">Item2</listItem><listItem value="Item3" index="3">Item3</listItem><listItem value="Item4" index="4">Item4</listItem>'/]
Check boxes - [cp:scripting key='FormRadioButtonList' id='Name of Item' SelectionMode='Multiple' AddListItems='<listItem value="Item1" index="1">Item2</listItem><listItem value="Item2" index="2">Item2</listItem><listItem value="Item3" index="3">Item3</listItem><listItem value="Item4" index="4">Item4</listItem>'/]
Drop-down menu - [cp:scripting key='FormListBox' id='Name of Item' AddListItems='<listItem value="Item1" index="1">Item1</listItem><listItem value="Item2" index="2">Item2</listItem><listItem value="Item3" index="3">Item3</listItem>'/]
CAPTCHA validation - [cp:scripting key='FormCaptcha' id='Captcha' /]
U.S. State list drop-down: [cp:scripting key='FormListBox' id='States' SystemType='KeywordList' SystemName='StatesCodes' defaultValue='' PleaseSelect='Please select state...'/]
Country list drop-down: [cp:scripting key='FormListBox' id='Country' SystemType='KeywordList' SystemName='CountryCodes' defaultValue='' PleaseSelect='Please select country ...'/]
Months of the year drop-down: [cp:scripting key='FormListBox' id='Months' SystemType='KeywordList' SystemName='Months' defaultValue='' PleaseSelect='Please select month ...'/]
The form element attributes id is the name of the form field. Underscores are valid, however dashes may not be used as part of the id.
The form element attribute selection and its value determines whether a radio button array displays or a check box array displays. Selection='Multiple' displays a check box array. The default is a radio button, or administrators can input Selection='Single' for a radio button array.
The listitem element attribute index determines where in the drop-down, check box or radio button array the item appears. Index="1" displays the item first.
The listitem element attribute value is the value of the list item and is equivalent to the <option value=""> attribute in HTML.
A full list of attributes and their values can be found in the Scripting help file. There are also a number of built-in jquery elements referenced in the Scripting help file that can help you extend the functionality within your form. In that scripting help file, search for any of the following terms: ExtAutoComplete, ExtDatePicker, ExtPasswordStrength, ExtMaskFormInput, ExtWaterMark.
The "Completed" field allows administrators to determine the action upon form submission. Choosing "Thank You Message" allows administrators to display the contents of the RTF "Thank You Message" field. Upon submission, the "Thank You Message" field will appear in place of the form itself. The "Thank You Message" RTF field is required if the value of "Completed" is "Thank You Message".
Alternatively, administrators can redirect their form submitters to a specific page by choosing the "Redirect" option. The value of the "Redirect URL" field governs where the form submitter will be redirected to. The "Redirect to URL" field is required if the value of "Completed" is "Redirect".
To prevent more than one submission of a form by the same person in a one-year period, choose the "Yes" option on the "Prevent Multiple Submissions" field. The "Yes" option sets a cookie on the form submitters browser that will prevent that submitter from sending in more than one form in the time frame that you choose in the "Intervals" and "Interval Values" fields. To limit a user to one form submission per day, choose "Days" in the "Interval" option, and insert a numeral 1 in the "Interval Values" field.
Choose "No" to allow any number of forms submissions from the same person.
The display status option allows administrators to toggle on and off the display of the form on the front end. Choosing "Hold" will not allow the form to display on the front end. Choosing "Release" displays the form on the front end.
The Audiences multi-select field is used for console filtration only, meaning that administrators can limit the display of the form within the console to only certain administrators by audience. This value doesn't affect the front-end display of the form.
Validating Form Fields
Many forms require specific fields to be validated before the form itself can be submitted. Below are the types of form validations CentralPoint supports.
Required Field Validator
You can use this controls to make sure that the user has entered something in a form field.
[cp:scripting key='FormRequiredFieldValidator' id='IDofTheValidator' itemToValidate='NameOfTheFormField' defaultValue='* Error Message'/]
| Property |
Description |
| id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| itemToValidate |
The id of the form element to validate. |
| defaultValue |
Error Message the user will see if no value was entered. |
| errorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| ItemToEnable |
Optional property. Enter Id of the control which will enable or disable this validator. Works together with ItemToEnableOnValue property. |
| ItemToEnableOnValue |
Optional property. Enter the value based on which the validator will get enabled or disabled. Works together with ItemToEnableOnValue property. |
Field Length Validator
You can use this control to ensure the user has entered the appropriate number of characters in a field. A practical example of this is to validate username or password lengths.
[cp:scripting key='FormLengthValidator' id='IDofTheValidator' minimumLength='3' maximumLength='6' itemToValidate='NameOfTheFormField' defaultValue='* Error Message'/]
| Property |
Description |
| id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| itemToValidate |
The id of the form element to validate. |
| defaultValue |
Error Message the user will see if no value was entered. |
| errorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| ItemToEnable |
Optional property. Enter Id of the control which will enable or disable this validator. Works together with ItemToEnableOnValue property. |
| ItemToEnableOnValue |
Optional property. Enter the value based on which the validator will get enabled or disabled. Works together with ItemToEnableOnValue property. |
Unique Field Validator
Use this control to ensure that the user has entered unique value in a form field.
Example:
Validate this username does not already exist within the Members module.
[cp:scripting key='FormUniqueFieldValidator' id='IDofTheValidator' itemToValidate='NameOfTheFormField' table='DatabaseTableName' itemToCompare='DatabaseFieldName' defaultValue='* Error message' /]
| Property |
Description |
| id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| itemToValidate |
The id of the form element to validate. |
| table |
Table in the database you want to validate form input |
| itemToCompare |
Field in the database you want to compare with the submitted form value. |
| defaultValue |
Error Message the user will see if submitted value is not unique. |
| errorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| ItemToEnable |
Optional property. Enter Id of the control which will enable or disable this validator. Works together with ItemToEnableOnValue property. |
| ItemToEnableOnValue |
Optional property. Enter the value based on which the validator will get enabled or disabled. Works together with ItemToEnableOnValue property. |
Unique Fields Validator
Use this control to ensure that the user has entered 2 value between 2 controls are Unique.
Example:
Validate that Procedural Manual Title and Manual Number are does not already exist within the ProceduralManuals module.
r>
[cp:scripting key='FormUniqueFieldsValidator' id='IDofTheValidator' itemToValidate='NameOfTheFormField' itemToCompare='DatabaseFieldName' itemToValidate2='NameOfTheFormField2' itemToCompare2='DatabaseFieldName2' table='DatabaseTableName' defaultValue='* Error message' /]
| Property |
Description |
| id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| table |
Table in the database you want to validate form input |
| itemToValidate |
The id of the form element to validate. |
| itemToCompare |
Field in the database you want to compare with the submitted form value. |
| itemToValidate2 |
Second id of the form element to validate. |
| itemToCompare2 |
Second Field in the database you want to compare with the submitted form value. |
| defaultValue |
Error Message the user will see if submitted value is not unique. |
| errorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| ItemToEnable |
Optional property. Enter Id of the control which will enable or disable this validator. Works together with ItemToEnableOnValue property. |
| ItemToEnableOnValue |
Optional property. Enter the value based on which the validator will get enabled or disabled. Works together with ItemToEnableOnValue property. |
Compare Field Validator
The CompareValidator control is used to compare the value of one input control to the value of another input control.
[cp:scripting key='FormCompareValidator' id='IDofTheValidator' itemToValidate='FormField1' itemToCompare='FormField1' type='String' operator='Equal' defaultValue='* Error message' /]
| Property |
Description |
| AttributeToValidate |
Used to validate the value of a records attribute instead of a form field. It should be set to the system name of an attribute and will only work when ItemToValidate contains the id of a form field which will return the DataId of the record you wish to validate. |
| DefaultValue |
Error Message the user will see if submitted value does not pass the compared requirements. |
| ErrorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| Id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| ItemToCompare |
The id of the form element with which to compare. |
| ItemToEnable |
Optional property. Enter Id of the control which will enable or disable this validator. Works together with ItemToEnableOnValue property. |
| ItemToEnableOnValue |
Optional property. Enter the value based on which the validator will get enabled or disabled. Works together with ItemToEnableOnValue property. |
| ItemToValidate |
The id of the form element to validate. |
| Operator |
- Equal
- GreaterThan
- GreaterThanEqual
- LessThan
- LessThanEqual
- NotEqual
- DataTypeCheck
|
| Type |
- String (Supported Operators: Equalor NotEqual)
- Integer (Supported Operators: All)
- Date (itemToCompare and Operator will be ignored.)
|
| ValueToCompare |
A static value which will be compared. It only works when ItemToCompare is left empty. |
Range Field Validator
Use this control to ensure the user has entered a specific number of characters into the textbox or ensure those characters are of a specific type (Number, Date, String).
[cp:scripting key='FormRangeValidator' id='IDofTheValidator' itemToValidate='NameOfTheFormField' type='Integer' minimumValue='3' maximumValue='9' defaultValue='* Error message' /]
| Property |
Description |
| id |
The id of the form validator. This required property allows the form state to uniquely identify this validator within the group. |
| itemToValidate |
The id of the form element to validate. |
| type |
- Integer - minimum and maximum
- String - minimum and maximum characters
- Decimal or Currency- minimum and maximum
- Date - any valid date in .NET help file
|
| minimumLength |
The minimum number of the characters the field must have. |
| maximumLength |
The maximum number of the characters the field can have. |
| minimumValue |
The minimum integer of your range.
|
| maximumValue |
The maximum integer of your range.
|
| defaultValue |
The Error Message user will see if the submitted value does not pass the required validation. |
| errorColor |
Optional property. Can contain Color HEX value(Example: FF0000 or FFFF00) or Color Names (Example: red or yellow) |
| ItemToEnable |
Optional property.
-
Forms Management - double opt-in functionality for membership sign-up
Our membership sign-up process allow double opt-in functionality.
In order to set this up please follow next steps:
- On your form add hidden field:
[cp:scripting key='FormHiddenField' id='ValidationKey' defaultValue='cpsys_newguid' /]
Email Field need to be named: UserEmail
- Workflow Tab > Message to User that form is being processed
<a href="https://www.oxcyon.com/Main/Login.aspx?uName=cpsys_Null&vkey=cpsys_Null">Click here to activate your account.</a>
- Processing Tab > User Submission:
<attribute systemName="IsLockedOut">0</attribute>
<properties systemName="AcctRegistrationDate"><![CDATA[ 02/14/2026 05:22:02 PM ]]></properties>
<configuration systemName="AccountVerificationKey"><![CDATA[ cpsys_Null ]]></configuration>
Form Field Types Reference
Centralpoint Forms support 13 different field types. Here's a quick reference for the most commonly used types:
| Field Type |
Purpose |
Key Parameter |
| FormTextBox |
Single-line or multi-line text |
TextMode='MultiLine', Rows='4' |
| ExtDatePicker |
Date picker with calendar |
sourceFieldId (requires 3 components) |
| FormListBox |
Dropdown selection |
AddListItems (XML format) |
| FormUpload |
File upload control |
defaultValue stores file path |
| FormSignature |
Digital signature capture |
Width, Height (auto-creates 4 metadata fields) |
| FormEditor |
Rich text WYSIWYG editor |
Width='980' |
Key Point: All form fields require a group attribute that must be identical across all form components (HTML, Field Map XML, email templates). Mismatched group names cause silent failures.
-
Forms Management Training Video
Forms Management
This narrated video discusses Forms Management; Forms, Forms Wizard, Workflow and Reporting
Understanding Centralpoint’s Forms Management is essential to unlocking a whole new level of automation and efficiency across your organization. This narrated video walks you through Forms, the Forms Wizard, Workflow Management, and Reporting — showing how easy it is to create, manage, and route forms dynamically based on user input. Centralpoint Forms aren’t just simple data collectors; they drive powerful, role-based workflows that can automate reviews, approvals, assignments, and even the dynamic generation of documentation — all tailored to the data users provide.
By mastering Forms and Workflow, you can transform static, manual processes into intelligent, automated routines. Imagine building proposals, contracts, compliance documents, or internal reports automatically, based entirely on how a user completes a form — without duplicative work or delays. This video will show you how Centralpoint empowers you to streamline operations, improve data quality, enforce governance policies, and deliver a highly personalized, efficient experience to both users and administrators alike.
-
Forms State drop-down list
Scripting tags are similar to XML tags, but use square brackets ([]) instead of angle brackets(<>). All property values must be enclosed in single quotes ('') and may not contain single quotes. All cp:scripting tags are only supported in web sites, while cp:personalization, cp:privatelabeling, cp:personalization, and cp:configuration are supported in other sites.
State Drop-down menu
Use this quick reference code to display a drop-down menu of states for custom-built forms.
-
Forms Wizard
Forms Wizard
Forms Wizard is designed to allow you to step through a process to create your needed form, manage workflow, and even the finalized integration or document creation. Our advice would be to analyze the form you want carefully, and count how many fields you will need, and specifically what type of fields should be presented. For an example, forms are typically made up of text boxes (like when entering your name), dates (when we ask the user to select a date), to upload files (should you need to collect files or photos from your users), and maybe even the user's signature (to sign off on something).
There are a series of steps in order to create your form. You can go back at any time in the wizard, except the the last step (when you save it).
Step 1:
This is the forms set up step
- Name of Your Form?
This is the Title of the form.
- Field Padding?
This is the standard padding to be used for all fields in the form.
- How Many Pages?
This is the number of pages in your form.
- Do you want TABLE or DIV setup?
This is how the form fields will be displayed. Table does not suggest a table row for each field, it set up using a table for each row with set widths.
- Default Width of all Fields?
This is the default width that will populate the width textboxes in Step 3.
- Spacing between multiple fields
This is the width of the Empty Field items in Step 4.
Step 2:
This step will go page by page and ask you how many of each particular field you want.
Step 3:
This step will go page by page and ask for a name or a label and other attributes that the CpScripts require to function properly. There are also checkboxes for 'Include in Email' and 'Add in Module'.
Names and label must be unique in these steps for ALL pages. Name cannot have spaces, just like in CpScripts. I would suggest prefixing field items. For instance, if you have a name text box and a large text that is called name, please give the textbox a name like txtName.
This can apply to all fields. Such as:
- TextBoxes
txtName
- Date Fields
dtName
- Drop Downs
ddlName
- Checkboxes
chkName
- File Uploads
fuName
- Taxonomy Selectors
taxName
Step 4:
This step is a three part process for each page.
Step 1
- How many rows for this page?
This is the number of rows for the page.
Step 2
Looking at your form as a grid, how many columns do you need for each row.
Step 3
This is where you have drop downs for that page that you can either choose a for field, or an empty to create space for your form. If form items are chosen that have been chosen in another drop down, the other drop
down will switch to an empty field value
Step 5
This is the preview page where you can see what your fields will look like on the form and what fields will be in the email bodies.
Step 6
- Do you want this to be saved in the Forms Results?
This is the same attribute as in the Forns module
- Would you like to include these fields and the data collected into a Module?
If you answer yes you will be given these options:
- Which fields do you want in the Title?
This is the name of fields you want as the title for the module records.
- Please select your Module
Here you will be given all the modules in Centralpoint. When you choose one, an XML link will appear. Please right-click and choose 'Save Link As...' in order to get your new module configuration.
- Confirmation Email?
This will give you the fields from the forms module to fill out. The email form body will be populated with the value from Step 3.
- Approval Email?
This will give you the fields from the forms module to fill out. The email form bodies will be populated with the value from Step 3. The from is a drop down list of all the fields from the form to use as the email from.
-
Friendly URLs
This module was designed for technically savvy administrators only. The powerful rule based engine can lead to difficult to understand configurations and potentially break existing URLs. Some common difficulties and pitfalls include:
- All relevant routes are checked with every page load. Adding a large number of records to this module could affect the load time of every page in the site because the HttpModule executes on every page load and must check each route. URL generation is also executed multiple times per page load and a large number of complicated patterns may affect the performance of this feature. This is not an alternative to Admin > Error Messages/Redirects > Type = 404 Redirect. 404 Redirects are designed for migrating old dead URLs to new URLs and they are optimized to do that efficiently. Friendly URLs is designed for routing and generating the URLs of existing pages.
- Domain and Audience routing requires a Navigation or Document route. Domain and audience routes won't apply if the Routing module property is set to Fallback mode and the navigation and document portion of the path is not routed. The "System: Extensionless URLs with Fallback Routing" record was designed to route all standard Centralpoint navigation and document paths. Enabling this record or restoring it to it's original values will typically resolve this problem.
- Routing is executed in the following order: Domain, Audience, and then Navigation & Document. If two records have the same order the newer record will be tested first. A preferred URL is chosen when building a URL in a slightly different way. When a document URL is being built records with specific documents selected will be tested first, and when a navigation url is built records with specific navigation items selected will be tested first. Records with no navigation item will always execute after those with specified values.
- Only managed (ASP.NET served) requests are supported by default. If you wish to route non-managed requests like .htm, .css, or .custom extensions you must set runAllManagedModulesForAllRequests to true in the Root/Web.Config. This will cause all HttpModules, regardless of their preCondition attribute setting, to fire on all requests which could lead to performance problems and unexpected behaviors.
- Conflicts may occur with the IIS URL Rewrite module. Similar redirects set up in the web.config or IIS could cause issues or even infinite loops. They should be removed from the web.config when they are added to this module.
- Permanent redirects are cached at many levels. When the Redirection module property is set to enabled and Enable Permanent Redirection Cache is set to Yes the browser and proxies will cache the redirection. If the preferred URL is changed later it may lead to 404 errors until browser cache is cleared.
- Changing URLs can lead to SEO problems. If the site has already been indexed by search engines you must ensure that the indexed URLs resolve properly including the appropriate canonical URL meta tags or redirect to the correct URL.
- Domain routing skips Default.aspx. If the site is using features that require the domain to redirect to Default.aspx then you cannot enable records with Type = "Domain." Domain routing automatically loads the the Default Path without the redirect to Default.aspx and then to the default path. The most commonly used features that require Default.aspx and are incompatible with Type = "Domain" are Admin > URL Redirect to Audiences and Admin > IP Manager > Action = "Redirect".
Utilizing this module typically involves creating or enabling a record and testing the route and URL generation then testing all other routes to make sure they weren't negatively affected. It is highly recommended that you set up and test one record at a time being sure to include the test URLs in the Test URLs attribute. A unique Notes attribute will display for each Type selection which explains how to configure that type for routing and generation. By default all system pages will generate a canonical URL meta tag when the page is loaded on a non-preferred URL, but the Redirection module property can be enabled to redirect to the preferred URL instead. You can use the Friendly URLs module to perform many URL manipulation tasks, some of which include:
- Supporting extensionless URLs. Enable the "System: Extensionless URLs with Fallback Routing" record to route and generate system URLs without the extension (.aspx). The legacy urls (including .aspx) will still be supported. If a hardcoded URL is accessed with the extension it will render normally including a canonical URL meta tag pointing to the preferred (extensionless) version of the URL. The path to all records will exclude the extension: /aud/nav or /aud/nav/doc.
- Enforcing all lowercase URLs. Enable the "System: Extensionless URLs with Fallback Routing" record, add .aspx to the Preferred URL if you'd prefer to keep the extensions ({{smi}}{{doc}}.aspx), and set Admin > Properties > Web Site Generated URL Casing to "Lowered". If a hardcoded URL is accessed in a different casing it will render normally including a canonical URL meta tag pointing to the correct casing. Set the Redirection module property to "Case Sensitive (Enabled)" to force a permanent redirection to the correct URL and casing.
- Supporting pathless audience homepages. Enable the "System: Pathless Audiences" record to route and generate system URLs that point to audience homepages without the homepage system name or extension. If a hardcoded URL is accessed with the homepage in the URL it will render normally including a canonical URL meta tag pointing to the preferred audience URL. This record will automatically utilize Site Architecture > Homepages > SystemName = "Home" for all audiences. If all audiences do not utilize this homepage you must create separate records for each audience/homepage combination. The path to all audiences will exclude the homepage: /aud.
- Supporting pathless domain homepages. Enable the "System: Pathless Domains" record and make sure that the Default Path and Navigation relate to the homepage of the Main audience to route and generate system URLs that point to the main audience home page without the audience or home page system name or extension. If a hardcoded URL is accessed with the audience and homepage in the URL it will render normally including a canonical URL meta tag pointing to the domain only. Set the Default Path and Navigation attributes accordingly to use a different homepage. The domain alone will render the main audience home page: /.
- Changing the audience system name. Create a new record with Type = "Audience", set the Pattern to the new audience system name supporting an optional trailing slash (custom-aud/?), set the Default Path to the home page portion of the URL (home), set the Preferred URL to the new audience system name (custom-aud), select the homepage under Navigation, and select a single Audience. You may also want to change the Order to 95 if you want to the "System: Pathless Domains" record to execute first.
- Changing the path to a document. Create a new record with Type = "Document", set the Pattern to the new path supporting an optional trailing slash (custom/doc/?), set the Preferred URL to the document path (custom/doc), select the Navigation, and select the Document. The selected navigation must have a page type of module and its module must include the selected document. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/doc.
- Changing the path to an HTML page. Create a new record with Type = "Navigation", set the Pattern to the path supporting an optional trailing slash (custom/nav/?), set the Preferred URL to the navigation path (custom/nav), and select the Navigation. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/nav.
- Changing the path to a module. Create a new record with Type = "Navigation", set the Pattern to the path including {{doc}} and supporting an optional trailing slash (custom/module{{doc}}/?), set the Preferred URL to the navigation path including {{doc}} (custom/module{{doc}}), and select the Navigation. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/module or /aud/custom/module/doc.
- Using a custom extension instead of ASPX. Open the site's Root/Web.Config file and set runAllManagedModulesForAllRequests attribute to "true" in configuration/system.webServer/modules. This will cause all HttpModules, regardless of their preCondition attribute setting, to fire on all requests which could lead to performance problems and unexpected behaviors. Disable the "System: Extensionless URLs with Fallback Routing" because this new record will handle all system URLs. Create a new record with Type = "Navigation", set the Pattern to include the custom extension ({{smi}}{{doc}}\.custom), set the Preferred URL to include the custom extension ({{smi}}{{doc}}.custom), and select All Site Map Items under Navigation. The path to all records will end in the custom extension (.custom): /aud.custom, /aud/nav.custom, or /aud/nav/doc.custom.
- Configuring an audience specific domain.Create a new record with Type = "Domain", set the Pattern to the audience specific domain (www\.yourdomain\.com), set the Default Path to the homepage portion of the URL (home), set the Preferred URL to the audience specific domain (www.yourdomain.com), select the homepage under Navigation, and select a single Audience to generate fully qualified URLs in canonical URL meta tags using your audience specific domain. By default audience specific domains do not support or generate the audience system name in the URL. If your site contains hardcoded URLs which include the audience system name they will return 404 errors which will be detected automatically by the error handler and redirected to the same URL without the audience system name regardless of the selection in the Redirection module property. If you would prefer to maintain the audience system name in the URL it should be included in the Default Path (main/home).
- Configuring a single pathless audience.Create a new record with Type = "Audience", set the Pattern to the audience system name supporting an optional trailing slash (aud-system-name/?),
set the Default Path to the home page portion of the URL (home), set the Preferred URL to the audience system name (aud-system-name), select the homepage under Navigation, and select a single Audience.
You may also want to change the Order to 95 if you want to the "System: Pathless Domains" record to execute first.
- Configuring a preferred domain. Create a new record with Type = "Domain", set the Pattern to catch all potential domains (.*), set the Preferred URL to your preferred domain (www.yourdomain.com), and select the related Audiences to generate fully qualified URLs in canonical URL meta tags using your preferred domain.
- Requiring HTTPS on a specific domain. Create a new record with Type = "Domain", set the Pattern to catch all potential domains (www\.yourdomain\.com), and select Yes under Requires HTTPS to generate fully qualified URLs in canonical URL meta tags using your preferred scheme. Set the Redirection module property to "Enabled" to force a permanent redirection to the correct scheme.
- Routing a domain to a specific record. Create a new record with Type = "Domain", set the Pattern to catch all potential versions of that domain ((www\.)?yourdomain\.com), under Default Path enter the path to the navigation item or document (nav/doc), select the navigation item under Navigation, and select the appropriate Audience.
-
Gamification
Gamification refers to a process of making systems, service and activities more enjoyable. Centralpoint Gamification allows for your users to compete to be most active in their communities. Incentives can be provided to your users (whether it be employees, clients, or partners) to get more involved and compete to be the most active participant.
Centralpoint Gamification reporting allows you to see all of your users' activity, and compares one against the other, providing incentive for users to get involved. Gamification commonly employs game design elements which are used in so called non-game contexts in attempts to improve user engagement,organizational productivity, flow, learning, employee recruitment and evaluation, ease of use and usefulness of systems, physical exercise, among others. A review of research on gamification shows that a majority of studies on gamification find positive effects from gamification. However, individual and contextual differences exist.
 |
Loading... |
| | | | |