[dokuwiki] interwiki links suggestion - more than one parameter in URL and rawurlencode

  • From: Michael Klier <chi@xxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Fri, 30 Jun 2006 13:59:30 +0200

Hi everybody,

I have a small suggestion related to dokuwikis interwiki links. I find
them really handy to create different link types with custom icons.
For example links to the debian wiki or something like that, just what
interwiki links are all about :-). However, I am trying to link to the
gentoo online handbook which requires more than one parameter passed to
the url.

This is how the link in interwiki.local.conf looks like:

gentoohb            http://gentoo.org/doc/en/handbook/handbook-x86.xml?

an interwiki link would look like this

[[gentoobh>part=1&chap=7]]

The problem is that the last part of the URL gets urlencoded by
dokuwiki (in inc/parser/xhtml.php) which results in the following.

http://gentoo.org/doc/en/handbook/handbox-x86.xml?part%3D1%26chap%3D7

You only need & = to build such links and I think that "decoding" those
2 in the final url won`t be a problem. Attached is patch which does
exactely that (just one line of code in inc/parser/xhtml.php in function
interwiki()). 

Any opinions on this?

Best Regards
Michael

-- 
Michael Klier

mail:   chi@xxxxxxxxxxx
www:    http://www.chimeric.de
icq:    206179334
jabber: chi@xxxxxxxxxxxxx
key:    http://downloads.chimeric.de/chi.asc
key-id: 0x8308F551
New patches:

[urldecode = and & in interwiki links
'Michael Klier <chi@xxxxxxxxxxx>'**20060630114852] {
hunk ./inc/parser/xhtml.php 635
+        // decode special entities = and & needed for queries
+        $link['url']   = strtr($link['url'],array('%3D'=>'=','%26'=>'&amp;'));
+
}

Context:

[finish lang update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060630092852] 
[use template name along with CSS cache file name
'Michael Klier <chi@xxxxxxxxxxx>'**20060628094419] 
[fix for FS#810
Anika Henke <a.c.henke@xxxxxxxx>**20060624202448] 
[GeSHi update to 1.0.7.11
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060621181256] 
[removed deprecated admin_acl.php file
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060621174752] 
[timeout for spell checker
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060620205616
 This adds a timeout of 13 seconds to the spell checker. This doesn't
 fix anything but ensures editing can be continued on a backend problem.
] 
[fixed css of secedit button
Anika Henke <a.c.henke@xxxxxxxx>**20060619173846] 
[back button tear down walls
matthiasgrimm@xxxxxxxxxxxxxxxxxxxxx**20060619171023
 The 'back' currently works only inside a namespace and hide the
 button, if the namespace startpage has been reached.
 
 This patch tear down the namespace wall. Now the 'back' button
 of the namespace startpage addresses the start page of the
 parent namespace instead of being hidden.
 
 With this patch the 'back' button works as before the 'startpage'
 patch series.
] 
[js.php fix
chris@xxxxxxxxxxxxx**20060619104613
 - correct begin/end comment, plugin filename wasn't being used
 - add file exists check, to avoid bloating js with comments for non-existent 
plugin js.
   Many (most?) plugins don't have javascript.
 
] 
[pluginmgr independent from tpl style.ini
Anika Henke <a.c.henke@xxxxxxxx>**20060618173540] 
[css cleanup and fixes
Anika Henke <a.c.henke@xxxxxxxx>**20060618144346] 
[fixed stupid bug in search query parser
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060618134515] 
[simplified tpl_getparent
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060618121521
 4th part of the global start series
] 
[updated hierarchical breadcrumbs
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060618113532
 Third part of the global start series
] 
[2006-06-12-plugins-zh-tw.patch
chinsan.tw@xxxxxxxxx**20060612032435] 
[zh-tw-20060612.patch
chinsan.tw@xxxxxxxxx**20060612025041] 
[fixing edit section bugs
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060617223723
   - Final edit section now ignored when there is only one header.
   - The configuration property 'maxseclevel' is now honored again.
     - Instructions are not created by the handler for edit sections 
       that have a level higher than 'maxseclevel'. These ignored 
       edit sections are merged into the previous edit section.
] 
[testcase for utf8_substr
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060617125202] 
[create correct titles for namespace links
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060617111153
 Second part of the global start patch series :-)
] 
[aspell fix #836
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060616154906] 
[greek language updates
Thanos Massias <tm@xxxxxxxxxxx>**20060616125101] 
[added missing settings to config plugin
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060616124539] 
[fixed transparency for IE in filetype icons
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060616120348] 
[JavaScript fixes for media manger on IE
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060616113600
 Fixes the display of the checkbox options
] 
[better onload handling
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060616104539
 This patch improves the way the window.oninit JavaScript function is
 called. This function is used to initialiaze all JavaScript funcions
 attached to the DOM so it needs to be executed **after** the full DOM
 was parsed by the browser. Unfortunately currently only Mozilla supports
 a DOMContentLoaded event. In all other browsers we had to wait for
 the window.onload event which will only be called after **all** content
 (including images) was loaded - this caused a visible delay on all
 JavaScript generated content (like the toolbar) in non-Mozilla browsers.
 
 Dean Edwards now presented a solution [1] which will work for all the bigger
 Browsers and is used in this patch.
 
 The following browsers now should fire the init event right after parsing
 the DOM:
 
 All Mozilla based browsers
 Internet Explorer
 Safari
 Opera >= 9.0b2
 
 All other browsers will continue to use the window.onload event.
 
 [1] http://dean.edwards.name/weblog/2006/06/again/
] 
[dummy file for meta dir
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060615202122
 makes sure this directory is unpacked from the install tarball
 by dumb windows clients
] 
[register notify #826
Sebastian Harl <sh@xxxxxxxxxx>**20060615194419
 A small patch for dokuwiki which enables dokuwiki to notify the
 administrator about new user registrations
] 
[greek language update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060615191700] 
[$conf['fetchsize'] added
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060615184847
 This patch adds an option to configure the maximum size for files the fetch.php
 will ever download. Setting this to 0 completely turns of the caching of 
external
 media files.
 
 Disadvantages of setting a low or zero fetchsize:
 
   * fetch.php needs to download images to be able to resize them. When the used
     fetchsize prevents the downloading the images can only be resized by the
     browser which means the browser will need to download the fullsized image 
first.
 
   * If the linked external media files vanishes it will no longer display in 
the
     wiki because it is not cached.
 
 Advantages of setting a low or zero fetchsize:
 
   * fetch.php may be used for a possible denial of service attack by requesting
     many big external files.
 
   * The created cache files may take a lot of space on the server
 
 I recommend to leave the setting at 2MB for internal and private wikis and 
lower
 the setting to about 200 to 500 Kb for bigger public Wikis.
 
 Note: the caching of files uploaded through the media manager is not affected 
by
 this setting.
 
] 
[namespace linking first part
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060611184453
 This patch adds namespace linking - formerly known as globalstart patch.
 
 It differs somewhat from the original patch. It is not implemented in getID()
 but in resolve_pageid().
 
 It is now possible to link to a "default" file of a namespace ending the linkid
 with a colon: [[foo:bar:]]
 
 To which page the link links is dependent on the xistance of certain named
 files. For the above mentioned link [[foo:bar:]] the following pages are 
checked:
 
 foo:bar:start
 foo:bar:bar
 foo:bar
 
 The pages are checked in the order above whatever page is found first will be
 linked to. If no page is found foo:bar:start will be chosen. BTW: 'start' is
 the value configured in $conf['start']
 
 Note: autoplural linking is not done for those links
 
 This is just the first patch. Several other locations of the code need to be
 adjusted to reflect this change and some testing needs to be done (first test
 cases are supplied within the patch bundle)
 
 Things that maybe need adjustment:
 
   - tpl_youarehere (hierarchical breadcrumbs)
   - tpl_button back
   - maybe others (search?)
 
 Patches would be welcome. The best aproach to fix things that don't work is
 probably making calls to resolve_pageid() instead of simple cleanID() calls.
 
] 
[make sure UTF8 lookup tables are always global
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060611173240] 
[changed inheritance for pgsql auth backend
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060611170748
 Because of incompatible SQL syntax the postgres backend can no longer
 inherit the retrieveUsers method from the MySQL backend
] 
[MySQL 3.23 compatibility issue
matthiasgrimm@xxxxxxxxxxxxxxxxxxxxx**20060611164347
 MySQL 3.23 doesn't support the keyword OFFSET in the LIMIT statement.
 This patch changes the code to the second alternative syntax.
] 
[update-zh-tw
chinsan.tw@xxxxxxxxx**20060610073758] 
[fix media file permissions
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060609072434
 Always chmod media because they may be saved with 
 different permissions than expected from the php umask.
] 
[fix for utf8_strpos #827
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060608200438] 
[Czech lang update, added czech to config
Bohumir Zamecnik <bohumir@xxxxxxxxxxxx>**20060608085236] 
[mediamanager style fixes for IE
Anika Henke <a.c.henke@xxxxxxxx>**20060607211456] 
[Updated SimplePie to beta2
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060607203012] 
[more semantic alt values in media tree
Anika Henke <a.c.henke@xxxxxxxx>**20060607193424] 
[reset title in metadata renderer
Andreas Gohr <gohr@xxxxxxxxxxxx>**20060607073358] 
[user the MAILHEADER_EOL in quoted printable encoding
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060606191953] 
[Fix for privilege escalation bug #825
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060606182742
 This rechecks all ACLs a second time before the template is called,
 avoiding similar problems in the future.
] 
[bug#701 - partial fix
chris@xxxxxxxxxxxxx**20060606131200
 
 This patch resolves issues with how call writers merge their instructions into
 the main handler instruction list.
 - writeCalls will now only merge instructions into the list of the next higher
   call writer
 - all call writers have been given a finalise() method to use when the call
   writer needs to be terminated gracefully at the end of parsing when the wiki
   markup didn't provide its expected exit syntax.
 
 I have only tested finalise with lists. It still requires testing with wiki 
markup
 which results in improperly closed tables, quotes and preformatted text (it may
 not be possible to improperly terminate some of these syntax modes).
 
] 
[msg styles, minor update
chris@xxxxxxxxxxxxx**20060606083232
 
 add overflow:hidden to the three msg styles.  This will allow them 
 to display neatly adjacent to floated content.  At present the background
 colour will continue under the float (e.g. TOC).
 
] 
[bug#775, fix access control of resend password page
chris@xxxxxxxxxxxxx**20060606083212] 
[fixed newlines in english texts
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060605200414] 
[fix for serious security bug #823
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060604175833] 
[fix php warning in common.php during getRevisions
chris@xxxxxxxxxxxxx**20060601212928
 
 A php warning can occur when the page name used in a revision check clashes 
with
 a namespace (sub-directory) in the same directory.  The strpos() call generates
 the warning as the offset used is longer than the directory name.
 
] 
[tidy format patterns
chris@xxxxxxxxxxxxx**20060601101231
 
 The bug preventing use of '<' & '>' in look ahead patterns was fixed
 some time ago.  This patch replaces the '\x3C' & '\x3E' in those syntax
 pattern where they were still in use.
 
] 
[XSS bugfix #820
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060531191114] 
[fixed parse-error in feed.php
'Michael Klier <chi@xxxxxxxxxxx>'**20060530063009] 
[bug#811
chris@xxxxxxxxxxxxx**20060530113123] 
[bug#808, add RewriteBase to .htaccess.dist
chris@xxxxxxxxxxxxx**20060530114718] 
[enhanced getBaseURL()
'Michael Klier <chi@xxxxxxxxxxx>'**20060529154201] 
[fixed google sitemap pinging #815
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060529183003] 
[Use meta data in RSS feed
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060528133552] 
[usability enhancements for the loginform #803
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060527185238] 
[fixed short open tag problem
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060527150702] 
[small improvements on JS compressor (maybe fixes #807)
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060527140157] 
[be clever about extensions on upload
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060527100310
 This patch makes it possible to enter filenames without an
 extension in the upload as field when the uploaded file it
 self has a known extension.
 
 It also prints a warning when an extension was changed by
 the user.
] 
[made text in mediamanger more clear
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060526233349] 
[mediamanager focus fix
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060526232000] 
[fix for sitemap creation #813
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060526223358] 
[update header test cases 20060526
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060526170229
 Also resolves a small p_close anomaly introduced when section edits were 
 given their own instruction.
] 
[resolve darcs conflict 20060526
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060526144958] 
[decouple section edit from header in renderer
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060522060004
 This patch achieves a partial decoupling of the section edit buttons 
 from the header syntax. A new 'section_edit' instruction is added to the 
 instruction list. The default set of these instructions is generated from 
 the header handler and the _finalize function. A generic 'section_edit' 
 renderer is now part of the renderer.
 
 To rewrite the section semantics, add, or remove section edit buttons the 
 header handler and renderer no longer need to be modified. Changes can be 
 dynamically made to the section edit buttons through the 'PARSER_HANDLER_DONE' 
 action event. An action plugin that registers this event can then modify 
 the calls list of the handler object before it is rendered.
 
 In short, this patch makes it possible to change the behavior of the section 
 edit buttons without having to change unrelated code. This patch should be 
 entirely transparent to DokuWiki users and cleanly written plugins.
 
] 
[added id to namespace headline
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060526144011
 This makes the currently in the medaia manager selected namespace available
 to any JavaScript files
] 
[fixed an AJAX problem for the media manager
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525175501] 
[validity fix in image meta edit form
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525173150] 
[media manager validity fixes
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525172718] 
[label for root of medianamespaces
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525160758] 
[javascript to toggle editor wrapping
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525152357
 This patch adds a way to sisable and enable the automating wrapping in the
 editor textarea. Disabling the wrapping is especially useful when editing
 large tables.
] 
[more mediamanager fixes
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525144000
 This fixes some styling issues, the cookie handling and a bug in the
 JavaScript caching mechanism.
] 
[media manager fixes
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060521213334] 
[minor media manager tweaks
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060520172118] 
[hide media details
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060520124854
 This adds an option to hide the details (thumbnail, metadata) in the media
 manager. The selected choice is remembered in a cookie.
] 
[media manager enhancements
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060519202900
 Separate scrolling for right and left side of the manager (like frames)
 Show syntax example for simple copy'n'paste if no JavaScript available.
] 
[link to media manager
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060519175959
 This patch add a link to the media manager when no JavaScript is available.
 Users can upload and browse for pictures now without the need for JavaScript
 only inserting has to be done manually then.
] 
[new mediamanager
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060519165023
 This patch adds a completely rewritten media popup. The following noteworthy
 changes were made:
 
 - media manager uses a collapsible namespace tree
 - media manager uses AJAX if available
 - media manager popup can be kept open when selecting a media file
 - only one template is used for the media manager :!: Template
 - Editable image metadata is configured in conf/mediameta.php now
 - The JS cookie mechanism was enhanced to store key/value pairs
 - Language strings can be exported to JS in js.php
 
] 
[getRevisionInfo much faster (cached)
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060525083202
 Makes getRevisionInfo much faster when loading all the revisions of a page.
 This is done by efficiently parsing the 'changes.log' data and caching the 
 results (in memory) so that future calls to getRevisionInfo return 
 immediately without reloading the 'changes.log' file. 
 
 (Note: the changelog system in DokuWiki should still be rewritten so 
 that changes are not logged into one huge file!)
] 
[makes getRevisions faster
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060525030452
 Makes inc/common.php#getRevisions a little faster.
 Takes about half as much time as the preg_match.
] 
[updated_localisation_sk_SK
ovegh@xxxxxxxxx**20060418090713] 
[gzip_output defaults to 0 now
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060525113648] 
[fixed rfc interwiki link
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060523191005] 
[fix: wrong secedit when page changes
Denis Simakov <akinoame1@xxxxxxxxx>**20060522182043
 Binds secedit buttons to file modification stamp ('lastmod'), so that if the 
page changes in between, editing of the old revision starts.
] 
[Lithuanian update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060522181314] 
[GeShi update to 1.0.7.10
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060522175437] 
[russian translation update
Denis Simakov <akinoame1@xxxxxxxxx>**20060522115828] 
[MySQL Bug - PHP warning if query result is empty
matthiasgrimm@xxxxxxxxxxxxxxxxxxxxx**20060522162327
 
 If a database query has no result, the returned array is not
 valid. This caused a PHP warning in the user manager if the
 filter is set in a way that the result list is empty.
 
] 
[config plugin ui update 20060520
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060520103718
 This patch hides settings that are missing config metadata and optionally 
 provides a list of warnings about settings that are not properly configured.
   - Warnings about settings are listed if $conf['allowdebug'] is true.
   - Warnings are listed by the $conf string as it appears in local.php.
   - Warnings show the $meta string as it would appear in the correct 
     settings metadata file.
   - There are 3 kinds of warnings.
     - undefined
       There is no $meta information defined for this setting.
     - no class
       The setting class specified in $meta can not be found.
       This setting does have a $meta entry.
     - no default
       The setting is missing a default value.
       The setting does have a $meta entry with a valid setting class.
   - Note: Settings with metadata but other warnings are allowed to appear 
           in the normal config settings list.
 
 Also...
   - Templates can now define their own settings classes.
   - Removed an XHTML validation error from the first patch.
   - More language strings to go with the new warnings.
 
 The warnings under the 'Undefined Settings' heading are intended to 
 provide developers with a list of any settings that they have forgotten to 
 finish preparing for the config plugin. This list should be blank for stable 
 releases.
 
] 
[moved gzip compression to init.php
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060519212751] 
[namespace-restricted fulltext-search part2
'Michael Klier <chi@xxxxxxxxxxx>'**20060518204647
     - now its possible to restrict the fulltext-search to 
       multible namespaces
 
       Examples:
         
         searchword @ns1 @ns2 @ns3
 
         "exact phrase" @ns1 @ns2 @ns3
 
] 
[namespace restricted fulltext-search
'Michael Klier <chi@xxxxxxxxxxx>'**20060518161855
     - The fulltext-search can now be restricted to a given
       namespace seperated by an "@"
 
] 
[avoid trolling in io_lock()
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060517165023] 
[lt lang update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060517105635] 
[gzip content-encoding option
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060516084132
   - Enables gzip compression of output xhtml for browsers that support it.
     For example the wiki:syntax page takes up 46.80KB raw, but only 9.88KB 
gzip encoded.
   - Setting is configurable through the config plugin.
] 
[jpg quality option
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060516062321
   - Adds a jpg quality setting for scaled images
     (Some images were getting too many jpg artifacts 
      at the hard-coded compression setting.)
   - Creates a group for the media settings in the 
     config plugin.
] 
[fr update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060515190136] 
[nl update
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060515185820] 
[javascript fix to mak sumarry checking use addEvent
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060512073949] 
[add config plugin support for plugin defined setting classes
chris@xxxxxxxxxxxxx**20060511083209] 
[more info is gathered on metaupdate in background indexer
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060511191450
 The background indexer now gathers info on contributors and modification
 dates from the changelog when adding the missing meta info.
 
 A new io_grep function was added which might be useful for other parts in
 the Wiki as well.
] 
[config plugin ui organization
Ben Coburn <btcoburn@xxxxxxxxxxxxx>**20060510065732
   - organizes the configuration settings list into chunks
   - provides a table of contents for the configuration chunks
   - provides one chunk for each plugin with configurable settings
   - provides one chunk for the active template (if it has settings)
   - provides the config file setting as a tool-tip on the setting label
     ex. $conf['start']
   - provides for localization of useful strings
   - generates a "smart" fallback name for plugins and templates
   - plugin and template sections are only shown if they have settings
   - current configuration list is organized into chunks
 
 Note: There are NEW strings to translate into the non-english language files.
 
] 
[TAG develsnap 2006-05-07
Andreas Gohr <andi@xxxxxxxxxxxxxx>**20060507173508] 
Patch bundle hash:
ee4c099c445e37e2a2b127e8bbd09822d859336e

Other related posts: