OurCultureQuestionnaire is a questionnaire based interface being developed for the OurCultureWiki, which is based on ProWiki. Thank you for your thoughts! --AndriusKulikauskas
Currently, my focus will be on [the OurCultureQuestionnaire interface]. I'm thinking that ProWiki pages are stored in a format for which I could build a simple interface that would structure and present the page as a collection of textboxes (marked by page sections) and metadata boxes (marked by variables). So I could create an interface that could operate on ProWiki pages, a sort of AmateurWiki?. Do you think that would be very complicated or not? If I could build something in 20 to 40 hours for editing pages="questionnaires" that would be excellent for many of our needs, I think. --AndriusKluikauskas?
Andrius, we have a number of components and plans in that direction to support this in ProWiki. Basically CdmlForm? can be extended to get/put its data from/to the page, like you describe. An options like <n>EditForm?=Admin/FormForHomePage?</n> could control that. I also think that we need a simpler, special syntax to routinely define these forms. From other wiki applications (reported at WikiSym2005) we know that a similar form may be needed to display the data. Could this a FeatureRequests?/FormEditing? that we specify and implement together in reasonable time, fill your needs? -- HelmutLeitner September 9, 2006 8:22 CET
Helmut, That would be excellent if this might be a feature request, but especially as you have already worked in that direction. At the heart of my request is to be able to have a form-driven interface for use on any wiki page including both new and existing pages. Each variable would have its own textbook and so would each section. And it would be good if this might work as a questionnaire, with questions and answers. I suppose for each metadata variable we could associate a question. And I suppose that a section's "question" would equal the title of the section. I imagine this to be a substantial bit of work and am glad that you have done quite a bit and might continue. I would also like to learn enough about your file structure to see if I could operate on it directly. I see the .db file structure and in principle it is straightforward enough to read and to present as an HTML form, and likewise to write back to the file. I suppose it's a little more tricky to preserve as you are the file changes, but perhaps that too is straightforward enough. Although you have already developed most of the tools for this. As a side note, yesterday I spoke with a potential client/sponsor for work on a website for a community much like ours and I would focus on this type of functionality in three formats: A) profile forms in their content management system, B) editable single ProWiki pages as above, C) email driven questionnaires as in Thomas Kalka's social ping system. I said I would do at least one but hopefully all three, it would be a loose arrangement, my work for them. My feeling is that these three are esentially the same and, for example, ProWiki could be used as the engine for storing and maintaining the information, or at least, as one of the formats. I asked for 500 USD per month for 5 months which would include other duties. So I didn't factor any budget for you but I would either do this myself and contribute that to ProWiki or, if you can help with some of this, do something else that would be useful for you. Also for this work I'm interested to write a general proposal and approach businesses like Yahoo if they might contribute and then I would want to include you in the budget. Anyways, I'm alerting you so that you might think and keep me straight, too, regarding your best interests. Thank you for all your help!
Andrius, don't worry about money issues. I don't expect to get paid for this, because something like this has been in my development backlog for many months. If you have enough time let's talk what ProWiki can contribute, I can implement that, probably within a few weeks. Then you can still consider filling needs still open by external programming. BTW does Thomas have his "social ping" already in place? -- HelmutLeitner September 11, 2006 9:58 CET
Helmut, Thank you. I think Thomas hasn't started yet, I need to get back in touch. Also, I'm thinking that for my purposes it's relevant to have an API for the "simple editable page" much like you have done for the metadata. What I mean is to be able to "read" a .db file perhaps as an object with sections (titles and values) and variables (values) and also to be able to "write" to this object. Then it would be possible to call this object from an HTML page which is not associated to the wiki. This means that we could have simplified wikis, even single page "wiki atoms", using the ProWiki object format, and that encourages interoperability with other wikis, too. We could assume for the beginning that the text does not have any wiki syntax (aside from sections and variables) or simply shows the syntax if it does (as in edit mode).
Andrius, if I understand it correctly than it is intrinsic for you to have a separate API to access and use wiki as a kind of "database". This sounds like you want to become more flexible to realize your ideas, e. g. by using PHP or C or another language of your choice. This is possible and I can provide information about data formats and internal protocols or procedures. But in programming this you are on your own. There are many issues involved (page revisions, logging) that, if done cleanly, are "lot of work". I wouldn't want to add a lot of work of mine to support you solving problems on this way. In addition, I can not guarantee stability of all involved implementation detail. So a future release might break some of your code and enforce additional work you are not prepared to do at that point of time. It's no advantage for the ProWiki project to have you accessing ProWiki file structures from the outside and I have to assume that your programming will not be fully open, as smaller projects, done on the fly, rarely are. So this programming will improve your specific enviroment, but the work will not be fully reusable and available to others, although this isn't the way you usually go about "open source". Maybe I misunderstand you, but all this starts to sound rather complex and not the "step-by-step" way we usually go in developing socio-technical wiki systems. -- HelmutLeitner September 12, 2006 9:41 CET
Helmut, yes, when you find time, please make available information about the file structure. Then I can program what I want. I will start with the ability to change the wiki page text and the metadata. It seems this is stored at the top of the .db file. I won't worry about page revisions, logging, etc. until that matters. AndriusKulikauskas September 12, 2006 10:50 CET
Andrius, the page content is the .dw file. The .db file contains a key/val hash of metadata joined with the 2-char-separator "\xb3" and "3", no order of keys. -- HelmutLeitner September 12, 2006 11:08 CET
Helmut, Thank you. What are the consequences if I simply edit the .dw file programatically? Is it possible to update the .db and .txt_r files somehow afterwards? It would be very useful for me if I could simply edit the .dw file programatically and the PmWiki engine could take care of the rest. Whereas I could worry myself how to deal with the .dw text. Andrius
Andrius, the text of the page will show correctly, diffs, authors, change date and other information will be out of sync. Parts of this information are just lost, other parts might be reconstructed. Anyway this is where the un-fun work starts and you are on you own. -- HelmutLeitner September 12, 2006 15:38 CET
Helmut, it's good to know that the text will work fine. That means that for new pages there should be no problems. So that is enough for me for now. However, I'm wondering whether it's possible to have a Perl function to which I could feed the content of the old page and new page and then the ProWiki page engine would take over. How does ProWiki update pages currently? I suppose it also reads in the author name and the time. AndriusKulikauskas September 12, 2006 16:24 CET
Example code to find the relevant functions:
[[Code] sub PageSetTextLogSummary? {
my ($id,$newtext,$logflag,$summary)=@_; my ($oldtext,$diff);
RequestLock?();
$oldtext=PageRetTextFast?($id); $diff=TextTextRetDiff?($oldtext,$newtext); my $rev=PageSetTextAuthorMinorDiff?($id,$newtext,1,0,$diff); CacheWrite?($id,$rev,$oldtext,$newtext);
if($logflag) { my $user=RetParam?("username",""); my $edittime=time; RcLogWrite?($id,$summary,0,$edittime,$CookieID?,$user,$rev); }
ReleaseLock?();} ]
--- HelmutLeitner
Helmut, Thank you! This is very helpful and encouraging. So I will start working on an interface for some very simple isolated pages, for example, for people's profiles or for collecting stories. And then as our collection grows I think it will be more clear how and why and where to integrate them into the wiki. As it grows I can try to integrate them better into the wiki using the above functions. Also, if the index is rebuilt, then that helps include any pages I may have created programatically, yes? I'm curious what is the effect of rebuilding the index. I forget, too, how the metadata lists get rebuilt. [--Andrius]
Andrius, metadata are updated as part of <n>CacheWrite?</n>. -- HelmutLeitner
Helmut, I started work on a simple interface for http://www.ourculture.info with simple add, simple edit, simple view. I will start work on simple add. My thought is to create pages through a structured form for the desired type (blog entry, book review, etc.) But I don't want to ask for a title because often it can be very hard to think of a good title and they may be not necessary. So I'm wondering how to name the related files. I'm thinking of having a NewPages? directory and within that name the pages Nr1, Nr2 and so on. So it's possible to link to the page from within the wiki. Also, if and when a page gets renamed there can be a link put in from the old name so that, for example, Nr7 contains a link to CatsWithSpots?. --AndriusKulikauskas
I got this interface working at our new project http://www.myfoodstory.info Note that the questionnaire driven interface store its data as ProWiki pages, for example: http://www.myfoodstory.info/New/New4.dw --AndriusKulikauskas