CMS Actions

"It's still web development, it's just way easier!"

CMS Actions

Wrival CMS works directly with the Wrival language. Simple field names have been reserved for all the template, page, and object actions. The Wrival CMS allows its administrater to work in a preview environment and manage their content between the preview and live states. All the content management tools are already setup in an edit realm, but with the following form fields custom content tools could be created. The only requirement is that any of these fields are only active if the target page is a password-protected area as is in the edit and preview realms.

Also, the variables named RESULT and RESULT_LONG (contains paths) will summarize the result of these types of requests.

Actions

First, here's a quick description of what each of the core actions are for:

The field names in the following examples are bolded. Another reference of all these field names can be found in the System Variables reference under the Forms tab.

Publish

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="PUBLISH_TEMPLATES" value="Group">
  <input type="hidden" name="Group_1" value="Main">
  <input type="hidden" name="Group_2" value="Retro">
  <input type="submit" value="Publish Templates">
</form>

The value of PUBLISH_TEMPLATES can be any name that is then used to group the other fields by reusing the name, "Group" in this case, followed by the underscore and then any unique value following that. The group fields' values are the templates to be pubished. In this example, the templates "Main" and "Retro" would be published (copy from preview to live).

Publishing pages and objects works the same way, but the PUBLISH_TEMPLATES field must instead be named PUBLISH_PAGES or PUBLISH_OBJECTS respectively. The publish action allows for multiple templates, pages, or objects be published per request. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Withdraw

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="WITHDRAW_TEMPLATES" value="Group">
  <input type="hidden" name="Group_1" value="Main">
  <input type="hidden" name="Group_2" value="Retro">
  <input type="submit" value="Withdraw Templates">
</form>

The value of WITHDRAW_TEMPLATES can be any name that is then used to group the other fields by reusing the name, "Group" in this case, followed by the underscore and then any unique value following that. The group fields' values are the templates to be pubished. In this example, the templates "Main" and "Retro" would be withdrawn (removes the live versions).

Withdrawing pages and objects works the same way, but the REVERT_TEMPLATES field must instead be named REVERT_PAGES or REVERT_OBJECTS respectively. The withdraw action allows for multiple templates, pages, or objects be withdrawn per request. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Revert

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="REVERT_TEMPLATES" value="Group">
  <input type="hidden" name="Group_1" value="Main">
  <input type="hidden" name="Group_2" value="Retro">
  <input type="submit" value="Revert Templates">
</form>

The value of REVERT_TEMPLATES can be any name that is then used to group the other fields by reusing the name, "Group" in this case, followed by the underscore and then any unique value following that. The group fields' values are the templates to be pubished. In this example, the templates "Main" and "Retro" would be reverted (removes the live versions).

Reverting pages and objects works the same way, but the REVERT_TEMPLATES field must instead be named REVERT_PAGES or REVERT_OBJECTS respectively. The revert action allows for multiple templates, pages, or objects be reverted per request. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Delete

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE_TEMPLATES" value="Group">
  <input type="hidden" name="Group_1" value="Main">
  <input type="hidden" name="Group_2" value="Retro">
  <input type="submit" value="Delete Templates">
</form>

The value of DELETE_TEMPLATES can be any name that is then used to group the other fields by reusing the name, "Group" in this case, followed by the underscore and then any unique value following that. The group fields' values are the templates to be pubished. In this example, the templates "Main" and "Retro" would be deleted (removes the live and preview versions).

Deleting pages and objects works the same way, but the DELETE_TEMPLATES field must instead be named DELETE_PAGES or DELETE_OBJECTS respectively. The delete action allows for multiple templates, pages, or objects be deleted per request. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Rename

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="RENAME_TEMPLATE" value="Main">
  <input type="hidden" name="NEW_NAME" value="Classic">
  <input type="submit" value="Rename Template">
</form>

In this example, the template "Main" will be renamed to "Classic" upon the request.

Renaming pages and objects works the same way, but the RENAME_TEMPLATE field must instead be named RENAME_PAGE or RENAME_OBJECT respectively. The rename action only allows for one template, page, or object be renamed per request.

Save Template

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_TEMPLATE" value="MyTemplate">
  <input type="hidden" name="TEMPLATE_FOLDER" value="/special/">
  <textarea name="TEMPLATE_CONTENT"></textarea>
  <input type="submit" value="Save Template">
</form>

SAVE_TEMPLATE will save the content of a template. TEMPLATE_CONTENT is the data that is saved as the template (HTML source code). The TEMPLATE_FOLDER only applies when saving a new template and its value is the base folder. When saving a new template, the templates folder is saved to /_/templates/ within the base folder. In this example, "MyTemplate" would be saved to /special/_/templates/MyTemplate.html.

