Advanced Vivaldi Features & Developer Tools

Learn how to leverage URL routing, custom SQL runtime logic, user notification APIs, batch onboarding, and database auditing.

Launching Forms by URL

You can link directly to specific forms in external portals or automated workflows using the formkey parameter:

https://yourhostname/yourvivaldidirectory/index.php?route=ogs/dynamicform.php?formkey={yourformguid}

Locate your form's unique GUID in the Form Properties panel under Forms > Manage Forms > Form Designer, or inspect the form metadata icon at runtime.

Included Developer Libraries

Vivaldi bundles industry-standard front-end libraries on the master page for custom extension:

  • jQuery & Bootstrap: Modern responsive grid layout and DOM manipulation framework.
  • Font Awesome: Scalable vector icons.
  • Toastr: Non-blocking popup notifications.
  • DataTables: Interactive, high-performance table management.
  • Chosen: Live search-as-you-type dropdown menus.

Dynamic URL Parameters

Pass URL parameters into tabular forms to control row volume and filtering:

rowlimit
Limits the maximum number of rows returned at runtime in tabular views.
altkey
Specifies the database column name used to filter rows dynamically (URL-encode column names containing spaces).
altkeyvalue
Used in tandem with altkey to supply the filter value at runtime.

Custom Form SQL & Dynamic Context

When designing a form, you can override default queries with custom MySQL statements or views. Vivaldi supports the [username] keyword to enforce row-level security dynamically:

SELECT * FROM mytable WHERE username = '[username]'

At runtime, [username] is replaced with the active session user's identifier, ensuring users only access their authorized records.

User Notifications & Alerts

Broadcast alerts to the notification bell in the top-right menu bar using any of these approaches:

  • Direct Database Insert: Insert a record directly into ogs_notifications (minimum required fields: fk_userid and subject).
  • JavaScript API:
    createnotification(fk_userid, messagebody, notificationtype, messagefrom, messagesubject);
  • PHP Helper:
    fCreateNotification($fk_userid, $messagebody, $notificationtype, $messagefrom, $messagesubject);

Batch User Creation (UMC)

Quickly onboard accounts in bulk from an existing database table or view using the built-in batch script:

  1. 1 Open ogs/umc.php and update the $_GET['authtoken'] check with a secure, custom token string.
  2. 2 Execute the script via your browser with the required configuration parameters:
ogs/umc.php?authtoken=1234&sourcetable=myusers&col_email=useremail&col_username=username&roleassignment=99
authtoken
The authorization token configured in ogs/umc.php.
sourcetable
Target table/view containing source user records.
col_email
Column containing email addresses.
col_username
Column containing unique usernames (can match email).
col_customid
(Optional) Column containing custom tenant/stripe ID.
roleassignment
The numeric role ID from ogs_role (roleid) to assign.
nonotifications
(Optional) Set to 1 to suppress email alerts to newly created users.
Security Note: Initial passwords are automatically set to tmp_username, and users are prompted to create a new password on their first login.

Audit History Wizard

The Audit History Wizard creates an audit table (yourtablename_audit) and automatically configures MySQL triggers to track all INSERT, UPDATE, and DELETE events.

Access the setup interface directly:

index.php?route=ogs/auditsetup.php

Note: Upgrading from Vivaldi 3.3 or lower requires granting a Custom Form Permission for your administrator account with form name auditsetup.

Custom HTML Header & Footer

Add custom tracking scripts, CSS stylesheets, or server-side PHP logic across every page by editing customer_htmlhead.php and customer_htmlfooter.php. These files are non-destructive and preserved across Vivaldi version upgrades.

Custom Translations & Localization

To localize the user interface or add new languages, edit js/translation_customer.js using this structure:

"String you want to translate" : { es : "Spanish Translation", fr : "French Translation" }

Adding a New Language

  1. 1 Insert the language into ogs_language using the ISO 639-1 code and display name.
  2. 2 Define your localized strings in translation_customer.js.