I have finally been able to release the new version of DFFS where I have fixed several issues and done a major overhaul of the trigger handling to fix some problems with rule order when using multiple rules on the same field.
A special thanks to Rudolf Vehring for his help with testing of all the changes in this release.
One of the main areas of confusion when using DFFS is the automatic rule reversing of rules that are NOT evaluated to true.
This example show how most users first set it up and ends up with the wrong result. I’ll first show how it is set up to make it fail, and then I’ll highlight the missing part at the bottom of this post.
The example form
Let’s say you have a choice field TabVisibility that controls the visibility of a specific tab. For this example I have created a choice field with two values: Show and Hide, an have set up three rules.
The tabs:
The rules:
One for hiding the tab when the TabVisibility choice field is empty:
One for showing the tab when the value is Show:
And one for when the value is Hide:
This is how it looks when loading NewForm and the value in TabVisibility = blank, but it is not doing what you expect:
Why this is not working
When you have trouble with a form you should always use the Debug this rule setting:
This will show you the debug panel below the form:
When the form loads, each of the three rules are evaluated. The first rule is evaluated as “true” and hides the tab as it should:
Then the next rule runs and is evaluated as “false” and does the opposite of what it is configured to do. It doesn’t do anything wrong here because the tab is already hidden, but you see where this is going:
Then the last rule comes in and messes it up by showing the tab despite it being set up to HIDE the tab and not to show it:
Why is this happening?
The reason for this behavior is to avoid writing two rules for every action and just let DFFS handle the reversing – for example if a Yes/No field is checked: show some fields, set some fields required etc. Then if the field is unchecked, all visible field are hidden, required fields are set as optional etc. This is by design to limit the number of rules required to make a dynamic form.
This will however create problems when you use multiple rules on for example a single choice column as described above.
How to fix it
In this scenario you must use the No reversing of this rule setting in each of the three rules (optionally you can check the Disable reversing of all rules in the top of the Rules tab):
When you have done this your NewForm will load correctly and hide the tab:
That’s it – post any comments below, or use the forum.
This example show how you can use a set of rules to ensure only persons assigned in a people picker in the form, or members in an admin group can view or edit a list item.
Add these three rules:
Then add this function to your Custom JS:
function noAccessToThisForm(){
jQuery("#part1").hide();
spjs.dffs.alert({
"title":"No access",
"msg":"You don't have access to this list item.",
"ok":function(){
window.history.back();
}
});
}
You can use this setup in both DispForm and EditForm, and it will show this message box if the user doesn’t have access: