T3DD12 community extension


Published on

Apr 16, 2012

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

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