extending and customizing open atrium

37
+967: ;/(; .96> ;/, >,) Antonio De Marco [email protected] Andrea Pescetti [email protected] Beyond the Intranet A new way to look at Open Atrium

Upload: nuvole

Post on 01-Dec-2014

9.730 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Extending and Customizing Open Atrium

Antonio De [email protected]

Andrea [email protected]

Beyond the IntranetA new way to look at Open Atrium

Page 2: Extending and Customizing Open Atrium

Open Atrium is an intranet in a box that has group spaces to allow different teams to have their own conversations. It comes with six features - a blog, a wiki, a calendar, a to do list, a shoutbox, and a dashboard to manage it all.

“Development Seed

Page 3: Extending and Customizing Open Atrium

Part intranet, part do-it-yourself projectwith a kick of open source hotness

Page 4: Extending and Customizing Open Atrium

Part intranet, part do-it-yourself projectwith a kick of open source hotnessfor all tastes: the easygoing and the picky

Page 5: Extending and Customizing Open Atrium

Possibilities

Page 6: Extending and Customizing Open Atrium

Open Atrium out of the box.

Page 7: Extending and Customizing Open Atrium

Open Atrium as a public website.

Page 8: Extending and Customizing Open Atrium

Open Atrium as a fully customized private group.

Page 9: Extending and Customizing Open Atrium

Open Atrium as a social network.

Page 10: Extending and Customizing Open Atrium

Open Atrium as a file manager.

Page 11: Extending and Customizing Open Atrium

Open Atrium as you like it.

Page 12: Extending and Customizing Open Atrium

Technologies

Page 13: Extending and Customizing Open Atrium

Features

A feature is a collection of Drupal entities (views, contexts, fields, etc...) which taken

together satisfy a certain use-case.

http://drupal.org/project/features

Page 14: Extending and Customizing Open Atrium

Spaces

A way to make one Drupal site act like several sites.

http://drupal.org/project/spaces

Page 15: Extending and Customizing Open Atrium

Persistent URL

A helper for other modules interested in using elements of the page request to sustain

information between pages.

http://drupal.org/project/purl

PURL

Page 16: Extending and Customizing Open Atrium

Organic Groups

Enable users to create and manage their own groups.

http://drupal.org/project/og

OG

Page 17: Extending and Customizing Open Atrium

Recipes

Page 18: Extending and Customizing Open Atrium

How toAdd custom user profile fields

Page 19: Extending and Customizing Open Atrium

core = "6.x"dependencies[] = "features"dependencies[] = "text"description = "Custom profile feature."features[content][] = "profile-field_profile_city"features[content][] = "profile-field_profile_country"name = "Custom Profile"package = "Features"project = "custom_profile"version = "6.x-1.0"

custom_profile.info

Page 20: Extending and Customizing Open Atrium

How toOverride Atrium's core configuration

Page 21: Extending and Customizing Open Atrium

core = "6.x"dependencies[] = "book"dependencies[] = "codefilter"...

description = "Atrium sitewide settings and configuration."...features[variable][] = "upload_uploadsize_default"features[variable][] = "upload_usersize_default"features[variable][] = "user_picture_default"...name = "Atrium"package = "Atrium"

atrium.info

Page 22: Extending and Customizing Open Atrium

<?php/*** Implementation of hook_strongarm_alter()*/function custom_profile_strongarm_alter(&$items) {  if (isset($items['user_picture_default'])) {    $items['user_picture_default']->value = 'sites/.../user.png';  }}?>

hook_strongarm_alter()

Page 23: Extending and Customizing Open Atrium

Feature's component alter hooks

Page 24: Extending and Customizing Open Atrium

Hooks to modify components defined by other features. These come in the formhook_COMPONENT_alter where COMPONENT is the default_hook declared by any ofcomponents within features.

CTools also has a variety of hook_FOO_alters.

features.api.php

Page 25: Extending and Customizing Open Atrium

