{"id":20027064,"url":"https://github.com/unic/sitecore-module-flex","last_synced_at":"2026-05-09T12:34:07.592Z","repository":{"id":62929010,"uuid":"553548487","full_name":"unic/sitecore-module-flex","owner":"unic","description":null,"archived":false,"fork":false,"pushed_at":"2023-05-29T14:35:25.000Z","size":6310,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-02-25T17:11:25.630Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-18T11:40:25.000Z","updated_at":"2022-11-09T08:24:40.000Z","dependencies_parsed_at":"2023-01-22T07:45:12.686Z","dependency_job_id":null,"html_url":"https://github.com/unic/sitecore-module-flex","commit_stats":null,"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Fsitecore-module-flex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Fsitecore-module-flex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Fsitecore-module-flex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Fsitecore-module-flex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unic","download_url":"https://codeload.github.com/unic/sitecore-module-flex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241460057,"owners_count":19966516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T09:08:55.257Z","updated_at":"2026-05-09T12:34:02.563Z","avatar_url":"https://github.com/unic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flex\n\nFlex is the acronym for __Fl__exible Forms __Ex__perience, the module to empower \nSitecore Authors and Marketers to create amazing web form experiences.\n\n## Table of Content\n\n* Changelog\n* Installation Instructions\n* Setup Dev Environment\n\n## Changelog\n\n### 5.0\n\n* Migration to GitHub public repository, AppVeyor and NuGet.org\n* Update Unic.Configuration.* to 4.0.1\n* Update Unic.Profiling.* to 3.0.0\n\n### 4.3.3\n* Fix Double Optin Save Plug To field setting to handle values from Reusable Field\n\n### 4.3.2\n* Add setting for commandTimeout\n\n### 4.3.1\n* Update Unic.Configuration.* to 3.1.0\n* Update Unic.Bob.Scrambler.* to 2.2.0\n\n### 4.3\n* Add handling of fields tokens inside salutation token\n\n### 4.2\n* Fix GetFieldValue for reusable fields\n\n### 4.1.9\n\n* Fix export to Excel with IdentityServer\n* Move deploy-once serialization files from app\\flex to modules\\flex\\appDefault\n\n### 4.1.8\n\n* Ensure that when database data export is triggered from ribbon button:\n    * the same DB that is used by the command (master) is used by controller \n    * the translations visible in Sitecore client are in the client's language.\n\n### 4.1.7\n\n* Get rid of the error when trying to export data for a form that is not existing in database set as `Unic.Feature.Flex.InitialDatabase` (web by default) but existis in master.\n* Improve error handling of exporting data with Content Editor ribbon button by displaying visible error message to the user.\n\n### 4.1.6\n\n* Remove setting to toggle exception handling on loading form datasource. This should be handled by overriding the ContextService in the consuming project\n\n### 4.1.5\n\n* Add setting to toggle exception handling on loading form datasource\n\n### 4.1.4\n\n* Expose additional method in Send Email Async.\n\n### 4.1.3\n\n* Configure Flex.ServerOrigin for ContentDelivery\n* Add Send Email Async to Save Plug Folder insert options\n\n### 4.1.2\n\n* Remove lock on 9.2 version of Sitecore libraries\n\n### 4.1.1\n\n*  Bugfix to display all occurrences of \"Send Email Async\" plug in: \"Control Panel\\Flex Dashboard\\Async Plugs\".\n\n### 4.1\n\n* Update of database schema is required for solutions upgrading to this version. Use SQL script: \\databases\\Async Mail Plug Upgrade Script\\async-mail-plug-upgrade-script.sql. Please adjust database name in script content.\n* Added new SendEmailAsync saveplug. This saveplug send emails by newly installed mail client \"MailKit\". To use SendEmailAsync plug, async execution needs to be allowed in Global Config item of your project. Before using SendEmailAsync, default Agent for plug execution needs to be disabled (Flex.Unic.config). Instead of them please enable \nresponsible sitecore tasks (command and schedule) available in \"/sitecore/system/Tasks/Commands/\". It is required to configure interval on schedule item: \"/sitecore/system/Tasks/Schedules/Flex/Async Plug Execution Schedule\".\nProperties \"Site Name\", \"Log Activity\", \"Log Tag\" needs to be configured on command item:\"/sitecore/system/Tasks/Commands/Flex/Async Plug Execution Command\". \n\n* 'Flex.Jobs.HonorServerOrigin', 'Flex.ServerOrigin' are a new settings to ensure plug executor, that Jobs/Tasks are processed by the correct instance.\n* 'Flex.Mailing.SmtpClient.MailKit.SecureSocketOptions' is a new setting to setup SecureSocketOptions for MailKit Smpt client.\n* Because of refactoring in common mailer classes, a re-test of mailer plugs in your solution is recommended. This applies to plugs such as 'DoubleOptin', 'SendMail' and any custom plug implementations relying on Mailer classes.\n* Limitations: sitecore task \"Async Plug Execution Command\" executes plugs always in context of site configured as \"Site Name\".\n\n### 4.0\n\n* Updated Glassmapper to Version 5.5.28 (THIS NEEDS TO BE DONE IN YOUR SC SOLUTION ALSO! For a Version compatible with GlassMapper 4.x please use the support branch support/3.28.x)\n* Fixed support for query strings and anchors on form cancel links\n\n### 3.28\n\n* Added field with conditional rule to SavePlugBase. Rules are checked before executing Save Plug - if true the Save Plug is executed.\n\n### 3.27\n\n* DateIntervalValidator added for DatePicker Field - validator checks if selected date is within specified interval (days, months, years in the future or in the past)\n* Added project Unic.Flex.Implementation.Tests and tests for DateIntervalValidator\n\n### 3.26\n\n* Allow Form and Field items to setup autocomplete attribute. Hint: please adjust custom themes on project level by line which setup autocomplete attribute of form (example: Views\\Modules\\Flex\\Default\\Form.cshtml).\n\n\n### 3.25\n\n* Fix an issue when mutliple validators with the same html attributes on the same field caused a .net exception. With the new logic, the first added validator takes priority.\n\n### 3.24\n\nThis versions brings back changes which were implemented in a separate branch during one of our projects. Those changes have now been properly ported to be backwards compatible and are opt-in with feature toggles:\n\n* Form validation has been introduced, allowing validators to properly reference and check other fields values. For opting in, add the `EnableFormValidationAttribute` on class level of your custom validator. An example has been introduced with the new `DateCompareValidator`.\n* `Flex.Plugs.AllowLoadPlugsOnNonHttpGet` is a new setting that allows load plugs to be executed upon non-http GET requests, such as `POST`. In order to keep backwards compatibility, a new `IgnoreHttpMethodExecutionFilter` property has been introduced on `LoadPlugBase`, which need to be set to `true` (default is `false`).\n* `Flex.Urls.HonorTrailingSlash` is a new setting that allows Flex to honor trailing slashes in URLs, such as `http://flex.local/Multistep-Form/Step-2/`.\n\n### 3.23.2\n\n* Fixes the issue in TextOnlyField, where after changing the language, the text was still shown in the original language\n\n### 3.23.1\n\n* Sitecore shared field mapping fix\n\n### 3.23\n\n* Title Level and Title Visually Hidden fields added to Form template\n* Fix for Phone Validator issues when added to the field manually\n\n### 3.22\n\n* Fix for IsCascading field not available on all ListFields\n\n### 3.21\n\n* Fix for bug where data would be added to the wrong column\n\n### 3.20\n\n* BEKB-1787 Added possibility to set Text-Only Fields as describing the step's submit button, and therefore read in all screen reader modes\n\n### 3.19\n\n* Fixed the bug that caused backend validation error on nested dependent required fields that remain hidden\n\n### 3.18\n\n* Accessibility fix. Boolean attributes values lowercase only.\n\n### 3.17\n\n* BEKB-1812 Export form craches when it has a phone field - bug fixed,\nphone validator regular expression is now stored in the sitecore config\n\n### 3.16\n\n* Added custom token {Salutation} to enable personal greeting based on the gender in Send Email Save Plug\n\n### 3.15.1\n\n* Phone validator fix, now works for all languages\n\n### 3.15\n\n* Added Dynamic Year And Today Range to Date Range Validator\n* Phone Validator regex can be configured.\n\n### 3.14\n\n* Combined Readme.md from repository and Readme.txt from NuGet package\n* Introduced an item update package in addition to the serialized item files\n* Updated Unic.Bob.Scoop to latest version\n\n### 3.13\n\n* Fixed bug with nested dependent fields\n\n### 3.12\n\n* Fixed saving Lastname and Language to Contact\n\n### 3.11\n\n* Added detailed exception description when datasource is not a form\n\n### 3.10\n\n* Extended the checkbox list field and radio button list field with possibility \nto add a separate tooltip for each item\n\n### 3.9\n\n* Added possibility to redirect user after Double Optin confirmation\n* Updated Unic.Bob.Scoop to V. 3.1.0\n\n### 3.8.3\n\n* Fixed Unicorn dependency to Modules.Configuration\n\n### 3.8.2\n\n* Fixed save and load actions \"set field value to contact\" and \"load field value \nfrom contact\" in non-english context\n\n### 3.8.1\n\n* Added handling for custom field types when setting their value\n\n### 3.8\n\n* Added new SavePlug for Double Optin\n\n### 3.7\n\n* Added new action to the saverules for saving the current language to a contact \n* Added new action to the saverules for identifying the contact\n\n### 3.6\n\n* Added UrlReferrer Protection to QueryStringLoader Load Plug.\n\n### 3.5.1\n\n* Fixed broken `Label Link` functionality. `Label Links` could not be used due to a \ncall to a removed overload of `GlassHtml.BeginRenderLink`, which resulted in exceptions \nduring dynamic compilation. The newly added `alwaysRender` argument prevents the rendering \nof the element when the link is `null`.\n\n### 3.5\n\n* Update save-method in SaveToDatabaseService to Return ID of session entity after saving it to the database.\n\n### 3.4\n\n* Update `Glass.Mapper` to `4.5.0.4`\n* Add call to `DependencyResolver.Finalise()` - this behaviour can be overriden in the \n`GlassConfig.FinaliseConfiguration` method. See http://glass.lu/Mapper/Sc/Releases for more information.\n\n### 3.3\n\n* Added new Load and Save Plugs `Execute Rule`\n* Added multiple actions to prefill a form with values from the xDB profile\n* Added multiple actions to save values from the form to the xDB profile\n* SCMFLEX-46 fixed bug with asynchrous exeuction of async save plugs\n\n### 3.2\n\n* Update Castle.Core to 4.2.1\n* Update Glass.Mapper to 4.4.0.199\n* Rename model parameter in FlexController HttpPost Action to prevent name clashes with Nitro.net\n* Replace ForEach extension call to use Glass.Mapper's implementation, as it has been dropped from Castle\n\n### 3.1\n\n* Improve performance of the form database export\n* Improve performance of the form database export button in content editor (active or disabled check)\n* Improve performance of the insertion of form data into the database\n* Switch to Roslyn compiler to support C# 6 features\n\n### 3.0.1\n\n* Fix accidental ObjectConstruction pipeline abort by not completely following Glass.Mapper 4.3 \nupgrade instruction\n\n### 3.0\n\n* Update Glass.Mapper to 4.3.4.197\n\n### 2.9\n\n* Added aria-invalid param when validation failed\n\n### 2.8\n\n* Fix encoding special characters in plain text email\n\n### 2.7\n\n* Fix Ajax Validators with Virutal Folders (SCMFLEX-51)\n\n### 2.6.1\n\n* fix dependent field display for multilist checkboxes (SCMFLEX-52)\n\n### 2.6\n\n* Added Show in Summary functionality for Reusable Fields\n\n### 2.5.1\n\n* Fixed standard values ID on Reusable Section, so that Show in Summary is \nticked by default\n\n### 2.5\n\n* Added field \"Show in Summary\" for Reusable Sections\n\n### 2.4\n\n* Added label to a hidden field\n\n## Installation Instructions\n\n### IoC container\n\nYou must install an IoC container framework for Flex. Currently for Sitecore 9\nyou should install SimpleInjector, which can be installed over NuGet:\n\n  \u003e Install-Package Unic.Flex.SimpleInjector\n\n### Items\n\n#### Unicorn/Rainbow Format\n\nThe serialized items for Flex (Unicorn/Rainbow based YAML files) are included in the \nUnic.Flex NuGet package and thus can be copied out of the \n`.\\packages\\Unic.Flex.[version]\\serialization folder` to wherever your data folder for \nUnicorn is configured to deserialize the items back into the database.\n\nThe serialized items for the Unic.Configuration module (Unicorn/Rainbow based YAML files) \nare included in the Unic.Configuration NuGet package and thus can be copied out of the \n`.\\packages\\Unic.Configuration.[version]\\serialization folder` to wherever your data folder for \nUnicorn is configured to deserialize the items back into the database.\n\n#### Sitecore Default Update Package\n\nAn item udpate package with standard serialized items is also available in the Unic.Flex \nNuGet package under  `.\\packages\\Unic.Flex.[version]\\serialization\\Flex.update`.\nYou can install this package instead of deserializing the Unicorn/Rainbow Files.\n\nNote: The Flex.update package also contains items to all dependent module items (e.g. Unic.Configuration)\n\n### Install Database\n\nInstall the database in the \"data\" directory of Flex to your Sql server. Then put the \nfollowing connection string into \"ConnectionStrings.config\":\n\n    \u003cadd name=\"Flex\" connectionString=\"Data Source=localhost;Initial Catalog=flex_data;Integrated Security=True\" providerName=\"System.Data.SqlClient\" /\u003e\n\n### Assets\n\nFlex depends on several assets. There are partial views available to include these. \nPlease add the following lines of code in your layout view.\n\nBefore the closing `\u003c/head\u003e`:\n\n    @Html.Partial(\"~/Views/Modules/Flex/HeaderIncludes.cshtml\")\n\nBefore the closing `\u003c/body\u003e`:\n\n    @Html.Partial(\"~/Views/Modules/Flex/BodyIncludes.cshtml\")\n\n### Client-side validation\n\nTo enable client side validation, add the following nodes to the `\u003cappSettings\u003e`-node \nof the `web.config`:\n\n    \u003cadd key=\"ClientValidationEnabled\" value=\"true\" /\u003e\n    \u003cadd key=\"UnobtrusiveJavaScriptEnabled\" value=\"true\" /\u003e\n\n### Form Repository\n\nYou need to add a form repository in the content tree. The form repository must be created \nbased on the following branch template:\n\n    /sitecore/templates/Branches/Flex/Global/Repository Root\n\n### Allow Rendering in Placeholder Settings\n\nTo add a form in the Page Editor, the the following rendering has to be enabled in your \nplaceholder settings:\n\n    /sitecore/layout/Renderings/Flex/Flex Form\n\t\n## Glassmapper Dependencies\n\nFlex will use the `Glass.Mapper.Sc.92.Core` for it's internal functionality. One of the\npipelines has dependency on `Glass.Mapper.Sc.92.MVC` so you need to install and deploy \nalso this MVC package in your solution.\nIf your `Web` database has different name, other that standard, then you need to adjust\n``\nthe `Unic.Feature.Flex.InitialDatabase` setting.\n\n## Setup for Development\n\nFor installing a Flex development instance, the following steps are required:\n\n* Clone the repository\n* Run the `BumpSc9.ps1` from Solution root to install Sitecore 9 and xconnect\n* Open the solution in Visual Studio\n* Restore all NuGet packages\n* Restart Visual Studio\n* Execute `Set-ScSerializationReference` in the Package Manager Console\n* Execute `Install-WebConfig` in the Package Manager Console\n* Build the Project\n* Call http://flex-sc9.local/unicorn.aspx and run a full sync\n* In Content Editor, invoke `Revert Database` from the `Developer` ribbon strip\n\nThe development instance is now available under http://flex-sc9.local/.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funic%2Fsitecore-module-flex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funic%2Fsitecore-module-flex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funic%2Fsitecore-module-flex/lists"}