Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Tymoteusz MotylewskiT3DD12EXT:Community
AOE mediaWiesbadenTYPO3 & MagentoTwitter: @tmotylMail: t.motylewski@gmail.comTymoteusz Motylewski
• Have you played around with Community?• What are you interested in?• Do you have Extbase experience?You?!
• Started around 2008 as pibase extension• Rewritten during GSoC 2010• Currently based on Extbase• Finally stable betaEXT:...
• Forge:http://forge.typo3.org/projects/show/extension-community• Mailing listhttp://lists.typo3.org/cgi-bin/mailman/listi...
http://www.flickr.com/photos/dieselbug2007/414348333/Websites running Community• Caremaid.net • Ambasadapiekna.pl
• Friends• Messages• Wall• Gallery• Simple search• Notification service• Access control configurable in TS• Easy to extend...
• Registration• Access on a page level• Groups (but planned)Not covered by Community
• View• Edit• Delete• Report bad profileFeatures - Profile
• Classic view– Inbox– Unread– Sent• Threaded view– List of conversations– Whole conversation with one user on onepageFeat...
• Requesting, canceling, confirmingfriendship• List of friends• Possible states of the relationship:– New– Confirmed– Reje...
• Posting messages• Smiles (requires ext. „smile”)• Deleting messagesFeatures - Wall
• Gallery– Albums list– Photos list of one album• Album– Title– Cover image– Privacy settings• Special album with profile ...
• Mail, private message, wall message….• Multiple notifications per event• Easy to use API$notification = new Tx_Community...
Want to notify by SMS after receiving private message?1. Create own notification handler which implementsTx_Community_Serv...
ArchitectureArchitecture
• Base class for all controllers• Resolves requested and requesting user• Access control in initializeAction()– Return not...
Requesting(logged in)userRequesteduserArefriendsAccess type NotesNULL NULL - ACCESS_PUBLIC Public, guest access. No logged...
• On action level• Configured in TS– Actions are mapped to „resource names”accessActionResourceMap {User {image = profile....
• Use Ajax wherever possible• Privacy settings for user properties• Groups• Performance tuning• Notification queue• Advanc...
• Installing community• Features/roadmap brainstorming• Discussion– groups handling– privacy settings• ???Workshop tasks
• Levels– Action level (MessageController->sendAction)– Record level e.g. user/ album– Record property level – $user->emai...
• Allow user to change his privacy settings• Easy to extend (new models, newcontrollers)• Fast• Transparent• Configured in...
Questions?Mail: t.motylewski@gmail.comTwitter: @tmotyl
Upcoming SlideShare
Loading in …5
×

T3DD12 community extension

1,229 views

Published on

Apr 16, 2012

Published in: Technology
  • Be the first to comment

T3DD12 community extension

  1. 1. Tymoteusz MotylewskiT3DD12EXT:Community
  2. 2. AOE mediaWiesbadenTYPO3 & MagentoTwitter: @tmotylMail: t.motylewski@gmail.comTymoteusz Motylewski
  3. 3. • Have you played around with Community?• What are you interested in?• Do you have Extbase experience?You?!
  4. 4. • Started around 2008 as pibase extension• Rewritten during GSoC 2010• Currently based on Extbase• Finally stable betaEXT:Community
  5. 5. • Forge:http://forge.typo3.org/projects/show/extension-community• Mailing listhttp://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-communityor news://lists.typo3.org/typo3.projects.community• Git repositorygit://git.typo3.org/TYPO3v4/Extensions/community.git• GerritWhere to find it?
  6. 6. http://www.flickr.com/photos/dieselbug2007/414348333/Websites running Community• Caremaid.net • Ambasadapiekna.pl
  7. 7. • Friends• Messages• Wall• Gallery• Simple search• Notification service• Access control configurable in TS• Easy to extend• Documentation!!!Features
  8. 8. • Registration• Access on a page level• Groups (but planned)Not covered by Community
  9. 9. • View• Edit• Delete• Report bad profileFeatures - Profile
  10. 10. • Classic view– Inbox– Unread– Sent• Threaded view– List of conversations– Whole conversation with one user on onepageFeatures - Messages
  11. 11. • Requesting, canceling, confirmingfriendship• List of friends• Possible states of the relationship:– New– Confirmed– RejectedFeatures – Relation management
  12. 12. • Posting messages• Smiles (requires ext. „smile”)• Deleting messagesFeatures - Wall
  13. 13. • Gallery– Albums list– Photos list of one album• Album– Title– Cover image– Privacy settings• Special album with profile picturesFeatures - Gallery
  14. 14. • Mail, private message, wall message….• Multiple notifications per event• Easy to use API$notification = new Tx_Community_Service_Notification_Notification(relationRequest,$this->requestingUser,$this->requestedUser);$notification->setFoo(„BAR”);$this->notificationService->notify($notification);• Configurable in TSrelationRequest {10 {template = RelationRequesthandler = Tx_Community_Service_Notification_MailHandlerserverEmail = {$plugin.tx_community.serverEmail}} }Features – Notification service
  15. 15. Want to notify by SMS after receiving private message?1. Create own notification handler which implementsTx_Community_Service_Notification_HandlerInterface- send() method is requirede.g. Tx_CommunityLocal_Service_Notification_SmsHandler2. Add typoscript configurationplugin.tx_community.settings.notification.rules {messageSend {20 {handler = Tx_CommunityLocal_Service_Notification_SmsHandler}}}Features – Notification service
  16. 16. ArchitectureArchitecture
  17. 17. • Base class for all controllers• Resolves requested and requesting user• Access control in initializeAction()– Return nothing if user has no accessArchitecture – Base controller
  18. 18. Requesting(logged in)userRequesteduserArefriendsAccess type NotesNULL NULL - ACCESS_PUBLIC Public, guest access. No logged inuser, no requested (target) user.Used e.g. for “list of 10 newest users”.NULL John - ACCESS_NOBODY Public, guest access, no logged inuser. Public, but user specific plugins.Bill John NO ACCESS_OTHER Bill is logged in, but he is not a friendwith JohnBill John YES ACCESS_FRIENDJohn John | NULL - Access granted bydefault.If requested user is not set, and weare logged in, then requestedUser =requestingUser– e.g. we are seeing our own profileArchitecture – Access controlTypes of access for different requests:
  19. 19. • On action level• Configured in TS– Actions are mapped to „resource names”accessActionResourceMap {User {image = profile.image //image action from UserControlleredit = profile.edit}– Access rules are set for resource namesaccessRules.friend {profile.image.access = 1profile.relation.access = 1}Architecture – Access control
  20. 20. • Use Ajax wherever possible• Privacy settings for user properties• Groups• Performance tuning• Notification queue• Advanced search• Standard image sizes defined in TS• Commenting on wall postsRoadmap
  21. 21. • Installing community• Features/roadmap brainstorming• Discussion– groups handling– privacy settings• ???Workshop tasks
  22. 22. • Levels– Action level (MessageController->sendAction)– Record level e.g. user/ album– Record property level – $user->email,$user->name• Defaults– Global defaults: deny or allow– Defaults for table/record/propertyPrivacy/access control challenges
  23. 23. • Allow user to change his privacy settings• Easy to extend (new models, newcontrollers)• Fast• Transparent• Configured in single place• …Privacy/access control challenges
  24. 24. Questions?Mail: t.motylewski@gmail.comTwitter: @tmotyl

×