commit 96c09381ba37340ca02845ea3b3f840b59a047b4 Author: David Miles Date: Fri Jun 3 01:33:07 2011 -0500 First commit. diff --git a/Codex.php b/Codex.php new file mode 100644 index 0000000..bee1779 --- /dev/null +++ b/Codex.php @@ -0,0 +1,341 @@ +addStyle( 'codex/main.css', 'screen' ); + $out->addStyle( 'codex/wp4.css', 'screen' ); + $out->addStyle( 'codex/iphone.css', 'only screen and (max-device-width: 480px)' ); + } +} + +/** + * Codex Template Class + * + * This class assembles the components of the Codex template and renders the output. + * It is written in PHP5 OO Standards, therefore it's not compatible with PHP4. + * + * @ingroup Skins + */ +class CodexTemplate extends QuickTemplate +{ + /** + * Sidebox Group printf Format + * + * @var string + * @access private + */ + private $_sideboxf = <<<________EOD +

%s

+ +________EOD; + + /** + * Sidebox List Item printf Format + * + * @var string + * @access private + */ + private $_lif = "\t
  • %s
  • \n"; + + /** + * Sidebox AnchorLink printf Format + * + * @var string + * @access private + */ + private $_af = '%s'; + + /** + * The Skin Object + * + * @var object + * @access public + */ + public $skin; + + /** + * Template Filter Callback + * + * Takes an associative array of data set from a SkinTemplate-based class, and a + * wrapper for MediaWiki's localization database, and outputs a formatted page. + * + * The page's HTML layout is included by calling the file {@link body.php}, which + * is the primary theme file. + * + * @param void + * return string Outputs the pages generated content + * @access public + */ + public function execute() + { + global $wgRequest; + + $this->skin = $skin = $this->data['skin']; + $action = $wgRequest->getText( 'action' ); + + // Suppress warnings to prevent notices about missing indexes in $this->data + wfSuppressWarnings(); + + // Load the head element for the page + $this->html( 'headelement' ); + + // Include the main content syntax + require realpath(dirname(__FILE__) .'/codex/body.php'); + + // Restore warnings + wfRestoreWarnings(); + } + + /** + * Generate Search Box + * + * Creates the search form for the Codex theme. + * + * @param void + * @return string Prints the search form. + * @access public + */ + public function searchBox() + { + $format = '\n"; + + printf( $format, + htmlspecialchars($this->data['wgScript']), + Html::input( 'text', + isset($this->data['search']) && strlen($this->data['search']) > 0 ? $this->data['search'] : 'Search the Codex', + 'text', + array( + 'maxlength' => 150, + 'class' => 'text', + 'title' => $this->skin->titleAttrib( 'search' ), + 'accesskey' => $this->skin->accesskey( 'search' ), + 'onfocus' => "this.value=(this.value=='Search the Codex') ? '' : this.value;", + 'onblur' => "this.value=(this.value=='') ? 'Search the Codex' : this.value;", + ) + ), + $this->skin->tooltipAndAccesskey( 'search-go' ) + ); + } + + /** + * ToolBox Sidebox + * + * Formats and prints the HTML syntax for the ToolBox links. + * + * @param void + * @return string Prints the HTML syntax that makes up the ToolBox links and section. + * @access public + */ + public function toolBox() + { + $title = $this->translator->translate('Toolbox'); + $li = ''; + + if( $this->data['notspecialpage'] ) + $li .= sprintf($this->_lif, + 't-whatlinkshere', + '', + sprintf( $this->_af, htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href']), + $this->skin->tooltipAndAccesskey('t-whatlinkshere'), + htmlspecialchars( $this->translator->translate('whatlinkshere') ) ) + ); + + if( $this->data['feeds'] ) + { + $alinks .= ''; + foreach($this->data['feeds'] as $key => $feed) + { + $alinks .= sprintf( $this->_af, + htmlspecialchars($feed['href']), + 'id="'. Sanitizer::escapeId( "feed-$key" ) .'" rel="alternate" type="application/'. $key .'+xml" class="feedlink" '. + $this->skin->tooltipAndAccesskey('feed-'.$key), + htmlspecialchars($feed['text']) .' ' ); + } + + $li .= sprintf($this->_li_lif, $this->msg('feedlinks', TRUE), '', $alinks); + } + + foreach( array('recentchangeslinked', 'trackbacklink', 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) + { + if( is_array($this->data['nav_urls'][$special]) ) + $li .= sprintf( $this->_lif, + 't-'. $special, + '', + sprintf( $this->_af, + htmlspecialchars($this->data['nav_urls'][$special]['href']), + $this->skin->tooltipAndAccesskey('t-'. $special), + htmlspecialchars( $this->translator->translate($special) ) ) + ); + } + + if( strlen($this->data['nav_urls']['print']['href']) > 0 ) + $li .= sprintf( $this->_lif, + 't-print', + '', + sprintf( $this->_af, + htmlspecialchars($this->data['nav_urls']['print']['href']), + 'rel="alternate" '. $this->skin->tooltipAndAccesskey('t-print'), + htmlspecialchars( $this->translator->translate('printableversion') ) ) + ); + + if( strlen($this->data['nav_urls']['permalink']['href']) > 0 ) + $li .= sprintf( $this->_lif, + 't-permalink', + '', + sprintf( $this->_af, + htmlspecialchars($this->data['nav_urls']['permalink']['href']), + $this->skin->tooltipAndAccesskey('t-permalink'), + htmlspecialchars( $this->translator->translate('permalink') ) ) + ); + + else + $li .= sprintf( $this->_lif, + 't-ispermalink', + $this->skin->tooltip('t-ispermalink'), + htmlspecialchars( $this->translator->translate('permalink') ) + ); + + printf($this->_sideboxf, $title, $li); + wfRunHooks( 'CodexTemplateToolboxEnd', array( &$this ) ); + wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) ); + } + + /** + * Views Sidebox + * + * This method formats and prints the Views Sidebox menu items. + * + * @param void + * @return string Prints the formatted HTML syntax for the Views sidebox section. + * @access public + */ + public function viewsBox() + { + $title = $this->translator->translate('Views'); + $li = ''; + + foreach($this->data['content_actions'] as $key => $tab) + { + $id = Sanitizer::escapeId("ca-{$key}"); + $class = $tab['class'] ? ' class="'. htmlspecialchars($tab['class']) .'"' : ''; + $href = htmlspecialchars($tab['href']); + $tool = in_array( $action, array('edit', 'submit') ) && + in_array( $key, array('edit', 'watch', 'unwatch') ) ? + $this->skin->tooltip( "ca-$key" ) : $this->skin->tooltipAndAccesskey( "ca-$key" ); + $text = htmlspecialchars($tab['text']); + + $alink = sprintf($this->_af, $href, $tool, $text); + $li .= sprintf($this->_lif, $id, $class, $alink); + } + + printf($this->_sideboxf, $title, $li); + } + + /*************************************************************************************************/ + public function languageBox() + { + if( !$this->data['language_urls'] ) return; + + $links = ''; + foreach($this->data['language_urls'] as $langlink) + { + $links .= sprintf( $this->_lif, + 'lang-'. htmlspecialchars($langlink['text']), + ' class="'. htmlspecialchars($langlink['class']) .'"', + sprintf( $this->_af, + htmlspecialchars($langlink['href']), + '', + htmlspecialchars( $this->translator->translate($langlink['text']) ) + ) + ); + } + + printf( $this->_sideboxf, $this->html('userlangattributes'), htmlspecialchars( $this->translator->translate('otherlanguages') ), $links ); + } + + /** + * Create Custom Sidebox + * + * This is used to add a custom sidebox section. + * + * @param string $bar Unsure + * @param array|string $cont The content to add to the Sidebox. It can be + * an array of items to itterate over or an already + * processed string of data to add directly. + * @return string Prints out the formatted Sidebox syntax. + * @access public + * @todo Try making this method serve the other Sidebox methods in this class + * by processing the data for them and minimizing the code in them if possible. + */ + public function customBox( $bar, $cont ) + { + $links = ''; + $out = wfMsg( $bar ); + $title = wfEmptyMsg($bar, $out) ? htmlspecialchars( $this->translator->translate($bar) ) : + htmlspecialchars( $this->translator->translate($out) ); + + if ( !is_array($cont) ) + { + printf( $this->_sideboxf, $title, $cont ); + return; + } + + foreach($cont as $key => $val) + { + $links .= sprintf( $this->_lif, + Sanitizer::escapeId($val['id']), + ($val['active'] ? ' class="active"':''), + sprintf( $this->_af, + htmlspecialchars($val['href']), + $this->skin->tooltipAndAccesskey($val['id']), + htmlspecialchars( $this->translator->translate($val['text']) ) + ) + ); + } + + printf($this->_sideboxf, $title, $links); + } +} // end of class + + diff --git a/README.textile b/README.textile new file mode 100644 index 0000000..6307a8f --- /dev/null +++ b/README.textile @@ -0,0 +1,32 @@ +h1. Mediawiki WordPress.org Codex Skin clone + +p. This is a MediaWiki skin that clones the "WordPress.org Codex":http://wordpress.org/ theme. +*ALL* credit is due to the theme authors of the WordPress.org Codex since it's their work +and I just made into a public Mediawiki skin. + +p. As far as I can tell, the theme falls under the same "GPL Licensing":http://codex.wordpress.org +as the rest of the Codex content. +If I am wrong about this, please let me know so I can honor it. + +h2. About The Codex Skin + +p. I ported the skin for a personal project I am working on and needed a localhost MediaWiki. +Since I spend a ton of time sifting through and making contributions where I can to the *WordPress.org Codex*, +I thought it would be much easier if my localhost wiki looked like the WordPress Codex +since it's a format I'm familiar with viewing. + +p. While I was at it and since I had no luck finding a **WordPress Codex Skin Clone**, +I figured I'd share what I had come up with with the rest of those out there who just +love the familiar look of the Codex. +So here you have it, the *Codex Skin clone*. + +h2. Feedback + +p. Issue tracking on GitHub is by far the easiest way to make suggestions and report problems +since it allows me to check items off and keep things organized. +This is my first MediaWiki Skin, so I heavily-altered the *MonoBook* skin which provided the +base example code to work with and then I cleaned the code up while integrating the Codex design. +With that being said, there's bound to be issues such as things I missed, things I may have gotten wrong, +or perhaps there's better practices that those who are much more savvy at Skinning Mediawiki than I am know of. + +p. This was a quick project and therefore your feedback is important in getting these things ironed out. diff --git a/codex/arrow.png b/codex/arrow.png new file mode 100644 index 0000000..6fb5ffa Binary files /dev/null and b/codex/arrow.png differ diff --git a/codex/body.php b/codex/body.php new file mode 100644 index 0000000..9a936b8 --- /dev/null +++ b/codex/body.php @@ -0,0 +1,119 @@ + +
    +
    +

    Codex

    +
    + +
    +
    +
    + +
    html("specialpageattributes"); ?>> +
    + data['sitenotice']) { ?>
    html('sitenotice'); ?>
    +
    +

    html('title'); ?>

    + + html('bodytext'); ?> + data['catlinks']) { $this->html('catlinks'); } ?> + + data['dataAfterContent']) { $this->html('dataAfterContent'); } ?> +
    +
    + viewsBox(); ?> + toolBox(); ?> + languageBox(); ?> +
    +
    +
    +data['sidebar']; + if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true; + if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true; + foreach ($sidebar as $boxName => $cont) { + if ( $boxName == 'TOOLBOX' ) { + $this->toolbox(); + } elseif ( $boxName == 'LANGUAGES' ) { + $this->languageBox(); + } else { + $this->customBox( $boxName, $cont ); + } + } +*/ +?> + + +html('bottomscripts'); /* JS call to runBodyOnloadHook */ +$this->html('reporttime'); + +if( $this->data['debug'] ): ?> + + + + diff --git a/codex/button-grad.png b/codex/button-grad.png new file mode 100644 index 0000000..3f96366 Binary files /dev/null and b/codex/button-grad.png differ diff --git a/codex/codeispoetry.png b/codex/codeispoetry.png new file mode 100644 index 0000000..e03e7c0 Binary files /dev/null and b/codex/codeispoetry.png differ diff --git a/codex/download-tab-bg.png b/codex/download-tab-bg.png new file mode 100644 index 0000000..a534765 Binary files /dev/null and b/codex/download-tab-bg.png differ diff --git a/codex/feedicon.png b/codex/feedicon.png new file mode 100644 index 0000000..39c2cf9 Binary files /dev/null and b/codex/feedicon.png differ diff --git a/codex/feedicon10.png b/codex/feedicon10.png new file mode 100644 index 0000000..39e236e Binary files /dev/null and b/codex/feedicon10.png differ diff --git a/codex/header-bg.png b/codex/header-bg.png new file mode 100644 index 0000000..69b3b67 Binary files /dev/null and b/codex/header-bg.png differ diff --git a/codex/iphone.css b/codex/iphone.css new file mode 100644 index 0000000..0db13ab --- /dev/null +++ b/codex/iphone.css @@ -0,0 +1,3 @@ +html {-webkit-text-size-adjust: none;} + +#header ul li a.current, #header ul li#download a.current {padding-bottom: 1px;} diff --git a/codex/main.css b/codex/main.css new file mode 100755 index 0000000..1738afe --- /dev/null +++ b/codex/main.css @@ -0,0 +1,229 @@ +html * { + font-variant: normal !important; + text-align: left !important; +} + +.printfooter, hr, .urlexpansion { + display: none !important; +} + +#bodyContent h1, #bodyContent h2 { + font-family: Georgia, "Times New Roman", Times, serif; + font-size: 22px; + margin-bottom: 22px; + color: #333; +} +#bodyContent h2, #bodyContent h3, #bodyContent h4, #bodyContent h5, #bodyContent h6 { + font-family: Georgia, "Times New Roman", Times, serif; + border-bottom: 1px solid #dadada; + font-weight: normal; +} +#bodyContent h2.pagetitle { + font-family: "Lucida Grande", Verdana, Tahoma, Arial, sans-serif; + font-size: 24px; + font-weight: bold; + color: #666; + padding-bottom: 2px; + margin-top: 0; + margin-bottom: 24px; +} +.col-2 h3 { + margin-top: 3px; +} + +#bodyContent h2 { + margin-top: 22px; + margin-bottom: 11px; +} +.editsection { +font-size: 10px; +font-weight: normal !important; +font-family: "Lucida Grande", Verdana, Tahoma, Arial, sans-serif; +} +#bodyContent h3 { + padding-bottom: 4px; + margin-bottom: 4px; +} +#bodyContent h2 { +font-size: 190%; +} +#bodyContent h3 { +font-size: 150%; +border-color: #eee; +} +#bodyContent h4 { +font-size: 130%; +} +h4 b { +font-weight: normal; +} +#bodyContent h5 { +font-size: 100%; +font-weight: bold; +} + +#bodyContent { +color: black; +} +#bodyContent p { + clear: left; +} +#pagebody #bodyContent p, +#pagebody #bodyContent ul, +#pagebody #bodyContent dl, +#pagebody #bodyContent ol { + margin-bottom: 22px; +} + +p.login a { + margin-right: 6px; +} + +#editpage-copywarn p { + margin-top: 18px !important; +} + +blockquote { + padding: 11px 22px !important; +} + +#bodyContent div { + font-size: 100% !important; +} + +#bodyContent pre, #bodyContent code { + margin-bottom: 22px; + font-family: Consolas, Monaco, "Courier New", Courier, monospace; + font-size: 12px; + font-weight: inherit; + overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */ + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + /*messes up flow* width: 99%; /* remove horizontal scroll-bar when viewing in IE7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +textarea { + width: 100%; +} + +dl dt { + font-weight: bold; + font-size: 110%; +} + +dl dd { + margin-bottom: 11px; + margin-left: 1em; +} + +#toc { + background: #f1f1f1; + border: 1px solid #dadada; + -webkit-border-radius: 3px; + float: right; + margin-left: 16px; + padding: 4px 8px; + margin-bottom: 12px; + font-size: 85%; + max-width: 30%; +} +#pagebody #toc ul { + margin-bottom: 0px; +} + +#toctitle h2{ + font-size: 18px; + margin-top: 0; + margin-bottom: 5%; +} +#toctitle td { + text-align: left !important; +} + +#toctitle td { + border-bottom: 1px solid #dadada; +} + +#tocinside td { + padding-top: 4px; + font-size: 10px; +} + +.tocindent p { + padding-left: 12px; + margin-bottom: 0 !important; +} + +.tocindent .tocindent p { + padding-left: 32px; +} + +input[type="text"], input[type="password"] { + margin-right: 2px; + font-size: 10px; + padding: 3px; + margin-bottom: 6px; + background: #f5f5f5; + border: 1px solid #ccc; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + height: 14px; + color: #666; +} + +input[type="checkbox"] { + margin-right: 4px; +} + +label { + margin-right: 8px; +} + +table.diff { background:white; } +td.diff-otitle { background:#ffffff; } +td.diff-ntitle { background:#ffffff; } +td.diff-addedline { + background:#ccffcc; + font-size: smaller; +} +td.diff-deletedline { + background:#ffffaa; + font-size: smaller; +} +td.diff-context { + background:#eeeeee; + font-size: smaller; +} +span.diffchange { color: red; font-weight: bold; } + +/* image css */ +a img.alignright, .tright, .floatright, img.alignright, img.right {float:right; margin:0 0 1em 1em} +a img.alignleft, .tleft, .floatleft, img.alignleft, img.left {float:left; margin:0 1em 1em 0} +a img.aligncenter, img.aligncenter, img.center {display: block; margin-left: auto; margin-right: auto} + +#bodyContent hr { +display: block !important; +border: 0; +border-top: 1px solid #ddd; +} + +#bodyContent #Copyedit { +border: solid 1px transparent; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; +background-color: #eef; +text-align: center; +padding: 1em 1em 1px 1em; +margin: 1em 0; + +} + +.new, .new:link, .new:visited { color: red !important; } +.new:hover, .new:active { text-decoration: underline !important; } + diff --git a/codex/step1.png b/codex/step1.png new file mode 100644 index 0000000..05d9900 Binary files /dev/null and b/codex/step1.png differ diff --git a/codex/step2.png b/codex/step2.png new file mode 100644 index 0000000..7ec4946 Binary files /dev/null and b/codex/step2.png differ diff --git a/codex/step3.png b/codex/step3.png new file mode 100644 index 0000000..88319a5 Binary files /dev/null and b/codex/step3.png differ diff --git a/codex/white-grad.png b/codex/white-grad.png new file mode 100644 index 0000000..1242bd0 Binary files /dev/null and b/codex/white-grad.png differ diff --git a/codex/wp3-logo.png b/codex/wp3-logo.png new file mode 100644 index 0000000..e830baa Binary files /dev/null and b/codex/wp3-logo.png differ diff --git a/codex/wp4.css b/codex/wp4.css new file mode 100644 index 0000000..dfc7b37 --- /dev/null +++ b/codex/wp4.css @@ -0,0 +1,1141 @@ +/* The Reset ---------------------------------- */ +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5, +h6,pre,form,fieldset,input,p,blockquote,table, +th,td { margin: 0; padding: 0; } +fieldset,img,abbr { border: 0; } +address,caption,cite,code,dfn,h1,h2,h3, +h4,h5,h6,th,var { font-style: normal; font-weight: normal; } +caption,th { text-align: left; } +q:before,q:after { content: ''; } +a { text-decoration: none; } +body { + font-size: 62.5%; + background: #fff; + font-family: "Lucida Grande",Verdana,"Bitstream Vera Sans",Arial,sans-serif; + line-height: 22px; + color: #555; + margin-bottom: 40px; +} +/* -------------------------------------------- */ + +code, pre { font-family: Consolas, Monaco, "Courier New", Courier, monospace; } + +pre { + background: #f5f5f5; + border: 1px solid #dadada; + padding: 11px; + font-size: 11px; + line-height: 1.3em; + overflow: auto; +} + +code, pre { + color: #000; + background: #F0F0F0; +} + +pre a { font-weight: normal; } + +a { color: #21759b; text-decoration: none; font-weight: normal; } + +a:visited {color:#4ca6cf;} + +p a { border-bottom: 1px solid #dfdfdf; } + +h3 a { font-weight: bold; } + +.button a, .button a:hover, #headline a:not(.button), #headline a:not(.button):hover, #sidebar a, #sidebar a:hover, .frontpageheatmap a, .frontpageheatmap a:hover, .col-3 a, .col-3 a:hover { border: none !important; } + +#headline a.button { display: inline-block; } + +p a:hover { border-bottom: 1px solid #d54e21; } + +a:hover { color: #d54e21; } + +h2 { + font-family: Georgia, Times, "Times New Roman", serif; + font-weight: normal; + font-size: 20px; +} + +h2 a { + font-weight: normal; +} + +strong { + font-weight: bold; +} + +em, cite { + font-style: italic; +} + +sup { + line-height: 1em; + font-size: 80%; +} + +.wrapper { + width: 960px; + margin: 0 auto; + clear: both; +} + +#header { + height: 88px; + min-width: 960px; + background: #dcdcdc url(header-bg.png) top left repeat-x; +} + +#header h1 a { + display: block; + background: url(wp3-logo.png) center left no-repeat; + width: 301px; + height: 88px; + text-indent: -9999px; + float: left; +} + +#header ul { + margin-right: 14px; + float: right; + list-style: none; + min-width: 500px; +} + +#header ul li { + float: left; + position:relative; +} + +#header ul li a { + font-family: "Lucida Grande",Tahoma,"Bitstream Vera Sans",Arial,sans-serif; + font-weight: normal; + display: block; + line-height: 34px; + padding: 0 9px; + font-size: 14px; + color: #666; + text-shadow: #eee 0px 1px 0px; +} + +#header ul li a:hover { + color: #d54e21; +} + +#header ul li a.current, #header ul li#download a.current { + color: #555; + background: #f7f7f7; + border: 1px solid #c6c6c6; + border-bottom:none; + margin-top:-1px; + -moz-border-radius-topleft: 3px; + -khtml-border-top-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-topright: 3px; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + text-shadow: #c6d9e9 1px 1px 1px; +} + +#header ul li#download a { + background: #d54e21 url(download-tab-bg.png) bottom left repeat-x; + color: #fff; + -moz-border-radius-topleft: 3px; + -khtml-border-top-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-topright: 3px; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + text-shadow: #b5421c 1px 1px 1px; +} + +#header ul li#download a:hover { + color: #ffac90; +} + +#header ul li#download a.current:hover { + color: #555; +} + +#header .nav-submenu { + display:none; + min-width: 0; + -moz-border-radius-bottomright: 3px; + -khtml-border-bottom-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -khtml-border-bottom-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + background: #d6d6d6; + margin-top: -1px; + border: #c6c6c6 solid 1px; + border-top:0; +} + +#header ul li:hover .nav-submenu, #header ul li .nav-submenu:hover { + display:block; + position:absolute; + top:34px; + left:0; + z-index:1; +} + +#header ul li a.current + .nav-submenu { + background: #f6f6f7; + border: #c6c6c6 solid 1px; + border-top:0; +} + +#header ul li a.current + .nav-submenu a { + text-shadow:none; + color: #555555; +} + +#header ul li a.current + .nav-submenu a:hover { + color: #d54e21; +} + +#header ul li .nav-submenu li { + float:none; +} + +#home-welcome { + background: #f7f7f7; + min-width: 960px; + min-height: 340px; + border-bottom: 1px solid #dfdfdf; +} + +#home-welcome img.screenshot { + margin-top: 22px; + margin-right: 28px; + float: left; +} + +#home-welcome p { + font-size: 13px; + padding: 11px 0; + margin-right: 14px; +} + +#home-welcome p.intro { + font-family: Georgia, Times, "Times New Roman", serif; + padding-top: 34px; + font-size: 17px; + line-height: 1.5em; +} + +#home-welcome p.intro strong { + font-weight: normal; +} + +p.intro a { + font-weight: normal; +} + +/* */ + +.submit input, .button, .button-primary, .button-secondary, input[type=button], input[type=submit] { + font: normal 11px/16px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; + text-decoration: none; + padding: 2px 8px !important; + cursor: pointer; + border: 1px solid #bbb; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + -khtml-box-sizing: content-box; + box-sizing: content-box; + color: #464646; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.button a, .button-secondary a { + font-weight: normal !important; +} + +.submit input:hover, .button:hover, .button-secondary:hover, input[type=button]:hover, input[type=submit]:hover { + color: #000; + border-color: #666; +} + +.submit input, .button, .button-secondary, input[type=button], input[type=submit] { + background: #f2f2f2 url(white-grad.png) repeat-x scroll left top; +} + +.submit input:active, .button:active, .button-secondary:active, input[type=button]:active, input[type=submit]:active { + background: #eee url(white-grad.png) repeat-x scroll left bottom; +} + +.button-primary { + border-color: #298cba !important; + font-weight: bold; + color: #FFF !important; + background: #21759B url(button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +.button-primary:hover { + border-color: #13455b !important; + color: #EAF2FA !important; +} + +.button-primary:active { + background: #21759b url(button-grad.png) repeat-x scroll left bottom !important; +} + +/* */ + +.download-button { + font-size: 14px; + padding: 4px 8px !important; + -moz-border-radius: 12px; + -khtml-border-radius: 12px; + -webkit-border-radius: 12px; + border-radius: 12px; + border-color: #298cba !important; + font-weight: bold; + color: #FFF !important; + background: #21759B url(button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +#home-welcome .download-button { + -moz-border-radius: 14px; + -khtml-border-radius: 14px; + -webkit-border-radius: 13px; + border-radius: 14px; + padding: 4px 12px !important; +} + +.col-3 a.download-button { + display: block; + text-align: center; +} + +a.download-button strong { + font-weight: normal; +} + +a.download-button:hover { + border-color: #13455b !important; + color: #EAF2FA !important; +} + +a.download-button:active { + background: #21759b url(button-grad.png) repeat-x scroll left bottom !important; +} + +.download-meta { + text-align: center !important; + font-size: 11px; + margin-bottom: 0 !important; +} + + +/* */ + +#home-welcome .download-button { + margin-left: 6px; +} + +.col-3 ul { + margin-left: 16px; + list-style: square; + margin-bottom: 22px; +} + +.col-3 p { + margin-bottom: 22px; +} + + +a.download-button { + font-size: 13px; + line-height: 1.4em; +} + +.download-tar { + font-size: 10px; + text-align: center; + margin-bottom: 14px !important; +} + +#home-below { + font-size: 12px; + width: 960px; + margin: 0 auto; +} + +#home-below .image img { + border: 1px solid #dadada; +} + +#home-below .wrapper { + float: left; + margin-bottom: 14px; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12 { + float: left; + margin: 0 14px; +} + +.col-1 { width: 52px; } +.col-2 { width: 132px; } +.col-3 { width: 212px; } +.col-4 { width: 292px; } +.col-5 { width: 372px; } +.col-6 { width: 452px; } +.col-7 { width: 532px; } +.col-8 { width: 612px; } +.col-9 { width: 692px; } +.col-10 { width: 772px; } +.col-11 { width: 852px; } +.col-12 { width: 932px; } + +h3 { + font-size: 14px; + color: #333; + font-weight:bold; + margin: -1px 0 1px 0; +} + +h4, h3.head { + font-weight: bold; + font-size: 14px; + border-bottom: 1px solid #dedede; + padding-bottom: 4px; + color: #333; + margin-bottom: 18px; +} + +h5 { + font-weight: bold; + font-size: 1em; + margin-bottom: 12px; +} + +#home-below h4 { + margin-top: 28px; + margin-bottom: 16px; +} + +#home-below h4 a { + font-weight: bold; +} + +#home-below h5 { + margin-bottom: 0; +} + +#home-below img.book { + margin-top: -17px; + margin-bottom: 6px; +} + +#home-below a { + font-size: 14px; +} + +#home-below ol.steps { + margin-top: -4px; +} + +#home-below ol.steps li { + padding-left: 44px; + padding-top: 4px; + margin-bottom: 17px; +} + +#home-below ol.steps li.one { + background: url(step1.png) top left no-repeat; +} + +#home-below ol.steps li.two { + background: url(step2.png) top left no-repeat; +} + +#home-below ol.steps li.three { + background: url(step3.png) top left no-repeat; +} + +ul#notable-users { + list-style: none; +} + +p#showcase-link a { + font-size: 0.9em; + border: none; +} + +ol.steps { + list-style: none; +} + +ul#notable-users li a { + display: block; + width: 130px; + height: 59px; + margin-bottom: 8px; + border-top: 1px solid #f5f5f5; + border-left: 1px solid #f5f5f5; + border-right: 1px solid #dedede; + border-bottom: 1px solid #dedede; +} + +ul#notable-users li a:active { + border-top: 1px solid #dedede; + border-left: 1px solid #dedede; + border-right: 1px solid #f5f5f5; + border-bottom: 1px solid #f5f5f5; +} + +input.text { + margin-right: 2px; + font-size: 10px; + padding: 3px; + background: #f5f5f5; + border: 1px solid #ccc; + height: 14px; + vertical-align: top; + color: #666; +} + +#headline { + height: 87px; + min-width: 960px; + background: #f7f7f7; + border-bottom: 1px solid #dfdfdf; +} + +#headline h2 { + color: #555; + font-size: 36px; + line-height: 1em; + text-shadow: #fff 0px 1px 0px; + padding-top: 34px; + padding-left: 12px; + float: left; + text-rendering: optimizeLegibility; +} + +#headline .login { + position: relative; + float: right; + padding-top: 50px; + margin-right: 15px; +} + +#headline input.text { + background: #fff; + border: 1px solid #c6d9e9; +} + +#pages {float:right;} + +#pagebody .submenu, #pagebody #submenu { + margin-left: 0; + margin-top: -2px; + font-size: 10px; + list-style: none; +} + +#pagebody .submenu a#subcurrent, #pagebody #submenu a#subcurrent { + color: #333; + cursor: default; +} + +p.person { + padding-bottom: 10px; + border-bottom: 1px solid #dadada; + margin-bottom: 11px; +} + +#pagebody .submenu li { + border-bottom: 1px solid #dedede; + font-size: 11px; + line-height: 15px; + padding: 5px 0; +} + +#pagebody .submenu li a { + width: 100%; + display: block; +} + +#pagebody .submenu li.current { + background: url(arrow.png) center left no-repeat; + font-weight: bold; +} + +#pagebody .submenu li ul { + margin-top: 0 !important; + margin-left: 16px !important; +} + +#pagebody .submenu li ul li { + border: none; + line-height: 1.4em; + padding-bottom: 2px; +} + +#pagebody { + font-size: 12px; + margin-top: 29px; +} + +#pagebody p, #pagebody ol, #pagebody ul { + margin: 0 0 22px 0; +} + +#pagebody ul { + margin-left: 16px; + list-style: square; +} + +a.rsslink {background:url(feedicon10.png) top left no-repeat; padding-left: 14px;} + +#pagebody ol { + margin-left: 22px; + list-style: roman; +} + +#pagebody p.intro { + font-family: Georgia, Times, "Times New Roman", serif; + color: #555; + font-size: 15px; + margin-top: -1px; + margin-bottom: 23px; +} + +#pagebody p.intro a { + font-weight: normal; +} + +.feed { + background: url(feedicon.png) center left no-repeat; + padding-left: 19px; +} + +#footer { + clear: both; + border-top: 1px solid #dedede; + padding: 6px 14px; + width: 932px; + margin: 0 auto; +} + +#footer .wrapper { + width: 932px; +} + +#footer p { + font-family: "Lucida Grande",Tahoma,"Bitstream Vera Sans",Arial,sans-serif; + float: left; + color: #bbb; +} + +#footer p a { + border: none; +} + +#footer h6 { + float: right; +} + +#footer h6 { + background: url(codeispoetry.png) center center no-repeat; + width: 133px; + height: 9px; + text-indent: -9999px; + margin-top: 6px; +} + +#head-search { + float: right; + margin-right: 14px; + height: 48px; + padding-top: 6px; +} + +#head-search input.text { + background: #fff; + border: 1px solid #bbb; + margin-right: 6px; + width: 130px; + color: #aaa; + float: left; +} + +#head-search .button { + float: left; + text-shadow: none !important; +} + +blockquote { + background: #f5f5f5; + border: 1px solid #dadada; + padding: 22px 22px 0; + margin-bottom: 22px; +} + +ul#books, ul#otherbooks { + list-style: none; + margin: 0; +} + +#books .image, #otherbooks .image { + width: 200px; + display: block; + float: left; + text-align: center; + margin: 18px; + border-right: 1px solid #dadada; +} + +#books img, #otherbooks img { + border: 1px solid #dadada; +} + +#books li, #otherbooks li { + background: #f5f5f5; + border: 1px solid #dadada; + border-right-color: #eee; + border-bottom-color: #e0e0e0; + margin-bottom: 22px; + clear: both; + float: left; + width: 100%; +} + +#books h3, #otherbooks h3 { + margin: 18px 0 5px 0; + font: 21px Georgia, Times, "Times New Roman", serif; +} + +#otherbooks h3, #otherbooks p { + margin-left:20px; +} + +#otherbooks h3 { + font-size:18px; +} + +#books p, #otherbooks p { + padding-right: 22px; + margin-bottom: 7px; +} + +#books .author, #otherbooks .author { + font: italic 15px Georgia, Times, "Times New Roman", serif; + margin-bottom: 11px; + color: #888; +} + +#books .published, #otherbooks .published { + font-size: 9px; + text-transform: uppercase; + letter-spacing: 0.2em; + color: #888; +} + +#books h3 a, #otherbooks h3 a { + font-weight: normal; +} + +.alt { background: #f9f9f9; } + +.featured { + background: #fffbcc; + border: 1px solid #e6db55; + padding: 11px 11px 16px; + margin: 32px 0; + overflow: auto; + width: 670px; +} + +.partner { + clear: both; + min-height: 100px; + margin-bottom: 20px; +} + +.partner img { + float: right; + margin-top: 4px; + margin-right: 4px; + margin-left: 12px; +} +.submit { + border-top: 1px solid #ccc; + padding: 1.5em 0 0 0; + margin: 10px 0 0 0; + -moz-border-radius-bottomleft: 3px; + -khtml-border-bottom-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-bottomright: 3px; + -khtml-border-bottom-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +#pagebody table.widefat { + border: 1px solid #ccc; + border-collapse: collapse; + width: 100%; + clear: both; + margin-bottom: 11px; +} + +#pagebody table.widefat a { + text-decoration: none; +} + +#pagebody table.widefat tr.alt { + background-color: #f9f9f9; +} + +#pagebody table.widefat thead { + background-color: #464646; + color: #d7d7d7; +} + +#pagebody table.widefat td, #pagebody table.widefat th { + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #ccc; + font-size: 12px; + padding: 6px; + vertical-align: text-top; +} + +#pagebody table.widefat th { + padding-bottom: 4px; + padding-top: 8px; + text-align: left; +} + +#pagebody table.widefat .check-column { + text-align: center; + vertical-align: text-top; + width: 3%; +} + +.wrap, .updated, .error { + margin: 0; + margin-left: 15px; + margin-right: 15px; + padding: 0; + max-width: 980px; +} + +.form-table, form#profile-form table { + border-collapse: collapse; + margin-top: 1em; + width: 100%; + color: #333; +} + +.form-table td, form#profile-form table td { + margin-bottom: 9px; + padding: 10px; + line-height: 20px; + border-bottom-width: 8px; + border-bottom-style: solid; + +} + +.form-table th, form#profile-form table th { + text-align: left; + padding: 10px; + width: 150px; + font-weight: bold; + border-bottom-width: 8px; + border-bottom-style: solid; +} + +.form-table input, .form-table textarea, +form#profile-form table input, form#profile-form textarea { + border: 1px solid #d1e5f6; + border-top-color: #b0c1cf; + border-left-color: #b0c1cf; +} + +.form-table textarea, form#profile-form table textarea { + width: 520px !important; + font-size: 13px; + line-height: 1.5em; +} + +.error { + background-color: #ffebe8; + border-color: #c00; +} + +.error a { + color: #c00; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input { + border-color: #c00 !important; +} + +.form-table td, .form-table th, +form#profile-form table td, form#profile-form table th { + border-bottom-color: #fff; +} + +.form-input-tip { + color: #999; +} + +.form-table tr, form#profile-form table tr { + background-color: #eaf3fa; +} + +#sitesearch { + margin-top: 10px; + margin-bottom: 22px; + font-size: 10px; +} + +#sitesearch #sitesearchbox { + width: 45%; + padding: 3px; + font-size: 18px; +} + +#sitesearch p { margin-top: 4px; } + +#sitesearch label { margin-right: 6px;} + +#sitesearch .text { + height: 24px; +} + +#sitesearch .button { + font-size: 16px; + margin-left: 4px; + height: 32px; + padding: 0 6px; +} + +ol.searchresults { + margin-top: 22px !important; + padding-left: 4px; +} + +div.special { margin-top: 22px; } + +.searchresults h4, .special h4 { + margin-bottom: 4px; +} +.searchresults .source, .special .source { + float: right; + font-size: 10px; + font-style: italic; + font-family: "Lucida Sans"; + color: #888; + font-weight: normal; +} + +.heatmap { + font-family: Georgia, Times, "Times New Roman", serif; + line-height: 3em; +} + +.heatmap a { + font-weight: normal; +} + +.col-10 .col-5 { + margin: 0; + width: 352px; + padding-right: 20px; +} + +.col-10 .col-10 { + margin: 24px 0 0; + clear: both; +} + +.col-10 .col-8, .col-10 .col-7 { + margin: 0; +} + +.col-10 .col-5 table td { + line-height: 1.5em; + padding: 10px 0; + border-bottom: 1px solid #dadada; +} + +.more { + font-size: 90%; +} + +.column-list { + font-size: 10px; + line-height: 1.5em; +} + +.column-list li { + padding-bottom: 4px; +} + +#theuser .block { + margin: 24px; +} + +#theuser #userinfo { + margin-left: 22px; + margin-bottom: 0; +} + +#lang-guess { + width: 932px; + margin: 22px auto 0; + background: #fffbcc; + border: 1px solid #e6db55; + text-align: center; + font: 1.3em Georgia, Times, "Times New Roman", serif; + padding: 10px 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +h3.graphics { + clear: both; + padding-top: 20px; + font-size:22px; + font-weight: normal; + color: #999; + padding-bottom: 6px; +} + +ul.logo { + margin: 0 14px 14px 0 !important; + width: 176px; + border: 1px solid #dfdfdf; + border-top: none; + float: left; +} + +ul.logo li { + list-style: none; + border-bottom: 1px solid #dfdfdf; + background: #f5f5f5; + line-height:13px; +} + +ul.logo li.img { + background: #fff; +} + +ul.logo li a span { + color: #999; + font-weight: normal; +} + +ul.logo li a { + display: block; + padding: 6px 8px; + font-size:10px; +} + +ul.logo li:first-child { + border-top: 1px solid #dfdfdf; +} + +ul.logo li:last-child { + border-bottom: none; +} + +p.community { + clear: both; + font-size:14px; + padding: 24px 0; +} + + +ul.logo .pnglogo { background: #eee; text-align: center;} + +ul.logo .pnglogo:hover { background: #555; } + +.pnglogo img { + padding: 62px 0; +} + +#logo-blue img, #logo-grey img { padding: 20px 0; } + + +ul.colors { + margin: 0 !important; +} + +ul.colors li { + float: left; + list-style: none; + margin-left: 60px; + padding-right:50px; + border-right: 1px solid #dfdfdf; + margin-right:50px; + margin-bottom: 24px; + line-height: 14px; + font-size: 10px; + color: #666; +} + +ul.colors li strong { + font-size: 12px; + color: #333; +} + +ul.colors li:last-child { + padding-right: 0; + margin-right: 0; + border-right: none; +} + +ul.colors li img { + float: left; + margin-left: -60px; +} + +.meta { + font-size: 11px; + color: #777; + margin-bottom: 10px; +} + +.meta a { + color: #777; + border-bottom: 1px solid #dfdfdf; +} + +.meta a:hover { color: #d54e21; border-bottom-color: #d54e21; } + +hr { border: none; border-top: 1px solid #dfdfdf; } + +#headline a { + color: #555; +} + +