%META:TOPICINFO{author="ProjectContributor" date="1696003379" format="1.1" version="1"}%
%META:TOPICPARENT{name="WebHome"}%
---+!! <nop>%TOPIC%
This topic is meant for developers. It contains =INCLUDE= sections to build a "create new topic" form.

%TOC%

---++ Usage
---+++ Including the form (simple)
Create a form with an empty name field:
<verbatim>
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="newtopic"
    newtopic=""
}%
</verbatim>

Create a form with an "auto increment" name, and with customised INCLUDE sections in topics listed in =override= param:
<verbatim>
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="newtopic"
    newtopic="TestTopicAUTOINC0"
    override="%HOMEWEB%.TopicFields,%BASEWEB%.TopicFieldsForWeb"
}%
</verbatim>

---+++ Customizing the order and layout
See the component table below what parts you can use to construct a form.

This is the code used in the [[%SANDBOXWEB%.%HOMETOPIC%]] form:
<verbatim>
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="js"
}%
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="formstart"
}%
<div class="foswikiFormSteps">
<div class="foswikiFormStep">
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="topicname"
    newtopic=""
}%
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="topicnamefeedback"
}%
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="wikiword"
}%
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="errorfeedback"
}%
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="submit"
}%
</div>
</div>
%INCLUDE{
    "%SYSTEMWEB%.WebCreateNewTopicComponents"
    section="formend"
}%
</verbatim>

---++ List of components
| *Component* | *Description* |
| =js= | Includes necessary Javascript files |
| =formstart= | Opens the form |
| =topicname= | Topic name field |
| =wikiword= | Javascript to automatically construct topicname text to %SYSTEMWEB%.WikiWord and tickbox to allow non-WikiWords |
| =topicnamefeedback= | Provides feedback on the automatically constructed topic name |
| =topicparent= | Input field with toggle to select list of topics in the current web to select as topic parent |
| =templatetopic= | Select list of template topics |
| =errorfeedback= | Provides feedback on why the submit button is disabled |
| =submit= | The submit button |
| =formend= | Closes the form |

<verbatim class="foswikiHidden">

%STARTSECTION{"newtopic" override="" sectionlist="js, formstart, topicname, submit, topicnamefeedback, errorfeedback, formend"}%%FORMAT{
    "%sectionlist%"
    type="string"
    format="$percntINCLUDE{
    $quot%override%,%TOPIC%$quot
    section=$quot$item$quot
}$percnt"
}%%ENDSECTION{"newtopic"}%

%STARTSECTION{"js"}%%TMPL:P{"JavascriptFiles/foswikiString"}%%TMPL:P{
	"LIBJS"
	id="JavascriptFiles/foswikiStringUnicodeChars"
	requires="JavascriptFiles/foswikiString"
}%%TMPL:P{
	"LIBJS"
	id="JavascriptFiles/foswikiWebTopicCreator"
	requires="JavascriptFiles/foswikiStringUnicodeChars"
}%%ADDTOZONE{"head" 
	tag="WebCreateNewTopicTemplate:META" 
	text="<noautolink><literal><meta name='foswiki.webTopicCreator.nameFeedback' content='%MAKETEXT{"Topic will be named: "}%' />
<meta name='foswiki.webTopicCreator.errorFeedbackNoWikiName' content='<p class=\"foswikiGrayText\">%ENCODE{"%MAKETEXT{"Enter the topic name as WikiWord or check the allow non-Wiki Word box."}%" type="entity"}%</p>' /></literal></noautolink>"
	requires=""
}%%ENDSECTION{"js"}%

%STARTSECTION{"formstart" defaultweb="%INCLUDINGWEB%"}%<form name="newtopicform" action="%SCRIPTURLPATH{edit}%/%defaultweb%/">
<input type="hidden" name="t" value="%GMTIME{"$epoch"}%" />
<input type="hidden" name="onlynewtopic" value="on" />%ENDSECTION{"formstart"}%

%STARTSECTION{"webname"}%    <select name="defaultweb" class="foswikiSelect"> 
     <option>%SANDBOXWEB%</option>
    %SEARCH{
        type="query"
        web="all,-%SANDBOXWEB%"
        topic="%WEBPREFSTOPIC%"
        "1"
        format="<option>$web</option>"
        nonoise="on"
    }% </select>%ENDSECTION{"webname"}%

%STARTSECTION{"topicname"}%<input type="text" class="foswikiInputField" name="topic" size="40" placeholder="%IF{
    "defined placeholder"
    then="%URLPARAM{"placeholder" default="%placeholder%"}%"
}%" value="%IF{
    "defined newtopic"
    then="%URLPARAM{"newtopic" default="%newtopic%"}%"
    else="%IF{"$BASETOPIC='WebCreateNewTopic'" then="" else="%BASETOPIC%"}%"
}%" />%ENDSECTION{"topicname"}%

%STARTSECTION{"wikiword"}%%TMPL:P{"onlywikiname"}%%ENDSECTION{"wikiword"}%

%STARTSECTION{"topicnamefeedback"}%<span class="webTopicCreatorFeedback foswikiGrayText"><!--generated name will be put here--></span>%ENDSECTION{"topicnamefeedback"}%

%STARTSECTION{"topicparent"}%
%JQREQUIRE{"ui::autocomplete"}%
%INCLUDE{"%SYSTEMWEB%.JQueryAjaxHelper" section="topicselector" INPUT_VALUE="%URLPARAM{"topicparent" default=""}%" INPUT_NAME="topicparent" EXCLUDE="%TOPIC%" PLACEHOLDER="%MAKETEXT{"Enter parent name"}%" }%
%ENDSECTION{"topicparent"}%

%STARTSECTION{"templatetopic"}%<select name="templatetopic" class="foswikiSelect">%IF{"'%URLPARAM{"templatetopic"}%'" then='<option selected="selected">%URLPARAM{"templatetopic"}%</option>'}%<option value="">%MAKETEXT{"Default template"}%</option>%SEARCH{"name~'*Template'" scope="topic" topic="*Template" web="%BASEWEB%" excludetopic="*EditTemplate,*WebCreateNewTopicTemplate,*ViewTemplate" type="query" nonoise="on" format="<option value=\"$web.$topic\">$topic</option>"}%</select>%SEARCH{"name~'*Template'" scope="topic" topic="*Template" web="%BASEWEB%" limit="1" excludetopic="WebTopicEditTemplate,*WebCreateNewTopicTemplate,*ViewTemplate" type="query" nonoise="on" format=" <span class='foswikiUnvisited'>%POPUPWINDOW{
url="%SCRIPTURL{view}%/%SYSTEMWEB%/WebTemplateTopics?web=%BASEWEB%;template=viewplain"
template="viewplain"
toolbar="1"
label="%MAKETEXT{"View templates"}%"
}%</span>"}%%JQREQUIRE{"popupwindow"}%%ENDSECTION{"templatetopic"}%

%STARTSECTION{"errorfeedback"}%<div class='webTopicCreatorError'><!--generated name will be put here--></div>%ENDSECTION{"errorfeedback"}%<

%STARTSECTION{"submit"}%<input type="submit" class="foswikiSubmit" value='%MAKETEXT{"Create this topic"}%' />%ENDSECTION{"submit"}%

%STARTSECTION{"formend"}%</form>%ENDSECTION{"formend"}%

</verbatim>
