Revision [4022]

This is an old revision of AutoReplace made by ChristianBarthelemy on 2005-01-05 20:44:46.

 

Last edited by ChristianBarthelemy:
Display WikiWord as Wiki Word for guests and users who choose so
Wed, 05 Jan 2005 20:44 UTC


Automatic Replace of strings

I like the simplicity of the automatic link creation when I type a new WikiWord. But I hate having to think about it all the time and as I naturally write "the wiki word" I would like the system to understand that for me. This is particularly enerving when typing people names: typing JohnDoe is not natural and it is also a pain for the eyes of a WikiStranger.

Those having a palm certainly like the capability to code small sequences so that they are transformed into long words as soon as typed. The same kind of thing exists in most of the word processors as well.

My solution

Having a database used when saving (or editing?) the WikiPage to replace an Input Entry by the Output Entry to which it is linked.
This database would be fed by an appropriate action used in the code of the WikiPages: {{equivalent words="auto replace*automatic replace" separator ="*" casematters="no" dissociated="no"}}.
Such an action placed on this very WikiPage would then transform any string "auto replace" into [[AutoReplace auto replace]].

Moreover the confort provided by such a functionality, it allows more consistency in the WikiPages by reformating the content to ensure that the WikiLinks are generated even when the author forgott the NoSpaceInBetweenRule.

A much simpler solution

I picked the ExpandedWikiWords idea from Teamflux which is a commercial Wiki based on zwiki. The idea was already there.
The solution consists in adding a space before any capital letter within a word (not including the first one) when this word isn't enclosed in brackets (we may want to add similar restrictions to double quote).
This solution is easier to implement, there is nothing to be done from the WikiEditor. The decision whether to use it or not should be taken by the user so it should be a new item in the UserSettings. The anonymous users shoud be have it by default and this decision could be part of the ConfigurationOptions.

The code

1) adding field to user table:

SQL-query:
ALTER TABLE `wikka_users` ADD `space_camelcase` ENUM( 'Y', 'N' ) DEFAULT 'N' NOT NULL;


2) adding a table row to show the status of the variable (to actions/usersettings.php):

change
<tr> <td align="right">Show comments by default:</td> <td><input type="hidden" name="show_comments" value="N"><input type="checkbox" name="show_comments" value="Y" <?php echo $user["show_comments"]
"Y" ? "checked=\"checked\ : ?> /></td> </tr> <tr> <td align="right">RecentChanges display limit:</td> <td><input name="changescount" value="<?php echo htmlspecialchars($user["changescount"]) ?>" size="40" /></td> </tr>




3) added the user-table-update in actions/usersettings.php:

change:



to



4) create the function addspaceincamelcase($camelcase) in formatters/wakka.php:



5) last update in formatters/wakka.php:

change:



to:




CategoryDevelopment
There are 3 comments on this page. [Show comments]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki