Difference between revisions of "User talk:Gero"

From FollowTheScore
Jump to: navigation, search
(DPL 1.8.7 on MW 1.16alpha: new section)
(DPL 1.8.7 on MW 1.16alpha)
Line 899: Line 899:
 
$this->interwikis += $other->interwikis;
 
$this->interwikis += $other->interwikis;
 
}</pre>
 
}</pre>
 +
--[[User:Subfader|Subfader]] 19:19, 2 August 2009 (UTC)

Revision as of 20:19, 2 August 2009

I am interested to promote DPL to become part of mediawiki / wikipedia. How do you feel about this idea?

I agree, it seems very useful.--Patrick 15:14, 17 February 2007 (CET)
Gero, maybe make a list with possible effects this might have. And then analyse whether you want that. Possible effects:
  • you are not the sole maintainer
  • the development and feedback will be on mediawiki servers - contributers that are blocked there may find it harder to give feedback
  • win people that only contribute directly to mediawiki
  • no need for seperate install
  • no possibility of upgrade, without whole mediawiki upgrade
Tobias Conradi 17:32, 10 August 2007 (CEST)
  • I wouldn´t have problems in not being the sole maintainer. But I must confess that DPL is rather monolithic (I inherited the code and did not dare to change it fundamentally - although looking backwars I probably should have done so).
  • hosting my mediawiki is fine with me, as are the other two points
  • But at the moment I still care for stability. I enjoy the freedom to publish updates every now and then.
  • Used without care DPL could cause a lot of unnecessary and unwanted server load. I am also a little bit concerned about that.
  • But still I think the MediaWiki software should copme as a bundle together with the possibilities DPL provides.
Is there anybody out there who has an opinion on that point? Gero 23:53, 10 August 2007 (CEST)
Well, which point? I think you should not be the sole maintainer because, for example, DPL development stagnates when you aren't around/available. ;) -Eep² 10:59, 11 August 2007 (CEST)
I think DPL functionality should definately be a part of the MediaWiki install, but I don't think it's currently suitable for Wikipedia due to their high traffic and the ability to easily make expensive queries. Perhaps DPL queries could be restricted to protected pages, or the ability could be added to cap the resource that a query can consume...? --Nad 07:13, 3 September 2007 (CEST)


Want an SVN-repository?

Hi Gero,

