What do you mean by that - what's an example of a conditional in a form? On Tue, Sep 9, 2008 at 11:07 AM, Chuwiey <[EMAIL PROTECTED]> wrote: > > Barry, > This is great stuff... thank you... > > If I may suggest... I think we are at that point where we need to have > a proper discussion about conditionals in forms.. especially now, when > you've introduced workflow options for a field... The user interface > portion of it would definitely be something important to figure > out... > > -Chuwiey > > > > On Sep 9, 7:35 am, mitchelln <[EMAIL PROTECTED]> wrote: >> This is really cool stuff. Well done! >> >> Cheers >> Neill. >> >> On Sep 6, 7:25 pm, Barry <[EMAIL PROTECTED]> wrote: >> >> > Yaron, >> >> > I think that's a great idea. I've been trying to tackle the problem >> > in a similar manner, except that I've been looking at it from an >> > application focus. >> >> > TemplateCallUpdate is a very low-level tool, with no intelligence >> > around why or whether a field should be changed or inserted. By the >> > way, this one has a number of limitations in the actual replacement >> > technique. It can be flummoxed by something as simple as two >> > templates with the same optional field name. >> >> > {{template1 >> > |f1=5 >> > |f2=5 >> >> > }} >> >> > {{template2 >> > |f3=8 >> >> > }} >> >> > A call to set template1's "f3" field value would probably change >> > template2's field instead. >> >> > Hopefully, switching to Sergey's Page Object Model (POM) will >> > eliminate that problem. >> >> > Now from an application-level, what I've setup is a structure that >> > looks like this: >> >> > Pages in the [[Category:Stakeholder]] represent users of the >> > application. >> >> > Each Stakeholder page contains the following properties: >> > [[Stakeholder User::wiki user 1]] >> > [[Stakeholder User::wiki user 2]] >> > [[Stakeholder User::wiki user 3]] >> >> > (Normally, there is only one Stakeholder per wiki user, but I have to >> > support admin staff...) >> >> > [[Approves Page Type::Goal]] >> > [[Approves Page Type::Objective]] >> >> > [[Approves Department::Operations]] >> > [[Approves Department::Security]] >> >> > The various pages in the system contain properties like these: >> > [[Page Type:: Goal]] or [[Page Type::Objective]] or [[Page >> > Type::Task]], etc. >> > [[Department::Customer Service]] or [[Department::Operations]], etc. >> >> > The [[XXXX::]] properties and their corresponding [[Approves XXXX]] >> > properties share common sets of values. The concept is that an >> > [[Approves XXXX::]] property is a "subscription" to the >> > "published" [[XXXX::]] page property. >> >> > Once a set of pages have been entered, a user can bring up a list of >> > all the Stakeholders he/she supports. >> >> > I use an {{#ask: }} query to pass the list of Page Types and the list >> > of Departments that each Stakeholder supports to a transcluded >> > template. >> >> > The template uses embedded #arraymaps to execute #ask queries for >> > each Page Type/Department combination producing a list of page names, >> > current page status and the transclusion of another template that >> > contains a #switch-based mapping of page statuses to approved >> > actions. The actions are implemented as links to the >> > TemplateCallUpdate page. >> >> > So, in a nutshell, I use Pub/Sub techniques for the identification of >> > responsibilities and a hardcoded switch statement to manage the state >> > transitions of the workflow. There are lots of security holes. The >> > system is not flexible. And, changing the workflow requires a >> > "programming" change. But, it seems to be working well enough to >> > pilot for a few clients. >> >> > If someone comes up with a more flexible approach, I would definitely >> > consider moving to it. I may also consider trying to implement a more >> > configurable version of my approach employing some of the techniques >> > you suggested. >> >> > Ah, with just a little more time and a little more talent, what >> > wonderful things I could accomplish. ;-) >> >> > - Barry >> >> > On Aug 29, 12:31 am, "Yaron Koren" <[EMAIL PROTECTED]> wrote: >> >> > > Wow, this is amazing. It's not often that you get a whole new extension >> > > by >> > > email. :) The concept of being able to update data in pages from a single >> > > interface is a very powerful one, and if/when it's implemented I think >> > > it'll >> > > be a big step forward for the whole SMW system. Yes, it's somewhat >> > > unorthodox for a MediaWiki interface to allow making a set of changes to >> > > other pages, but it's not unprecedented: if nothing else, my own Replace >> > > Text extension (http://www.mediawiki.org/wiki/Extension:Replace_Text) >> > > does >> > > the same thing, and I haven't heard any complaints about that. The bigger >> > > questions, I think, are about the "wrapper" for this functionality, i.e. >> > > the >> > > special page or other interface that would let users choose which pages >> > > to >> > > make changes to: would access to that page be restricted to some kind of >> > > administrative group, or would there be a more complex system of access >> > > control, letting users in different groups make different changes? And >> > > how >> > > would the set of fields and allowed values be defined, especially if >> > > there >> > > was only a specific allowed workflow for certain fields, like that >> > > 'draft' >> > > could be turned into 'published' but not the other way around? >> >> > > I actually had a conversation a while ago with a few people from Creative >> > > Commons, who are also on this list, about such functionality - I hope >> > > it's >> > > okay to mention that. :) The idea was to be able to define an "action", >> > > which would most likely be the changing of one or more template fields >> > > on a >> > > page - such an action could show up as a new tab on a page, or (in the >> > > case >> > > of this code) in some sort of external interface. I don't remember how >> > > much >> > > of this came up during our conversation, and how much I thought up later, >> > > but my thought was that one could have a new namespace, called "Action:", >> > > where a page in the namespace could look like this (to conform to your >> > > example, let's imagine it's called "Action:Approve"): >> >> > > [[Modifies template:Purpose]] >> > > [[Modifies template field:Status]] >> > > [[Requires value:Submitted]] >> > > [[Sets new value:Approved]] >> >> > > ...and it could even have calls like: >> > > [[Allowed for user group:Sysops]] >> > > [[Notify user::TheBoss]] >> >> > > Then, the page "Category:Purposes" would have declarations like: >> >> > > [[Has allowed action::Action:Submit]] >> > > [[Has allowed action::Action:Approve]] >> > > etc. >> >> > > Then, this "wrapper" page would let the user choose from among all the >> > > categories, and, for each one, let the user perform whatever allowed >> > > actions >> > > there were for each page in that category. That might consist of some >> > > tricky, but doable, on-the-fly page parsing, and then of course links to >> > > the >> > > Template Call Update code to perform the actual action. >> >> > > What do you think? This set of code you've created could be the >> > > beginning of >> > > some true workflow functionality, which I think would be a really >> > > worthwhile >> > > addition to the whole system; but there are probably lots of different >> > > ways >> > > to go about it. >> >> > > -Yaron >> >> > > On Thu, Aug 28, 2008 at 8:15 PM, Barry <[EMAIL PROTECTED]> wrote: >> >> > > > Okay, I have to go back to my day job, but I did hang one more bag on >> > > > the side of Semantic Forms, so I guess I'll float it up and see if >> > > > anyone else has a use for it. >> >> > > > (Daniel, you should cover your eyes now...) >> >> > > > I was looking for a way to change a field in an SF generated page with >> > > > a single click. >> >> > > > My SF Form generates pages whose wiki code looks like this: >> >> > > > {{Purpose >> > > > |Purpose Type=Objective >> > > > |Planning Cycle=FY09 >> > > > |Status=Draft >> > > > |Priority=High >> > > > |Business Unit=Operations >> > > > |Start Date=1-Jan-2009 >> > > > |End Date=31-Dec-2009 >> > > > |Added on=2008-08-27T14:58:56 >> > > > |Added by=David Towne >> > > > }} >> > > > Department Objective: Reduce Wait time for Outpatient Registration to >> > > > < 4 minutes >> >> > > > As you'll notice the "Status" of this "Purpose" (third parameter) is >> > > > "Draft". >> >> > > > After my users have created dozens of objectives, I wanted to present >> > > > the ones in "Draft" status in a list so that the user could easily >> > > > change their Status to "Submitted" and ultimately strategic planners >> > > > and business unit heads would see see a list of "Submitted" entries >> > > > and change the Status to "Active", "Rejected", "Deferred", etc. >> >> > > > So I wrote a Special Page called TemplateCallUpdate (see code body >> > > > below) >> >> > > > It expects to be called with a URL that looks like this: >> >> > > > ...index.php? >> >> > > > title=Special:TemplateCallUpdate&page=Page_Name&template=Purpose&field=Status&value=Submitted >> >> > > > If the page "Page_Name" exists and it contains a template call of >> > > > "Purpose" and that call contains a field of "Status", it changes the >> > > > value of Status to "Submitted". If the "Status" field doesn't exist, >> > > > TemplateCallUpdate adds it with a value of "Submitted". >> >> > > > Pretty simple concept, but it does change the Wiki text directly. I'm >> > > > new to Wiki coding, so I don't know if I broke any written or >> > > > unwritten rules or guidelines about what Special Pages should and >> > > > shouldn't do, but c'est la vie. >> >> > > > In fact the reason I have been trying to use embedded parser function >> > > > calls in #arraymap was to dynamically build the list of strategic >> > > > planning elements with their associated links to TemplateCallUpdate >> > > > whose semantic properties matched the Stakeholder characteristics of >> > > > the current user. >> >> > > > The "UI" I'm shooting for is a list like this, where the page name is >> > > > the first item in each row, the current status is in parentheses and >> > > > the available options follow as links to the TemplateCallUpdate: >> >> > > > Improve Patient Satisfaction (Active) Reject Defer >> >> > > > Improve patient safety (Submitted) Approve Reject Defer >> >> > > > Convert imaging system to digital (Draft) Submit >> >> > > > Open new surgical theater in Hampton (Draft) Submit >> >> > > > Anyway, if there's a better way to do this, I wasn't able to find it. >> > > > So here's the source for TemplateCallUpdate.php: >> >> > > > <?php >> > > > # Alert the user that this is not a valid entry point to MediaWiki if >> > > > they try to access the special pages file directly. >> > > > if (!defined('MEDIAWIKI')) { >> > > > echo <<<EOT >> > > > To install my extension, put the following line >> >> ... >> >> read more ยป > > >
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Semantic Forms" group. To post to this group, send email to semantic-forms@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/semantic-forms?hl=en -~----------~----~----~----~------~----~------~--~---