[Pmwiki-users] Hierarchical groups

Patrick R. Michaud pmichaud
Tue Jun 8 22:42:37 CDT 2004


On Wed, Jun 09, 2004 at 08:17:03AM -0700, Steven Leite wrote:
> 
> I'd like to see the parent operator as / since that's what used in OS's

I think you're confusing "parent operator" with "path separator".
In most OS's (DOS, Windows, Unix), the name ".." is used to refer to
a parent directory.

> Here's some examples of the OS approach using the examples you provided
> 
> > For example, if we're currently on a page
> > called "NFL.Teams.Patriots.Playoffs", then how do the following
> > resolve...?
> 
> [[SeasonOpen]] would resolve to [[NFL.Teams.Patriots.SeasonOpen]]

Agreed.

> [[Teams.WorkingTogether]] would link to
> [[NFL.Teams.Patriots.Teams.WorkingTogether]]

I'm assuming you meant it would link to 
NFL.Teams.Patriots.Teams.WorkingTogether, since in this scheme
[[NFL.Teams.Patriots.Teams.WorkingTogether]] ought to link to 
NFL.Teams.Patriots.NFL.Teams.Patriots.Teams.WorkingTogether (whew!).

> To correctly point it to NFL.Teams.WorkingTogether, you would enter the
> link as follows:  [[../WorkingTogether]]

I think that some authors may have trouble with the '..' syntax if
they aren't used to dealing with pathnames.  I don't know how many 
Windows users ever see '..' used in a path name--it hardly ever shows up
in a file path or a url, and in recent versions of Windows it doesn't
even show up in file dialog boxes--it's now an "Up" button (arrow) in the
toolbar.  So there might be some learning curve and need for documentation
with this, even though us programmers/powerusers are quite used to it.

> [[../../WorkingTogether]] would point to NFL.WorkingTogether, which
> would be the same as writing [[/WorkingTogether]].

Huh?  I would think that [[/WorkingTogether]] would be WorkingTogether
at the top level.  If it's not, then how do I make a link to 
NBA.Teams or NBA.Teams.Spurs?  [[NBA.Teams]] and [[NBA.Teams.Spurs]] 
would take me to NFL.Teams.Patriots.NBA.Teams
and NFL.Teams.Patriots.NBA.Teams.Spurs, yes?

> [[/WorkingTogether/]] on the other hand, would (should) resolve as
> WorkingTogether/HomePage (where HomePage is the default page for an
> arbitrary Group, set in config.php).

And I find this very non-intuitive, why is [[/WorkingTogether]] under
the NFL group while [[/WorkingTogether/]] is its own group?  That doesn't
follow common filepath conventions at all.  Are you saying that the 
*trailing* slash indicates it's at the top level?

> > we're currently on a page called "NFL.Teams.Patriots.Playoffs"
> 
> [[Patriots.Washington]] would resolve as
> NFL.Teams.Patriots.Patriots.Washington.
> 
> To resolve NFL.Teams.Patriots.Washington, you would write [[Washington]]
> To resolve Patriots.Washington you would write
> [[../../Patriots.Washington]], or more simply [[/Patriots/Washington]].

Again, I find this second example to be counter-intuitive to 
someone familiar with path names.  It gets worse...

> Additionally, to specify the default page for the Group
> Patriots/Washington/ you would write [[/Patriots/Washington/]] or
> [[/Patriots/Washington/HomePage]] (where HomePage is the default page
> for an arbitrary Group, set in config.php)

There's that bizarre leading/trailing slash again.  To summarize, you're
saying that from NFL.Teams.Patriots.Playoffs,
   [[Patriots.Washington]] == NFL.Teams.Patriots.Patriots.Washington
   [[Washington]] == NFL.Teams.Patriots.Washington
   [[../../Patriots.Washington]] == NFL.Patriots.Washington
   [[/Patriots/Washington]] == NFL.Patriots.Washington
   [[/Patriots/]] == Patriots.HomePage

But wait, where does [[/Patriots/HomePage]] go?  Does it go to
NFL.Patriots.HomePage, like [[/Patriots/Washington]] goes to
NFL.Patriots.Washington?

Also, if we went to a filename-path sort of system, I wouldn't think we'd
ever need "default pages" in groups such as "HomePage", because every group
is already a page.  Or, if we do have separate HomePages, then why?
What's the practical difference between Patriots.Washington
and Patriots.Washington.HomePage, both of which have page content?
(In the current version of PmWiki, Groups never contain markup, only
pages contain markup.  In a hierarchical scheme, every page name
is also a group name, so groups can have markup content.)

Also, from a page such as Alpha.Beta.Gamma.Delta.Epsilon, how does
one refer to Alpha.Beta.Gamma.Delta?  Would it be just [[..]]?  Does
this mean that I have to write one of
    [[.. |Delta]] 
    [[../../Delta]]
    [[(/Beta/Gamma/)Delta]]    (following Steve's leading slashes)
   
to get "Delta" to display as the link text?  

And, another issue just occurred to me regarding hierarchical groups--
what about group passwords and permissions, how do they play out?
Does a subgroup inherit the passwords of its ancestors?  Note that
the answers are not as straightforward or obvious as you might think,
because there are several methods available that make sense to
different audiences depending on their background.   As an example, 
how do I write protect the page NFL.Teams but keep all of 
the pages beneath NFL.Teams open for editing?

Pm



More information about the pmwiki-users mailing list