When I was looking for places where hasProgrammingRights is called, I found
calls to
c.x.x.api.Context.get() in the templates. I discovered that there is code in
the templates which
implicitly calls $xcontext.get('something') by calling $xcontext.something
where there is no
function Context.getSomething(). Since this is so easy and there is no way to
know that anything is
wrong since Context.get() returns null if you don't have PR, I am proposing
that we do away with the
practice of implicitly referring to functions in $context entirely.
I used the following command to find implicit context references and I have
filled in the mappings
which I determined manually
user@debo8:~/wrk/xwiki.clone/xwiki/platform/web/trunk/standard/src/main/webapp/templates$
find ./
-name '*.vm' -exec grep '$xcontext\.[a-zA-Z0-9]*[^a-zA-Z0-9\(]' {} \; | sed -n
-e
's/\($xcontext\.[a-zA-Z0-9]*[^a-zA-Z0-9(]\)/\n\1\n/p' | grep '^$xcontext' | sort
$xcontext.action=
$xcontext.action=
$xcontext.action=
$xcontext.action
$xcontext.action
$xcontext.action
$xcontext.action
$xcontext.action
$xcontext.action
$xcontext.action
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action,
$xcontext.action.
$xcontext.action)
^-- maps to Context.getAction()
$xcontext.database
$xcontext.database)
$xcontext.database)
$xcontext.database)
$xcontext.database)
$xcontext.database)
$xcontext.database)
^-- maps to Context.getDatabase()
$xcontext.language"
$xcontext.language"
$xcontext.language"
^-- maps to Context.getLanguage()
$xcontext.tocData
^-- this line is broken entirely, it maps to context.get('tocData') but the
line is:
#set ($xcontext.tocData = $tocData) which is simply invalid and I can't
even figure
out what it would do.
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user,
$xcontext.user.
$xcontext.user.
$xcontext.user.
$xcontext.user"
$xcontext.user"
$xcontext.user)
$xcontext.user)
$xcontext.user)
$xcontext.user)
$xcontext.user)
^-- Maps to $xcontext.getUser()
$xcontext.wiki,
$xcontext.wiki,
$xcontext.wiki,
^-- Maps to $xcontext.get('wiki') I think this is the source of most of the
messages and since it
appears to be relatively new code, it convinces me that the $context.blah
pattern is simply
unsafe and should be abandoned at least for the xcontext object.
I would like to fix these now and establish a best practice of avoiding the use
of these in the
future for $xcontext. I myself avoid this pattern entirely but I do not have a
compelling reason to
propose it as a best practice except for $context.
WDYT?
Caleb
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs