# Mapping Gravity Forms to Forum Content

GravityOps Forum uses Gravity Forms as the foundation for its topics and replies. This guide explains how to map your forms so that when a user submits a form, the entry is correctly categorized as forum content.

## 1. How Mapping Works

GravityOps Forum needs to know which forms are used for **Topics** and which are used for **Replies**. You can set these assignments at three different levels:

- **Global Default:** These forms will be used for all topics or replies throughout the entire forum, unless overridden.
- **Specific Board:** This allows you to use different forms for different high-level boards.
- **Specific Forum:** This provides the most granular control, allowing you to use a unique form for a single forum.

### Important: Form Assignment Rules

To ensure consistent behavior and avoid data issues, assignment rules vary by plan:

*   **Free and Pro plans: One Type Per Form.** Each Gravity Form can only be assigned to a single **Form Type** (e.g., Topic or Reply, but not both).
*   **Free and Pro plans: Enforced Consistent Mappings.** If you use the same Gravity Form for the **same assignment type** across different contexts, mappings must remain identical.
    - When you select a form that is already assigned elsewhere, the plugin will automatically populate the field mappings and lock them to ensure consistency.
    - This prevents issues where the same form data might be interpreted differently in different parts of your forum.
*   **Free and Pro plans: Unique Assignment per Context.** Each specific entity (Global, Board, or Forum) can only have one form assigned for each type.
*   **Premium plan: Multiple Types and Contexts Allowed.** A single form can be assigned to multiple form types and multiple contexts, and a context can have multiple assignments of the same type.
*   **Premium plan: Mapping flexibility.** The same form can be reused with different mappings in different contexts.

## 2. Adding a New Form Assignment

To assign a form to your forum content:

1. Navigate to **Forms > GravityOps > Forum** and click on the **Forms** tab.
2. Click the **Add New Assignment** button.
3. Configure the following options:
   - **Entity Type:** Choose whether this is a "Global Default," "Specific Board," or "Specific Forum."
   - **Target Entity:** If you chose "Board" or "Forum," select the specific board or forum from the list.
   - **Form Type:** Select whether this form will handle **Topic** submissions, **Reply** submissions, **Login** or **Registration**.
   - **Gravity Form:** Select the Gravity Form you want to use.
4. **Field Mapping:** This is a crucial step to ensure the entries are processed correctly.
   - **For Topics:** Map the **Title**, **Content**, and optionally **Tags**.
   - **For Replies:** Map the **Content** field.
   - **For Login:** Map the **Username/Email** and **Password** fields.
   - **For Registration:** Map the **Username**, **Email**, **Password**, and optional profile fields (**Nickname**, **Display Name**). You must also select a **Default Role** for new users.
5. Click **Save Assignment**.

## 3. Managing Assignments

- **Reviewing:** The Forms tab lists all current form assignments, including their context and field mapping details.
- **Fallback Logic:** If a specific Forum does not have an assignment, the plugin will look for an assignment at the Board level. If none is found there, it will fall back to the Global Default assignment.
- **Deleting:** To remove an assignment, click the **Delete** link in the actions column. **Caution:** If you delete a mandatory assignment without a fallback, users will not be able to post in those forums.

## 4. Designing Your Forms

When creating Gravity Forms for your forum:

- Use standard Gravity Forms fields.
- **Topic/Reply Content**: For fields mapped to post content, enable the **Visual Editor** (Rich Text) setting in Gravity Forms to allow users to use basic formatting like bold, italics, and lists.
- **Login/Registration Passwords**: For the password field, enable the **Password Visibility Toggle** so users can see what they are typing. For **Registration**, also enable **Password Confirmation** to ensure users don't make mistakes when setting their password.
- **Attachments**: You can add a **File Upload** field to your Topic or Reply forms to allow users to share images or documents.
- You can use **conditional logic** within your forms to create a more dynamic experience.
- The **form notifications** in Gravity Forms will still function as usual, making it easy to alert moderators or users of new posts.
- Entries will be visible both in the Gravity Forms entry list and within the GravityOps Forum interface.
