joeey1984ad / buddypress-media

Automatically exported from code.google.com/p/buddypress-media
0 stars 0 forks source link

Group Albums #5

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
[Describe this work unit]

Add "group album" functionality to BuddyPress Media, matching and improving 
upon the functionality shown on Facebook.

We have had many requests for group album functionality in the plugin. 
Unfortunately, implementing these features in a ways that work for a wide range 
of sites and efficiently scale to large numbers of users is a major project.

...

General Structure:

-In terms of screens and the user view "state machine", we will use Facebook as 
a prototype. Facebook has hundreds of millions of users and has probably spent 
a huge amount of time and money figuring out the easiest way to structure user 
workflow. Many people use Facebook and will already be comfortable with the 
workflow from previous experience.

-We will extend on Facebook's model by adding Flickr's tagging and photo pool 
functions to the data model, as well as leveraging BuddyPress-specific 
functionality.

-Group albums will be implemented as its own component/class, to provide 
isolation from the rest of the plugin. 

Permissions:

-Group owners will need the ability to assign who can contribute media items to 
their group. 
-They will need to be able to choose between "friends", "strangers", "group 
members" etc. 
-They will need to be able to approve/decline items on an individual basis. 
-The system will need to track blocked items so that a hostile user cannot 
repeatedly submit a declined item to harass the group owner. 
-We will need to provide the ability to block all content from a specific user 
without actually kicking them out of the group.

-In addition, we should add the ability for group owners to delegate media item 
approval tasks to group administrators.

-Media item owners will need the ability to choose who can publish their items 
in a group.
-They will need to be able to choose between groups owned by "friends", 
"strangers", "only these specific groups" etc. 
-They will need to be able to approve/decline items on an individual basis. 
-The system will need to track blocked items so that a hostile group admin 
cannot repeatedly request a declined item to harass the item owner. 
-We will need to provide the ability to block all content from a specific group 
even if the user is a member of the group.

Orphan Files Problem:

-Facebook has an awesome/dangerous feature that allows a user to "upload a 
media item to a group". This is very convenient ...just "click here" to upload 
an image and it appears in the group, yet it is not present in *any of the 
member's albums*. 

-After a few months of posting images to 20 or so random groups, a user could 
have hundreds of media files spread all over a site and no central list of 
these items. If the user is not tagged in the file it could be extremely 
difficult to find all of their files; especially if the user leaves (or is 
kicked out of) a group to which they have posted media files.

-What happens to files posted to a group by a user if their account is deleted? 
Consider the scenario of a spammer using a script to upload porn pictures to 
every group on a site that "auto accepts" media items. If an account is 
deleted, we should remove all of the user's uploaded content, including items 
they have contributed to groups. 

-To solve this problem, we will include the "upload a media item to a group" 
option, however the content will be uploaded to a special "my group items" 
folder on the user's profile. This folder acts like a private album that only 
the user can see, even though the items in it are public. That way, users can 
keep track of their media items, and we can easily delete the items when a 
user's profile is deleted.

Activity Stream:

-Create a new activity stream post type to announce "Group Item" uploads to the 
user's activity stream.

-Handle the situation of uploads to hidden groups. For privacy reasons, we do 
not want uploads to hidden groups appearing in a user's activity stream.

Tagging:

-Groups will be assigned a hash tag "@tagName". Marking an image with a hash 
tag will assign it to a group. Spaces will not be allowed in hash tags.

-By adding multiple group tags to an image, it can exist in multiple groups 
simultaneously. Thus, an image of a kitten could be tagged with 
@amateurPhotography, @cuteKittens, and @pets. The image would show up in all 
three of these groups, and when somebody views it in "single item" view, all of 
the groups that it is a member of would be listed (except for hidden groups). 

-This allows users to discover other groups they may enjoy using content 
association, and it also allows us to determine which groups are related to 
each other and use it to tune search results.

Admin Menu:

-A large number of configuration options will have to be added to the back end 
admin menu.

-Most of them can be modeled after the "member tags" policy system

-Update the default settings class

-Write a policy enforcement function that applies the rules set in the admin 
menu.

Templates:

-Build a new template that adds "media item" permissions settings to the "group 
owner" menu, and handles permission delegation to group administrators.

-Build a template that shows a users's "My Group Items"

-Modify admin menu template classes to add the new config options.

-Build all required template tag functions.

[What components of the plugin will be affected by this change]

Tagging, Admin, Albums, Media item, Upload, Activity Stream

[Does this work unit block any other work units?]

It blocks "Post items directly to activity stream" because they share the "My 
posted items" group of functions. 

[Estimated hours of developer time this work unit will require]

60-80 hours.

[Estimated completion date]

2010-08-01

Original issue reported on code.google.com by CarlRoett@gmail.com on 15 Jul 2010 at 7:38

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Any update for estimated completion date?

+1 for this feature - and a willing beta tester for it when ready.

Original comment by jamie.oa...@gmail.com on 1 Sep 2010 at 8:04

GoogleCodeExporter commented 9 years ago
I'm also interested for an estimated completion date!?
Thanks, I really appreciate it...

Original comment by bojans...@gmail.com on 22 Sep 2010 at 3:11

GoogleCodeExporter commented 9 years ago
Happily see the dates in the calendar around Hallowe'en.
Looking forward to beta testing!

Original comment by groa...@gmail.com on 27 Sep 2010 at 6:54

GoogleCodeExporter commented 9 years ago
Any news regarding this topic?

Original comment by bojans...@gmail.com on 27 Oct 2010 at 5:02

GoogleCodeExporter commented 9 years ago
Any news regarding this topic?

Original comment by bojans...@gmail.com on 27 Oct 2010 at 5:02

GoogleCodeExporter commented 9 years ago
For project schedule updates, please see our live calendar: http://bit.ly/aUn5dZ

Original comment by CarlRoett@gmail.com on 27 Oct 2010 at 6:14

GoogleCodeExporter commented 9 years ago
I can contribute but not right now. But in a few months or weeks.
Anyway I will try first with a less complex portion. Let me see, but some is 
sure: I'm interested to contribute.

Original comment by Any...@gmail.com on 14 Dec 2010 at 10:39

GoogleCodeExporter commented 9 years ago
Awesome! Get in touch with us when you're ready to get started.

Original comment by CarlRoett@gmail.com on 15 Dec 2010 at 1:06