17min

Modules - Front End Edit

Introduction

If a logged-in visitor to your Site has submitted a Module Item, they can now edit it too.

The Module Creator

Most Modules, including those created by the Admin and those created by visitors who are not logged in will not store the ID of a creator

However, any Modules created Front-End by a logged in User will store their creator's ID in the creator field. 

Filtering a Module List by creator

Finding Module Items created by the current user

HTML
|

Finding Module Items created by any specific user

In this example we create a variable by hard-coding a specific User ID.

HTML
|

Outputting information about the creator in the Module Layout

You can now access the following fields inside a Module Layout:

  • {{this.creator.id}} 
  • {{this.creator.name}} 
  • {{this.creator.first_name}} 
  • {{this.creator.last_name}}
  • {{this.creator.created_at}} 

Only owners of a Module Item that are logged in can view an Edit Form for that Item.

Find other Module items with the same creator

You could of course combine both of these features- creating a link to the same page including the creator_id as a query parameter and then filtering by that ID using context.params to fetch the ID from the URL.

Syntax for the Edit Form

Including the Form inside a Module Layout

Unlike the "Add" Form, the Front End Module Edit Form must be linked to the specific Module Item it will Edit. This means you can only output the Form inside a Module Detail or List Layout file. 

To include the Edit Form inside a Module Layout, add the Liquid tag: {% include 'module_form_edit', layout: 'default' %} Parameters: 

  • layout - Optional - Choose the name of your Layout file

Important

Even if you include the Liquid Tag, the Form will only display for visitors who are logged in and are registered as that Module's creator.

Developing the Form Layout

The Edit Form will work if you use the same Layout as you used for your add Form.  However, you may wish to use an alternative Layout so you can add some additional features.

Dynamic Fields from the Module

As you're including the Edit Form inside a Module Item, you have access to the Module fields that are inherited from the Module Layout.

One example might be adding a Title to the Form which dynamically references the Module Item: <h3>Edit {[this.name}}</h3> Another example might be displaying the creator's name: <h4>By {[this.creator.name}}</h4>

Pre-filling values 

In a Form Layout, we use the form_builder variable to dynamically add the correct name Attribute to inputs. You can use this to output the pre-filled value; instead of the name property, output the value property. For this example Module field: <input name="{{form_builder.fields.properties.module_field_1_1.name}}"> ...you can use the name field and replace .name with .value to add a value attribute:

HTML
|