To upload files for a template use the UPLOADS fields.

As part of the new template process in Wrival CMS, the TEMPLATE_LAYOUT field are keys to pre-built html files. If the SAVE_TEMPLATE and TEMPLATE_LAYOUT are present the template becomes a copied version of the layout defined.

Save Page

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_PAGE" value="/newpage.wrival">
  <input type="hidden" name="PAGE_EXT" value="wrival">
  <input type="hidden" name="PAGE_TEMPLATE" value="Main">
  <input type="hidden" name="PAGE_CUSTOM" value="">
  <input type="hidden" name="PAGE_TITLE" value="New Page">
  <input type="hidden" name="PAGE_DESCRIPTION" value="Example New Page">
  <input type="hidden" name="PAGE_ONLOAD" value="">
  <input type="hidden" name="PAGE_AUX" value="">
  <input type="hidden" name="PAGE_ACCESS" value="">
  <input type="hidden" name="PAGE_GROUPS" value="">
  <input type="hidden" name="PAGE_USERS" value="">
  <input type="hidden" name="PAGE_TEST" value="">
  <input type="hidden" name="PAGE_CONDITION" value="">
  <input type="hidden" name="PAGE_TOHTML" value="1">
  <textarea name="PAGE_CONTENT"></textarea>
  <input type="submit" value="Save Template">
</form>

SAVE_PAGE will save the content of a page and its properties. PAGE_EXT is optional if the SAVE_PAGE already contains an extension. PAGE_CONTENT is the data that is saved as the page.

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="PAGE_FOLDER" value="/build">
  <input type="hidden" name="SAVE_PAGE" value="newpage">
  <input type="submit" value="Save Template">
</form>

As an alternative to setting SAVE_PAGE as a fully qualified page name (includes folder and .wrival) the PAGE_FOLDER field can be used to create new pages where selecting a folder might be an option.

Save Database Object

Tabbed Form:

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyDB">
  <input type="hidden" name="OBJECT_TYPE" value="Database">
  <textarea name="DATABASE_TABBED">(Tabbed DB Here)</textarea>
  <input type="submit" value="Save Tabbed Database">
</form>

The DATABASE_TABBED field is the whole table that can be saved from a textarea or a hidden field.

Upload Form:

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyDB">
  <input type="hidden" name="OBJECT_TYPE" value="Database">
  <input type="file" name="DATABASE_UPLOAD">
  <input type="submit" value="Upload Tabbed Database">
</form>

The DATABASE_UPLOAD field allows a text file to be uploaded and saved as the OBJECT_SAVE.

Database Properties

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyDB">
  <input type="hidden" name="OBJECT_TYPE" value="Database">
  <input type="hidden" name="DATABASE_PATH" value="/">
  <input type="hidden" name="DATABASE_PUBLIC" value="1">
  <input type="hidden" name="DATABASE_AUTO" value="1">
  <input type="hidden" name="DATABASE_CONDITION" value="False">
  <input type="submit" value="Save Database">
</form>

Additional fields include DATABASE_PATH, which sets the default path for images and files to be saved. The value will automatically have "_/files/" appended to it. If the saved path is different than it p previously was any existing files are copied to the new path. The DATABASE_PUBLIC field with a value of "1" lets Wrival know to treat any data as being from the public and in return makes it safe. The DATABASE_AUTO with a value of "1" instructs Wrival to automatically publish the database every time a record is saved. The DATABASE_CONDITION is evaluated whenever there is an attempt to save to it from the live realm and it must result as True or else Wrival not save anything.

Header Values per Record

Using just the header name for a field and its value is used for the object's record's value by default. Some header types require additional information to know how to be treated. The special ones are:

File Type

  • (headername)_VALUE_DELETE – Deletes file's field (and file itself) if 1.
  • (headername)_VALUE_KEEP – The past value (used to resave if no new upload and not a _DELETE).

Text Type

  • (headername)_VALUE_HTML – Text-to-html record value to be 1, enabling it.

Image Type

  • (headername)_VALUE_DELETE – Deletes file's field (and file itself) if 1.
  • (headername)_VALUE_KEEP – The past value (actually just $ext) (used to resave if no new upload and not a _DELETE).
  • (headername)_VALUE_ALT – Image's alternative text.
  • (headername)_VALUE_IMGATTS – Image attributes.
  • (headername)_VALUE_LINKURL – link URL
  • (headername)_VALUE_LINKTARGET – Link target.
  • (headername)_VALUE_LINKATTS – Link attributes.

