commit 87bd6a2f554a0dc756e766c1f478c67c04013813 Author: John Bintz Date: Fri Aug 21 13:45:23 2009 -0400 initial commit diff --git a/404.php b/404.php new file mode 100644 index 0000000..0ee7cbe --- /dev/null +++ b/404.php @@ -0,0 +1,47 @@ + + + + + +
+
+ + + +
+ + + +
+ + + + + +
+
+ + +
+
+

Page Not Found

+

Click here to return to the home page or try a search:

+

+
+
+
+
+
+
+ + + + + +
+
+ + + \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..26b0e68 --- /dev/null +++ b/README @@ -0,0 +1,18 @@ +ComicPress is the WordPress Comic Pubishing Theme. + +Copyright 2005-2009 Tyler Martin +Copyright 2008-2009 John Bintz +Copyright 2009 Philip M. Hofer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/archive-blog-calendar.php b/archive-blog-calendar.php new file mode 100644 index 0000000..777815c --- /dev/null +++ b/archive-blog-calendar.php @@ -0,0 +1,153 @@ + + + + +query('&showposts=1000&cat=-'.exclude_comic_categories().'&year='.$archive_year); +while ($comicArchive->have_posts()) : $comicArchive->the_post(); + $calTitle = get_the_title(); + $calLink = get_permalink(); + $calDay = get_the_time('j'); + $calMonth = get_the_time('F'); + $calComic[$calMonth.$calDay] = array('link' => $calLink, 'title' => $calTitle); +endwhile; +$post = $tempPost; + +function leapYear($yr) { + if ($yr % 4 != 0) { + return 28; + } else { + if ($yr % 100 != 0) { + return 29; + } else { + if ($yr % 400 != 0) { + return 28; + } else { + return 29; + } + } + } +} +$leapYear = leapYear($archive_year); + +$month['1'] = array('month' => 'January', 'days' => '31'); +$month['2'] = array('month' => 'February', 'days' => $leapYear); +$month['3'] = array('month' => 'March', 'days' => '31'); +$month['4'] = array('month' => 'April', 'days' => '30'); +$month['5'] = array('month' => 'May', 'days' => '31'); +$month['6'] = array('month' => 'June', 'days' => '30'); +$month['7'] = array('month' => 'July', 'days' => '31'); +$month['8'] = array('month' => 'August', 'days' => '31'); +$month['9'] = array('month' => 'September', 'days' => '30'); +$month['10'] = array('month' => 'October', 'days' => '31'); +$month['11'] = array('month' => 'November', 'days' => '30'); +$month['12'] = array('month' => 'December', 'days' => '31'); + +?> + + + + +
+
+ + + +
+ + + +
+ + + + + +
+
+ + +
+
+ +
+

+ +
+ + +
| +get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date ASC"); +foreach ( $years as $year ) { + if ($year != (0) ) { ?> + | + +
+ + +
+
+ +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ +
+
+comment_status) { + comments_template('', true); + } ?> +
+
+ + + + +
+
+ + + \ No newline at end of file diff --git a/archive-blog-year.php b/archive-blog-year.php new file mode 100644 index 0000000..b0e6195 --- /dev/null +++ b/archive-blog-year.php @@ -0,0 +1,82 @@ + + + + + + + + + +
+
+ + + +
+ + + +
+ + + + + +
+
+ + +
+
+ +
+

+ +
+ + +
| + get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date ASC"); + foreach ( $years as $year ) { + if ($year != (0) ) { ?> + | + +
+ + + query('showposts=10000&cat=-'.exclude_comic_categories().'&year='.$archive_year); + while ($comicArchive->have_posts()) : $comicArchive->the_post() ?> + + +
+ +
+ +
+
+
+
+ + + + +
+
+ + + \ No newline at end of file diff --git a/archive-comic-calendar.php b/archive-comic-calendar.php new file mode 100644 index 0000000..544a7ac --- /dev/null +++ b/archive-comic-calendar.php @@ -0,0 +1,155 @@ + + + + +query('&showposts=1000&cat='.get_all_comic_categories_as_cat_string().'&year='.$archive_year); +while ($comicArchive->have_posts()) : $comicArchive->the_post(); + $calTitle = get_the_title(); + $calLink = get_permalink(); + $calDay = get_the_time('j'); + $calMonth = get_the_time('F'); + $calComic[$calMonth.$calDay] = array('link' => $calLink, 'title' => $calTitle); +endwhile; +$post = $tempPost; + +function leapYear($yr) { + if ($yr % 4 != 0) { + return 28; + } else { + if ($yr % 100 != 0) { + return 29; + } else { + if ($yr % 400 != 0) { + return 28; + } else { + return 29; + } + } + } +} +$leapYear = leapYear($archive_year); + +$month['1'] = array('month' => 'January', 'days' => '31'); +$month['2'] = array('month' => 'February', 'days' => $leapYear); +$month['3'] = array('month' => 'March', 'days' => '31'); +$month['4'] = array('month' => 'April', 'days' => '30'); +$month['5'] = array('month' => 'May', 'days' => '31'); +$month['6'] = array('month' => 'June', 'days' => '30'); +$month['7'] = array('month' => 'July', 'days' => '31'); +$month['8'] = array('month' => 'August', 'days' => '31'); +$month['9'] = array('month' => 'September', 'days' => '30'); +$month['10'] = array('month' => 'October', 'days' => '31'); +$month['11'] = array('month' => 'November', 'days' => '30'); +$month['12'] = array('month' => 'December', 'days' => '31'); + +?> + + + + +
+
+ + + +
+ + + +
+ + + + + +
+
+ + +
+
+ +
+

+ +
+ + +
| +get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date ASC"); +foreach ( $years as $year ) { + if ($year != (0) ) { ?> + | + +
+ + +
+
+ +
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ +
+
+comment_status) { + comments_template('', true); + } ?> +
+
+ + + + +
+
+ + + \ No newline at end of file diff --git a/archive-comic-storyline-thumbs.php b/archive-comic-storyline-thumbs.php new file mode 100644 index 0000000..ce35fb2 --- /dev/null +++ b/archive-comic-storyline-thumbs.php @@ -0,0 +1,105 @@ + + + + + + +
+
+ + + +
+ + + +
+ + + + + +
+
+ + +
+
+ +
+

+ +
+ +
    +description; + $first_comic_in_category = get_terminal_post_in_category($category_id); + $first_comic_permalink = get_permalink($first_comic_in_category->ID); + $archive_image = null; + foreach (array("archive", "rss", "comic") as $type) { + if (($requested_archive_image = get_comic_url("archive", $first_comic_in_category)) !== false) { + $archive_image = $requested_archive_image; break; + } + } + if ($target_depth < $current_depth) { + echo str_repeat("
", ($current_depth - $target_depth)); + } + if ($target_depth > $current_depth) { + for ($i = $current_depth; $i < $target_depth; ++$i) { + $next_i = $i + 1; + echo "
    • "; + } + } ?> + +
    • > + + + + cat_name ?> + +
      + +
      +
    • + + 0) { + echo str_repeat("
  • ", $current_depth); + } + } + } else { ?> +
  • Storyline Support is not currently enabled on this site.



    Note to the Administrator:
    To enable storyline support and manage storyline categories make sure you are running the latest version of the ComicPress Manager plugin and check your storyline settings from it's administration menu.
  • + + +
    +
    +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/archive-comic-storyline.php b/archive-comic-storyline.php new file mode 100644 index 0000000..9ff62f6 --- /dev/null +++ b/archive-comic-storyline.php @@ -0,0 +1,107 @@ + + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    + +
    +

    + +
    + +
      + description; + $first_comic_in_category = get_terminal_post_in_category($category_id); + $first_comic_permalink = get_permalink($first_comic_in_category->ID); + $archive_image = null; + foreach (array("archive", "rss", "comic") as $type) { + if (($requested_archive_image = get_comic_url("archive", $first_comic_in_category)) !== false) { + $archive_image = $requested_archive_image; break; + } + } + if ($target_depth < $current_depth) { + echo str_repeat("
    ", ($current_depth - $target_depth)); + } + if ($target_depth > $current_depth) { + for ($i = $current_depth; $i < $target_depth; ++$i) { + $next_i = $i + 1; + echo "
  • ", $current_depth); + } + } + } else { ?> +
  • Storyline Support is not currently enabled on this site.



    Note to the Administrator:
    To enable storyline support and manage storyline categories make sure you are running the latest version of the ComicPress Manager plugin and check your storyline settings from it's administration menu.
  • + + +
    +
    +
    +
    +
    + + + + +
    +
    + + \ No newline at end of file diff --git a/archive-comic-year.php b/archive-comic-year.php new file mode 100644 index 0000000..9221ac9 --- /dev/null +++ b/archive-comic-year.php @@ -0,0 +1,82 @@ + + + + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    + +
    +

    + +
    + + +
    | + get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date ASC"); + foreach ( $years as $year ) { + if ($year != (0) ) { ?> + | + +
    + + + query('showposts=10000&cat='.get_all_comic_categories_as_cat_string().'&year='.$archive_year); + while ($comicArchive->have_posts()) : $comicArchive->the_post() ?> + + +
    + +
    + +
    +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/archive-comic.php b/archive-comic.php new file mode 100644 index 0000000..fe6a226 --- /dev/null +++ b/archive-comic.php @@ -0,0 +1,69 @@ + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    + +
    +

    + +
    + + + get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC"); + foreach ( $years as $year ) { + if ($year != (0) ) { ?> +

    + + query('showposts=10000&cat='.get_all_comic_categories_as_cat_string().'&year='.$year); + while ($comicArchive->have_posts()) : $comicArchive->the_post() ?> + + +
    + + +
    + +
    +
    +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/archive.php b/archive.php new file mode 100644 index 0000000..c466c6d --- /dev/null +++ b/archive.php @@ -0,0 +1,153 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + +post_count; + ?> + +
    Found result.
    + + + +
    +
    + + + +

    Archive for ‘

    + +

    Posts Tagged ‘

    + +

    Archive for

    + +

    Archive for

    + +

    Archive for

    + +

    Author Archive

    + +

    Archives

    + +
    +
    +
    + + + + + + + +
    +
    + +
    +
    + '); ?> Posted in: +
    +
    +
    +
    + <?php the_title() ?>
    +
    +
    +
    +
    + + + +
    +
    + + +
    +
    +
    + ');?> Posted in: +
    +
    +
    +
    +
    + + + + + + + +
    +
    +

    No entries found.

    +

    Try another search?

    +

    +
    +
    +
    + + + + +
    + +
    + + + +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/archives.php b/archives.php new file mode 100644 index 0000000..e3689cd --- /dev/null +++ b/archives.php @@ -0,0 +1,53 @@ + + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    +

    Archives by Month:

    +
    +

    Archives by Subject:

    +
    +
    +
    +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/author.php b/author.php new file mode 100644 index 0000000..ce55101 --- /dev/null +++ b/author.php @@ -0,0 +1,103 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + + +

    No such author.

    + +
    +
    +
    +
    + display_name, 1)."' title='".wp_specialchars($curauth->display_name, 1), get_avatar($curauth->user_email, 64)); ?> +
    +
    +
    +

    display_name; ?>

    + Registered on user_registered)); ?>
    +
    + user_url)) { ?>Website: user_url; ?>
    + aim)) { ?>AIM: aim; ?>
    + jabber)) { ?>Jabber/Google Talk: jabber; ?>
    + yim)) { ?>Yahoo IM: jabber; ?>
    + +
    + description)) { ?> +
    + description; ?> +
    + +
    +
    +
    + +

    Posts by nickname; ?> (ID); ?>) ¬

    + +
      + + + + +
      +
    + + +
    + +
    + + + + +
    + +
    +
    +
    +
    +
    +
    + + + + + +
    +
    + + + \ No newline at end of file diff --git a/blog.php b/blog.php new file mode 100644 index 0000000..d7a3ad0 --- /dev/null +++ b/blog.php @@ -0,0 +1,71 @@ + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + + + +
    + +
    + + + +
    + + + + +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/buystrip.php b/buystrip.php new file mode 100644 index 0000000..e0429fc --- /dev/null +++ b/buystrip.php @@ -0,0 +1,136 @@ + + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + + + + +
    +
    +
    +
    + Powered by Paypal
    +
    +
    +

    Buy Print!

    +
    +
    + Comic ID - #
    + Title:
    +
    + +
    + <?php the_title(); ?>
    +
    + + + + + + +
    +
    + + + + + + + + + + + + + + US/Canada
    + $ + $ shipping
    + +
    +
    + +
    + + + + + + + + + + + + + + International
    + $ + $ shipping
    + +
    +
    +
    +
    + The purchase of this strip is based on availability. A Print of this strip is what you are purchasing.
    +
    + +
    +
    + + +
    +
    +

    +
    + + '

    Pages: ', 'after' => '

    ', 'next_or_number' => 'number')) ?> +
    + ', '

    ') ?> +
    +
    +
    + + +
    +
    + + + + +
    +
    + + + diff --git a/chrome_style.css b/chrome_style.css new file mode 100644 index 0000000..053ada8 --- /dev/null +++ b/chrome_style.css @@ -0,0 +1,19 @@ +/* ComicPress Custom CSS over-rides for [ chrome ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +.comicarchiveframe { + opacity:0.99; /* firefox, opera, safari, chrome */ +} + + .comicarchiveframe:hover { + opacity:0.70; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img { + opacity:0.5; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img:hover { + opacity:0.5; /* firefox, opera, safari, chrome */ + } \ No newline at end of file diff --git a/comicpress-config.php b/comicpress-config.php new file mode 100644 index 0000000..149fdb2 --- /dev/null +++ b/comicpress-config.php @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/comicpress-options-config.php b/comicpress-options-config.php new file mode 100644 index 0000000..2617565 --- /dev/null +++ b/comicpress-options-config.php @@ -0,0 +1,139 @@ + "open"), + + array( + "id" => "comicpress-disable_comic_frontpage", + "default" => "no", + "type" => "comicpress-disable_comic_frontpage"), + + array( + "id" => "comicpress-disable_comic_blog_frontpage", + "default" => "no", + "type" => "comicpress-disable_comic_blog_frontpage"), + + array( + "id" => "comicpress-disable_blog_frontpage", + "default" => "no", + "type" => "comicpress-disable_blog_frontpage"), + + array( + "id" => "comicpress-custom_css", + "default" => "", + "type" => "comicpress-custom_css"), + + array( + "id" => "comicpress-cp_theme_style", + "default" => "standard", + "type" => "comicpress-cp_theme_style"), + + array( + "id" => "comicpress-buy_print_email", + "default" => "youremail@youremail.com", + "type" => "comicpress-buy_print_email"), + + array( + "id" => "comicpress-buy_print_url", + "default" => "/shop/", + "type" => "comicpress-buy_print_url"), + + array( + "id" => "comicpress-buy_print_us_amount", + "default" => "19.95", + "type" => "comicpress-buy_print_us_amount"), + + array( + "id" => "comicpress-buy_print_int_amount", + "default" => "29.95", + "type" => "comicpress-buy_print_int_amount"), + + array( + "id" => "comicpress-buy_print_us_ship", + "default" => "4.95", + "type" => "comicpress-buy_print_us_ship"), + + array( + "id" => "comicpress-buy_print_int_ship", + "default" => "9.95", + "type" => "comicpress-buy_print_int_ship"), + + array( + "id" => "comicpress-transcript_in_posts", + "default" => "no", + "type" => "comicpress-transcript_in_posts"), + + array( + "id" => "comicpress-enable_widgetarea_use_sidebar_css", + "default" => "no", + "type" => "comicpress-enable_widgetarea_use_sidebar_css"), + + array( + "id" => "comicpress-contact_in_menubar", + "default" => "no", + "type" => "comicpress-contact_in_menubar"), + + array( + "id" => "comicpress-disable_extended_comments", + "default" => "no", + "type" => "comicpress-disable_extended_comments"), + + array( + "id" => "comicpress-enable_custom_image_header", + "default" => "no", + "type" => "comicpress-enable_custom_image_header"), + + array( + "id" => "comicpress-custom_image_header_width", + "default" => "780", + "type" => "comicpress-custom_image_header_width"), + + array( + "id" => "comicpress-custom_image_header_height", + "default" => "120", + "type" => "comicpress-custom_image_header_height"), + + array( + "id" => "comicpress-enable_numbered_pagination", + "default" => "no", + "type" => "comicpress-enable_numbered_pagination"), + + array( + "id" => "comicpress-disable_page_restraints", + "default" => "no", + "type" => "comicpress-disable_page_restraints"), + + array( + "id" => "comicpress-enable_dropdown_sidebar", + "default" => "no", + "type" => "comicpress-enable_dropdown_sidebar"), + + array( + "id" => "comicpress-enable_related_comics", + "default" => "no", + "type" => "comicpress-enable_related_comics"), + + array( + "id" => "comicpress-enable_related_posts", + "default" => "no", + "type" => "comicpress-enable_related_posts"), + + array( + "id" => "comicpress-comic_clicks_next", + "default" => "no", + "type" => "comicpress-comic_clicks_next"), + + array( + "id" => "comicpress-anomaly_says", + "default" => "no", + "type" => "comicpress-anomaly_says"), + + array( + "id" => "comicpress-disable_css_style_editor", + "default" => "no", + "type" => "comicpress-disable_css_style_editor"), + + array("type" => "close") + ); +?> \ No newline at end of file diff --git a/comicpress-options.php b/comicpress-options.php new file mode 100644 index 0000000..12bd151 --- /dev/null +++ b/comicpress-options.php @@ -0,0 +1,481 @@ + +
    +

    ComicPress Options

    + + ComicPress + + +
    + + +

    Options/Settings SAVED!

    + +

    Options/Settings RESET!

    + +
    + + +
    +

    +
    +
    + + + + + + + + + + + +
    Choose which theme style you want to use.

    This is the style in which your theme will be presented.

    + + + ComicPress Theme Style + +

    (Check the vaildity of your theme's HTML & CSS using the links below. Stock ComicPress is XHTML 1.0 and CSS 2 compliant.)

    + Valid XHTML 1.0 Transitional + + Valid CSS! + +
    + + +
    +
    +
    + +
    + +
    +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + To enable the drop down widget area choose [yes] here.
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Disable Comic On Frontpage?

    Set to "Yes" and the comic will not display on the index page/front page of your site.
    + +    +
    +
    + Note: You can use the Latest Thumbnail widget to display your comic in a sidebar. Make sure you set the archive-thumbnail size to under 200px. + Turning this off and using the GN style turns ComicPress into a Blog. +
    Disable Comic Blog On Frontpage?

    Set to "Yes" and the blog portion of the comic will not display on the index page/front page of your site.
    + +    +
    +
    Disable Blog On Frontpage?

    Set to "Yes" and the blog area will not display on the index page/front page of your site.
    + +    +
    +
    Disable Extra Comment Code?

    Set to "Yes" and the extended comment code will be disabled.
    + +    +
    +
    Show transcript in post area?

    When enabled, if the comic has a transcript, the transcript will be displayed inside the post for the comic.
    + +    + +
    Disable showing the post for the comic?

    Setting to "Yes" will disable showing the blog post of the comic on the home page and single pages.
    + +    + +
    Contact Link in Menubar

    Setting to "Yes" will put [ CONTACT ] in the menubar and associate it with your admin's email.
    + +    + +
    Enable Sidebar CSS?

    Enabling this will use the standard CSS styling of the sidebars for all the widget areas.

    If not enabled it will use the .customwidgetarea user made styling only and only the Sidebar-left and Sidebar-right will use sidebar styling.
    + +    + +
    Enable Custom Image Header panel?

    Setting to "Yes" will set a new option in your Dashboard -> Appearance menu.

    After saving the settings 2 new options will appear to set the height and width of the image that you want to use.
    + +    + +
    Enable numbered pagination?

    Setting to "Yes" will make the Previous Entries and Next Entries turn into numbered pages to click on.
    + +    + +
    Disable the #page / #page-wide restraints?
    +
    + Turning this option to Yes will make it so that the divs for #page and #page-wide will not load.
    +
    + What you can do with this is use the entire *page* for your canvas instead of the 780px/980px that the two elements keep you in.
    + +    + +
    Enable the Dropbar Widget area?
    + +    + +
    Put Related Comics in comic posts?
    + +    + +
    Put Related Posts in blog posts?

    + +    + +
    Make the comic an Href that goes to next comic?

    In doing this if someone clicks the comic it will go to the next comic (if possible)
    + +    + +
    Request Anomaly to comment?

    Enabling this option will summon Anomaly to your comic's universe and say what you request Anomaly to say by modifying the "Hovertext" in the comic post.
    + +    + +
    Disable the styling in ComicPress CSS Editor?

    This will let you disable the colored, styling CSS editor and be a normal form.
    + +    + +
    + +
    +
    + +
    +

    +
    + + + + + + + + + + + + + + + +
    Header Image Height

    Set the height of the image you want to use in the Custom Image Header panel.
    + +
    Header Image Width

    Set the width of the image you want to use in the Custom Image Header panel.
    + + + The Standard and V styles use 760 px width, while the 3C, GN and V3C use 980 px width. This is configurable in case you set the #page, #page-width widths in the CSS to something different than the default while using the Custom Header panel. +
    +
    +
    + +
    +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Paypal Email Address*

    The Email address you registered with Paypal and that your store is associated with.
    + +
    Url Page of the Template*

    The URL address to which you associated the buy print template.
    + +
    Print Cost (US/Canada)

    How much does a print cost for people in the United State and Canada?
    + +
    Shipping Cost (US/Canada)

    + +
    Print Cost (International)

    How much does a print cost for people *NOT* in the United States and Canda (International)
    + +
    Shipping Cost (International)

    + +
    +
    +
    + +
    + + + +
    +
    +
    + + + +
    +
    +
    +
    + ComicPress, created by Tyler Martin, with John Bintz and Philip M. Hofer (Frumph)
    + If you like the ComicPress theme, please donate. It will help in creating new versions.
    + +
    + + + + +
    +
    +
    +
    + \ No newline at end of file diff --git a/comicpress.zip b/comicpress.zip new file mode 100644 index 0000000..1b02e08 Binary files /dev/null and b/comicpress.zip differ diff --git a/comments.php b/comments.php new file mode 100644 index 0000000..b159fc1 --- /dev/null +++ b/comments.php @@ -0,0 +1,134 @@ +
    > + + +

    This post is password protected. Enter the password to view comments.

    + + + + +

    + +
      + 'comment', + 'reply_text' => 'Reply to %s¬', + 'callback' => 'comicpress_comments_callback', + 'end-callback' => 'comicpress_comments_end_callback', + 'avatar_size'=>64 + ) + ); + } else { + wp_list_comments(array('type' => 'comment', 'avatar_size'=>64)); + }?> +
    + + + +

    Pings & Trackbacks ¬

    +
      +
        + 'pings', + 'callback' => 'comicpress_comments_callback', + 'end-callback' => 'comicpress_comments_end_callback', + 'avatar_size'=>32 + ) + ); + } else { + wp_list_comments(array('type' => 'pings', 'avatar_size'=>64)); + }?> +
      +
    + + + +
    + +
    + +
    +
    +
    +
    +
    + + + + + +comment_status) : ?> + + + + +

    Comments are closed.

    + + + + + +comment_status) : ?> + +
    + +

    + +
    + +
    + + +

    You must be logged in to post a comment.

    + + +
    + + + +

    Logged in as . Log out »

    + + + + +

    +

    + +

    +

    + +

    +

    + + +ID); ?> +

    + +

    NOTE - You can use these tags:

    + +

    + + +
    + + + +
    + + +
    + + + +
    diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..4c7d437 --- /dev/null +++ b/footer.php @@ -0,0 +1,28 @@ +
    + + + + +
    + + + + + + + \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..2c5ecfc --- /dev/null +++ b/functions.php @@ -0,0 +1,689 @@ + 'comiccat', + 'blogcat' => 'blogcat', + 'comics_path' => 'comic_folder', + 'comicsrss_path' => 'rss_comic_folder', + 'comicsarchive_path' => 'archive_comic_folder', + 'archive_comic_width' => 'archive_comic_width', + 'rss_comic_width' => 'rss_comic_width', + 'blog_postcount' => 'blog_postcount') as $option => $variable_name) { + $variables_to_extract[$variable_name] = get_option("comicpress-${option}"); + } + + extract($variables_to_extract); + } + +} else { + require_once(get_template_directory() . '/comicpress-config.php'); +} + + +if (get_option('upload_path') !== false) { + $variables_to_extract = array(); + + foreach (array( + 'disable_comic_frontpage' => 'disable_comic_frontpage', + 'disable_comic_blog_frontpage' => 'disable_comic_blog_frontpage', + 'disable_blog_frontpage' => 'disable_blog_frontpage', + 'disable_extended_comments' => 'disable_extended_comments', + 'buy_print_email' => 'buy_print_email', + 'buy_print_url' => 'buy_print_url', + 'buy_print_us_amount' => 'buy_print_us_amount', + 'buy_print_int_amount' => 'buy_print_int_amount', + 'buy_print_us_ship' => 'buy_print_us_ship', + 'buy_print_int_ship' => 'buy_print_int_ship', + 'custom_css' => 'custom_css', + 'cp_theme_style' => 'cp_theme_style', + 'transcript_in_posts' => 'transcript_in_posts', + 'enable_widgetarea_use_sidebar_css' => 'enable_widgetarea_use_sidebar_css', + 'enable_custom_image_header' => 'enable_custom_image_header', + 'custom_image_header_width' => 'custom_image_header_width', + 'custom_image_header_height' => 'custom_image_header_height', + 'enable_numbered_pagination' => 'enable_numbered_pagination', + 'disable_page_restraints' => 'disable_page_restraints', + 'enable_dropdown_sidebar' => 'enable_dropdown_sidebar', + 'enable_related_comics' => 'enable_related_comics', + 'enable_related_posts' => 'enable_related_posts', + 'comic_clicks_next' => 'comic_clicks_next', + 'anomaly_says' => 'anomaly_says', + 'disable_css_style_editor' => 'disable_css_style_editor', + 'contact_in_menubar' => 'contact_in_menubar' ) as $options => $variable_name) { + $variables_to_extract[$variable_name] = get_option("comicpress-${options}"); + } + + extract($variables_to_extract); +} + +function is_cp_theme_style($choices) { +global $cp_theme_style; + + $choices = explode(",", $choices); + foreach ($choices as $choice) { + + if ($choice == $cp_theme_style) { + return true; + } + } + return false; +} + +require_once(get_template_directory() . '/functions/userpages.php'); + +// WIDGETS WP 2.8 compatible ONLY, no backwards compatibility here. + +require_once(get_template_directory() . '/widgets/control-panel.php'); +require_once(get_template_directory() . '/widgets/graphical-navigation.php'); +require_once(get_template_directory() . '/widgets/buythisprint.php'); +require_once(get_template_directory() . '/widgets/bookmark.php'); +require_once(get_template_directory() . '/widgets/transcription.php'); +require_once(get_template_directory() . '/widgets/latestthumb.php'); +require_once(get_template_directory() . '/widgets/latestcomics.php'); +require_once(get_template_directory() . '/widgets/scheduledposts.php'); +require_once(get_template_directory() . '/widgets/calendar.php'); +require_once(get_template_directory() . '/widgets/randomcomic.php'); +require_once(get_template_directory() . '/widgets/randompost.php'); +require_once(get_template_directory() . '/widgets/searchtranscript.php'); +require_once(get_template_directory() . '/widgets/latestcomicjump.php'); +require_once(get_template_directory() . '/widgets/permalink.php'); +require_once(get_template_directory() . '/widgets/comicdate.php'); +require_once(get_template_directory() . '/widgets/comictitle.php'); +require_once(get_template_directory() . '/widgets/comiccomments.php'); +require_once(get_template_directory() . '/widgets/menubar.php'); +require_once(get_template_directory() . '/widgets/keenspotnewsbox.php'); + +// FUNCTIONS & Extra's + +require_once(get_template_directory() . '/functions/displaycomic.php'); +require_once(get_template_directory() . '/functions/displaycomicpost.php'); +require_once(get_template_directory() . '/functions/displayblogpost.php'); +require_once(get_template_directory() . '/functions/adminnotes.php'); +require_once(get_template_directory() . '/functions/checkbrowser.php'); +require_once(get_template_directory() . '/functions/searchcustomfields.php'); +require_once(get_template_directory() . '/functions/multicomics.php'); +require_once(get_template_directory() . '/functions/rawformatting.php'); +require_once(get_template_directory() . '/functions/relatedposts.php'); +require_once(get_template_directory() . '/functions/relatedcomics.php'); +require_once(get_template_directory() . '/functions/membersonly.php'); +require_once(get_template_directory() . '/functions/syndication.php'); + + +if ($enable_dropdown_sidebar == 'yes') { + require_once(get_template_directory() . '/functions/dropbar.php'); +} + +if ($enable_numbered_pagination == 'yes') { + require_once(get_template_directory() . '/functions/wp-pagenavi.php'); +} + +if ($disable_extended_comments == 'no') { + require_once(get_template_directory() . '/functions/comment-functions.php'); +} + +// Dashboard Menu Comicpress Options and ComicPress CSS + +require_once(get_template_directory() . '/comicpress-options.php'); + +if ($enable_custom_image_header == 'yes') { + require_once(get_template_directory() . '/functions/custom-image-header.php'); +} + +// If any errors occur while searching for a comic file, the error messages will be pushed into here. +$comic_pathfinding_errors = array(); + +// If ComicPress Manager is installed, use the date format defined there. If not, default to +// Y-m-d.. It's best to use CPM's date definition for improved operability between theme and plugin. + +if (defined("CPM_DATE_FORMAT")) { + define("CP_DATE_FORMAT", CPM_DATE_FORMAT); +} else { + define("CP_DATE_FORMAT", "Y-m-d"); +} + +// If you want to run multiple comics on a single day, define your additional filters here. +// Example: you want to run an additional comic with the filename 2008-01-01-a-my-new-years-comic.jpg. +// Define an additional filter in the list below: +// +// $comic_filename_filters['secondary'] = "{date}-a*.*"; +// +// Then show the second comic on your page by calling the_comic with your filter name (PHP tags munged +// to maintain valid file syntax): +// +// < ?php the_comic('secondary'); ? > +// +// Note that it's quite possible to slurp up the wrong file if your expressions are too broad. + +$comic_filename_filters = array(); +$comic_filename_filters['default'] = "{date}*.*"; + +// load all of the comic & non-comic category information +add_action('init', 'get_all_comic_categories'); + +function get_first_comic() { + return get_terminal_post_in_category(get_all_comic_categories_as_cat_string()); +} + +function get_last_comic() { + return get_terminal_post_in_category(get_all_comic_categories_as_cat_string(), false); +} + +/** +* Get the hyperlink to the first comic post in the database. +* @return string The hyperlink to the first comic post, or false. +*/ +function get_first_comic_permalink() { + $terminal = get_first_comic(); + return !empty($terminal) ? get_permalink($terminal->ID) : false; +} + +/** +* Get the hyperlink to the last comic post in the database. +* @return string The hyperlink to the first comic post, or false. +*/ +function get_last_comic_permalink() { + $terminal = get_last_comic(); + return !empty($terminal) ? get_permalink($terminal->ID) : false; +} + + +/** + * Given a category ID or an array of category IDs, create an exclusion string that will + * filter out every category but the provided ones. + */ +function get_string_to_exclude_all_but_provided_categories($category) { + $category_ids = array_keys(get_all_category_objects_by_id()); + if (!is_array($category)) { $category = array($category); } + return implode(" and ", array_diff($category_ids, $category)); +} + +/** + * Get the link to the previous comic from the current one. + */ +function previous_comic_link($format, $link) { + global $non_comic_categories; + previous_post_link($format, $link, false, $non_comic_categories); +} + +/** + * Get the link to the next comic from the current one. + */ +function next_comic_link($format, $link) { + global $non_comic_categories; + next_post_link($format, $link, false, $non_comic_categories); +} + +/** + * Get the previous comic from the current one. + */ +function get_previous_comic($category = null) { return get_adjacent_comic($category,true); } + +/** + * Get the next comic from the current one. + */ +function get_next_comic($category = null) { return get_adjacent_comic($category); } + + + +/** + * This is function get_next_comic_permalink + * + * @return mixed false if no next comic permalink, else return the permalink + * + */ +function get_next_comic_permalink() { + $next_comic = get_next_comic(); + if (is_object($next_comic)) { + if (isset($next_comic->ID)) { + return get_permalink($next_comic->ID); + } + } + return false; +} + + +/** + * This is function get_previous_comic_permalink + * + * @return mixed false if there is no permalink or next previous comic + * + */ +function get_previous_comic_permalink() { + $prev_comic = get_previous_comic(); + if (is_object($prev_comic)) { + if (isset($prev_comic->ID)) { + return get_permalink($prev_comic->ID); + } + } + return false; +} + +/** + * Get the adjacent comic from the current one. + * @param int $category The category to use. + * @param boolean $next True if the next chronological comic should be retrieved. + * @return array The WordPress post object for the comic post. + */ +function get_adjacent_comic($category, $next = false) { + global $non_comic_categories; + +// get_all_comic_categories(); + + $categories_to_exclude = $non_comic_categories; + if (!empty($category)) { + $categories_to_exclude = get_string_to_exclude_all_but_provided_categories($category); + } + + return get_adjacent_post(false, $categories_to_exclude, $next); +} + +/** + * Find the terminal post in a specific category. + */ +function get_terminal_post_in_category($categoryID, $first = true) { + global $post; + + $temp = $wp_query; $wp_query = null; + $sortOrder = $first ? "asc" : "desc"; + $terminalComicQuery = new WP_Query(); $terminalComicQuery->query("showposts=1&order=${sortOrder}&cat=${categoryID}"); + $terninalPost = false; + if ($terminalComicQuery->have_posts()) { + $terminalPost = reset($terminalComicQuery->posts); + } + + $wp_query = null; $wp_query = $temp; + return $terminalPost; +} + +/** +* Find a comic file in the filesystem. +* @param string $folder The folder name to search. +* @param string $override_post A WP Post object to use in place of global $post. +* @param string $filter The $comic_filename_filters to use. +* @return string The relative path to the comic file, or false if not found. +*/ +if (!function_exists('get_comic_path')) { + function get_comic_path($folder = 'comic', $override_post = null, $filter = 'default', $multi = null) { + global $post, $comic_filename_filters, $comic_folder, $archive_comic_folder, $rss_comic_folder, $comic_pathfinding_errors; + + if (isset($comic_filename_filters[$filter])) { + $filter_to_use = $comic_filename_filters[$filter]; + } else { + $filter_to_use = '{date}*.*'; + } + + switch ($folder) { + case "rss": $folder_to_use = $rss_comic_folder; break; + case "archive": $folder_to_use = $archive_comic_folder; break; + case "comic": default: $folder_to_use = $comic_folder; break; + } + + $post_to_use = (is_object($override_post)) ? $override_post : $post; + $post_date = mysql2date(CP_DATE_FORMAT, $post_to_use->post_date); + + $filter_with_date = str_replace('{date}', $post_date, $filter_to_use); + + $results = array(); + + if (count($results = glob("${folder_to_use}/${filter_with_date}")) > 0) { + if (!empty($multi)) { + return $results; + } else { + return reset($results); + } + } + + $comic_pathfinding_errors[] = sprintf(__("Unable to find the file in the %s folder that matched the pattern %s. Check your WordPress and ComicPress settings.", 'comicpress'), $folder, $filter_with_date); + return false; + } +} + +/** +* Find a comic file in the filesystem and return an absolute URL to that file. +* @param string $folder The folder name to search. +* @param string $override_post A WP Post object to use in place of global $post. +* @param string $filter The $comic_filename_filters to use. +* @return string The absolute URL to the comic file, or false if not found. +*/ +function get_comic_url($folder = 'comic', $override_post = null, $filter = 'default') { + if (($result = get_comic_path($folder, $override_post, $filter)) !== false) { + return get_option('home') . '/' . $result; + } else { + if (($folder == 'archive' || $folder == 'rss')) { + if (($result = get_comic_path('comic', $override_post, $filter)) !== false) { + return get_option('home') . '/' . $result; + } + } + } + return false; +} + +/** + * get_comic_filename + * returns the filename of the comic for the individual date. + * + */ +function get_comic_filename($folder = 'comic', $override_post = null, $filter = 'default') { + if (($result = get_comic_path($folder, $override_post, $filter)) !== false) { + return $result; + } +} + +/** + * Return a list of the comic categories with a negative value for exclusions + * NOTE: need a pre - negative for the first one + */ +function exclude_comic_categories() { + global $all_comic_categories_as_string; + if (empty($all_comic_categories_as_string)) get_all_comic_categories_as_cat_string(); + $returnstring = str_replace(",",",-",$all_comic_categories_as_string); + return $returnstring; +} + +/** + * Turn the tree of comics categories into a string to be fed into wp_query functions. + */ +function get_all_comic_categories_as_cat_string() { + global $all_comic_categories_as_string, $category_tree; + if (empty($all_comic_categories_as_string)) { + $categories = array(); + foreach ($category_tree as $node) { + $parts = explode("/", $node); + $categories[] = end($parts); + } + $all_comic_categories_as_string = implode(",", $categories); + } + return $all_comic_categories_as_string; +} + +/** + * Turn the list of categories into a hash table of category objects. + */ +function get_all_category_objects_by_id() { + global $categories_by_id; + if (empty($categories_by_id)) { + $categories_by_id = array(); + foreach (get_categories("hide_empty=0") as $category_object) { + $categories_by_id[$category_object->term_id] = $category_object; + } + } + return $categories_by_id; +} + +/** + * Parse all categories and sort them into comics and non-comics categories. + */ +function get_all_comic_categories() { + global $comiccat, $category_tree, $non_comic_categories; + + $categories_by_id = get_all_category_objects_by_id(); + + foreach (array_keys($categories_by_id) as $category_id) { + $category_tree[] = $categories_by_id[$category_id]->parent . '/' . $category_id; + } + + do { + $all_ok = true; + for ($i = 0; $i < count($category_tree); ++$i) { + $current_parts = explode("/", $category_tree[$i]); + if (reset($current_parts) != 0) { + + $all_ok = false; + for ($j = 0; $j < count($category_tree); ++$j) { + $j_parts = explode("/", $category_tree[$j]); + + if (end($j_parts) == reset($current_parts)) { + $category_tree[$i] = implode("/", array_merge($j_parts, array_slice($current_parts, 1))); + break; + } + } + } + } + } while (!$all_ok); + + $non_comic_tree = array(); + + if (get_option('comicpress-enable-storyline-support') == 1) { + $result = get_option("comicpress-storyline-category-order"); + if (!empty($result)) { + $category_tree = explode(",", $result); + } + $non_comic_tree = array_keys($categories_by_id); + foreach ($category_tree as $node) { + $parts = explode("/", $node); + $category_id = end($parts); + if ($parts[1] == $comiccat) { + if (($index = array_search($category_id, $non_comic_tree)) !== false) { + array_splice($non_comic_tree, $index, 1); + } + } + } + } else { + $new_category_tree = array(); + foreach ($category_tree as $node) { + $parts = explode("/", $node); + if ($parts[1] == $comiccat) { + $new_category_tree[] = $node; + } else { + $non_comic_tree[] = end($parts); + } + } + $category_tree = $new_category_tree; + } + + $non_comic_categories = implode(" and ", $non_comic_tree); +} + +/** + * Return true if the current post is in the comics category or a child category. + */ +function in_comic_category() { + global $post, $category_tree; + + $comic_categories = array(); + foreach ($category_tree as $node) { + $comic_categories[] = end(explode("/", $node)); + } + + return (count(array_intersect($comic_categories, wp_get_post_categories($post->ID))) > 0); +} + +// ComicPress Template Functions + +function the_comic_filename($filter = 'default') { return get_comic_filename('comic',null, $filter); } + +function the_comic($filter = 'default') { echo get_comic_url('comic', null, $filter); } + //The following is deprecated... + function comic_display($filter = 'default') { echo get_comic_url('comic', null, $filter); } + +function the_comic_archive($filter = 'default') { echo get_comic_url('archive', null, $filter); } + //The following is deprecated... + function comic_archive($filter = 'default') { echo get_comic_url('archive', null, $filter); } + +function the_comic_rss($filter = 'default') { echo get_comic_url('rss', null, $filter); } + //The following is deprecated... + function comic_rss($filter = 'default') { echo get_comic_url('rss', null, $filter); } + +/** + * Display the list of Storyline categories. + */ +function comicpress_list_storyline_categories($args = "") { + global $category_tree; + + $defaults = array( + 'style' => 'list', 'title_li' => __('Storyline') + ); + + $r = wp_parse_args($args, $defaults); + + extract($r); + + $categories_by_id = get_all_category_objects_by_id(); + + $output = ''; + if ($style == "list") { $output .= '
  • '; } + if ($title_li && ($style == "list")) { $output .= $title_li; } + if ($style == "list") { $output .= "
      "; } + $current_depth = 0; + foreach ($category_tree as $node) { + $parts = explode("/", $node); + $category_id = end($parts); + $target_depth = count($parts) - 2; + if ($target_depth > $current_depth) { + $output .= str_repeat("
      • ", ($target_depth - $current_depth)); + } + if ($target_depth < $current_depth) { + $output .= str_repeat("
    • ", ($current_depth - $target_depth)); + } + $output .= '
    • '; + $output .= $categories_by_id[$category_id]->cat_name; + $output .= "
    • "; + $current_depth = $target_depth; + } + if ($current_depth > 0) { + $output .= str_repeat("
  • ", $current_depth); + } + if ($style == "list") { $output .= ""; } + echo $output; +} + +/** +* Display text when image (comic) is hovered +* Text is taken from a custom field named "hovertext" +*/ +function the_hovertext() { + $hovertext = get_post_meta( get_the_ID(), "hovertext", true ); + echo (empty($hovertext)) ? get_the_title() : $hovertext; +} + +/** +* Display the comic transcript +* Transcript must be entered into a custom field named "transcript" +* @param string $displaymode, "raw" (straight from the field), "br" (includes html line breaks), "styled" (fully css styled with JavaScript expander) +*/ +function the_transcript($displaymode = 'raw') { + $transcript = get_post_meta( get_the_ID(), "transcript", true ); + switch ($displaymode) { + case "raw": + echo $transcript; + break; + case "br": + echo nl2br($transcript); + break; + case "styled": + if (!empty($transcript)) { ?> + + + +

    <?php the_title() ?>

    'Left Sidebar','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Right Sidebar','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Above Header','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Header','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Menubar','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Over Comic','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Left of Comic','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Right of Comic','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Under Comic','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Over Blog','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Blog','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Under Blog','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Footer','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); + register_sidebar(array('name'=>'Drop Bar','before_widget' => '
    • ','after_widget' => '
    ','before_title' => '

    ', 'after_title' => '

    ' )); +} + + +function widget_comicpress_archive_dropdown() { ?> +
      +
    • + +
    • +
    + ", "
      » ", $listcats); + echo $listcats; +} + + +/** + * This is function comicpress_current_theme_version + * + * @return mixed return straight current theme version # + * + */ +function comicpress_current_theme_version() { + $themes = get_themes(); + $current_theme = get_current_theme(); + return $themes[$current_theme]['Version']; +} + + +/** + * This is function comicpress_is_active_sidebar + * + * @param $name - sidebar name made with register_sidebar(array('name'=>'Name of Sidebar'), + * use 'Sidebar 1' .. # if no sidebar names specified. + * @return true if sidebar with $name has widgets, false if not. + * + */ +function comicpress_is_active_sidebar( $name ) { + global $wp_registered_sidebars, $_wp_sidebars_widgets; + $i = 1; + foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) { + if ( $name == $registered_sidebar['name'] && !empty($_wp_sidebars_widgets[sanitize_title("sidebar-$i")]) ) + return true; + $i++; + } + return false; +} + +?> \ No newline at end of file diff --git a/functions/adminnotes.php b/functions/adminnotes.php new file mode 100644 index 0000000..875a673 --- /dev/null +++ b/functions/adminnotes.php @@ -0,0 +1,20 @@ +'.$content.'
    '; + return ''; +} + + +?> \ No newline at end of file diff --git a/functions/checkbrowser.php b/functions/checkbrowser.php new file mode 100644 index 0000000..006c6c7 --- /dev/null +++ b/functions/checkbrowser.php @@ -0,0 +1,37 @@ + tag where you can then do .ie #page and do things specific + * for each browser type. + * + * The second is you can write code specific for a particular browser. + * + * example: if (reset(browser_body_class()) == 'ie') { + * + * the reset() portion resets the array to a string. + * + */ + +add_filter('body_class','browser_body_class'); + +function browser_body_class($classes = '') { + global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone; + + if($is_lynx) $classes[] = 'lynx'; + elseif($is_gecko) $classes[] = 'gecko'; + elseif($is_opera) $classes[] = 'opera'; + elseif($is_NS4) $classes[] = 'ns4'; + elseif($is_safari) $classes[] = 'safari'; + elseif($is_chrome) $classes[] = 'chrome'; + elseif($is_IE) $classes[] = 'ie'; + else $classes[] = 'unknown'; + + if($is_iphone) $classes[] = 'iphone'; + return $classes; +} + + +?> \ No newline at end of file diff --git a/functions/comment-functions.php b/functions/comment-functions.php new file mode 100644 index 0000000..beddf39 --- /dev/null +++ b/functions/comment-functions.php @@ -0,0 +1,242 @@ +'; + + if(function_exists('get_avatar') && $comment_type != 'pingback' && $comment_type != 'trackback' ) { + echo str_replace("alt='", "alt='".wp_specialchars(get_comment_author(), 1)."' title='".wp_specialchars(get_comment_author(), 1), get_avatar(get_comment_author_email(), 64)); + } else { + if ($comment_type == 'pingback' || $comment_type == 'trackback') { + echo ''; + } else { + echo ''; + } + } + + if($url == true && $url != 'http://') + echo ''; +} + +/** +* Properly displays comment author name/link +* bbPress and other external systems sometimes don't set a display name for registrations +* WP has problems if no display name is set +* WP gives registered users URL of 'http://' if none is set +* +* @since 0.2.2 +*/ +function comicpress_comment_author() { + global $comment; + + $author = get_comment_author(); + $url = get_comment_author_url(); + + /* + * Registered members w/o URL defaults to 'http://' + */ + if($url == 'http://') + $url = false; + + /* + * Registered through bbPress sometimes leaves no display name + * Bug with bbPress 0.9 series and WP 2.5 (no later testing) + * 'Anonymous' should be localized according to WP, not the theme + */ + if($comment->user_id > 0) : + $user = get_userdata($comment->user_id); + if($user->display_name) + $author = $user->display_name; + elseif($user->user_nickname) + $author = $user->nickname; + elseif($user->user_nicename) + $author = $user->user_nicename; + else + $author = $user->user_login; + endif; + + /* + * Display link and cite if URL is set + * Also properly cites trackbacks/pingbacks + */ + if($url) : + $output = ''; + $output .= '' . $author . ''; + $output .= ''; + else : + $output = ''; + $output .= $author; + $output .= ''; + endif; + + echo $output; +} + +/** +* Displays individual comments +* Uses the callback parameter for wp_list_comments +* Overwrites the default display of comments +* +* @since 0.2.3 +* +* @param $comment The comment variable +* @param $args Array of arguments passed from wp_list_comments +* @param $depth What level the particular comment is +*/ +function comicpress_comments_callback($comment, $args, $depth) { + $GLOBALS['comment'] = $comment; + $GLOBALS['comment_depth'] = $depth; + ?> + +
  • + + + + + + +
    + +
    + +
    + '; +} + +/** +* Sets a class for each comment +* Sets alt, odd/even, and author/user classes +* Adds author, user, and reader classes +* +* @since 0.2 +*/ +function comicpress_comment_class() { + global $comment; + static $comment_alt; + $classes = array(); + + if(function_exists('get_comment_class')) + $classes = get_comment_class(); + + $classes[] = get_comment_type();; + + /* + * User classes + */ + if($comment->user_id > 0 && $user = get_userdata($comment->user_id)) : + + $classes[] = 'user user-' . $user->user_nicename; + + if($post = get_post($post_id)) : + if($comment->user_id === $post->post_author) + $classes[] = 'author author-' . $user->user_nicename; + endif; + else : + $classes[] = 'reader'; + endif; + + /* + * Alt classes + */ + if($comment_alt++ % 2) : + $classes[] = 'even'; + $classes[] = 'alt'; + else : + $classes[] = 'odd'; + endif; + + /* + * http://microid.org + */ + $email = get_comment_author_email(); + $url = get_comment_author_url(); + if(!empty($email) && !empty($url)) { + $microid = 'microid-mailto+http:sha1:' . sha1(sha1('mailto:'.$email).sha1($url)); + $classes[] = $microid; + } + $classes = join(' ', $classes); + echo $classes; +} + +function list_pings($comment, $args, $depth) { + $GLOBALS['comment'] = $comment; ?> +
  • +
  • + \ No newline at end of file diff --git a/functions/custom-image-header.php b/functions/custom-image-header.php new file mode 100644 index 0000000..e44472a --- /dev/null +++ b/functions/custom-image-header.php @@ -0,0 +1,68 @@ + + + + + \ No newline at end of file diff --git a/functions/displayblogpost.php b/functions/displayblogpost.php new file mode 100644 index 0000000..9536fbc --- /dev/null +++ b/functions/displayblogpost.php @@ -0,0 +1,51 @@ + + +
    + +
    +
    + +
    + + +
    +
    +
    + '); ?> Posted in: +
    + +
    + +
    +
    +
    +
    + \ No newline at end of file diff --git a/functions/displaycomic.php b/functions/displaycomic.php new file mode 100644 index 0000000..8a83081 --- /dev/null +++ b/functions/displaycomic.php @@ -0,0 +1,47 @@ + + " height=""> + + + " height=""> + +
    +

    Get Flash!

    +

    Get Adobe Flash player

    +
    + +
    + +
    + + Anomaly Says, ""<?php the_title() ?> + + <?php the_title() ?> + + + Anomaly Says, ""<?php the_title() ?> + + <?php the_title() ?> + \ No newline at end of file diff --git a/functions/displaycomicpost.php b/functions/displaycomicpost.php new file mode 100644 index 0000000..39de06c --- /dev/null +++ b/functions/displaycomicpost.php @@ -0,0 +1,55 @@ + + +
    +
    +
    + +
    + + +
    + +
    +
    + '); ?> +
    + +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/functions/dropbar.php b/functions/dropbar.php new file mode 100644 index 0000000..e936db4 --- /dev/null +++ b/functions/dropbar.php @@ -0,0 +1,33 @@ + +
    +
    +
    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/functions/membersonly.php b/functions/membersonly.php new file mode 100644 index 0000000..d78cd9e --- /dev/null +++ b/functions/membersonly.php @@ -0,0 +1,73 @@ +ID) ) { + $is_member = get_usermeta($current_user->ID,'comicpress-is-member'); + if ( ( $is_member == 'yes' || current_user_can( 'publish_posts' ) ) && !is_feed() ) { + return '
    '.$content.'
    '; + } + } + return ''; +} + +function comicpress_profile_members_only() { + global $profileuser, $current_user, $errormsg; + $comicpress_is_member = get_usermeta($profileuser->ID,'comicpress-is-member'); + if (empty($comicpress_is_member)) $comicpress_is_member = 'no'; + ?> +

    Member of

    + + + + + +
    + + +    + + + +
    + \ No newline at end of file diff --git a/functions/multicomics.php b/functions/multicomics.php new file mode 100644 index 0000000..dbf06be --- /dev/null +++ b/functions/multicomics.php @@ -0,0 +1,34 @@ + +
    + <?php the_title(); ?> +
    + +
    + <?php the_title(); ?> +
    + \ No newline at end of file diff --git a/functions/rawformatting.php b/functions/rawformatting.php new file mode 100644 index 0000000..8c57206 --- /dev/null +++ b/functions/rawformatting.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/functions/relatedcomics.php b/functions/relatedcomics.php new file mode 100644 index 0000000..267c468 --- /dev/null +++ b/functions/relatedcomics.php @@ -0,0 +1,72 @@ + '5', + ), $atts)); + + global $wpdb, $post, $table_prefix, $category_tree; + + if ($post->ID) { + // Get tags + $tags = wp_get_post_tags($post->ID); + $tagsarray = array(); + foreach ($tags as $tag) { + $tagsarray[] = $tag->term_id; + } + $tagslist = implode(',', $tagsarray); + if (empty($tagslist)) return; + if (empty($limit)) $limit = 5; + // Do the query + $q = "SELECT p.*, count(tr.object_id) as count + FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID + AND p.post_status = 'publish' + AND p.post_date_gmt < NOW() + GROUP BY tr.object_id + ORDER BY count DESC, p.post_date_gmt DESC + LIMIT $limit;"; + + $related = $wpdb->get_results($q); + if ( $related ) { + $retval = ' +'; + return $retval; + } + return; +} +add_shortcode('related_comics', 'related_comics_shortcode'); + + +?> \ No newline at end of file diff --git a/functions/relatedposts.php b/functions/relatedposts.php new file mode 100644 index 0000000..5106d76 --- /dev/null +++ b/functions/relatedposts.php @@ -0,0 +1,112 @@ + '5', + ), $atts)); + + global $wpdb, $post, $table_prefix, $category_tree; + + if ($post->ID) { + // Get tags + $tags = wp_get_post_tags($post->ID); + $tagsarray = array(); + foreach ($tags as $tag) { + $tagsarray[] = $tag->term_id; + } + $tagslist = implode(',', $tagsarray); + if (empty($tagslist)) return; + if (empty($limit)) $limit = 5; + // Do the query + $q = "SELECT p.*, count(tr.object_id) as count + FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID + AND p.post_status = 'publish' + AND p.post_date_gmt < NOW() + GROUP BY tr.object_id + ORDER BY count DESC, p.post_date_gmt DESC + LIMIT $limit;"; + + $related = $wpdb->get_results($q); + $retval = ' + '; + return $retval; + } + return; +} +/* +function related_posts_shortcode( $atts = '' ) { + extract(shortcode_atts(array( + 'limit' => '5', + ), $atts)); + + global $wp_query, $wpdb, $post, $non_comic_categories; + if ($post->ID) { + if (empty($limit)) $limit = 5; + + //for use in the loop, list 5 post titles related to first tag on current post + $tags = wp_get_post_tags($post->ID); + $tagIDs = array(); + if ($tags) { + $tagcount = count($tags); + for ($i = 0; $i < $tagcount; $i++) { + $tagIDs[$i] = $tags[$i]->term_id; + } + $args=array( + 'category__in' => array(1,3,31), + 'tag__and' => $tagIDs, + 'showposts'=>5, + 'post__not_in' => array($post->ID), + 'caller_get_posts'=>1 + ); + $my_query = new WP_Query($args); + $temp_query = $wp_query; + $wp_query->in_the_loop = true; + if( $my_query->have_posts() ) { + while ($my_query->have_posts()) : $my_query->the_post(); ?> +
  • + \ No newline at end of file diff --git a/functions/searchcustomfields.php b/functions/searchcustomfields.php new file mode 100644 index 0000000..2e741ce --- /dev/null +++ b/functions/searchcustomfields.php @@ -0,0 +1,58 @@ +postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id "; + } + return $join; +} +add_filter('posts_join', 'szub_search_custom_join'); + +function szub_search_custom_where($where) { + global $wp_query, $wp_version, $wpdb; + if( !empty($wp_query->query_vars['s']) && szub_is_search_key() ) { + $search = $wp_query->query_vars['s']; + $key = $_GET['key']; + $status = ($wp_version >= 2.1) ? 'post_type = \'post\' AND post_status = \'publish\'' : 'post_status = \'publish\''; + $where = " AND $wpdb->postmeta.meta_key = '$key' AND $wpdb->postmeta.meta_value LIKE '%$search%' AND $status "; + } + return $where; +} +add_filter('posts_where', 'szub_search_custom_where'); + +function szub_search_custom_template($template) { + if( is_search() && szub_is_search_key() && file_exists(get_template_directory() . '/search-transcript.php') ) + $template = get_template_directory() . '/search-transcript.php'; + + if( !$template ) + $template = get_query_template('search'); + return $template; +} +add_filter('search_template', 'szub_search_custom_template'); + +function szub_is_search_key($key='') { + if( isset($_GET['key']) ) { + if( !empty($_GET['key']) || (!empty($key) && ($key = $_GET['key'])) ) + return true; + } + return false; +} + + +?> \ No newline at end of file diff --git a/functions/syndication.php b/functions/syndication.php new file mode 100644 index 0000000..35fd73a --- /dev/null +++ b/functions/syndication.php @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/functions/userpages.php b/functions/userpages.php new file mode 100644 index 0000000..84ad894 --- /dev/null +++ b/functions/userpages.php @@ -0,0 +1,46 @@ +author_base = 'user'; + $wp_rewrite->flush_rules(); +} + +function cp_rewrite_user_to_author() { + global $wp_rewrite; + $wp_rewrite->author_base = 'author'; + $wp_rewrite->init(); + $wp_rewrite->flush_rules(); +} + +function cp_theme_switch() { + global $wp_rewrite; + if ($wp_rewrite->author_base != 'user') { + add_action('init','cp_rewrite_author_to_user',1); + } else { + add_action('init','cp_rewrite_user_to_author',1); + } +} +*/ + +// Flush the rules if someone switchs the theme. +add_action('switch_themes', array(&$GLOBALS['wp_rewrite'], 'init') ); + +/* +add_action('init','cp_reset_rules'); + +function cp_reset_rules() { + global $wp_rewrite; + $wp_rewrite->init(); + $wp_rewrite->flush_rules(); +} +*/ +?> \ No newline at end of file diff --git a/functions/wp-pagenavi.php b/functions/wp-pagenavi.php new file mode 100644 index 0000000..b0297a4 --- /dev/null +++ b/functions/wp-pagenavi.php @@ -0,0 +1,158 @@ +request; + $posts_per_page = intval(get_query_var('posts_per_page')); + $paged = intval(get_query_var('paged')); + $pagenavi_options = get_option('pagenavi_options'); + $numposts = $wp_query->found_posts; + $max_page = $wp_query->max_num_pages; + /* + $numposts = 0; + if(strpos(get_query_var('tag'), " ")) { + preg_match('#^(.*)\sLIMIT#siU', $request, $matches); + $fromwhere = $matches[1]; + $results = $wpdb->get_results($fromwhere); + $numposts = count($results); + } else { + preg_match('#FROM\s*+(.+?)\s+(GROUP BY|ORDER BY)#si', $request, $matches); + $fromwhere = $matches[1]; + $numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere"); + } + $max_page = ceil($numposts/$posts_per_page); + */ + if(empty($paged) || $paged == 0) { + $paged = 1; + } + $pages_to_show = intval($pagenavi_options['num_pages']); + $pages_to_show_minus_1 = $pages_to_show-1; + $half_page_start = floor($pages_to_show_minus_1/2); + $half_page_end = ceil($pages_to_show_minus_1/2); + $start_page = $paged - $half_page_start; + if($start_page <= 0) { + $start_page = 1; + } + $end_page = $paged + $half_page_end; + if(($end_page - $start_page) != $pages_to_show_minus_1) { + $end_page = $start_page + $pages_to_show_minus_1; + } + if($end_page > $max_page) { + $start_page = $max_page - $pages_to_show_minus_1; + $end_page = $max_page; + } + if($start_page <= 0) { + $start_page = 1; + } + if($max_page > 1 || intval($pagenavi_options['always_show']) == 1) { + $pages_text = str_replace("%CURRENT_PAGE%", number_format_i18n($paged), $pagenavi_options['pages_text']); + $pages_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $pages_text); + echo $before.'
    '."\n"; + switch(intval($pagenavi_options['style'])) { + case 1: + if(!empty($pages_text)) { + echo ' '.$pages_text.' '; + } + if ($start_page >= 2 && $pages_to_show < $max_page) { + $first_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $pagenavi_options['first_text']); + echo ' '.$first_page_text.' '; + if(!empty($pagenavi_options['dotleft_text'])) { + echo ' '.$pagenavi_options['dotleft_text'].' '; + } + } + previous_posts_link($pagenavi_options['prev_text']); + for($i = $start_page; $i <= $end_page; $i++) { + if($i == $paged) { + $current_page_text = str_replace("%PAGE_NUMBER%", number_format_i18n($i), $pagenavi_options['current_text']); + echo ' '.$current_page_text.' '; + } else { + $page_text = str_replace("%PAGE_NUMBER%", number_format_i18n($i), $pagenavi_options['page_text']); + echo ' '.$page_text.' '; + } + } + next_posts_link($pagenavi_options['next_text'], $max_page); + if ($end_page < $max_page) { + if(!empty($pagenavi_options['dotright_text'])) { + echo ' '.$pagenavi_options['dotright_text'].' '; + } + $last_page_text = str_replace("%TOTAL_PAGES%", number_format_i18n($max_page), $pagenavi_options['last_text']); + echo ' '.$last_page_text.' '; + } + break; + case 2; + echo '
    '."\n"; + echo '\n"; + echo "
    \n"; + break; + } + echo '
    '.$after."\n"; + } + } +} + + +### Function: Page Navigation Options +add_action('activate_wp-pagenavi/wp-pagenavi.php', 'pagenavi_init'); +function pagenavi_init() { + // Add Options + $pagenavi_options = array(); + $pagenavi_options['pages_text'] = __('Page %CURRENT_PAGE% of %TOTAL_PAGES%','wp-pagenavi'); + $pagenavi_options['current_text'] = '%PAGE_NUMBER%'; + $pagenavi_options['page_text'] = '%PAGE_NUMBER%'; + $pagenavi_options['first_text'] = __('« First','wp-pagenavi'); + $pagenavi_options['last_text'] = __('Last »','wp-pagenavi'); + $pagenavi_options['next_text'] = __('»','wp-pagenavi'); + $pagenavi_options['prev_text'] = __('«','wp-pagenavi'); + $pagenavi_options['dotright_text'] = __('...','wp-pagenavi'); + $pagenavi_options['dotleft_text'] = __('...','wp-pagenavi'); + $pagenavi_options['style'] = 1; + $pagenavi_options['num_pages'] = 5; + $pagenavi_options['always_show'] = 0; + add_option('pagenavi_options', $pagenavi_options, 'PageNavi Options'); +} +?> \ No newline at end of file diff --git a/gecko_style.css b/gecko_style.css new file mode 100644 index 0000000..b57b43c --- /dev/null +++ b/gecko_style.css @@ -0,0 +1,29 @@ +/* ComicPress Custom CSS over-rides for [ gecko ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +a:focus { outline: 0; } + +.comicarchiveframe { + -moz-opacity: 0.99; /* mozilla, netscape */ + opacity:0.99; /* firefox, opera, safari, chrome */ +} + + .comicarchiveframe:hover { + -moz-opacity: 0.7; /* mozilla, netscape */ + opacity:0.70; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img { + -moz-opacity: 0.5; /* mozilla, netscape, gecko */ + opacity:0.5; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img:hover { + -moz-opacity: 0; /* mozilla, netscape */ + opacity:0.5; /* firefox, opera, safari, chrome */ + } + +::-moz-selection { + background: #a1c0d9; /* Firefox */ +} \ No newline at end of file diff --git a/header.php b/header.php new file mode 100644 index 0000000..277d067 --- /dev/null +++ b/header.php @@ -0,0 +1,54 @@ + +> + + + <?php + bloginfo('name'); + if (is_home () ) { + echo " - "; bloginfo('description'); + } elseif (is_category() ) { + echo " - "; single_cat_title(); + } elseif (is_single() || is_page() ) { + echo " - "; single_post_title(); + } elseif (is_search() ) { + echo " search results: "; echo wp_specialchars($s); + } else { + echo " - "; wp_title('',true); + } + ?> + + + + + + + + + + + +> + + + + + +
    + +
    + + + + diff --git a/ie_style.css b/ie_style.css new file mode 100644 index 0000000..d31667a --- /dev/null +++ b/ie_style.css @@ -0,0 +1,13 @@ +/* These overrides are for the IE browser, fixes and what not to make it work. */ + +html { overflow-y: scroll; } + +#menubar { + zoom: 1; /* IE fix, allows for variable height menu */ + } + +tt a:hover +{ + z-index:1000; color: #aaaaff; + background-color: Transparent; +} \ No newline at end of file diff --git a/image.php b/image.php new file mode 100644 index 0000000..1faa25a --- /dev/null +++ b/image.php @@ -0,0 +1,96 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + + + +
    +
    +

    + post_parent) ?> +

    + + +
    +
    +
    + +
    +
    + ‹ +
    + +
    + +
    +
    + +
    +
    + › +
    + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +

    Sorry, no image matched your criteria.

    +
    +
    +
    + + +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/images/1.gif b/images/1.gif new file mode 100644 index 0000000..737e841 Binary files /dev/null and b/images/1.gif differ diff --git a/images/2.gif b/images/2.gif new file mode 100644 index 0000000..3234ca1 Binary files /dev/null and b/images/2.gif differ diff --git a/images/2a.gif b/images/2a.gif new file mode 100644 index 0000000..5c059b8 Binary files /dev/null and b/images/2a.gif differ diff --git a/images/3.gif b/images/3.gif new file mode 100644 index 0000000..d0dbea1 Binary files /dev/null and b/images/3.gif differ diff --git a/images/3a.gif b/images/3a.gif new file mode 100644 index 0000000..647c3c7 Binary files /dev/null and b/images/3a.gif differ diff --git a/images/4.gif b/images/4.gif new file mode 100644 index 0000000..43bc18f Binary files /dev/null and b/images/4.gif differ diff --git a/images/anomaly.png b/images/anomaly.png new file mode 100644 index 0000000..6d6c4b9 Binary files /dev/null and b/images/anomaly.png differ diff --git a/images/bgs/classic-background-narrow.png b/images/bgs/classic-background-narrow.png new file mode 100644 index 0000000..06c5223 Binary files /dev/null and b/images/bgs/classic-background-narrow.png differ diff --git a/images/bgs/classic-background-originalwide.png b/images/bgs/classic-background-originalwide.png new file mode 100644 index 0000000..a11d8c3 Binary files /dev/null and b/images/bgs/classic-background-originalwide.png differ diff --git a/images/bgs/classic-background-wide.png b/images/bgs/classic-background-wide.png new file mode 100644 index 0000000..2e70b2b Binary files /dev/null and b/images/bgs/classic-background-wide.png differ diff --git a/images/bubble.gif b/images/bubble.gif new file mode 100644 index 0000000..93adba3 Binary files /dev/null and b/images/bubble.gif differ diff --git a/images/bubble_filler.gif b/images/bubble_filler.gif new file mode 100644 index 0000000..49c9a6b Binary files /dev/null and b/images/bubble_filler.gif differ diff --git a/images/buynow_paypal.png b/images/buynow_paypal.png new file mode 100644 index 0000000..9aedf29 Binary files /dev/null and b/images/buynow_paypal.png differ diff --git a/images/buythis.png b/images/buythis.png new file mode 100644 index 0000000..5336494 Binary files /dev/null and b/images/buythis.png differ diff --git a/images/calendar.png b/images/calendar.png new file mode 100644 index 0000000..841ee21 Binary files /dev/null and b/images/calendar.png differ diff --git a/images/comicpress-icon.png b/images/comicpress-icon.png new file mode 100644 index 0000000..a838003 Binary files /dev/null and b/images/comicpress-icon.png differ diff --git a/images/data_rss.gif b/images/data_rss.gif new file mode 100644 index 0000000..267e29a Binary files /dev/null and b/images/data_rss.gif differ diff --git a/images/dropbar.jpg b/images/dropbar.jpg new file mode 100644 index 0000000..d886843 Binary files /dev/null and b/images/dropbar.jpg differ diff --git a/images/dropbar.png b/images/dropbar.png new file mode 100644 index 0000000..3d2b49b Binary files /dev/null and b/images/dropbar.png differ diff --git a/images/gradient.jpg b/images/gradient.jpg new file mode 100644 index 0000000..d7c578e Binary files /dev/null and b/images/gradient.jpg differ diff --git a/images/header-blank.png b/images/header-blank.png new file mode 100644 index 0000000..ccb8cdc Binary files /dev/null and b/images/header-blank.png differ diff --git a/images/menubarbgdark.jpg b/images/menubarbgdark.jpg new file mode 100644 index 0000000..bcbc9d4 Binary files /dev/null and b/images/menubarbgdark.jpg differ diff --git a/images/nav/firstroll.png b/images/nav/firstroll.png new file mode 100644 index 0000000..e253698 Binary files /dev/null and b/images/nav/firstroll.png differ diff --git a/images/nav/lastroll.png b/images/nav/lastroll.png new file mode 100644 index 0000000..3cab778 Binary files /dev/null and b/images/nav/lastroll.png differ diff --git a/images/nav/nextroll.png b/images/nav/nextroll.png new file mode 100644 index 0000000..492534a Binary files /dev/null and b/images/nav/nextroll.png differ diff --git a/images/nav/prevroll.png b/images/nav/prevroll.png new file mode 100644 index 0000000..450cedb Binary files /dev/null and b/images/nav/prevroll.png differ diff --git a/images/nav/randomroll.png b/images/nav/randomroll.png new file mode 100644 index 0000000..e26ddc7 Binary files /dev/null and b/images/nav/randomroll.png differ diff --git a/images/options/3c.png b/images/options/3c.png new file mode 100644 index 0000000..cbbc95f Binary files /dev/null and b/images/options/3c.png differ diff --git a/images/options/blog.png b/images/options/blog.png new file mode 100644 index 0000000..a8252ec Binary files /dev/null and b/images/options/blog.png differ diff --git a/images/options/comicpress_logo.png b/images/options/comicpress_logo.png new file mode 100644 index 0000000..ce0d5c4 Binary files /dev/null and b/images/options/comicpress_logo.png differ diff --git a/images/options/gn.png b/images/options/gn.png new file mode 100644 index 0000000..9b61709 Binary files /dev/null and b/images/options/gn.png differ diff --git a/images/options/standard.png b/images/options/standard.png new file mode 100644 index 0000000..3423f28 Binary files /dev/null and b/images/options/standard.png differ diff --git a/images/options/v.png b/images/options/v.png new file mode 100644 index 0000000..3fdce63 Binary files /dev/null and b/images/options/v.png differ diff --git a/images/options/v3c.png b/images/options/v3c.png new file mode 100644 index 0000000..97a2142 Binary files /dev/null and b/images/options/v3c.png differ diff --git a/images/paypal.png b/images/paypal.png new file mode 100644 index 0000000..ec72635 Binary files /dev/null and b/images/paypal.png differ diff --git a/images/pingback.png b/images/pingback.png new file mode 100644 index 0000000..40a1541 Binary files /dev/null and b/images/pingback.png differ diff --git a/images/slid-paper.png b/images/slid-paper.png new file mode 100644 index 0000000..587764c Binary files /dev/null and b/images/slid-paper.png differ diff --git a/images/trackback.png b/images/trackback.png new file mode 100644 index 0000000..2a0bd76 Binary files /dev/null and b/images/trackback.png differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..8abfc61 --- /dev/null +++ b/index.php @@ -0,0 +1,119 @@ + + + + + +
    +
    + + + +
    + + + + + + + in_the_loop = true; $comicFrontpage = new WP_Query(); $comicFrontpage->query('showposts=1&cat='.get_all_comic_categories_as_cat_string()); + while ($comicFrontpage->have_posts()) : $comicFrontpage->the_post() ?> + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + +
    + + + + + +
    +
    + + + have_posts()) : $comicFrontpage->the_post(); + + display_comic_post(); + + endwhile; ?> + +
    + + +
    +
    + +
    +
    + + + + + + +
    + + + + + +
    +
    + + + + +
    + +
    + + + +
    + + + + +
    +
    + + + + + +
    +
    + + \ No newline at end of file diff --git a/js/dropbar.js b/js/dropbar.js new file mode 100644 index 0000000..aca673d --- /dev/null +++ b/js/dropbar.js @@ -0,0 +1,68 @@ + + var DropBarMover = new Object(); + DropBarMover.isMouseOver = false; + DropBarMover.isFocus = false; + DropBarMover.timerID = null; + DropBarMover.DropBarInstance = null; + + DropBarMover.mouseOver = function (e) + { + this.isMouseOver = true; + this.adjustDropBar(); + } + DropBarMover.mouseOut = function (e) + { + this.isMouseOver = false; + this.adjustDropBar(); +} + DropBarMover.focus = function (e) + { + this.isFocus = true; + this.adjustDropBar(); +} + DropBarMover.blur = function (e) + { + this.isFocus = false; + this.adjustDropBar(); +} + DropBarMover.adjustDropBar = function() + { + if ( this.timerID == null ) + { + if ( !this.DropBarInstance ) + this.DropBarInstance = document.getElementById('DropBar'); + this.timerID = window.setInterval(function(){ + var Location = DropBarMover.DropBarInstance.style.top; + + Location = parseInt(Location.substr(0,Location.length-2)); + + if ( DropBarMover.isMouseOver || DropBarMover.isFocus ) + { + if ( Location < 0 ) + { + Location+=5; + DropBarMover.DropBarInstance.style.top = Location + 'px'; + } + else + { + window.clearInterval(DropBarMover.timerID); + DropBarMover.timerID = null; + } + } + else + { + if ( Location > -100 ) + { + Location-=5; + DropBarMover.DropBarInstance.style.top = Location + 'px'; + } + else + { + window.clearInterval(DropBarMover.timerID); + DropBarMover.timerID = null; + } + } + + }, 20); + } + } diff --git a/js/equalheight.js b/js/equalheight.js new file mode 100644 index 0000000..4dda0e9 --- /dev/null +++ b/js/equalheight.js @@ -0,0 +1,15 @@ +function equalHeight(group) { + tallest = 0; + group.each(function() { + thisHeight = $(this).height(); + if (thisHeight > tallest) { + tallest = thisHeight; + } + }); + group.height(tallest); +} + + +$(document).ready(function() { + equalHeight($(".sidebar")); +}); diff --git a/js/ie6submenus.js b/js/ie6submenus.js new file mode 100644 index 0000000..72fd283 --- /dev/null +++ b/js/ie6submenus.js @@ -0,0 +1,14 @@ +//Suckerfish Dropdown for IE6 + +sfHover = function() { +var sfEls = document.getElementById("menu").getElementsByTagName("LI"); +for (var i=0; i35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("",""]||!f.1h("",""]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>",""]||!f.1h("<4F")&&[2,"<1T><22>",""]||(!f.1h("<22><4F>",""]||!f.1h("<7E")&&[2,"<1T><22><7q>",""]||D.14.1f&&[1,"1v<1v>",""]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I im[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{})) \ No newline at end of file diff --git a/js/scroll.js b/js/scroll.js new file mode 100644 index 0000000..db889ad --- /dev/null +++ b/js/scroll.js @@ -0,0 +1,28 @@ +// JavaScript Document + +var up_timer + +function getPosition(){ + yoko = document.body.scrollLeft || document.documentElement.scrollLeft; + tate = document.body.scrollTop || document.documentElement.scrollTop; + +} + +function pageup(x,y){ + if(up_timer) clearTimeout(up_timer); + if(y >= 1){ + getPosition(); + var divisionY = (tate-(tate/5)); + var Y = Math.floor(divisionY); + window.scrollTo(yoko,Y); + up_timer = setTimeout("pageup("+yoko+","+Y+")",2); + }else{ + window.scrollTo(yoko,0); + clearTimeout(up_timer); + } +} + +function scrollup(){ + getPosition(); + pageup(yoko,tate) +} \ No newline at end of file diff --git a/links.php b/links.php new file mode 100644 index 0000000..aa3ee0e --- /dev/null +++ b/links.php @@ -0,0 +1,62 @@ + + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + ]*)>#', '
  • ', $bookmarks); + $bookmarks = preg_replace('#
      ]*)>#', '
        ', $bookmarks); + ?> +
        + +
        +

        +
        +
          + +
        +
        +
        +
        + +
        +
        +
        +
  • + +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/lynx_style.css b/lynx_style.css new file mode 100644 index 0000000..8eabb2b --- /dev/null +++ b/lynx_style.css @@ -0,0 +1,3 @@ +/* ComicPress Custom CSS over-rides for [ lynx ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } \ No newline at end of file diff --git a/notie_style.css b/notie_style.css new file mode 100644 index 0000000..c5ba1e4 --- /dev/null +++ b/notie_style.css @@ -0,0 +1,42 @@ +/* ComicPress Custom CSS over-rides for [ gecko ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +.comicarchiveframe +{ + -moz-opacity: 0.99; /* mozilla, netscape */ + opacity:0.99; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.99; /* khtml, old safari */ +} + + .comicarchiveframe:hover { + -moz-opacity: 0.7; /* mozilla, netscape */ + opacity:0.70; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.7; /* khtml, old safari */ + + } + + .imagenav-link img { + -moz-opacity: 0.5; /* mozilla, netscape, gecko */ + opacity:0.5; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.5; /* khtml, old safari */ + } + + .imagenav-link img:hover { + -moz-opacity: 0; /* mozilla, netscape */ + opacity:0.5; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.5; /* khtml, old safari */ + } + +::-moz-selection { + background: #a1c0d9; /* Firefox */ +} + +textarea { + resize: none; +} + +/* selection colors */ +::selection { + background: #ffb7b7; /* Safari */ +} \ No newline at end of file diff --git a/ns4_style.css b/ns4_style.css new file mode 100644 index 0000000..b9aa23a --- /dev/null +++ b/ns4_style.css @@ -0,0 +1,23 @@ +/* ComicPress Custom CSS over-rides for [ ns4 ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +.comicarchiveframe { + -moz-opacity: 0.99; /* mozilla, netscape */ + opacity:0.99; /* firefox, opera, safari, chrome */ +} + + .comicarchiveframe:hover { + -moz-opacity: 0.7; /* mozilla, netscape */ + opacity:0.70; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img { + -moz-opacity: 0.5; /* mozilla, netscape, gecko */ + opacity:0.5; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img:hover { + -moz-opacity: 0; /* mozilla, netscape */ + opacity:0.5; /* firefox, opera, safari, chrome */ + } diff --git a/opera_style.css b/opera_style.css new file mode 100644 index 0000000..32ef303 --- /dev/null +++ b/opera_style.css @@ -0,0 +1,20 @@ +/* ComicPress Custom CSS over-rides for [ opera ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +.comicarchiveframe { + opacity:0.99; /* firefox, opera, safari, chrome */ +} + + .comicarchiveframe:hover { + opacity:0.70; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img { + opacity:0.5; /* firefox, opera, safari, chrome */ + } + + .imagenav-link img:hover { + opacity:0.5; /* firefox, opera, safari, chrome */ + } + diff --git a/page.php b/page.php new file mode 100644 index 0000000..ad4cff2 --- /dev/null +++ b/page.php @@ -0,0 +1,55 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + + +
    +
    +

    +
    + + '

    Pages: ', 'after' => '

    ', 'next_or_number' => 'number')) ?> +
    + ', '

    ') ?> +
    +
    +
    + comment_status) { + comments_template('', true); + } ?> + +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/safari_style.css b/safari_style.css new file mode 100644 index 0000000..7956ab0 --- /dev/null +++ b/safari_style.css @@ -0,0 +1,34 @@ +/* ComicPress Custom CSS over-rides for [ safari ]: ComicPress - 2.8 */ + +html { overflow-y: scroll; } + +.comicarchiveframe { + -khtml-opacity: 0.99; /* khtml, old safari */ +} + + .comicarchiveframe:hover { + opacity:0.70; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.7; /* khtml, old safari */ + + } + + .imagenav-link img { + opacity:0.5; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.5; /* khtml, old safari */ + } + + .imagenav-link img:hover { + opacity:0.5; /* firefox, opera, safari, chrome */ + -khtml-opacity: 0.5; /* khtml, old safari */ + } + +/* Supports: car, both, horizontal, none, vertical */ + +textarea { + resize: none; +} + +/* selection colors */ +::selection { + background: #ffb7b7; /* Safari */ +} \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..830f73d Binary files /dev/null and b/screenshot.png differ diff --git a/search-transcript.php b/search-transcript.php new file mode 100644 index 0000000..8ec6e97 --- /dev/null +++ b/search-transcript.php @@ -0,0 +1,135 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    + post_count; + if (!$count) $count = "no"; + ?> +
    Found result.
    +

    Transcript search for ‘

    + + + + + + + +
    +
    + +
    +
    + '); ?> Posted in: +
    +
    +
    +
    + <?php the_title() ?>
    +
    +
    +
    +
    + + + +
    +
    + +
    +
    + '); ?> Posted in: +
    +
    +
    + +
    +
    +
    + + + + + + + +
    +
    +

    No transcripts found.

    +

    Try another search?

    +

    +
    +
    +
    + + + + +
    + +
    + + + +
    +
    + +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/search.php b/search.php new file mode 100644 index 0000000..a930057 --- /dev/null +++ b/search.php @@ -0,0 +1,137 @@ + + + + + +
    +
    + + + +
    + + + +
    + + + + + +
    +
    + + +
    +
    + post_count; +// if (!$count) $count = "no"; + ?> +
    Found result.
    +

    Search for ‘

    + + + + + + + +
    +
    + +
    +
    + '); ?> Posted in: +
    +
    +
    +
    + <?php the_title() ?>
    +
    +
    +
    +
    + + + +
    +
    + +
    +
    + '); ?> Posted in: +
    +
    +
    + +
    +
    +
    + + + + + + + +
    +
    +

    No entries found.

    +

    Try another search?

    +

    +
    +
    +
    + + +
    +
    + + +
    + +
    + + + +
    +
    + +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/searchform-transcript.php b/searchform-transcript.php new file mode 100644 index 0000000..6df628d --- /dev/null +++ b/searchform-transcript.php @@ -0,0 +1,6 @@ +
    +
    + + +
    +
    \ No newline at end of file diff --git a/searchform.php b/searchform.php new file mode 100644 index 0000000..bbd8626 --- /dev/null +++ b/searchform.php @@ -0,0 +1,6 @@ +
    +
    + + +
    +
    \ No newline at end of file diff --git a/sidebar-above.php b/sidebar-above.php new file mode 100644 index 0000000..20650c1 --- /dev/null +++ b/sidebar-above.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-blog.php b/sidebar-blog.php new file mode 100644 index 0000000..194b854 --- /dev/null +++ b/sidebar-blog.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-comicleft.php b/sidebar-comicleft.php new file mode 100644 index 0000000..7caf827 --- /dev/null +++ b/sidebar-comicleft.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-comicright.php b/sidebar-comicright.php new file mode 100644 index 0000000..dd865ae --- /dev/null +++ b/sidebar-comicright.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-dropbar.php b/sidebar-dropbar.php new file mode 100644 index 0000000..8a31457 --- /dev/null +++ b/sidebar-dropbar.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-footer.php b/sidebar-footer.php new file mode 100644 index 0000000..0548c65 --- /dev/null +++ b/sidebar-footer.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-header.php b/sidebar-header.php new file mode 100644 index 0000000..52c8017 --- /dev/null +++ b/sidebar-header.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-left.php b/sidebar-left.php new file mode 100644 index 0000000..5e5e48e --- /dev/null +++ b/sidebar-left.php @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/sidebar-menubar.php b/sidebar-menubar.php new file mode 100644 index 0000000..dcc06cb --- /dev/null +++ b/sidebar-menubar.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-over.php b/sidebar-over.php new file mode 100644 index 0000000..cd5e6e4 --- /dev/null +++ b/sidebar-over.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-overblog.php b/sidebar-overblog.php new file mode 100644 index 0000000..3c721b7 --- /dev/null +++ b/sidebar-overblog.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-right.php b/sidebar-right.php new file mode 100644 index 0000000..9e75dbd --- /dev/null +++ b/sidebar-right.php @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/sidebar-under.php b/sidebar-under.php new file mode 100644 index 0000000..f3d33f1 --- /dev/null +++ b/sidebar-under.php @@ -0,0 +1,7 @@ + + + diff --git a/sidebar-underblog.php b/sidebar-underblog.php new file mode 100644 index 0000000..8fd5478 --- /dev/null +++ b/sidebar-underblog.php @@ -0,0 +1,7 @@ + + + diff --git a/single.php b/single.php new file mode 100644 index 0000000..f754357 --- /dev/null +++ b/single.php @@ -0,0 +1,83 @@ + + + + + +
    +
    + + + +
    + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + +
    + + + + + +
    +
    + + + +
    +
    + +
    +
    + + + + +
    + +
    + + +
    +
    +

    Sorry, no posts matched your criteria.

    +
    +
    +
    +
    + +
    + +
    +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..c03ff79 --- /dev/null +++ b/style.css @@ -0,0 +1,1714 @@ +/* +Theme Name: ComicPress +Theme URI: http://comicpress.org +Description: Publish a comic with WordPress. Visit the ComicPress Website. +Author: Tyler Martin, John Bintz, Philip M. Hofer +Author URI: http://mindfaucet.com/ +Version: 2.8.0.4 +. +The CSS, XHTML and design is released under GPL v3: +http://www.opensource.org/licenses/gpl-3.0.html +. +*/ + + +/* STANDARD TAGS */ + + +body { + margin: 0; + font-size: 14px; + font-family: 'Arial', sans-serif; + z-index: 0; + } + + +a { + color: #800; + text-decoration: none; + } + + + a:hover { + color: #f00; + } + + + a:focus { + outline: none; + } + + + a img { + border: none; + } + + +p { + margin: 12px 0; + } + + +img { + max-width: 100%; + padding: 0; + } + + +small { + font-size: 11px; + } + + +hr { + height: 1px; + color: #000; + border: 0px; + } + + +blockquote { + margin: 10px; + padding: 5px 10px 5px 20px; + border-width: 1px 1px 1px 5px; + border-style: solid; + border-color: #000; + } + + + blockquote cite { + margin: 5px 0 0; + display: block; + } + + +cite { + font-size: 13px; + font-weight: bold; + font-style: normal; + } + + +code { + padding: 10px; + display: block; + font-family: 'Courier New', monospace; + border: 1px dotted #000; + overflow: scroll; + } + + +acronym, abbr, span.caps { + cursor: help; + } + + + acronym, abbr { + border-bottom: 1px dashed #000; + } + + +form { + margin: 0; + } + + +.sfhover { + padding: 0; + margin: 0; +} + + +/* HEADINGS */ + + +h1, h1 a { + padding: 10px 0 0 0; + margin: 0; + color: #000; + font-size: 60px; + font-family: 'Georgia', serif; + font-weight: normal; + line-height: 50px; + text-decoration: none; + letter-spacing: -4px; + font-variant: small-caps; + } + + +h2, h2 a { + margin: 0; + color: #000; + font-weight: bold; + letter-spacing: -1px; + font-size: 24px; + } + + h2.pagetitle, h2.pagetitle a { + padding: 0 0 5px 0; + margin: 0 0 20px 0; + font-family: 'Georgia', serif; + font-size: 32px; + font-weight: normal; + letter-spacing: -2px; + clear:both; + } + + +h3, h3 a { + padding: 0; + margin: 0; + font-size: 20px; + font-weight: bold; + text-align: left; + color: #000; + text-decoration: none; + clear: both; + letter-spacing: -1px; + } + + + + +/* THE PAGE WRAPPER */ +/* Change this width to set the entire site's width - increase/reduce #content width by the same amount */ + + +#page { + width: 780px; + margin: 0px auto; + } + + +#page-wide { + width: 980px; + margin: 0px auto; +} + + +/* THE HEADER */ + + +#header { + text-align: center; + } + + + .description { + padding: 0 0 10px 0; + font-size: 14px; + font-style: italic; + letter-spacing: 2px; + } + + +/* THE MENU */ + +#menubar { + background: #000 /* url('images/menubarbgdark.jpg') repeat-x*/; + text-align: left; + } + +#menunav { + float: right; + text-align: center; + } + + #menunav a { + width: 25px; + height: 25px; + display: block; + float: left; + color: #fff; + font-size: 19px; + font-weight: bold; + line-height: 24px; + } + + #menunav a:hover { + background: #800; + } + +#menu { + padding: 0; + margin: 0; + list-style: none; + float: left; + line-height: 25px; + font-size: 13px; + text-transform: uppercase; + } + + #menu a { + padding: 0px 10px 0 10px; + display: block; + color: #fff; + text-decoration: none; + } + + #menu li .rss { + padding: 5px 0 5px 0; + } + + + #menu li { + float: left; + } + + #menu li:hover a, #menu li.sfhover a { + color: #fff; /* Main menu highlighted text color */ + } + + #menu li:hover, #menu li.sfhover { + background: #800; /* Main menu highlighted background color */ + } + + /* For submenu dropdowns - this order must be maintained */ + + #menu ul { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + left: -9999px; + width: 175px; + line-height: 1; + } + #menu li li { + width: 165px; + padding: 4px 5px; + color: #fff; + } + #menu li li a { + width: 174px; + padding: 0; + color: #fff; + border: none; + } + #menu li ul ul { + margin: -17px 0 0 170px; + } + #menu li ul li:hover a, #menu li ul li li:hover a, #menu li ul li li li:hover a, #menu li ul li li li:hover a { + color: #fff; /*Submenu highlighted text color */ + } + #menu li:hover li a, #menu li li:hover li a, #menu li li li:hover li a, #menu li li li li:hover li a { + color: #fff; /*Submenu text color */ + } + #menu li li:hover { + background: #f00; /*Submenu highlighted background color */ + } + #menu li:hover ul ul, #menu li:hover ul ul ul, #menu li:hover ul ul ul ul, #menu li.sfhover ul ul, #menu li.sfhover ul ul ul, #menu li.sfhover ul ul ul ul { + left: -9999px; + } + #menu li:hover ul, #menu li li:hover ul, #menu li li li:hover ul, #menu li li li li:hover ul, #menu li.sfhover ul, #menu li li.sfhover ul, #menu li li li.sfhover ul, #menu li li li li.sfhover ul { + left: auto; + background: #000; /* Submenu background color */ + text-transform: none; + } + + #menu .current_page_item a { + color: #fff000; + } + + + +/* THE COMIC */ + + +#comic { + padding: 0; + text-align: center; + z-index: 100; + } + + +.comic-left { + float: left; +} + + +.comic-right { + float: right; +} + + +.comic-content +{ + z-index:100; +} + + +/* THE FOOTER */ + + +#footer { + padding: 5px 0; + text-align: center; + } + + +/* NAVIGATION */ + + +.nav { + float: right; + font-size: 12px; + font-weight: bold; + margin-right: 10px; + padding: 5px; + } + + .nav-first { + padding: 0 5px 0 0; + float: left; + } + + .nav-previous { + padding: 0 5px; + float: left; + } + + .nav-next { + padding: 0 5px; + float: left; + } + + .nav-last { + padding: 0 0 0 5px; + float: left; + } + + +.nav-blog { + color: #000; + font-size: 12px; + font-weight: bold; + float: right; + } + + .nav-blog-previous { + padding: 0 5px 0 0; + float: left; + } + + .nav-blog-next { + padding: 0 0 0 5px; + float: left; + border-left: 1px solid #000; + } + + +.pagenav,.commentnav { + height: 25px; + color: #000; + font-size: 12px; + font-weight: bold; + line-height: 25px; + padding: 0 5px 0 5px; + margin-top: 5px; + clear: both; + } + + + .pagenav-left,.commentnav-left { + float: left; + } + + + .pagenav-right,.commentnav-right { + float: right; + } + + +.nav a, .pagenav a, .nav-blog a { + display: block; + float: left; + color: #000; + } + + + .nav a:hover, .pagenav a:hover, .nav-blog a:hover { + color: #800; + } + + + + +/* POSTS - PAGES */ + + +#pagewrap-right { + width: 770px; + float: left; + overflow: hidden; + padding: 0; + margin: 0; + } + + +#content-wrapper +{ + margin: 0 auto; + padding: 0; + clear: both; + } + + +#content { + float: left; + overflow: hidden; + } + + + .narrowcolumn { + width: 560px; + margin: 0 auto; + float: left; + } + + + .widecolumn { + margin: 0 auto; + } + +.column +{ + margin: 0 5px 0 5px; +} + + +.post, .post-comic, .post-page { + clear: both; + padding: 0 5px; + } + + +.post-head, .post-page-head, .post-comic-head { + } + +.post-foot, .post-comic-foot, .post-page-foot { + } + +.post-foot { + margin-bottom: 20px; +} + + .entry { + padding: 5px; + } + + .post-info { + margin-bottom: 5px; + } + + .post-text { + padding-left: 5px; + overflow: hidden; + display: block; + } + + .post-date { + color: #777; + font-family: 'Georgia' , serif; + font-size: 15px; + font-weight: bold; + float: left; + } + + .post-date .date { + height: 50px; + width: 45px; + background: url(images/calendar.png) center no-repeat; + font: normal 22px Verdana, Arial, Helvetica, sans-serif; + color: #000; + text-align: center; + line-height: 100%; + padding: 0 2px 0 0; + } + + + .post-date .date span { + height: 16px; + display: block; + font: normal 11px Verdana, Arial, Helvetica, sans-serif; + color: #ffffff; + text-align: center; + padding-top: 5px; + } + + .comicdate { + font-size: 14px; + } + + + .postdate { + font-size: 11px; + } + + +.more-link { + border-top: 1px dashed #000; + font-style: italic; + display: block; + clear: both; + } + +.tags { + font-size: 11px; + } + + +.comment-link { + font-family: 'Georgia', serif; + font-size: 13px; + text-align: right; + } + + +.related_posts +{ + margin-top: 10px; + font-weight: 700; +} + + +.related_posts ul +{ + list-style: none; + font-weight: normal; + font-size: 12px; +} + + +/* THE BLOG HEADER */ + + +#blogheader { + font-family: 'Georgia', serif; + padding: 5px 0 5px 0; + font-size: 32px; + letter-spacing: -2px; + border-top: 1px groove #000; + margin-top: 10px; + } + + + + +/* COMMENTS */ + + +.comment-wrap{ + padding: 0 20px; + } + + + .comment-wrap h3 { + margin: 0; + padding: 20px 0 0 0; + font-weight: normal; + font-size: 20px; + clear: both; + font-family: 'Georgia', serif; + } + + +.comment { + padding: 10px; + margin: 10px 0 0 0; + clear: both; + min-height: 64px; + } + + .comment .avatar + { + border: solid 1px #000; + margin: 0 10px 0 0; + float: left; + } + + .comment .trackping { + float: left; + } + + + .comment .comment { + margin-left: 30px; + } + + .comment .comment .comment { + } + + + .comment #respond { + } + + +.comment-author { + display: inline; + } + + +.comment-meta { + display: inline; + padding: 0 0 0 5px; + margin: 0 0 0 2px; + border-left: 1px solid #000; + } + + +.says { + display:none; + } + + +.commentsrsslink { + float: right; + font-size: 11px; +} + + +#comment +{ + width: 99%; + font-size: 12px; + font-family: 'Arial', sans-serif; + } + + +#author, #email, #url { + font-size: 12px; + font-family: 'Arial', sans-serif; + } + + +#submit { + margin: 0 0 20px 0; + float: right; + } + + +.commentlist ul { + list-style: none; + margin-bottom: 30px; +} + + +ol.commentlist { + margin: 0; + padding: 0; + font-size: 11px; + list-style: none; + } + + + ol.commentlist p { + margin: 10px 0 0 74px; + } + + +ul.children { + margin: 0; + padding: 0; + list-style: none; + } + + +.reply { + padding: 10px 0 0 0; + text-align: right; + } + + + + + + +/* ARCHIVE */ +/* For the built-in WordPress archive pages (by month or category) as well as search result pages */ + + +.comicarchiveframe { + padding: 5px; + border: 1px solid #000; + background: #fff; + margin-bottom: 20px; + } + + .comicarchiveframe:hover { + } + + + .comicarchiveframe h3 { + margin: 0; + } + + + .comicarchiveframe a small { + display: block; + color: #000; + } + + +.archive-year { + font-size: 48px; + } + + +.archive-yearlist { + padding: 0 0 10px 0; + font-size: 14px; + } + + + + + + +/* SIDEBAR */ + + + + +/* Left Sidebar Themes */ +#sidebar-left { + float: left; + width: 210px; + } + + +/* Right Sidebar Themes */ +#sidebar-right { + float: right; + width: 210px; + } + + + .customsidebar ul, .customsidebar li { + margin: 0; + padding: 0; + list-style: none; + } + + +.widget { + margin: 0 auto; +} + + +/* Sidebar Class */ + + +.sidebar { + font-size: 11px; + margin: 0 5px 0 5px; + overflow: hidden; + padding-bottom: 10px; + } + + +.sidebar h2, .sidebar h2 a { + font-size: 16px; + } + +.sidebar .widget +{ + margin-bottom: 10px; +} + +.sidebar ul { + margin: 0; + padding: 0; + list-style: none; + } + + .sidebar ul li { + margin: 0; + padding: 0; + text-align: left; + list-style: none; + } + + + .sidebar ul li ul li { + margin: 0 0 0 13px; + padding: 0; + text-align: left; + } + + .sidebar li h2 { + margin-top: 15px; + } + +/* WIDGETS */ + + +.random-comic-icon { + padding: 0 5px; + color: #fff; + background: #000; + } + + +.comic-bookmark { + width: 185px; + margin: 0 auto; + margin-bottom: 10px; + } + + +.archive-dropdown { + max-width: 100%; + } + + + + + + +/* CALENDAR */ + + +#wp-calendar { + border: solid 1px #000; + width: 165px; + margin: 0 auto; + } + + +#wp-calendar th { + font-size: 10px; + font-weight: normal; + text-align: center; + } + + +#wp-calendar caption { + font-family: 'Georgia', sans-serif; + font-size: 18px; + letter-spacing: -1px; + font-variant: small-caps; + } + + +#wp-calendar td { + min-width: 20px; + padding: 0; + text-align: center; + border: 1px solid #000; + } + + +#wp-calendar a { + display: block; + text-decoration: none; + font-weight: bold; + } + + + #wp-calendar a:hover { + color: #fff; + background: #000; + } + +/* SEARCH */ + +#s { + width: 140px; + margin: 0; + padding: 2px; + font-size: 12px; + font-family: 'Arial', sans-serif; + } + +#searchform { + margin-top: 10px; +} + +#searchsubmit { + padding: 0 5px; + font-size: 12px; + font-family: 'Arial', sans-serif; + } + +.button +{ + color: #fff; + background: #838ab5; + border: 1px solid #000; + font-weight: 700; + font-family: 'Arial', sans-serif; + padding: 1px 5px 1px 4px; + } + + +.searchresults +{ + padding: 10px; + float: right; +} + + +/* GALLERY */ + + +.gallery-image { + width: 518px; + border: 1px solid #000; + overflow: hidden; + background: #000; +} + + +.gallery-caption { + font-size: 11px; + } + + .gallery-caption p { + width: 510px; + padding: 5px; + margin: 0; + text-align: center; + color: #fff; + background: #000; + } + + +.imagenav-wrap { + margin: 5px 0 0 0; + } + + +.imagenav { + width: 77px; + height: 77px; + float: left; + overflow: hidden; + } + + +.imagenav-center { + width: 344px; + height: 65px; + margin: 0 5px; + padding: 10px 5px 0 5px; + float: left; + color: #000; + text-align: center; + border: 1px solid #000; + overflow: hidden; + } + + +.imagetitle { + color: #000; + font-size: 18px; + } + + +.imagenav-bg { + width: 75px; + height: 75px; + position: absolute; + z-index: 0; + background: #ddd; + border: 1px solid #000; + overflow: hidden; + } + + + .imagenav-bg img { + width: 75px; + height: 75px; + } + + +.imagenav-arrow { + width: 75px; + height: 75px; + position: absolute; + z-index: 1; + color: #fff; + font-size: 80px; + font-weight: bold; + line-height:75px; + text-align: center; + border: 1px solid #000; + float: left; + } + + +.imagenav-link { + width: 75px; + height: 75px; + position: absolute; + z-index: 2; + border: 1px solid #000; + float: left; + overflow: hidden; + } + + + .imagenav-link img { + width: 75px; + height: 75px; +/* opacity: 0.50; + filter: alpha(opacity=50); */ + } + + + .imagenav-link img:hover { +/* opacity: 0.00; + filter: alpha(opacity=0); */ + } + + + + + + +/* POSTED IMAGES */ + + +.wp-caption p { + margin: 5px 0; + line-height: 11px; + font-size: 11px; + } + + +.aligncenter { + margin: 0 auto; + display: block; + } + + +.alignright { + margin: 10px 0 10px 10px; + display: inline; + float: right; + } + + +.alignleft { + margin: 10px 10px 10px 0; + display: inline; + float: left + } + + + + + + +/* TRANSCRIPT */ + + +#transcript { + padding: 0 10px; + font-size: 11px; + border-left: 4px dotted #000; + border-right: 4px dotted #000; + } + + + .transcript-border { + padding: 0 5px; + margin: 15px 0; + border: 1px solid #000; + background: #fff; + clear: both; + } + + + a.transcript-title { + padding: 0 0 5px 0; + margin: 0 0 5px 0; + display: block; + font-family: 'Georgia', serif; + font-style: italic; + font-size: 16px; + letter-spacing: -1px; + border-bottom: 1px dashed #000; + } + + + #transcript-content { + font-family: 'Courier New', monospace; + overflow: hidden; + } + + +#s-transcript { + width: 140px; + margin: 0; + padding: 2px; + font-size: 12px; + font-family: 'Georgia', serif; + font-style: italic; + } + + + #searchsubmit-transcript { + padding: 0 5px; + font-size: 12px; + font-family: 'Arial', sans-serif; + } + +#s-search { + width: 140px; + margin: 0; + padding: 2px; + font-size: 12px; + font-family: 'Georgia', serif; + font-style: italic; + } + + + #searchsubmit-search { + padding: 0 5px; + font-size: 12px; + font-family: 'Arial', sans-serif; + } + + + + +/* Pingbacks and Trackbacks */ + + +li.pingback div p, li.trackback div p { + margin-left:0; + } + + +/* STORYLINES */ + + +#storyline-cats { + padding: 0; + margin: 0 10px 0 0; + list-style: none; + } + + + #storyline-cats li { + display: inline; + } + + + #storyline-cats ul + { + display: inline; + margin-right: 10px; + } + + +/* CLEAR FLOATS */ + + +.clear { + clear: both; + } + + + + + + +/* CLEAR MARGINS */ +/* Used with BR for clearing paragraph margins for Safari, Chrome - avoid background gaps */ + + +.clear-margins { + clear: both; + height: 0; + line-height: 0; + font-size: 0; + } + + + + + +/* COMIC NAVIGATION */ + + +a.rollnext, .rollnext +{ + display: inline-block; + height: 50px; + width: 60px; + float: left; + text-decoration: none; + background: url('images/nav/nextroll.png') no-repeat; +} + + +a.rolllast, .rolllast +{ + display: inline-block; + height: 50px; + width: 60px; + float: left; + text-decoration: none; + background: url('images/nav/lastroll.png') no-repeat; +} + + +a.rollprev, .rollprev +{ + display: inline-block; + height: 50px; + width: 60px; + float: left; + text-decoration: none; + background: url('images/nav/prevroll.png') no-repeat; +} + + +a.rollfirst, .rollfirst +{ + display: inline-block; + height: 50px; + width: 60px; + float: left; + text-decoration: none; + background: url('images/nav/firstroll.png') no-repeat; +} + + +a.rollrandom, .rollrandom +{ + display: inline-block; + height: 50px; + width: 60px; + text-decoration: none; + background: url('images/nav/randomroll.png') no-repeat; +} + + +a.rollfirst:hover, a.rollprev:hover, a.rollnext:hover, a.rolllast:hover, a.rollrandom:hover +{ + background-position: -60px 0; +} + + +.rollagain { + background-position: -120px 0; +} + + +#comic_navi_wrapper { +} + + + .comic_navi + { + width: 370px; + margin: 0 auto; + } + + .comic_navi_left + { + width: 120px; + float: left; + } + + .comic_navi_center_spacer { + width: 130px; + margin: 0 auto; + } + + .comic_navi_center + { + width: 60px; + margin: 0 auto; + } + + .comic_navi_right + { + width: 120px; + float: right; + } + + +/** BUY THIS **/ + + +.buythis +{ + padding: 0 5px 0 5px; +} + + +.buythisbutton +{ + height: 27px; + width: 240px; + margin: 5px 0 5px 0; + background: url('images/buythis.png') no-repeat; +} + + +/** Project Wonderful CSS Embedded areas **/ + + +.blogpwad { + text-align: center; + width: 100%; + } + + +.headerpwad { + float: right; + margin: 5px 5px 0 0; + } + +.footerpwad { + display: block; + width: 100%; + text-align: center; + } + + + +/* Archive Calendar Template */ + + +.cpcal-month { + width: 157px; + height: 138px; + padding: 5px 0 5px 5px; + margin: 0 8px 8px 0; + float: left; + border: 1px solid #000; + } + +.cpcal-monthtitle { + width: 154px; + height: 16px; + padding: 0 0 5px 0; + text-align: center; + font-family: 'Georgia', serif; + font-variant: small-caps; + font-size: 16px; + line-height: 16px; + letter-spacing: -1px; + } +.cpcal-dayletter { + width: 20px; + height: 15px; + margin: 0 2px 2px 0; + display: block; + float: left; + text-align: center; + font-size: 10px; + line-height: 13px; + } + +.cpcal-day { + width: 18px; + height: 13px; + margin: 0 2px 2px 0; + display: block; + float: left; + text-align: center; + font-size: 10px; + line-height: 13px; + border: 1px solid #000; + } + + .cpcal-day a { + width: 18px; + height: 13px; + line-height: 13px; + display: block; + font-size: 12px; + font-weight: bold; + } + + .cpcal-day a:hover { + color: #fff; + background: #000; + } + +/* Storyline Template */ + + +#storyline, #storyline ul { + padding: 0; + margin: 0; + list-style: none; + } + +#storyline li { + padding: 0; + margin: 0; + } + +#storyline li img { + height: 50px; + display: none; + } + +#storyline li li img { + display: block; + float: right; + padding: 0 0 0 10px; + } + +#storyline ul ul { + margin: 0 0 0 20px; + } + +#storyline li li .storyline-title { + font-size: 24px; + font-weight: bold; + display: block; + color: #000; + } + +#storyline li li .storyline-title:hover { + color: #900; + } + +#storyline li li li a.storyline-title { + font-size: 18px; + } + +#storyline li li li li a.storyline-title { + font-size: 14px; + } + + .storyline-description { + font-size: 11px; + } + + .storyline-foot { + clear: both; + margin: 0 0 10px 0; + height: 10px; + border-bottom: 4px solid #000; + } + +#storyline li li .storyline-foot { + border-bottom: 2px solid #000; + } +#storyline li li li .storyline-foot { + border-bottom: 1px solid #000; + } + +/* Archive Year Template */ + + +.archive-date { + padding: 0 5px 0 0; + font-size: 11px; + white-space: nowrap; + } + +.archive-title { + padding: 2px 5px; + line-height: 11px; + border-left: 1px solid #000; + } + +.month-table{ + border-collapse: collapse; + margin: 0 0 20px 0; +} + + +#linkspage, #linkspage ul, #linkspage li { + list-style:none; +} + + +#linkspage h2 { + margin-top: 20px; +} + + +.wp-pagenavi, .paginav { + height: 25px; + line-height: 25px; + font-size: 14px; + } + + +.wp-pagenavi a, .wp-pagenavi a:link, .wp-pagenavi a:visited, .wp-pagenavi a:hover, .wp-pagenavi a:active +{ + padding: 2px; + text-decoration: none; +} + + +.wp-pagenavi span.pages { + color: #777; + margin-right: 10px; +} + + +.wp-pagenavi span.current, .paginav .current +{ + font-size: 16px; + font-weight: bold; +} + + +.wp-pagenavi span.extend { +} + + +/* Drop Bar */ + + +.dropbar +{ + position:absolute; + left:0px; + width:100%; + height:98px; + border-bottom: solid 1px #fff; + color: white; + font-family: Verdana; + font-size: 11px; + z-index:10000; + background: #000; +} + + +.dropbar .droptab +{ + position: absolute; + bottom: -23px; + left: 30px; + width: 142px; + height: 23px; + background-image: url('images/dropbar.png'); +} + + +/* members only */ + + +.members-only +{ + border: solid 1px #000; + background: #ccc; + padding: 3px; +} + + +/* Tool Tips */ + + +.tt a { + position:relative; + z-index:1000; + color:#3CA3FF; + font-weight:bold; + text-decoration:none; + margin-bottom: -100px; + + + + +} +a.tt span{ display: none; } + + +a.tt:hover span.tooltip +{ + position: absolute; + display:block; + width:200px; + color: #000; + margin: 0 auto; + text-align: center; + height: 164px; + background: url('images/anomaly.png') no-repeat; + z-index:1000; +} +a.tt:hover span.top{ + display: block; + width: 200px; + height: 20px; + padding-top: 10px; + margin-top: 55px; + margin-left: 25px; + background: url('images/bubble.gif') no-repeat top; + z-index:1000; +} +a.tt:hover span.middle{ /* different middle bg for stretch */ + display: block; + width: 190px; + margin-left: 25px; + padding: 0 5px 0 5px; + background: url('images/bubble_filler.gif') repeat bottom; + z-index:1000; +} +a.tt:hover span.bottom{ + display: block; + width: 200px; + height: 15px; + background-position: -100px; + color: #548912; + margin-left: 25px; + background: url('images/bubble.gif') no-repeat bottom; + z-index:1000; +} + + +/* User Pages */ + + +#userpage { + width: 100%; + padding: 5px; +} + + +.userpage-avatar { + float: left; + width: 64px; + height: 64px; + border: 1px solid #000; +} + + +.userpage-info { + margin-left: 10px; + float: left; +} + + +.userpage-desc +{ + width: 400px; + padding: 5px; + margin-top: 30px; + border: 1px dotted #efefef; +} + + +.userpage-posts +{ + margin-top: 20px; +} + + +.userpage-posts ol { + margin: 10px 0 0 30px; + padding: 0; +} + + +.userpage-posts li { + list-style: none; + margin: 0; + padding: 0; +} + + diff --git a/swfobject/expressInstall.swf b/swfobject/expressInstall.swf new file mode 100644 index 0000000..0fbf8fc Binary files /dev/null and b/swfobject/expressInstall.swf differ diff --git a/swfobject/index.html b/swfobject/index.html new file mode 100644 index 0000000..56a8678 --- /dev/null +++ b/swfobject/index.html @@ -0,0 +1,28 @@ + + + + SWFObject 2 static publishing example page + + + + + +
    + + + + + +
    +

    Alternative content

    +

    Get Adobe Flash player

    +
    + +
    + +
    +
    + + diff --git a/swfobject/index_dynamic.html b/swfobject/index_dynamic.html new file mode 100644 index 0000000..5ca0a55 --- /dev/null +++ b/swfobject/index_dynamic.html @@ -0,0 +1,17 @@ + + + + SWFObject 2 dynamic publishing example page + + + + + +
    +

    Alternative content

    +

    Get Adobe Flash player

    +
    + + diff --git a/swfobject/src/expressInstall.as b/swfobject/src/expressInstall.as new file mode 100644 index 0000000..b98e592 --- /dev/null +++ b/swfobject/src/expressInstall.as @@ -0,0 +1,70 @@ +/* SWFObject v2.2 is released under the MIT License + Express Install Copyright (c) 2007-2008 Adobe Systems Incorporated and its licensors. All Rights Reserved. +*/ + +System.security.allowDomain("fpdownload.macromedia.com"); + +var time = 0; +var timeOut = 5; // in seconds +var delay = 10; // in milliseconds +var int_id = setInterval(checkLoaded, delay); +var old_si = null; +var loaderClip = this.createEmptyMovieClip("loaderClip", 0); +var updateSWF = "http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf?" + Math.random(); +loaderClip.loadMovie(updateSWF); + +function checkLoaded(){ + time += delay / 1000; + if (time > timeOut) { + // updater did not load in time, abort load and force alternative content + clearInterval(int_id); + loaderClip.unloadMovie(); + loadTimeOut(); + } + else if (loaderClip.startInstall.toString() == "[type Function]") { + // updater has loaded successfully AND has determined that it can do the express install + if (old_si == null) { + old_si = loaderClip.startInstall; + loaderClip.startInstall = function() { + clearInterval(int_id); + old_si(); + } + loadComplete(); + } + } +} + +function loadTimeOut() { + callbackSWFObject(); +} + +function callbackSWFObject() { + getURL("javascript:swfobject.expressInstallCallback();"); +} + +function loadComplete() { + loaderClip.redirectURL = _level0.MMredirectURL; + loaderClip.MMplayerType = _level0.MMplayerType; + loaderClip.MMdoctitle = _level0.MMdoctitle; + loaderClip.startUpdate(); +} + +function installStatus(statusValue) { + switch (statusValue) { + case "Download.Complete": + // Installation is complete. + // In most cases the browser window that this SWF is hosted in will be closed by the installer or otherwise it has to be closed manually by the end user. + // The Adobe Flash installer will attempt to reopen the browser window and reload the page containing the SWF. + break; + case "Download.Cancelled": + // The end user chose "NO" when prompted to install the new player. + // By default the SWFObject callback function is called to force alternative content. + callbackSWFObject(); + break; + case "Download.Failed": + // The end user failed to download the installer due to a network failure. + // By default the SWFObject callback function is called to force alternative content. + callbackSWFObject(); + break; + } +} diff --git a/swfobject/src/expressInstall.fla b/swfobject/src/expressInstall.fla new file mode 100644 index 0000000..3784153 Binary files /dev/null and b/swfobject/src/expressInstall.fla differ diff --git a/swfobject/src/swfobject.js b/swfobject/src/swfobject.js new file mode 100644 index 0000000..9378c8f --- /dev/null +++ b/swfobject/src/swfobject.js @@ -0,0 +1,777 @@ +/*! SWFObject v2.2 + is released under the MIT License +*/ + +var swfobject = function() { + + var UNDEF = "undefined", + OBJECT = "object", + SHOCKWAVE_FLASH = "Shockwave Flash", + SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", + FLASH_MIME_TYPE = "application/x-shockwave-flash", + EXPRESS_INSTALL_ID = "SWFObjectExprInst", + ON_READY_STATE_CHANGE = "onreadystatechange", + + win = window, + doc = document, + nav = navigator, + + plugin = false, + domLoadFnArr = [main], + regObjArr = [], + objIdArr = [], + listenersArr = [], + storedAltContent, + storedAltContentId, + storedCallbackFn, + storedCallbackObj, + isDomLoaded = false, + isExpressInstallActive = false, + dynamicStylesheet, + dynamicStylesheetMedia, + autoHideShow = true, + + /* Centralized function for browser feature detection + - User agent string detection is only used when no good alternative is possible + - Is executed directly for optimal performance + */ + ua = function() { + var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, + u = nav.userAgent.toLowerCase(), + p = nav.platform.toLowerCase(), + windows = p ? /win/.test(p) : /win/.test(u), + mac = p ? /mac/.test(p) : /mac/.test(u), + webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit + ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html + playerVersion = [0,0,0], + d = null; + if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { + d = nav.plugins[SHOCKWAVE_FLASH].description; + if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+ + plugin = true; + ie = false; // cascaded feature detection for Internet Explorer + d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); + playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); + playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); + playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; + } + } + else if (typeof win.ActiveXObject != UNDEF) { + try { + var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); + if (a) { // a will return null when ActiveX is disabled + d = a.GetVariable("$version"); + if (d) { + ie = true; // cascaded feature detection for Internet Explorer + d = d.split(" ")[1].split(","); + playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + } + catch(e) {} + } + return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; + }(), + + /* Cross-browser onDomLoad + - Will fire an event as soon as the DOM of a web page is loaded + - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/ + - Regular onload serves as fallback + */ + onDomLoad = function() { + if (!ua.w3) { return; } + if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically + callDomLoadFunctions(); + } + if (!isDomLoaded) { + if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); + } + if (ua.ie && ua.win) { + doc.attachEvent(ON_READY_STATE_CHANGE, function() { + if (doc.readyState == "complete") { + doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); + callDomLoadFunctions(); + } + }); + if (win == top) { // if not inside an iframe + (function(){ + if (isDomLoaded) { return; } + try { + doc.documentElement.doScroll("left"); + } + catch(e) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + } + if (ua.wk) { + (function(){ + if (isDomLoaded) { return; } + if (!/loaded|complete/.test(doc.readyState)) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + addLoadEvent(callDomLoadFunctions); + } + }(); + + function callDomLoadFunctions() { + if (isDomLoaded) { return; } + try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early + var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); + t.parentNode.removeChild(t); + } + catch (e) { return; } + isDomLoaded = true; + var dl = domLoadFnArr.length; + for (var i = 0; i < dl; i++) { + domLoadFnArr[i](); + } + } + + function addDomLoadEvent(fn) { + if (isDomLoaded) { + fn(); + } + else { + domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ + } + } + + /* Cross-browser onload + - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ + - Will fire an event as soon as a web page including all of its assets are loaded + */ + function addLoadEvent(fn) { + if (typeof win.addEventListener != UNDEF) { + win.addEventListener("load", fn, false); + } + else if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("load", fn, false); + } + else if (typeof win.attachEvent != UNDEF) { + addListener(win, "onload", fn); + } + else if (typeof win.onload == "function") { + var fnOld = win.onload; + win.onload = function() { + fnOld(); + fn(); + }; + } + else { + win.onload = fn; + } + } + + /* Main function + - Will preferably execute onDomLoad, otherwise onload (as a fallback) + */ + function main() { + if (plugin) { + testPlayerVersion(); + } + else { + matchVersions(); + } + } + + /* Detect the Flash Player version for non-Internet Explorer browsers + - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description: + a. Both release and build numbers can be detected + b. Avoid wrong descriptions by corrupt installers provided by Adobe + c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports + - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available + */ + function testPlayerVersion() { + var b = doc.getElementsByTagName("body")[0]; + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + var t = b.appendChild(o); + if (t) { + var counter = 0; + (function(){ + if (typeof t.GetVariable != UNDEF) { + var d = t.GetVariable("$version"); + if (d) { + d = d.split(" ")[1].split(","); + ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + else if (counter < 10) { + counter++; + setTimeout(arguments.callee, 10); + return; + } + b.removeChild(o); + t = null; + matchVersions(); + })(); + } + else { + matchVersions(); + } + } + + /* Perform Flash Player and SWF version matching; static publishing only + */ + function matchVersions() { + var rl = regObjArr.length; + if (rl > 0) { + for (var i = 0; i < rl; i++) { // for each registered object element + var id = regObjArr[i].id; + var cb = regObjArr[i].callbackFn; + var cbObj = {success:false, id:id}; + if (ua.pv[0] > 0) { + var obj = getElementById(id); + if (obj) { + if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match! + setVisibility(id, true); + if (cb) { + cbObj.success = true; + cbObj.ref = getObjectById(id); + cb(cbObj); + } + } + else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported + var att = {}; + att.data = regObjArr[i].expressInstall; + att.width = obj.getAttribute("width") || "0"; + att.height = obj.getAttribute("height") || "0"; + if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } + if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } + // parse HTML object param element's name-value pairs + var par = {}; + var p = obj.getElementsByTagName("param"); + var pl = p.length; + for (var j = 0; j < pl; j++) { + if (p[j].getAttribute("name").toLowerCase() != "movie") { + par[p[j].getAttribute("name")] = p[j].getAttribute("value"); + } + } + showExpressInstall(att, par, id, cb); + } + else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF + displayAltContent(obj); + if (cb) { cb(cbObj); } + } + } + } + else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content) + setVisibility(id, true); + if (cb) { + var o = getObjectById(id); // test whether there is an HTML object element or not + if (o && typeof o.SetVariable != UNDEF) { + cbObj.success = true; + cbObj.ref = o; + } + cb(cbObj); + } + } + } + } + } + + function getObjectById(objectIdStr) { + var r = null; + var o = getElementById(objectIdStr); + if (o && o.nodeName == "OBJECT") { + if (typeof o.SetVariable != UNDEF) { + r = o; + } + else { + var n = o.getElementsByTagName(OBJECT)[0]; + if (n) { + r = n; + } + } + } + return r; + } + + /* Requirements for Adobe Express Install + - only one instance can be active at a time + - fp 6.0.65 or higher + - Win/Mac OS only + - no Webkit engines older than version 312 + */ + function canExpressInstall() { + return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); + } + + /* Show the Adobe Express Install dialog + - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 + */ + function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { + isExpressInstallActive = true; + storedCallbackFn = callbackFn || null; + storedCallbackObj = {success:false, id:replaceElemIdStr}; + var obj = getElementById(replaceElemIdStr); + if (obj) { + if (obj.nodeName == "OBJECT") { // static publishing + storedAltContent = abstractAltContent(obj); + storedAltContentId = null; + } + else { // dynamic publishing + storedAltContent = obj; + storedAltContentId = replaceElemIdStr; + } + att.id = EXPRESS_INSTALL_ID; + if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } + if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } + doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; + var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", + fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + fv; + } + else { + par.flashvars = fv; + } + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + if (ua.ie && ua.win && obj.readyState != 4) { + var newObj = createElement("div"); + replaceElemIdStr += "SWFObjectNew"; + newObj.setAttribute("id", replaceElemIdStr); + obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + createSWF(att, par, replaceElemIdStr); + } + } + + /* Functions to abstract and display alternative content + */ + function displayAltContent(obj) { + if (ua.ie && ua.win && obj.readyState != 4) { + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + var el = createElement("div"); + obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content + el.parentNode.replaceChild(abstractAltContent(obj), el); + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.replaceChild(abstractAltContent(obj), obj); + } + } + + function abstractAltContent(obj) { + var ac = createElement("div"); + if (ua.win && ua.ie) { + ac.innerHTML = obj.innerHTML; + } + else { + var nestedObj = obj.getElementsByTagName(OBJECT)[0]; + if (nestedObj) { + var c = nestedObj.childNodes; + if (c) { + var cl = c.length; + for (var i = 0; i < cl; i++) { + if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { + ac.appendChild(c[i].cloneNode(true)); + } + } + } + } + } + return ac; + } + + /* Cross-browser dynamic SWF creation + */ + function createSWF(attObj, parObj, id) { + var r, el = getElementById(id); + if (ua.wk && ua.wk < 312) { return r; } + if (el) { + if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content + attObj.id = id; + } + if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML + var att = ""; + for (var i in attObj) { + if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries + if (i.toLowerCase() == "data") { + parObj.movie = attObj[i]; + } + else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + att += ' class="' + attObj[i] + '"'; + } + else if (i.toLowerCase() != "classid") { + att += ' ' + i + '="' + attObj[i] + '"'; + } + } + } + var par = ""; + for (var j in parObj) { + if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries + par += ''; + } + } + el.outerHTML = '' + par + ''; + objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only) + r = getElementById(attObj.id); + } + else { // well-behaving browsers + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + for (var m in attObj) { + if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries + if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + o.setAttribute("class", attObj[m]); + } + else if (m.toLowerCase() != "classid") { // filter out IE specific attribute + o.setAttribute(m, attObj[m]); + } + } + } + for (var n in parObj) { + if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element + createObjParam(o, n, parObj[n]); + } + } + el.parentNode.replaceChild(o, el); + r = o; + } + } + return r; + } + + function createObjParam(el, pName, pValue) { + var p = createElement("param"); + p.setAttribute("name", pName); + p.setAttribute("value", pValue); + el.appendChild(p); + } + + /* Cross-browser SWF removal + - Especially needed to safely and completely remove a SWF in Internet Explorer + */ + function removeSWF(id) { + var obj = getElementById(id); + if (obj && obj.nodeName == "OBJECT") { + if (ua.ie && ua.win) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + removeObjectInIE(id); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } + } + + function removeObjectInIE(id) { + var obj = getElementById(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } + } + + /* Functions to optimize JavaScript compression + */ + function getElementById(id) { + var el = null; + try { + el = doc.getElementById(id); + } + catch (e) {} + return el; + } + + function createElement(el) { + return doc.createElement(el); + } + + /* Updated attachEvent function for Internet Explorer + - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks + */ + function addListener(target, eventType, fn) { + target.attachEvent(eventType, fn); + listenersArr[listenersArr.length] = [target, eventType, fn]; + } + + /* Flash Player and SWF content version matching + */ + function hasPlayerVersion(rv) { + var pv = ua.pv, v = rv.split("."); + v[0] = parseInt(v[0], 10); + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[2] = parseInt(v[2], 10) || 0; + return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; + } + + /* Cross-browser dynamic CSS creation + - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php + */ + function createCSS(sel, decl, media, newStyle) { + if (ua.ie && ua.mac) { return; } + var h = doc.getElementsByTagName("head")[0]; + if (!h) { return; } // to also support badly authored HTML pages that lack a head element + var m = (media && typeof media == "string") ? media : "screen"; + if (newStyle) { + dynamicStylesheet = null; + dynamicStylesheetMedia = null; + } + if (!dynamicStylesheet || dynamicStylesheetMedia != m) { + // create dynamic stylesheet + get a global reference to it + var s = createElement("style"); + s.setAttribute("type", "text/css"); + s.setAttribute("media", m); + dynamicStylesheet = h.appendChild(s); + if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { + dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; + } + dynamicStylesheetMedia = m; + } + // add style rule + if (ua.ie && ua.win) { + if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { + dynamicStylesheet.addRule(sel, decl); + } + } + else { + if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { + dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); + } + } + } + + function setVisibility(id, isVisible) { + if (!autoHideShow) { return; } + var v = isVisible ? "visible" : "hidden"; + if (isDomLoaded && getElementById(id)) { + getElementById(id).style.visibility = v; + } + else { + createCSS("#" + id, "visibility:" + v); + } + } + + /* Filter to avoid XSS attacks + */ + function urlEncodeIfNecessary(s) { + var regex = /[\\\"<>\.;]/; + var hasBadChars = regex.exec(s) != null; + return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; + } + + /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only) + */ + var cleanup = function() { + if (ua.ie && ua.win) { + window.attachEvent("onunload", function() { + // remove listeners to avoid memory leaks + var ll = listenersArr.length; + for (var i = 0; i < ll; i++) { + listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); + } + // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect + var il = objIdArr.length; + for (var j = 0; j < il; j++) { + removeSWF(objIdArr[j]); + } + // cleanup library's main closures to avoid memory leaks + for (var k in ua) { + ua[k] = null; + } + ua = null; + for (var l in swfobject) { + swfobject[l] = null; + } + swfobject = null; + }); + } + }(); + + return { + /* Public API + - Reference: http://code.google.com/p/swfobject/wiki/documentation + */ + registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { + if (ua.w3 && objectIdStr && swfVersionStr) { + var regObj = {}; + regObj.id = objectIdStr; + regObj.swfVersion = swfVersionStr; + regObj.expressInstall = xiSwfUrlStr; + regObj.callbackFn = callbackFn; + regObjArr[regObjArr.length] = regObj; + setVisibility(objectIdStr, false); + } + else if (callbackFn) { + callbackFn({success:false, id:objectIdStr}); + } + }, + + getObjectById: function(objectIdStr) { + if (ua.w3) { + return getObjectById(objectIdStr); + } + }, + + embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { + var callbackObj = {success:false, id:replaceElemIdStr}; + if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { + setVisibility(replaceElemIdStr, false); + addDomLoadEvent(function() { + widthStr += ""; // auto-convert to string + heightStr += ""; + var att = {}; + if (attObj && typeof attObj === OBJECT) { + for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs + att[i] = attObj[i]; + } + } + att.data = swfUrlStr; + att.width = widthStr; + att.height = heightStr; + var par = {}; + if (parObj && typeof parObj === OBJECT) { + for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs + par[j] = parObj[j]; + } + } + if (flashvarsObj && typeof flashvarsObj === OBJECT) { + for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + k + "=" + flashvarsObj[k]; + } + else { + par.flashvars = k + "=" + flashvarsObj[k]; + } + } + } + if (hasPlayerVersion(swfVersionStr)) { // create SWF + var obj = createSWF(att, par, replaceElemIdStr); + if (att.id == replaceElemIdStr) { + setVisibility(replaceElemIdStr, true); + } + callbackObj.success = true; + callbackObj.ref = obj; + } + else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install + att.data = xiSwfUrlStr; + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + return; + } + else { // show alternative content + setVisibility(replaceElemIdStr, true); + } + if (callbackFn) { callbackFn(callbackObj); } + }); + } + else if (callbackFn) { callbackFn(callbackObj); } + }, + + switchOffAutoHideShow: function() { + autoHideShow = false; + }, + + ua: ua, + + getFlashPlayerVersion: function() { + return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; + }, + + hasFlashPlayerVersion: hasPlayerVersion, + + createSWF: function(attObj, parObj, replaceElemIdStr) { + if (ua.w3) { + return createSWF(attObj, parObj, replaceElemIdStr); + } + else { + return undefined; + } + }, + + showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { + if (ua.w3 && canExpressInstall()) { + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + } + }, + + removeSWF: function(objElemIdStr) { + if (ua.w3) { + removeSWF(objElemIdStr); + } + }, + + createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { + if (ua.w3) { + createCSS(selStr, declStr, mediaStr, newStyleBoolean); + } + }, + + addDomLoadEvent: addDomLoadEvent, + + addLoadEvent: addLoadEvent, + + getQueryParamValue: function(param) { + var q = doc.location.search || doc.location.hash; + if (q) { + if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark + if (param == null) { + return urlEncodeIfNecessary(q); + } + var pairs = q.split("&"); + for (var i = 0; i < pairs.length; i++) { + if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { + return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); + } + } + } + return ""; + }, + + // For internal usage only + expressInstallCallback: function() { + if (isExpressInstallActive) { + var obj = getElementById(EXPRESS_INSTALL_ID); + if (obj && storedAltContent) { + obj.parentNode.replaceChild(storedAltContent, obj); + if (storedAltContentId) { + setVisibility(storedAltContentId, true); + if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } + } + if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } + } + isExpressInstallActive = false; + } + } + }; +}(); diff --git a/swfobject/swfobject.js b/swfobject/swfobject.js new file mode 100644 index 0000000..8eafe9d --- /dev/null +++ b/swfobject/swfobject.js @@ -0,0 +1,4 @@ +/* SWFObject v2.2 + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/widgets/bookmark.php b/widgets/bookmark.php new file mode 100644 index 0000000..569eb0e --- /dev/null +++ b/widgets/bookmark.php @@ -0,0 +1,154 @@ + +
    + +
    + 'widget_comicpress_bookmark', 'description' => 'Creates a set of buttons that let the user return to the page they tagged.' ); + $this->WP_Widget('comicpress_bookmark', 'ComicPress Bookmark', $widget_ops); + } + + function widget($args, $instance) { + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + comicpress_comic_bookmark(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/buythisprint.php b/widgets/buythisprint.php new file mode 100644 index 0000000..3bfe5b2 --- /dev/null +++ b/widgets/buythisprint.php @@ -0,0 +1,64 @@ + +
    + +
    +
    + 'widget_comicpress_buy_this_print', 'description' => 'Adds a button that goes to the buy print template page.' ); + $this->WP_Widget('comicpress_buyprint', 'Buy This Print', $widget_ops); + } + + function widget($args, $instance) { + global $buy_print_url; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + buy_this_print_comic(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/calendar.php b/widgets/calendar.php new file mode 100644 index 0000000..8a464ca --- /dev/null +++ b/widgets/calendar.php @@ -0,0 +1,53 @@ + 'widget_comicpress_calendar', 'description' => 'Display a calendar showing this months posts. (this calendar does not drop lines if there is no title given.)' ); + $this->WP_Widget('comicpress_calendar', 'Comicpress Calendar', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + get_calendar(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/comiccomments.php b/widgets/comiccomments.php new file mode 100644 index 0000000..7968979 --- /dev/null +++ b/widgets/comiccomments.php @@ -0,0 +1,53 @@ + 'widget_comicpress_comments', 'description' => 'Displays a comments link.' ); + $this->WP_Widget('comic_comments', 'Comic Comments', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? 'Permalink' : apply_filters('widget_title', $instance['title']); ?> + comment_status) { comments_popup_link('“Comment!”', '“1 Comment”', '“% Comments”'); } ?> + '') ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/comicdate.php b/widgets/comicdate.php new file mode 100644 index 0000000..576e5a9 --- /dev/null +++ b/widgets/comicdate.php @@ -0,0 +1,53 @@ + 'widget_comicpress_comic_date', 'description' => 'Displays the date of the post of the comic.' ); + $this->WP_Widget('comic_date', 'Comic Date', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $title; } ?> + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + + \ No newline at end of file diff --git a/widgets/comictitle.php b/widgets/comictitle.php new file mode 100644 index 0000000..9b9e826 --- /dev/null +++ b/widgets/comictitle.php @@ -0,0 +1,45 @@ + 'widget_comicpress_comictitle', 'description' => 'Displays the title of the comic.' ); + $this->WP_Widget('comictitle', 'Comic Title', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + the_title(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + return $instance; + } + + function form($instance) { + } +} +register_widget('widget_comicpress_comictitle'); + + +function widget_comicpress_comictitle_init() { + new widget_comicpress_comictitle(); +} + +add_action('widgets_init', 'widget_comicpress_comictitle_init'); + +?> \ No newline at end of file diff --git a/widgets/control-panel.php b/widgets/control-panel.php new file mode 100644 index 0000000..0484c6c --- /dev/null +++ b/widgets/control-panel.php @@ -0,0 +1,99 @@ + + + 'widget_comicpress_show_control_panel', 'description' => 'Login/Logoff menu with register/lost password links if not logged on.' ); + $this->WP_Widget('control_panel', 'Control Panel', $widget_ops); + } + + function widget($args, $instance) { + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? 'Control Panel' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + comicpress_show_control_panel(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/graphical-navigation.php b/widgets/graphical-navigation.php new file mode 100644 index 0000000..e34065e --- /dev/null +++ b/widgets/graphical-navigation.php @@ -0,0 +1,101 @@ +is_single; + $wp_query->is_single = true; + $prev_comic = get_previous_comic_permalink(); + $next_comic = get_next_comic_permalink(); + $wp_query->is_single = $temp_query; + $temp_query = null; + + $first_comic = get_first_comic_permalink(); + $last_comic = get_last_comic_permalink(); + + echo '
    '; + echo '
    '; + echo '
    '; + + if (!empty($first_comic) && ($first_comic != $this_permalink)) { + echo '  '; + } else { + echo '
    '; + } + + if (!empty($prev_comic)) { + echo '  '; + } else { + echo '
    '; + } + echo '
    '; + echo '
    '; + echo '
    '; + + if (!empty($next_comic)) { + echo '  '; + } else { + echo '
    '; + } + + if (!empty($last_comic) && ($last_comic != $this_permalink)) { + echo '  '; + } else { + echo '
    '; + } + echo '
    '; + echo '
    '; + echo '
    '; + echo '
    '; + echo '  '; + echo '
    '; + echo '
    '; + echo '
    '; + echo '
    '; + echo '
    '; + +} + + +class widget_comicpress_graphical_navigation extends WP_Widget { + + function widget_comicpress_graphical_navigation() { + $widget_ops = array('classname' => 'widget_comicpress_graphical_navigation', 'description' => 'Displays Graphical Navigation Buttons.' ); + $this->WP_Widget('graphicalnavigation', 'Comic Navigation', $widget_ops); + } + + function widget($args, $instance) { + global $wp_query, $post; + extract($args, EXTR_SKIP); + echo $before_widget; + comic_navigation(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + } + + function form($instance) { + } +} +register_widget('widget_comicpress_graphical_navigation'); + + +function widget_comicpress_graphical_navigation_init() { + new widget_comicpress_graphical_navigation(); +} + +add_action('widgets_init', 'widget_comicpress_graphical_navigation_init'); + +?> \ No newline at end of file diff --git a/widgets/keenspotnewsbox.php b/widgets/keenspotnewsbox.php new file mode 100644 index 0000000..e0c305d --- /dev/null +++ b/widgets/keenspotnewsbox.php @@ -0,0 +1,51 @@ + 'widget_keenspot_newsbox', 'description' => 'Displays the keenspot newsbox.' ); + $this->WP_Widget('keenspotnewsbox', 'Keenspot Newsbox', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + echo '
    '; + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + diff --git a/widgets/latestcomicjump.php b/widgets/latestcomicjump.php new file mode 100644 index 0000000..4064102 --- /dev/null +++ b/widgets/latestcomicjump.php @@ -0,0 +1,63 @@ + 'widget_comicpress_latest_comic_jump', 'description' => 'Displays a link to click to go to the latest comic.' ); + $this->WP_Widget('latest_comic_jump', 'Latest Comic Link', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; ?> +

    ? Latest Comic

    + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/latestcomics.php b/widgets/latestcomics.php new file mode 100644 index 0000000..153ba30 --- /dev/null +++ b/widgets/latestcomics.php @@ -0,0 +1,74 @@ + +
      +
    • +

      Latest Comics

      +
        + +
      • + +
      +
    • +
    + 'widget_comicpress_latest_comics', 'description' => 'Display a list of the latest comics available.' ); + $this->WP_Widget('latest_comics', 'Latest Comics', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? 'Latest Comics' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + $latestcomics = get_posts('numberposts=5&category='.get_all_comic_categories_as_cat_string()); ?> +
      + +
    • + +
    + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/latestthumb.php b/widgets/latestthumb.php new file mode 100644 index 0000000..4f25504 --- /dev/null +++ b/widgets/latestthumb.php @@ -0,0 +1,58 @@ + 'widget_comicpress_latest_thumbnail', 'description' => 'Display a thumbnail of the latest comic, clickable to go to the comic post.' ); + $this->WP_Widget('latest_thumbnail', 'Latest Comic', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? 'Latest Comic' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + $latestcomics = get_posts('numberposts=1&category='.get_all_comic_categories_as_cat_string()); + foreach($latestcomics as $post) : ?> +
    + <?php the_title() ?>
    +
    + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/menubar.php b/widgets/menubar.php new file mode 100644 index 0000000..a6bc97b --- /dev/null +++ b/widgets/menubar.php @@ -0,0 +1,115 @@ + + + 'widget_comicpress_menubar', 'description' => 'Displays a menubar.' ); + $this->WP_Widget('comicpress_menubar', 'Comicpress Menubar', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + comicpress_menubar(); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/permalink.php b/widgets/permalink.php new file mode 100644 index 0000000..1522907 --- /dev/null +++ b/widgets/permalink.php @@ -0,0 +1,57 @@ + 'widget_comicpress_permalink', 'description' => 'Displays a permalink.' ); + $this->WP_Widget('permalink', 'Permalink', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? 'Permalink' : apply_filters('widget_title', $instance['title']); ?> + + '' , 'comment' => '') ); + $title = strip_tags($instance['title']); + $comment = strip_tags($instance['comment']); + ?> +

    +

    + + \ No newline at end of file diff --git a/widgets/randomcomic.php b/widgets/randomcomic.php new file mode 100644 index 0000000..306b21a --- /dev/null +++ b/widgets/randomcomic.php @@ -0,0 +1,68 @@ +query('showposts=1&orderby=rand&cat='.get_all_comic_categories_as_cat_string()); + while ($randomComicQuery->have_posts()) : $randomComicQuery->the_post(); + $random_comic_id = get_the_ID(); + endwhile; + wp_redirect( get_permalink( $random_comic_id ) ); + exit; +} + +if ( isset( $_GET['randomcomic'] ) ) + add_action( 'template_redirect', 'random_comic' ); + +class widget_comicpress_random_comic extends WP_Widget { + + function widget_comicpress_random_comic() { + $widget_ops = array('classname' => 'widget_comicpress_random_comic', 'description' => 'Displays a link to click to trigger a random comic.' ); + $this->WP_Widget('random_comic', 'Random Comic', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; ?> +

    ? Random Comic

    + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/randompost.php b/widgets/randompost.php new file mode 100644 index 0000000..41d9f00 --- /dev/null +++ b/widgets/randompost.php @@ -0,0 +1,67 @@ +query('showposts=1&orderby=rand&cat=-'.exclude_comic_categories()); + while ($randomComicQuery->have_posts()) : $randomComicQuery->the_post(); + $random_comic_id = get_the_ID(); + endwhile; + wp_redirect( get_permalink( $random_comic_id ) ); + exit; +} + +if ( isset( $_GET['randompost'] ) ) + add_action( 'template_redirect', 'random_post' ); + +class widget_comicpress_random_post extends WP_Widget { + + function widget_comicpress_random_post() { + $widget_ops = array('classname' => 'widget_comicpress_random_post', 'description' => 'Displays a link to click to trigger a random blog post.' ); + $this->WP_Widget('random_post', 'Random Post', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; ?> +

    ? Random Post

    + '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/scheduledposts.php b/widgets/scheduledposts.php new file mode 100644 index 0000000..a946c00 --- /dev/null +++ b/widgets/scheduledposts.php @@ -0,0 +1,64 @@ + 'widget_comicpress_show_scheduled_posts', 'description' => 'Display a list of posts that are scheduled to be published.' ); + $this->WP_Widget('show_scheduled_posts', 'Scheduled Posts', $widget_ops); + } + + function widget($args, $instance) { + extract($args, EXTR_SKIP); + + echo '
    '; + echo $before_widget; + $title = empty($instance['title']) ? 'Scheduled Posts' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + $scheduled_posts = get_posts('post_status=future&numberposts=-1'); + if (empty($scheduled_posts)) { + echo '
    • None.
    '; + } else { + foreach($scheduled_posts as $post) : ?> +
      +
    • post_title; ?> +
    • +
    + '; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/searchtranscript.php b/widgets/searchtranscript.php new file mode 100644 index 0000000..cf12452 --- /dev/null +++ b/widgets/searchtranscript.php @@ -0,0 +1,53 @@ + 'widget_comicpress_search_transcripts', 'description' => 'Displays a form input box for searching transcripts.' ); + $this->WP_Widget('comicpress_search_transcripts', 'Search Transcripts', $widget_ops); + } + + function widget($args, $instance) { + global $post; + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + include(get_template_directory() . '/searchform-transcript.php'); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); + $title = strip_tags($instance['title']); + ?> +

    + \ No newline at end of file diff --git a/widgets/transcription.php b/widgets/transcription.php new file mode 100644 index 0000000..287e552 --- /dev/null +++ b/widgets/transcription.php @@ -0,0 +1,62 @@ + 'widget_comicpress_show_transcription', 'description' => 'Display the transcription of the current post if there is one.' ); + $this->WP_Widget('transcript', 'Transcript', $widget_ops); + } + + function widget($args, $instance) { + extract($args, EXTR_SKIP); + + echo $before_widget; + $title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']); + $transtype = empty($instance['transtype']) ? 'empty' : apply_filters('widget_transtype', $instance['transtype']); + if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; + the_transcript($transtype); + echo $after_widget; + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + $instance['transtype'] = strip_tags($new_instance['transtype']); + return $instance; + } + + function form($instance) { + $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'transtype' => '' ) ); + $title = strip_tags($instance['title']); + $transtype = strip_tags($instance['transtype']); + if (empty($transtype)) $transtype = 'styled'; + ?> +

    +

    +
    +
    + +

    + \ No newline at end of file diff --git a/wpmu-functions.php b/wpmu-functions.php new file mode 100644 index 0000000..cf44ebe --- /dev/null +++ b/wpmu-functions.php @@ -0,0 +1,52 @@ +post_date); + + $filter_with_date = str_replace('{date}', $post_date, $filter_to_use); + + if (count($results = glob("${folder_to_use}/${filter_with_date}")) > 0) { + $comic = reset($results); + + if ($wpmu_path !== false) { $comic = str_replace($wpmu_path, "files", $comic); } + + return $comic; + } + + $comic_pathfinding_errors[] = sprintf(__("Unable to find the file in the %s folder that matched the pattern %s. Check your WordPress and ComicPress settings.", 'comicpress'), $folder, $filter_with_date); + return false; + } +} +?> \ No newline at end of file