Question: How can I create a simple data form based application?

Answer

This answer assumes you have basic knowledge about Data Forms.

Using the steps below, you will create:
  1. A form definition
  2. A topic creation (HTML) form to automatically attach a data form to a topic
  3. A query search to find topics based on the data fields

Step by step:

Create a data form definition

See Data Form, specifically the section The form table.

As an example we will create the topic "ReadingForm" with these contents:
| *Name*   | *Type* | *Size* | *Values* | *Tooltip message* | *Attributes* |
| Title    | text   | 80     |          | Book or article title | |
| Category | select | 1      | ,Interesting,Remarkable,So-so | How you rate this reading material | |
| Author   | text   | 50     |          | Author's last name | |

Enable the form

Add the form in the list of Web forms. This is done by setting the preference WEBFORMS in the Web's WebPreferences (a comma separated list).

If you create a topic, you can always add a form to the topic by choosing "Add form" in the edit screen.

Now we will create an HTML form that does this automatically.

Create an HTML form for easy topic creation

HTML forms have nothing to do with data forms, except that they are a way to create topics with pre-defined values.

Example HTML form:
<form action="%SCRIPTURLPATH{edit}%/%WEB%/" method="post">
Name of the new topic: %BR%
<input type="text" name="topic" class="foswikiInputField" size="32" />

Title of article or book: %BR%
<input type="text" name="Title" class="foswikiInputField" size="32" />

<input type="submit" class="foswikiSubmit" value="Create topic" />
<input type="hidden" name="onlywikiname" value="on" />
<input type="hidden" name="formtemplate" value="ReadingForm" />
<input type="hidden" name="topicparent" value="%TOPIC%" />
</form>
Now create a bunch of topics with this form.
To list all topics that have a form named ReadingForm:
%SEARCH{
 type="query"
 "form.name = 'ReadingForm'"
 nonoise="on"
 format="   * [[$web.$topic][$formfield(Title)]]"
}%

To list all topics where the author name ends in "Auden":
%SEARCH{
 type="query"
 "form.name = 'ReadingForm' AND Author ~ '*Auden'"
 nonoise="on"
 format="   * [[$web.$topic][$formfield(Title)]]"
}%

SEARCH has more information on using %SEARCH.

Back to: FrequentlyAskedQuestion
Related Topics: UserDocumentationCategory
Topic revision: r1 - 19 Jun 2015, ProjectContributor
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback