diff --git a/themes/default/b.png b/themes/default/b.png new file mode 100644 index 00000000..e879616c Binary files /dev/null and b/themes/default/b.png differ diff --git a/themes/default/br.png b/themes/default/br.png new file mode 100644 index 00000000..ae3666ef Binary files /dev/null and b/themes/default/br.png differ diff --git a/themes/default/circle-bl.png b/themes/default/circle-bl.png new file mode 100644 index 00000000..f278075c Binary files /dev/null and b/themes/default/circle-bl.png differ diff --git a/themes/default/circle-br.png b/themes/default/circle-br.png new file mode 100644 index 00000000..0a8806c8 Binary files /dev/null and b/themes/default/circle-br.png differ diff --git a/themes/default/circle-tl.png b/themes/default/circle-tl.png new file mode 100644 index 00000000..12ab8650 Binary files /dev/null and b/themes/default/circle-tl.png differ diff --git a/themes/default/circle-tr.png b/themes/default/circle-tr.png new file mode 100644 index 00000000..1589c841 Binary files /dev/null and b/themes/default/circle-tr.png differ diff --git a/themes/default/circle.png b/themes/default/circle.png new file mode 100644 index 00000000..66193e15 Binary files /dev/null and b/themes/default/circle.png differ diff --git a/themes/default/comment.theme.php b/themes/default/comment.theme.php new file mode 100644 index 00000000..405b3518 --- /dev/null +++ b/themes/default/comment.theme.php @@ -0,0 +1,51 @@ +"; + $html .= "
" . $this->build_thumb_html($image) . "
"; + $html .= "
" . $this->comments_to_html($comments) . "
"; + $html .= ""; + if($with_postbox) { + $html .= "
".($this->build_postbox($image->id))."
"; + } + else { + // $html .= "

You need to create an account before you can comment

"; + $html .= "

 

"; + } + + $page->add_block(new Block("{$image->id}: ".($image->get_tag_list()), $html, "main", $position)); + } + + protected function comment_to_html($comment, $trim=false) { + global $user; + + $tfe = new TextFormattingEvent($comment->comment); + send_event($tfe); + + $i_uid = int_escape($comment->owner_id); + $h_name = html_escape($comment->owner_name); + $h_poster_ip = html_escape($comment->poster_ip); + $h_comment = ($trim ? substr($tfe->stripped, 0, 50)."..." : $tfe->formatted); + $i_comment_id = int_escape($comment->comment_id); + $i_image_id = int_escape($comment->image_id); + + $h_userlink = "$h_name"; + $stripped_nonl = str_replace("\n", "\\n", $tfe->stripped); + $stripped_nonl = str_replace("\r", "\\r", $stripped_nonl); + $h_dellink = $user->is_admin() ? + "
($h_poster_ip, Del)" : ""; + $h_imagelink = $trim ? ">>>\n" : ""; + return " +
+
+
+ $h_userlink: $h_comment $h_imagelink $h_dellink +
+
+
"; + } +} +?> diff --git a/themes/default/dcircle-bl.png b/themes/default/dcircle-bl.png new file mode 100644 index 00000000..8939b4b9 Binary files /dev/null and b/themes/default/dcircle-bl.png differ diff --git a/themes/default/dcircle-br.png b/themes/default/dcircle-br.png new file mode 100644 index 00000000..f51ee37c Binary files /dev/null and b/themes/default/dcircle-br.png differ diff --git a/themes/default/dcircle-tl.png b/themes/default/dcircle-tl.png new file mode 100644 index 00000000..875af85e Binary files /dev/null and b/themes/default/dcircle-tl.png differ diff --git a/themes/default/dcircle-tr.png b/themes/default/dcircle-tr.png new file mode 100644 index 00000000..f3226fa3 Binary files /dev/null and b/themes/default/dcircle-tr.png differ diff --git a/themes/default/layout.class.php b/themes/default/layout.class.php new file mode 100644 index 00000000..324fd155 --- /dev/null +++ b/themes/default/layout.class.php @@ -0,0 +1,112 @@ +get_string('theme', 'default'); + $data_href = get_base_href(); + $contact_link = $config->get_string('contact_link'); + $version = "Shimmie-".VERSION; + + $header_html = ""; + foreach($page->headers as $line) { + $header_html .= "\t\t$line\n"; + } + + $left_block_html = ""; + $main_block_html = ""; + + foreach($page->blocks as $block) { + switch($block->section) { + case "left": + $left_block_html .= $this->block_to_html($block, true, "left"); + break; + case "main": + $main_block_html .= $this->block_to_html($block, false, "main"); + break; + default: + print "

error: {$block->header} using an unknown section ({$block->section})"; + break; + } + } + + $debug = get_debug_info(); + + $contact = empty($contact_link) ? "" : "
Contact"; + $subheading = empty($page->subheading) ? "" : "

{$page->subheading}
"; + + $wrapper = ""; + if(strlen($page->heading) > 100) { + $wrapper = ' style="height: 3em; overflow: auto;"'; + } + + print << + + + {$page->title} + + +$header_html + + + + + + {$page->heading} + $subheading + + +
$main_block_html
+ + + + +EOD; + } + + function block_to_html($block, $hidable=false, $salt="") { + $h = $block->header; + $b = $block->body; + $html = ""; + $i = str_replace(' ', '_', $h) . $salt; + if($hidable) { + $toggle = " onclick=\"toggle('$i')\""; + } + else { + $toggle = ""; + } + if(!is_null($h)) $html .= " +
+
+

$h

+
+
+ "; + if(!is_null($b)) { + if(strpos($b, "rrcontent")) { + $html .= "
$b
"; + } + else { + $html .= " +
+
+
$b
+
+
+ "; + } + } + + return $html; + } +} +?> diff --git a/themes/default/page.class.php b/themes/default/page.class.php new file mode 100644 index 00000000..07d2fc45 --- /dev/null +++ b/themes/default/page.class.php @@ -0,0 +1,6 @@ + diff --git a/themes/default/r.png b/themes/default/r.png new file mode 100644 index 00000000..401418cd Binary files /dev/null and b/themes/default/r.png differ diff --git a/themes/default/script.js b/themes/default/script.js new file mode 100644 index 00000000..3b26466e --- /dev/null +++ b/themes/default/script.js @@ -0,0 +1,136 @@ +var defaultTexts = new Array(); + +window.onload = function(e) { + var sections=get_sections(); + for(var i=0;iINPUT[type="submit"] {width: 100%;} +TD>INPUT[type="text"] {width: 100%;} +TD>INPUT[type="password"] {width: 100%;} +TD>SELECT {width: 100%;} + +TABLE.zebra {border-spacing: 0px;} +TABLE.zebra TD, TABLE.zebra TH {vertical-align: middle; padding: 4px;} +TABLE.zebra THEAD TD, TABLE.zebra THEAD TH {border-bottom: 2px solid #CCC;} +TABLE.zebra TFOOT TD, TABLE.zebra TFOOT TH {border-top: 2px solid #CCC;} +TABLE.zebra TR {border-bottom: 1px solid #DDD;} +TABLE.zebra TR.odd {background: #EFEFEF;} +TABLE.zebra TR.even {background: #E0E0E0;} + +#footer { + clear: both; + padding: 8px; + font-size: 0.7em; + text-align: center; + border-top: 1px solid black; + background: #BBB; +} + +*[onclick] {cursor: pointer;} +IMG {border: none;} +FORM {margin: 0px;} +A {text-decoration: none;} +A:hover {text-decoration: underline;} + +BLOCKQUOTE { + border: 1px solid black; + padding: 8px; + background: #DDD; +} + +UL { + text-align: left; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* the navigation bar, and all its blocks * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#nav { + width: 200px; + float: left; + text-align: center; + margin-left: 16px; +} +#nav .blockbody { + font-size: 0.85em; + text-align: center; +} +#nav TABLE { + width: 150px; +} +#nav TD { + vertical-align: middle; +} +#nav INPUT { + width: 100%; + padding: 0px; +} +#nav SELECT { + width: 100%; + padding: 0px; +} + +#comments P { + text-align: left; + width: 150px; + max-width: 150px; + overflow: hidden; +} + +.more:after { + content: " >>>"; +} + +.tag_count:before { + content: "("; +} +.tag_count:after { + content: ")"; +} + +.paginator { + clear: both; + padding: 4px; + margin-bottom: 32px; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* the main part of each page * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#body { + margin-left: 226px; + margin-right: 16px; + text-align: center; + height: 1%; +} +#body TABLE { + width: 90%; + margin: auto; +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* specific page types * +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#pagelist { + margin-top: 32px; +} + +#tagmap A { + padding: 8px 4px 8px 4px; +} + +.rr {text-align: left; background: #DDD; margin: 8px;} +.rrtop {background: url("circle-tl.png") no-repeat top left;} +.rrtop div {background: url("circle-tr.png") no-repeat top right;} +.rrbot {background: url("circle-bl.png") no-repeat bottom left;} +.rrbot div {background: url("circle-br.png") no-repeat bottom right;} +.rrtop, .rrtop div, .rrbot, .rrbot div {height: 8px; width: 100%;} +.rrcontent {margin: 0px 8px;} + +.hrr {text-align: left; background: #CCC; margin: 8px;} +.hrrtop {background: url("dcircle-tl.png") no-repeat top left;} +.hrrtop div {background: url("dcircle-tr.png") no-repeat top right;} +.hrrbot {background: url("dcircle-bl.png") no-repeat bottom left;} +.hrrbot div {background: url("dcircle-br.png") no-repeat bottom right;} +.hrrtop, .hrrtop div, .hrrbot, .hrrbot div {height: 8px; width: 100%;} +.hrrcontent {margin: 0px 8px;} + +.setupblock { + border: 1px solid #AAA; + padding: 8px; + margin: 16px; + width: 350px; +} + +.helpable { + border-bottom: 1px dashed gray; +} + +.ok { + background: #AFA; +} +.bad { + background: #FAA; +} + +.thumbblock { + width: 220px; + height: 220px; + display: inline-block; + float: left; +} +.thumb { + display: inline-block; + text-align: center; + vertical-align: center; + margin-bottom: 32px; +} + diff --git a/themes/default/themelet.class.php b/themes/default/themelet.class.php new file mode 100644 index 00000000..7f749e73 --- /dev/null +++ b/themes/default/themelet.class.php @@ -0,0 +1,102 @@ +set_title($title); + $page->set_heading($title); + $page->add_block(new NavBlock()); + $page->add_block(new Block("Error", $message)); + } + + + /** + * A specific, common error message + */ + public function display_permission_denied($page) { + header("HTTP/1.0 403 Permission Denied"); + $this->display_error($page, "Permission Denied", "You do not have permission to access this page"); + } + + + /** + * Generic thumbnail code; returns HTML rather than adding + * a block since thumbs tend to go inside blocks... + */ + public function build_thumb_html($image, $query=null) { + global $config; + $i_id = int_escape($image->id); + $h_view_link = make_link("post/view/$i_id", $query); + $h_tip = html_escape($image->get_tooltip()); + $h_thumb_link = $image->get_thumb_link(); + $tsize = get_thumbnail_size($image->width, $image->height); + $hm8 = $tsize[1]-8; + $wm8 = $tsize[0]-8; + return " +
+
+
+
+ + $h_tip + +
+
+
+
+ "; + } + + + /** + * Add a generic paginator + */ + public function display_paginator($page, $base, $query, $page_number, $total_pages) { + if($total_pages == 0) $total_pages = 1; + $body = $this->build_paginator($page_number, $total_pages, $base, $query); + $page->add_block(new Block(null, $body, "main", 90)); + } + + private function gen_page_link($base_url, $query, $page, $name) { + $link = make_link("$base_url/$page", $query); + return "$name"; + } + + private function gen_page_link_block($base_url, $query, $page, $current_page, $name) { + $paginator = ""; + if($page == $current_page) $paginator .= ""; + $paginator .= $this->gen_page_link($base_url, $query, $page, $name); + if($page == $current_page) $paginator .= ""; + return $paginator; + } + + private function build_paginator($current_page, $total_pages, $base_url, $query) { + $next = $current_page + 1; + $prev = $current_page - 1; + $rand = rand(1, $total_pages); + + $at_start = ($current_page <= 1 || $total_pages <= 1); + $at_end = ($current_page >= $total_pages); + + $first_html = $at_start ? "First" : $this->gen_page_link($base_url, $query, 1, "First"); + $prev_html = $at_start ? "Prev" : $this->gen_page_link($base_url, $query, $prev, "Prev"); + $random_html = $this->gen_page_link($base_url, $query, $rand, "Random"); + $next_html = $at_end ? "Next" : $this->gen_page_link($base_url, $query, $next, "Next"); + $last_html = $at_end ? "Last" : $this->gen_page_link($base_url, $query, $total_pages, "Last"); + + $start = $current_page-5 > 1 ? $current_page-5 : 1; + $end = $start+10 < $total_pages ? $start+10 : $total_pages; + + $pages = array(); + foreach(range($start, $end) as $i) { + $pages[] = $this->gen_page_link_block($base_url, $query, $i, $current_page, $i); + } + $pages_html = implode(" | ", $pages); + + return "

$first_html | $prev_html | $random_html | $next_html | $last_html". + "
<< $pages_html >>

"; + } +} +?>