%META:TOPICINFO{author="ProjectContributor" date="1655468868" format="1.1" version="1"}%
---+ <nop>AutoViewTemplatePlugin
%FORMFIELD{"Description"}%

---++ Description
This plugin sets the VIEW_TEMPLATE and EDIT_TEMPLATE variables according to a
corresponding form definition. So when you attach a new form to a topic, this
plugin will enable the corresponding view/edit template automatically.  This
comes in very handy for applications where users create new topics
without the help of a topic creator wizard, e.g. creating a new topic for a yet
non-existing <nop>WikiWord. Together with the appropriate application
settings, this plugin will then assure that the data the user enters is handled
appropriately during view and edit.

<div class="foswikiHelp"> *Note:* On Foswiki versions prior to Foswiki 2.1, Template names
containing non-ASCII characters are silently ignored. This plugin will display
a FLASHNOTE if the Form name results in an illegal template name.</div>

There are two modes on how the name of the template is derived:
   1 =exist= (default) and
   1 =section=.

---+++ Mode "exist"
A topic that has a =MyForm= <nop>WikiForm attached to it, will be displayed
using the view template =MyView= and editted using the =MyEdit=
if they exist. The template name is derived by stripping off the suffix
=...Form= from the form name and appending =...View=. The Wiki engine will
then use the template name =MyView= to search for the correct template along
the template search path, for example using a topic =MyView=.

Examples:

You have a form called =PurchaseRequestForm=. The plugin will now search for 
=PurchaseRequestViewTemplate=, and =PurchaseRequestEditTemplate=.

---+++ Mode "section"
A topic with a =MyForm= will be displayed/editted using the template name
stored in the named section =viewtemplate/edittemplate= . For example given the
=MyForm= form definition topic contains a section =viewtemplate= whose only
content is =MyOtherView=, then this will be used to view the topic. Likewise,
the content of the =edittemplate= section in =MyForm= will read to find the
edit template.

By default existing values for VIEW_TEMPLATE and EDIT_TEMPLATE have priority.
You can change this behaviour in =configure= so that the form defined templates
have priority.

Examples:

We have a form called =PurchaseRequestForm= which contains the usual table that defined the form fields.

We want this form to define that the topics are viewed with =ViewFormAtTopTemplate= and edited with =EditPurchaseRequestTemplate=.

Below this we place the two sections that defines the templates to be used. Note that you must omit the ...Template from the template names.

<verbatim class="tml">
%STARTSECTION{"viewtemplate"}%ViewFormAtTopTemplate%ENDSECTION{"viewtemplate"}%

%STARTSECTION{"edittemplate"}%EditPurchaseRequest%ENDSECTION{"edittemplate"}% 
</verbatim>

---++ Configuration Settings
The following settings can be defined in configure

| *Setting* | *Description* | *Default* |
| {Plugins}{AutoViewTemplatePlugin}{Debug} | Turn on debugging by turning this on | Default: On |
| {Plugins}{AutoViewTemplatePlugin}{Override} | Form defined templates override VIEW_TEMPLATE and EDIT_TEMPLATE settings | Default: Off |
| {Plugins}{AutoViewTemplatePlugin}{Mode} | The mode the plugin uses for defining templates. <br /> =exist= for deriving the template name from the form name <br /> =section= for defining the template in a section of the form definition topic | Default: =exist= |

---++ Installation Instructions
You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server.

Open configure, and open the "Extensions" section. "Extensions Operation and Maintenance" Tab -&gt; "Install, Update or Remove extensions" Tab.  Click the "Search for Extensions" button.  
Enter part of the extension name or description and press search.   Select the desired extension(s) and click install. If an extension is already installed, it will *not* show up in the
search results.

You can also install from the shell by running the extension installer as the web server user: (Be sure to run as the webserver user, not as root!)
<verbatim>
cd /path/to/foswiki
perl tools/extension_installer <NameOfExtension> install
</verbatim>

If you have any problems, or if the extension isn't available in =configure=, then you can still install manually from the command-line. See https://foswiki.org/Support/ManuallyInstallingExtensions for more help.


---++ Change History
%TABLE{columnwidths="7em" tablewidth="100%"}%
|  8  Apr 2016: | Released with Foswiki 2.1.1. Foswikitask:Item14014: Template files not working in hierarchical webs. |
|  7  Dec 2015: | Released with Foswiki 2.1. Foswikitask:Item13554: Enable non-ascii template names. |
|  18 Aug 2015: | Foswikitask:Item13625: AutoViewTemplatePlugin: reports Invalid template name ( Warning: Can't find named section viewtemplate in topic...) when used in "section" mode and no section exists. |
|  24 Jul 2015: | Released with Foswiki 2.0.1. Foswikitask:Item13554: Warn if invalid template name generated. |
|  16 Dec 2012: | Version released with Foswiki 1.1.7. Foswikitask:Item12297: Minor perllcritic change.|
|  10 Apr 2011: | Version released with Foswiki 1.1.3. Only a minor change related to how the plugin is being upgraded |
|  10 Dec 2010: | Foswikitask:Item10144: Fixed mistake in example in documentation |
|  31 Jul 2010: | Foswikitask:Item9415: Documentation updates |
|  06 Oct 2009: | Foswikitask:Item2213: Plugin got better documentation. No change in behaviour. |
|  20 Aug 2009: | Foswikitask:Item8248: added forward-compatibility for newer Foswikis (MD) |
|  27 Dec 2008: | Foswikitask:Item196: moved to Foswiki namespace |
|  15 Nov 2008: | Foswikitask:Item196: minor doc changes |
|  11 Jul 2008: | TWikibug:Item5770: try to derive the EDIT_TEMPLATE of a new topic using the <nop>WebTopicEditTemplate (MD) |
|  03 Jul 2008: | TWikibug:Item5747: fixed normalizing web part of form names (MD) |
|  13 Nov 2007: | added EDIT_TEMPLATE, speed improvements, docu (MD) |
|  29 Oct 2007: | TWikibug:Item4904: made specification of view template skin agnostic, \
                  fixed view templates in subwebs (MD) |
|  04 Sep 2007: | Added build script and installer, minor doc changes |
|  05 Jun 2007: | Initial version |
|  Foswiki Dependency: | $Foswiki::Plugins::VERSION 1.026 |
|  CPAN Dependencies: | none |
|  Other Dependencies: | none |

%META:FORM{name="PackageForm"}%
%META:FIELD{name="Author" title="Author" value="Foswiki:Main.OliverKrueger, Foswiki:Main.MichaelDaum"}%
%META:FIELD{name="Copyright" title="Copyright" value="&copy; 2008-2009, Oliver Krueger"}%
%META:FIELD{name="Description" title="Description" value="Automatically sets VIEW_TEMPLATE and EDIT_TEMPLATE"}%
%META:FIELD{name="Home" title="Home" value="Foswiki:Extensions/AutoViewTemplatePlugin"}%
%META:FIELD{name="License" title="License" value="GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]])"}%
%META:FIELD{name="Release" title="Release" value="15 Mar 2026"}%
%META:FIELD{name="Repository" title="Repository" value="https://github.com/foswiki/distro"}%
%META:FIELD{name="Support" title="Support" value="Foswiki:Extensions/AutoViewTemplatePlugin"}%
%META:FIELD{name="Version" title="Version" value="1.24"}%
