Bending Open Atrium to your will!


Published on

Published in: Technology
  • Be the first to comment

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

No notes for slide

Bending Open Atrium to your will!

  1. 1. Bending Open Atrium to your will! Jeff Miccolis, Development Seed
  2. 2. Bending Open Atrium to your will! Twitter: @miccolis, @developmentseed
  3. 3. Open Atrium Co-maintainer Twitter: @open_atrium
  4. 4. Give you want you need to write your own feature. My goal.
  5. 5. There is a lot to know! My worry.
  6. 6. Expose you to the hard problems My approach.
  7. 7. Pretend you‟re all *nix users My approach.
  8. 8. ...that you know Drupal My approach.
  9. 9. ...and that you‟ve used features and context before My approach.
  10. 10. 1. Quick overview of OA 2. Configuration 3. Groups & access control 4. Building a new feature 5. Pitfalls & resources. Agenda.
  11. 11. Quick overview Part 1.
  12. 12. What Open Atrium does already.
  13. 13. quick demo.
  14. 14. French Hebrew Hungarian Portuguese / Portugal Swedish Spanish Russian 30+ languages Catalan Arabic Danish Brazilian Portuguese Italian Japanese German
  15. 15. Time tracking! A “real” wiki! Maps! Gantt Charts! Solr powered search! Alfresco powered DM! News Aggregation! The kinds of features you can add.
  16. 16. News Aggregation! The feature we‟ll add today.
  17. 17. RSS+ATOM Feeds per-group Three categories Atrium Reader r
  18. 18. quick demo.
  19. 19. People organized into groups. How Open Atrium expects to be used.
  20. 20. Is your feature useful to people organized into groups? Question.
  21. 21. Yes, we‟re twitter junkies. Answer.
  22. 22. Configuration Part 2.
  23. 23. What modules will we use? Getting technical.
  24. 24. Where does module X store its configuration? Features module compatiblity.
  25. 25. I warned you about this What is the features module?
  26. 26. Your configuration needs to be automatic. Why exportables?
  27. 27. You cannot trust a sequential id! Exportables are crucial.
  28. 28. The `term_data.tid` problem You cannot use taxonomy for architecture.
  29. 29. Alex: sets up Open Atrium Alex: makes a “Important” tag Alex: builds a View with a term filter Alex: bundles it into a feature Tom: sets up Open Atrium Tom: posts a blog with a tag, “drupal” Tom: downloads Alex‟s feature Tom: has issues...
  30. 30. “Alex! Your feature hides anything I tag as IMPORTANT! WTF!?!” A term‟s creation order determines its sequential id. You‟ve got not control.
  31. 31. No. Is there a good work around?
  32. 32. Exportables will guide what modules you use and how you build. The short.
  33. 33. Any thing that uses the core `variables` system is supported (via strongarm) The good.
  34. 34. Context module does that What about block visibility?
  35. 35. I warned you about this too What is the context module?
  36. 36. What needs to be customized per group? Spaces module compatiblity.
  37. 37. Our aggregator doesn‟t need anything of this. Spaces has a great readme.txt
  38. 38. Context and Strongarm are covered. Spaces controllers.
  39. 39. Groups & Access Control Part 3.
  40. 40. OG powers OA‟s groups Open Atrium uses Organic Groups.
  41. 41. OG controls access Open Atrium uses Organic Groups to control who can see what.
  42. 42. This is where people get confused. Organic Groups implements Drupal‟s node_access hooks.
  43. 43. node_access is not permissions The node access system let‟s you control who can view and edit an individual node.
  44. 44. db_rewrite_sql() The node access system is inforced at the SQL level.
  45. 45. Don‟t worry Views does this for you and it wrote the book on exportable configuration.
  46. 46. Build it already! Part 4.
  47. 47. Aggregation feeds (contrib) Feeds node (core) Feed items data (contrib) Displays views (contrib) Block visibility context (contrib)
  48. 48. No surprises You knew this already.
  49. 49. Exportable and modular What they have in common.
  50. 50. 1. Tighten scope 2. Build in order 3. Use features Three steps to a successful feature.
  51. 51. Limited functionality that is useful to people in groups Tighten scope
  52. 52. Start with the content types, then fields, then displays. Build in order.
  53. 53. At every stoping point export your changes into code and commit Use features.
  54. 54., atrium_reader.module, access plugins Hightlights
  55. 55. Pitfalls & Resources Part 5.
  56. 56. You‟ll get burned Surely I can work around this „exportables‟ requirement.
  57. 57. It‟s not obvious the first time you see it. I didn‟t quite get the node access stuff.
  58. 58. Don‟t forget about View access plugin in Spaces Why does the menu icon show up when the feature isn‟t enabled?
  59. 59. Localization always comes back to bite 30+ languages, eh?
  60. 60. Yea, you should be using l() anyhow I didn‟t use l() and my links don‟t work.
  61. 61. m #open_atrium Resources
  62. 62. Thanks.