I have to admit, I'm not a fan of using SMW and SF for
social-networking-type features like favorites, forums, ratings, etc. The
semantic content of a page should reflect information in the real world, not
wiki-specific information, in my opinion (although the "Modification date"
special property in SMW already breaks that).

In any case - wow, I'm impressed by what you've accomplished. For the
problem with the radiobutton not showing up - it sounds like the form can't
figure out the corresponding property from the template, which isn't too
surprising. If you add "|property=Operation" to the field declaration in the
form, it should work. For the other issues - what's the difference (to you)
between "default=" and "preload="?

-Yaron

On Thu, Jul 16, 2009 at 11:13 AM, najevi <naj...@gmail.com> wrote:

>
> For the past several days I've been slowly but surely figuring out how
> to emulate something that resembles the classic "Add to my favorites"
> and "Remove from my favorites" links for wiki articles using semantic
> data. After some long and quite spells at IRC #semanticmediawiki,
> today I learned about this SF mailing list so I am polling you all to
> find out if anybody recognizes the same (or similar) design goal and
> can offer me some advice.
>
> Overview:
> I am planning for a collection of wiki articles describing "skins" for
> each of several "boat" models. Those skinned boats are raced on
> "tracks" which also have there own wiki articles describing each
> track. So I will have:
> 3 categories of wiki articles: {Boats, Skins, Tracks}
> 3 templates: Template:Skin, Template:Boat, Template:Track
> which are used, respectively,  by:
> 3 forms: Form:Skin, Form:Boat, Form:Track
> all to facilitate the creating of each type of wiki article. That was
> the easy part!
>
> Each visitor to the wiki has their own personal favorites and would
> like to bookmark/tag/record those favorites for later query.
>
>    * The wiki hosting service is Wikia and they happen to have a 5
> star article rating system which does seem to store each user's
> personal 1..5 rating score for a page in a list ... however, that does
> not appear to be linked in any way to semantic data or semantic
> queries. (I am reasonably certain this is a dead end - but I mention
> it just in case someone reading this knows better.)
>
> My current best effort
> So here's what I've been able to do with semantic data and later on
> I'll describe where I get stuck. The core of my current best solution
> is that each wiki article has obfuscated semantic data in the form of
> a comma-delimited list of users who have marked that article as one of
> ther favorite articles. (Am I going to run into some limit as to how
> many strings can be in that comma delimited list?)
>
> To manipulate that list of usernames, I define 3 properties:
> Property:Favored by [[has type:string]]  (this will become the list of
> users who have marked the current page as a favorite)
> Property:This user [[has type:string]]
> Property:Operation [[has type:string]] [[allows value::Add]] [[allows
> value::Remove]]
> and 1 template:
> Template:Favorites
> which is used by
> Form:Favorites
>
> Form:Favorites is a partial form designed to manipulate only the 3
> properties listed above. Notice that all other content is hidden even
> the Favored by list identified above. viz:
>
>    {{{info|partial form|edit title=Manage your favorites}}}
>    {{{for template|Favorites|label=Add/Remove this page to/from your
> favorites}}}
>    {{{field|Favoredby|hidden}}}
>    {{{field|Thisuser|default=current user|hidden}}}
>    ;Add or remove current user? : {{{field|Operation|radiobutton|
> default=Remove|mandatory}}}
>    {{{end template}}}
>
>    {{{standard input|free text|hidden}}}
>
>    {{{standard input|summary|preload=Form:Favorites/Preloads/
> summary}}}
>    {{{standard input|save|label=Confirm}}} {{{standard input|
> cancel}}}
>
>
> The first sticking point is this. Intuitively I'd prefer to be
> specifying {{{field|Thisuser|preload=current user}}} rather than
> default=current user but it seems that partial form with preload at
> the field parameter level is not available by design.  I think this is
> one great example where you really do want the existing value of This
> user to be overwritten by the argument to a preload parameter. I think
> my workaround for this is satisfactory (see below).
>
> The second sticking point is that the radiobutton parameter is not
> producing the expected toggling pair of radio buttons for user input.
> With all other fields in Form:Favorites hidden/obfuscated this simple
> Add/Remove binary choice should be the only decision a browsing user
> is required to make.
>
> A third (but minor) snafu is my use of |preload=Form:Favorites/
> Preloads/summary
> It just does not seem to be behaving as described at
> http://www.mediawiki.org/wiki/Extension:Semantic_Forms#Form_markup_language
>
> Template:Favorites does the clever work of silently adding or removing
> the current username to/from a comma-delimited list of usernames.
> viz.
>
>    {{#switch: {{#lc: {{{Operation|}}} }}
>    | add      = {{#arraymap:{{{Favoredby|}}}|,|x|{{#set:Is a favorite
> of=x}} }} {{#set:Is a favorite of={{{Thisuser|}}} }}
>    | remove   = {{#arraymap:{{#replace:{{#arraymap:
> {{{Favoredby|}}}|,|!|{{#switch:{{{Thisuser|}}}=|!}}}}|, ,|,}} |,|x|
> {{#set:Is a favorite of=x}} }}
>    | #default = {{#arraymap:{{{Favoredby|}}}|,|x|{{#set:Is a favorite
> of=x}} }}</includeonly>
>    }}
>    {{#set:Operation={{{Operation|remove}}} }}
>    {{#set:This user=}}
>
>
> (If the http://www.mediawiki.org/wiki/Extension:ArrayExtension was
> installed at Wikia then the above would be much more elegantly
> implemented using #ArrayUnion: and #ArrayDiff:)
>
> The aforementioned workaround that makes |default=current user
> deliver what  |preload=current user  might have delivered is that very
> last line that leaves This user with a null value. Without that null
> value the |default=current user  parameter does not behave with the
> preload effect that I wanted.
>
> Finally, access to this partial form is created within Template:Skin,
> Template:Boat, Template:Track via the line:
>
>    [[Special:EditData/Favorites/{{PAGENAME}}|Manage your favorites]]
>
>
> Where I need help
> The above solution is functioning fine but it is singularly clumsy
> that the user is presented with a text input box in which to type
> either Add or Remove when a binary pair of radiobuttons is prescribed.
> If someone can help me fix that anomaly then I'll be most grateful.
> The above test case can be examined at
> http://smwtest.wikia.com/wiki/Form:Skin
> however, I am working on it at the present time so the code you see
> there may not reflect what you have just read above and of course, in
> the weeks ahead, it may be erased altogether.
>
> There may be a better way to implement this "Manage my favorites"
> feature so if you have solved this problem differently then please
> share it here.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 
semantic-forms+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/semantic-forms?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to