In the past I have sucessfully had a web that is visible in the map (SITEMAPLIST = on) but apart from a few pages such as WebHome
... is protected.
To acheive this I had set DENYWEBVIEW = TWikiGuest
in the WebPreferences
and ALLOWTOPICVIEW = TWikiGuest
in the specific topics that were to be publicly visible. This mode of operation has come up repeatedly in the Support web at TWiki.org (e.g. TWiki:Support/AllowWebViewVersusAllowTopicView
, and others) and I did have it working under ealier versions of Dakar. Then it was broken. The it was fixed. Now it is broken again.
The way it is broken now is that when not logged in (i.e. 'TWikiGuest') the retricted webs do not even appear in the %WEBLIST.
This is incompatible with Cairo and with earlier versions of Dakar
See also Item1263
Can you please provide a testcase? When I set up a web as you describe, it appears in the site map list, so you must be doing something I'm missing....
(Note that for a web to be recognised as a web, then WebPreferences
must exist, though it does not need to be viewable by the user).
I was talking about legacy application webs in an existing application. You're talking about creating a new web.
And if you note I did say that there was a WebPreferences
I've attached a stripped down version of the application web.
When I load this into a new test version of Dakar it exhibits the behaviour I'm describing.
The web is fully functional if you are logged in.
The rules are being correctly applied. You have set DENYWEBVIEW on the web, which means the web cannot be seen by TWikiGuest
. The contents can't be listed, and the web is not listed in a WEBLIST. The fact that individual topics within the web are visible is moot; the web itself is not accessible, so can't be listed. In the general case this is desireable behaviour; it's the only way a web can be completely
hidden from unauthorised users. It's incompatible with Cairo because Cairo got it wrong
I can't think of a clean way to do what you want to do. There is a code fix, which would allow a web to be listed if a specific topic within the web was visible, but it would then be yet another special case, and I really don't want to do that.
Perhaps Cairo got it wrong but earlier version of Dakar did as well. sigh!
Strictly speaking you have not described things correctly. Yes DENYWEBVIEW is set in the preferences, but many other topics, are accessible - explicitly so. On top of that the web is not hidden from the map, so its not completely
OK, can we address this the other way round. The objective is to have a web whose topics defaults to DENYVIEW to TWikiGuest
unless they are specificall made ALLOWVIEW. This is not new, it has been asked for in the TWiki:Support
web a number of times.
We need to sort out what SITEMAPLIST really means. If it is "off" then yes, the web is hidden. It is hidden from the map.
I see no reason why there should be something on the map ut you can't go there. Its like that in the physical world
See also TWiki:Codev.SameUrlSameContent
Yeah, but you have to ask yourself what "DENY WEB VIEW" actually means
. Does it mean "deny view of all topics and subwebs"? Or "deny the existance of this web"? If the former, it is behaving like directory permissions, but the web will appear in a list of top level webs. If the latter, it will behave like now, and hide the web
as well as the topics within it. Arguably we are missing a permission level (call it "LIST") - in fact the horrible NOSEARCHALL switch is an acknowledgement of that. "Set NOSEARCHALL = on" is actually the same as "Set ALLOWWEBLIST = ". LIST would let you list the contents of the web, but doesn't automatically grant VIEW.
Personally I think we should live with this just now, and aim to take permissions out-of-band in Edinburgh, and fix it at that time.