[buddypress-trac] [BuddyPress Trac] #5669: Help plugins to generate activities for their post type(s)
buddypress-trac
noreply at wordpress.org
Mon Nov 24 18:08:07 UTC 2014
#5669: Help plugins to generate activities for their post type(s)
-----------------------------------+------------------
Reporter: imath | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: 2.2
Component: Activity | Version: 2.0
Severity: normal | Resolution:
Keywords: 2nd-opinion has-patch |
-----------------------------------+------------------
Comment (by imath):
Thanks for you feedback boonebgorges. The i18n is giving me headaches !!
I'll explain why after.
First "new hook vs lazy-loading". Although I agree that the your lazy
loading suggestion is very interesting, if you and the team don't mind, i
think i'd rather use the hook as, in the end, i find it less risky.
I can see how to use a function like
{{{bp_activity_get_trackable_post_type( "post_type_to_check" )}}} when
doing the transition post status stuff, as we actually need to get the
tracking info.
But i'm less sure about the other usage of this function that is to
populate another global {{{buddypress()->activity->actions}}} so that in
dropdowns it's possible to filter the activity stream by post types. I
mean,
1. for instance in {{{bp_activity_show_filters()}}}, it seems strange to
me to call a function which would return nothing used directly.
2. imho it would introduce some risks themes wouldn't get all the actions
if they don't use the specific function before trying to get the activity
types using the global {{{buddypress()->activity->actions}}} or the
function {{{bp_activity_get_types()}}}
So have a preference for the hook and if it's ok with everybody, i'll add
a hook at the end of the function
{{{bp_activity_tracking_register_post_types()}}}
I'll correct the two points you mentioned about the unit tests.
==== Translation is giving me headaches!! ====
But before all this, i think we need to find the best way to deal with
translations. I'll first explain what i do in the patch. Unlike the
'new_blog_post' action string, i chose not to fetch the title of the post
to avoid a blogmeta. So the string looks like this :
{{{
__( [user_link] posted a new [post type link], on the site [blog_link] )
}}}
So as you can see there are 3 links. First and last are the same than in
the 'new_blog_post' action but {{{[post type link]}}} is like this :
{{{<a href="linktothepost">$post_type->labels->singular_name</a>}}}
So having a {{{$post_type['labels']['bp_activity_new_post'] = __( '%s
posted a new foo' )}}} is not very helpful in this case because foo is not
a link. It could be {{{$post_type['labels']['bp_activity_new_post'] = __(
'%s posted a new %s' )}}}, but it might confuse the plugin author :(
I think we'll never find the perfect solution. What we're trying to do in
the first place is to find a "generic" action. So it is necessarily
problematic.
Let's take an english example.
imath posted a page > good
imath posted a post > good
imath posted a idea > not good
So the word "new" is an interesting way to solve this issue in english.
Let's look at french with the word new :
imath a posté un nouvel article > good
imath a posté un nouvel page > not good, it should be: imath a posté
un'''e''' nouvel'''le''' page
imath a posté un nouvel livre > not good it should be : imath a posté un
nouve'''au''' livre
A way to solve this in french would be to get rid of the new word and use
something like un(e), e.g.:
imath a posté un(e) livre
So IMHO, i don't think sprintf is problematic as on the contrary it avoids
wrong order comparing to concatenated strings.
see
http://codex.wordpress.org/I18n_for_WordPress_Developers#Best_Practices
Finally, using the post type labels argument might not be the best way in
my opinion.
1. I think lots of people will use {{{add_post_type_support( 'book',
'buddypress-activity' )}}} without being the plugin author, because it's
easy.
2. As a plugin author i think i would use the filter i've used in the
Blogs loader class to define my own formatting function because anyway i'd
need to set the component_id parameter to my component (by default it's
the activity component)
Argh. I'm disappointed and i lack ideas to solve this issue :(
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/5669#comment:14>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac
More information about the buddypress-trac
mailing list