<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog: Raised Eyebrow Web Studio, Inc. &#187; Our Clients</title>
	<atom:link href="http://blog.raisedeyebrow.com/category/raised-eyebrow/our-clients/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.raisedeyebrow.com</link>
	<description>What's turning heads at Raised Eyebrow</description>
	<lastBuildDate>Thu, 15 Jul 2010 15:19:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Drupal to deliver video</title>
		<link>http://blog.raisedeyebrow.com/2009/12/using-drupal-to-deliver-video/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-drupal-to-deliver-video</link>
		<comments>http://blog.raisedeyebrow.com/2009/12/using-drupal-to-deliver-video/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 17:11:51 +0000</pubDate>
		<dc:creator>Colin Calnan</dc:creator>
				<category><![CDATA[Code and Coding]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Nonprofit Tech]]></category>
		<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=103</guid>
		<description><![CDATA[There are many ways to skin the cat when it comes to putting video on a Drupal site. I&#8217;ve tried and tested quite a few methods since my first introduction to Drupal 2 years ago. I&#8217;ve used Embedded Media Field as well as Video Filter but finally settled on the combination of FileField with JWPlayer [...]]]></description>
			<content:encoded><![CDATA[<p>There are many ways to skin the cat when it comes to putting video on a Drupal site. I&#8217;ve tried and tested quite a few methods since my first introduction to Drupal 2 years ago. I&#8217;ve used <a href="http://drupal.org/project/emfield">Embedded Media Field </a>as well as <a href="http://drupal.org/project/video_filter">Video Filter</a> but finally settled on the combination of <a href="http://drupal.org/project/filefield">FileField</a> with <a href="http://www.longtailvideo.com/players/jw-flv-player/">JWPlayer</a> or <a href="http://flowplayer.org/">Flowplayer</a> and in some cases the <a href="http://drupal.org/project/media_mover">Media Mover Module</a> for moving files to <a href="http://aws.amazon.com/s3/">Amazon S3</a> storage. I&#8217;m going to use our recent launch of the <a href="http://www.policyalternatives.ca">CCPA website</a> as a case study for how we currently handle video delivery. So let&#8217;s dissect this a little.</p>
<h3>Uploading files</h3>
<p>The video files need to be uploaded before we display them. This is best achieved using the wonderful <a href="http://drupal.org/project/filefield">Filefield</a> Module. This is quite a simple yet powerful module developed/maintained by <a href="http://www.lullabot.com/">Lullabot</a>, <a href="http://quicksketch.org/">Nate Haug</a> (<a href="http://drupal.org/user/35821">quicksketch</a>), whom I&#8217;ve had the pleasure of being trained by at one of their excellent Drupal Theming workshops. Once you install and enable the module you then add a new CCK field, of type &#8220;filefield&#8221;. In our case we have a content type called &#8220;Multimedia&#8221;. We add the field to this content type. You then need to configure the following:</p>
<h4>1. Permitted upload file extensions</h4>
<p style="padding-left: 30px;">In most cases this is relatively straightforward, it&#8217;s just one file type. If you&#8217;re using JWPlayer or Flowplayer it will be FLV. Both these players are built to play Flash Video files (FLV). If you have Quicktime MOV&#8217;s or AVI&#8217;s that you want to upload then you&#8217;ll need to consider different options for playing video. For the purpose of this case study we&#8217;re just uploading FLV files.</p>
<p style="padding-left: 30px;">
<h4>2. File size restrictions</h4>
<p style="padding-left: 30px;">It&#8217;s very important that you set these, otherwise you may end up with users trying to upload 200MB videos, not a very good idea. I set this low as a learning feature for clients. Any reasonably long FLV file that is over 40MB is probably not optimized as well as it should be.</p>
<p style="padding-left: 30px;">
<h4>3. Path Settings</h4>
<p style="padding-left: 30px;">I like to keep all files that admin/editor users upload in a folder called <strong>uploads</strong> so that it&#8217;s easy to manage them later if they need to be exported etc.</p>
<p style="padding-left: 30px;">
<div id="attachment_729" class="wp-caption aligncenter" style="width: 398px"><a href="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-video-admin.gif"><img class="size-full wp-image-729" title="File Field" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-video-admin.gif" alt="File Field" width="388" height="576" /></a><p class="wp-caption-text">Multimedia File Field Settings</p></div>
<p style="padding-left: 30px; text-align: center;">
<h3>Create a placeholder image</h3>
<p>Most video players require some sort of poster/placeholder image to display before the video plays. In this case I created another FileField for the placeholder image. We&#8217;ll use that later on in conjunction with the <a href="http://ftp.drupal.org/files/projects/imagecache-6.x-2.0-beta9.tar.gz">ImageCache module</a> to achieve our desired results.</p>
<h3>Moving Files to Amazon S3</h3>
<p>We&#8217;ve been using Amazon S3 for storing video files on quite a number of sites recently. One reason is that we were looking for a location off the webserver that could deliver the video, without impacting the performance of the server, so that in the event of a traffic spike the webserver wouldn&#8217;t fall over. We could also have used Amazon EC2 or another CDN service for this, however as most of our clients have a very regional (BC) audience. Most CDN&#8217;s have nodes in various locations across the US and Europe and this would have served no real improvement as the nearest cached version will always be in the same place for everyone.</p>
<p>So if they&#8217;re uploading the files directly to the Drupal site, how to the files get delivered from Amazon S3. That&#8217;s where the <a href="http://drupal.org/project/media_mover">Media Mover module</a> comes in. This module has many purposes, but for our needs it simply harvests all the files uploaded via the &#8220;Multimedia&#8221; content type and moves those files to Amazon S3 so that we can deliver them from there.</p>
<p>Download, install and enable the Media Mover module. You&#8217;ll also need an S3 account and will need to set that up via the module setting page. You then need to add a Configuration via https://www.yoursite.ca/admin/build/media_mover/add.</p>
<p>Media Mover has 4 actions which it performs on your files:</p>
<ul>
<li>Harvest &#8211; Define/collect the files you want to perform actions on</li>
<li>Process &#8211; Perform certain actions on the files</li>
<li>Storage &#8211; Where to store files once the actions have been carried out</li>
<li>Complete &#8211; Final actions to perform on the files</li>
</ul>
<p>So in this case we just want to <strong>harvest</strong> all Multimedia files and <strong>store</strong> them on Amazon S3.</p>
<p>So for clarification here Media Mover does <strong>NOT MOVE</strong> the files to Amazon S3, it simply <strong>COPIES</strong> them over to S3 and the original files remain on your server.</p>
<div id="attachment_730" class="wp-caption aligncenter" style="width: 399px"><a href="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-media-mover-settings.gif"><img class="size-full wp-image-730" title="Media Mover Settings" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-media-mover-settings.gif" alt="Media Mover Settings" width="389" height="572" /></a><p class="wp-caption-text">Media Mover Settings</p></div>
<p style="text-align: center;">
<h3>Delivering the moved Video files</h3>
<p>So this is where the Drupal theming trickery comes in. Flowplayer and JWPlayer are both Flash based FLV video players than can be called using Javascript and that&#8217;s exactly what I do on this site. In plain english this is what happens:</p>
<ol>
<li>Output the placeholder image to screen as a link.</li>
<li>Use Javascript so that when the user clicks on the image the video plays.</li>
<li>Deliver the video from the file on Amazon S3 rather than the file on the webserver (Drupal site).</li>
</ol>
<p>We need to modify three files to achive the above:</p>
<ul>
<li>template.php</li>
<li>multimedia.js (a newly created JS file)</li>
<li>node-multimedia.tpl.php (a custom template file for all multimedia types)</li>
</ul>
<h4>template.php file</h4>
<p>Setting up all the variables we&#8217;re going to need to use as well as making the javascript available</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code7'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1037"><td class="code" id="p103code7"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'view'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//If there is a file and there is something to display...</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_aspect_ratio'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//Aspect ratio handling</span>
    <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aspect_ratio'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_aspect_ratio'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aspect_ratio'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'normal'</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'multimedia_type'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'video'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Set the type of multimedia - we also have audio and interactive...</span>
  custom_theme_get_media_mover_files<span style="color: #009900;">&#40;</span><span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'media_mover'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Set the filepath to the media moved filepath...</span>
  drupal_add_js<span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'videoplayerpath'</span> <span style="color: #339933;">=&gt;</span> path_to_theme<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'/scripts/plugins/flowplayer/flowplayer-3.1.1.swf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'setting'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Set a JS variable to retrieve later...</span>
  drupal_add_js<span style="color: #009900;">&#40;</span>path_to_theme<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'/scripts/plugins/flowplayer/example/flowplayer-3.1.1.min.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'theme'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Call the player...</span>
  drupal_add_js<span style="color: #009900;">&#40;</span>path_to_theme<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'/scripts/multimedia.js'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'theme'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//Call the custom JQuery to handle creating the player...</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * A function that takes a file object and a media_mover element array and set the file path to
 * its media moved path on Amazon S3 or wherever it moved to.
 *
 * It uses the unique file_id identifier to match file with media_mover file.
 *
 * $file = $variables['file_image'][0];
 * $media_mover = $variables['media_mover'][{id of media mover configuration}];
 *
 * @param 		&amp;$file A Drupal file array (by reference)
 * @param 		$media_mover A media_mover file/element array
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> custom_theme_get_media_mover_files<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #000088;">$media_mover</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>module_exists<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'media_mover_api'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$media_mover</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// If media mover is installed...</span>
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$media_mover</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$media</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// Loop through each media_moved file...</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$media</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fid'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fid'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// If they match (file id is a unique identifier...</span>
        <span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$media</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'complete_file'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Replace the attached file path with the media moved file path...</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// custom_theme_get_media_mover_files()</span></pre></td></tr></table></div>

<p>Let me explain one thing in regards to line 9. I&#8217;ve created a custom function and I&#8217;m passing</p>
<pre>$variables['media_mover'][3]</pre>
<p>to my custom function. When you create a Media Mover configuration and map it to a CCK field, it creates an array in $variables to keep track of the Media Mover object. The array is called <strong>&#8216;media_mover&#8217;</strong> and the number <strong>3</strong> in this case is the ID of the Media Mover configuration.</p>
<h4>node-multimedia.tpl.php</h4>
<p>Set up the template. Create a wrapper div with the placeholder image as the background image (this is run through imagecache) and display the play button as a link with the path set to the path of the Amazon S3 file. This link will also have an id attribute of<strong> &#8216;multimedia&#8217;</strong>. This is necessary as it allows us to attach the player, via Javascript, to this link.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code8'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1038"><td class="code" id="p103code8"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;containing-block&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;video-wrapper&quot;</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&lt;?php print <span style="color: #006699; font-weight: bold;">$aspect_ratio</span>;?&gt;&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> ?php <span style="color: #b1b100;">print</span> l<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;img src=&quot;/'</span><span style="color: #339933;">.</span>path_to_theme<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/images/ccpa-button-play-large.png&quot; alt=&quot;Play this video&quot; /&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$field_file</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'html'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'attributes'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'multimedia'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$multimedia_type</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<h4>multimedia.js file</h4>
<p>Hook the Flowplayer to the link, with id  of &#8216;multimedia&#8217;, that we created in the template.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code9'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1039"><td class="code" id="p103code9"><pre class="javascript" style="font-family:monospace;">Drupal.<span style="color: #660066;">behaviors</span>.<span style="color: #660066;">showMultimedia</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> interactive_path <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#multimedia'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'href'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009966; font-style: italic;">/*Get the path to the video*/</span>
  <span style="color: #003366; font-weight: bold;">var</span> interactive_image <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#multimedia'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background-image'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #009966; font-style: italic;">/*Get the path to the placeholder image*/</span>
  interactive_image <span style="color: #339933;">=</span> interactive_image.<span style="color: #660066;">slice</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span>interactive_image.<span style="color: #660066;">length</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">/*Tidying up the interactive image path*/</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#multimedia'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hasClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'video'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #006600; font-style: italic;">/*If the link has a class of video*/</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#multimedia'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">flowplayer</span><span style="color: #009900;">&#40;</span> <span style="color: #009966; font-style: italic;">/*Initialize the flowplayer and configure the controls*/</span>
    Drupal.<span style="color: #660066;">settings</span>.<span style="color: #660066;">basePath</span> <span style="color: #339933;">+</span> Drupal.<span style="color: #660066;">settings</span>.<span style="color: #660066;">videoplayerpath</span><span style="color: #339933;">,</span> <span style="color: #009966; font-style: italic;">/*Path to the player, gotten from temaplate.php*/</span>
    <span style="color: #009900;">&#123;</span>
      plugins<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
	controls<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
	  <span style="color: #000066;">stop</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	  backgroundColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#efefef'</span><span style="color: #339933;">,</span>
	  backgroundGradient<span style="color: #339933;">:</span> <span style="color: #3366CC;">'none'</span><span style="color: #339933;">,</span>
	  borderRadius<span style="color: #339933;">:</span> <span style="color: #3366CC;">'0px'</span><span style="color: #339933;">,</span>
	  bufferColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#d2d6ab'</span><span style="color: #339933;">,</span>
	  bufferGradient<span style="color: #339933;">:</span> <span style="color: #3366CC;">'none'</span><span style="color: #339933;">,</span>
	  buttonColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#777777'</span><span style="color: #339933;">,</span>
	  buttonOverColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#99a134'</span><span style="color: #339933;">,</span>
	  durationColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#cccccc'</span><span style="color: #339933;">,</span>
	  height<span style="color: #339933;">:</span> <span style="color: #CC0000;">25</span><span style="color: #339933;">,</span>
	  opacity<span style="color: #339933;">:</span> <span style="color: #CC0000;">1.0</span><span style="color: #339933;">,</span>
	  progressColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#99a134'</span><span style="color: #339933;">,</span>
	  sliderColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#9999999'</span><span style="color: #339933;">,</span>
	  sliderGradient<span style="color: #339933;">:</span> <span style="color: #3366CC;">'none'</span><span style="color: #339933;">,</span>
	  timeBgColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#777777'</span><span style="color: #339933;">,</span>
	  timeColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#ffffff'</span><span style="color: #339933;">,</span>
	  tooltipColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#000000'</span><span style="color: #339933;">,</span>
	  tooltipTextColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#ffffff'</span><span style="color: #339933;">,</span>
	  volumeSliderColor<span style="color: #339933;">:</span> <span style="color: #3366CC;">'#777777'</span><span style="color: #339933;">,</span>
	  volumeSliderGradient<span style="color: #339933;">:</span> <span style="color: #3366CC;">'none'</span>
	<span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>I hope that was easy to follow. Now there&#8217;s one more thing to cover and that&#8217;s <strong>Aspect Ratio.</strong></p>
<h3>Aspect Ratio</h3>
<p>The issue of aspect ratio is very important when figuring out how to display video. Not so recently YouTube switched all video display to the 16:9 ratio thus setting the stage for the proliferation of the widescreen aspect ratio across the web. So how do you allow the user to upload a video and choose it&#8217;s aspect ratio. I&#8217;m sure there are other ways to do this via Metadata etc, but for our needs on this site I used a CCK field. This is a simple CCK field set with three options:</p>
<ol>
<li>None (defaults to 4:3)</li>
<li>Normal (4:3)</li>
<li>Widescreen (16:9)</li>
</ol>
<div id="attachment_753" class="wp-caption aligncenter" style="width: 396px"><a href="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-aspect-ratio.gif"><img class="size-full wp-image-753" title="ccpa-aspect-ratio" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-aspect-ratio.gif" alt="ccpa-aspect-ratio" width="386" height="487" /></a><p class="wp-caption-text">Aspect Ratio Field Settings</p></div>
<p style="text-align: center;">
<p>We then check the value of this field in <strong>template.php</strong> above:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code10'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10310"><td class="code" id="p103code10"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_aspect_ratio'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//Aspect ratio handling</span>
    <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aspect_ratio'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'field_aspect_ratio'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$variables</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aspect_ratio'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'normal'</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>and set a variable called &#8216;aspect_ratio&#8221; which we apply as a class to the div wrapping the video in the <strong>node-multimedia.tpl.php</strong>:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code11'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10311"><td class="code" id="p103code11"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;containing-block&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;video-wrapper&quot;</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&lt;?php print <span style="color: #006699; font-weight: bold;">$aspect_ratio</span>;?&gt;&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">print</span> l<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;img src=&quot;/'</span><span style="color: #339933;">.</span>path_to_theme<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/images/ccpa-button-play-large.png&quot; alt=&quot;Play this video&quot; /&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$field_file</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'filepath'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'html'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'attributes'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'multimedia'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$multimedia_type</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>We have also created <strong>image cache presets</strong> for the placeholder images to account for both aspect ratios. These are named &#8216;multimedia_normal&#8217; and &#8216;multimedia_widescreen&#8217; and these have the appropriate dimensions associated with them:</p>
<div id="attachment_760" class="wp-caption aligncenter" style="width: 441px"><a href="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-imagecache-presets.gif"><img class="size-full wp-image-760" title="ccpa-imagecache-presets" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-imagecache-presets.gif" alt="ccpa-imagecache-presets" width="431" height="79" /></a><p class="wp-caption-text">Image Cache Presets</p></div>
<p style="text-align: center;">So using the <a href="http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/">amazing article on A List Apart for creating intrinsic ratios for video</a> we use CSS to resize the player based on the aspect ratio chosen by the user.</p>
<h4>style.css file</h4>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p103code12'); return false;">View Code</a> CSS</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10312"><td class="code" id="p103code12"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* -- Multimedia -- */</span>
<span style="color: #cc00cc;">#containing-</span><span style="color: #993333;">block</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#video-wrapper</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #cc00cc;">#video-wrapper</span> div<span style="color: #00AA00;">,</span>
  <span style="color: #cc00cc;">#video-wrapper</span> <span style="color: #993333;">embed</span><span style="color: #00AA00;">,</span>
  <span style="color: #cc00cc;">#video-wrapper</span> object <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #cc00cc;">#video-wrapper</span>.<span style="color: #993333;">normal</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">75%</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #cc00cc;">#video-wrapper</span><span style="color: #6666ff;">.widescreen</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">padding-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">56.25%</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #00AA00;">*</span> html <span style="color: #cc00cc;">#video-wrapper</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">margin-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">45px</span><span style="color: #00AA00;">;</span>
    margin-bot\tom<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#video-wrapper</span> <span style="color: #cc00cc;">#multimedia</span><span style="color: #6666ff;">.audio</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #933;">1em</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">100%</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#video-wrapper</span> <span style="color: #cc00cc;">#multimedia</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #cc00cc;">#video-wrapper</span>.<span style="color: #993333;">normal</span> <span style="color: #cc00cc;">#multimedia</span> img <span style="color: #00AA00;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/*margin:118.5px 0 0;*/</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #933;">32%</span> <span style="color: #933;">42%</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span>
&nbsp;
  <span style="color: #cc00cc;">#video-wrapper</span><span style="color: #6666ff;">.widescreen</span> <span style="color: #cc00cc;">#multimedia</span> img <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #933;">22%</span> <span style="color: #933;">41%</span><span style="color: #00AA00;">;</span>
  <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>And the end result looks something like this <a href="http://www.policyalternatives.ca/multimedia/matthew-poverty-and-looking-after-each-other-tough-times">http://www.policyalternatives.ca/multimedia/matthew-poverty-and-looking-after-each-other-tough-times</a>. They haven&#8217;t added any widescreen content yet, just testing content.</p>
<h4>So what are the advantages of doing things this way?</h4>
<ol>
<li>You can easily use any player to play your flash files (all you need to do  is change the path to your player and a few configuration params in multimedia.js)</li>
<li>All your video content is hosted on and delivered from Amazon S3. But there is also a copy on your local server in the event of something going wrong on Amazon S3</li>
<li>You don&#8217;t have to worry about your video looking skewed due to aspect ratio problems</li>
<li>You can add many other apsect ratios pretty quickly</li>
<li>The video file is still downloadable when javascript is not present or disabled</li>
</ol>
<p>I&#8217;d love to get feedback on how other do this, please leave a comment or send me an email and let me know how you deliver Video content on your site.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/12/using-drupal-to-deliver-video/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Launched: PolicyAlternatives.ca</title>
		<link>http://blog.raisedeyebrow.com/2009/12/ccpa-launch/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ccpa-launch</link>
		<comments>http://blog.raisedeyebrow.com/2009/12/ccpa-launch/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 16:58:03 +0000</pubDate>
		<dc:creator>Lauren Bacon</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Nonprofit Tech]]></category>
		<category><![CDATA[Online Strategy]]></category>
		<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>
		<category><![CDATA[CCPA]]></category>
		<category><![CDATA[data migration]]></category>
		<category><![CDATA[document library]]></category>
		<category><![CDATA[publications]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=708</guid>
		<description><![CDATA[We are very proud to unveil a project we&#8217;ve been working on for several months now: a redesign of policyalternatives.ca, the online home of the Canadian Centre for Policy Alternatives. Canada&#8217;s leading progressive research institute, the CCPA is a prolific publisher of reports and studies, books, articles, commentary and fact sheets on issues ranging from [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-721" title="Redesigned CCPA home page" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/12/ccpa-home-300x184.jpg" alt="Redesigned CCPA home page" width="300" height="184" />We are very proud to unveil a project we&#8217;ve been working on for several months now: a redesign of <a href="http://www.policyalternatives.ca">policyalternatives.ca</a>, the online home of the Canadian Centre for Policy Alternatives. Canada&#8217;s leading progressive research institute, the CCPA is a prolific publisher of <a href="http://www.policyalternatives.ca/publications/reports">reports and studies</a>, <a href="http://www.policyalternatives.ca/publications/bookstore">books</a>, <a href="http://www.policyalternatives.ca/publications/monitor">articles</a>, <a href="http://www.policyalternatives.ca/publications/commentary">commentary and fact sheets</a> on issues ranging from income equality to environmental policy, privatization of public services, and beyond.</p>
<p>They are highly respected, but like many organizations working towards policy change, they don&#8217;t always reach as broad an audience as they might hope; not many people have the time and inclination to read an in-depth research report, so in recent years they have been creating more bite-sized, easy-to-digest content in both written and <a title="CCPA Multimedia Studio" href="http://www.policyalternatives.ca/multimedia">multimedia</a> formats. As the range of content has grown, though, so has the need to cross-reference related materials &#8212; so the CCPA&#8217;s website needed to both invite visitors to browse through an extensive library in an intuitive and approachable way, but also allow people seeking more in-depth content to locate related materials quickly and easily. (One of our developers describes the complex interrelationships between the CCPA&#8217;s publications as &#8220;like Facebook for documents.&#8221;)</p>
<p>Their five year-old website, although rich in content and highly trafficked, didn&#8217;t offer visitors any way to easily share the CCPA&#8217;s content with their social networks, whether through Facebook or Twitter, or even through their own publications, blogs or presentations. Exchange of ideas is the CCPA&#8217;s raison d&#8217;etre, so it stands to reason that above and beyond extending the website&#8217;s &#8220;share this&#8221; features, the organization would benefit from encouraging online visitors to <a title="CCPA terms of (re)use" href="http://www.policyalternatives.ca/terms">use and share its content</a> &#8212; and they do, using a <a href="http://creativecommons.org/">Creative Commons</a> license.</p>
<p>This project was a complex one on several fronts, as we wrestled with improving navigation through the site (both via menus and site links as well as with improved <a href="http://www.policyalternatives.ca/search">search tools</a>); updating the site&#8217;s look and feel; and migrating the extensive site content (along with the aforementioned relationships between content items) from a commercial CMS platform into Drupal.</p>
<p>Oh, and we also set up a shopping cart (for books, memberships, donations and journal subscriptions).</p>
<p>There&#8217;s a real sense of accomplishment here at Raised Eyebrow when we look at the final result, but of course on the web, there&#8217;s no such thing as a final edit. Our best hope, in fact, is that we&#8217;ve helped to create a solid platform upon which the CCPA can continue to build and extend over the coming years. So while right now we are celebrating the grand opening, the real fun in some ways is still to come. I&#8217;m sure we&#8217;ll see the CCPA continue to play a leadership role when it comes to presenting research online in accessible and innovative ways.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/12/ccpa-launch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Big Reveal: Recent Launches at Raised Eyebrow</title>
		<link>http://blog.raisedeyebrow.com/2009/10/big-reveal/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=big-reveal</link>
		<comments>http://blog.raisedeyebrow.com/2009/10/big-reveal/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 22:52:02 +0000</pubDate>
		<dc:creator>Lauren Bacon</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Nonprofit Tech]]></category>
		<category><![CDATA[Our Clients]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=311</guid>
		<description><![CDATA[The past few weeks have been quiet here on our blog, and as often happens, that silence has been an indicator of just how busy things have been here at Raised Eyebrow headquarters. We&#8217;ve been putting the final touches on some exciting new websites that we&#8217;re very proud to share with the world. Two major [...]]]></description>
			<content:encoded><![CDATA[<p>The past few weeks have been quiet here on our blog, and as often happens, that silence has been an indicator of just how busy things have been here at Raised Eyebrow headquarters. We&#8217;ve been putting the final touches on some exciting new websites that we&#8217;re very proud to share with the world. Two major redesigns have just launched &#8211; one for a wonderful nonprofit group here in British Columbia and the other for a foundation that&#8217;s changing the face of lung cancer research across the United States.</p>
<p><a href="http://deafchildren.bc.ca/"><img class="alignleft size-full wp-image-625" title="Deaf Children's Society of BC - home page" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/10/dcs-1.jpg" alt="Deaf Children's Society of BC - home page" width="255" height="220" /></a><a href="http://deafchildren.bc.ca/">The Deaf Children&#8217;s Society of BC</a> offers programs, support and resources for families of young children with hearing challenges that range from parent groups for new parents of deaf or hard of hearing infants, preschool and summer programs for young kids, to a library and bookstore where families can access print resources. Their small staff includes several speech-language pathologists and sign language instructors, and they came to us looking to extend the reach of the services they are able to offer through the web. We helped them extend their resources online through the use of instructional videos for new parents to learn sign language that can then be used with their children as they develop language and reading skills.</p>
<p>The new website is a clean but cheerful home for their fun, informative, instructional videos as well as detailed information about the society&#8217;s programs and services. Parents can learn sign language in child-sized portions &#8211; with signs grouped in themes like animals, colours, numbers, and of course the alphabet, which they can then use to help their young children with developing language skills.</p>
<p><a href="http://www.unitingagainstlungcancer.org/"><img class="alignright size-full wp-image-626" title="Uniting Against Lung Cancer home page" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/10/uniting-1.jpg" alt="Uniting Against Lung Cancer home page" width="255" height="220" /></a><a href="http://www.unitingagainstlungcancer.org/">Uniting Against Lung Cancer</a> is a nonprofit foundation that formed in 2001 as Joan&#8217;s Legacy, in honour of 47 year-old New Yorker Joan Scarangello McNeive, who never smoked, but died after a valiant battle with lung cancer. Her family and friends rallied and established the foundation to fund research and raise awareness about the disease; over the years it has attracted partnerships with other family foundations, and now Uniting Against Lung Cancer serves as a connector for groups across the United States who are raising awareness and funds. To date, the foundation and its partners have awarded over $6 million in direct research grants in 20 different states.</p>
<p>We worked with Uniting&#8217;s staff and board to develop and implement a transition strategy for their online presence, as they re-branded from Joan&#8217;s Legacy to Uniting Against Lung Cancer. The new website better reflects the scope and reach of the foundation&#8217;s work, and showcases their mission, partners, and events in a design that evokes a deep breath of fresh air on a sunny day.</p>
<p>On a technical note: Both sites run on Drupal&#8217;s open-source CMS platform, which gives them a strong foundation on which to develop future site enhancements &#8211; something that&#8217;s increasingly top-of-mind for our clients. We&#8217;re finding that more of our clients are looking at an iterative approach to making site adjustments, and even after a major redesign such as these ones, there are often &#8220;wish list&#8221; items that we can add to a site over time. We find Drupal provides a robust framework that allows this iterative approach to work well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/10/big-reveal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploring the Vancouver Arts Scene via Twitter</title>
		<link>http://blog.raisedeyebrow.com/2009/08/exploring-the-vancouver-arts-scene-via-twitter/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=exploring-the-vancouver-arts-scene-via-twitter</link>
		<comments>http://blog.raisedeyebrow.com/2009/08/exploring-the-vancouver-arts-scene-via-twitter/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 15:30:46 +0000</pubDate>
		<dc:creator>Lauren Bacon</dc:creator>
				<category><![CDATA[Nonprofit Tech]]></category>
		<category><![CDATA[Online Strategy]]></category>
		<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>
		<category><![CDATA[The Social Web]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=601</guid>
		<description><![CDATA[Between my personal background in &#8212; and passion for &#8212; music, and the fact that many of our nonprofit clients hail from the arts sector, I try to keep an eye on how arts groups  are using social media to achieve their missions. In particular, lately I&#8217;ve been looking around on Twitter to see [...]]]></description>
			<content:encoded><![CDATA[<p>Between my personal background in &#8212; and passion for &#8212; music, and the fact that many of our nonprofit clients hail from the arts sector, I try to keep an eye on how arts groups  are using social media to achieve their missions. In particular, lately I&#8217;ve been looking around on Twitter to see which Vancouver arts groups are doing interesting things in the Twitterverse. I&#8217;m excited to see how many organizations are reaching out to new and existing audiences via Twitter, and I thought it might be of interest to some readers to hear about some Vancouver arts organizations who are doing a lot with 140 characters.</p>
<p>My focus tends to skew towards music, and classical music in particular, so you&#8217;ll definitely notice that bias here. I&#8217;ve also tried to limit the list to groups who are twittering actively, and conversing rather than simply broadcasting one-way announcements.</p>
<ul>
<li><a title="ChanCentre on Twitter" href="http://twitter.com/ChanCentre">Chan Centre for the Performing Arts at UBC</a>*: Rachel Lowry at the Chan is doing a fantastic job of highlighting all kinds of interesting arts news, as well as sharing information about their upcoming events.</li>
<li>Many of the big performing arts groups in town are making good use of Twitter, including the <a title="VSO on Twitter" href="http://twitter.com/V_S_O">Vancouver Symphony Orchestra</a>, and <a title="The Arts Club on Twitter" href="http://twitter.com/theArtsClub">The Arts Club</a>. But the leader of the pack may be Ling Chan at <a title="Vancouver Opera on Twitter" href="http://twitter.com/VancouverOpera">Vancouver Opera</a>, who has been doing a bang-up job of extending the opera company&#8217;s reach beyond the usual classical-music suspects. The opera&#8217;s Twitter feed features fun &amp; interesting opera news, as well as exclusive offers for Vancouver Opera fans. In related social media news, the organization has been reaching out to bloggers as well, through their innovative <a href="http://vancouveropera.blogspot.com/2009/03/blogger-night-at-opera-rigoletto.html">Blogger Night at the Opera</a>.</li>
<li>World-renowned men&#8217;s choir <a title="Chor Leoni on Twitter" href="http://twitter.com/chor_leoni">Chor Leoni</a>* has a great feed, which I believed is managed by arts marketer extraordinaire Bruce Hoffman. My favourite recent tweet from them pointed to a video of Bobby McFerrin leading the <span><span>World Science Festival audience through a <a title="Video: Bobby McFerrin at the World Science Festival" href="http://ow.ly/jcmu">fascinating musical exercise</a>.<br />
</span></span></li>
<li><a title="Pacific Cinematheque on Twitter" href="http://twitter.com/theCinematheque">Pacific Cinematheque</a> offers a delightful twist on the self-promotional announcement: each time they mention a film they&#8217;re screening, they include a quote from the script. (A recent example: <span><span>&#8220;&#8216;You&#8217;re wearing the wrong shade of lipstick, Mister.&#8217; THE BLUE DAHLIA 9:20pm&#8221;.)</span></span></li>
<li><a title="Saturday Afternoon at the Opera on Twitter" href="http://twitter.com/satopera">Saturday Afternoon at the Opera</a>, the CBC&#8217;s weekly opera show hosted by Bill Richardson (one of my all-time favourite Vancouverites), is relatively new to Twitter, but already making a splash with their contests to summarize opera plots in 140 characters.</li>
<li><a title="musica intima on Twitter" href="http://twitter.com/musicaintima">musica intima</a>*, the a cappella (and conductorless) vocal ensemble with whom I used to sing, has a lively Twitter feed (though it seems to be on summer hiatus) written by two staff members and one of the group&#8217;s twelve singers. I particularly enjoyed the updates they posted while the group was on tour.</li>
<li><a title="The Dance Centre on Twitter" href="http://twitter.com/dancecentre">The Dance Centre</a>&#8217;s Twitter feed covers all things dance-related. I love that they write about everything from serious dance news to the latest episode of So You Think You Can Dance.</li>
<li>For a couple of great examples of how festivals (whose &#8220;seasons&#8221; are short-lived by nature), check out the <a title="Vancouver Folk Fest on Twitter" href="http://twitter.com/vanfolkfest">Vancouver Folk Fest</a>, <a title="Vancouver Jazz Fest on Twitter" href="http://twitter.com/vanjazzfest">Vancouver Jazz Fest</a>, and <a title="DOXA Documentary Film Festival on Twitter" href="http://twitter.com/doxafestival">DOXA</a> feeds.</li>
<li><a title="Pacific Baroque Orchestra on Twitter" href="http://twitter.com/PacificBaroque">Pacific Baroque Orchestra</a> is another Twitter newbie, but they&#8217;re posting actively about baroque &amp; classical-era music and joining in the conversation.</li>
<li>Finally, one of my favourite Twitter feeds comes from the <a href="http://twitter.com/vpl">Vancouver Public Library</a>. They keep me up to date on everything from special collections I may not have heard about, to author readings, to branch closures. And they&#8217;re fun and funny.</li>
</ul>
<p>Who have I missed? I&#8217;d love to hear of other examples. Please leave your suggestions in the comments.</p>
<p>(* = <a href="http://www.raisedeyebrow.com">Raised Eyebrow</a> clients)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/08/exploring-the-vancouver-arts-scene-via-twitter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New launch: BC Centre for Disease Control</title>
		<link>http://blog.raisedeyebrow.com/2009/06/new-launch-bc-centre-for-disease-control/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-launch-bc-centre-for-disease-control</link>
		<comments>http://blog.raisedeyebrow.com/2009/06/new-launch-bc-centre-for-disease-control/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 15:30:28 +0000</pubDate>
		<dc:creator>Lauren Bacon</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=489</guid>
		<description><![CDATA[We&#8217;re delighted to announce that the BC Centre for Disease Control has launched their new website. The BCCDC provides a wide range of services for British Columbians that extend far beyond the &#8220;hazmat&#8221; image many people have when they think about disease control. They offer STI testing clinics that are open to the public, critical [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bccdc.ca"><img class="alignleft size-medium wp-image-490" title="BC Centre for Disease Control screen capture" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/06/BC-Centre-for-Disease-Control-300x279.jpg" alt="BC Centre for Disease Control screen capture" width="300" height="279" /></a>We&#8217;re delighted to announce that the <a href="http://www.bccdc.ca/">BC Centre for Disease Control</a> has launched their new website. The BCCDC provides a wide range of services for British Columbians that extend far beyond the &#8220;hazmat&#8221; image many people have when they think about disease control. They offer <a href="http://www.bccdc.ca/dis-cond/a-z/_s/SexuallyTransmittedInfections/clinprog/default.htm">STI testing clinics</a> that are open to the public, critical information about <a href="http://www.bccdc.ca/dis-cond/a-z/default.htm">diseases and conditions</a> from <a href="http://www.bccdc.ca/dis-cond/a-z/_a/Anthrax/">Anthrax</a> to <a href="http://www.bccdc.ca/dis-cond/a-z/_z/Zoster/">Zoster</a>, and leading-edge <a href="http://www.bccdc.ca/resources/stats-res/default.htm">research and statistics</a> on a remarkable breadth of topics.</p>
<p>The new website takes an enormous amount of information and makes it remarkably accessible and easy to navigate; and although we would love to take credit for that, it was <a href="http://analyticdesigngroup.com/">Analytic Design Group</a> who provided information architecture consulting on this project &#8212; and they did a fabulous job indeed. We provided the graphic design for the new site, which needs to balance the BCCDC&#8217;s position as a source of authoritative scientific information with its role in public outreach. Our design approach was therefore guided by the client&#8217;s vision of helping to make British Columbia the healthiest place on earth; you won&#8217;t see any glaring red or other &#8220;emergency&#8221; symbols (although we did work in a space for emergency alerts that can appear across the entire site at a moment&#8217;s notice), but rather a warm, welcoming, and accessible look and feel that reflects the BCCDC&#8217;s collaborative approach to public health.</p>
<p>We would also be remiss if we didn&#8217;t credit the technical team at the <a href="http://www.phsa.ca">Provincial Health Services Authority</a>, who really outdid themselves on this particular project. This was a major team effort and we are grateful to have played our part!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/06/new-launch-bc-centre-for-disease-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vote for Pivot Legal (and Us)!</title>
		<link>http://blog.raisedeyebrow.com/2009/04/vote-for-pivot-legal-and-us/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=vote-for-pivot-legal-and-us</link>
		<comments>http://blog.raisedeyebrow.com/2009/04/vote-for-pivot-legal-and-us/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 18:56:10 +0000</pubDate>
		<dc:creator>Emira Mears</dc:creator>
				<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=295</guid>
		<description><![CDATA[The website we designed for Pivot Legal LLP has been entered in the PopVox Awards.
The PopVox Awards, if you don&#8217;t know, are people&#8217;s choice awards given out during Vancouver Digital Media Week in May. The Pivot site, which we&#8217;re very thrilled with, has been entered in the Best Website Category (naturally). You can vote for [...]]]></description>
			<content:encoded><![CDATA[<p>The website we designed for Pivot Legal LLP has been entered in the PopVox Awards.</p>
<p>The PopVox Awards, if you don&#8217;t know, are people&#8217;s choice awards given out during <a href="http://www.vancouverdigitalweek.com/" target="_blank">Vancouver Digital Media Week</a> in May. The Pivot site, which we&#8217;re very thrilled with, has been entered in the Best Website Category (naturally). You can <a href="http://popvox-marketing3.strutta.com/entries#2657" target="_blank">vote for it here</a>, though I warn you the site&#8217;s interface isn&#8217;t super easy to get around. Winning this award would obviously be great for Raised Eyebrow, but also wonderful for raising profile for Pivot. So, please go vote and tell a friend!</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.strutta.com/image-cacher/f:640:360/aHR0cDovL3VwbG9hZHMuZmlsZXMuc3RydXR0YS5jb20vZW50cnkvMzIyMzAvMTIzOTMwMjgzNQ==" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/04/vote-for-pivot-legal-and-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What public radio can teach you about fundraising</title>
		<link>http://blog.raisedeyebrow.com/2009/03/public-radio-fundraising/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=public-radio-fundraising</link>
		<comments>http://blog.raisedeyebrow.com/2009/03/public-radio-fundraising/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 17:38:20 +0000</pubDate>
		<dc:creator>Lauren Bacon</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Nonprofit Tech]]></category>
		<category><![CDATA[Online Fundraising]]></category>
		<category><![CDATA[Online Strategy]]></category>
		<category><![CDATA[Our Clients]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=235</guid>
		<description><![CDATA[Slate has a great article up on &#8220;The 10 cunning ways public radio stations convince you to give them money&#8221; &#8212; as I was reading it (and listening to the fabulous audio clips that accompany the article), I reflected on how many of these same smart fundraising techniques apply to good causes everywhere.
Personally, I am [...]]]></description>
			<content:encoded><![CDATA[<p>Slate has a great article up on &#8220;<a title="Let's Get Those Phones Ringing!" href="http://www.slate.com/id/2212340/pagenum/all/">The 10 cunning ways public radio stations convince you to give them money</a>&#8221; &#8212; as I was reading it (and listening to the fabulous audio clips that accompany the article), I reflected on how many of these same smart fundraising techniques apply to good causes everywhere.</p>
<p>Personally, I am a big fan (and longtime supporter) of <a href="http://www.kexp.org">KEXP</a>, the Seattle-based radio station that also delivers their exceptional music programming online, and one of the things I have always admired about them is their sheer genius when it comes to fundraising. (They&#8217;re in the middle of pledge week right now, as a matter of fact, should you feel inclined to give to a great cause.) One year during pledge drive they accepted bids on seemingly random items scattered around the station, so that for, say, $500 (I can&#8217;t remember the actual amount), you could get your name on the front of the coffee machine, where staffers would grab a cup of joe. For $1000, you might get your name on a microphone that&#8217;s used every day for in-studio performances by some of the best musicians in the world. And so on. The intimacy and immediacy of the items one could sponsor made them incredibly appealing to listeners like me. (I still want my name on that coffee machine.)</p>
<p>I think of all the techniques described in the Slate article, the one that&#8217;s most effective at getting my credit card out is this one:</p>
<p style="padding-left: 30px;"><strong>8. Niche marketing</strong></p>
<p style="padding-left: 30px;">The best of public radio&#8217;s weekend shows have distinct personalities: the discursive storytelling of <em>This American Life</em>, the self-deprecating bickering of <em>Car Talk</em>, and the cozy in-jokes of <em>A Prairie Home Companion</em>. All these shows produce special pledge editions, pitching in their signature styles. Ira Glass clearly missed his calling in sales; he is a master of the &#8220;ask.&#8221; He appeals to his people in their native tongue, sarcasm, calling on them to show their love for the show rather than the station it happens to be playing on: &#8220;There is one sure way that you can send a signal to this radio station that you like this program, and that you want them to continue running this program, and that is to call right now. …. Not later, not in an hour, during that other show that comes after us.&#8221;</p>
<p>I want to be made to feel special &#8212; to feel like I belong to a community of people with whom I share certain common interests and values. If you can make me feel understood and valued, then you will gain my loyalty, and with my loyalty comes a much greater willingness to part with my hard-earned cash.</p>
<p>And you know what didn&#8217;t make the list? Fearmongering. (Yes, they did include guilt-tripping, because where would fundraisers be without the ability to tug on heartstrings?) I, for one, would really love it if I never received another fundraising letter that implied the world was on the brink of destruction and that only my dollars could save us from apocalypse, whether the end of the world was coming in the shape of environmental, cultural, or social degradation. I am rarely motivated to action by doom-and-gloom scenarios; what <em>does </em>motivate me is a clearly articulated vision of a better world that I want to live in &#8212; even if it&#8217;s just a world where The Pixies still get played on the radio every day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/03/public-radio-fundraising/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pivot Legal &#8211; A Drupal breakdown</title>
		<link>http://blog.raisedeyebrow.com/2009/02/pivot-legal-a-drupal-breakdown/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=pivot-legal-a-drupal-breakdown</link>
		<comments>http://blog.raisedeyebrow.com/2009/02/pivot-legal-a-drupal-breakdown/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 17:59:33 +0000</pubDate>
		<dc:creator>Colin Calnan</dc:creator>
				<category><![CDATA[Code and Coding]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>
		<category><![CDATA[Pivot Legal LLP]]></category>
		<category><![CDATA[View Filters]]></category>
		<category><![CDATA[Views]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=214</guid>
		<description><![CDATA[As Melanie mentioned, we just launched a site for Pivot Legal, and a successful launch it was too. I thought I&#8217;d take a moment to give a quick breakdown of some of the tricks and wizardry we incorporated on that site.
Valid Code
For starters, we succeeded in getting most of the site to be valid XHTML, [...]]]></description>
			<content:encoded><![CDATA[<p>As <a title="Link to Melanies bio page" href="http://www.raisedeyebrow.com/about/melanie.html">Melanie</a> <a title="Link to Pivot site launch post" href="http://blog.raisedeyebrow.com/2009/02/new-site-launch-pivot-legal-llp/">mentioned</a>, we just launched a site for <a href="http:/www.pivotlegal.com" title="Link to pivotlegal.com">Pivot Legal</a>, and a successful launch it was too. I thought I&#8217;d take a moment to give a quick breakdown of some of the tricks and wizardry we incorporated on that site.</p>
<h3>Valid Code</h3>
<p>For starters, we succeeded in getting <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.pivotlegal.com" title="Link to validated Pivot Legal.com home page code">most of the site to be valid XHTML</a>, of course with Drupal there are parts where client content entry will cause some warnings and Drupals own internals will also do the same, but most of the pages on this site, within our control, are valid.</p>
<h3>Lawyer Blogs, Resources and Events</h3>
<p>This was the first site that we have implemented multi user blogging and user content categorization, so it was a learning experience for us. Each <a title="Link to Pablo's lawyer page" href="http://www.pivotlegal.com/our-lawyers/pablo">lawyer has their own page</a>, in this case, that page is the default user profile page. However it&#8217;s not just your ordinary user profile page, it&#8217;s a themed user profile page. To allow us to theme this page we simply called the following function in template.php</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p214code17'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p21417"><td class="code" id="p214code17"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
* Catch the theme_profile_profile function, and redirect through the template api
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> phptemplate_user_profile<span style="color: #009900;">&#40;</span><span style="color: #000088;">$account</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> _phptemplate_callback<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user_profile'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'account'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$account</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fields'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Then create a template file called <strong>user_profile.tpl.php</strong>, here&#8217;s a snippet from that file:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p214code18'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p21418"><td class="code" id="p214code18"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$lawyer_profile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;div id=&quot;lawyer_profile&quot;&gt;'</span><span style="color: #339933;">.</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;h2&gt;'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">profile_fullname</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/h2&gt;'</span><span style="color: #339933;">.</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;h3&gt;'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$area_of_law</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/h3&gt;'</span><span style="color: #339933;">.</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;p&gt;'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">profile_biography</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/p&gt;'</span><span style="color: #339933;">.</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span>
   <span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/div&gt;'</span><span style="color: #339933;">.</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Photo, if any:</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">picture</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$lawyer_photo</span> <span style="color: #339933;">=</span> theme<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'image'</span><span style="color: #339933;">,</span> 	<span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">picture</span><span style="color: #339933;">,</span> <span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">profile_fullname</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'\'s photo'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$account</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">profile_fullname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>The Blog, Resource and Events blocks on the lawyer page are simply View blocks that have the username as an argument. To achieve this we used the <a title="Link to Usernode module page on drupal.org" href="http://drupal.org/project/usernode">Usernode module</a> to convert user profiles to nodes so that we could use their properties in views. I believe Views 2 in Drupal 6 will handle all this without the need to this module.</p>
<h3>Username funkiness</h3>
<p>As there are lots of users creating lots of content Drupal spits out their username attached to the piece of content (e.g <em>&#8220;Posted by colin on Feb 26, 2009&#8243;</em>). However on this site we wanted to show their full name and link that back to their profile page, again a simple theming function achieved this</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p214code19'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p21419"><td class="code" id="p214code19"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> custom_theme_username<span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uid</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Load user so that we can get the full profile name instead of the short username</span>
    <span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> user_load<span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'uid'</span> <span style="color: #339933;">=&gt;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uid</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">profile_fullname</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// If it's the &quot;Pivot Legal LLP&quot; user, go to the 'about-us/' page instead:</span>
    <span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'Pivot Legal LLP'</span> ? <span style="color: #0000ff;">'user/'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uid</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'about-us/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>user_access<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'access user profiles'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> l<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'View user profile.'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> check_plain<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Sometimes modules display content composed by people who are</span>
    <span style="color: #666666; font-style: italic;">// not registered members of the site (e.g. mailing list or news</span>
    <span style="color: #666666; font-style: italic;">// aggregator modules). This clause enables modules to display</span>
    <span style="color: #666666; font-style: italic;">// the true author of the content.</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">homepage</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> l<span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">homepage</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> check_plain<span style="color: #009900;">&#40;</span><span style="color: #000088;">$object</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000088;">$output</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' ('</span><span style="color: #339933;">.</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'not verified'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">')'</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> variable_get<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'anonymous'</span><span style="color: #339933;">,</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Anonymous'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$output</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h3>Searching</h3>
<p>It was a requirement to have a <a title="Link to legal resources directory search on Pivotlegal.com" href="http://www.pivotlegal.com/legal-resources/directory">searchable directory of free legal resources</a> on this site. We built this using a content type and Views, along with the <a title="Link to Views Fast Search module on Drupal.org" href="http://drupal.org/project/views_fastsearch">Views Fast Search module</a><a></a>. This allows you to create a view which acts like a search but uses view Filters to restrict the search. Robert Douglass, one of the famed Lullabots has <a title="Link to Views Fast Search tutorial on Lullabot.com" href="http://www.lullabot.com/articles/custom_search_forms_views_and_fastsearch">written a great tutorial on how to set it up</a>.</p>
<h4>How did you get the search box on the home page?</h4>
<p>This is pretty easy. Go ahead and create your Fast Search that we mentioned above. Then create a block and paste the following code into the body of the block, making sure to include the php tags and to set the input format to PHP:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p214code20'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p21420"><td class="code" id="p214code20"><pre class="php" style="font-family:monospace;">  <span style="color: #339933;">&lt;</span> ?php
  <span style="color: #666666; font-style: italic;">// Get the view</span>
  <span style="color: #000088;">$view</span> <span style="color: #339933;">=</span> views_get_view<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'directory_search'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Get the filters ( in this case the search box) - this is returned as a form</span>
  <span style="color: #000088;">$form</span> <span style="color: #339933;">=</span> drupal_retrieve_form<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'views_filters'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$view</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// When you submit the form make sure we go to the view page</span>
  <span style="color: #000088;">$form</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'#action'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> url<span style="color: #009900;">&#40;</span><span style="color: #000088;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Set your form up correctly in drupal</span>
  drupal_process_form<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'views_filters'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$form</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Spit the form out to screen</span>
  <span style="color: #b1b100;">return</span> drupal_render_form<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'views_filters'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$form</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Of course this method can be applied to any view filters.</p>
<h3>Views, views and more views</h3>
<p>The rest of the site is mostly views and view blocks with some serious argument handling. The rotating images on the homepage are achieved using a simple content type for the image and then using a view to randomly load one of those pieces of content.</p>
<p>If you have any questions about any of the other functionality on the site or on anything I&#8217;ve menitoned above please feel free to post a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/02/pivot-legal-a-drupal-breakdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Site Launch: Pivot Legal LLP</title>
		<link>http://blog.raisedeyebrow.com/2009/02/new-site-launch-pivot-legal-llp/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-site-launch-pivot-legal-llp</link>
		<comments>http://blog.raisedeyebrow.com/2009/02/new-site-launch-pivot-legal-llp/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 18:45:29 +0000</pubDate>
		<dc:creator>Melanie Mena</dc:creator>
				<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=202</guid>
		<description><![CDATA[We are very pleased to announce that Pivot Legal LLP has a brand new website, just launched today. If you don&#8217;t know anything about Pivot Legal LLP then you can start with their tagline: a different kind of lawyer, a different kind of law firm. Having worked with the lovely people at Pivot for the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-205" title="pivot" src="http://blog.raisedeyebrow.com/wp-content/uploads/2009/02/pivot-300x279.jpg" alt="pivot" width="300" height="279" />We are very pleased to announce that <a title="Pivot Legal LLP Website" href="http://www.pivotlegal.com" target="_blank">Pivot Legal LLP </a>has a brand new website, just launched today. If you don&#8217;t know anything about Pivot Legal LLP then you can start with their tagline: <em>a different kind of lawyer, a different kind of law firm.</em> Having worked with the lovely people at Pivot for the last few months I can confirm that they are indeed a different kind of law firm.</p>
<p>If you follow Vancouver news at all then you&#8217;ve probably heard about <a title="Pivot Legal Society" href="http://www.pivotlegal.org" target="_blank">Pivot Legal Society</a>, they do a lot of advocacy work and have been in the news from time to time, connected with <a title="Pivot Legal Society: Issues" href="http://pivotlegal.org/Issues/index.htm" target="_blank">issues</a> and <a title="Hope In Shadows " href="http://www.hopeinshadows.com/" target="_blank">projects</a> related to the Downtown Eastside. Pivot Legal LLP, a full service law firm, grew from the Society and 100% of the profits of the LLP go to the Society. Have you ever heard of a law firm that donates 100% of their profits? (For the full story, check out John&#8217;s blog post: <a title="Blog post at Pivot Legal LLP " href="http://www.pivotlegal.com/blog/john/how-pivot-legal-got-started" target="_blank">How Pivot Legal got started</a>.)</p>
<p>One of the other things that sets Pivot apart is their personal nature, which I think helps diffuse the mystery (and misconceptions) about Law and Lawyers. You can read through the bios of each of <a title="Pivot's Lawyers" href="http://www.pivotlegal.com/our-lawyers" target="_blank">Pivot&#8217;s Lawyers</a> and they are blogging, holding their own Events and contributing a wealth of knowledge through the <a title="Pivot's Legal Resources " href="http://www.pivotlegal.com/legal-resources" target="_blank">Legal Resources</a> section of the site. The website even has a <a title="Pivot's Directoty of Free Legal Services" href="http://www.pivotlegal.com/legal-resources/directory" target="_blank">Directory of Free Legal Services</a> site visitors can search through.</p>
<p>This has been such a great project to work on and is a true example of the collaborative way in which we work together here at Raised Eyebrow. From the conceptualizing and planning phases though to the design and development phases we&#8217;ve all been involved with this site &#8211; and we&#8217;re adding it to the ever growing roster of sites that we&#8217;re quite proud to have worked on.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2009/02/new-site-launch-pivot-legal-llp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Launches: 2008</title>
		<link>http://blog.raisedeyebrow.com/2008/12/launches-2008/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=launches-2008</link>
		<comments>http://blog.raisedeyebrow.com/2008/12/launches-2008/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 21:51:25 +0000</pubDate>
		<dc:creator>Melanie Mena</dc:creator>
				<category><![CDATA[Our Clients]]></category>
		<category><![CDATA[Raised Eyebrow]]></category>

		<guid isPermaLink="false">http://blog.raisedeyebrow.com/?p=117</guid>
		<description><![CDATA[It&#8217;s been a busy year at the Raised Eyebrow HQ. To date we have worked on more than 30 different website projects and we&#8217;ve got a few more in the works. For some projects we designed, built and launched an entire website and for others we worked on the design and handed development over to [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a busy year at the Raised Eyebrow HQ. To date we have worked on more than 30 different website projects and we&#8217;ve got a few more in the works. For some projects we designed, built and launched an entire website and for others we worked on the design and handed development over to someone else. Overall the projects were as varied as our clients.</p>
<p>We dabbled a little in the political arena and built the <a title="JustShutUpBC.com" href="http://www.justshutupbc.com" target="_blank">JustShutUpBC</a> website. We also worked on the nomination site for Gregor Robertson (which has since been taken offline) and we built websites for <a title="Geoff Meggs" href="http://www.geoffmeggs.ca/" target="_blank">Geoff Meggs</a> and <a title="Heather Deal" href="http://www.heatherdeal.ca/" target="_blank">Heather Deal</a>. Gregor, Geoff and Heather all won in the recent civic election which can only mean that having a site done by Raised Eyebrow is sort of like a good luck charm when it comes to election time ;-)</p>
<p>Ofcourse the big political website we worked on in &#8216;08 was for the <a title="BC NDP site launch" href="/2008/11/new-site-launch-bc-ndp">BC NDP</a>.</p>
<p>We also had a chance to work with a collection of musical clients. The <a title="Vancouver Recital Society " href="http://www.vanrecital.com/home/index.cfm" target="_blank">Vancouver Recital Society</a> got an updated look for their new season. The <a title="Vancouver Welsh Men's Choir" href="http://www.vwmc.ca" target="_blank">Vancouver Welsh Men&#8217;s Choir</a> got a whole new site that allows site visitors to listen to their music, buy tickets to their shows and purchase their CDs online. The <a title="The Chan Centre" href="http://www.chancentre.com/home">Chan Centre&#8217;s</a> website was moved into Drupal and they were also given a new look for their new season.</p>
<p>This year we had a contingent of clients on the Educational side of things:</p>
<ul>
<li>The <a title="Federation of Post Secondary Educators" href="http://www.fpse.ca" target="_blank">Federation of Post Secondary Educators</a> got an updated look and we also helped reorganize their site when it was moved into Drupal.</li>
<li>The <a title="BC Teachers of English Language Arts" href="http://www.bctela.ca" target="_blank">BC Teachers of English Language Arts</a> got a snazzy new site which has a really great Resource section and a dynamic Conference area.</li>
<li><a title="Economics for Everyone" href="http://economicsforeveryone.com/" target="_blank">Economics for Everyone</a> is primarily a book but we got to build the book&#8217;s online companion which houses further resources for educators, unionists, activists and anyone else interested in modern day capitalism.</li>
</ul>
<p>As well we got to work on a few sites for people who do really great work to try to make this world a bit better for everyone:</p>
<ul>
<li><a title="Covenant House Vancouver" href="http://www.covenanthousebc.org/" target="_blank">Covenant House Vancouver</a>: an incredible organization dedicated to helping homeless youth.</li>
<li><a title="Think City " href="http://www.thinkcity.ca/" target="_blank">ThinkCity</a>: they help to empower citizens to realize their dreams of having the city they want to live in.</li>
<li><a title="Citizens for Public Power" href="http://www.citizensforpublicpower.ca/" target="_blank">Citizens for Public Power</a>: an advocacy organization working to keep the province&#8217;s power generation system in public hands.</li>
<li><a title="The Columbia Institute" href="http://columbiainstitute.ca/" target="_blank">The Columbia Institute</a>: they work to foster individual and organizational leadership to help nurture sustainable communities.</li>
<li><a title="SHARE" href="http://share.ca/" target="_blank">Shareholder Association for Research and Education</a>: a social enterprise that works to coordinate and implement responsible investment practices.</li>
</ul>
<p>It&#8217;s been an absolute pleasure to work with such great clients who are doing such awesome work themselves.</p>
<p>We also got to launch a pet project that was waiting in the wings for some time: the <a title="This here blog." href="http://blog.raisedeyebrow.com" target="_self">RE Blog</a>.</p>
<p>It&#8217;s been a fantastic &#8211; and productive &#8211; year at Raised Eyebrow. Happy Holidays everyone! All the very best to you in &#8216;09.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.raisedeyebrow.com/2008/12/launches-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
