So I noticed in this post that a feature request was given. In that post, I commented on my way of doing this as well. And while I still agree that this a much needed NATIVE feature. I have a way (if it was intentional by Laserfiche, great) to add as many action buttons as needed.
BE WARNED: This can make your process very complicated and if you don't know how to handle this it may be a good idea to limit your use of this.
Here goes:
To add an action button on top of the built-in 3 action buttons you need to mess with the DOM a little bit. I had originally added a button to the page and it still functioned as an action button. I then inserted the action button with JavaScript into the button area on the bottom of the page. From there I realized I could accomplish the same thing but while maintaining the functionality of the custom HTML field properties. Here are my code samples and some screenshots to make it easier to walk through it.
So first, the button's HTML code:
<input type="submit" class="newButton action-btn Submit" value="Save For Later" aria-labelledby="action" name="action">
I used an input element to match the other buttons that Laserfiche creates. The "newButton" class is so I can target that button specifically should I need to. The "action-btn" class is a built-in class that makes the button look like the other buttons. And the "Submit" class gives it the same look as the other buttons (we turn ours blue, but it stays the same based on the theme settings). The value is what shows on the button and what you will use in your "User Action" part of the process. The 'aria-labelledby="action"' is just a part of the other action buttons.
Now to add this to the bottom (and remove the blank space it leaves behind use the following JavaScript:
$(document).ready(function(){ //Moves button from form to lower button wrapper and removes DIV that button was housed in $('.newButton').detach().appendTo($('.btn-wrapper:first')) $('#q2').remove(); })
This is all you need to move the button down and remove the space it was in. Keep in mind that .newButton is the class you set yourself, and #q2 is the container the button was in. These can vary based on your form. Also keep in mind the ":first" portion of the code. This is because Laserfiche adds an entirely separate btn-wrapper for the "Save as Draft" button. If you don't include the :first you will duplicate all of the buttons and add them behind the Save as Drafts button.
Now that's for a submission form. The HTML changes a little bit for a User Task form. The code for that is the following:
<input type='submit' class='action-btn ellipsis Submit sendToHR buttons hidden' name='action' value='Send To HR'><br class='lf-responsive-navigation'>
Notice a few small changes to the HTML and a <br> element thrown in. Again we use an input HTML element to match the buttons. The class now has an ellipsis class and a hidden class (buttons is a custom CSS class I made). The important part of this is the hidden class. Laserfiche adds and removes the hidden attribute in any action button on the bottom if you have any pagination to your form. The button will hang out at the bottom if you don't start with it hidden. We also add the <br> element to this. This is because each of the buttons has a <br> element between them and also aids in the "navigation" of the bottom of the page.
Keep in mind that you can also now do as you please with these action buttons as you can set an individual ID or class to identify them with. For my form specifically, the one I created this on, I hide and unhide the buttons based on the user. This allows the initiator to only see the buttons I want them to and a specific group to see another set of buttons.
There is a lot of really neat things you can do with this if you know how to tweak the DOM and know a fair amount of JavaScript. The sky is the limit once you get to tweaking things, and now you have another tool in your toolbox.
Hopefully, that wasn't too much for anyone. I'll be happy to help anyone out with this and how to make it function correctly. I've got this to work on a few different forms and it's helped me reduce the number of forms I'm using on one of my processes. Good luck to anyone trying this out, it can be daunting to have extra buttons if you're used to only having 3.
For the sake of image integrity, I've attached the photos I have since they are over the 1MB limit to put it in the post itself.
EDIT: I'd like to clarify a point that I didn't touch on enough. When adding the conditional expressions to your gateways the buttons will not list on your dropdown of actions. This is because Laserfiche Forms only recognizes buttons it made itself. To get around this (as shown in the pictures below) you need to add a blank "Last User Action = " expression and fill in the value of the button.
I show in the pictures below that the buttons I had added aren't listed in the dropdown, but the next two pictures after that show that you can type into the empty parenthesis the value of the button you are trying to use.
I can show what the flow looks like if anyone is interested (through the monitor tab). It will show what Forms would see when the custom action button is clicked.