How toAlter contexts at run-time

Page 26: Extending and Customizing Open Atrium

/*** Implementation of hook_context_load_alter().*/function spaces_context_load_alter(&$context) {  $space = spaces_get_space();  if ($space) {    foreach (array_keys(context_reactions()) as $plugin) {      $override = $space->controllers

->context ->get("{$context->name}:reaction:{$plugin}");

      if (!is_null($override)) {        $context->reactions[$plugin] = $override;      }    }  }}

Page 27: Extending and Customizing Open Atrium

How toRemove the Welcome video block

Page 28: Extending and Customizing Open Atrium
Page 29: Extending and Customizing Open Atrium

<?php/*** Implementation of hook_spaces_presets_alter()*/function custom_group_spaces_presets_alter(&$items) {  // Store a reference to our target block section.  $blocks = &$items['atrium_groups_private']->value['context']['spaces_dashboard-custom-1:reaction:block']['blocks'];    // Remove "Welcome" block.  unset($blocks['atrium-welcome_member']);  // Add "Latest discussions" block.  $blocks['views-blog_listing-block_1'] = array(    'module' => 'views',    'delta' => 'blog_listing-block_2',    'region' => 'content',    'weight' => 1,  );}?>

hook_spaces_presets_alter()

Page 30: Extending and Customizing Open Atrium

$ drush featuresName                 Feature              Status    State        Atrium               atrium               Enabled   Overridden   Atrium Blog          atrium_blog          Enabled      Atrium Notebook      atrium_book          Enabled                Atrium Calendar      atrium_calendar      Enabled                Atrium Case Tracker  atrium_casetracker   Enabled                Atrium Groups        atrium_groups        Enabled   Overridden   Atrium Members       atrium_members       Enabled     Atrium Profile       atrium_profile       Enabled  

...but Upgrade-safe

Overridden...

Page 31: Extending and Customizing Open Atrium

How toCreate custom group types

Page 32: Extending and Customizing Open Atrium

core = "6.x"dependencies[] = "atrium_news"dependencies[] = "atrium_pages"dependencies[] = "context"dependencies[] = "menu"dependencies[] = "spaces"features[context][] = "layout_portal"features[ctools][] = "context:context:3"features[ctools][] = "spaces:spaces:3"features[menu_custom][] = "menu-portal"features[menu_links][] = "menu-portal:calendar"features[menu_links][] = "menu-portal:dashboard"features[spaces_presets][] = "atrium_portal"name = "atrium_portal"package = "Features"

atrium_portal.info

Page 33: Extending and Customizing Open Atrium

Custom feature set

Page 34: Extending and Customizing Open Atrium

/*** Implementation of hook_spaces_presets().*/function atrium_portal_spaces_presets() {

...'spaces_features' => array(  'atrium_blog' => '0',  'atrium_book' => '0',  'atrium_calendar' => '1',  'atrium_casetracker' => '0',  'atrium_members' => '0',  'atrium_news' => '1',  'atrium_pages' => '1',  'atrium_shoutbox' => '0',  'spaces_dashboard' => '1',),...

atrium_portal.spaces.inc

Page 35: Extending and Customizing Open Atrium

Custom dashboard context

Page 36: Extending and Customizing Open Atrium

/*** Implementation of hook_spaces_presets().*/function atrium_portal_spaces_presets() {

...

'context' => array(  'spaces_dashboard-custom-1:reaction:block' => array(    'blocks' => array(      'views-atrium_news-block_3' => array(        'module' => 'views',        'delta' => 'atrium_news-block_3',        'region' => 'content',        'weight' => 0,      ),      'views-calendar_listing-block_1' => array(        'module' => 'views',        'delta' => 'calendar_listing-block_1',        'region' => 'right',        'weight' => 0,      ),    ),  ),

atrium_portal.spaces.inc

Page 37: Extending and Customizing Open Atrium

http://nuvole.org

Thank You.