What is 'Anonymous Access'?
Let's suppose we want to expose some select forms to public users that haven't an AAD account within our organization. 'Anonymous Access' is a form level property that allows this to happen; just a simple check of a box and we can serve up forms to external parties.
Before we dive too much deeper here's a picture to make sure we know where to get at the property:
For more information on Anonymous Access that I won't be going over such as basic implementation please refer to the following: Anonymous Access
As Appit users, we know that when a List or a Library get Appified a whole host of artifacts such as SmartObjects, Forms, Views and even the possibility of WorkFlows are auto-generated. One of the most often used (and often times altered) of these freshly spawned artifacts is the New List/Library name] form. This form has an interesting feature; out of the box it is embedded with a view (Attachments) that will call a subview (Add Attachment) when prompted by a click of the 'Add' button. It looks something like this when we call the subview:
If we endow this form with the 'Anonymous Access' property and then try to surface it to an external user, it's going to look a bit different:
Notice the difference in the 'Add Attachment' subviews. In the first image the controls have properly surfaced to the user. In the second image however (the one in which the form has been set for 'Anonymous Access' ) the 'Add Attachment' subview has not surfaced those controls. Now, in the two images provided the form was being run in a Chrome browser, if you run it in IE the subview will look different but the root issue is the same. The reason this is happening is because subviews do not inherit the 'Anonymous Access' property of the parent form and that is an important thing to note when implementing 'Anonymous Access'.
To get around this in any case where you are leveraging 'Anonymous Access' you will have take whichever elements you intend to surface on a subview and get them onto a form either by placing them on the form or on one of its views directly, a subview simply will not do.
Once you do away with subviews on your form you are going to come upon a different issue. You will find that once a user submits said form they will be redirected to an O365 login page like so:
What you want to see is something like this:
This can ultimately be edited up and styled in the way you would like but its purpose is clear, letting the user know that their form has submitted appropriately.
Whenever one of the Appit out of box forms get submitted it fires a rule, this rule specifically:
What this rule does is navigate the user to a standard issue form located in the System>>>SharePoint 2013 Integration category that shows them a 'Form Submitted Successfully' page and that form is named 'K2 for SharePoint Message'. That form is not set to 'Anonymous Access' and so the end user is getting redirected to the O365 login page and prompted for a login so that they can see this form. Here's the kicker, that form and as near as I can tell all the standard forms of the SharePoint 2013 Integration category cannot be edited.
To get around this we are going to create our own form that tells the user of a successful submission and set it to 'Anonymous Access'.
1) Find the 'K2 for SharePoint Message' form in the System>>>Sharepoint 2013 Integration category
2) Drop down its tree and select the view 'K2 for SharePoint Message View'
3) Select 'Save As' and give it a name.
4) Locate that view and generate a form around it.
5) Edit that form and set it to 'Anonymous Access'
6) Save it, finish it and check it in.
Now all we need to do is point our anonymous form we want to surface to this new message form. So track back to the initial form and find this rule:
Edit this and scroll to the bottom of the rule definition:
Click the highlighted bit and in the 'Select a Form' window find the form we just made and point it to that. Save it, finish it and check it in. If done correctly you now have an anonymous form that apropriately tells users they've submitted successfully.