Please see inlines, especially the one at the bottom.  I'm hopeful that
somebody will take the time to point me in the right direction... at
least to some architecture docs, because I'm wasting more hours than it
is worth to me to figure out the data access issues on my own.

>  On 12/11/06, Blaine Simpson <[EMAIL PROTECTED]> wrote:
>  ...
> 
>  > I'm thinking for #1  [Allow comments only by logged in users]
>  >
>  >     Implement a CommentAuthenticator which will check for a
non-null and
>  > non-Anonymous Acegi principal and display message as explained in my
>  > original email below.
>  >
>  >     Need to find where the Preview and Post button HTML is generated.
>  > Depending on how dynamic that code is now, according to same
criteria as
>  > above (if sequence works out right, could have the procedure above
set a
>  > flag in the appropriate context), either disable the buttons, or
replace
>  > them with Login and/or Register buttons.  No idea how to switch this in
>  > an extensible way until I have time to look at the existing code.
> 
>  A comment authenticator can provide HTML form fields to be included in
>  the comment form, but cannot change the buttons.

Changing the authenticator text was easy.

>  >     * Can somebody help me find where the HTML for the Preview and Post
>  > buttons is generated?
> 
>  The comment form is generated by the #showWeblogEntryCommentForm()
>  macro in WEB-INF/velocity/weblog.vm.

I need help changing the comment form text.
I can't find an elegant way to access the current UserData object from
within the velocity templates.
I looked into accessing the Request (to get the UserData from the static
RollerSession method), and writing the needed data to the form or comment
POJOs which are accessible to Velocity, but can't find the right place to
do any of these things.
I've run into similar problems before, where Struts apps designed to isolate
the View require you to violate MVC (with much difficulty and highly-coupled
code) to do dynamic stuff like this lower down.
(Cross-cutting stuff like this is done much more elegantly with SpringMVC).
Any pointers would be appreciated.

>  > For #2  [If user is logged in, submitter details are obtained by Server
>  > instead of bothering commenter]
>  >
>  >     The user name and addr settings can be set very easily in
>  > WeblogCommentRequest.  I suspect you already have a Roller object in
>  > scope with this info.  If not, the Acegi User object will have it.
> 
>  Yes. Inside your CommentAuthenticator you should be able to obtain the
>  request and session information you need to determine is a user is
>  logged in with the right role to leave a comment. Unfortunately,
>  that's not documented (yet).

Done.  Easy with the RollerSession.

>  >     Once again, I'm not having much luck finding where the form HTML is
>  > generated.
>  >
>  >     * Can somebody help me find where the HTML for the Name and email
>  > addr fields are written into the comment form?
> 
>  Again, the comment form is generated by the
>  #showWeblogEntryCommentForm() macro in WEB-INF/velocity/weblog.vm.

My problem is, once again, getting the UserData object from here. See above.

>  >     On the other Blog servers which I've used, the URL field is
intended
>  > to be set to the commenter's home page.  It doesn't make sense to me to
>  > use it as a reference for details related to the current entry, since
>  > such a reference would generally be more useful in context in the main
>  > comment text.    If the comment URL is intended to be a "personal" URL,
>  > then I think this should be a user profile setting, stored in the
>  > rolleruser table, and auto-populated into comments the same as
commenter
>  > name and addr.
> 
>  > POSSIBLE IMPL. OPTION
>  > If it's troublesome to selectively display form fields, we could pass
>  > the name/addr[/url] values to the form for pre-population, make the
>  > fields read-only, and ignore them on submit.  Similarly, always write
>  > the Preview and Post buttons, but disable them.  I prefer a more
>  > minimalist interface that doesn't show fields and buttons which the
user
>  > can't use.
> 
> 
>  Yes. That's true. Unfortunately the CommentAuthenticator interface
>  does not allow you to pre-populate the comment. Maybe we should change
>  that.

I have submittal side working just fine.  When a comment is submitted, it
will be accepted only if user is logged in (based on a Roller property),
and values for User Name and Email Address are used from UserData (based
on another Roller Property).

My difficulty is with changing the comment form text.
It is really bad UI to display a usable comment form followed
by a message that the user has to log in before they can use the form.
I'm even unable to disable the form fields with Javascript in the
Authenticator due to hierarchical issues.
If user is logged in (and relevant property is set), I want to either
pre-fill and disable the User Name, Email Address, and Save... fields,
or eliminate them.

Reply via email to