Anonymous avatar Anonymous committed 2c56122

more polish and cleanup

Comments (0)

Files changed (30)

media/css/ochsbase.css

    * See README for instructions on how to use.
   
 ----------------------------------------------------------------------- */
-a:link {color:#FF6600;text-decoration:none;}
-a:visited {color:#FF6600;text-decoration:none;}
-a:hover {color:#000;text-decoration:underline;}
-.container {margin-top:20px;!important;}
-.container h4 {margin-bottom:0px;}
-.eyebrow {height:18px;font-color:#fff;font-size:1.1em;padding:5px 15px 5px 10px;margin:5px 0 10px 0;}
-.eyebrow li [background-image:url(http://www.ochscms.org/media/img/eyebrow-bkgd.gif);background-repeat:repeat-none;}
-.eyebrow a:link {color:#FF6600;;text-decoration:none;}
-.eyebrow a:visited {color:#FF6600;text-decoration:none;}
-.eyebrow a:hover {color:#000;text-decoration:underline;}
-.leaderboard {margin:0 0 15px 0;}
-.nav {background-color:#ccc;margin-bottom:-10px;padding:5px 0 0 0px;border-bottom:3px #ccc solid;}
-.nav ul {list-style-type:none;margin-bottom:3px;padding:0;}
-.nav ul li {display:inline;margin:0 10px 0 0;padding:5px 10px;}
-.footernav {margin-bottom:10px;padding:0;border-bottom:3px;}
-.footernav ul {list-style-type:none;margin-bottom:3px;padding:0;}
-.footernav ul li {display:inline;margin:0 10px 0 0;padding:5px 10px;}
-.flag {margin-top:20px;margin-bottom:15px;padding:0 0 5px 0;border-bottom:3px #ccc solid;}
-.flag h1 {color:#FF6600;}
-.tagline {font-size:.9em;margin:-15px 0 0 0;}
-.mainbox {margin-bottom:30px;padding:0px 0px 10px 0px;border-bottom:3px #ccc solid;}
-.caption {font-size:.9em;}
-.largephotocaption {border-right:1px #000 solid;padding:0 10px 0 0px;margin:15px 5px 5px 0;font-size:1.2em;}
-.medphotocaption {width:400px;padding15px;margin:10px 0px 5px 0;font-size:.9em;}
-.largephotocredit {padding:65px 10px 0 30px;margin:15px 10px 5px 0;font-size:.9em;font-style:italic;}
-.editorialslot2 {height:300px;border:1px #ccc solid;padding:20px;margin:40px 0px 0 0px;font-size:1em;}
-.editorialslot3 {padding:0 0 0 10px;margin:40px 0 0 0px;font-size:.9em;}
-.editorialslot4 {padding:0 0 0 10px;margin:0px;font-size:1em;}
-.editorialslot5 {height:270px;border:1px #ccc solid;padding:20px;margin:0px;font-size:1em;}
-.editorialslot7 {border:1px #ccc solid;padding:20px;margin:0px;font-size:1em;}
-.editorialslot8 {border:1px #ccc solid;padding:20px;margin:0px;font-size:1em;}
-.secondary {margin-top:20px;border:1px #ccc solid;}
+a:link {
+color:#FF6600;
+text-decoration:none;
+}
+a:visited {
+color:#FF6600;
+text-decoration:none;
+}
+a:hover {
+color:#000;
+text-decoration:underline;
+}
+.container {
+margin-top:20px;!important;
+}
+.container h4 {
+margin-bottom:0px;
+}
+/* -----------------------------------------------------------------------
+
+Header
+  
+----------------------------------------------------------------------- */
+.eyebrow {
+height:18px;
+font-color:#fff;
+font-size:1.1em;
+padding:5px 15px 5px 10px;
+margin:5px 0 10px 0;
+}
+.eyebrow li {
+background-image:url(http://www.ochscms.org/media/img/eyebrow-bkgd.gif);
+background-repeat:repeat-none;
+}
+.eyebrow a:link {
+color:#FF6600;
+text-decoration:none;
+}
+.eyebrow a:visited {
+color:#FF6600;
+text-decoration:none;
+}
+.eyebrow a:hover {
+color:#000;
+text-decoration:underline;
+}
+.breakingnews {
+height:25px;
+font-color:#fff;
+font-size:1.3em;
+padding:8px 15px 5px 10px;
+margin:0px 0 10px 0;
+background-color:#b22222;
+}
+.breakingnews li {
+}
+.breakingnews a:link {
+color:#fff;
+text-decoration:none;
+}
+.breakingnews a:visited {
+color:#000;
+text-decoration:none;
+}
+.breakingnews a:hover {
+color:#000;
+text-decoration:underline;
+}
+.leaderboard {
+margin:0 0 15px 0;
+}
+.nav {
+background-color:#ccc;
+margin-bottom:-10px;
+padding:5px 0 0 0px;
+border-bottom:3px #ccc solid;
+}
+.nav ul {
+list-style-type:none;
+margin-bottom:3px;
+padding:0;
+}
+.nav ul li {
+display:inline;
+margin:0 10px 0 0;
+padding:5px 10px;
+}
+.flag {
+margin-top:20px;
+margin-bottom:15px;
+padding:0 0 5px 0;
+border-bottom:3px #ccc solid;
+}
+.flag h1 {
+color:#FF6600;
+}
+.tagline {
+font-size:.9em;
+margin:-15px 0 0 0;
+}
+/* -----------------------------------------------------------------------
+
+Homepage
+  
+----------------------------------------------------------------------- */
+.mainbox {
+margin-bottom:30px;
+padding:0px 0px 10px 0px;
+border-bottom:3px #ccc solid;
+}
+.caption {
+font-size:.9em;
+}
+.largephotocaption {
+border-right:1px #000 solid;
+padding:0 10px 0 0px;
+margin:15px 5px 5px 0;
+font-size:1.2em;
+}
+.medphotocaption {
+width:400px;
+padding15px;
+margin:10px 0px 5px 0;
+font-size:.9em;
+}
+.largephotocredit {
+padding:65px 10px 0 30px;
+margin:15px 10px 5px 0;
+font-size:.9em;
+font-style:italic;
+}
+.editorialslot2 {
+height:300px;
+border:1px #ccc solid;
+padding:10px;
+margin:40px 0px 0 0px;
+font-size:1em;
+}
+.editorialslot3 {
+padding:0 0 0 10px;
+margin:40px 0 0 0px;
+font-size:.9em;
+}
+.editorialslot4 {
+padding:0 0 0 10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot5 {
+height:270px;
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot7 {
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot8 {
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.secondary {
+margin-top:20px;
+border:1px #ccc solid;
+}
 .bigbox {}
-.story {border-bottom:1px #ccc solid;margin:0px 0 0px 20px;padding:0px 0px 0px 20px;}
-.leadstoryvert {margin:0 0 20px 0px;padding:0px;}
-.pullquote {background-image:url(http://tnjn.com/media/images/quote.gif);background-repeat:no-repeat;font-family:'Times New Roman',Times,serif;font-size:1.9em;margin-bottom: 8px;margin-right: 20px;margin-top: 8px;padding: 3px;text-align:right;width: 200px;}
-.pullquotesource {float: right;font-family:'Times New Roman', Times, serif;font-size: 0.9em;font-style: italic;padding-top: 4px;text-align: right;}
-.mainbox .story h2 {margin-bottom:0px;font-size:1.3em;}
-.mainbox .leadstoryvert h2 {margin-bottom:0px;font-size:1.8em;}
-.mainbox .story .dateline {margin:0px;font-size:.9em;}
-.mainbox .leadstoryvert .dateline {margin:0px;font-size:.9em;}
-.photostory {padding:0px 0px 0 0;margin:10px 0 10px 0px;}
-.topvideo {margin:40px 0 20px 15px;padding-left:15px;font-size:.9em;}
-.middle {border:1px #000 solid;background-color:#000;margin-bottom:40px;}
-.featurecallout {border:1px #ccc solid;margin:0 0 40px 5px;padding:15px 0 20px 18px;font-size:.9em;}
+/* -----------------------------------------------------------------------
+
+Story
+  
+----------------------------------------------------------------------- */
+.story {
+border-bottom:1px #ccc solid;
+margin:0px 0 0px 15px;
+padding:0px 0px 0px 20px;
+}
+.leadstoryvert {
+margin:0 0 20px 0px;
+padding:0px;
+}
+blockquote {
+display: block;
+padding: 0 60px;
+width: 350px;
+}
+blockquote:before, blockquote:after {
+color: #69c;
+display: block;
+font-size: 700%;
+width: 50px;
+}
+blockquote:before {
+content: open-quote;
+height: 0;
+margin-left: -0.55em;
+}
+blockquote:after {
+content: close-quote;
+height: 50px;
+margin-top: -70px;
+margin-left: 360px;
+}
+.pullquote {
+display: block;
+padding: 0 30px;
+float:left;
+text-align:left;
+width: 100px;
+font-size: 1.4em;
+}
+.pullquote:before, pullquote:after {
+color: #000;
+display: block;
+font-size: 700%;
+width: 50px;
+}
+.pullquote:before {
+content: open-quote;
+height: 0;
+margin-left: -0.55em;
+}
+.pullquote:after {
+content: close-quote;
+height: 50px;
+margin-top: -70px;
+margin-left: 30px;
+}
+.pullquotesource {
+float: right;
+font-family:'Times New Roman', Times, serif;
+font-size: 0.9em;
+font-style: italic;
+padding-top: 4px;
+text-align: right;
+}
+.mainbox .story h2 {
+margin-bottom:0px;
+font-size:1.3em;
+}
+.mainbox .leadstoryvert h2 {
+margin-bottom:0px;
+font-size:1.8em;
+}
+.mainbox .story .dateline {
+margin:0px;
+font-size:.9em;
+}
+.mainbox .leadstoryvert .dateline {
+margin:0px;
+font-size:.9em;
+}
+.photostory {
+padding:0px 0px 0 0;
+margin:10px 0 10px 0px;
+}
+.topvideo {
+margin:40px 0 20px 15px;
+padding-left:15px;
+font-size:.9em;
+}
+.middle {
+border:1px #000 solid;
+background-color:#000;
+margin-bottom:40px;
+}
+.featurecallout {
+border:1px #ccc solid;
+margin:0 0 40px 5px;
+padding:15px 0 20px 18px;
+font-size:.9em;
+}
 
 /* -----------------------------------------------------------------------
 
 Footer
   
 ----------------------------------------------------------------------- */
-.footer {background-color:#ccc;margin-top:20px;margin-bottom:20px;padding:20px 0 5px 20px;font-size:.9em;}
+.footer {
+background-color:#ccc;
+margin-top:20px;
+margin-bottom:20px;
+padding:20px 0 5px 20px;
+font-size:.9em;
+}
+.footernav {
+margin-bottom:10px;
+padding:0;
+border-bottom:3px;
+}
+.footernav ul {
+list-style-type:none;
+margin-bottom:3px;
+padding:0;
+}
+.footernav ul li {
+display:inline;
+margin:0 10px 0 0;
+padding:5px 10px;
+}
 
 /* -----------------------------------------------------------------------
 
 Profiles
   
 ----------------------------------------------------------------------- */
-div.botoutline {border-bottom:thin black solid;}
-div.centerimg {text-align:center;padding-top:1em;padding-bottom:1em;}				div.toppad {padding-top:1em;}														span.categories {font-size:2.1em;}										
-span.smallcaps {font-variant:small-caps;font-size:1.3em;font-weight:bold;}			img.hdsht {border:1px #000 solid;}										
-img.thumbphoto {border:1px #000 solid;}	
+div.botoutline {
+border-bottom:thin black solid;
+}
+div.centerimg {
+text-align:center;
+padding-top:1em;
+padding-bottom:1em;
+}				
+div.toppad {
+padding-top:1em;
+}														
+span.categories {
+font-size:2.1em;
+}										
+span.smallcaps {
+font-variant:small-caps;
+font-size:1.3em;
+font-weight:bold;
+}			
+img.hdsht {
+border:1px #000 solid;
+}										
+img.thumbphoto {
+border:1px #000 solid;
+}	
 
 /* -----------------------------------------------------------------------
 
 Story
 ----------------------------------------------------------------------- */			
-.latest_stories {border:1px #ccc solid;padding:20px 5px 15px 15px;margin:20px 0 20px 0px;font-size:1.2em;}			
-.rightsidebar ul {margin: 0 0 5px 0; padding:0;}			
-.leftsidebar ul {margin: 0 0 5px 0; padding:0;}
+.latest_stories {
+border:1px #ccc solid;
+padding:20px 5px 15px 15px;
+margin:20px 0 20px 0px;
+font-size:1.2em;
+}			
+.rightsidebar ul {
+margin: 0 0 5px 0;
+padding:0;
+}			
+.leftsidebar ul {
+margin: 0 0 5px 0;
+padding:0;
+}

media/css/screen.r1263445100.css

+*, html, body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h5, h5, h6, pre, form, label, fieldset, input, p, blockquote, th, td { margin:0; padding:0 }
+table {border-collapse:collapse;border-spacing:0;}
+fieldset, img {border:0}
+address, caption, cite, code, dfn, em, strong, th, var {font-style:normal;font-weight:normal;}
+caption, th {text-align:left;}
+h1, h2, h3, h5, h5, h6 {font-size:100%;}
+q:before, q:after {content:'';}
+
+/* Global reset-RESET */
+/* The below restores some sensible defaults */
+strong {font-weight:bold;}
+em {font-style:italic;font-weight:bold;}
+ol, ul, li {list-style-position:outside;list-style:none;}
+* a {position:relative;} /* Gets links displaying over a PNG background */
+a {outline:none;} /* Gets rid of Firefox's dotted borders */
+a img {border:none;} /* Gets rid of IE's blue borders *//* -----------------------------------------------------------------------
+
+
+ Ochs Base CSS
+ http://intercollegiateonlinenewsnetwork.com 
+ sbaird
+
+   * Copyright (c) 2009-Present. 
+   * See README for instructions on how to use.
+  
+----------------------------------------------------------------------- */
+a:link {
+color:#FF6600;
+text-decoration:none;
+}
+a:visited {
+color:#FF6600;
+text-decoration:none;
+}
+a:hover {
+color:#000;
+text-decoration:underline;
+}
+.container {
+margin-top:20px;!important;
+}
+.container h4 {
+margin-bottom:0px;
+}
+/* -----------------------------------------------------------------------
+
+Header
+  
+----------------------------------------------------------------------- */
+.eyebrow {
+height:18px;
+font-color:#fff;
+font-size:1.1em;
+padding:5px 15px 5px 10px;
+margin:5px 0 10px 0;
+}
+.eyebrow li {
+background-image:url(http://www.ochscms.org/media/img/eyebrow-bkgd.gif);
+background-repeat:repeat-none;
+}
+.eyebrow a:link {
+color:#FF6600;
+text-decoration:none;
+}
+.eyebrow a:visited {
+color:#FF6600;
+text-decoration:none;
+}
+.eyebrow a:hover {
+color:#000;
+text-decoration:underline;
+}
+.breakingnews {
+height:25px;
+font-color:#fff;
+font-size:1.3em;
+padding:8px 15px 5px 10px;
+margin:0px 0 10px 0;
+background-color:#b22222;
+}
+.breakingnews li {
+}
+.breakingnews a:link {
+color:#fff;
+text-decoration:none;
+}
+.breakingnews a:visited {
+color:#000;
+text-decoration:none;
+}
+.breakingnews a:hover {
+color:#000;
+text-decoration:underline;
+}
+.leaderboard {
+margin:0 0 15px 0;
+}
+.nav {
+background-color:#ccc;
+margin-bottom:-10px;
+padding:5px 0 0 0px;
+border-bottom:3px #ccc solid;
+}
+.nav ul {
+list-style-type:none;
+margin-bottom:3px;
+padding:0;
+}
+.nav ul li {
+display:inline;
+margin:0 10px 0 0;
+padding:5px 10px;
+}
+.flag {
+margin-top:20px;
+margin-bottom:15px;
+padding:0 0 5px 0;
+border-bottom:3px #ccc solid;
+}
+.flag h1 {
+color:#FF6600;
+}
+.tagline {
+font-size:.9em;
+margin:-15px 0 0 0;
+}
+/* -----------------------------------------------------------------------
+
+Homepage
+  
+----------------------------------------------------------------------- */
+.mainbox {
+margin-bottom:30px;
+padding:0px 0px 10px 0px;
+border-bottom:3px #ccc solid;
+}
+.caption {
+font-size:.9em;
+}
+.largephotocaption {
+border-right:1px #000 solid;
+padding:0 10px 0 0px;
+margin:15px 5px 5px 0;
+font-size:1.2em;
+}
+.medphotocaption {
+width:400px;
+padding15px;
+margin:10px 0px 5px 0;
+font-size:.9em;
+}
+.largephotocredit {
+padding:65px 10px 0 30px;
+margin:15px 10px 5px 0;
+font-size:.9em;
+font-style:italic;
+}
+.editorialslot2 {
+height:300px;
+border:1px #ccc solid;
+padding:10px;
+margin:40px 0px 0 0px;
+font-size:1em;
+}
+.editorialslot3 {
+padding:0 0 0 10px;
+margin:40px 0 0 0px;
+font-size:.9em;
+}
+.editorialslot4 {
+padding:0 0 0 10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot5 {
+height:270px;
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot7 {
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.editorialslot8 {
+border:1px #ccc solid;
+padding:10px;
+margin:0px;
+font-size:1em;
+}
+.secondary {
+margin-top:20px;
+border:1px #ccc solid;
+}
+.bigbox {}
+/* -----------------------------------------------------------------------
+
+Story
+  
+----------------------------------------------------------------------- */
+.story {
+border-bottom:1px #ccc solid;
+margin:0px 0 0px 15px;
+padding:0px 0px 0px 20px;
+}
+.leadstoryvert {
+margin:0 0 20px 0px;
+padding:0px;
+}
+blockquote {
+display: block;
+padding: 0 60px;
+width: 350px;
+}
+blockquote:before, blockquote:after {
+color: #69c;
+display: block;
+font-size: 700%;
+width: 50px;
+}
+blockquote:before {
+content: open-quote;
+height: 0;
+margin-left: -0.55em;
+}
+blockquote:after {
+content: close-quote;
+height: 50px;
+margin-top: -70px;
+margin-left: 360px;
+}
+.pullquote {
+display: block;
+padding: 0 30px;
+float:left;
+text-align:left;
+width: 100px;
+font-size: 1.4em;
+}
+.pullquote:before, pullquote:after {
+color: #000;
+display: block;
+font-size: 700%;
+width: 50px;
+}
+.pullquote:before {
+content: open-quote;
+height: 0;
+margin-left: -0.55em;
+}
+.pullquote:after {
+content: close-quote;
+height: 50px;
+margin-top: -70px;
+margin-left: 30px;
+}
+.pullquotesource {
+float: right;
+font-family:'Times New Roman', Times, serif;
+font-size: 0.9em;
+font-style: italic;
+padding-top: 4px;
+text-align: right;
+}
+.mainbox .story h2 {
+margin-bottom:0px;
+font-size:1.3em;
+}
+.mainbox .leadstoryvert h2 {
+margin-bottom:0px;
+font-size:1.8em;
+}
+.mainbox .story .dateline {
+margin:0px;
+font-size:.9em;
+}
+.mainbox .leadstoryvert .dateline {
+margin:0px;
+font-size:.9em;
+}
+.photostory {
+padding:0px 0px 0 0;
+margin:10px 0 10px 0px;
+}
+.topvideo {
+margin:40px 0 20px 15px;
+padding-left:15px;
+font-size:.9em;
+}
+.middle {
+border:1px #000 solid;
+background-color:#000;
+margin-bottom:40px;
+}
+.featurecallout {
+border:1px #ccc solid;
+margin:0 0 40px 5px;
+padding:15px 0 20px 18px;
+font-size:.9em;
+}
+
+/* -----------------------------------------------------------------------
+
+Footer
+  
+----------------------------------------------------------------------- */
+.footer {
+background-color:#ccc;
+margin-top:20px;
+margin-bottom:20px;
+padding:20px 0 5px 20px;
+font-size:.9em;
+}
+.footernav {
+margin-bottom:10px;
+padding:0;
+border-bottom:3px;
+}
+.footernav ul {
+list-style-type:none;
+margin-bottom:3px;
+padding:0;
+}
+.footernav ul li {
+display:inline;
+margin:0 10px 0 0;
+padding:5px 10px;
+}
+
+/* -----------------------------------------------------------------------
+
+Profiles
+  
+----------------------------------------------------------------------- */
+div.botoutline {
+border-bottom:thin black solid;
+}
+div.centerimg {
+text-align:center;
+padding-top:1em;
+padding-bottom:1em;
+}				
+div.toppad {
+padding-top:1em;
+}														
+span.categories {
+font-size:2.1em;
+}										
+span.smallcaps {
+font-variant:small-caps;
+font-size:1.3em;
+font-weight:bold;
+}			
+img.hdsht {
+border:1px #000 solid;
+}										
+img.thumbphoto {
+border:1px #000 solid;
+}	
+
+/* -----------------------------------------------------------------------
+
+Story
+----------------------------------------------------------------------- */			
+.latest_stories {
+border:1px #ccc solid;
+padding:20px 5px 15px 15px;
+margin:20px 0 20px 0px;
+font-size:1.2em;
+}			
+.rightsidebar ul {
+margin: 0 0 5px 0;
+padding:0;
+}			
+.leftsidebar ul {
+margin: 0 0 5px 0;
+padding:0;
+}/* -----------------------------------------------------------------------
+
+
+ Blueprint CSS Framework 0.9
+ http://blueprintcss.org
+
+   * Copyright (c) 2007-Present. See LICENSE for more info.
+   * See README for instructions on how to use Blueprint.
+   * For credits and origins, see AUTHORS.
+   * This is a compressed file. See the sources in the 'src' directory.
+
+----------------------------------------------------------------------- */
+
+/* reset.css */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
+body {line-height:1.5;}
+table {border-collapse:separate;border-spacing:0;}
+caption, th, td {text-align:left;font-weight:normal;}
+table, td, th {vertical-align:middle;}
+blockquote:before, blockquote:after, q:before, q:after {content:"";}
+blockquote, q {quotes:"" "";}
+a img {border:none;}
+
+/* typography.css */
+html {font-size:100.01%;}
+body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
+h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
+h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
+h2 {font-size:2em;margin-bottom:0.75em;}
+h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
+h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
+h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
+h6 {font-size:1em;font-weight:bold;}
+h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
+p {margin:0 0 1.5em;}
+p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
+p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
+a:focus, a:hover {color:#000;}
+a {color:#009;text-decoration:underline;}
+blockquote {margin:1.5em;color:#666;font-style:italic;}
+strong {font-weight:bold;}
+em, dfn {font-style:italic;}
+dfn {font-weight:bold;}
+sup, sub {line-height:0;}
+abbr, acronym {border-bottom:1px dotted #666;}
+address {margin:0 0 1.5em;font-style:italic;}
+del {color:#666;}
+pre {margin:1.5em 0;white-space:pre;}
+pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
+li ul, li ol {margin:0;}
+ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
+ul {list-style-type:disc;}
+ol {list-style-type:decimal;}
+dl {margin:0 0 1.5em 0;}
+dl dt {font-weight:bold;}
+dd {margin-left:1.5em;}
+table {margin-bottom:1.4em;width:100%;}
+th {font-weight:bold;}
+thead th {background:#c3d9ff;}
+th, td, caption {padding:4px 10px 4px 5px;}
+tr.even td {background:#e5ecf9;}
+tfoot {font-style:italic;}
+caption {background:#eee;}
+.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
+.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
+.hide {display:none;}
+.quiet {color:#666;}
+.loud {color:#000;}
+.highlight {background:#ff0;}
+.added {background:#060;color:#fff;}
+.removed {background:#900;color:#fff;}
+.first {margin-left:0;padding-left:0;}
+.last {margin-right:0;padding-right:0;}
+.top {margin-top:0;padding-top:0;}
+.bottom {margin-bottom:0;padding-bottom:0;}
+
+/* forms.css */
+label {font-weight:bold;}
+fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
+legend {font-weight:bold;font-size:1.2em;}
+input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
+input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
+input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
+input.text, input.title {width:300px;padding:5px;}
+input.title {font-size:1.5em;}
+textarea {width:390px;height:250px;padding:5px;}
+input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
+form.inline {line-height:3;}
+form.inline p {margin-bottom:0;}
+.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
+.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
+.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
+.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
+.error a {color:#8a1f11;}
+.notice a {color:#514721;}
+.success a {color:#264409;}
+
+/* grid.css */
+.container {width:950px;margin:0 auto;}
+.showgrid {background:url(src/grid.png);}
+.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;}
+.last, div.last {margin-right:0;}
+.span-1 {width:30px;}
+.span-2 {width:70px;}
+.span-3 {width:110px;}
+.span-4 {width:150px;}
+.span-5 {width:190px;}
+.span-6 {width:230px;}
+.span-7 {width:270px;}
+.span-8 {width:310px;}
+.span-9 {width:350px;}
+.span-10 {width:390px;}
+.span-11 {width:430px;}
+.span-12 {width:470px;}
+.span-13 {width:510px;}
+.span-14 {width:550px;}
+.span-15 {width:590px;}
+.span-16 {width:630px;}
+.span-17 {width:670px;}
+.span-18 {width:710px;}
+.span-19 {width:750px;}
+.span-20 {width:790px;}
+.span-21 {width:830px;}
+.span-22 {width:870px;}
+.span-23 {width:910px;}
+.span-24, div.span-24 {width:950px;margin-right:0;}
+input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}
+input.span-1, textarea.span-1 {width:18px!important;}
+input.span-2, textarea.span-2 {width:58px!important;}
+input.span-3, textarea.span-3 {width:98px!important;}
+input.span-4, textarea.span-4 {width:138px!important;}
+input.span-5, textarea.span-5 {width:178px!important;}
+input.span-6, textarea.span-6 {width:218px!important;}
+input.span-7, textarea.span-7 {width:258px!important;}
+input.span-8, textarea.span-8 {width:298px!important;}
+input.span-9, textarea.span-9 {width:338px!important;}
+input.span-10, textarea.span-10 {width:378px!important;}
+input.span-11, textarea.span-11 {width:418px!important;}
+input.span-12, textarea.span-12 {width:458px!important;}
+input.span-13, textarea.span-13 {width:498px!important;}
+input.span-14, textarea.span-14 {width:538px!important;}
+input.span-15, textarea.span-15 {width:578px!important;}
+input.span-16, textarea.span-16 {width:618px!important;}
+input.span-17, textarea.span-17 {width:658px!important;}
+input.span-18, textarea.span-18 {width:698px!important;}
+input.span-19, textarea.span-19 {width:738px!important;}
+input.span-20, textarea.span-20 {width:778px!important;}
+input.span-21, textarea.span-21 {width:818px!important;}
+input.span-22, textarea.span-22 {width:858px!important;}
+input.span-23, textarea.span-23 {width:898px!important;}
+input.span-24, textarea.span-24 {width:938px!important;}
+.append-1 {padding-right:40px;}
+.append-2 {padding-right:80px;}
+.append-3 {padding-right:120px;}
+.append-4 {padding-right:160px;}
+.append-5 {padding-right:200px;}
+.append-6 {padding-right:240px;}
+.append-7 {padding-right:280px;}
+.append-8 {padding-right:320px;}
+.append-9 {padding-right:360px;}
+.append-10 {padding-right:400px;}
+.append-11 {padding-right:440px;}
+.append-12 {padding-right:480px;}
+.append-13 {padding-right:520px;}
+.append-14 {padding-right:560px;}
+.append-15 {padding-right:600px;}
+.append-16 {padding-right:640px;}
+.append-17 {padding-right:680px;}
+.append-18 {padding-right:720px;}
+.append-19 {padding-right:760px;}
+.append-20 {padding-right:800px;}
+.append-21 {padding-right:840px;}
+.append-22 {padding-right:880px;}
+.append-23 {padding-right:920px;}
+.prepend-1 {padding-left:40px;}
+.prepend-2 {padding-left:80px;}
+.prepend-3 {padding-left:120px;}
+.prepend-4 {padding-left:160px;}
+.prepend-5 {padding-left:200px;}
+.prepend-6 {padding-left:240px;}
+.prepend-7 {padding-left:280px;}
+.prepend-8 {padding-left:320px;}
+.prepend-9 {padding-left:360px;}
+.prepend-10 {padding-left:400px;}
+.prepend-11 {padding-left:440px;}
+.prepend-12 {padding-left:480px;}
+.prepend-13 {padding-left:520px;}
+.prepend-14 {padding-left:560px;}
+.prepend-15 {padding-left:600px;}
+.prepend-16 {padding-left:640px;}
+.prepend-17 {padding-left:680px;}
+.prepend-18 {padding-left:720px;}
+.prepend-19 {padding-left:760px;}
+.prepend-20 {padding-left:800px;}
+.prepend-21 {padding-left:840px;}
+.prepend-22 {padding-left:880px;}
+.prepend-23 {padding-left:920px;}
+div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
+div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
+.pull-1 {margin-left:-40px;}
+.pull-2 {margin-left:-80px;}
+.pull-3 {margin-left:-120px;}
+.pull-4 {margin-left:-160px;}
+.pull-5 {margin-left:-200px;}
+.pull-6 {margin-left:-240px;}
+.pull-7 {margin-left:-280px;}
+.pull-8 {margin-left:-320px;}
+.pull-9 {margin-left:-360px;}
+.pull-10 {margin-left:-400px;}
+.pull-11 {margin-left:-440px;}
+.pull-12 {margin-left:-480px;}
+.pull-13 {margin-left:-520px;}
+.pull-14 {margin-left:-560px;}
+.pull-15 {margin-left:-600px;}
+.pull-16 {margin-left:-640px;}
+.pull-17 {margin-left:-680px;}
+.pull-18 {margin-left:-720px;}
+.pull-19 {margin-left:-760px;}
+.pull-20 {margin-left:-800px;}
+.pull-21 {margin-left:-840px;}
+.pull-22 {margin-left:-880px;}
+.pull-23 {margin-left:-920px;}
+.pull-24 {margin-left:-960px;}
+.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;}
+.push-1 {margin:0 -40px 1.5em 40px;}
+.push-2 {margin:0 -80px 1.5em 80px;}
+.push-3 {margin:0 -120px 1.5em 120px;}
+.push-4 {margin:0 -160px 1.5em 160px;}
+.push-5 {margin:0 -200px 1.5em 200px;}
+.push-6 {margin:0 -240px 1.5em 240px;}
+.push-7 {margin:0 -280px 1.5em 280px;}
+.push-8 {margin:0 -320px 1.5em 320px;}
+.push-9 {margin:0 -360px 1.5em 360px;}
+.push-10 {margin:0 -400px 1.5em 400px;}
+.push-11 {margin:0 -440px 1.5em 440px;}
+.push-12 {margin:0 -480px 1.5em 480px;}
+.push-13 {margin:0 -520px 1.5em 520px;}
+.push-14 {margin:0 -560px 1.5em 560px;}
+.push-15 {margin:0 -600px 1.5em 600px;}
+.push-16 {margin:0 -640px 1.5em 640px;}
+.push-17 {margin:0 -680px 1.5em 680px;}
+.push-18 {margin:0 -720px 1.5em 720px;}
+.push-19 {margin:0 -760px 1.5em 760px;}
+.push-20 {margin:0 -800px 1.5em 800px;}
+.push-21 {margin:0 -840px 1.5em 840px;}
+.push-22 {margin:0 -880px 1.5em 880px;}
+.push-23 {margin:0 -920px 1.5em 920px;}
+.push-24 {margin:0 -960px 1.5em 960px;}
+.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;}
+.prepend-top {margin-top:1.5em;}
+.append-bottom {margin-bottom:1.5em;}
+.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
+hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
+hr.space {background:#fff;color:#fff;visibility:hidden;}
+.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
+.clearfix, .container {display:block;}
+.clear {clear:both;}

media/js/pikachoose-min.js

+jQuery.iPikaChoose={build:function(user_options){var defaults={show_captions:true,slide_enabled:true,auto_play:false,show_prev_next:true,slide_speed:5000,thumb_width:90,thumb_height:60,buttons_text:{play:"",stop:"",previous:"Previous",next:"Next"},delay_caption:true,user_thumbs:false};return jQuery(this).each(function(){function LoadImages(){jQuery(this).bind("load",function(){jQuery(this).parent('div').prev().remove();images=jQuery(this).parents('ul').find('img');var w=jQuery(this).width();var h=jQuery(this).height();if(w===0){w=jQuery(this).attr("width")}if(h===0){h=jQuery(this).attr("height")}var rw=options.thumb_width/w;var rh=options.thumb_height/h;var ratio;if(rw<rh){ratio=rh;var left=((w*ratio-options.thumb_width)/2)*-1;left=Math.round(left);jQuery(this).css({left:left})}else{ratio=rw;var top=0;jQuery(this).css({top:top})}var width=Math.round(w*ratio);var height=Math.round(h*ratio);jQuery(this).css("position","relative");jQuery(this).width(width).height(height);var imgcss={width:width,height:height};jQuery(this).css(imgcss);jQuery(this).hover(function(){jQuery(this).fadeTo(250,1)},function(){if(!jQuery(this).hasClass("pika_selected")){jQuery(this).fadeTo(250,0.4)}});jQuery(this).fadeTo(250,0.4);if(jQuery(this).hasClass('pika_first')){jQuery(this).trigger("click",["auto"])}});var newImage=jQuery(this).clone(true).insertAfter(this);jQuery(this).hide();images=ulist.children('li').children('img')}var options=jQuery.extend(defaults,user_options);var images=jQuery(this).children('li').children('img');images.fadeOut(1);var ulist=jQuery(this);images.each(LoadImages);jQuery(this).before("<div class='pika_main'></div>");var main_div=jQuery(this).prev(".pika_main");if(options.slide_enabled){main_div.append("<div class='pika_play'></div>");var play_div=jQuery(this).prev(".pika_main").children(".pika_play");play_div.html("<a class='pika_play_button'>"+options.buttons_text.play+"</a><a class='pika_stop_button'>"+options.buttons_text.stop+"</a>");play_div.fadeOut(1);var play_anchor=play_div.children('a:first');var stop_anchor=play_div.children('a:last')}main_div.append("<div class='pika_subdiv'></div>");var sub_div=main_div.children(".pika_subdiv");sub_div.append("<img class='pika_back_img'/><img class='pika_main_img' />");var main_img=sub_div.children("img:last");var back_img=sub_div.children("img:first");sub_div.append("<div class='pika_prev_hover'></div><div class='pika_next_hover'></div>");var prevHover=sub_div.find('.pika_prev_hover');var nextHover=sub_div.find('.pika_next_hover');prevHover.hide();nextHover.hide();if(options.show_captions){main_div.append("<div class='pika_caption'></div>");var caption_div=main_div.children(".pika_caption")}jQuery(this).after("<div class='pika_navigation'></div>");var navigation_div=jQuery(this).next(".pika_navigation");navigation_div.prepend("<a>"+options.buttons_text.previous+"</a> :: <a>"+options.buttons_text.next+"</a>");var previous_image_anchor=navigation_div.children('a:first');var next_image_anchor=navigation_div.children('a:last');if(!options.show_prev_next){navigation_div.css("display","none")}var playing=options.auto_play;main_img.wrap("<a></a>");var main_link=main_img.parent("a");function activate(){images.bind("click",image_click);if(options.slide_enabled){if(options.auto_play){playing=true;play_anchor.hide();stop_anchor.show()}else{play_anchor.show();stop_anchor.hide()}}ulist.children("li:last").children("img").addClass("pika_last");ulist.children("li:first").children("img").addClass("pika_first");ulist.children("li").each(function(){jQuery(this).children("span").hide()});var divcss={width:options.thumb_width+"px",height:options.thumb_height+"px","list-style":"none",overflow:"hidden"};var licss={"list-style":"none",overflow:"hidden"};images.each(function(){jQuery(this).parent('li').css(licss);jQuery(this).wrap(document.createElement("div"));jQuery(this).parent('div').css(divcss);if(jQuery(this).attr('complete')===true&&jQuery(this).css('display')=="none"){jQuery(this).css({display:'inline'})}});previous_image_anchor.bind("click",previous_image);prevHover.bind("click",previous_image);next_image_anchor.bind("click",next_image);nextHover.bind("click",next_image);sub_div.mousemove(function(e){var w=sub_div.width();var x=e.pageX-sub_div.offset().left;if(x<w*0.3){prevHover.fadeIn('fast')}else{prevHover.fadeOut('fast')}if(x>w*0.7){nextHover.fadeIn('fast')}else{nextHover.fadeOut('fast')}});sub_div.mouseleave(function(){prevHover.fadeOut('fast');nextHover.fadeOut('fast')})}function image_click(event,how){if(how!="auto"){if(options.slide_enabled){stop_anchor.hide();play_anchor.show();playing=false}main_img.stop();main_img.dequeue();if(options.show_captions){caption_div.stop();caption_div.dequeue()}}if(options.user_thumbs){var image_source=jQuery(this).attr("ref")}else{var image_source=this.src}var image_link=jQuery(this).attr("rel");var image_caption=jQuery(this).parent().next("span").html();images.filter(".pika_selected").fadeTo(250,0.4);images.filter(".pika_selected").removeClass("pika_selected");jQuery(this).fadeTo(250,1);jQuery(this).addClass("pika_selected");if(options.show_captions){if(options.delay_caption){caption_div.fadeTo(800,0)}caption_div.fadeTo(500,0,function(){caption_div.html(image_caption);caption_div.fadeTo(800,1)})}var delay=100;if(main_img.attr('opacity')<0.8){delay=500}back_img.attr("src",main_img.attr("src"));main_img.fadeTo(delay,0.00,function(){main_img.unbind('load');main_img.bind('load',function(){main_img.fadeTo(800,1,function(){if(playing){jQuery(this).animate({opactiy:1},options.slide_speed,function(){if(playing){next_image_anchor.trigger("click",["auto"])}})}back_img.attr("src",main_img.attr("src"))})});main_img.attr("src",image_source);main_link.attr("href",image_link)})}function next_image(event,how){if(images.filter(".pika_selected").hasClass("pika_last")){images.filter(":first").trigger("click",how)}else{images.filter(".pika_selected").parents('li').next('li').find('img').trigger("click",how)}}function previous_image(event,how){if(images.filter(".pika_selected").hasClass("pika_first")){images.filter(":last").trigger("click",how)}else{images.filter(".pika_selected").parents('li').prev('li').find('img').trigger("click",how)}}function play_button(){main_div.hover(function(){play_div.fadeIn(400)},function(){play_div.fadeOut(400)});play_anchor.bind("click",function(){main_img.stop();main_img.dequeue();if(options.show_captions){caption_div.stop();caption_div.dequeue()}playing=true;next_image_anchor.trigger("click",["auto"]);jQuery(this).hide();stop_anchor.show()});stop_anchor.bind("click",function(){playing=false;jQuery(this).hide();play_anchor.show()})}if(options.slide_enabled){play_button()}activate()})}};jQuery.fn.PikaChoose=jQuery.iPikaChoose.build;
 class StoryAdmin(admin.ModelAdmin):
     prepopulated_fields = {"slug": ("headline",)}
     inlines = [StoryBylineInline, StoryLinkInline, StoryNotesAdminInline]
+    list_filter = ('status',)
+    search_fields = ('summary', 'headline', 'body')
+    save_on_top = True
     formfield_overrides = {
         models.TextField: {'widget': WYMEditor()}
     }
 
     def get_form(self, request, obj=None, **kwargs):
         if util.check_role(request.user, CONTRIBUTOR):
-            self.exclude = ('status', 'publish_date', 'enable_comments', 'breaking_news')
+            self.exclude = ('eyebrow', 'status', 'publish_date', 'enable_comments', 'breaking_news')
         return super(StoryAdmin, self).get_form(request, obj, **kwargs)
 
     def has_add_permission(self, request):

news/cms_plugins.py

 from cms.plugin_base import CMSPluginBase
 from cms.plugin_pool import plugin_pool
-from models import StoryPlugin, PhotoPlugin
+from news.models import StoryPlugin, PhotoPlugin
 
 class OchsStoryPlugin(CMSPluginBase):
     model = StoryPlugin

news/migrations/0021_remove_plugin.py

+
+from south.db import db
+from django.db import models
+from news.models import *
+
+class Migration:
+    
+    def forwards(self, orm):
+        
+        # Deleting field 'Choice.percentage'
+        db.delete_column('news_choice', 'percentage')
+        
+    
+    
+    def backwards(self, orm):
+        
+        # Adding field 'Choice.percentage'
+        db.add_column('news_choice', 'percentage', orm['news.choice:percentage'])
+        
+    
+    
+    models = {
+        'auth.group': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'})
+        },
+        'auth.permission': {
+            'Meta': {'unique_together': "(('content_type', 'codename'),)"},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'auth.user': {
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'cms.cmsplugin': {
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language': ('django.db.models.fields.CharField', [], {'max_length': '5', 'db_index': 'True'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}),
+            'placeholder': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.CMSPlugin']"}),
+            'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'cms.page': {
+            'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'menu_login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'moderator_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'blank': 'True'}),
+            'navigation_extenders': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '80', 'null': 'True', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'published': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Page']"}),
+            'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'reverse_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'soft_root': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'template': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'contenttypes.contenttype': {
+            'Meta': {'unique_together': "(('app_label', 'model'),)", 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'courses.course': {
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'professor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['staff.Profile']"}),
+            'section': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
+            'students': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['staff.Profile']"}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['courses.Term']"}),
+            'title': ('django.db.models.fields.TextField', [], {}),
+            'year': ('django.db.models.fields.PositiveIntegerField', [], {'default': '2010'})
+        },
+        'courses.term': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '25'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
+        },
+        'news.byline': {
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+            'course': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['courses.Course']", 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'position': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['staff.Position']", 'null': 'True'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['staff.Profile']"})
+        },
+        'news.choice': {
+            'choice': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'poll': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Poll']"}),
+            'votes': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
+        },
+        'news.photoplugin': {
+            'Meta': {'db_table': "'cmsplugin_photoplugin'"},
+            'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']"})
+        },
+        'news.poll': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'question': ('django.db.models.fields.TextField', [], {}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']", 'null': 'True', 'blank': 'True'})
+        },
+        'news.story': {
+            'body': ('django.db.models.fields.TextField', [], {}),
+            'breaking_news': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'eyebrow': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'headline': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'publish_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'section': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']", 'null': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+            'source': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'status': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1', 'db_index': 'True'}),
+            'summary': ('django.db.models.fields.TextField', [], {}),
+            'tags': ('tagging.fields.TagField', [], {'null': 'True'})
+        },
+        'news.storylink': {
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'link_text': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']"}),
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
+        },
+        'news.storynotes': {
+            'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'notes': ('django.db.models.fields.TextField', [], {}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']"}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['staff.Profile']"})
+        },
+        'news.storyplugin': {
+            'Meta': {'db_table': "'cmsplugin_storyplugin'"},
+            'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']"})
+        },
+        'sites.site': {
+            'Meta': {'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        'staff.position': {
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'position': ('django.db.models.fields.CharField', [], {'max_length': '2'})
+        },
+        'staff.profile': {
+            'bio': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'hometown': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
+            'personal_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+            'photo': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'blank': 'True'}),
+            'position': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['staff.Position']"}),
+            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        }
+    }
+    
+    complete_apps = ['news']
     section = models.ForeignKey(Page, null=True, limit_choices_to={'publisher_public__isnull': False})
     last_modified = models.DateTimeField(auto_now=True)
     publish_date = models.DateTimeField(blank=True, null=True)
+    tags = TagField(null=True, blank=True)
+    status = models.CharField(max_length=1, choices=STORY_STATUS, default=DRAFT, db_index=True)
     summary = models.TextField()
     body = models.TextField()
-    tags = TagField(null=True, blank=True)
-    status = models.CharField(max_length=1, choices=STORY_STATUS, default=DRAFT, db_index=True)
     enable_comments = models.BooleanField(default=True)
     breaking_news = models.BooleanField()
     eyebrow = models.BooleanField(default=False, db_index=True)
         verbose_name_plural = 'stories'
 
     def __unicode__(self):
-        return self.headline
+        return "(%s) %s" % (self.get_status_display(), self.headline)
 
     def get_photos_for_story(self):
         try:
 
     def __unicode__(self):
         return unicode(self.story)
+
+from news import search_indexes

news/search_indexes.py

+import datetime
+from haystack import indexes
+from haystack import site
+from news.models import Story
+
+class StoryIndex(indexes.SearchIndex):
+    text = indexes.CharField(document=True, use_template=True)
+    publish_date = indexes.DateTimeField(model_attr='publish_date')
+
+    def get_queryset(self):
+        return Story.objects.filter(publish_date__lte=datetime.datetime.now())
+site.register(Story, StoryIndex)

news/templatetags/story_extras.py

+import datetime
+
 from django import template
 from django.template import Context, loader
 
 
 @register.inclusion_tag('news/eyebrow_links.html')
 def eyebrow_links():
-    links = Story.objects.filter(eyebrow=True).order_by('-publish_date')
-    return {'links': links}
+    links = Story.objects.filter(breaking_news=True, publish_date__lte=datetime.datetime.now().replace(hour=0)).order_by('-publish_date')[:1]
+    if links:
+        breaking_news = True
+    else:
+        links = Story.objects.filter(eyebrow=True).order_by('-publish_date')[:3]
+        breaking_news = False
+    return {'links': links, 'breaking_news': breaking_news}
 
 @register.inclusion_tag('news/categories.html')
 def top_categories():
                     wym.resizable({handles: "s,e,se", maxHeight: 600});
                     wym.embed_media();
                 },
+                classesItems: [
+                    {'name': 'pullquote', 'title': 'Pullquote', 'expr': 'p'},
+                ],
                 postInitDialog: wymeditor_filebrowser,
                 updateSelector: '.submit-row input[type=submit]',
                 updateEvent: 'click',

ochs_filebrowser/templates/filebrowser/index.html

 <div id="content-main">
     <ul class="object-tools">
         <li><a href="mkdir/{{ query.query_str_total }}">{% trans "New Folder" %}</a></li>
-        <li><a href="makethumbs/{{ query.query_str_total }}">{% trans "Make Thumbs" %}</a></li>
-        {% if settings_var.USE_IMAGE_GENERATOR and results_var.imagegenerator_total %}<li><a href="generateimages/{{ query.query_str_total }}" class="fb_imagegeneratorlink">{% trans "Generate Images" %}</a></li>{% endif %}
+        {% if path %}
         <li><a href="upload/{{ query.query_str_total }}" class="focus">{% trans "Upload" %}</a></li>
+        {% endif %}
     </ul>
     <div class="module filtered" id="changelist">
         {% include "filebrowser/include/toolbar.html" %}

ochs_media/cms_plugins.py

+from cms.plugin_base import CMSPluginBase
+from cms.plugin_pool import plugin_pool
+from ochs_media.models import MainStoryPlugin
+
+class OchsMainStoryPlugin(CMSPluginBase):
+    model = MainStoryPlugin
+    name = "Lead Story"
+    render_template = "news/lead_story.html"
+    admin_preview = False
+ 
+    def render(self, context, instance, placeholder):
+        context.update(dict(
+            story=instance.story,
+            photo=instance.photo,
+            object=instance,
+            placeholder=placeholder
+        ))
+        return context
+plugin_pool.register_plugin(OchsMainStoryPlugin)

ochs_media/migrations/0005_add_gallery.py

+
+from south.db import db
+from django.db import models
+from ochs_media.models import *
+
+class Migration:
+    
+    def forwards(self, orm):
+        
+        # Adding model 'GalleryPlugin'
+        db.create_table('cmsplugin_galleryplugin', (
+            ('cmsplugin_ptr', orm['ochs_media.galleryplugin:cmsplugin_ptr']),
+            ('gallery', orm['ochs_media.galleryplugin:gallery']),
+        ))
+        db.send_create_signal('ochs_media', ['GalleryPlugin'])
+        
+        # Adding model 'Gallery'
+        db.create_table('ochs_media_gallery', (
+            ('id', orm['ochs_media.gallery:id']),
+            ('title', orm['ochs_media.gallery:title']),
+            ('picture', orm['ochs_media.gallery:picture']),
+            ('embed_code', orm['ochs_media.gallery:embed_code']),
+        ))
+        db.send_create_signal('ochs_media', ['Gallery'])
+        
+        # Adding model 'MainStoryPlugin'
+        db.create_table('cmsplugin_mainstoryplugin', (
+            ('cmsplugin_ptr', orm['ochs_media.mainstoryplugin:cmsplugin_ptr']),
+            ('photo', orm['ochs_media.mainstoryplugin:photo']),
+            ('story', orm['ochs_media.mainstoryplugin:story']),
+        ))
+        db.send_create_signal('ochs_media', ['MainStoryPlugin'])
+        
+    
+    
+    def backwards(self, orm):
+        
+        # Deleting model 'GalleryPlugin'
+        db.delete_table('cmsplugin_galleryplugin')
+        
+        # Deleting model 'Gallery'
+        db.delete_table('ochs_media_gallery')
+        
+        # Deleting model 'MainStoryPlugin'
+        db.delete_table('cmsplugin_mainstoryplugin')
+        
+    
+    
+    models = {
+        'cms.cmsplugin': {
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'language': ('django.db.models.fields.CharField', [], {'max_length': '5', 'db_index': 'True'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']"}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.CMSPlugin']", 'null': 'True', 'blank': 'True'}),
+            'placeholder': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'plugin_type': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}),
+            'position': ('django.db.models.fields.PositiveSmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.CMSPlugin']"}),
+            'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'cms.page': {
+            'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'menu_login_required': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'moderator_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'blank': 'True'}),
+            'navigation_extenders': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '80', 'null': 'True', 'blank': 'True'}),
+            'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['cms.Page']"}),
+            'publication_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'publication_end_date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'published': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'publisher_is_draft': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'publisher_public': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'publisher_draft'", 'unique': 'True', 'null': 'True', 'to': "orm['cms.Page']"}),
+            'publisher_state': ('django.db.models.fields.SmallIntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'reverse_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '40', 'null': 'True', 'blank': 'True'}),
+            'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
+            'soft_root': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'template': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'})
+        },
+        'news.story': {
+            'body': ('django.db.models.fields.TextField', [], {}),
+            'breaking_news': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
+            'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
+            'eyebrow': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True', 'blank': 'True'}),
+            'headline': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'publish_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'section': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cms.Page']", 'null': 'True'}),
+            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}),
+            'source': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'status': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '1', 'db_index': 'True'}),
+            'summary': ('django.db.models.fields.TextField', [], {}),
+            'tags': ('tagging.fields.TagField', [], {'null': 'True'})
+        },
+        'ochs_media.gallery': {
+            'embed_code': ('django.db.models.fields.TextField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'picture': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ochs_media.MediaEmbed']"}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'ochs_media.galleryplugin': {
+            'Meta': {'db_table': "'cmsplugin_galleryplugin'"},
+            'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
+            'gallery': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ochs_media.Gallery']"})
+        },
+        'ochs_media.mainstoryplugin': {
+            'Meta': {'db_table': "'cmsplugin_mainstoryplugin'"},
+            'cmsplugin_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['cms.CMSPlugin']", 'unique': 'True', 'primary_key': 'True'}),
+            'photo': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ochs_media.MediaEmbed']", 'null': 'True', 'blank': 'True'}),
+            'story': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['news.Story']"})
+        },
+        'ochs_media.mediaembed': {
+            'caption': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'embed_object': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'file': ('FileBrowseField', [], {'max_length': '255'}),
+            'height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'media_type': ('django.db.models.fields.CharField', [], {'max_length': '25'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
+        },
+        'sites.site': {
+            'Meta': {'db_table': "'django_site'"},
+            'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        }
+    }
+    
+    complete_apps = ['ochs_media']

ochs_media/models.py

 from django.db import models
+from django.template import Context, loader
 
-from news.models import Byline
+from cms.models import CMSPlugin
+from cms.models import Page
+
+from news.models import Byline, Story
 from ochs_filebrowser.fields import FileBrowseField
 from lib import scrapers
 
         elif self.media_type == 'photo':
             self.embed_object = '<img src="%s" title="%s" alt="%s"/>' % (self.file.original, self.title, self.title)
         super(MediaEmbed, self).save()
+
+class Gallery(models.Model):
+    title = models.CharField(max_length=255)
+    picture = models.ForeignKey(MediaEmbed)
+    embed_code = models.TextField()
+
+    def __unicode__(self):
+        num_pictures = len(self.picture_set.all())
+        return "Gallery: %s (%d picture%s)" % (self.title, num_pictures, 's' if num_pictures != 1 else '')
+
+    def save(self):
+        super(Gallery, self).save()
+        t = loader.get_template('gallery.html')
+        c = Context({
+            'gallery_id': self.id,
+            'pictures': self.picture_set.all(),
+        })
+        embed_code = t.render(c)
+        super(Gallery, self).save()
+
+class GalleryPlugin(CMSPlugin):
+    gallery = models.ForeignKey(Gallery)
+    
+    def __unicode__(self):
+        return unicode(self.gallery)
+        
+
+class MainStoryPlugin(CMSPlugin):
+    photo = models.ForeignKey(MediaEmbed, blank=True, null=True)
+    story = models.ForeignKey(Story)

ochs_media/templates/gallery.html

+<ul id="gallery_{{ gallery_id }}">
+    {% for picture in pictures %}
+	<li><img src="{{ picture.file }}" /><span>{{ picture.title }}</span></li>
+	{% endfor %}
+</ul>
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
     'cms.middleware.page.CurrentPageMiddleware',
     'cms.middleware.user.CurrentUserMiddleware'
 )
     'django.contrib.sessions',
     'django.contrib.sites',
     'django.contrib.admin',
+    'django.contrib.flatpages',
     'cms',
     'cms.plugins.file',
     'cms.plugins.flash',
     'south',
     'tinymce',
     'tagging',
+    'haystack',
     'ochs_filebrowser',
     'photologue',
     'publisher',
 CMS_TEMPLATES = (
    ('homepage_01.html', gettext('Homepage 1 Template')),
    ('homepage_02.html', gettext('Homepage 2 Template')),
+   ('news/news_section.html', gettext('Section Template')),
    ('story_2col.html', gettext('2 Column Story Template')),
    ('story_3col.html', gettext('3 Column Story Template')),
    ('story_feature.html', gettext('Feature Story Template'))
 )
 
 CMS_PLACEHOLDER_CONF = {
-    'homepage_main_photo_slot': {
-        'plugins': ('PicturePlugin', 'FlashPlugin'),
-        'name':gettext("Main Photo Slot")
+    'homepage_main_story': {
+        'plugins': ('OchsMainStoryPlugin',),
+        'extra_context': {},
+        'name': gettext('Homepage Main Story Slot'),
     },
     'homepage_news_slot': {
-        'plugins': ('OchsStoryPlugin'),
+        'plugins': ('OchsStoryPlugin',),
         'extra_context': {'summary': True},
         'name':gettext("Homepage News Slot")
     },
     'custom_undo_redo_levels': 10,
 }
 
+HAYSTACK_SITECONF = 'search_sites'
+HAYSTACK_SEARCH_ENGINE = 'whoosh'
+HAYSTACK_WHOOSH_PATH = os.path.join(PROJECT_ROOT, 'ochs_index')
+
 FILEBROWSER_URL_FILEBROWSER_MEDIA = os.path.join(MEDIA_URL, 'filebrowser/')
 FILEBROWSER_URL_WWW = os.path.join(MEDIA_ROOT, 'uploads')
 

Binary file modified.

templates/base.html

         {% block body %}
         <div class="container">
             <div class="span-24">
-                <div class="eyebrow">
-                    {% eyebrow_links %}
-                </div>
+                {% eyebrow_links %}
                 <div class="leaderboard prepend-3"><script type="text/javascript"><!--
 google_ad_client = "pub-5383628189276873";
 /* 728x90 Run of site leaderboard, created 12/29/09 */
                         {% top_categories %}
                     </div>
                     <div class="column span-7 last">
-                        SEARCH BOX
+                        <form method="get" action="/search/">
+                            <input type="text" name="q" />
+                            <input type="hidden" name="models" value="news.story" />
+                            <input type="submit" value="Search" />
+                        </form>
                     </div><br class="clear" />
                 </div>
                 <div class="flag">
                             University of Tennessee, Knoxville | <a href="">www.tnjn.com</a>
                         </p>
                     </div>
-                    <div class="column span-11 last">
-                        <div class="span-3">
-                            <a href="http://www.flickr.com/photos/girljournalist/3877115710/" title="Interviewing classmates by Girl Journalist, on Flickr"><img src="http://farm4.static.flickr.com/3248/3877115710_7f0f72cae6_t.jpg" width="100" height="75" alt="Interviewing classmates" /></a>
-                        </div>
-                        <div class="span-8 last">
-                            More than a dozen lawmakers' statements on the health care debate were ghostwritten by lobbyists working for Genentech, a biotechnology company.
-                        </div>
-                    </div><br class="clear" />
+                    <br class="clear" />
                 </div>
                 
                 {% block mainblock %}{% endblock %}

templates/flag.html

   <div class="flag">
                     <div class="column span-13 last">
-                        <h1>The Tennessee Journalist</h1>
+                       <a href="http://www.tnjn.com"><h1>The Tennessee Journalist</h1></a>
                         <p class="tagline">
-                            The news Web site of the School of Journalism and Electronic Media<br />
-                            University of Tennessee, Knoxville | <a href="">www.tnjn.com</a>
+                            The news Web site of the <a href="http://www.cci.utk.edu/~jem/">School of Journalism and Electronic Media</a><br />
+                            <a href="http://www.utk.edu">University of Tennessee, Knoxville</a> | <a href="http://www.tnjn.com">www.tnjn.com</a>
                         </p>
                     </div>
                     <div class="column span-11 last">

templates/homepage_01.html

 {% load cms_tags %}
 {% block mainblock %}
 <div class="mainbox">
-    <div class="column span-10 last">
-        <div class="photostory">
-        <img src="http://tnjn.com/content/storyimage/2010/01/10/DSC_1496.512.jpg" width="400"/> {% placeholder "homepage_main_photo_slot" %}
-          <div class="medphotocaption">
-    Bobby Maze defends Kansas point guard Sherron Collins in Tennessee's 76-68 win. Photo by <a href="">Mike Matter</a>
-      </div>
-      <div class="leadstoryvert">
-      <h2>Hello this is the lead story headline</h2>
-      <div class="dateline">10 Jan. 2010 @ 5:55 p.m. | <strong>SPORTS</strong> | <a href="">(4) Comments</a></div><br class="clear" />
-      Dek summary of the story in a sentence or two can be added here once Jay see's all the fancy things that I have done with the first homepage template. <a href="">Read more ></a>
-      </div>
-        </div>
+    <div class="column span-12 last">
+    {% placeholder "homepage_main_story" %}
     </div>
-    <div class="column span-14 last">
-   {% placeholder "homepage_news_slot"%}
-    
+    <div class="column span-12 last">
+    {% placeholder "homepage_news_slot" %}
     </div>
    <br class="clear" />
 </div>

templates/news/categories.html

 <ul>
     {% for category in categories %}
-    <li><a href="/{{ category.get_path }}">{{ category.get_title|title }}</a></li>
+    <li><a href="/{% ifnotequal category.get_title|lower "home" %}{{ category.get_path }}{% endifnotequal %}">{{ category.get_title|title }}</a></li>
     {% endfor %}
 </ul>

templates/news/eyebrow_links.html

-{% for link in links %}
-<a href="{{ link.get_absolute_url }}">{{ link.headline }}</a>{% if not forloop.last %} &gt; {% endif %}
-{% endfor %}
+<div class="{% if not breaking_news %}eyebrow{% else %}breakingnews{% endif %}">
+    {% for link in links %}
+    <a href="{{ link.get_absolute_url }}">{% if breaking_news %}BREAKING NEWS: {% endif %}{{ link.headline }}</a>{% if not forloop.last %} &gt; {% endif %}
+    {% endfor %}
+</div>

templates/news/lead_story.html

+{% load disqus_tags %}
+<div class="photostory">
+  {% if photo %}
+  {{ photo.embed_object|safe }}
+  {% endif %}
+  <div class="medphotocaption">
+      {{ photo.caption }}
+  </div>
+  <div class="leadstoryvert">
+      <h2><strong><a href="{{ story.get_absolute_url }}">{{ story.headline }}</a></strong></h2>
+      <div class="dateline">{{ story.publish_date|date:"j N Y @ P" }} | <strong>{{ story.section.get_title|upper }}</strong> | <a href="{{ story.get_absolute_url }}#disqus_thread"></a></div><br class="clear" />{{ story.summary|safe }}<a href="{{ story.get_absolute_url }}">Read more ></a>
+      {% disqus_num_replies %}
+  </div>
+</div>

templates/news/news_section.html

 {% extends 'base.html' %}
-{% load story_extras disqus_tags %}
+{% load cms_tags story_extras disqus_tags %}
 {% block title_headline %}{{ story.headline }}{% endblock %}
 {% block title_section %}{{ story.section.get_title|capfirst }}{% endblock %}
 {% block mainblock %}
     //-->
     </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
 </script><br>
-    <div class="latest_stories">
-    {% most-commented story.section %}
-    </div>
 </div>
-{% endblock %}
+{% endblock %}

templates/news/story.html

     <div id="body">
         {{ story.body|safe }}
     </div>
+    {% if story.enable_comments %}
     <div id="comments">
         <h3><a href="{{ story.get_absolute_url }}#disqus_thread">Comments</a></h3>
         {% disqus_num_replies %}
         {% disqus_show_comments %}
     </div>
+    {% endif %}
 </div>
 <div class="rightsidebar column span-7 last">
+    {% polls story %}
+    <br />
     <script type="text/javascript">
 <!--
     google_ad_client = "pub-5383628189276873";
     google_ad_height = 250;
     //-->
     </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
-</script><br>
-    {% polls story %}
+</script><br/>
     <div class="latest_stories">
     {% latest_stories story.section %}
     </div>

templates/news/story_summary.html

+{% load disqus_tags %}
 <div class="story">
-    <h2>{{ story.headline }}</h2>
-    <p class="dateline">Posted {{ story.publish_date|date:"j N Y @ P" }} | Updated {{ story.last_modified|date:"j N Y @ P" }} | <a href="">(4) Comments</a></p>
+    <h2><strong><a href="{{ story.get_absolute_url }}">{{ story.headline }}</a></strong></h2>
+    <p class="dateline">Posted {{ story.publish_date|date:"j N Y @ P" }} {% ifnotequal story.last_modified story.publish_date %}| Updated {{ story.last_modified|date:"j N Y @ P" }}{% endifnotequal %} {% if story.enable_comments %}| <a href="{{ story.get_absolute_url }}#disqus_thread">View Comments</a>{% endif %}</p>
+    {% disqus_num_replies %}
     <p>{{ story.summary|safe }}</p>
 </div>
 <br class="clear" />

templates/search/indexes/news/story_text.txt

+{{ object.headline }}
+{{ object.summary }}
+{{ object.body }}

templates/search/search.html

+{% extends 'base.html' %}
+
+{% block mainblock %}
+    <h2>Search</h2>
+
+    <form method="get" action=".">
+        <table>
+            {{ form.as_table }}
+            <tr>
+                <td>&nbsp;</td>
+                <td>
+                    <input type="submit" value="Search">
+                </td>
+            </tr>
+        </table>
+
+        {% if query %}
+            <h3>Results</h3>
+
+            {% for result in page.object_list %}
+                <p>
+                    <a href="{{ result.object.get_absolute_url }}">{{ result.object.headline }}</a>
+                    {{ result.object.summary|safe }}
+                </p>
+            {% empty %}
+                <p>No results found.</p>
+            {% endfor %}
+        {% else %}
+            {# Show some example queries to run, maybe query syntax, something else? #}
+        {% endif %}
+    </form>
+{% endblock %}
     (r'^admin/filebrowser/', include('ochs_filebrowser.urls')),
     (r'^admin/doc/', include('django.contrib.admindocs.urls')),
     (r'^admin/', include(admin_site.site.urls)),
+    (r'^search/', include('haystack.urls')),
     url(r'poll/vote/(?P<poll>\d+)/(?P<choice>\d+)/$', 'news.views.poll_vote'),
     url(r'poll/vote/(?P<poll>\d+)/$', 'news.views.poll_vote'),
     url(r'staff/(?P<username>\w+)/$', 'staff.views.profile'),

Binary file modified.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.