Your SlideShare is downloading. ×
T3DD12  community extension
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

T3DD12 community extension


Published on

Published in: Technology, Business

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. EXT:Community Tymoteusz Motylewski T3DD12
  • 2. Tymoteusz MotylewskiAOE mediaWiesbadenTYPO3 & MagentoTwitter: @tmotylMail:
  • 3. You?!• Have you played around with Community?• What are you interested in?• Do you have Extbase experience?
  • 4. EXT:Community• Started around 2008 as pibase extension• Rewritten during GSoC 2010• Currently based on Extbase• Finally stable beta
  • 5. Where to find it?• Forge:• Mailing list news://• Git repositorygit://• Gerrit
  • 6. Websites running Community• •
  • 7. Features• Friends• Messages• Wall• Gallery• Simple search• Notification service• Access control configurable in TS• Easy to extend• Documentation!!!
  • 8. Not covered by Community• Registration• Access on a page level• Groups (but planned)
  • 9. Features - Profile• View• Edit• Delete• Report bad profile
  • 10. Features - Messages• Classic view – Inbox – Unread – Sent• Threaded view – List of conversations – Whole conversation with one user on one page
  • 11. Features – Relation management• Requesting, canceling, confirming friendship• List of friends• Possible states of the relationship: – New – Confirmed – Rejected
  • 12. Features - Wall• Posting messages• Smiles (requires ext. „smile”)• Deleting messages
  • 13. Features - Gallery• Gallery – Albums list – Photos list of one album• Album – Title – Cover image – Privacy settings• Special album with profile pictures
  • 14. Features – Notification service• 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 = RelationRequest handler = Tx_Community_Service_Notification_MailHandler serverEmail = {$plugin.tx_community.serverEmail}}}
  • 15. Features – Notification serviceWant to notify by SMS after receiving private message? 1. Create own notification handler which implements Tx_Community_Service_Notification_HandlerInterface - send() method is required e.g. Tx_CommunityLocal_Service_Notification_SmsHandler 2. Add typoscript configuration plugin.tx_community.settings.notification.rules { messageSend { 20 { handler = Tx_CommunityLocal_Service_Notification_SmsHandler } } }
  • 16. Architecture Architecture
  • 17. Architecture – Base controller• Base class for all controllers• Resolves requested and requesting user• Access control in initializeAction() – Return nothing if user has no access
  • 18. Architecture – Access control Types of access for different requests:Requesting Requested Are Access type Notes(logged in) user friendsuserNULL NULL - ACCESS_PUBLIC Public, guest access. No logged in user, no requested (target) user. Used e.g. for “list of 10 newest users”.NULL John - ACCESS_NOBODY Public, guest access, no logged in user. Public, but user specific plugins.Bill John NO ACCESS_OTHER Bill is logged in, but he is not a friend with JohnBill John YES ACCESS_FRIENDJohn John | NULL - Access granted by If requested user is not set, and we default. are logged in, then requestedUser = requestingUser – e.g. we are seeing our own profile
  • 19. Architecture – Access control• On action level• Configured in TS – Actions are mapped to „resource names” accessActionResourceMap { User { image = profile.image //image action from UserController edit = profile.edit } – Access rules are set for resource names accessRules.friend { profile.image.access = 1 profile.relation.access = 1}
  • 20. Roadmap• 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 posts
  • 21. Workshop tasks• Installing community• Features/roadmap brainstorming• Discussion – groups handling – privacy settings• ???
  • 22. Privacy/access control challenges• 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/property
  • 23. Privacy/access control challenges• Allow user to change his privacy settings• Easy to extend (new models, new controllers)• Fast• Transparent• Configured in single place• …
  • 24. Questions?Mail: t.motylewski@gmail.comTwitter: @tmotyl