|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/thr33cd/ |
Upload File : |
<!DOCTYPE HTML>
<html><!-- InstanceBegin template="/Templates/universal.dwt" codeOutsideHTMLIsLocked="false" --><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="3CD, 3CD design, three communication design, graphic design, chicago graphic design, web design, chicago web design, education design, branding, identity, design studio, design firm, chicago design firm, chicago design studio, Chicago, Ravenswood, AIGA, AIGA Chicago, kids design, kids games, kids prints, kids songs, downstairs, Daniel Casadas, Tony Porto, Mitch Rice">
<!-- InstanceBeginEditable name="description" -->
<meta name="description" content="3CD is a Chicago firm specializing in design for educational publishing, web, interactive projects and games for kids, though we serve many kinds of clients.">
<!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="doctitle" -->
<meta name="google-site-verification" content="iMtVD_c1ryX7vapuWS2hw_lU3E2WOl_UMvyWecz3YLg" />
<title>3CD | Home</title>
<!-- Include the VideoJS Library -->
<script src="lib/video.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
// Add VideoJS to all video tags on the page when the DOM is ready
VideoJS.setupAllWhenReady();
</script>
<!-- Include the VideoJS Stylesheet -->
<link rel="stylesheet" href="css/video-js.css" type="text/css" media="screen" title="Video JS">
<noscript>
<style type="text/css">
.video-js-box {display:none;}
</style>
</noscript>
<!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
<link href="/css/general.css" rel="stylesheet" type="text/css" />
<link href="http://3cd.com/favicon.ico" rel="shortcut icon" />
<link href="feed://3cdworld.tumblr.com/rss" title="3CD | RSS" type="application/rss+xml" rel="alternate"/>
<script type="text/javascript" src="http://fast.fonts.com/jsapi/56e2aaf5-ab12-47f6-ae47-97b329dfcbd1.js"></script>
<script type="text/javascript" src="http://3cd.com/lib/jquery.js"></script>
<script type="text/javascript" src="http://3cd.com/lib/default.js"></script>
<script type="text/javascript" src="http://3cd.com/lib/jquery.colorbox.js"></script>
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,'name','height=600,width=900');
if (window.focus) {newwindow.focus()}
return false;
}
// -->
</script>
<!-- InstanceParam name="pageclass" type="text" value="home" -->
</head>
<body class="home">
<div id="wrapper">
<div id="left">
<div id="nav">
<div id="home_link"><a href="http://3cd.com/"><span>Home</span></a></div>
<ul>
<li><a id="work" href="http://3cd.com/who_we_are"><span>our studio</span></a>
<ul class="work_menu">
<li><a href="http://3cd.com/who_we_are">let's work:<br>
who we are,<br>
what we do</a></li>
</ul>
</li>
<li><a href="http://3cdblog.tumblr.com/" id="talk"><span>our blog</span></a>
<ul class="talk_menu">
<li><a href="http://3cdblog.tumblr.com/">let's talk:<br>
your voice<br>
and ours</a></li>
</ul>
</li>
<li><a id="play" href="http://3cd.com/play/"><span>our games</span></a>
<ul class="play_menu">
<li><a href="http://3cd.com/play/">let's play:<br>
a downstairs<br>
kids space</a></li>
</ul>
</li>
</ul>
</div><!--nav-->
<div id="footer">
<div id="work_nav">
<ul>
<li id="worknav_who_we_are"><a href="http://3cd.com/who_we_are"><span>who we are</span></a>
<!--<ul class="who_menu">
<li><a href="http://3cd.com/who_we_are">dont' worry<br />
we've kept<br />
it short</a></li>
</ul>-->
</li>
<li id="worknav_our_portfolio"><a href="http://3cd.com/education"><span>design portfolio</span></a>
<ul class="submenu">
<li id="port_education"><a href="http://3cd.com/education"><span>- for education</span></a></li>
<li id="port_therest">
<p><a href="http://3cd.com/the_rest">- for corporate, <br/> small business, <br>non-profit</a></p>
</li>
<li id="port_flashback"><a href="http://3cd.com/flashback"><span>- past favorites</span></a></li>
</ul>
<!--<ul class="portfolio_menu">
<li id="port_education">Examples<br/>of our<br/>design work</li>
</ul>-->
</li>
<li id="worknav_contact"><a href="http://3cd.com/contact/"><span>contact us</span></a>
<!--<ul class="contact_menu">
<li><a href="http://3cd.com/contact/">We'd love<br />
to hear<br />
from you</a></li>
</ul>-->
</li>
</ul>
</div>
<div id="social_media">
<ul>
<li class="facebook"><a href="http://www.facebook.com/pages/3CD/185569798149236?sk=wall" target="_blank"><span>Facebook</span></a></li>
<li class="twitter"><a href="http://twitter.com/3CD_World#" target="_blank"><span>Twitter</span></a></li>
<li class="rss"><a href="feed://3cdblog.tumblr.com/rss"><span>RSS</span></a></li>
</ul>
</div><!--Social Media-->
<div id="flash">
<!-- InstanceBeginEditable name="flash" -->
<!-- InstanceEndEditable -->
</div><!--Flash-->
</div><!--footer-->
</div><!--left-->
<div id="footer_links">
<div id="copyright">@ 2018 3CD, all rights reserved.</div>
<div id="terms"></div>
</div><!--footer links-->
<div id="content">
<!-- InstanceBeginEditable name="content" -->
<!-- Begin VideoJS -->
<div class="video-js-box">
<!-- Using the Video for Everybody Embed Code http://camendesign.com/code/video_for_everybody -->
<video id="example_video_1" class="video-js" width="519" height="292" controls preload="none" poster="video/3CD_Video_R4_HQ.jpg">
<source src="video/3CD_Video_R4_HQ.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="video/3CD_Video_R4_HQ.webm" type='video/webm; codecs="vp8, vorbis"' />
<source src="video/3CD_Video_R4_HQ.ogg" type='video/ogg; codecs="theora, vorbis"' />
<!-- Flash Fallback. Use any flash video player here. Make sure to keep the vjs-flash-fallback class. -->
<object id="flash_fallback_1" class="vjs-flash-fallback" width="519" height="317">
<param name="movie" value="http://www.youtube.com/v/_NILW2qqpxI?hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/_NILW2qqpxI?hl=en&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="519" height="317"></embed>
</object>
</video>
</div><!-- End VideoJS -->
<!-- display Flash vdeo if JS is disabled. CSS rule in head will hide the videoJS version -->
<noscript>
<div style="margin-bottom:50px;">
<object id="flash_fallback_1" class="vjs-flash-fallback" width="519" height="317">
<param name="movie" value="http://www.youtube.com/v/_NILW2qqpxI?hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/_NILW2qqpxI?hl=en&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="519" height="317"></embed>
</object>
</div>
</noscript>
<div id="blogfeed">
<h2>What’s New on the <a href="http://3cdblog.tumblr.com/">Let’s Talk</a> Blog</h2>
<ul class="post_list">
<?php
//pull blog posts from tumblr.
//
function TimeAgo($datefrom,$dateto=-1)
{
// Defaults and assume if 0 is passed in that
// its an error rather than the epoch
if($datefrom<=0) { return "A long time ago"; }
if($dateto==-1) { $dateto = time(); }
// Calculate the difference in seconds betweeen
// the two timestamps
$difference = $dateto - $datefrom;
// If difference is less than 60 seconds,
// seconds is a good interval of choice
if($difference < 60)
{
$interval = "s";
}
// If difference is between 60 seconds and
// 60 minutes, minutes is a good interval
elseif($difference >= 60 && $difference<60*60)
{
$interval = "n";
}
// If difference is between 1 hour and 24 hours
// hours is a good interval
elseif($difference >= 60*60 && $difference<60*60*24)
{
$interval = "h";
}
// If difference is between 1 day and 7 days
// days is a good interval
elseif($difference >= 60*60*24 && $difference<60*60*24*7)
{
$interval = "d";
}
// If difference is between 1 week and 30 days
// weeks is a good interval
elseif($difference >= 60*60*24*7 && $difference <
60*60*24*30)
{
$interval = "ww";
}
// If difference is between 30 days and 365 days
// months is a good interval, again, the same thing
// applies, if the 29th February happens to exist
// between your 2 dates, the function will return
// the 'incorrect' value for a day
elseif($difference >= 60*60*24*30 && $difference <
60*60*24*365)
{
$interval = "m";
}
// If difference is greater than or equal to 365
// days, return year. This will be incorrect if
// for example, you call the function on the 28th April
// 2008 passing in 29th April 2007. It will return
// 1 year ago when in actual fact (yawn!) not quite
// a year has gone by
elseif($difference >= 60*60*24*365)
{
$interval = "y";
}
// Based on the interval, determine the
// number of units between the two dates
// From this point on, you would be hard
// pushed telling the difference between
// this function and DateDiff. If the $datediff
// returned is 1, be sure to return the singular
// of the unit, e.g. 'day' rather 'days'
switch($interval)
{
case "m":
$months_difference = floor($difference / 60 / 60 / 24 /
29);
while (mktime(date("H", $datefrom), date("i", $datefrom),
date("s", $datefrom), date("n", $datefrom)+($months_difference),
date("j", $dateto), date("Y", $datefrom)) < $dateto)
{
$months_difference++;
}
$datediff = $months_difference;
// We need this in here because it is possible
// to have an 'm' interval and a months
// difference of 12 because we are using 29 days
// in a month
if($datediff==12)
{
$datediff--;
}
$res = ($datediff==1) ? "$datediff month ago" : "$datediff
months ago";
break;
case "y":
$datediff = floor($difference / 60 / 60 / 24 / 365);
$res = ($datediff==1) ? "$datediff year ago" : "$datediff
years ago";
break;
case "d":
$datediff = floor($difference / 60 / 60 / 24);
$res = ($datediff==1) ? "$datediff day ago" : "$datediff
days ago";
break;
case "ww":
$datediff = floor($difference / 60 / 60 / 24 / 7);
$res = ($datediff==1) ? "$datediff week ago" : "$datediff
weeks ago";
break;
case "h":
$datediff = floor($difference / 60 / 60);
$res = ($datediff==1) ? "$datediff hour ago" : "$datediff
hours ago";
break;
case "n":
$datediff = floor($difference / 60);
$res = ($datediff==1) ? "$datediff minute ago" :
"$datediff minutes ago";
break;
case "s":
$datediff = $difference;
$res = ($datediff==1) ? "$datediff second ago" :
"$datediff seconds ago";
break;
}
return $res;
}
# ***** BEGIN LICENSE BLOCK *****
# This file is part of phpTumblr.
# Copyright (c) 2006 Simon Richard and contributors. All rights
# reserved.
#
# phpTumblr is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# phpTumblr is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with phpTumblr; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
/* Execution time counter */
$nStartTime = microtime(true);
/* First, you have to include some files :
/ * The Clearbricks _common.php file
/ * The Tumblr class itself
/*/
require dirname(__FILE__).'/tumblr_feed/_common.php';
require dirname(__FILE__).'/tumblr_feed/class.read.tumblr.php';
require dirname(__FILE__).'/tumblr_feed/class.read.tumblr.cache.php';
/* Now you can initiate the Tumblr object with the ID of the Tumblelog you want read from as param.
/
/ function __construct($sTumblrID = null,$sHTTPUserAgent = 'phpTumblr')
/ * Initialize the Tumblr object, take a Tumblr ID as param.
/ * Optionally take a second param, a string that will be the HTTP User Agent used for the requests made to the API.
/*/
//$oTumblr = new readTumblr('3cdblog');
$oTumblr = new readTumblrCache('3cdblog','phpTumblr',dirname(__FILE__).'/tumblr_feed/tmp',3600);
/* Now, it's time to do some requests from this API. This code will request, in the order:
/ * 3 video posts
/ * All regular posts
/ * The posts with the ID 39185133
/
/ function getPosts($nStart = 0,$mNum = 20,$sType = null,$nID = null)
/ * Request $mNum $sType posts starting from $nStart.
/ * Take posts of all types if $sType = null.
/
/ OR
/ * If $mNum = 'all', get all $sType posts starting from $nStart
/ * Take posts of all types if $sType = null.
/
/ OR
/ * If $nID is given, request the post with the ID $nID.
/*/
$oTumblr->getPosts(0,5, 'all');
//$oTumblr->getPosts(null,'all','regular');
//$oTumblr->getPosts(null,null,null,36624807);
/* You're quite done! Now, you can get the array that contain the result.
/
/ function dumpArray($bChrono = false,$bDebug = false)
/ * Sort the array in chronological order if $bChrono is true, inverse if false.
/ * Return the array-formated content of the requests made to the API.
/ * If $bDebug = true, return raw decoded JSON from the last request in ['temp'] key of the array. This option was mainly created to help me while dev.
/*/
$aTumblr = $oTumblr->dumpArray();
/* Execution time counter
$nEndTime = microtime(true);
$nExecTime = $nEndTime - $nStartTime;
if ($aTumblr['stats']['num-inarray'] > 0) { $nExecTimePerPost = $nExecTime / $aTumblr['stats']['num-inarray']; } else { $nExecTimePerPost = 0; }*/
//header('Content-Type: text/html; charset=utf-8');
//echo $aTumblr['stats']['num-inarray'].' posts parsed in '.$nExecTime.'s, that means '.$nExecTimePerPost.'s per post !'."<br /><br />";
function string_ender($str) {
$lastChr = $str[strlen($str)-1];
if ($lastChr != "." && $lastChr != "?" && $lastChr != "!")
$str .= ".";
$str .= " ";
return $str;
}
foreach($aTumblr[posts] as $post) {
$short_text = null;
$img_src = null;
//see if there's a thumbnail attached to this post
if (is_array($post[content][photos]) && isset($post[content][photos][0]['url-75sq'])) {
$img_src = $post[content][photos][0]['url-75sq'];
}
//get the content text
if ($post[content][text]) {
$short_text .= strip_tags($post[content][text]);
$short_text = string_ender($short_text);
}
//get the description text
if ($post[content][description]){
$short_text .= strip_tags($post[content][description]);
$short_text = string_ender($short_text);
}
//get the caption text
if ($post[content][caption]) {
$short_text .= strip_tags($post[content][caption]);
$short_text = string_ender($short_text);
}
//get the body text
if ($post[content][body]) {
$short_text .= strip_tags($post[content][body]);
$short_text = string_ender($short_text);
}
//truncate at 100 characters, track back to the last space, add an ellipsis
if (strlen($short_text) > 100) {
$short_text = substr($short_text, 0, 100);
$cutoff = strripos($short_text, " ");
$short_text = trim(substr($short_text, 0, $cutoff)) . "...";
}
if ($short_text) {
//display the thumbnail
/*if ($img_src) {
echo "<li class=\"tall\">";
echo "<img src=\"" . $img_src . "\">";
}
else */
echo "<li>";
//time
echo "<span class=\"timeago\">" . strtoupper(date("l F j, Y", $post[time])) . "</span><br/>";
//text
echo $short_text . "<br/>";
//link
echo "<a href=\"". $post[url] . "\">read more</a>";
//echo "<div class=\"timeago\">" . TimeAgo($post[time]) . "</div>";
echo "</li>";
}
}
?>
</ul>
<pre>
<?php //print_r($aTumblr[posts]); ?>
</pre>
</div>
<!-- InstanceEndEditable -->
</div><!--Content-->
</div><!--wrapper-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-6941318-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
<!-- InstanceEnd --></html>