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

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

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