[pmwiki-users] JITS ver.20070209 released

Hladůvka Jiří mail at revida.sk
Sat Feb 10 06:29:45 CST 2007


christian.ridderstrom at gmail.com napsal(a):
> I'm looking for some kind of recipe for the wiki to help me build up a 
> few "registers". Basically I'd like to have the following kinds of 
> registers:
>
> * Issue tracking system
> * Register or drawings
> * Register of cables
>
> Do you think JITS would be suitable for implementing the latter two? 
> (I'm assuming it'll be good at issue tracking...)
>
> Would it be ok if I tried to set up some example registers at your 
> test site, and asked you for help when/if I run into problems?  These 
> examples could then serve as documentation/inspiration for other people.
>

As for testing in my site there is a response to Christians private email.

As for drawings and cables register :
If the page datafields, labels, filtering  and sorting  rules are sufficient
then  you can try the JITS snipets.

Though I know nothing about intended contents of the mentioned registers
I thing there should be necessary some analyze first separately for cables
and separately for drawings as the two subject are very different.
For sure there are different needs for artistic and technical drawings.

Anyway there are some common aspects for all kind of registers

Following describes my idea in case you do not use some database
engine - that means you create one wikipage per the register item.
(I have no experience with databases cooperating with PmWiki but I think
the basics could be similar).

This is my proposal how to approach the job

1) Page identification:
Lets take an analogy with database. One database record is then
one page describing one a drawing or one kind of a cable (or one task 
assigned to the employee)
The records can be grouped (into database-like group) and to distinguish 
the groups you can use wikigroups
or some record field (page text variable) - in my JITS I use PInd 
variable to know the page belongs to JITS type of "database"
and JName to know the page belongs to MyToDo or Tests or Projekty etc.
Thus you can have your databases all in one wikigroup.

2) Record (page) fields:
make list of  fields and consider with each:
- how the field value is fill in (text entered, selected from dropdown, 
checkbox , generated by some function/snippet)
- how the field is presented (displayed as text or in some form control 
or not at all)
- can the field value be modified by (any) user or only by the database 
admin
- is the field a subject of the lists filter, order,  lists contents
- other aspects you think are necessary

3) Manipulation Tools
- form with subbmit button to create a new record
- form for new record creation
- form to present the record (can be combined with the following)
- form to modify the record
- form for pagelist filter and  ordering
- filtered pagelists

The manipulation tools snippets can be placed in some service page (e.g. 
CabelsTools or DrawingsTools)
as  "not processed" ( using [@ ... @] ) and each tool is delimited by 
anchors like #newrecord and  #newrecordend.
The service page then conditionally includes from itself the proper part 
from "not processed" division depending
on some parameter the displayed page is called e.g. ?par=newrec  or 
?par=display  etc
example:
[[#start]]
if equal {$par} ""
 include CabelsTools #newbuttonform#newbuttonformend
 include CabelsTools #filtersform#filtersformend
 include CabelsTools #pagelist#pagelistend
if equal {$par} "newrec"
 include CabelsTools #newrecord#newrecordend
if ...
[[#end]]

[@
[[#newbuttonform]]
...
[[#newbuttonformend]]
...
@]

The manipulation tools snippets usually return the control to the 
displayed page {*$PageUrl}
with a proper parameter on submit. eg the "form with subbmit button to 
create a new record"
should look like this:
[[#newbuttonform]]
(:form name=newbuttonform action={*$PageUrl}?par=newrec:)
(:input submit "Create new":)
[[#newbuttonformend]]

Sure if the service page grows too much it is better to split the 
snippets page to
other pages.

Such a service page can be conditionally included to <Group>.GroupFooter
e.g.
(:if equal {*$:PageIdentification} Cabels:) (:include CabelsTools 
#start#end :)
(:if equal {*$:PageIdentification} Drawings:) (:include DrawingsTools 
#start#end:)
...


Best regards,
Jiri





More information about the pmwiki-users mailing list