Delete Records By Key

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE" value="MyDB">
  <input type="checkbox" name="DELETE_KEY_100" value="1" checked>
  <input type="checkbox" name="DELETE_KEY_101" value="1" checked>
  <input type="checkbox" name="DELETE_KEY_102" value="1" checked>
  <input type="submit" value="Delete Entries">
</form>

To delete records from a database use DELETE and DELETE_KEY_. Deleting entries are no differ for the CMS.

Database Header Changes

The DATABASE_HEADERS field is the amount of header fields to save. Then, for each one there should be a corresponding HEADER_(+number) and HEADER_TYPE_field. HEADER_(+number) is the header name and HEADER_TYPE_(+number) is the header type: boolean, count, data, expires, file, float, image, integer, key, select, text, or wrival. HEADER_TYPE_1 is always the key.

Database Header Limits (Maximum Lengths)

HEADER_MAX_(+number) sets the maximum length of the field's value when it is being written to. If either the maximum is greater than the MAX_CHARS or MAX_TEXT respectively or if it's not set then the MAX_CHARS or MAX_TEXT becomes the limit.

Header Type Values

For the header types that may have additional values associated with them there are special field names for them too. They are:

  • HEADER_(number)_EXPIRES – An amount of seconds (can have Wrival Insert(s).
  • HEADER_(number)_FILE – Value of "exec" makes it execute when requested.
  • HEADER_(number)_FLOAT – None needed, it just +=0 to make it a number value.
  • HEADER_(number)_INTEGER – round/floor/ceil (round is default if blank).
  • HEADER_(number)_SELECT – "DB|Header"
  • HEADER_(number)_TEXT – Converts it html when called (all entries, if some will not don't use, instead do value of "1" per entry to use it).
  • HEADER_(number)_WRIVAL – Wrival Inserts (to be parsed when saving new records).

Changes to headers affect all the records so care should be taken when doing using these fields.

Remove a Header

Any header fields that have no value (and are present) will be removed.

Save Email Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyEmail">
  <input type="hidden" name="OBJECT_TYPE" value="Email">
  <input type="hidden" name="NEW_OBJECT" value="1">
  To: <input type="text" name="EMAIL_TO" value="support@wrival.com">
  From: <input type="text" name="EMAIL_FROM" value="<#email>">
  Subject: <input type="text" name="EMAIL_SUBJECT" value="Message From: <#visitor_user>">
  Test: <input type="text" name="EMAIL_TEST" value="True">
  Type:
    <input type="radio" name="EMAIL_FORMAT" value="1"> Text,
    <input type="radio" name="EMAIL_FORMAT" value="2"> HTML,
    <input type="radio" name="EMAIL_FORMAT" value="3"> Text to HTML
  <textarea name="EMAIL_MESSAGE"></textarea>
  <input type="submit" value="Save Object">
</form>

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save File Object

<form name="actionform" method="post" action="/response.wrival" enctype="multipart/form-data">
  <input type="hidden" name="SAVE_OBJECT" value="MyFile">
  <input type="hidden" name="OBJECT_TYPE" value="File">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <input type="text" name="FILE_FOLDER" value="/">
  <input type="file" name="FILE_UPLOAD">
  <textarea name="FILE_TEXT"></textarea>
  <input type="submit" value="Save Object">
</form>

The enctype="multipart/form-data" attribute must be set in the form tag in order to upload a file. The FILE_FOLDER is the base path to where the file will be saved. In this case the uploaded file will end up in /_/files/. The FILE_TEXT field is an optional text field. When evaluating the file object it either returns the path and file name of the file or this text value if it's not empty. This is useful for creating a reusable link to the file or for custom image or video embeds.

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Image Object

<form name="actionform" method="post" action="/response.wrival" enctype="multipart/form-data">
  <input type="hidden" name="SAVE_OBJECT" value="MyImage">
  <input type="hidden" name="OBJECT_TYPE" value="Image">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <input type="text" name="IMAGE_FOLDER" value="/">
  <input type="file" name="IMAGE_UPLOAD">
  <input type="text" name="IMAGE_ALT" value="">
  <input type="text" name="IMAGE_ATTS" value="">
  <input type="text" name="IMAGE_LINK" value="">
  <input type="text" name="IMAGE_TARGET" value="">
  <input type="text" name="IMAGE_ATTS2" value="">
  <input type="submit" value="Save Object">
</form>

The enctype="multipart/form-data" attribute must be set in the form tag in order to upload a file. The IMAGE_FOLDER is the base path of where the image file will be saved. The actual folder will be that value plus _/files/.

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Increment Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyInc">
  <input type="hidden" name="OBJECT_TYPE" value="Increment">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <input type="text" name="INCREMENT_NEW" value="5000">
  <input type="submit" value="Save Object">
</form>

The INCREMENT_NEW value is the number to start at, 5000 in this case.

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Loop Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyLoop">
  <input type="hidden" name="OBJECT_TYPE" value="Loop">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <input type="text" name="LOOP_SOURCE" value="">

  Type:
    <input type="radio" name="LOOP_TYPE" value="1">As the Value Itself,
    <input type="radio" name="LOOP_TYPE" value="2">As Object(s)/Variable(s),
    <input type="radio" name="LOOP_TYPE" value="3">As Integer (loop an exact amount of times)

  <input type="checkbox" name="LOOP_UNIQUE" value="1">

  <select name="LOOP_SORT">
    <option value="">As Is</option>
    <option value="1">By Name</option>
    <option value="2">By Name Numerically</option>
    <option value="3">By Value</option>
    <option value="4">By Value Numerically</option>
    <option value="5">By Match Rating, Pattern:</option>
    <option value="6">By Headers</option>
  </select>
  <input type="text" name="LOOP_HEADERS" value="">
  <input type="checkbox" name="LOOP_INVERT" value="1">Invert (reverse order)

  <textarea name="LOOP_HEADER"></textarea>
  <input type="text" name="LOOP_CONDITION" value="True">
  <textarea name="LOOP_TRUE"></textarea>
  <textarea name="LOOP_FALSE"></textarea>
  <textarea name="LOOP_FOOTER"></textarea>
  <textarea name="LOOP_NONE"></textarea>

  <input type="submit" value="Save Object">
</form>

If LOOP_SORT value is "6" then it will sort by headers in LOOP_HEADERS.

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Random Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="RandomPassword">
  <input type="hidden" name="OBJECT_TYPE" value="Random">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <select name="RANDOM_POOL">
    <option value="1">[80] All letters (both cases), numbers, and all symbols</option>
    <option value="2">[63] All letters (both cases), numbers, underscore</option>
    <option value="3">[10] Numbers only</option>
    <option value="4">[52] Letters only (both cases)</option>
    <option value="5">[26] Letters only (lowercase only)</option>
    <option value="6">[26] Letters only (uppercase only)</option>
    <option value="7">[33] Easy Read (Legible) all upper and numbers excluding O,0,I,1</option>
    <option value="">Custom... (seperate each item with a comma)</option>
  </select>
  <input type="text" name="RANDOM_CUSTOM" value="a,b,c,d,e">
  <input type="text" name="RANDOM_LENGTH" value="4">
  <input type="checkbox" name="RANDOM_UNIQUE" value="1">
  <input type="submit" value="Save Object">
</form>

If RANDOM_POOL is Custom then the values in RANDOM_CUSTOM are used.

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Text Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyText">
  <input type="hidden" name="OBJECT_TYPE" value="Text">
  <input type="hidden" name="NEW_OBJECT" value="1">
  To: <input type="checkbox" name="TEXT_TOHTML" value="1">
  <textarea name="TEXT_CONTENT"></textarea>
  <input type="submit" value="Save Object">
</form>

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Variable Object

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_OBJECT" value="MyVar">
  <input type="hidden" name="OBJECT_TYPE" value="Variable">
  <input type="hidden" name="NEW_OBJECT" value="1">
  <input type="text" name="VARIABLE_VALUE" value="">
  <input type="submit" value="Save Object">
</form>

The NEW_OBJECT value must be "1" in order to be saved as a new object and will fail to save if an object with the SAVE_OBJECT name already exists. Otherwise, the object will be replaced.

Save Text as a File

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_TEXT" value="FileA=../<#live>/robots.txt">
  <textarea name="FileA"></textarea>
  <input type="submit" value="Save File">
</form>

The SAVE_TEXT field instructs Wrival to save text to a file. The value of SAVE_TEXT needs can be a list of fields names to save and where and what to save them as respectively. The location can either start with ../, which will allow for saving files outside of the current realm, or if it starts with / then it will save relative to the current realm. In this case, a file named robots.txt would be saved in the root folder of the live realm.

Upload Files

<form name="actionform" method="post" action="/response.wrival" enctype="multipart/form-data">
  <input type="hidden" name="UPLOADS" value="GroupA=../<#live>/,GroupB=/">
  File 1: <input type="file" name="GroupA_1">
  File 2: <input type="file" name="GroupA_2">
  File 3: <input type="file" name="GroupB">
  <input type="submit" value="Upload Files">
</form>

First, in the form tag you must include the enctype attribute with a value of multipart/form-data. The UPLOADS value is a list of group field names and the paths that each group should be saved to. In this example, if the form being posted is in the preview realm the files from "GroupA" would be saved to the live root folder and the file from "GroupB" would be saved to the preview root folder. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Delete Folders

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE_FOLDERS" value="Group">
  <input type="hidden" name="Group_1" value="/new1/">
  <input type="hidden" name="Group_2" value="/new2/">
  <input type="submit" value="Delete Folders">
</form>

The example above would attempt to delete /new1/ and /new2/ within the current realm. If the realm is preview or live the folder will be created for both. Also, deleting will fail if the folders are not empty. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Create Folders

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="CREATE_FOLDERS" value="Group">
  <input type="hidden" name="BASE_FOLDER" value="/">
  <input type="hidden" name="Group_1" value="new1">
  <input type="hidden" name="Group_2" value="new2">
  <input type="submit" value="Delete Users">
</form>

The example above would attempt to create /new1/ and /new2/ within the current realm. If the realm is preview or live the folder will be created for both. If the Group has a path then that is prepended to the folder to be created (makes new1/ to /new1/, etc). The BASE_FOLDER is an optional path that is prepended to to the new folder name. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Folder Access

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="FOLDER" value="/sub">
  <input type="radio" name="FOLDER_ACCESS" value="">Open
  <input type="radio" name="FOLDER_ACCESS" value="1">Close
  <input type="submit" value="Set Access">
</form>

If FOLDER_ACCESS is "1" it makes FOLDER password-protected. Otherwise it opens it up.

Delete Files

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE_FILES" value="Group">
  <input type="checkbox" name="Group_1" value="../<#preview>/_/templates/Main/x.jpg">
  <input type="checkbox" name="Group_2" value="../<#preview>/_/templates/Main/y.jpg">
  <input type="checkbox" name="Group_3" value="../<#preview>/_/templates/Main/z.jpg">
  <input type="submit" value="Delete Files">
</form>

The example above would attempt to delete the files that are checked within the current realm. The value of DELETE_FILE is a group that coorresponds to the checkboxes. If the realm is preview or live the folder will be created for both. Also, adding the underscore and a unique value to the file fields is only necessary if there's more than one item for a group.

Create User

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_USER" value="newuser">
  <input type="text" name="USER_NAME" value="">
  <input type="password" name="USER_PASSWORD" value="">
  <input type="radio" name="USER_REALMS" value="Live">Live (only)
  <input type="radio" name="USER_REALMS" value="Preview">Preview (and Live)
  <input type="radio" name="USER_REALMS" value="Edit">Edit (and Preview and Live)
  <input type="text" name="USER_DESCRIPTION" value="">
  <input type="hidden" name="GROUP" value="In">
  <input type="checkbox" name="In_ThisGroup" value="1">
  <input type="checkbox" name="In_ThisGroupToo" value="1">
  <input type="submit" value="Save Group">
</form>

Only SAVE_USER is required.

Delete Users

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE_USERS" value="Delete">
  <input type="hidden" name="Delete_1" value="usera">
  <input type="hidden" name="Delete_2" value="userb">
  <input type="submit" value="Delete Users">
</form>

Create Group

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="SAVE_GROUP" value="GroupName">
  <input type="hidden" name="GROUP_DESCRIPTION" value="">
  <input type="submit" value="Save Group">
</form>

The GROUP_DESCRIPTION field is optional.

Delete Groups

<form name="actionform" method="post" action="/response.wrival">
  <input type="hidden" name="DELETE_GROUPS" value="Delete">
  <input type="hidden" name="Delete_1" value="groupa">
  <input type="hidden" name="Delete_2" value="groupb">
  <input type="submit" value="Delete Users">
</form>

Backup

Creates a new zip file retrievable from the Wrival CMS that may be used for backup purposes. Use a field named "BACKUP" with a value of "All" (all account files), "Live" (everything for the live realm), "Preview" (everything for the preview realm), "Edit" (everything for the edit realm), "SSL" (certificates), "Users" (encrypted passwords, "Errors" (error log), "Hits" (traffic logs), and "Safe" (safe storage).

Configs

A field named SAVE_CONFIGS with a value of 1 will save any of the valid account configuration option fields and their values, which will then affect the Wrival behavior for the account.

CMS_SAVE

A field named CMS_SAVE with a value of "1" lets the Wrival CMS to know that it should process the form to theedit realm instead of the preview realm.

Colors

A field named SAVE_COLOR is saved to the Colors database object in the edit realm, which is used as the color selections in the Wrival CMS. The field COLOR_ALIAS is an optional field for providing an alternative name for the color. The DELETE_COLOR_(+key) with a value of "1" will have the color deleted.