Difference between revisions of "WikiDB/Roadmap"

From TestWiki
Jump to: navigation, search
(Bugs)
Line 11: Line 11:
 
:** <nowiki><repeat table="handelaars" criteria="id=50">{{template}}</repeat></nowiki>, with in the template then direct use of the field names from the table. This seems not to work
 
:** <nowiki><repeat table="handelaars" criteria="id=50">{{template}}</repeat></nowiki>, with in the template then direct use of the field names from the table. This seems not to work
 
:** This I tried because I wanted to prevent writing *all* the table fields each time when calling the template: are there any possibilities there?
 
:** This I tried because I wanted to prevent writing *all* the table fields each time when calling the template: are there any possibilities there?
 +
:***Hey, I actually got this to work.  I was able to use the <nowiki><repeat></nowiki> tag inside a Template using template parameters to feed the fields of the <nowiki><repeat></nowiki> tag using a MediaWiki Extension called [http://www.mediawiki.org/wiki/Extension:ExpandAfter ExpandAfter].  Follow the link to learn how to install it.  Once installed, use it like this in your template: '''<nowiki>{{#expandafter|repeat|table="handelaars" criteria="id={{{templateparametername}}}">{{{tablefield}}} }}</nowiki>''' What this extension does is parse out the template parameters BEFORE calling the WikiDB code for the <nowiki><repeat></nowiki> tag.  What's ''really cool'' about this ExpandAfter extension is that it works for ANY <nowiki><xxx></nowiki> tag in MediaWiki, not just the <nowiki><repeat></nowiki> or <nowiki><data></nowiki> tags for WikiDB, but for others too, such as any tags introduced by other extensions. -- [[User:Mdrayman|Mdrayman]] 04:35, 3 July 2007 (BST)
 +
 +
=== BUG: data tag still creates records inside of nowiki tags ===
 +
 +
If I put the following code in a wiki page, the table referenced in the <nowiki><data></nowiki> tag still makes a record show up in that table.  Is there any way to illustrate to a user in a wiki page how to use the <nowiki><data></nowiki> tag without it adding records to the real table?
 +
<pre>
 +
<nowiki><data table="ServiceCustomerJobs">
 +
job_num=
 +
account_num=
 +
description=
 +
date_called=
 +
date_serviced=
 +
completion_time=
 +
job_page=
 +
satisfaction=
 +
complaint_page=
 +
</data></nowiki>
 +
</pre>
 +
 +
I bet that if you go look at the [[Special:Undefined Tables]] special page, there will be a new table called "ServiceCustomerJobs" because the <nowiki><nowiki></nowiki> tags didn't prevent WikiDB from using the <nowiki><data></nowiki> tag as a new record declaration.
 +
 +
-- [[User:Mdrayman|Mdrayman]] 04:35, 3 July 2007 (BST)
  
 
== Administration ==
 
== Administration ==

Revision as of 04:35, 3 July 2007

This is an (incomplete) list of features and bugs that need fixing for v1.

Bugs

  • On table display, the definition is currently above the page title and sitenotice. This only seemed to happen since I set 'MediaWiki:Sitenotice', so maybe has something to do with that - or maybe I just never noticed it for some reason? --HappyDog 00:00, 6 January 2007 (GMT)
    • It was to do with the site notice. ParserBeforeStrip is being called once for each interface message that uses wiki text (I assume - it's being called for that one, anyway!). I now use a flag so that the code in my hook only executes the first time it is called for a page. This will only work if (a) the hook is called for every page view (i.e. it is not avoided by caching) and (b) it is always called first. I don't know the answer to either of these, so if the bug resurfaces please let me know! --HappyDog 03:30, 23 January 2007 (GMT)
  • If a table doesn't have a definition, the 'data' tab is not displayed in 1.6.8 (it's ok in 1.5.6). --HappyDog 03:33, 23 January 2007 (GMT)
    • FIXED - In 1.5.6 the first tab is always 'nstab-main' - at some point this changed to include the namespace (e.g. nstab-table). Now I just check the first 6 characters equal "nstab-".
  • If I use a <repeat>-tag in a template and then use a template-parameter in the criteria-clause, then the parameter-value in the criteria-clause is not replaced by its value first. (Stephanvaningen, 23 May 2007)
  • Like this: <repeat table="handelaars" criteria="id={{{templateparametername}}}">{{{tablefield}}}</repeat>
  • After that, I tried this:
    • <repeat table="handelaars" criteria="id=50">{{template}}</repeat>, with in the template then direct use of the field names from the table. This seems not to work
    • This I tried because I wanted to prevent writing *all* the table fields each time when calling the template: are there any possibilities there?
      • Hey, I actually got this to work. I was able to use the <repeat> tag inside a Template using template parameters to feed the fields of the <repeat> tag using a MediaWiki Extension called ExpandAfter. Follow the link to learn how to install it. Once installed, use it like this in your template: {{#expandafter|repeat|table="handelaars" criteria="id={{{templateparametername}}}">{{{tablefield}}} }} What this extension does is parse out the template parameters BEFORE calling the WikiDB code for the <repeat> tag. What's really cool about this ExpandAfter extension is that it works for ANY <xxx> tag in MediaWiki, not just the <repeat> or <data> tags for WikiDB, but for others too, such as any tags introduced by other extensions. -- Mdrayman 04:35, 3 July 2007 (BST)

BUG: data tag still creates records inside of nowiki tags

If I put the following code in a wiki page, the table referenced in the <data> tag still makes a record show up in that table. Is there any way to illustrate to a user in a wiki page how to use the <data> tag without it adding records to the real table?

<data table="ServiceCustomerJobs">
job_num=
account_num=
description=
date_called=
date_serviced=
completion_time=
job_page=
satisfaction=
complaint_page=
</data>

I bet that if you go look at the Special:Undefined Tables special page, there will be a new table called "ServiceCustomerJobs" because the <nowiki> tags didn't prevent WikiDB from using the <data> tag as a new record declaration.

-- Mdrayman 04:35, 3 July 2007 (BST)

Administration

  • Update tables when page is moved.
  • Update tables when page is deleted.
  • Update tables when page is undeleted.
  • (check that rollbacks work)
  • 'What links here' should show templates that are included via data tags.

Syntax

  • Better data syntax: Need to allow multiple rows in a single definition.
    • Also, data definitions in a DB namespace shouldn't require the 'table' attribute (default to current).
  • Repeat tag - some things to iron out (see below)
  • Field names need to be limited to 255 chars (DB limit)
  • Field names need to have leading underscores removed (Reserved for special uses)

Repeat tag

Still quite a way to go on this, but here's where I'm up to:

Done

  • Basic sort/filter is implemented. Only limited filter options available, due to a parsing issue with MW/HTML.
  • Contents of repeat tag are repeated for each row with variables expanded (see below for limitations).

To Do

  • Tag Contents
    • Aliases are currently expanding correctly, but not in a foolproof manner (e.g. aliases that point to aliases are not handled - this is a general issue, I think)
    • Undefined fields - is their current handling OK? Currently they will be expanded if defined for the row, and left as they are if not. This might be the best behaviour, but perhaps not.
    • Cannot currently supply default values for empty fields. In any case (given the above point) default values for undefined fields must, by definition, be ignored (I think).
    • Cannot handle nested vars. Not a problem at the moment, but if default values are allowed, the default should be allowed to be an alternative variable (e.g. {{{ShortName}}} should be valid syntax).
    • Should strip blank lines at start and end. Maybe restrict to stripping 1 line only (so <repeat> need not be on the same line as the start of it's content). Should _not_ use trim(), as we need to allow for space at start of line (wiki <pre> syntax).
  • Filtering
    • Can't use > in attribute values, e.g. criteria="Field>Value", as it cripples parser. Need to decide how to specify criteria.
    • In general - how detailed can we get?
  • Other
    • Ability to have header/footer? Ideally you put your header before the repeat tag, and the footer afterwards, but tables are screwed up by this (though I might be able to fix that somehow). There may also be other situations that cause problems.

Code Tidying

  • Ensure all user-visible text uses the message cache.
  • Add profiling statements.
  • Move datatype handlers out of WikiDB class (into separate module).

Misc

  • References to tables in table="..." attributes should follow redirects. This allows tables to be moved without screwing everything up!
  • Special:UnusedTables to list tables that don't have any data (opposite of Special:UndefinedTables).