diff options
author | Bertrand Jacquin (Beber) <beber.mailing@gmail.com> | 2006-05-07 23:44:47 +0200 |
---|---|---|
committer | beber <beber@meathook.melee> | 2006-05-07 23:44:47 +0200 |
commit | d9be784dfc304b7d69011c66aa0e18089a28fc96 (patch) | |
tree | 1b40831d00c6687a464309bfe1e7870407174018 /blog/themes/else-lightning | |
parent | add eric website theme as else-default... (diff) | |
download | web-d9be784dfc304b7d69011c66aa0e18089a28fc96.tar.xz |
Move web_site/ to blog/
Diffstat (limited to 'blog/themes/else-lightning')
34 files changed, 1451 insertions, 0 deletions
diff --git a/blog/themes/else-lightning/404.php b/blog/themes/else-lightning/404.php new file mode 100644 index 0000000..2b44e37 --- /dev/null +++ b/blog/themes/else-lightning/404.php @@ -0,0 +1,11 @@ +<?php get_header(); ?> + +<h2><?php _e('Not Found'); ?></h2> + +<p><?php _e('Sorry, but the page you requested cannot be found.'); ?></p> + +<?php include (TEMPLATEPATH . "/searchform.php"); ?> + +<?php get_sidebar(); ?> + +<?php get_footer(); ?>
\ No newline at end of file diff --git a/blog/themes/else-lightning/comments.php b/blog/themes/else-lightning/comments.php new file mode 100644 index 0000000..1b8d25c --- /dev/null +++ b/blog/themes/else-lightning/comments.php @@ -0,0 +1,111 @@ +<?php // Do not delete these lines + if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) + die ('Please do not load this page directly. Thanks!'); + + if (!empty($post->post_password)) { // if there's a password + if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie + ?> + + <p><?php _e("This post is password protected. Enter the password to view comments."); ?><p> + + <?php + return; + } + } + + /* This variable is for alternating comment background, thanks Kubrick */ + $oddcomment = 'alt'; +?> + +<!-- You can start editing here. --> + +<?php if ($comments) : ?> + + <h2 id="comments"> + <?php comments_number(__('Comments'), __('1 Comment'), __('% Comments')); ?> + <?php if ( comments_open() ) : ?> + <a href="#postcomment" title="<?php _e('Jump to the comments form'); ?>">»</a> + <?php endif; ?> + </h2> + + <ol id="commentlist"> + + <?php foreach ($comments as $comment) : ?> + + <li class="comment<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>"> + <p class="commentauthor"><?php comment_author_link() ?> <?php _e('said'); ?>,</p> + <p class="commentmeta"><?php comment_date('F j, Y') ?> <?php _e('at'); ?> <a href="#comment-<?php comment_ID() ?>" title="<?php _e('Permanent link to this comment'); ?>"><?php comment_time() ?></a> <?php edit_comment_link(__("Edit"), ' · ', ''); ?></p> + + <?php comment_text() ?> + </li> + + <?php if ('alt' == $oddcomment) $oddcomment = ''; else $oddcomment = 'alt'; ?> + + <?php endforeach; ?> + + </ol> + +<?php else : // This is displayed if there are no comments so far ?> + + <?php if ('open' == $post-> comment_status) : ?> + <?php /* No comments yet */ ?> + + <?php else : // comments are closed ?> + <?php /* Comments are closed */ ?> + <p><?php _e('Comments are closed.'); ?></p> + + <?php endif; ?> + +<?php endif; ?> + +<?php if ('open' == $post-> comment_status) : ?> + + <h2 id="postcomment"><?php _e('Leave a Comment'); ?></h2> + + <?php if ( get_option('comment_registration') && !$user_ID ) : ?> + + <p><?php _e('You must be'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>"><?php _e('logged in'); ?></a> <?php _e('to post a comment.'); ?></p> + + <?php else : ?> + + <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> + + <?php if ( $user_ID ) : ?> + + <p><?php _e('Logged in as'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Logout'); ?> »</a></p> + + <?php else : ?> + + <p> + <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="30" tabindex="1" /> + <label for="author"><?php _e('Name'); ?> <?php if ($req) _e('(required)'); ?></label> + </p> + + <p> + <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="30" tabindex="2" /> + <label for="email"><?php _e('E-mail'); ?> <?php if ($req) _e('(required)'); ?></label> + </p> + + <p> + <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="30" tabindex="3" /> + <label for="url"><abbr title="<?php _e('Uniform Resource Identifier'); ?>"><?php _e('URI'); ?></abbr></label> + </p> + + <?php endif; ?> + + <p> + <textarea name="comment" id="comment" cols="70" rows="10" tabindex="4"></textarea> + </p> + + <p> + <input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment'); ?>" /> + <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /> + </p> + + <?php do_action('comment_form', $post->ID); ?> + + </form> + + <?php endif; // If registration required and not logged in ?> + +<?php endif; // if you delete this the sky will fall on your head ?> diff --git a/blog/themes/else-lightning/footer.php b/blog/themes/else-lightning/footer.php new file mode 100644 index 0000000..5e4c715 --- /dev/null +++ b/blog/themes/else-lightning/footer.php @@ -0,0 +1,12 @@ +<div id="footer"> +<!--<p> +<?php /*_e('Design by'); ?> <a href="http://else-team.org" title="<?php _e('Theme designed by'); */?> ELSE">ELSE</a> +</p>--> +</div> + +</div> + +<?php do_action('wp_footer'); ?> + +</body> +</html> diff --git a/blog/themes/else-lightning/functions.php b/blog/themes/else-lightning/functions.php new file mode 100644 index 0000000..aa86a5f --- /dev/null +++ b/blog/themes/else-lightning/functions.php @@ -0,0 +1,47 @@ +<?php
+
+if ( function_exists('register_sidebar') )
+ register_sidebar(array(
+ 'before_widget' => '<li id="%1$s" class="widget %2$s"><div>',
+ 'after_widget' => "</div></li>\n",
+ 'before_title' => '<h2>',
+ 'after_title' => "</h2>\n",
+ ));
+
+include(dirname(__FILE__).'/themetoolkit.php');
+
+themetoolkit(
+ 'else',
+ array(
+ 'sidebar' => 'Sidebar transparency {radio|transparent|Transparent|opaque|Opaque}',
+ ),
+ __FILE__
+);
+
+function else_sidebar() {
+ global $else;
+ if ($else->option['sidebar'] == "opaque") {
+ echo '#sidebar ul {
+ background: url('; bloginfo('template_directory'); echo '/images/sidebar2b.gif) repeat-y;
+ }
+ #sidebar ul li {
+ background: url('; bloginfo('template_directory'); echo '/images/sidebar-bottomb.gif) no-repeat bottom left;
+ }
+ #sidebar h2 {
+ background: url('; bloginfo('template_directory'); echo '/images/sidebar-topb.gif) no-repeat;
+ }
+ #sidebar #search p, .widget_search div div {
+ background: url('; bloginfo('template_directory'); echo '/images/sidebar-top.gif) no-repeat;
+ }
+ #calendar div {
+ background: url('; bloginfo('template_directory'); echo '/images/sidebar-top.gif) no-repeat;
+ }';
+ }
+}
+
+if (!$else->is_installed()) {
+ $set_defaults['sidebar'] = 'transparent';
+ $result = $else->store_options($set_defaults);
+}
+
+?>
diff --git a/blog/themes/else-lightning/gpl.txt b/blog/themes/else-lightning/gpl.txt new file mode 100644 index 0000000..b860267 --- /dev/null +++ b/blog/themes/else-lightning/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 2 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, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/blog/themes/else-lightning/header.php b/blog/themes/else-lightning/header.php new file mode 100644 index 0000000..00a8663 --- /dev/null +++ b/blog/themes/else-lightning/header.php @@ -0,0 +1,30 @@ +<?php include_once(dirname(__FILE__) . '/functions.php'); ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head profile="http://gmpg.org/xfn/11"> + <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" /> + <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please --> + <title><?php bloginfo('name'); ?><?php wp_title(); ?></title> + <style type="text/css" media="screen"> + @import url( <?php bloginfo('stylesheet_url'); ?> ); + <?php else_sidebar(); ?> + </style> + <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" /> + <link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" /> + <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" /> + <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> + <?php wp_get_archives('type=monthly&format=link'); ?> + <?php wp_head(); ?> +</head> + +<body> + +<div id="wrapper"> + +<div id="header"> +<!--<h1><a href="<?php/* bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1> +<p><?php bloginfo('description'); */?></p>--> +</div> + +<div id="content"> diff --git a/blog/themes/else-lightning/images/bg.gif b/blog/themes/else-lightning/images/bg.gif Binary files differnew file mode 100644 index 0000000..3dea2e8 --- /dev/null +++ b/blog/themes/else-lightning/images/bg.gif diff --git a/blog/themes/else-lightning/images/bullet.gif b/blog/themes/else-lightning/images/bullet.gif Binary files differnew file mode 100644 index 0000000..ab05d8a --- /dev/null +++ b/blog/themes/else-lightning/images/bullet.gif diff --git a/blog/themes/else-lightning/images/comment.gif b/blog/themes/else-lightning/images/comment.gif Binary files differnew file mode 100644 index 0000000..14e75f4 --- /dev/null +++ b/blog/themes/else-lightning/images/comment.gif diff --git a/blog/themes/else-lightning/images/commentalt.gif b/blog/themes/else-lightning/images/commentalt.gif Binary files differnew file mode 100644 index 0000000..36cf01a --- /dev/null +++ b/blog/themes/else-lightning/images/commentalt.gif diff --git a/blog/themes/else-lightning/images/comments.gif b/blog/themes/else-lightning/images/comments.gif Binary files differnew file mode 100644 index 0000000..204a250 --- /dev/null +++ b/blog/themes/else-lightning/images/comments.gif diff --git a/blog/themes/else-lightning/images/content.gif b/blog/themes/else-lightning/images/content.gif Binary files differnew file mode 100644 index 0000000..f490316 --- /dev/null +++ b/blog/themes/else-lightning/images/content.gif diff --git a/blog/themes/else-lightning/images/deco.gif b/blog/themes/else-lightning/images/deco.gif Binary files differnew file mode 100644 index 0000000..cd6c82e --- /dev/null +++ b/blog/themes/else-lightning/images/deco.gif diff --git a/blog/themes/else-lightning/images/footer.gif b/blog/themes/else-lightning/images/footer.gif Binary files differnew file mode 100644 index 0000000..28f6367 --- /dev/null +++ b/blog/themes/else-lightning/images/footer.gif diff --git a/blog/themes/else-lightning/images/footer.png b/blog/themes/else-lightning/images/footer.png Binary files differnew file mode 100644 index 0000000..abd14a2 --- /dev/null +++ b/blog/themes/else-lightning/images/footer.png diff --git a/blog/themes/else-lightning/images/header.gif b/blog/themes/else-lightning/images/header.gif Binary files differnew file mode 100644 index 0000000..fb52f2d --- /dev/null +++ b/blog/themes/else-lightning/images/header.gif diff --git a/blog/themes/else-lightning/images/perma.gif b/blog/themes/else-lightning/images/perma.gif Binary files differnew file mode 100644 index 0000000..5b29b06 --- /dev/null +++ b/blog/themes/else-lightning/images/perma.gif diff --git a/blog/themes/else-lightning/images/sidebar-bottom.gif b/blog/themes/else-lightning/images/sidebar-bottom.gif Binary files differnew file mode 100644 index 0000000..8b50f2f --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar-bottom.gif diff --git a/blog/themes/else-lightning/images/sidebar-bottomb.gif b/blog/themes/else-lightning/images/sidebar-bottomb.gif Binary files differnew file mode 100644 index 0000000..ba03ed0 --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar-bottomb.gif diff --git a/blog/themes/else-lightning/images/sidebar-top.gif b/blog/themes/else-lightning/images/sidebar-top.gif Binary files differnew file mode 100644 index 0000000..620b92a --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar-top.gif diff --git a/blog/themes/else-lightning/images/sidebar-topb.gif b/blog/themes/else-lightning/images/sidebar-topb.gif Binary files differnew file mode 100644 index 0000000..bdfb377 --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar-topb.gif diff --git a/blog/themes/else-lightning/images/sidebar.gif b/blog/themes/else-lightning/images/sidebar.gif Binary files differnew file mode 100644 index 0000000..fde5391 --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar.gif diff --git a/blog/themes/else-lightning/images/sidebar2-else.png b/blog/themes/else-lightning/images/sidebar2-else.png Binary files differnew file mode 100644 index 0000000..850a777 --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar2-else.png diff --git a/blog/themes/else-lightning/images/sidebar2.gif b/blog/themes/else-lightning/images/sidebar2.gif Binary files differnew file mode 100644 index 0000000..b8eaa8e --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar2.gif diff --git a/blog/themes/else-lightning/images/sidebar2b.gif b/blog/themes/else-lightning/images/sidebar2b.gif Binary files differnew file mode 100644 index 0000000..df5fc4c --- /dev/null +++ b/blog/themes/else-lightning/images/sidebar2b.gif diff --git a/blog/themes/else-lightning/images/wrapper.gif b/blog/themes/else-lightning/images/wrapper.gif Binary files differnew file mode 100644 index 0000000..3f64657 --- /dev/null +++ b/blog/themes/else-lightning/images/wrapper.gif diff --git a/blog/themes/else-lightning/index.php b/blog/themes/else-lightning/index.php new file mode 100644 index 0000000..ddd5dbe --- /dev/null +++ b/blog/themes/else-lightning/index.php @@ -0,0 +1,51 @@ +<?php get_header(); ?> + + <?php if (have_posts()) : ?> + + <?php while (have_posts()) : the_post(); ?> + + <div class="post"> + + <?php the_date('m.d.y', '<h1 class="storydate">', '</h1>'); ?> + <h2 id="post-<?php the_ID(); ?>" class="storytitle"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>"><?php the_title(); ?></a></h2> + <p class="meta"><?php _e('Posted in'); ?> <?php the_category(', ') ?> <?php _e('at'); ?> <?php the_time(); ?> <?php _e('by'); ?> <?php the_author(); ?></p> + + <?php if (is_search()) { ?> + <?php the_excerpt() ?> + <?php } else { ?> + <?php the_content(__('Read the rest of this entry »')); ?> + <?php } ?> + + <p class="feedback"> + <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>" class="permalink"><?php _e('Permalink'); ?></a> + <?php comments_popup_link(__('Comments'), __('1 Comment'), __('% Comments'), 'commentslink', __('Comments off')); ?> + <?php edit_post_link(__('Edit'), ' · ', ''); ?> + </p> + + <!-- + <?php trackback_rdf(); ?> + --> + + </div> + + <?php endwhile; ?> + + <p> + <?php posts_nav_link('', __(''), __('« Previous entries')); ?> + <?php posts_nav_link(' · ', __(''), __('')); ?> + <?php posts_nav_link('', __('Next entries »'), __('')); ?> + </p> + + <?php else : ?> + + <h2><?php _e('Not Found'); ?></h2> + + <p><?php _e('Sorry, but no posts matched your criteria.'); ?></p> + + <?php include (TEMPLATEPATH . "/searchform.php"); ?> + + <?php endif; ?> + +<?php get_sidebar(); ?> + +<?php get_footer(); ?> diff --git a/blog/themes/else-lightning/page.php b/blog/themes/else-lightning/page.php new file mode 100644 index 0000000..0a18190 --- /dev/null +++ b/blog/themes/else-lightning/page.php @@ -0,0 +1,16 @@ +<?php get_header(); ?> + + <?php if (have_posts()) : while (have_posts()) : the_post(); ?> + + <h2 id="post-<?php the_ID(); ?>"><?php the_title(); ?></h2> + + <?php the_content(__('Read the rest of this page »')); ?> + <?php wp_link_pages(); ?> + + <?php edit_post_link(__('Edit'), '<p>', '</p>'); ?> + + <?php endwhile; endif; ?> + +<?php get_sidebar(); ?> + +<?php get_footer(); ?> diff --git a/blog/themes/else-lightning/screenshot.png b/blog/themes/else-lightning/screenshot.png Binary files differnew file mode 100644 index 0000000..e2572be --- /dev/null +++ b/blog/themes/else-lightning/screenshot.png diff --git a/blog/themes/else-lightning/searchform.php b/blog/themes/else-lightning/searchform.php new file mode 100644 index 0000000..2ad29fb --- /dev/null +++ b/blog/themes/else-lightning/searchform.php @@ -0,0 +1,6 @@ +<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>"> +<p> +<input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" /><br /> +<input type="submit" id="searchsubmit" value="<?php _e('Search'); ?>" /> +</p> +</form>
\ No newline at end of file diff --git a/blog/themes/else-lightning/sidebar.php b/blog/themes/else-lightning/sidebar.php new file mode 100644 index 0000000..9883d2c --- /dev/null +++ b/blog/themes/else-lightning/sidebar.php @@ -0,0 +1,56 @@ +</div> + +<div id="sidebar"> +<ul> +<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?> + + <li id="search"> + <?php include (TEMPLATEPATH . '/searchform.php'); ?> + </li> + + <?php wp_list_pages('title_li=<h2>' . __('Pages') . '</h2>' ); ?> + + <li id="archives"> + <h2><?php _e('Archives'); ?></h2> + <ul> + <?php wp_get_archives('type=monthly'); ?> + </ul> + </li> + + <?php /* Uncomment this to display the calendar */?> + <li id="calendar"><div> + <?php get_calendar(); ?> + </div></li> + + + <li id="categories"> + <h2><?php _e('Categories'); ?></h2> + <ul> + <?php wp_list_cats(); ?> + </ul> + </li> + + <?php if (function_exists('wp_theme_switcher')) { ?> + <li> + <h2><?php _e('Themes'); ?></h2> + <?php wp_theme_switcher(); ?> + </li> + <?php } ?> + + <?php if (is_home()) { get_links_list(); } ?> + + <li id="meta"> + <h2><?php _e('Meta'); ?></h2> + <ul> + <?php wp_register(); ?> + <li><?php wp_loginout(); ?></li> + <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php _e('Syndicate this site using RSS'); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li> + <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php _e('The latest comments to all posts in RSS'); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li> + <li><a href="http://wordpress.org" title="<?php _e('Powered by Wordpress, state-of-the-art semantic personal publishing platform.'); ?>">Wordpress</a></li> + <?php wp_meta(); ?> + </ul> + </li> + +<?php endif; ?> +</ul> +</div> diff --git a/blog/themes/else-lightning/single.php b/blog/themes/else-lightning/single.php new file mode 100644 index 0000000..27954c3 --- /dev/null +++ b/blog/themes/else-lightning/single.php @@ -0,0 +1,34 @@ +<?php get_header(); ?> + + <?php if (have_posts()) : while (have_posts()) : the_post(); ?> + + <div class="post"> + + <?php the_date('m.d.y', '<h1 class="storydate">', '</h1>'); ?> + <h2 id="post-<?php the_ID(); ?>" class="storytitle"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>"><?php the_title(); ?></a></h2> + <p class="meta"><?php _e('Posted in'); ?> <?php the_category(', ') ?> <?php _e('at'); ?> <?php the_time(); ?> <?php _e('by'); ?> <?php the_author(); ?></p> + + <?php the_content(__('Read the rest of this entry »')); ?> + <?php wp_link_pages(); ?> + + <p class="feedback"> + <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to'); ?> <?php the_title(); ?>" class="permalink"><?php _e('Permalink'); ?></a> + <?php edit_post_link(__('Edit'), ' · ', ''); ?> + </p> + + </div> + + <?php comments_template(); ?> + + <?php endwhile; else: ?> + + <h2><?php _e('Not Found'); ?></h2> + <p><?php _e('Sorry, but the page you requested cannot be found.'); ?></p> + <?php include (TEMPLATEPATH . "/searchform.php"); ?> + + <?php endif; ?> + +<?php get_sidebar(); ?> + +<?php get_footer(); ?> + diff --git a/blog/themes/else-lightning/style.css b/blog/themes/else-lightning/style.css new file mode 100644 index 0000000..fc7de31 --- /dev/null +++ b/blog/themes/else-lightning/style.css @@ -0,0 +1,348 @@ +/* +Theme Name: Else Team +Theme URI: http://beccary.com/goodies/wordpress-themes/ +Description: The Else team web site theme. +Version: 0.1 +Author: Else +Author URI: http://else-team.org +*/ + +/* Basics */ + +body { + margin: 0; + padding: 0; + /*background: #E6EEEE url(images/bg.gif) repeat-x;*/ + color: #333; + font-size: 78%; + font-family: "Lucida Sans Unicode", Tahoma, Geneva, sans-serif; + text-align: center; +} +p { + font-size: 1em; + line-height: 1.5em; + margin: 1.2em 0; +} +ol, ul { + font-size: 1em; + line-height: 1.5em; + margin: 1.2em 0 1.2em 2em; + padding: 0; +} +h1, h2, h3, h4, h5, h6 { + margin: 1.2em 0; + font-family: Georgia, serif; + color: #534B48; +} +h1, h2 { + font-size: 1.4em; +} +h3 { + font-size: 1.3em; +} +h4 { + font-size: 1.2em; +} +h5 { + font-size: 1.1em; +} +h6 { + font-size: 1em; +} +a:link { + color: #59708C; +} +a:visited { + color: #5C6C7D; +} +a:hover, a:active { + color: #8CA0B4; + text-decoration: none; +} +blockquote { + margin: 0 20px; + padding: 0.05em 20px; + border-top: 1px solid #CCC; + border-bottom: 1px solid #CCC; + background: url(images/commentalt.gif) repeat-y; + font-size: 0.9em; +} +code { + color: #666; +} +input, textarea, select { + background-color: #FFF; + color: #333; + font-size: 1em; + font-family: "Lucida Sans Unicode", Tahoma, Geneva, sans-serif; +} +form, img { + border: 0; + margin: 0; + padding: 0; +} + +/* Layout */ + +#wrapper { + margin-left: auto; + margin-right: auto; + width: 800px; + /*background: #FFF url(images/wrapper.gif) repeat-y;*/ + text-align: left; +} +#header { + width: 800px; + height: 132px; + background: url(images/header.gif) no-repeat; +} + + /* Header styles */ + #header h1 { + margin: 0; + padding: 35px 0 0 40px; + font-size: 2em; + line-height: 40px; + } + #header h1 a { + text-decoration: none; + } + #header p { + margin: 0; + padding: 5px 0 0 40px; + } + +#content { + float: right; + margin-top: -12px; + padding: 0 10px 0 40px; + width: 520px; + min-height: 268px; + /*background: url(images/content.gif) no-repeat;*/ + overflow: visible; + voice-family: "\"}\""; + voice-family: inherit; + width: 470px; +} +html>body #content { + width: 470px; +} +#sidebar { + float: left; + width: 240px; + background: url(images/sidebar.gif) no-repeat top right; + font-size: 0.9em; +} + + /* Sidebar styles */ + #sidebar ul { + margin: 0; + padding: 0; + list-style-type: none; + background: url(images/sidebar2-else.png) repeat-y; + } + #sidebar ul li { + margin: 0; + padding: 0 0 1.5em 0; + background: url(images/sidebar-bottom.gif) no-repeat bottom left; + overflow: visible; + } + #sidebar h2 { + margin: 0; + padding: 1.2em 40px 0 20px; + font-size: 1.1em; + background: url(images/sidebar-top.gif) no-repeat; + } + /* Fix our list and paragraph styles */ + #sidebar p, #sidebar ul ul, #sidebar ul ol { + margin: 1em 0 0 0; + padding: 0 40px 0 20px; + } + #sidebar ul ol { + margin: 1em 0 0 20px; + } + #sidebar ul ol li { + padding: 0; + background: url(images/bullet.gif) no-repeat 2000px 0; + /* IE goes buggy with background: none; */ + } + #sidebar ul ul { + background: none; + } + #sidebar ul ul ul { + margin: 0; + padding: 0 0 0 0.8em; + background: none; + } + #sidebar ul ul li { + padding: 0 0 0 1.5em; + background: url(images/bullet.gif) no-repeat 0 0.2em; + } + +* html #content, * html #sidebar { + overflow: hidden; /* For IE */ +} +#footer { + clear: both; + width: 800px; + height: 40px; + padding: 0px 4px 0 4px; + background: url(images/footer.png) no-repeat; +} + + /* Footer styles */ + #footer p { + margin: 0; + padding: 0.5em 20px; + background-color: #999; + font-size: 0.9em; + } + #footer a:hover, #footer a:active { + color: #5C6C7D; + text-decoration: none; + } + +/* Blog */ + +.pagetitle { + margin: 1.2em 0 0 0; +} +.post { + padding: 1.2em 0 0 0; +} +.storydate { + float: left; + margin: 0 0.5em 0 0; + padding: 0 0.5em 0 0; + border-right: 1px solid #CCC; + font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Geneva, sans-serif; + font-weight: normal; + color: #999; +} +.storytitle { + float: left; + margin: 0; +} +.meta { + margin: 0; + padding: 0.5em 0 0 3em; +} +.feedback { + padding: 0 0 0 3em; +} +.meta, .feedback { + clear: both; + font-size: 0.9em; + color: #999; + background: url(images/deco.gif) no-repeat bottom left; +} +.permalink { + margin: 0 1.5em 0 0; + padding: 0 0 0 1.2em; + background: url(images/perma.gif) no-repeat center left; +} +.commentslink { + padding: 0 0 0 1.5em; + background: url(images/comments.gif) no-repeat center left; +} +.storytitle a, .meta a, .feedback a, .commentauthor a, .commentmeta a, #comments a { + text-decoration: none; +} + +/* Comments */ + +#commentlist { + margin: 1.2em 0; + padding: 0; + list-style-type: none; +} +#commentlist li { + margin: 1em 0; + padding: 0 20px; + border-top: 1px solid #CCC; + border-bottom: 1px solid #CCC; + background: url(images/comment.gif) repeat-y; +} +.commentalt { + background: url(images/commentalt.gif) repeat-y !important; +} +.commentauthor { + margin: 1em 0 0 0; +} +.commentauthor a { + font-weight: bold; +} +.commentmeta { + margin-top: 0; + font-size: 0.9em; +} +#comment { + width: 98%; +} + +/* Widgets and Etc */ + +#sidebar #search p, .widget_search div div { + margin: 0 0 0.3em 0; + padding: 2em 0 0 20px; + background: url(images/sidebar-top.gif) no-repeat; +} +#s { + margin-bottom: 2px; + width: 175px; +} + +/* Calendar */ + +#calendar div { + padding: 0 40px 0 20px; + background: url(images/sidebar-top.gif) no-repeat; +} +#wp-calendar { + margin: 0; + width: 180px; + border: 1px solid #CCC; + background: #F4F4F4; + line-height: 1.2em; + text-align: center; + voice-family: "\"}\""; + voice-family: inherit; + width: 178px; +} +html>body #wp-calendar { + width: 178px; +} +#wp-calendar caption { + margin: 0; + padding: 1.4em 0 0.6em 0; + color: #534B48; + font-size: 1.1em; + font-family: Georgia, serif; + font-weight: bold; + text-align: left; +} +#wp-calendar td { + margin: 2px; + background: #FFF; +} +#wp-calendar td a { + display: block; + width: 100%; +} +#wp-calendar td.pad { + background: transparent; +} +#wp-calendar td#next, #wp-calendar td#prev { + padding: 0.1em 2px; + background: transparent; +} +#wp-calendar td#next a, #wp-calendar td#prev a { + display: inline; +} +#wp-calendar td#next { + text-align: right; +} +#wp-calendar td#prev { + text-align: left; +} + diff --git a/blog/themes/else-lightning/themetoolkit.php b/blog/themes/else-lightning/themetoolkit.php new file mode 100644 index 0000000..a2bf31d --- /dev/null +++ b/blog/themes/else-lightning/themetoolkit.php @@ -0,0 +1,389 @@ +<?php
+/*
+Hack Name: Wordpress Theme Toolkit
+Plugin URI: http://frenchfragfactory.net/ozh/my-projects/wordpress-theme-toolkit-admin-menu/
+Description: Helps theme authors set up an admin menu. Helps theme users customise the theme.
+Version: 1.12
+Author: Ozh
+Author URI: http://planetOzh.com/
+*/
+
+/************************************************************************************
+* DO NOT MODIFY THIS FILE !
+************************************************************************************/
+
+/* RELEASE HISTORY :
+* 1.0 : initial release
+* 1.1 : update for Wordpress 2.0 compatibility
+* 1.11 : added {separator} template
+* 1.12 : more or less minor bug fixing (one when no plugin activated, other with rare mod_security issue) and better compliancy with WP 2.0 roles
+*/
+
+if (!function_exists('themetoolkit')) {
+ function themetoolkit($theme='',$array='',$file='') {
+ global ${$theme};
+ if ($theme == '' or $array == '' or $file == '') {
+ die ('No theme name, theme option, or parent defined in Theme Toolkit');
+ }
+ ${$theme} = new ThemeToolkit($theme,$array,$file);
+ }
+}
+
+if (!class_exists('ThemeToolkit')) {
+ class ThemeToolkit{
+
+ var $option, $infos;
+
+ function ThemeToolkit($theme,$array,$file){
+
+ global $wp_version;
+ // is it WP 2.0+ and do we have plugins like "../themes/foo/functions.php" running ?
+ if ( $wp_version >= 2 and count(@preg_grep('#^\.\./themes/[^/]+/functions.php$#', get_settings('active_plugins'))) > 0 ) {
+ wp_cache_flush();
+ $this->upgrade_toolkit();
+ }
+
+ $this->infos['path'] = '../themes/' . basename(dirname($file));
+
+ /* Create some vars needed if an admin menu is to be printed */
+ if ($array['debug']) {
+ if ((basename($file)) == $_GET['page']) $this->infos['debug'] = 1;
+ unset($array['debug']);
+ }
+ if ((basename($file)) == $_GET['page']){
+ $this->infos['menu_options'] = $array;
+ $this->infos['classname'] = $theme;
+ }
+ $this->option=array();
+
+ /* Check this file is registered as a plugin, do it if needed */
+ $this->pluginification();
+
+ /* Get infos about the theme and particularly its 'shortname'
+ * which is used to name the entry in wp_options where data are stored */
+ $this->do_init();
+
+ /* Read data from options table */
+ $this->read_options();
+
+ /* Are we in the admin area ? Add a menu then ! */
+ $this->file = $file;
+ add_action('admin_menu', array(&$this, 'add_menu'));
+ }
+
+
+ /* Add an entry to the admin menu area */
+ function add_menu() {
+ global $wp_version;
+ if ( $wp_version >= 2 ) {
+ $level = 'edit_themes';
+ } else {
+ $level = 9;
+ }
+ //add_submenu_page('themes.php', 'Configure ' . $this->infos[theme_name], $this->infos[theme_name], 9, $this->infos['path'] . '/functions.php', array(&$this,'admin_menu'));
+ add_theme_page('Configure ' . $this->infos['theme_name'], $this->infos['theme_name'], 'edit_themes', basename($this->file), array(&$this,'admin_menu'));
+ /* Thank you MCincubus for opening my eyes on the last parameter :) */
+ }
+
+ /* Get infos about this theme */
+ function do_init() {
+ $themes = get_themes();
+ $shouldbe= basename($this->infos['path']);
+ foreach ($themes as $theme) {
+ $current= basename($theme['Template Dir']);
+ if ($current == $shouldbe) {
+ if (get_settings('template') == $current) {
+ $this->infos['active'] = TRUE;
+ } else {
+ $this->infos['active'] = FALSE;
+ }
+ $this->infos['theme_name'] = $theme['Name'];
+ $this->infos['theme_shortname'] = $current;
+ $this->infos['theme_site'] = $theme['Title'];
+ $this->infos['theme_version'] = $theme['Version'];
+ $this->infos['theme_author'] = preg_replace("#>\s*([^<]*)</a>#", ">\\1</a>", $theme['Author']);
+ }
+ }
+ }
+
+ /* Read theme options as defined by user and populate the array $this->option */
+ function read_options() {
+ $options = get_option('theme-'.$this->infos['theme_shortname'].'-options');
+ $options['_________junk-entry________'] = 'ozh is my god';
+ foreach ($options as $key=>$val) {
+ $this->option["$key"] = stripslashes($val);
+ }
+ array_pop($this->option);
+ return $this->option;
+ /* Curious about this "junk-entry" ? :) A few explanations then.
+ * The problem is that get_option always return an array, even if
+ * no settings has been previously saved in table wp_options. This
+ * junk entry is here to populate the array with at least one value,
+ * removed afterwards, so that the foreach loop doesn't go moo. */
+ }
+
+ /* Write theme options as defined by user in database */
+ function store_options($array) {
+ update_option('theme-'.$this->infos['theme_shortname'].'-options','');
+ if (update_option('theme-'.$this->infos['theme_shortname'].'-options',$array)) {
+ return "Options successfully stored";
+ } else {
+ return "Could not save options !";
+ }
+ }
+
+ /* Delete options from database */
+ function delete_options() {
+ /* Remove entry from database */
+ delete_option('theme-'.$this->infos['theme_shortname'].'-options');
+ /* Unregister this file as a plugin (therefore remove the admin menu) */
+ $this->depluginification();
+ /* Revert theme back to Kubrick if this theme was activated */
+ if ($this->infos['active']) {
+ update_option('template', 'default');
+ update_option('stylesheet', 'default');
+ do_action('switch_theme', 'Default');
+ }
+ /* Go back to Theme admin */
+ print '<meta http-equiv="refresh" content="0;URL=themes.php?activated=true">';
+ echo "<script> self.location(\"themes.php?activated=true\");</script>";
+ exit;
+ }
+
+ /* Check if the theme has been loaded at least once (so that this file has been registered as a plugin) */
+ function is_installed() {
+ global $wpdb;
+ $where = 'theme-'.$this->infos['theme_shortname'].'-options';
+ $check = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->options WHERE option_name = '$where'");
+ if ($check == 0) {
+ return FALSE;
+ } else {
+ return TRUE;
+ }
+ }
+
+ /* Theme used for the first time (create blank entry in database) */
+ function do_firstinit() {
+ global $wpdb;
+ $options = array();
+ foreach(array_keys($this->option) as $key) {
+ $options["$key"]='';
+ }
+ add_option('theme-'.$this->infos['theme_shortname'].'-options',$options, 'Options for theme '.$this->infos['theme_name']);
+ return "Theme options added in database (1 entry in table '". $wpdb->options ."')";
+ }
+
+ /* The mother of them all : the Admin Menu printing func */
+ function admin_menu () {
+ global $cache_settings, $wpdb;
+
+ /* Process things when things are to be processed */
+ if (@$_POST['action'] == 'store_option') {
+ unset($_POST['action']);
+ $msg = $this->store_options($_POST);
+ } elseif (@$_POST['action'] == 'delete_options') {
+ $this->delete_options();
+ } elseif (!$this->is_installed()) {
+ $msg = $this->do_firstinit();
+ }
+
+ if (@$msg) print "<div class='updated'><p><b>" . $msg . "</b></p></div>\n";
+
+ echo '<div class="wrap"><h2>Thank you !</h2>';
+ echo '<p>Thank you for installing ' . $this->infos['theme_site'] . ', a theme for Wordpress. This theme was made by '.$this->infos['theme_author'].'. </p>';
+
+ if (!$this->infos['active']) { /* theme is not active */
+ echo '<p>(Please note that this theme is currently <strong>not activated</strong> on your site as the default theme.)</p>';
+ }
+
+ $cache_settings = '';
+ $check = $this->read_options();
+
+ echo "<h2>Configure ${$this->infos['theme_name']} </h2>";
+ echo '<p>This theme allows you to configure some variables to suit your blog, which are :</p>
+ <form action="" method="post">
+ <input type="hidden" name="action" value="store_option">
+ <table cellspacing="2" cellpadding="5" border="0" width=100% class="editform">';
+
+ /* Print form, here comes the fun part :) */
+ foreach ($this->infos['menu_options'] as $key=>$val) {
+ $items='';
+ preg_match('/\s*([^{#]*)\s*({([^}]*)})*\s*([#]*\s*(.*))/', $val, $matches);
+ if ($matches[3]) {
+ $items = split("\|", $matches[3]);
+ }
+
+ print "<tr valign='top'><th scope='row' width='33%'>\n";
+ if (@$items) {
+ $type = array_shift($items);
+ switch ($type) {
+ case 'separator':
+ print '<h3>'.$matches[1]."</h3></th>\n<td> </td>";
+ break;
+ case 'radio':
+ print $matches[1]."</th>\n<td>";
+ while ($items) {
+ $v=array_shift($items);
+ $t=array_shift($items);
+ $checked='';
+ if ($v == $this->option[$key]) $checked='checked';
+ print "<label for='${key}${v}'><input type='radio' id='${key}${v}' name='$key' value='$v' $checked /> $t</label>";
+ if (@$items) print "<br />\n";
+ }
+ break;
+ case 'textarea':
+ $rows=array_shift($items);
+ $cols=array_shift($items);
+ print "<label for='$key'>".$matches[1]."</label></th>\n<td>";
+ print "<textarea name='$key' id='$key' rows='$rows' cols='$cols'>" . $this->option[$key] . "</textarea>";
+ break;
+ case 'checkbox':
+ print $matches[1]."</th>\n<td>";
+ while ($items) {
+ $k=array_shift($items);
+ $v=array_shift($items);
+ $t=array_shift($items);
+ $checked='';
+ if ($v == $this->option[$k]) $checked='checked';
+ print "<label for='${k}${v}'><input type='checkbox' id='${k}${v}' name='$k' value='$v' $checked /> $t</label>";
+ if (@$items) print "<br />\n";
+ }
+ break;
+ }
+ } else {
+ print "<label for='$key'>".$matches[1]."</label></th>\n<td>";
+ print "<input type='text' name='$key' id='$key' value='" . $this->option[$key] . "' />";
+ }
+
+ if ($matches[5]) print '<br/>'. $matches[5];
+ print "</td></tr>\n";
+ }
+ echo '</table>
+ <p class="submit"><input type="submit" value="Store Options" /></p>
+ </form>';
+
+ if ($this->infos['debug'] and $this->option) {
+ $g = '<span style="color:#006600">';
+ $b = '<span style="color:#0000CC">';
+ $o = '<span style="color:#FF9900">';
+ $r = '<span style="color:#CC0000">';
+ echo '<h2>Programmer\'s corner</h2>';
+ echo '<p>The array <em>$'. $this->infos['classname'] . '->option</em> is actually populated with the following keys and values :</p>
+ <p><pre class="updated">';
+ $count = 0;
+ foreach ($this->option as $key=>$val) {
+ $val=str_replace('<','<',$val);
+ if ($val) {
+ print '<span class="ttkline">'.$g.'$'.$this->infos['classname'].'</span>'.$b.'-></span>'.$g.'option</span>'.$b.'[</span>'.$g.'\'</span>'.$r.$key.'</span>'.$g.'\'</span>'.$b.']</span>'.$g.' = "</span>'. $o.$val.'</span>'.$g."\"</span></span>\n";
+ $count++;
+ }
+ }
+ if (!$count) print "\n\n";
+ echo '</pre><p>To disable this report (for example before packaging your theme and making it available for download), remove the line " <em>\'debug\' => \'debug\'</em> " in the array you edited at the beginning of this file.</p>';
+ }
+
+ echo '<h2>Delete Theme options</h2>
+ <p>To completely remove these theme options from your database (reminder: they are all stored in a single entry, in Wordpress options table <em>'. $wpdb->options. '</em>), click on
+ the following button. You will be then redirected to the <a href="themes.php">Themes admin interface</a>';
+ if ($this->infos['active']) {
+ echo ' and the Default theme will have been activated';
+ }
+ echo '.</p>
+ <p><strong>Special notice for people allowing their readers to change theme</strong> (i.e. using a Theme Switcher on their blog)<br/>
+ Unless you really remove the theme files from your server, this theme will still be available to users, and therefore will self-install again as soon as someone selects it. Also, all custom variables as defined in the above menu will be blank, this could lead to unexpected behaviour.
+ Press "Delete" only if you intend to remove the theme files right after this.</p>
+ <form action="" method="post">
+ <input type="hidden" name="action" value="delete_options">
+ <p class="submit"><input type="submit" value="Delete Options" onclick="return confirm(\'Are you really sure you want to delete ?\');"/></p>
+ </form>';
+
+ ob_start(array(&$this,'footercut'));
+
+ echo '<h2>Credits</h2>';
+ echo '<p>'.$this->infos['theme_site'].' has been created by '.$this->infos['theme_author'].'. ';
+ echo 'This administration menu uses <a href="http://frenchfragfactory.net/ozh/my-projects/wordpress-theme-toolkit-admin-menu/" title="Wordpress Theme Toolkit : create a admin menu for your own theme as easily as editing 3 lines">Wordpress Theme Toolkit</a> by <a href="http://frenchfragfactory.net/ozh/" title="planetOzh">Ozh</a>. And everything was made possible thanks to <a href="http://wordpress.org/" title="Best. Blogware. Ever.">Wordpress</a>.</p>
+ </div>
+ <div id="footer"><div style="float:right;margin-left:-180px;padding-right:5%"><p><a href="http://frenchfragfactory.net/ozh/my-projects/wordpress-theme-toolkit-admin-menu/">Theme Toolkit</a> by<br />
+ <a href="http://planetOzh.com/"><img src="http://frenchfragfactory.net/ozh/wp-images/btn_planetozh.png" border="0" alt="planetOzh.com" /></a><br />';
+ echo 'for '.$this->infos['theme_site']."</p></div>\n";
+ echo '</div><!-- footercut -->';
+ }
+
+ /* Make this footer part of the real #footer DIV of Wordpress admin area */
+ function footercut($string) {
+ return preg_replace('#</div><!-- footercut -->.*<div id="footer">#m', '', $string);
+ }
+
+
+ /***************************************
+ * Self-Pluginification (TM)(R)(C) . © ®
+ *
+ * The word "Self-Pluginification" and
+ * any future derivatives are licensed,
+ * patented and trademarked under the
+ * terms of the OHYEAHSURE agreement.
+ * Hmmmmmkey ? Fine.
+ **************************************/
+ function pluginification () {
+ global $wp_version;
+ if ($wp_version<2) {
+ $us = $this->infos['path'].'/functions.php';
+ $them = get_settings('active_plugins');
+ /* Now, are we members of the PPC (Plugins Private Club) yet ? */
+ if (!in_array($us,$them)) {
+ /* No ? Jeez, claim member card ! */
+ $them[]=$us;
+ update_option('active_plugins',$them);
+ /* Wow. We're l33t now. */
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+ }
+
+ /***************************************
+ * De-Pluginification (TM)(R)(C) . © ®
+ *
+ * Same legal notice. It's not that I
+ * really like it, but my lawyer asked
+ * for it. I swear.
+ **************************************/
+ function depluginification () {
+ global $wp_version;
+ if ($wp_version<2) {
+ $us = $this->infos['path'].'/functions.php';
+ $them = get_settings('active_plugins');
+ if (in_array($us,$them)) {
+ $here = array_search($us,$them);
+ unset($them[$here]);
+ update_option('active_plugins',$them);
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+ }
+
+ /***************************************
+ * Really, the whole plugin management
+ * system is really neat in WP, and very
+ * easy to use.
+ **************************************/
+
+ /* Clean plugins lists in order to work with Wordpress 2.0 */
+ function upgrade_toolkit () {
+ $plugins=get_settings('active_plugins');
+ $delete=@preg_grep('#^\.\./themes/[^/]+/functions.php$#', $plugins);
+ $result=array_diff($plugins,$delete);
+ $temp = array();
+ foreach($result as $item) $temp[]=$item;
+ $result = $temp;
+ update_option('active_plugins',$result);
+ wp_cache_flush;
+ }
+
+ }
+}
+
+?>
\ No newline at end of file |