Sreenath T.V ([personal profile] scamper) wrote in [site community profile] dw_dev_training2010-06-14 07:45 pm
Entry tags:

bug - 2278

I am just trying to fix bug-2278,i.e, Add subscribe to all comments to the community management page  bugs.dwscoalition.org/show_bug.cgi. I understood that the code need to be inserted in /dw/htdocs/community/manage.bml. Code :- 
$ret .= BML::ml('Actionlink', {
                   'link'=>"<a href='/manage/tags?authas=$user'>$ML{'.commlist.tags'}</a>"}) . "&nbsp;&nbsp;";
        $ret .= BML::ml('Actionlink', {
                   'link'=>"<a href='/manage/subscriptions/user?journal=$u->user'>Subscribe to all comments </a>"}) . "&nbsp;&nbsp;";
       }
        $ret .= "</td><td align='center'>";
 
Here $u->user is used as it is used in /dw/htdocs/userinfo.bml for the same purpose. But I guess, It cannot be used since its not any global variable. If I use $user instead of $u->user, it is directed to /manage/subscriptions/user?journal= <username> But in othercase it is directed to /manage/subscriptions/user?journal=<community name>. Which is not the same.
Another doubt is "Subscribe to all comments" in the above code is working properly but other similar links are implemented as $ML{'.commlist.tags'}, etc.. So should I implement it in that way so that it will be in a standard way ? That would need a new entry in commlist which I guess is defined in /dw/htdocs/accountstatus.bml.  Code :-
if ( @warn_comm_ids ) {
             my $commlist = '<ul>';
             $commlist .= '<li>' . $_->ljuser_display . '</li>'
             foreach values %{ LJ::load_userids( @warn_comm_ids ) };
             $commlist .= '</ul>';
 
How can I add "Subscribe to all comments" to commlist ? So that I can use it as something like $ML{'.commlist.Subscribe to all comments'}. I am not sure what I understood is correct? I could very well be wrong. Any suggestions on this will be really helpful..    
alierak: (Default)

[personal profile] alierak 2010-06-14 03:22 pm (UTC)(link)
$u->user is a call to the "user" method on the object $u. I don't think you can substitute method calls inside strings, so that's why that wouldn't work. You can assign it to a new variable first and then substitute the variable into the string. Or break the string into three pieces concatenated together ( "prefix" . $method->call . "suffix" ).

For the other question about $ML{...} please see the wiki entry on English-stripping. The idea is to avoid displaying any literal English phrases from within the code -- they should go in .text files instead so that they can be easily changed or translated into other languages. When you add a new phrase, you'll need to create an identifier for it, and the identifier can be an abbreviation, so .commlist.suballcomments (in dw/htdocs/community/manage.bml.text) might do for example.
sophie: A cartoon-like representation of a girl standing on a hill, with brown hair, blue eyes, a flowery top, and blue skirt. ☀ (Default)

[personal profile] sophie 2010-06-14 06:16 pm (UTC)(link)
The wiki page doesn't actually mention $ML{...} - it should do, but I wasn't quite sure how to explain it as it can be both interpolated and used outside of a string. (The guide is targeted towards non-coders.)
kareila: (Default)

[personal profile] kareila 2010-06-14 06:53 pm (UTC)(link)
Yes, %ML can be interpolated. However, the main disadvantage to using %ML is that it only works for static strings. To pass in arguments, you have to use BML::ml, or its BML-free equivalent, LJ::Lang::ml.

The case quoted above is interesting in that it is interpolating an ML string in the context of an argument being passed to a second ML string via BML::ml.