Question
When creating a topic body you are allowed to define a link to an other topic in the way
[[New Topic Name]]
which is automatically converted into a valid Wiki name when viewed.
But how to do this when creating a new topic using a html form:
<form name="new" action="/cgi-bin/edit/Support/">
* New topic:
<input type="text" name="topic" value="" size="23" />
<input type="hidden" name="templatetopic" value="MyTemplate" />
<input type="submit" value="Create" />
</form>
Actually, when i enter a non Wiki name in the form i am informed that i tried to create a topic whose name is not a
WikiName.
What i want is that the user don't have to enter a Wikiname - instead the topic name entered into the form is automatically converted into one.
Is this possible ?
How it have to be done ?
- TWiki version:1 Dec. 2001
- Web server: Apache
- Server OS: SunOS
- Web browser: Netscape 4.7
- Client OS: Win NT
--
PetricFrank - 10 Jan 2002
Answer
On my TWiki site I've been working on a system to do something similar. I let people enter Bible verses with a pulldown for the book, then entry fields for the chapter and verse. Then
JavaScript assembles the formfields and sends you to the created page. Kind of a pain but was fun. You have to play some tricks to get javascript to work in some cases as you fight the TWiki processing ( see
NoTwikiWordsBetweenScriptTags ) Hope looking at my script helps you out.
http://www.mattwalsh.com/twiki/bin/view/Test/VersePrototype
Reply
Your workaround is good, but why the creation of the topic does not work ?
Even if i add
<input type="hidden" name="onlywikiname" value="off" />
to the form, it complains about topic to create not having a wiki name.
Using the option above i expect the edit script creates a wiki name from the name given.
Am i wrong ?
Update
I've changed bin/edit at line 72 from
# prevent non-Wiki names?
if( ( $onlyWikiName ) && ( ! &TWiki::isWikiName( $topic ) ) &&
( ! &TWiki::Store::topicExists( $webName, $topic ) ) ) {
# do not allow non-wikinames, redirect to view topic
TWiki::redirect( $query, &TWiki::getViewUrl( $webName, $topic ) );
return;
}
to
# prevent non-Wiki names?
if( ( $onlyWikiName ) && ( ! &TWiki::isWikiName( $topic ) ) &&
( ! &TWiki::Store::topicExists( $webName, $topic ) ) ) {
# do not allow non-wikinames, redirect to view topic
TWiki::redirect( $query, &TWiki::getViewUrl( $webName, $topic ) );
return;
} else {
$topic =~ s/^\s*//;
$topic =~ s/\s*$//;
$topic =~ s/^(.)/\U$1/;
$topic =~ s/\s([a-zA-Z0-9])/\U$1/g;
if( ( ! &TWiki::isWikiName( $topic ) ) &&
( ! &TWiki::Store::topicExists( $webName, $topic ) ) ) {
# do not allow non-wikinames, redirect to view topic
TWiki::redirect( $query, &TWiki::getViewUrl( $webName, $topic ) );
return;
}
}
This does it for me. Any problems with that ?
Probably somebody integrates this to official wiki.