bending open atrium to your will!

64
Bending Open Atrium Bending Open Atrium to your will! to your will! Jeff Miccolis, Development Seed Jeff Miccolis, Development Seed

Upload: jeff-miccolis

Post on 27-Nov-2014

12.740 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Bending Open Atrium to your will!

Bending Open Atrium to Bending Open Atrium to your will!your will!Jeff Miccolis, Development SeedJeff Miccolis, Development Seed

Page 2: Bending Open Atrium to your will!

Bending Open Atrium to Bending Open Atrium to your will!your will!Twitter: @miccolis, @developmentseedTwitter: @miccolis, @developmentseed

Page 3: Bending Open Atrium to your will!

Open Atrium Co-Open Atrium Co-maintainermaintainerTwitter: @open_atriumTwitter: @open_atrium

Page 4: Bending Open Atrium to your will!

Give you want you need Give you want you need to write your own to write your own feature.feature.My goal.My goal.

Page 5: Bending Open Atrium to your will!

There is a lot to know!There is a lot to know!My worry.My worry.

Page 6: Bending Open Atrium to your will!

Expose you to the hard Expose you to the hard problemsproblemsMy approach.My approach.

Page 7: Bending Open Atrium to your will!

Pretend you’re all *nix Pretend you’re all *nix usersusersMy approach.My approach.

Page 8: Bending Open Atrium to your will!

...that you know Drupal...that you know DrupalMy approach.My approach.

Page 9: Bending Open Atrium to your will!

...and that you’ve used ...and that you’ve used features and context features and context beforebeforeMy approach.My approach.

Page 10: Bending Open Atrium to your will!

1. Quick overview of OA1. Quick overview of OA2. Configuration2. Configuration3. Groups & access 3. Groups & access controlcontrol4. Building a new 4. Building a new featurefeature5. Pitfalls & resources.5. Pitfalls & resources.

Agenda.Agenda.

Page 11: Bending Open Atrium to your will!

Quick overviewQuick overviewPart 1.Part 1.

Page 12: Bending Open Atrium to your will!

What Open Atrium does What Open Atrium does already.already.

Page 13: Bending Open Atrium to your will!
Page 14: Bending Open Atrium to your will!

quick demo.quick demo.

Page 15: Bending Open Atrium to your will!

30+ languages

Swedish

Hebrew

Portuguese / Portugal

Catalan

Spanish Russian

Brazilian Portuguese

JapaneseItalian

Hungarian

German

French

Danish

Arabic

Page 16: Bending Open Atrium to your will!

Time tracking!Time tracking!A “real” wiki!A “real” wiki!Maps!Maps!Gantt Charts!Gantt Charts!Solr powered search!Solr powered search!Alfresco powered DM!Alfresco powered DM!News Aggregation!News Aggregation!

The kinds of features you can add.The kinds of features you can add.

Page 17: Bending Open Atrium to your will!

News Aggregation!News Aggregation!

The feature we’ll add today.The feature we’ll add today.

Page 18: Bending Open Atrium to your will!

RSS+ATOMRSS+ATOMFeeds per-groupFeeds per-groupThree categoriesThree categories

Atrium Reader Atrium Reader

http://code.developmentseed.org/http://code.developmentseed.org/atrium_readeratrium_reader

Page 19: Bending Open Atrium to your will!

quick demo.quick demo.

Page 20: Bending Open Atrium to your will!

People organized into People organized into groups.groups.How Open Atrium expects to be used.How Open Atrium expects to be used.

Page 21: Bending Open Atrium to your will!
Page 22: Bending Open Atrium to your will!

Is your feature useful to Is your feature useful to people organized into people organized into groups?groups?Question.Question.

Page 23: Bending Open Atrium to your will!

Yes, we’re twitter Yes, we’re twitter junkies.junkies.Answer.Answer.

Page 24: Bending Open Atrium to your will!

ConfigurationConfigurationPart 2.Part 2.

Page 25: Bending Open Atrium to your will!

What modules will we What modules will we use?use?Getting technical.Getting technical.

Page 26: Bending Open Atrium to your will!

Where does module X Where does module X store its configuration?store its configuration?Features module compatiblity.Features module compatiblity.

Page 27: Bending Open Atrium to your will!

I warned you about thisI warned you about thisWhat is the features module?What is the features module?

Page 28: Bending Open Atrium to your will!

Your configuration Your configuration needs to be automatic.needs to be automatic.Why exportables?Why exportables?

Page 29: Bending Open Atrium to your will!

You cannot trust a You cannot trust a sequential id!sequential id!Exportables are crucial.Exportables are crucial.

Page 30: Bending Open Atrium to your will!

The `term_data.tid` The `term_data.tid` problemproblemYou cannot use taxonomy for You cannot use taxonomy for architecture.architecture.

Page 31: Bending Open Atrium to your will!

Alex: builds a View with a term Alex: builds a View with a term filterfilter

Tom: sets up Open AtriumTom: sets up Open Atrium

Alex: sets up Open AtriumAlex: sets up Open Atrium

Alex: bundles it into a featureAlex: bundles it into a feature

Tom: posts a blog with a tag, Tom: posts a blog with a tag, “drupal”“drupal”

Tom: downloads Alex’s featureTom: downloads Alex’s feature

Alex: makes a “Important” tagAlex: makes a “Important” tag

Tom: has issues...Tom: has issues...

Page 32: Bending Open Atrium to your will!

