Free links
This code change allows page names to have spaces in. URL's are then in this format when you have mod_rewrite ( i havnt tested it without mod_rewrite - i suspect it would fall over so any solution to this would be good) http://www.domain.com/Page+Name+here. That would go to a page called 'Page Name here'.This also changes the format for forced links. Because pages can now have spaces obviouly the old method of the seperator being a space wont work any more. So on JavaWoman JavaWoman's suggestion i changed it to a | (pipe). the new format after these changes for a forced link is [[name here|link text here]] or [[name here]]
edit:
THIS CODE IS NOT QUITE READY
just realised it breaks the category system a bit. and probly the backlink action
- A quick fix for the category problem: in wikka.php, replace :
-
- function FullCategoryTextSearch($phrase) { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' and match(body) against('".mysql_real_escape_string($phrase)."' IN BOOLEAN MODE)"); }
- by :
-
- function FullCategoryTextSearch($phrase) { return $this->LoadAll("select * from ".$this->config["table_prefix"]."pages where latest = 'Y' and match(body) against('\"".mysql_real_escape_string($phrase)."\"' IN BOOLEAN MODE)"); }
- For the backlink action, I did not see a problem but I may miss something?
- -- HackArt
in wikka.php find:
- // is this a full link? ie, does it contain alpha-numeric characters?
and replace it with:
- // is this a full link? ie, does it contain characters not valid for a wiki page name?
- // changed so that a space is a valid character for a wikiname
- I suggest to replace the last line by this one:
- This enable more generic support for language specific characters (like in French).
- In a similar way, you also need to replace the line 3. in handler/page/edit.php by
-
if (!(preg_match("/^[\w ]+$/s", $this->tag))) {
- Please note that for preg_match to work properly with \w style character classes, the correct LOCALE should be configured on your host. If not, you dynamically configure it:
- add this line somewhere in the wikka config array of wikka.config.php (adjust to your custom LOCALE of course):
-
- "LOCALE" => "fr_FR"
- and add this somewhere at the end of the wakka constructor in wikka.php
-
// set locale according to wikka config
if ($this->config["LOCALE"])
setlocale(LC_ALL,$this->config["LOCALE"]);
- -- HackArt
and last but not least, find:
- return ($linkedPage ? "<a href=\"".$this->Href($method, $linkedPage['tag'])."\" title=\"$title\">".$text."</a>" : "<a class=\"missingpage\" href=\"".$this->Href("edit", $tag)."\" title=\"Create this page\">".$text."</a>");
and replace with:
- // changed so that the tag name is urlencoded. this converts the spaces to +'s to make the URL valid
then in handlers/page/edit.php find
and replace with:
- // changed so the edit handler allows pages with spaces in the names to be created/edited
and the last file to change is formatters/wakka.php.
find:
- else if (preg_match("/^\[\[(\S*)(\s+(.+))?\]\]$/s", $thing, $matches)) # recognize forced links across lines
and replace with:
- // changed so that the seperator for forced links is a | (pipe) and not the first space.
- else if (preg_match("/^\[\[(.+?)(\|(.+))?\]\]$/s", $thing, $matches)) # recognize forced links across lines
i THINK thats all of the changes. let me know what you think, if anything needs to be changed or whatever.
Need Help
So so.. i can't use FreeLinks at WikiName with Korean or Japanese.If fill in WikiName with Japanese, ???????? is output and can't create mySQL db field. If fill in WikiName with Korean, i have to see just blank page.
Somebody any idea?
Categories: CategoryUserContributions
The first one is backward compatibility: given the convention of using a space to separate the page tag from the link description in named forced links:
[[link This is a link]]
if we implemented free links this would result in incorrectly parsed links for websites running older versions of Wikka. A simple enhancement would be to allow undescores in page names. We are planning to add some flexibility to the regex patterns used for valid links, so stay tuned...
Forced links and free links are really two different ways of implementing links. You are not limited to camelcase in Wikka, you can easily create (named) forced links like [[blabla]] or [[blabla This is a link]] or even [[blabla 简体中文]].
The problem of long tags readability is addressed by the SmartTitle function: http://wikkawiki.org/SmartTitlesInfo
However, I think I will try to add support for an alternative markup for free links, such as @"a free link", in my local installation.
It is true that it is possible to "force" non-camel links, but unfortunately as every tags are nevertheless encoded as wiki words in Wikka, they popup everywhere: in index, in categories listings, in titles. Then, the mix up between camel and uncameled names is even more confusing to explain to users.
The solution to uncamel on the fly is not good either, as "cameling" is a lossy operation raising ambiguities when it comes to recover the spaces: Using iTunes -> UsingITunes -> ? Using I Tunes or Using ITunes ?
-- Paul