I maintain a Wiki that makes great use of DPL since DPL2 (vowi.fsinf.at, perhaps you've heard of it ;)) and we have an SVN-repository for our own extensions. Since you still publish your code as ZIP-files I wonder if you might be interested in getting a public SVN-directory in our repository (or alternatively your own repo).

Mati 21:55, 10 December 2007 (CET)

That would be nice, indeed.

  • I am not very familiar with svn (though I have been using sccs, rcs, cvs occasionally in the last decades ..). Is there a short and simple "howTo"?
  • As you may have seen there are several extensions (wgraph and call) besides DPL which I provide.
  • I guess that you would have to install a root directory for each of them? Or a common one for all of them? If there is access data needed for me, please send to gero.scholz@t-online.de
  • Once the source code is in svn: Is there a simple way for a user to download the whole tree? I know that there are such commands from the command line - but are they available via remote access for every normal user?
  • My idea (so far) was that most people are familiar with unpacking a ZIP file but less people know how to deal with a version control system ...
Gero 10:26, 11 December 2007 (CET)

Your message at my Wikisource talk page

Hi, and thanks for your message (you said to reply here).

I tool a look at your DPL extension. It looks nice, and I think I understand some of what you are trying to accomplish with it, but my technical expertise is limited and I don't fully understand it. I am also not entirely clear as to what elements of Labeled Section Transclusion are included in DPL.

As to how to promote these things: First, people with technical expertise have to build a working, tested extension. That has apparently been accomplished both with DPL and LST.

The next step is to get the senior developers to actually apply the extension live at Wikimedia wikis (for instance, LST was designed for Wikisource). I thought that this second step would be easy, but apparently it is not, because the developers are extremely busy and have a huge list of things to be implemented. So you have to keep reminding, lobbying, etc., for instance on IRC or Wikitech mail (I don't have access to IRC).

It would be great if you could further clarify, in layman's terms, about DPL and how it incorporates LST. And lobbying is useful too...

Best to reach me at my Wikisource page as you did. Dovi


please see my answer at the end of Talk:Manual --Gero 20:53, 19 February 2007 (CET)

Developer note

Hi! Thanks for the hard work on the DPL, it's so much more useful than when I used to work on it. Please see my message at Discussion. -- IlyaHaykinson 12:00, 25 February 2007 (CET)

Thanks for the compliment. I think something like DPL is really needed for MediaWiki and it´s worth investing time and energy ... -- Gero 15:31, 26 February 2007 (CET)

Quick turnaround

Gero, just wanted to thank you for your fix to "replaceintitle". We decided this morning to deploy DPL at http://busytonight.com/wiki, specifically because we need "replaceintitle" in one particular context. I tested, it didn't work as advertised -- then I noticed on the issues list here that you made a comment today that it had been fixed, based on a comment yesterday that it wasn't working as advertised in 1.0.7. So I opened an internal ticket for us to upgrade from 1.0.7 to 1.0.8. (The person I assigned it to said, "But I just installed it last week! How can I have to upgrade it already?" :-) Richmintz 18:36, 9 April 2007 (CEST)

glitch in Special:Allmessages

Your code is printing a warning upon loading Special:Allmessages. Just FYI.

cat1 AND cat2

Hi Gero I found no way for "cat1 AND cat2". Is there an example somewhere? 84.190.56.160 11:20, 21 June 2007 (CEST)

Ok, it's category=cat1 category =cat2 ... ;-) regards Tobias 84.190.56.160 11:28, 21 June 2007 (CEST)

css files

Greetings,

This is kind of an obscure request and not directly related to the dpl extension, but I was wondering if you could email me the css files used in your example pages. I'm trying to get wiki tables and html working together, and those pages have some good examples. Or maybe just the classes used? Either would be great! Feel free to email me directly if you'd like. Thanks! --Natebsi 02:29, 20 July 2007 (CEST)

There is no css code except the MediaWiki:Common.css file.

#n-Manual { background-color: #ffddaa; }
#n-Source { background-color: #ccccff; }
#n-Test { background-color: #ccffcc; }
#n-Type { background-color: #dedede; }
/* wikitable, sortable, and prettytable class definitions
** based on meta.wikimedia.org MediaWiki:Common.css 
*/
table.wikitable, table.sortable, table.prettytable {
  margin: 1em 1em 1em 0;
  background: #f9f9f9;
  border: 1px #aaaaaa solid;
  border-collapse: collapse;
}
table.wikitable td, table.sortable td, table.prettytable td {
  border: 1px #aaaaaa solid;
  padding: 0.2em;
}
table.wikitable th, table.sortable th, table.prettytable th {
  background: #E6E6FA; /* lavender; wikimedia: #f2f2f2 */
  border: 1px #aaaaaa solid;
  text-align: center;
}
table.wikitable caption, table.sortable caption, table.prettytable caption {
  margin-left: inherit;
  margin-right: inherit;
}

Is it that what you were looking for?

Gero 08:00, 20 July 2007 (CEST)
Thats exactly what I'm looking for, thank you so much! --Natebsi 18:35, 20 July 2007 (CEST)

Parsing problems

Recently the Guild Wars Wiki has installed DPL. Currently I'm trying to get DPL to work in a certain fashion. See this page. The problem I am having, is that I am trying to fill my output table with entries that contain a |-character (table cell separator). What I would like to know is, if the following is possible with DPL:

Page "A" (which is included in Category:Skills):

{{Skill infobox
| description = This skill does {{gr|10|100}} damage.}}

Page "B" calling a DPL function as follows:

<DPL>
category=Skills
includepage={skill infobox}:description
mode=userformat
listseparators=\n{| {{STDT}} class=sortable\n|- \n! ||Name||Description,\n|-\n|STYLE="padding: 0px;"|[[Image:%PAGE%.jpg]]\n![[%PAGE%]],,\n|}
secseparators=\n|
</DPL>

My output page will only show a table like this:

  Name Description
Skill image Skill name This skill does {{gr

Where I want it to show:

  Name Description
Skill image Skill name This skill does 10...82...100 damage.

Is this possible? CoRrRan --86.87.179.57 23:57, 23 July 2007 (CEST)

Reply to "parsing problems"

First, thank you for this clear explanation about what you want, what you tried and what did not work as expected. And then my answer:

  • The 'include= {macro}:parameter' syntax is meant for simple access to one parameter and indeed it takes the value of the parameter literally (mainly for performance reasons)
  • Therefore you will see the plain wiki text if the value of your parameter contains template calls.
  • But there is another way which should work:
    • write a "phantom" template which is used as a surrogate for the original template and use that template in the include statement.
    • For example: 'include={macro}.xyz' where 'xyz' would be a hopefully meaningful suffix to the name of the original macro (aka template). In your case the macro is named 'skill infobox', so just write 'include={skill infobox}.xyz'.
    • DPL will then use the template 'skill infobox.xyz' instead of 'skill infobox'. And in 'skill infobox.xyz' you can do whatever you want. It receives the same parameters as {skill infobox} PLUS additional parameters named %PAGE% and %TITLE% which you can access in the usual way with triple curly braces.
    • The trick is, that the call to {gr} will be resolved before the parameters are being passed to 'skill infobox.xyz'
    • Last hint: If you do not have a good idea what suffix to use (in place of 'xyz') you might use '.dpl'. This would at least make clear that this template is used within a DPL query. As its basename is the same as the original template, you will find them next to each other in an alphabetical listing.

Last comment: If you get everything to work based on this advice and if you think that others may have the same kind of questions, please create a DPL:FAQ document and use this as a first entry.

Gero 19:37, 24 July 2007 (CEST)
This is exactly the information I wanted to have! I have been able to modify my output table in such a way that my {gr}-template is now properly parsed before being put into the DPL table output.
Now another thing I would like to be able to do: would it be possible to dictate the output to certain table cells? For instance, I would like to be able to do something like this:
  Name Description Rest
{{{Image1|}}} {{{Name1|}}} {{{Description1|}}} {{{Energy1|}}} {{{Cast1|}}} {{{Recharge1|}}}
{{{Campaign1|}}} {{{Quest1|}}}  
{{{Image2|}}} {{{Name2|}}} {{{Description2|}}} {{{Energy2|}}} {{{Cast2|}}} {{{Recharge2|}}}
{{{Campaign2|}}} {{{Quest2|}}}  
Is this at all possible?
Anyway, I really want to thank you with your help on pointing me to the {skill infobox}.dpl-call, that really worked. If the next question isn't possible, that's not too big a problem, just a "nice to have". And regarding that DPL:FAQ : is there a page already for it, because the link you created resulted in a red link... Regards, CoRrRan --86.87.179.57 00:24, 25 July 2007 (CEST)
Yes, this is possible. You just have to create the subtable structure within the "alternate template". The template creates a row of a table each tikme it is called, and one field of this row is another table. I assume that the template has enough information to create the row completely. Maybe Test identical chapters can give you an idea how it works.
Regarding the FAQ: Just go ahead and create it!
Gero 05:10, 25 July 2007 (CEST)

I think the original problem here was actually due to DPL not retrieving the literal value of the parameter. In Page "A", which has:

{{Skill infobox
| description = This skill does {{gr|10|100}} damage.}}

Is the complete description parameter represented by

description = This skill does {{gr|10|100}} damage.

or does that pipe symbol after "gr" signal the end of the parameter and start of the next?

description = This skill does {{gr

By MediaWiki standards, the former is correct, but DPL seems to go by the latter in this case.

You are right. The latest release (1.2.9) handles this now correctly. So the original form you wanted to use should now work as expected.. Gero 08:48, 27 July 2007 (CEST)
Very nice, thanks. Also though, the same bug still exists for pipes within "[[ ]]"s. (See Nigunda Test within Test section inclusion# include a single template parameter).


Thanks for your help

I just wanted to say thanks for your suggestions. Based on your feedback, I wrote an FAQ. Then, to meet our work requirements (see example using Template:Todo2), I wrote an extension that

  1. creates a "My Tasks" personalized button at the upper right hand of every page
  2. creates a Special:TaskList page to list all tasks assigned to a user with the {{todo2}} template
  3. sends out email reminders to task assignees when tasks are created/modified.

I would like to share this extension with everyone who want to use it but don't know the best way to do so. What would you recommend? --Gri6507 19:32, 2 August 2007 (CEST)

P.S. Unfortunately, I cannot do a live example of this extension because our company wiki is behind a firewall :-(

Add it to http://mediawiki.org/wiki/Extension:My_Tasks (or whatever you want to call it; and be sure to add a http://mediawiki.org/wiki/template:extension for it). But you may want to check out http://mediawiki.org/wiki/Extension:Tasks_Extension first... -Eep² 11:23, 3 August 2007 (CEST)
Thanks for the suggestion. I have created the new extension on MediaWiki's website. Please feel free to give feedback. --Gri6507 15:33, 3 August 2007 (CEST)

Hello?

Would you please reply (on the appropriate page) to my comments/suggestions/bugs in the past week or so:

Thanks. -Eep² 06:46, 15 August 2007 (CEST)

DPL talk:Manual - DPL parameters: Controlling output format#resultsfooter bug as parser function too... -Eep² 06:50, 15 August 2007 (CEST)
Talk:C and DPL:Discussion#Redirects to include pages that link to them? too please...you've replied to other people since then...I don't appreciate being ignored and/or blown off like this, Gero... -Eep² 09:29, 24 August 2007 (CEST)
I try to do my best - but my time is limited. I helped you a lot and implemented several things due to your requests. I consider the #redirect problem as too complicated to solve within the php code. I showed you how to solve it with simple query nesting. It is by no means necessary to change something in "each redirect article" as you wrote. The only thing you have to do is to split your query into two articles. I recommend that you have a second look at C and CC. Maybe you want to change the names of these two articles anyway.
I don't understand the C/CC thing, which is why I posted about it on Talk:C, which I would prefer you reply on in order to keep the discussion in context and not require switching back and forth to follow the discussion... You'll note I didn't ask any specific questions about DPL on this talk page--only to get your attention to visit the links (and reply there instead of here)... Please reply on Talk:C and answer my questions there. -Eep² 06:35, 25 August 2007 (CEST)
I appreciate your comments, criticism and stimuli but please accept that I have to set priorities. Extending the booleans e.g. would of course be possible but I can´t see why it should be a big gain.
Again, as I state on DPL:Requests for new features#More boolean support: "on"/"off" (for HTML checkbox form support) and "1"/"0" for easier typing. In other words, HTML form compatibility and user-friendliness is the gain... -Eep² 06:35, 25 August 2007 (CEST)
Row/column is too hard to do
How/why is it "too hard to do"? It should be a fairly simple optional switch to put the headers on the side vs. the top... -Eep² 06:35, 25 August 2007 (CEST)
and Template field output is against the existing concept of template substitution (which I feel is more powerful and better suited).
Not always--especially in my case. Your way forces excessive templating that could better be handled more efficiently in a single template. Why reinvent the wheel and duplicate data unnecessarily? That's basic database design right there... -Eep² 06:35, 25 August 2007 (CEST)
The database error will be corrected (bugs always have priority). The idea of importing text from other wikis has nothing to do with DPL (I answered to that request quite recently).
So, from my side, there is nothing 'open' at the moment.
As DPL is open software it is of course possible for you and all others to make the changes you feel are desirable. From time to time people have done so as you may have observed. If nobody objects I will try to integrate such changes. Therefore I recommend to upload a diff file which shows the code changes.
As long as I feel responsible for DPL (which I currently do) I will be open for ideas from everybody. Have a nice day. Gero 10:25, 24 August 2007 (CEST)
Unfortunately, I'm not a coder. -Eep² 06:35, 25 August 2007 (CEST)

Help on limited lists

Hi Gero, I'm Poke from the official Guild Wars Wiki (see some comments above). Currently I'm working with various DPL lists and came to one issue I want to solve. When I create a limited list with count is there any way to include the number of all found pages instead of the limited one? In my example I limit the list of ~250 pages to 50 and I want to display that there are 250 pages, not 50. Is there any way to do this without using another DPL list?
Thank you very much. Poke 23:41, 29 August 2007 (CEST)

Answer

Currently there is no other solution than using nested queries, for example

{{#dpl:namespace=Template
|resultsheader=<h2>Templates (%PAGES% out of {{#dpl:namespace=Template|format=,|resultsheader=%PAGES%}})</h2>
|count=10
}}

Templates (10 out of 500)

Gero 09:22, 30 August 2007 (CEST)

Hm, thank you - I hoped there was another method.. Poke 16:51, 30 August 2007 (CEST)

Mootools conflict

Hi Gero, I found that Mootools conflicts with the wikibits.js code prior to MW1.10 but works fine if that script is replaced with the 1.10 version. --Nad 01:00, 3 September 2007 (CEST)

I found the exact problem of the conflict which is outlined at http://www.mediawiki.org/wiki/Mootools. MW1.10's wikibits.js has a simple bug-fix implemented which involves changing the add-button loops to loop only through numerical keys rather than all the children, since many components add event callbacks to such elements. --Nad 07:06, 3 September 2007 (CEST)
Have you tested MW 1.9.x and below to make sure the MW 1.10 wikibits.js is compatible? I've replaced just the for loops and the "undefined" errors go away at least. -Eep² 12:52, 3 September 2007 (CEST)
I've tested replacing the entire file which appears to work but could have problems, replacing only the loops is best. --Nad 13:03, 3 September 2007 (CEST)

TreeView4

The new Treeview4 code is able to handle transclusion much better and allows those templates like Template:Links 2 to include the tree definition within them to make their syntax much simpler. For example see Category Tree Example. TreeView4 is still in testing but seems fine so far and can be run easily along side the current version, see treeview doc page --Nad 13:13, 7 September 2007 (CEST)

Thanks for the information about TreeView4. I will install it here in the next days .. Gero 14:02, 7 September 2007 (CEST)
Treeview 4.0.6 is the current version which handles multiline items, to force a line-break at a particular point use a normal <br>. Otherwise use css to define how the lines are formatted. By default it now uses dotted connector lines which I've uploaded the default images for, but you can set them to the empty spacer image if you don't want them. Also, the css rules have changed slightly, mine are as follows:
.tree-view,
.tree-view td,
.tree-view tr { margin:0; padding:0; vertical-align: top; text-align: left; }
.tree-view td.tree-text,
.tree-view td.tree-text a { font-size:8pt; line-height: 14px; }
.tree-view td.tree-text { padding: 2px 0 0 3px; }

Spambots

Looks like some spambots have found you! the quickest solution is to install Extension:ConfirmEdit which in it's default setup will add a simple numerical addition question to the user account creation. --Nad 04:07, 11 September 2007 (CEST)

Yes, thank you for that advice. I was already thinking about such a measure... --Gero 07:35, 11 September 2007 (CEST)

Hello? #2

These things need your response still please...:

-Eep² 09:01, 16 September 2007 (CEST)

.. Yes, but there are not only your requests, and my time is limited. Let´s see wehat is possible .. Gero 10:04, 16 September 2007 (CEST)
No, they're not, but my requests were before most of the others you have responded to since I replied (which is the same stuff Nad pulled on me before that I got so pissed off at him for)... I am trying to get my wiki formatted how I want and have been working on it now for almost 2 months now and still cannot attain the desired goal, despite having tried many variations/extensions and seeking out help in many different ways (IRC, forums, wikis, etc). Needless to say, my patience is wearing thin...especially since I have been wanting to get this database done for the past 7 years now and MediaWiki is the closest I've come to actually being able to do it. So to be hindered by so many little things is...quite aggravating and frustrating. <twitch> -Eep² 10:33, 16 September 2007 (CEST)
I still need some help with DPL:Discussion#Replace_delimiter-separated_lists_with_links and DPL:Discussion#More_comma_problems please. Also, per DPL:Requests_for_new_features#Template_field_output still, how do I use the multiple template parameter support for include and still get all parameters as links without having to specify each field's formatting specifically in a phantom template? Ideally, it would be nice if DPL could automatically pull in all parameters (with their inherent/native formatting) without having to even specify them (and even a way to exclude specific parameters--with regex or at least wildcard support). See http://www.tnlc.com/wiki/index.php?title=Comparison_table for various attempts. Also, per DPL:Requests_for_new_features#Table_row.2Fcolumn_header_switch, I still need a way to have table "rows" (horizontal) as "columns" (vertical) in order to look like http://www.tnlc.com/eep/compare/table.htmlEep² 15:04, 27 September 2007 (CEST)
  1. I wrote an answer to the 'comma' problem.
  2. I see no way to offer swapping columns and rows in an output table. It may sound strange to you but that would be VERY complicated to do. Maybe you find another extension which can take a complete wiki table and swap it. Taken alone this functionality could be built much easier (but I won´t do it). I might be able to call the API of such an extension once it would be there.
  3. You can use 'multiple template parameters' without 'table' of course. If you want to convert each parameter into a hyperlink you must specify that explicitly as it is by no means clear that template parameters might be interpreted as link targets. The new 'tablerow' statement offers help if you want tro have a table where each template parameter corresponds to one column. If not you have to provide a surrogate ("phantom") template.
Gero 17:19, 27 September 2007 (CEST)

Hey Gero

Thanks very much for feedback on my bugs and FAQ postings.

I wonder if you had time to look at the SQL I wrote here;

http://semeb.com/dpldemo/index.php?title=DPL:Requests_for_new_features#Add_.27contributors.27.3F


Hopefully that would allow you to rank 'contributors' to a page or to a category... ug... or even to pages within a category. Do you ever wonder if DPL is growing beyond all bounds? --Dmb 18:57, 18 September 2007 (CEST)

Thanks for the query! Have you had a look at (debug=3) the current complexity of SQL which is produced by DPL? I really do wonder whether the code (and my head) can cope with adding another chunk of logical branches to that. Lines 2300..2500 in the code deal with the output of the SQL statement. I guess it would have to become another path similar to the handling of multiple revisions. At the moment I am working on something else (suppressing backlinks to DPL output) which is really hard. But I think there will be a moment where my head is free again ... Gero 20:06, 18 September 2007 (CEST)

Hey Gero ... about Wgraph?

I was using Wgraph as a convenience thing, and to test the limits of what is possible. The Test graph is a dependency graph for the 'BioConductor' project for the statistical analysis of microarray data. I really like aiSee, so Wgraph is very nice for me. I made the dependency graph for a friend, and I thought that it would be nice to get a picture.

To answer your question, I didn't try it on a local machine, as I haven't got round to installing the extension locally. However, I see that it is now working... after a fact... I find that when editing a particular Wgraph page that *had* a working graph, after making edits that give a non-functional graph, the old working graph is still shown, giving the false impression that the previous edits worked.

Hrm... seems not working any more! I renamed the Test graph page to;

Test graph - BioConductor package dependancies, where I see no image.

BTW, a Wgraph in a page containing ('s breaks.


Here is an image generated with graphviz for reference...

Biocpackages readable.small.png


Thanks for the great software. I read your profile on MediaWiki... sounds interesting!

I am currently working on two wiki projects that may be of interest to you because they contain (unstructured) structured data;

--Dmb 20:33, 26 September 2007 (CEST)

Do you work in research? Your projects look quite interesting ..
I made some tests with your sample data and discovered (as I had already suspected) that the graph generator on the webserver hits some technical limit if you use the full test sample. I changed the script. Now the output files are explicitly erased before graph generation starts, so you should at least no longer be fooled by old output. But there is still no error message (apart from an empty graph) in such cases at the moment.
When you use 2/3 of the sample data everything works fine. I played around a little with attraction, repulsion and gravity; the result looks quite nice Test graph 2. The output is png and svg, the svg looks much better as it supports 4 or 5 levels of zooming. The text characters are represented as polygons. This is good for zooming but makes the file big (~4MB).
I don´t understand your remark on parenthesis crashing a Wgraph. Could you give an example?
Gero 00:26, 27 September 2007 (CEST)

Uncategorised articles question

Hi Gero, I can't seem to get uncategorised articles to list anymore, I've added the extra database view, but it seems to have stopped working at some point. If I just do {{#dpl:category=}} shouldn't that list them? it doesn't return any content on this wiki either, am I missing something obvious here?

Also if you're interested, the new version of SimpleForms uses MediaWiki's native ajax functions and no longer requires mootools. --Nad 23:36, 12 October 2007 (CEST)

Thanks for bringing this up. The extended view needed for uncategorised articles is not installed in the dpldemo wiki. I once tested it in my local wiki and it worked. But I have never checked since then. I will give it a look ...
I had problems with mootools so I will try your latest version. As you may have seen I have developed a "pattern" of a MW page containing a SimpleForm calling itself via the 'Call' extension. Maybe I can use Ajax here instead. Althouh I am quite happy with the way it works right now..
Is there a way to create a form which will put the contents of the form elements (selections from combo boxes, contents of fields and text areas) into a single piece of text (possibly using a template) which then is stored as a new article? I see occasions where I would like to offer a form to the user which he just fills in and thereby cerates a new article in some stanbdardized format. See for example the way I try to handle Bug Reports.
--Gero 08:37, 13 October 2007 (CEST)
Yes that can be done, but it currently involves very cumbersome syntax with a lot of JS. But the next version has a new feature which makes integrating forms with templates very simple, I'll let you know when I have a working example ready. --Nad 14:14, 13 October 2007 (CEST)
Fine. Regarding articles without categories: It still works on my local wiki. You must add a pipe symbol to your command:
<dpl>
  category=|
</dpl>

Gero 21:35, 14 October 2007 (CEST)

Can you see if the dpl query as a parser function works please? I think that may be the issue, for some reason;
# tag works
<DPL>
namespace=Template|
category=|
</DPL>
# parser function fails
{{#dpl:namespace=Template|category=|}}

the tag query works but the parser function fails, for example in one table;

{| 
| TAG || PARSER
|-
|<DPL>
namespace=Template|
category=|
</DPL>
|{{#dpl:namespace=Template|category=|}}
|}

--Zven 21:53, 14 October 2007 (CEST)

You ran into a typical problem of wiki syntax! The pipe after "category=" is understood as a parameter separator by the wiki engine. you must escape the pipe character using {{!}}.
Zven 22:28, 14 October 2007 (CEST)
Doh, thanks for the reminder, both nad and I forgot about that >< . This worked without the <nowiki> tags;
{| 
| TAG || PARSER
|-
|<DPL>
namespace=Template|
category=|
</DPL>
|{{#dpl:namespace=Template|category={{!}}}}
|}

--Zven 22:28, 14 October 2007 (CEST)

Excellent, well I'm glad that's working then - I didn't even realise we needed a pipe, let alone that it needed to be escaped :-/ --Nad 03:06, 15 October 2007 (CEST)

SImple Forms caching problem

The problem appears to be a caching issue - it's only happening when action=render, as can be seen from this request which shows in the returned content that it's being returned from the parser cache which is wrong. I've done a patch which ensures the cache is disabled (even though it should be anyway since it returns dynamic content?!) but check it out with the latest code (0.4.3) and it may have solved the problem. --Nad 08:23, 22 October 2007 (CEST)

Thanks for the quick response. 0.43 still seems to behave as before Test Simple Forms. I cleared my browser cache and tried with several browsers but as you suspected the cause lies on the server side. Is there a debug switch I could activate? Gero 08:51, 22 October 2007 (CEST)
Strange it's still returning it from the parser cache - I'll have another look and see if I can reproduce the problem locally so I can fix it quicker. Regarding the other issue of not being able to put a form inside another parser-function, that's a known bug which I'll get fixed as soon as I get enough time - unfortunately I've been having to focus on boring old money-earning :-( --Nad 23:09, 22 October 2007 (CEST)
The last patch wasn't working, 0.4.5 hopefully will fix the action=render caching problem. I was too busy to think clearly and hadn't called the cache disabling function, also it wasn't disabling the parser-cache for action=render. --Nad 02:57, 27 October 2007 (CEST)
Don´t hurry. I got a PHP error due to missing varaible declarations (the same occurs on your homepage, btw). I added the two missing declarations and then tested again. It looks as if the server responds now, BUT: The #request is always empty ... And the web sniffer still shows a comment which indicates that some caching might be active:
!-- Saved in parser cache with key d0045553:pcache:idhash:2091-1!1!0!!en!2 and timestamp 20071027083651 --
Gero 10:40, 27 October 2007 (CEST)

New User Questions

Hello and thank you for such a powerful extension.

When I use the following, everything works fine:

<DPL>
  category=WRG_Members
  format=,[[%PAGE%|%TITLE%]], - ,
  count=20
  ordermethod=size
  order=descending
</DPL>

However, when I change the ordermethod to "lastedit", I receive the following error:

The DPL extension (version 1.5.0) produced a SQL statement which lead to a Database error. The reason may be an internal error of DPL or an error which you made, especially when using DPL options like titleregexp. Query text is: SELECT DISTINCT `wrg_page`.page_namespace as page_namespace, `wrg_page`.page_title as page_title, rev_user, rev_user_text, rev_timestamp FROM `wrg_revision` AS rev, `wrg_page` INNER JOIN `wrg_categorylinks` AS cl0 ON `wrg_page`.page_id=cl0.cl_from AND (cl0.cl_to='WRG_Members') WHERE 1=1 AND `wrg_page`.page_is_redirect=0 AND `wrg_page`.page_id=rev.rev_page AND rev.rev_timestamp=( SELECT MAX(rev_aux.rev_timestamp) FROM `wrg_revision` AS rev_aux WHERE rev_aux.rev_page=rev.rev_page ) ORDER BY rev_timestamp DESC LIMIT 20 Error message is: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(rev_aux.rev_timestamp) FROM `wrg_revision` AS rev_au (localhost)

What am I doing wrong? Thank you!

- Tdoyle 16:35, 23 October 2007 (CEST)

Answer

The query looks o.k. and it works here in this wiki (using ordermethod=lastedit and replacing WRG-Members by 'Fictitious country'):

Extension:DynamicPageList (DPL), version 3.2.1: Warning: No parameter option supplied for ' '. (Missing '=')

Nigunda Test - Somango - Nigunda - DPL Example 007 main page 1 -

Adding 'debug=3' shows the DPL statement. It looks exactly like yours apart from the table prefix you are obviously using. You could try that SQL statement directly in your mysql interpreter or in mysqladmin. You can then strip down the statement until you see why MySQL complains. I suspect that you use an older version of MySQL which has trouble with the syntax used by DPL ...

Also the SQL error messages cuts off the SQL statement text arbitrarily at ".. au". I do not know whether this is intentionally to avoid long error messages or whether there is some buffer size problem ...

Gero 18:42, 23 October 2007 (CEST)

More Info

It could be the MySQL version - the SQL does not work in the Query Browser either. I am using v. 4.0.18 and this site has 4.1.22-max-log.

Removing the SQL statement "AND rev.rev_timestamp=( SELECT MAX(rev_aux.rev_timestamp) FROM `wrg_revision` AS rev_aux WHERE rev_aux.rev_page=rev.rev_page )" causes the Query Browser to return results.

- Tdoyle 19:24, 23 October 2007 (CEST)

Closed

If you get still an error after upgrading your MySQL installation you might reopen this Issue. Gero 19:26, 23 October 2007 (CEST)

Small bug fix

Hi Gero, a warning shows up on some strict PHP installs in line 2128 of DynamicPageList2.php, where it's trying to determine if it has already added the ParserAfterTidy hook using ...in_array( array(__CLASS__, 'endReset' ),$wgHooks['ParserAfterTidy']).... The problem is that if any of the items in $wgHooks are an array of object,"method" rather than "class"/"method" then it attempts to cast the object to an integer. To prevent this unwanted type-cast true can be added to the in_array to make it return false if the types don't match, eg ...in_array( array(__CLASS__, 'endReset' ),$wgHooks['ParserAfterTidy'],true).... --Nad 09:12, 10 April 2008 (CEST)

Thank You, Nad, I will put this into the next release.
BTW: Is DPL the only extension that would/will suffer from the announced changes in the new 1.12 MW parser? (See my remark on the homepage of this wiki ...)
Gero 16:03, 10 April 2008 (CEST)
I'm not up to speed with the parser development, what are these changes they want to make? I do have a number of extensions that need attention to work properly with 1.12, treeview had to be done completely differently. --Nad 11:02, 11 April 2008 (CEST)

DynamicPageList

I've added DynamicPageList on mediawiki svn repository, today.--Grondin 18:10, 12 April 2008 (CEST)

That´s very kind. How will future updates be handled? Where is it and how can I get access? Gero 09:10, 13 April 2008 (CEST)

Something interesting let you know

Please see here and here.--Roc michael 05:14, 16 April 2008 (CEST)

Hi Gero

why don't you vote for the bug https://bugzilla.wikimedia.org/show_bug.cgi?id=13677, best regards --Peu 21:36, 16 April 2008 (CEST) DPL is does great work on "my" wikis

Thanks, yes, I did that just now.Gero 13:01, 17 April 2008 (CEST)

Is that right on vote?

Hi Peu.
My name is Michael Chang. I am as love to use DPL as you, and I am not sure whether my vote is right(It's mean good for DPL)? Did I choose the best option? --Roc michael 00:14, 17 April 2008 (CEST)

I don't know exactly. I vote for all I find important. --Peu 00:20, 17 April 2008 (CEST)

Pagepeel

Did you receive my mail? --Peu 15:15, 17 April 2008 (CEST)

Yes, thanks. But currently I am extremnely busy with other things (like earning money ;-)) Gero 19:40, 17 April 2008 (CEST)

Status Bus

für heute mach ich Schluss, ich denk morgen zieh ich ohne weiteres die beiden Linien durch. Bitte suche du noch ein paar Sehenswürdigkeiten raus. Grüße und gut Nacht --Peu 00:25, 24 April 2008 (CEST)

Danke! Bin schwer am schuften (anderweitig). Die Sehenswürdigkeiten müssen bis nächste Woche warten, fürchte ich ... Gero 00:31, 24 April 2008 (CEST)

Ok, wenigstens deinen Hilferuf "vote for DPL" könntest du irgendwo unterbringen. --Peu 00:37, 24 April 2008 (CEST)

eaccelerator?

The semeb.com wiki seems extremely slow. Have you thought about installing eAccelerator or other PHP object cache? It should give the site a 3-6x speed increase. --Maiden taiwan 23:25, 9 August 2008 (CEST)

Sorting by last name

Thanks for your help. It seems to work pretty well, but some names are not inverted. If you have the time, would you mind taking a look at example 5 and example 6 to see if you can figure out what's wrong? The list is generated using Mal:Personliste – we try to use templates to generate dpl lists, since that makes it a lot easier for inexperienced users. It could be the Norwegian letters æ, ø and å that are creating confusion. No pressure, we've already come a long way and I'll continue fiddling around with it. Cnyborg 20:39, 16 August 2008 (CEST)

The reason for the remaining problem are indeed special characters.
You must include all characters which can be part of the last name into the second expression. And you can simplify the first part. So
 |replaceintitle=/([A-Za-z ]*)( [A-Za-z]+)$/,\2, \1
becomes
 |replaceintitle=/(.*)( [-A-Za-zÆæØøÅå]+)$/,\2, \1
This expression now allows for hyphens and Norwegian characters. If you really want to use brackets with years as part of the last name (like Ole Olsen Evenstad (1766—1833)) you must use the following expression:
 |replaceintitle=/(.*)( [-A-Za-zÆæØøÅå]+ ?\(?[0-9]*-?[0-9]*\)?)$/,\2, \1
Note the additional backslashes.
I like DPL being used in serious wikis like yours. Have fun! Gero 09:07, 17 August 2008 (CEST)
Thanks, I was hoping that the Norwegian characters was the problem. DPL is really a great tool for us. When working with local history, there are a lot of links that are difficult to follow with categories, and this allows us to use more general categories and combine them in different ways. It's also great to be able to create dynamic image galleries and maintenance lists. Thanks for including a solution for the brackets; in this case there are three generations of Ole Olsen Evenstad, and we'll get a lot of those name conflicts. Cnyborg 14:48, 17 August 2008 (CEST)

charity project needing help

Excellent amazing extensions here Thanks Gero - already enjoying DPL, just wondering if Wgraph can pull values from sections of various pages witin same related namespace or category?

It would prove very practically useful :D I'll watch here and am available via: http://everyoneshome.org.uk/index.php/User:JohnMonday

Thanks for anything you can recommend

Can you give an example of what you precisely expect DPL and/or Wgraph to do? You can use DPL to create Wgraph statements. So in principle everything that is possible with DPL can also be visualized with Wgraph. Gero 06:15, 21 September 2008 (UTC)

Thanks for responding! didn't expect such promptness. Basically am trying to make self-updating graph of size of emergency accommodation within London. (then when works expand to rest of UK) No Mean feat of course - :) - pages in the Directory:London: namespace with their 'total spaces' as in here for example : http://everyoneshome.org.uk/index.php/Directory:London:Lewisham:ECHG:Lewisham_Supported_Housing would add 29 (for example) to total. The whole point of this is to show emergency accommodation increasing or decreasing over time in graph formats in relation to those persons found homeless/rough sleeping during street counts. With comparison between the two a useful community produced truer representation of the stuation of UK housing can be produced which allows us to know where we stand in the community effort to end the need for homelessness .

I just had a look at the page you mentioned. There seems to be a structure which can be applied to all places. I recommend to create a template which reflects that structure. Such a template could have fields like "available number of places", "location", "price", "conditions for acceptance" etc. Writing a document would then be equivalent to filling in the values for that template. And the template could care for some nice formatting. Only based on such a structure DPL and Wgraph could be helpful -- otherwise not. Gero 12:13, 23 September 2008 (UTC)

-- That's fantastic information for future investigation :) Thanks a lot!

Yo Gero!!!

I've been away for a while, its great to see that the projects being developed here are getting more and more exciting! It looks ACE!

Basically - Is there a mailing list for the 'community' of developers and users on this site? How can I stay in touch? Please can you create a MailMan Mailing list?

Cheers --Dmb 08:42, 2 October 2008 (UTC)

complex table

Hello thanks for creating this wonderful extension it has made a great addition to my wiki. However I seem to have run into a problem, I would like to create a table that looks like this for my wiki:

Page name info box item 1 info box item 2 info box item 3 info box item 4 info box item 5
transclude section 2

however I keep getting this

Page name info box item 1 info box item 2 info box item 3 info box item 4 info box item 5
transclude section 2

Any help on this would be greatly appreciated, if it helps here is the link for the page I'm working on. thanks Redekopmark 17:00, 16 October 2008 (UTC)

InputBox - Special:Version with old link

Special:Version links to http://meta.wikimedia.org/wiki/Help:Inputbox, but the page is now at http://www.mediawiki.org/wiki/Extension:InputBox (it is _B_ox, their link goes to _b_ox). SVN is at http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/InputBox/. Tobias Conradi 13:29, 6 November 2008 (UTC)

Update of StackFunctions

Thank you for hosting the StackFunctions extension. Please be informed that this extension has developed further, I'd recommand to upgrade to the latest version. RV1971 11:18, 16 January 2009 (UTC)

Raw HTML & DPL

Hey you might be interested in this - the new post 1.12 parser has the #tag parser-function in-built which is used for allowing tag syntax to include brace expressions. In wiki's that allow raw HTML (usually ones which don't allow public editing such as intranet or ones used behind web-sites) you can incorporate DPL queries into the HTML, see this example. --Nad 01:50, 28 January 2009 (UTC)

Thanks! That is a nice feature.
BTW: I added some experimental functionality to DPL which allows you to change the wiki source of selected articles by applying regular expressions to the raw wiki text (using brackets and back references like \1). Thus you can make systematic changes to selected articles, e.g. if you wanted to add a new chapter headline or an additional template parameter to those articles. Do you think this could be interesting for others?
Gero 08:35, 28 January 2009 (UTC)
You mean that DPL can now be used for editing not just reporting? Sounds interesting for sure, do you have any examples or docs about that yet? --nad 08:47, 28 January 2009 (UTC)

Your reply to my question on the FAQ page

Hi Gero, thank you very much for your prompt reply to my posting about creating a dpl with the article title not at the beginning. Unfortunately, I am not quite sure how to create a phantom template that produces tables.

This is what I created for the dpl so far:

{{#dpl:
  |category = Digital Library
  |uses = Template:Catalog of Works by Date
  |include={Catalog of Works by Date}:author:place:publisher:date
  |listseparators = 
    {¦
      \n!
      \n! Dissertation Name
      \n! Author
      \n! Place of Publication
      \n! Publisher
      \n! Year of Publication
    \n¦-,
      \n¦ align="left" ¦ %NR%
      \n¦ align="left"  ¦ [[%PAGE%]]
      \n¦ align="left" ¦,
      \n¦ align="left" ¦
      \n¦ align="left" ¦
      \n¦ align="left" ¦
    \n¦-\n,
    ¦}
}}

And here is the template I have in each article, which provides the title of the work:

{{Catalog of Works by Date
| date = 2006
| author = [[Davidson, R.]] and [[Wedemeyer, C.]]
| publisher = [[Brill]]
| place = Leiden, The Netherlands:
}}

I'm just learning how to use DPL and I'm not sure how to modify this template to make tables. Thanks so much for any advice you can give.
Cheers,
Marcusperman 20:04, 7 March 2009 (UTC)

Look at DPL Example 004! Gero 23:16, 7 March 2009 (UTC)
Thanks so much. Looks great now. Marcusperman 01:44, 8 March 2009 (UTC)

Simple instructions

> ... indeed there should be an easy way to understand how the most common tasks can be solved with only a few lines of DPL. Help is greatly appreciated. Gero 14:23, 24 March 2009 (UTC)

Because of some difficulty wrapping my brain around some of the more complex aspects of DPL, I've only solved my one main issue: displaying notes from pages.

I wrote up some documentation, and I've included it here: User:Anonguy9. Do with it as you wish. If it gets moved somewhere, write me a note to let me know so I know where I can post updates.

I'll drop by and update things later. There are some more complex things which I'll be revisiting in the future: (sorted lists, some simple tagging and organizing concepts)

I'd love to do more stuff like this, but since I only use dpl for this one type of thing I haven't been motivated to explore very far.

anonguy9 04:08, 25 March 2009 (UTC)

ArrayExtension and TemplateFormEditor Extension

Hi Gero,

There are two extension -mw:Extension:ArrayExtension and TemplateFormEditor, Maybe they can be used with DPL. --Roc michael 11:58, 8 May 2009 (UTC)

Thanks for the hint. It is very easy to use ArrayExtension together with DPL; I installed it here and created an example how to use it. Maybe you know the authors and can tell them - they may want to add a link to their page on mediawiki.org...
Gero 12:18, 10 May 2009 (UTC)

using accordion in mediawiki

I have a working accordion panel on my wiki but I would love to have multiple levels inside the initial "accordion". For instance, below is a piece of the syntax for a list of journal articles by year and I would like to be able to have the accordion function include volume and issue number inside each year, producing layers of accordion panels, as it were. Is this possible? Any ideas?

  <div id="AccYear" class="Accordion" tabindex="0">
      <div class="AccordionPanel">
        <div class="AccordionPanelTab">Year 2008</div>
        <div class="AccordionPanelContent">Content One</div>
      </div>
      <div class="AccordionPanel">
        <div class="AccordionPanelTab">Year 2007</div>
        <div class="AccordionPanelContent">Content 2</div>
      </div>
      <div class="AccordionPanel">
        <div class="AccordionPanelTab">Year 2006</div>
        <div class="AccordionPanelContent">Content 2</div>
      </div>
      <div class="AccordionPanel">
        <div class="AccordionPanelTab">Year 2005</div>
        <div class="AccordionPanelContent">Content 2</div>
      </div>

...

...
 
<accordion>AccYear</accordion>

Thanks for your help! Marcusperman 01:13, 21 April 2009 (UTC)

Marcus, I don´t understand what this has to do with DPL. Are you aware that the focus of this website is to support people who use one of my MediaWiki extensions? Gero 06:24, 21 April 2009 (UTC)
Yes, sorry, I wasn't very clear. I was hoping that your Wgraph extension might have some way of creating a kind of accordion or similar feature that would allow me to have layers of tabs. For instance, I know how to use your menu tree to call a list of articles starting from a given article, which is one way I could create a useful browsable list of journal articles by year, then by volume. Perhaps you have some accordion-like or other menu tree-like function that I am unaware of?

Marcusperman 16:11, 21 April 2009 (UTC)

Configure Extension

Hi Gero,
The Configure Extension may be useful for DPL.--Roc michael 12:05, 3 June 2009 (UTC)


Cache system

Hey Gero, I totally agree that we should promote DPL to be used on Wikipedia. I was wondering : did you work on that cache system that we had conceived about a year ago ? I have more time now and I improved the system over the year. It is now super-performant and it clear the cache only when needed, and it cleans it well. Are you still interested in implementing this in DPL ? If you tell me you're interested, I might work during the next weeks on it, and I think this system is necessary if you want to promote DPL on Wikipedia. I'm waiting for your answer and it shouldn't be too long for me to adapt what I did at EmuWiki.com to be used in a more general manner. EmuWikiAdmin- 14:52, 19 June 2009 (UTC)


Hey Emu,

look at DPL Example 022. I have implemented a very simple file cache which stores the wiki text result of a DPL query in a hashed directory tree. It works, but it can definitively be improved (e.g. using a database table). I store the query text and the result - so the cache can be reused even if the page containing the DPL statement is edited (as long as the DPL statement itself is not changed). Please read the man page on dplcache and have a look at the source code in DPLMain.php! (Look for the search string "cache").

I would be very happy if you could improve the cache system - it is quite obvious that DPL can only be used on large wikis if it has a very good cache!

Could you deliver an API which could be used from DPL? If your system uses a special database tanle, it should create that table and offer a set of functions like insert, purge, purge_all etc. The important point is that the author of a DPL query can decide on the expiration time of the cached content - this is not a global constant but an individual setting for each cache item...

Curious to hear from you ... Gero 18:37, 19 June 2009 (UTC)


Before building on that perspective, I'd like to have your advice : don't you think the MediaWiki / Wikipedia people will find it odd to have a 5th cache system while the basic page cache system can be used ? There's already a file cache system, an objectcache, a squid proxy and a memcached system implemented in MediaWiki. By creating a 5th, it would not allow the wiki administrators to use their old settings. For example some administrators prefer to use the file cache system to cache their page output as HTML. Some administrators use only the memcached system, some prefer squid, etc... if we want DPL to be viewed as correctly integrated in MediaWiki, we'd better reuse the MediaWiki cache system. And it's actually easier to implement this way, much less code, and probably less CPU intensive. This way DPL invocations come in every page just like any other content; but then the PAGE cache (instead of the DPL invocation cache) is outdated based on certain criterias (like when 1 page in Category 'Whatever' & Category 'Whatever2' is touched). I'd like to know what you think about this before continuing. But I agree that it should be done in the format of an API. But the API would not offer a place to store output. It would only outdate page caches based on different criterias. EmuWikiAdmin- 23:18, 19 June 2009 (UTC)


As you may have read in the manual there is now the configuration option that DPL "respects the MW ParserCache" by default. This means that a page is only freshly produced if the expiration time is over or if 'somebody' has found out that a dependency rule is violated (and has invalidated the cache based on that knowledge). I only cared for the first part so far, i.e. storing a query and its result (in wiki text form). The dplcache is intended to keep results of a DPL query for a defined time even if you know that it is no longer up to date in a strict sense. Some DPL queries (like producing a summary list with content from many pages) may be so expensive that you don`t want them to be reproduced every time it would theoretically be necessary. In these cases if one of the existing cache mechanisms requires a page to be refreshed DPL would not really go to the database (or parse the wiki text of other pages etc.) but instead it would insert its former result into the wiki text of the current page. If one of the existing cache systems for storing and retrieving that piece of wiki text could be reused this would be perfect.

As far as I understand you, you are talking about the proper definition of dependency rules. This has become even more important as the more recent versions of MW do no longer seem to build dependencies automatically for links that are created by an extension.

The problem with those dependencies is that potentially every new page might change the result of many existing queries (depending on its content, depending on the categories it is assigned to, depending on the templates it uses, depending on substrings contained in external links it has, even depending on arbitrary literals within the wili text, and .. and .. and. I think that defining the 'criteria' when the page cache of a page containing a DPL query shall be outdated is very, very hard - if not impossible. But of course for standard cases it could work - like adding a page to a category or removing it from a category.

The kind of API that would be useful for that purpose would take "dependency rules" for the query page and the existing cache system would be told to invalidate the query page if one of the rules is violated by an edit action. This probably requires to register on certain hooks which are already there and check the dependencies. If you could define an API for that purpose, DPL could call it based on the logic of a query. This means:

  • if the user query contained in page Q wants to show a list of pages contained in categories A __and__ B then DPL would use the API to state a list of dependencies like
    • invalidatePageCache(Q,'add to category', A)
    • invalidatePageCache(Q,'add to category', B)
    • invalidatePageCache(Q,'remove from category', A)
    • invalidatePageCache(Q,'remove from category', B)
  • if the user query contained in page Q wants to show a list of pages which link to a ceratin page L then DPL would use the API to state a list of dependencies like
    • invalidatePageCache(Q,'add link to target', L)
    • invalidatePageCache(Q,'remove link to target', L)

Maybe 'add' and 'remove' could be combined in a single call as they would very often be used together:

    • invalidatePageCache(Q,'link to target', L)

Such an approach would be much better than stating a dependency between Q and the pages actually contained in the query result. If for example, page P belonged to cat A & B it would be part of the result set of Q. This result set would not change if normal modifications were made to P. Only if P were to be removed from A or from B the result of Q would be affected. So there should be a way to define a dependency rule which covers exactly this situation.

One could even go so far to define a rule like please invalidate the cache of Q if a page currently belonging to A is added to cat B.

The approach described above would be an addition to DPL - it would not substitute the dplcache. The dplcache would of course also have to offer an API to invalidate its content. Your 'dependency supervisor' would then inform both caches if a dependency rule gets violated. This is necessary because there are cases where the normal cache becomes invalid (e.g. by editing page Q without changing the DPL query) but the dplcache still can be considered to be valid. So there would have to be another parameter to each API call:

 invalidatePageCache(Q,'link to target', L, triggerFunctionList[])

The list of trigger functions would contain pointers to functions which invalidate the various caches. By default these functions would expect the name of a page_id as an argument, I guess.

So much for today ...

Gero 05:34, 20 June 2009 (UTC)


So you think that edited pages containing DPL queries but not changing it (changing other parts of the text) represent a potential problem in terms of ressources ? Problem for me with this approach is that it seems for you the cache should be stored in a SQL table ? I think it's more efficient to use memcached since in big wikis the database server is not the same computer as the page server, so if the DPL queries are stored in SQL, it's more database traffic instead of memcached traffic, which should be less of a bottleneck. Am I right ? EmuWikiAdmin- 20:19, 20 June 2009 (UTC)


Using an in-memory cache would be better than the database in terms of speed. But if you shut down the server the complete content of all caches is lost at the same time. So, after coming up again, there would be additional load because all caches will be missing. I would prefer a 'database-backed' in-memory cache.

I see two areas of works which are independant of each other:

  1. move the DplCache to the database
    • hope that the memory cache of the database system will avoid too much traffic anyway
    • or add a memory cache to the database solution
  2. create a dependency control engine which takes dependency information via an API and invalidates the existing caches and the DplCache based on the violation of defined dependecies.

It is hard to say which is more important, but:

  1. right now there is a working (albeit somewhat primitive) solution for the first point
  2. at the moment there is NOTHING for the second point.

So my hope is that you could create the dependency monitoring system as a separate module. If you agree we could define the interface together and then I could provide you with a DPL version that calls the defined functions.

The DependencyMonitor class would allow DPL to win back (or keep) its true dynamic behaviour also in huge wiki installations although it uses as much of existing caches (and the additional DplCache) as possible.

Gero 21:12, 20 June 2009 (UTC)


I totally agree. So here's the general structure so we can both work on our side :

The 'extension' is called CacheAPI.

It will store all its internal data in a table called cacheapi.

There will be 2 basic functions :

addCacheAPIDependencies(PageNumber, Type, Condition, Time) remCacheAPIDependencies(PageNumber)

Page Number would be the page number in which the DPL invocation is written. Type would be any of these integers :

1 - for category condition 2 - for template condition 3 - for linksto condition 4 - no particular condition (time only)

Condition would be a string containing a list of & separated category names such as (A&B&C). Whenever an article is added, deleted, moved, or edited and that article is in category A, B and C, CacheAPI will purge the cache of PageNumber. Same principle for Template and linksto. Note that the function will only take the conditional ANDS and not the ORS, you'll have to design DPL such that when there's a OR condition involving, let's say, 5 categories (A|B|C|D|E), then simply rerun addCacheAPIDependencies for these 5 categories. Time can also be added, if non-zero integer it will be the number of seconds after which we should outdate the cache. If Type == 4, Condition is ignored, only the Time condition is added.

remCacheAPIDependencies would basically remove all dependencies and all time conditions, to let DPL choose new conditions using addCacheAPIDependencies. This means that whenever the dependencies are updated for a DPL invocation in a page, it also needs to be re-added for each invocation of the page.

Did I forget something ? EmuWikiAdmin- 21:50, 20 June 2009 (UTC)


The interface should be object oriented - static class methods might be ok. The callBack function for the dplCache must be registered (maybe in a separate class method).

Could you provide a dummy implementation of the interface?

Gero 18:12, 22 June 2009 (UTC)


No problem, I'll provide you with this probably next sunday. What do you refer to when you say the callback function needs to be registered ? Are you referring to hook registration with MediaWiki ? EmuWikiAdmin- 23:39, 22 June 2009 (UTC)


Okay just realized making the dummy was not long so I won't make you wait until sunday, here it is :

http://www.emuwiki.com/testinstall/extensions/CacheAPI.txt

Just rename to .php and include in LocalSettings. Tell me if there's anything weird or against what you expected, this is one of my first php attempts in the object-oriented style.EmuWikiAdmin- 04:30, 23 June 2009 (UTC)


There is some progress. I'll leave your talk page and come here to be kept up-to-date with the progress. EmuWikiAdmin- 00:56, 28 June 2009 (UTC)


Give me a link to the version you'll create when you do you first integration tests I'd like to see how it goes! also do not hesitate to add any missing feature at the cache API page. EmuWikiAdmin- 22:45, 28 June 2009 (UTC)


I'd like you to try something, see Cache API. EmuWikiAdmin- 00:07, 1 July 2009 (UTC)


I changed the structure of the API. It can now accepts about 30 types of dependencies. See Cache API. If you want to start to make the necessary changes to DPL you can, during this time I will continue implementing the different types of dependencies. But I'm pretty sure the basic structure will not change drastically, so you can start working on DPL based on the new documentation at the Cache API page if you have free time!. EmuWikiAdmin- 15:47, 4 July 2009 (UTC)

urlget

Could you install the small Extension:UrlGetParameters? It enables catching URL parameters in plain text. E.g. {{#urlget:whatever}} or {{#urlget:offset}}. Combining this with the standard parser funs one can do funky things with links and forms :) --Subfader 01:20, 6 July 2009 (UTC)

Thanks for the quick add. Atm I write me some ultimate retrieving form for my wiki using dpl, securehtml, urlget and some parser funcs. --Subfader 06:56, 6 July 2009 (UTC)

Hook into Special:Whatlinkshere

I responded to you on Issue:Hook_into_Special:Whatlinkshere. Maiden taiwan 21:32, 7 July 2009 (UTC)

tr valign="top" as default

Please set this in MediaWiki:Common.css:
tr { vertical-align:top; } Defaults a vertical alignment on all table cells if it contains multiple-rows. --Subfader 23:34, 23 July 2009 (UTC)

Done. Example:
a b

c

Gero 04:59, 24 July 2009 (UTC)
Ok I guess I know why this is no default. You can't override it using |-valign="bottom" (or middle). Feel free to remove it again (sorry). I have set it on my wiki nontheless since I don't other other valign than top and only use the option to force it to top which gets annoying. --Subfader 22:14, 24 July 2009 (UTC)

Template:ShortLink

I saw you discovered {{ShortLink}} :) It's indeed finished and works fine. It started with playing around here. The second example looks nice but I dunno if it ever could be useful :D Nontheless ShortLink could be extended to split the URL like that.
I tried ShortLink on my wiki and the last two examples break. Dunno, can't be arsed to check since I only need use a less featured version on my wiki. --Subfader 19:26, 24 July 2009 (UTC)

DPL 1.8.7 on MW 1.16alpha

Have you tried DPL 1.8.7 on later MW versions than 1.13 as on thsi website? You should already just fopr the fact that the Image ns was renamed to File in 1.14. Anyway. DPL 1.8.7 gives me this error on MW 1.16alpha whatever I try: Fatal error: Unsupported operand types in ...\includes\parser\LinkHolderArray.php on line 33, which is the last of this function:

function merge( $other ) {
		foreach ( $other->internals as $ns => $entries ) {
			$this->size += count( $entries );
			if ( !isset( $this->internals[$ns] ) ) {
				$this->internals[$ns] = $entries;
			} else {
				$this->internals[$ns] += $entries;
			}
		}
		$this->interwikis += $other->interwikis;
	}

--Subfader 19:19, 2 August 2009 (UTC)