““Alex! Your feature Alex! Your feature hides anything I tag as hides anything I tag as IMPORTANT! WTF!?!”IMPORTANT! WTF!?!”A term’s creation order determines its A term’s creation order determines its sequential id. You’ve got not control.sequential id. You’ve got not control.

Page 33: Bending Open Atrium to your will!

No.No.Is there a good work around?Is there a good work around?

Page 34: Bending Open Atrium to your will!

Exportables will guide Exportables will guide what modules you use what modules you use and how you build.and how you build.The short.The short.

Page 35: Bending Open Atrium to your will!

Any thing that uses the Any thing that uses the core `variables` system core `variables` system is supported (via is supported (via strongarm)strongarm)The good.The good.

Page 36: Bending Open Atrium to your will!

Context module does Context module does thatthatWhat about block visibility?What about block visibility?

Page 37: Bending Open Atrium to your will!

I warned you about this I warned you about this tootooWhat is the context module?What is the context module?

Page 38: Bending Open Atrium to your will!

What needs to be What needs to be customized per group?customized per group?Spaces module compatiblity.Spaces module compatiblity.

Page 39: Bending Open Atrium to your will!

Our aggregator doesn’t Our aggregator doesn’t need anything of this.need anything of this.Spaces has a great readme.txtSpaces has a great readme.txt

Page 40: Bending Open Atrium to your will!

Context and Strongarm Context and Strongarm are covered.are covered.Spaces controllers.Spaces controllers.

Page 41: Bending Open Atrium to your will!

Groups & Access Groups & Access ControlControlPart 3.Part 3.

Page 42: Bending Open Atrium to your will!

OG powers OA’s groupsOG powers OA’s groupsOpen Atrium uses Organic Groups.Open Atrium uses Organic Groups.

Page 43: Bending Open Atrium to your will!

OG controls accessOG controls accessOpen Atrium uses Organic Groups to Open Atrium uses Organic Groups to control who can see what.control who can see what.

Page 44: Bending Open Atrium to your will!

This is where people get This is where people get confused. confused. Organic Groups implements Drupal’s Organic Groups implements Drupal’s node_access hooks.node_access hooks.

Page 45: Bending Open Atrium to your will!

node_access is not node_access is not permissionspermissionsThe node access system let’s you control The node access system let’s you control who can view and edit an individual who can view and edit an individual node.node.

Page 46: Bending Open Atrium to your will!

db_rewrite_sql()db_rewrite_sql()The node access system is inforced at The node access system is inforced at the SQL level.the SQL level.

Page 47: Bending Open Atrium to your will!

Don’t worryDon’t worryViews does this for you and it wrote the Views does this for you and it wrote the book on exportable configuration.book on exportable configuration.

Page 48: Bending Open Atrium to your will!

Build it already!Build it already!Part 4.Part 4.

Page 49: Bending Open Atrium to your will!

AggregationAggregationFeedsFeedsFeed itemsFeed itemsDisplaysDisplaysBlock Block visibilityvisibility

feeds (contrib)feeds (contrib)

node (core)node (core)

data (contrib)data (contrib)

views (contrib)views (contrib)

context (contrib)context (contrib)

Page 50: Bending Open Atrium to your will!

No surprisesNo surprisesYou knew this already.You knew this already.

Page 51: Bending Open Atrium to your will!

Exportable and modularExportable and modularWhat they have in common.What they have in common.

Page 52: Bending Open Atrium to your will!

1. Tighten scope1. Tighten scope2. Build in order2. Build in order3. Use features3. Use features

Three steps to a successful feature.Three steps to a successful feature.

Page 53: Bending Open Atrium to your will!

Limited functionality Limited functionality that is useful to people that is useful to people in groupsin groupsTighten scopeTighten scope

Page 54: Bending Open Atrium to your will!

Start with the content Start with the content types, then fields, then types, then fields, then displays.displays.Build in order.Build in order.

Page 55: Bending Open Atrium to your will!

At every stoping point At every stoping point export your changes export your changes into code and commitinto code and commitUse features.Use features.

Page 56: Bending Open Atrium to your will!

atrium_reader.info, atrium_reader.info, atrium_reader.module, atrium_reader.module, access pluginsaccess pluginsHightlightsHightlights

Page 57: Bending Open Atrium to your will!

Pitfalls & ResourcesPitfalls & ResourcesPart 5.Part 5.

Page 58: Bending Open Atrium to your will!

You’ll get burnedYou’ll get burnedSurely I can work around this Surely I can work around this ‘exportables’ requirement.‘exportables’ requirement.

Page 59: Bending Open Atrium to your will!

It’s not obvious the first It’s not obvious the first time you see it.time you see it.I didn’t quite get the node access stuff.I didn’t quite get the node access stuff.

Page 60: Bending Open Atrium to your will!

Don’t forget about View Don’t forget about View access plugin in Spacesaccess plugin in SpacesWhy does the menu icon show up when Why does the menu icon show up when the feature isn’t enabled?the feature isn’t enabled?

Page 61: Bending Open Atrium to your will!

Localization always Localization always comes back to bitecomes back to bite30+ languages, eh?30+ languages, eh?

Page 62: Bending Open Atrium to your will!

Yea, you should be Yea, you should be using l() anyhowusing l() anyhowI didn’t use l() and my links don’t work.I didn’t use l() and my links don’t work.

Page 63: Bending Open Atrium to your will!

community.openatrium.community.openatrium.comcom#open_atrium#open_atrium

ResourcesResources

Page 64: Bending Open Atrium to your will!

Thanks.Thanks.