Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Plone and Drupal: CMS Coexistence in Higher Education

Plone and Drupal: CMS Coexistence in Higher Education

70% of Higher Ed institutions running Plone also use Drupal. While some universities go down the path of consolidating onto one platform, there is another simpler and cheaper option: integrating the two CMSs.

4d1fa184d439599ed301821daec94063?s=128

Calvin Hendryx-Parker

June 20, 2014
Tweet

Transcript

  1. Plone and Drupal: CMS Coexistence in Higher Education Calvin Hendryx-Parker

    CTO June 18th, 2014 #psm14
  2. #psm14 And more...

  3. #psm14

  4. #psm14 Fast forward...

  5. #psm14 Newly spawned websites...

  6. #psm14 Built on various CMS...

  7. #psm14 March 2014 Data 69% COEXISTENCE

  8. #psm14 How do you control web branding, content & infrastructure?

    Source: http://www.jaquesamerica.com
  9. #psm14 Consolidation may be very tempting... Source: http://www.jaquesamerica.com

  10. #psm14 Consolidation

  11. #psm14 Cons... • Expensive: • CMS Evaluation • Migration •

    Bit Rot • Training • Demotivating • Polarizing Credits: http://ekladata.com
  12. #psm14 There is another option...

  13. #psm14 Integration

  14. #psm14 UCLA - Integration http://www.rosebowlstadium.com/teams/detail/ucla

  15. #psm14 • PushHub Implementation: • Pyramid with ZODB • Redis

    • Feedparser • Solr What is PushHub?
  16. #psm14 Standards

  17. 5/15/14 Webinar PHP I can’t believe I’m about to do

    this
  18. #psm14 /** * Implements hook_node_insert(). */ function pushhub_node_insert($node) { if

    ($node->status && $node->promote) { pushhub_notify(array($node->nid), 'shared.xml'); } }
  19. #psm14 /** * Put stuff in the queue */ function

    pushhub_notify($nids, $topic='shared.xml', $timeout=60){ $hub_url = variable_get('pushhub_huburl', 'http://example.com/hub'); Resque::setBackend('localhost:6379'); $headers = array('Content-Type' => 'application/x-www-form-urlencoded'); $topic_url = url("pushhub/" . $topic, array('absolute' => TRUE)); $payload = array('hub.mode' => 'publish', 'hub.url' => $topic_url); $hub_endpoint = $hub_url . "/publish"; # Add the job to the queue Resque::enqueue('default', 'Post', array($hub_endpoint, $payload, $headers, $timeout)); }
  20. #psm14 class Post { public function perform() { $endpoint_url =

    $this->args[0]; $payload = $this->args[1]; $headers = $this->args[2]; $timeout = $this->args[3]; $request = Requests::post($endpoint_url, $headers, $payload, array('timeout' => $timeout)); } }
  21. #psm14 import requests ! ! def post(endpoint, payload, headers, timeout=60):

    response = requests.post( endpoint, data=payload, headers=headers, timeout=timeout) return response.status_code
  22. 5/15/14 Webinar Demo

  23. Check out sixfeetup.com/pushhub

  24. Check out sixfeetup.com/pushhub

  25. Check out sixfeetup.com/pushhub

  26. Check out sixfeetup.com/pushhub

  27. Check out sixfeetup.com/pushhub

  28. Check out sixfeetup.com/pushhub

  29. Check out sixfeetup.com/pushhub

  30. Check out sixfeetup.com/pushhub

  31. Check out sixfeetup.com/pushhub

  32. #psm14 Learn More Download case studies at sixfeetup.com Talk to

    Sixies: Calvin Carol
  33. Check out sixfeetup.com/pushhub