• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
T3DD12  community extension
 

T3DD12 community extension

on

  • 2,116 views

 

Statistics

Views

Total Views
2,116
Views on SlideShare
2,116
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    T3DD12  community extension T3DD12 community extension Presentation Transcript

    • EXT:Community Tymoteusz Motylewski T3DD12
    • Tymoteusz MotylewskiAOE mediaWiesbadenTYPO3 & MagentoTwitter: @tmotylMail: t.motylewski@gmail.com
    • You?!• Have you played around with Community?• What are you interested in?• Do you have Extbase experience?
    • EXT:Community• Started around 2008 as pibase extension• Rewritten during GSoC 2010• Currently based on Extbase• Finally stable beta
    • Where to find it?• 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• Gerrit
    • Websites running Community• Caremaid.net • Ambasadapiekna.pl http://www.flickr.com/photos/dieselbug2007/414348333/
    • Features• Friends• Messages• Wall• Gallery• Simple search• Notification service• Access control configurable in TS• Easy to extend• Documentation!!!
    • Not covered by Community• Registration• Access on a page level• Groups (but planned)
    • Features - Profile• View• Edit• Delete• Report bad profile
    • Features - Messages• Classic view – Inbox – Unread – Sent• Threaded view – List of conversations – Whole conversation with one user on one page
    • Features – Relation management• Requesting, canceling, confirming friendship• List of friends• Possible states of the relationship: – New – Confirmed – Rejected
    • Features - Wall• Posting messages• Smiles (requires ext. „smile”)• Deleting messages
    • Features - Gallery• Gallery – Albums list – Photos list of one album• Album – Title – Cover image – Privacy settings• Special album with profile pictures
    • 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}}}
    • 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 } } }
    • Architecture Architecture
    • Architecture – Base controller• Base class for all controllers• Resolves requested and requesting user• Access control in initializeAction() – Return nothing if user has no access
    • 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
    • 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}
    • 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
    • Workshop tasks• Installing community• Features/roadmap brainstorming• Discussion – groups handling – privacy settings• ???
    • 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
    • Privacy/access control challenges• Allow user to change his privacy settings• Easy to extend (new models, new controllers)• Fast• Transparent• Configured in single place• …
    • Questions?Mail: t.motylewski@gmail.comTwitter: @tmotyl