public_html/docs/english/theme.html
author Dirk Haun <dirk@haun-online.de>
Sun, 04 Oct 2009 10:08:27 +0200
branchHEAD
changeset 7356 7c38c0c6ce0c
parent 7353 566b2b4b5535
child 7358 b6d086ec0e01
permissions -rw-r--r--
Added an option to send a copy to self to the "Mail Story to a Friend" dialog and made the look of this and the "Send mail to user" dialogs more consistent
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
     2 <html>
     3 <head>
     4   <title>Geeklog Documentation - Theme How-To</title>
     5   <link rel="stylesheet" type="text/css" href="../docstyle.css" title="Dev Stylesheet">
     6 </head>
     7 
     8 <body>
     9 <p><a href="http://www.geeklog.net/" style="background:transparent"><img src="../images/newlogo.gif" alt="Geeklog" width="243" height="90"></a></p>
    10 <div class="menu"><a href="index.html">Geeklog Documentation</a> - Theme How-To</div>
    11 
    12 <p><small>(see below for a list of <a href="#changes">theme changes</a> in
    13 recent Geeklog versions)</small></p>
    14 
    15 
    16 <h1>Creating a Theme for Geeklog</h1>
    17 
    18 <p>Creating a theme for Geeklog is easy and quite fast. If you can
    19 manipulate HTML files then you can create a theme! There's no need to learn
    20 PHP.
    21 
    22 <h2>Creating a theme</h2>
    23 
    24 <p>First, copy an existing theme that is most similar to what you want to
    25 implement (if one exists). If what you will do is radically different (and we
    26 hope so!) then copying any one will do. Copy the existing theme to the name you
    27 want your theme to have (please, <em>no</em> spaces in the theme name):</p>
    28 
    29 <p><kbd>cp -R /path/to/geeklog/public_html/layout/professional /path/to/geeklog/public_html/layout/My_Theme_Name_No_Spaces</kbd></p>
    30 
    31 <p>Change into your new theme directory:</p>
    32 
    33 <p><kbd>cd /path/to/geeklog/public_html/layout/My_Theme_Name_No_Spaces</kbd></p>
    34 
    35 <p>Now edit the templates to suit your needs. Keep in mind that templates,
    36 generally are partial HTML files. The directory you just created holds ALL
    37 templates Geeklog needs but you will only need to modify a small few to
    38 make a huge impact on the look.</p>
    39 
    40 <p>In particular these are the templates you will undoubtedly want to
    41 change:</p>
    42 
    43 <ul>
    44 <li>header.thtml</li>
    45 <li>footer.thtml</li>
    46 <li>blockheader.thtml</li>
    47 <li>blockfooter.thtml</li>
    48 <li>storytext.thtml</li>
    49 <li>storybodytext.thtml</li>
    50 <li>featuredstorytext.thtml</li>
    51 <li>featuredstorybodytext.thtml</li>
    52 <li>archivestorytext.thtml</li>
    53 <li>archivestorybodytext.thtml</li>
    54 <li>style.css</li>
    55 </ul>
    56 
    57 
    58 <h3><a name="how-themes-work">How themes work</a></h3>
    59 
    60 <p>When rendering a theme, Geeklog starts with <tt>header.thtml</tt> which
    61 builds the site's header and then goes on to include the left column of blocks
    62 (look for the variable {left_blocks} and the <tt>leftblocks.thtml</tt> file).
    63 The middle part of a site consists of the stories which are built using the
    64 <tt>storytext.thtml</tt> and <tt>storybodytext.thtml</tt> (for normal stories)
    65 and <tt>featuredstorytext.thtml</tt> and <tt>featuredstorybodytext.thtml</tt>
    66 (for featured stories) template files. The <tt>footer.thtml</tt> file then
    67 builds the right column of blocks (variable {right_blocks}, file
    68 <tt>right_blocks.thtml</tt>) and the site's footer. Blocks themselves consist
    69 of the <tt>blockheader.thtml</tt> and <tt>blockfooter.thtml</tt> files.
    70 
    71 <p>The above only describes how Geeklog's main page and stories are rendered.
    72 More templates exist for the various editors and lists you will see in Geeklog,
    73 as well as for the calendar and almost every other part of Geeklog.</p>
    74 
    75 <p>There is currently no complete list available that explains which template
    76 file is used for which part of Geeklog. However, in most cases the use should
    77 be obvious when you have a look at the file and directory names in your theme's
    78 layout directory. If you're unsure which template file is used to render a
    79 certain part of Geeklog, have a look at the URL. You will notice the name of
    80 a PHP file there, e.g. the <tt>users.php</tt> file when you view a user's
    81 profile. Open that file and search for '<kbd>.thtml</kbd>'. For the profile
    82 you will find these lines (in <code>function userprofile()</code>):</p>
    83 <pre style="margin-left:4em;"><code>$user_templates = new Template ($_CONF['path_layout'] . 'users');
    84 $user_templates->set_file (array ('profile'=>'profile.thtml', 'row'=>'commentrow.thtml', 'strow'=>'storyrow.thtml'));</code></pre>
    85 <p>You don't need to understand PHP code to see that this uses the template
    86 files <tt>profile.thtml</tt>, <tt>commentrow.thtml</tt>, and
    87 <tt>storyrow.thtml</tt>. The first line also indicates that these are taken
    88 from the <tt>users</tt> directory within the theme's layout directory.</p>
    89 
    90 <p>An <a href="themevars.html">incomplete list of variables</a> that can be
    91 used in templates files is also included.</p>
    92 
    93 <h3><a name="testing">Testing a theme and further information</a></h3>
    94 
    95 <p>After you have edited your themes, you are now ready to test it out.
    96 Simply go to http://mygeeklogsite/usersettings.php?mode=preferences - in the
    97 theme drop-down select your newly created theme (note the name of your theme is
    98 the <em>same</em> name as the directory for your theme).
    99 
   100 <p>Finally, you may want to update the logo and other images in your
   101 theme's images directory.
   102 
   103 <p>For the template system we are using PHPLib's template class (<a
   104 href="http://phplib.sourceforge.net/">http://phplib.sourceforge.net/</a>).
   105 Read their documentation and, optionally, look at
   106 /path/to/geeklog/system/classes/template.class.php to see how it is
   107 implemented. Even with this knowledge it may not be clear which templates
   108 are used in conjunction with one another (i.e. <tt>storytext.thtml</tt> and
   109 <tt>storybodytext.thtml</tt> together make up the complete format of a
   110 <em>single</em>
   111 story). If you have questions join our mailing list at <a
   112 href="http://lists.geeklog.net/listinfo/geeklog-users">http://lists.geeklog.net/listinfo/geeklog-users</a>
   113 or check us out in IRC at irc.freenode.net in #geeklog.</p>
   114 
   115 <h3><a name="tips">Tips and tricks</a></h3>
   116 
   117 <p><strong><a name="wysiwyg">Themes and WYSIWYG editors:</a></strong>
   118 The template files used by Geeklog are not complete HTML files - they contain
   119 only parts of the HTML that Geeklog puts together to build a proper HTML
   120 document. This, however, seems to confuse some WYSIWYG HTML editors and some of
   121 them tend to add the HTML which they think is missing from the file, thus
   122 making it unusable for Geeklog.<br>
   123 We suggest you use a simple text editor to edit your themes.</p>
   124 
   125 <p><strong><a name="php">PHP in themes:</a></strong>
   126 You can use PHP in the <em>header</em> of a theme, i.e. in the
   127 <tt>header.thtml</tt> file. If you want to use custom PHP functions, you can
   128 put them in the file <tt>functions.php</tt> within your themes directory.</p>
   129 
   130 <p><strong><a name="different-look">Different look for left and right blocks:</a></strong>
   131 You can give the blocks on the left and right a different look. See
   132 <a href="http://www.geeklog.net/forum/viewtopic.php?showtopic=21070">this story on the Geeklog homepage</a> for details.</p>
   133 
   134 <p><strong><a name="polls">Polls:</a></strong>
   135 To use multi-colored bars in the graphical display of poll results, you can use
   136 the <code>{answer_counter}</code> and <code>{answer_odd}</code> variables in
   137 the <tt>pollbooth/pollvotes_bar.thtml</tt> template file.
   138 <code>{answer_counter}</code> will be replaced with a running number for each
   139 answer, hence <code>bar{answer_counter}.gif</code> would result in
   140 <tt>bar1.gif</tt>, <tt>bar2.gif</tt>, etc. Giving each of those GIFs a different
   141 color would give you a different color for each answer.<br>
   142 <code>{answer_odd}</code> will alternate between 0 and 1 for every answer, hence
   143 <code>bar{answer_odd}.gif</code> will result in <tt>bar0.gif</tt> for the first,
   144 third, fifth, etc. answer and <tt>bar1.gif</tt> for the second, fourth, etc.
   145 answer.</p>
   146 
   147 <p><strong><a name="left-blocks">Left blocks in the right column:</a></strong>
   148 <code>$_CONF['left_blocks_in_footer']</code> is a
   149 rather curious option. It makes the <code>{left_blocks}</code> variable
   150 available in the site's footer (i.e. <tt>footer.thtml</tt>) while at the same
   151 time disabling it in the header (<tt>header.thtml</tt>).<br>
   152 The idea is that this can be used for two-column layouts (one column for the
   153 blocks and one column for the content) but when you want to have the blocks
   154 on the right side. Simply moving all blocks to the right will not work as
   155 expected, as you'd end up with <em>no blocks</em> at all on those pages that
   156 normally only display the left blocks (e.g. <tt>article.php</tt> or the
   157 admin pages). Setting <code>$_CONF['left_blocks_in_footer'] = 1</code> will
   158 fix this, so that the blocks, while internally still treated as <em>left</em>
   159 blocks, will actually be displayed on the <em>right</em>.<br>
   160 The theme's <tt>header.thtml</tt>, <tt>footer.thtml</tt>, and
   161 <tt>leftblocks.thtml</tt> will probably need some adjustments. The
   162 'left_blocks_in_footer' option is therefore not available in the main
   163 configuration but should instead be set in the theme's <tt>functions.php</tt>
   164 file.  That way, you can even leave your users a choice between, for example,
   165 a "normal" theme and one with the blocks on the right.</p>
   166 
   167 <p><strong><a name="error-message">Error Message:</a></strong>
   168 Since Geeklog 1.4.1 it is possible to control what HTML is displayed to
   169 non-root users in the event of an error occurring (a crash bug). To do
   170 so, you need to change the function <code>CUSTOM_handleError</code> in
   171 lib-custom.php to output any HTML you like.</p>
   172 
   173 <p><strong><a name="permalink">Adding a "permalink" to stories:</a></strong>
   174 Many websites offer a so-called permalink, i.e. a link to a permanent URL for
   175 the story. In Geeklog's default Professional theme, the article's headline
   176 already provides the same functionality - it links to a permanent URL for the
   177 story (pointing to article.php). However, since this is not very obvious and
   178 since visitors often expect to find a "permalink" somewhere on the page, here's
   179 how to add one yourself:</p>
   180 <ol>
   181 <li>Find a place in the story template files. The "story-footer" section in
   182 <tt>storytext.thtml</tt> may be a good place since it already contains quite a
   183 few story-related links.</li>
   184 <li>Once you've found a place to put the permalink entry, enter this piece of
   185 code:<br>
   186 <code style="margin-left:2em">&lt;a href="{article_url}"&gt;{lang_permalink}&lt;a&gt;</code><br>
   187 This will add a link to the article (<code>article_url</code>) using the word
   188 "Permalink" from the current language file (<code>lang_permalink</code>).</li>
   189 <li>Try it out. Be aware that at this point, your permalink entry only shows up
   190 for non-featured articles. You may want to tweak the appearance a bit (using
   191 CSS) or move the link around.</li>
   192 <li>Add the same piece of code to the <tt>featuredstorytext.thtml</tt> and
   193 <tt>archivestorytext.thtml</tt> templates so that the link also appears for
   194 featured and archived stories.</li>
   195 </ol>
   196 
   197 
   198 <h2><a name="changes">Theme changes in Geeklog 1.6.1</a></h2>
   199 
   200 <ul>
   201 <li>Added a "send copy to myself" option to
   202     <tt>profiles/contactauthorform.thtml</tt></li>
   203 <li>Cosmetics: Made the look and layout of the "Send mail to user"
   204     (<tt>contactuserform.thtml</tt>) and "Mail Story to a Friend"
   205     (<tt>contactauthorform.thtml</tt>) dialogs more consistent (alignment, size
   206     of input fields).</li>
   207 <li>The Topic Editor now contains a line displaying the number of stories in
   208     the current topic. New variables in <tt>admin/topic/topiceditor.thtml</tt>:
   209     <code>{lang_num_stories}</code>, <code>{num_stories}</tt></li>
   210 <li>Cosmetics: Fixed the position of the story preview when using the
   211     advanced editor (was slightly shifted to the right, <a
   212     href="http://project.geeklog.net/tracking/view.php?id=963">bug #0000963</a>). Changes to the <code>&lt;div id="preview"&gt;</code> in
   213     <tt>admin/story/storyeditor_advanced.thtml</tt>.</li>
   214 <li>Cosmetics: Removed <code>font-size:larger;</code> for the header fields of
   215     the admin lists from the stylesheet, but added some top/bottom padding
   216     (<a href="http://project.geeklog.net/tracking/view.php?id=956">bug #0000956</a>).</li>
   217 <li>Cosmetics: Removed a <code>width="180"</code> from the Block editor template
   218     (<tt>admin/block/blockeditor.thtml</tt>) that pushed the first column too
   219     far to the right.</li>
   220 <li>Cosmetics: Made the permission checkboxes look more like an Admin list,
   221     <tt>admin/common/edit_permissions.thtml</tt>. Introduced new CSS class
   222     <tt>admin-list-smalltable</tt>, which is almost identical to
   223     <tt>admin-list-table</tt> but without the <code>width:100%;</code></li>
   224 <li>Added a link back to the story to the "Mail Story to a Friend" form,
   225     <tt>profiles/contactauthorform.thtml</tt>. Available variables:
   226     <tt>{lang_title}</tt>, <tt>{story_title}</tt>, <tt>{story_url}</tt>,
   227     <tt>{story_link}</tt>.</tt>
   228 <li>Added textarea fields for meta description and meta keywords to the Story
   229     Editor (<tt>admin/story/storyeditor.thtml</tt>,
   230     <tt>admin/story/storyeditor_advanced.thtml</tt>).</li>
   231 <li>Added textarea fields for meta description and meta keywords to the Topic
   232     Editor (<tt>admin/topic/topiceditor.thtml</tt>).</li>
   233 <li>Added a <code>{remoteservice}</code> variable in
   234     <tt>admin/user/edituser.thtml</tt> to optionally display the name of the
   235     service a Remote User was using to log in.</li>
   236 </ul>
   237 
   238 <h3>Changes to plugin templates</h3>
   239 <p>Note that plugin template files are kept in a directory
   240 <tt>plugins/<i>pluginnname</i>/templates</tt> and not in the <tt>layout</tt>
   241 directory.</p>
   242 
   243 <ul>
   244 <li>Links: Removed a <code>width="150"</code> from the Category editor template
   245     (<tt>admin/categoryeditor.thtml</tt>) that pushed the first column too far
   246     to the right.</li>
   247 <li>Static Pages: Added new input fields for a meta description and meta
   248     keywords to the Static Pages editor.</li>
   249 <li>Static Pages: In the Static Pages editor, moved the Hits display below
   250     the Last Updated entry (<tt>admin/editor.thtml</tt>,
   251     <tt>admin/editor_advanced.thtml</tt>).</li>
   252 <li>Static Pages: Added textarea fileds for meta description and meta keywords
   253     in the Static Pages editor (<tt>admin/editor.thtml</tt>,
   254     <tt>admin/editor_advanced.thtml</tt>).</li>
   255 <li>Polls: Added new input fields for a meta description and meta keywords to
   256     the Polls editor.</li>
   257 <li>Polls: Added new CSS classes <tt>poll-autotag-message</tt>,
   258     <tt>poll-autotag</tt>, <tt>poll-autotag-left</tt>, used when embedding polls
   259     via the new autotags.</li>
   260 </ul>
   261 
   262 
   263 <h2><a name="changes160">Theme changes in Geeklog 1.6.0</a></h2>
   264 
   265 <ul>
   266 <li>Themes can now opt to use a <tt>{doctype}</tt> variable in their
   267     <tt>header.thtml</tt> instead of using a hard-coded DOCTYPE declaration.
   268     The DOCTYPE will then be set from the configuration (currently available:
   269     HTML 4.01 Strict and Transitional, XHTML 1.0 Strict and Transitional). Such
   270     a theme should <em>not</em> set the <code>XHTML</code> constant in its
   271     <tt>functions.php</tt> file!</li>
   272 <li>When using <a href="#xhtml">XHTML</a>, the variable <tt>{xmlns}</tt> now
   273     contains <tt>xmlns="http://www.w3.org/1999/xhtml"</tt> for XHTML compliance
   274     (to be used in the <tt>&lt;html&gt;</tt> element).</li>
   275 <li>Added a space between a story's intro text and body text when using the
   276     <tt>{story_text_no_br}</tt> variable.</li>
   277 <li>The story templates in the Professional theme now use
   278     <tt>{story_text_no_br}</tt> instead of <tt>{story_introtext}</tt>, i.e.
   279     there are no <tt>&lt;br&gt;</tt> tags between a story's intro text and
   280     body text any more. This allows for greater flexibility in formatting a
   281     story (e.g. when using the intro text for teasers) but may result in older
   282     stories being displayed differently now (no visible separation between intro
   283     text and body text).</li>
   284 <li>Bugfix: The variables <tt>{contributedby_user}</tt> and
   285     <tt>{contributedby_fullname}</tt> were always empty.</li>
   286 <li>The two variables <tt>{start_contributedby_anchortag}</tt> and
   287     <tt>{end_contributedby_anchortag}</tt> were not set any more (since Geeklog
   288     1.5.0). Instead, the link to the author's profile was added to
   289     <tt>{contributedby_author}</tt>, so that the combination of these three
   290     variables (as used in the story templates) still seemed to work. Geeklog
   291     1.6.0 reinstates the old definitions, i.e. the anchortag variables contain
   292     the opening and closing tag to link to the author's profile and
   293     <tt>{contributedby_author}</tt> contains only the author's name.</li>
   294 <li>New variable <tt>{photo_max_dimensions}</tt> to inform users about the
   295     max. dimensions of a userphoto: <tt>preferences/userphoto.thtml</tt></li>
   296 <li>Added a <tt>print.css</tt> stylesheet to be used by the
   297     <tt>printable.thtml</tt> template files for articles and the static pages
   298     plugin.</li>
   299 <li>The plugin editor can now show a plugin's "display name" (or a beautified
   300     version of the directory name) when using the new variable
   301     <code>{pi_display_name}</code> in <tt>admin/plugins/editor.thtml</tt>.
   302     This is a purely cosmetic change.</li>
   303 <li>New template file <tt>admin/lists/inline.thtml</tt>, used when embedding
   304     lists into an existing HTML <code>&lt;form&gt;</code> (e.g. the new Groups
   305     editor).</li>
   306 <li>Added a "send copy to myself" option to
   307     <tt>profiles/contactuserform.thtml</tt></li>
   308 <li>Cosmetic changes to the <tt>admin/mail/mailform.thtml</tt> template file:
   309     Removed <code>{startblock_email}</code> and <code>{endblock_email}</code>
   310     and the top table. These elements are now added automatically to make the
   311     the mail form look more consistent with the other admin panels.</li>
   312 <li>A new checkbox has been added to <tt>search/searchform.thtml</tt> to allow
   313     for a search in the title only.</li>
   314 <li>Cosmetic changes to the <tt>admin/group/groupmembers.thtml</tt> template
   315     file: The header (including the icon, links, and the instructions) is now
   316     generated by Geeklog. The <tt>&lt;table&gt;</tt> that contained these
   317     elements has been removed from the template file.</li>
   318 <li>Configuration: <tt>config_element.thtml</tt> was missing a closing
   319     <code>&lt;/option&gt;</code> tag; the <code>&lt;col&gt;</code> tags in
   320     <tt>configuration.thtml</tt> were not XHTML compliant.</li>
   321 </ul>
   322 
   323 <h3>Search</h3>
   324 
   325 <p>The templates for the search form and search results have been changed and
   326 new template files have been added for the new display modes of the search
   327 results. We suggest to replace the entire <tt>search</tt> subdirectory in your
   328 theme with a copy of the directory from the Professional theme as it ships
   329 with Geeklog.</p>
   330 
   331 <h3>Comments</h3>
   332 
   333 <p>The <tt>commentform.thtml</tt> and <tt>commentform_advanced.thtml</tt>
   334 template files were changed to include a security token and a
   335 <code>{notification}</code> variable (for the new option to be notified of
   336 followup comments).</p>
   337 
   338 <h3>Plugins</h3>
   339 
   340 <ul>
   341 <li>The template file for the Polls editor has been changed to allow up to 40
   342     characters for the poll id (pid):
   343     <tt>plugins/polls/templates/admin/polleditor.thtml</tt></li>
   344 <li>The <tt>printable.thtml</tt> template file for the static pages plugin now
   345     uses <tt>print.css</tt> (see above). It also uses the HTML Strict doctype
   346     now.</li>
   347 </ul>
   348 
   349 <h3>Permissions Editor</h3>
   350 
   351 <p>The various instances of the Permissions Editor (where you can set the Read
   352 / Edit permissions for Owner, Group, Members, Anonymous) were using slightly
   353 different template variable names. From now on, the following names are defined
   354 everywhere:</p>
   355 <ul>
   356 <li><tt>{lang_permissions}</tt> (headline)</li>
   357 <li><tt>{lang_perm_key}</tt> (legend: R = read, ...)</li>
   358 <li><tt>{permissions_editor}</tt> (the actual checkboxes)</li>
   359 <li><tt>{lang_permissions_msg}</tt> (Note: members is all logged in member ...)</li>
   360 </ul>
   361 <p>Template files using the alternative names will continue to work, but new
   362 files should use the above names from now on.</p>
   363 
   364 
   365 <h2><a name="changes152">Theme changes in Geeklog 1.5.2</a></h2>
   366 
   367 <p>Note: Themes made for Geeklog 1.5.0 or 1.5.1 should work just fine with
   368 Geeklog 1.5.2. In this release, we only fixed a few problems in the themes
   369 (detailed below) that also affected 1.5.0 and 1.5.1. The other changes listed
   370 here are optional.</p>
   371 
   372 <h3>Bugfixes</h3>
   373 
   374 <p>These changes are actual bugs in the template files that also exist in
   375 Geeklog 1.5.0 and 1.5.1. We recommend making these changes to all custom
   376 themes.</p>
   377 
   378 <ul>
   379 <li>The security token was missing from the trackback editor template file,
   380     <tt>admin/trackback/trackbackeditor.thtml</tt></li>
   381 <li>The <code>{start_storylink_anchortag}</code> variable in the story templates
   382     was missing the closing '&gt;'. This caused the story title to disappear
   383     on some themes. (This was a bug in Geeklog's code, so no theme changes
   384     required)</li>
   385 <li>The <code>{site_admin_url}</code> was missing from the Configuration form
   386     action in <tt>admin/config/configuration.thtml</tt>. This may have caused
   387     problems making configuration changes on some setups.</li>
   388 <li>Added a hidden <code>old_pid</code> input field to the polls editor template
   389     file, <tt>plugins/polls/templates/admin/polleditor.thtml</tt>, to fix
   390     problems when changing a poll's ID.</li>
   391 </ul>
   392 
   393 <h3>Other changes</h3>
   394 
   395 <p>These changes are optional. They fix cosmetic issues or issues that only
   396 affect some setups.</p>
   397 
   398 <ul>
   399 <li>Cosmetics: In the Professional theme, the last menu entry isn't different
   400     from the other entries, so the
   401     <code>.header-navigation-container li.last</code> rule in <tt>style.css</tt>
   402     is not needed for this theme.</li>
   403 <li>Internationalisation: The language direction variable,
   404     <code>{direction}</code>, was not available in the printer-friendly
   405     templates for articles and static pages.</li>
   406 </ul>
   407 
   408 
   409 <h2><a name="changes151">Theme changes in Geeklog 1.5.1</a></h2>
   410 
   411 <p>Note: Themes made for Geeklog 1.5.0 are mostly compatible with Geeklog 1.5.1. We only made one mandatory change (for the Configuration admin panel) - all the other changes listed below are optional or adjustments for special setups (e.g. multi-language sites, right-to-left languages). See details below.</p>
   412 
   413 <h3>Important change: Configuration</h3>
   414 
   415 <p>The JavaScript code used for the Configuration admin panel used a generic name which caused conflicts with other JavaScript code. You should update the file <tt>admin/config/config_element.thtml</tt> to make sure your theme works with Geeklog 1.5.1.</p>
   416 
   417 <h3>Multilingual blocks</h3>
   418 
   419 <p>The multi-language support for blocks introduced in Geeklog 1.5.1 relies on
   420 <em>disabled</em> blocks being swapped in dynamically. If you are using
   421 Geeklog's multi-language support, you may need to modify the piece of PHP code
   422 in your theme's <tt>functions.php</tt> so that it picks the correct templates
   423 for these multilingual blocks:</p>
   424 
   425 <pre style="margin-left:4em;"><code>$lang = COM_getLanguageId();
   426 if (empty($lang)) {
   427     $result = DB_query("SELECT onleft,name FROM {$_TABLES['blocks']} WHERE is_enabled = 1");
   428 } else {
   429     $result = DB_query("SELECT onleft,name FROM {$_TABLES['blocks']}");
   430 }</code></pre>
   431 
   432 <p>Prior to Geeklog 1.5.1, you will probably only find the first SQL request
   433 in your <tt>functions.php</tt> file.</p>
   434 
   435 <h3>Other changes</h3>
   436 
   437 <ul>
   438 <li>In Geeklog 1.5.0, the behaviour of the variable <code>{page_title}</code>
   439     (in <tt>header.thtml</tt>) changed so that it now only contains the actual
   440     page title or the site's slogan (in earlier versions, it contained both the
   441     site's name and either the page title or the site's slogan). This was done
   442     so that the combination <code>{page_title}{page_site_splitter}{site_name}</code>
   443     could be used to place the page title before the site's name for better <a
   444     href="http://en.wikipedia.org/wiki/Search_engine_optimization"
   445     class="wikipedia" title="Search Engine Optimization">SEO</a>. If you prefer
   446     to have the site's name first on the index page and the page title first on
   447     all other pages, you can now use the new variable
   448     <code>{page_title_and_site_name}</code></li>
   449 <li>In the Links plugin, links have an icon indicating that it's an external
   450     link (taking the user away from the current site). This icon did not show
   451     up properly for RTL languages (e.g Hebrew), making the link text unreadable.
   452     Since we could not find a way to make it show up properly in this case, the
   453     icon is not displayed when the text direction is switched to 'rtl'
   454     (for now).</li>
   455 <li>Added an optional <code>feed-link</code> class to be used for links to
   456     feeds (e.g. the new Story Option entry for topic feeds). In the Professional
   457     theme, a small feed icon (<tt>images/feed.png</tt>) is used as a background
   458     image for these links.</li>
   459 <li>An optional change to the <tt>comment/commentbar.thtml</tt> template file
   460     and the <code>commentbar-line2</code> class in <tt>style.css</tt> to make
   461     the "Post a comment" button float to the left and easier to see. There were
   462     no changes in functionality and other commentbar layouts will continue to
   463     work as before.</li>
   464 <li>The story template files <tt>archivestorytext.thtml</tt>,
   465     <tt>featuredstorytext.thtml</tt>, and <tt>storytext.thtml</tt> are now
   466     using the <code>{story_text_no_br}</code> variable to refer to the story
   467     text. Template files that use <code>{story_introtext}</code> here will
   468     continue to work as before.</li>
   469 </ul>
   470 
   471 
   472 <h2><a name="changes150">Theme changes in Geeklog 1.5.0</a></h2>
   473 
   474 <h3><a name="xhtml">XHTML support</a></h3>
   475 
   476 <p>Geeklog now supports XHTML compliant themes. These themes should define the
   477 following constant in their <tt>functions.php</tt> file:</p>
   478 <pre style="margin-left:4em;"><code>define('XHTML', ' /');</code></pre>
   479 <p>This will ensure that Geeklog switches to XHTML internally. If you want your
   480 theme be working both as an HTML and an XHTML theme, you should use the
   481 <code>{xhtml}</code> variable wherever XHTML requires a self-closing tag,
   482 e.g. <code>&lt;br /&gt;</code> would be written as <code>&lt;br{xhtml}&gt;</code>. If you don't plan to use the theme for HTML, feel free to hard-code your
   483 theme for XHTML only.</p>
   484 <p><strong>Note:</strong> If you're using XHTML, it is your responsibility to
   485 ensure that your site's content (stories, comments, etc.) is XHTML compliant.
   486 Geeklog does <em>not</em> convert your content to XHTML.</p>
   487 
   488 <h3><a name="story-submission">"Contribute" - User submitted stories</a></h3>
   489 
   490 <p>Geeklog 1.5.0 supports the ability for users to specify story intro text
   491   and body text seperately rather than just the intro text. This can be
   492 turned on and off by changing the templates. The files:</p>
   493 <ul>
   494     <li>submit/submitstory.thtml</li>
   495     <li>submit/submitstory_advanced.thtml</li>
   496 </ul>
   497 <p>Contain table rows containing the bodytext inputs. Simply removing these
   498 inputs returns behaviour to the original.</p>
   499 
   500 <h3><a name="admin-menu">Admin Menu, User Menu &amp; Topic List</a></h3>
   501 
   502 <p>All the above mentioned items are now lists, using <code>ul</code> and
   503 <code>li</code> tags (and a new CSS class, <tt>blocklist</tt>, to hide the list
   504 bullets). Two new template files have been added to create these blocks:</p>
   505 <ul>
   506     <li>blockheader-list.thtml</li>
   507     <li>blockfooter-list.thtml</li>
   508 </ul>
   509 <p>Please note that the <code>{blockid}</code> variable that was present in
   510 pre-release versions of Geeklog 1.5.0 has since been removed.</p>
   511 
   512 <h3><a name="gltoken">Security Changes</a></h3>
   513 
   514 <p>Many forms, particularly in the admin section of the site need a new hidden
   515 form field in order for saving the form/processing the action to work. Add:</p>
   516 
   517 <pre style="margin-left:4em;"><code>&lt;input type="hidden" name="{gltoken_name}" value="{gltoken}"{xhtml}&gt;</code></pre>
   518 <p>To the following templates:</p>
   519 <ul>
   520     <li>admin/block/blockeditor.thtml</li>
   521     <li>admin/block/defaultblockeditor.thtml</li>
   522     <li>admin/config/configuration.thtml (new theme file for 1.5)</li>
   523     <li>admin/group/groupeditor.thtml</li>
   524     <li>admin/group/groupmembers.thtml</li>
   525     <li>admin/mail/mailform.thtml</li>
   526     <li>admin/plugins/editor.thtml</li>
   527     <li>admin/story/storyeditor.thtml</li>
   528     <li>admin/story/storyeditor_advanced.thtml</li>
   529     <li>admin/syndication/feededitor.thtml</li>
   530     <li>admin/topic/topiceditor.thtml</li>
   531     <li>admin/trackback/pingbackform.thtml</li>
   532     <li>admin/trackback/pingform.thtml</li>
   533     <li>admin/trackback/serviceeditor.thtml</li>
   534     <li>admin/user/edituser.thtml</li>
   535     <li>comment/reportcomment.thtml</li>
   536 </ul>
   537 <p>Some plugin specific templates have also been changed, you may also need to
   538 check:</p>
   539 <ul>
   540     <li>plugins/calendar/templates/addevent.thtml</li>
   541     <li>plugins/calendar/templates/editpersonalevent.thtml</li>
   542     <li>plugins/calendar/templates/dayview/quickaddform.thtml</li>
   543     <li>plugins/calendar/templates/submitevent.thtml (<code>{hidden_fields}</code> variable)</li>
   544     <li>plugins/links/templates/admin/categoryeditor.thtml (new theme file for 1.5)</li>
   545     <li>plugins/links/templates/admin/linkeditor.thtml</li>
   546     <li>plugins/polls/templates/admin/polleditor.thtml</li>
   547     <li>plugins/staticpages/templates/admin/editor.thtml</li>
   548     <li>plugins/staticpages/templates/admin/editor_advanced.thtml</li>
   549 </ul>
   550 
   551 <h3><a name="removed">Removed Files</a></h3>
   552 
   553 <p>The following template files have been removed and are no longer needed:</p>
   554 
   555 <ul>
   556     <li>admin/lists/menufields.thtml</li>
   557     <li>admin/lists/topmenu_nosearch.thtml</li>
   558     <li>admin/plugins/newlistitem.thtml</li>
   559     <li>admin/plugins/newpluginlist.thtml</li>
   560 </ul>
   561 
   562 <h3><a name="sysmessage">System Message</a></h3>
   563 
   564 <p>The previously hard-coded CSS for the System Messages has been moved to the
   565 stylesheet (new CSS class <tt>sysmessage</tt>).</p>
   566 
   567 
   568 <h2><a name="changes141">Theme changes in Geeklog 1.4.1</a></h2>
   569 
   570 <p>The css in 1.4.1 has been changed to a wider extent. More and more layout
   571 components are beeing moved to the stylesheet so more change in looks can be
   572 achieved with less change in the files. There is a reduction of tables and DIV,
   573 and a stronger focus on semantics and consistency. Please also notice that the
   574 styles.css includes additional documentation on the use of classes now.</p>
   575 
   576 <p>As usual, any missing new theme files can simply be copied over from the
   577 default theme (Professional) that ships with Geeklog.</p>
   578 
   579 <h3>Header-Tags</h3>
   580 
   581 <p>From now on, all headlines in blocks & stories are made with header-tags. The
   582 biggest title in a story is always h1, in a block always h2.</p>
   583 
   584 <h3>Story layout</h3>
   585 <p>The blocks for stories have no more tables, and the classes have been renamed
   586 for consistency. There is a box now around the story called class "story" or
   587 "story-featured". The components inside that box are story-icons,
   588 story-information, story-body and story-footer. The title is a h1-tag. For
   589 featured stories, only the outer box has a different class, the rest has to be
   590 cascaded for changes.</p>
   591 
   592 <h3>Blocks</h3>
   593 <p>The blocks changed in the same way as the stories. There are no more tables,
   594 only one div-tag as a frame around called block-box, block-box-left or
   595 block-box-right. The title is a h2-tag and the help icon for the block is a span
   596  with a class called block-helpicon. Sub-titles in blocks have the h3-tag (such
   597  such as in the What's new or Older Stories block). The changes affect (next to
   598  styles.css) the follwing files:</p>
   599 <ul>
   600 <li>blockfooter-left.thtml</li>
   601 <li>blockfooter-related.thtml</li>
   602 <li>blockfooter-right.thtml</li>
   603 <li>blockfooter.thtml</li>
   604 <li>blockheader-left.thtml</li>
   605 <li>blockheader-message.thtml</li>
   606 <li>blockheader-related.thtml</li>
   607 <li>blockheader-right.thtml</li>
   608 <li>blockheader.thtml</li>
   609 </ul>
   610 
   611 <h3>Admin templates</h3>
   612 
   613 <p>Many of the admin template files have had minor changes to tweak appearance
   614 or functionality. If you didn't modify the admin templates in your theme, the
   615 easiest way to upgrade your theme's admin templates is to simply replace the
   616 entire 'admin' directory with the one from Geeklog's Professional theme.</p>
   617 
   618 <ul>
   619 <li>All the "delete" buttons in the admin's editors (story editor, etc.) now
   620     pop up a JavaScript confirmation box as a simple measure against
   621     accidental deletion. If you'd rather not have that confirmation box,
   622     replace the <code>{delete_option}</code> variable with
   623     <code>{delete_option_no_confirmation}</code> in the admin templates.</li>
   624 <li>The order of the save / cancel / delete buttons is now consistent across
   625     all admin template files (changed <tt>group/groupeditor.thtml</tt> and
   626     <tt>user/edituser.thtml</tt>).</li>
   627 <li>Changed the top links in <tt>lists/topmenu_nosearch.thtml</tt> and
   628     <tt>topic/topiclist.thtml</tt> to be consistent with the other admin areas
   629     (i.e. the links are no longer enclosed in square brackets).</li>
   630 <li>To enable changing the group ownership of "gldefault" blocks, the
   631     <tt>defaultblockeditor.thtml</tt> has to be changed to include a
   632     <code>{group_dropdown}</code> variable.
   633 </ul>
   634 
   635 <h3>Other theme changes</h3>
   636 
   637 <ul>
   638 <li>There was a div for spreading the with of the blocks to a minimum in the
   639     files leftblocks.thtml and rightblocks.thtml. The format of those has been
   640     transferred to the stylesheet with the class name block-bg-spreader</li>
   641 <li>The template for the Polls-plugin has renamed classes block-vote-results to
   642     poll-vote-results and block-vote to poll-vote to avoid confustion with
   643     block-related classes.</li>
   644 <li>The template files used by the Calendar plugin are now located in the
   645     plugin's directory, (<tt>/path/to/geeklog/plugins/calendar/templates</tt>),
   646     so the entire 'calendar' directory can be removed from the theme
   647     directory.<br>
   648     The <tt>submitevent.thtml</tt>, <tt>editpersonalevent.thtml</tt>,
   649     <tt>admin/eventeditor.thtml</tt>, and <tt>dayview/quickaddform.thtml</tt>
   650     have also been changed to (optionally) support entering the time in <a
   651     href="calendar.html#desc_hour_mode">24 hour mode</a>: A hidden input field
   652     "hour_mode" is now required, the am/pm dropdowns are available as variables
   653     <code>{startampm_selection}</code>, <code>{endampm_selection}</code>,
   654     <code>{ampm_selection}</code>, depending on the template file), and the
   655     dropdowns for the minutes are available as variables
   656     (<code>{startminute_options}</code>, <code>{endminute_options}</code>,
   657     <code>{minute_options}</code>, depending on the template file).</li>
   658 <li>The variables <code>{author}</code> and <code>{owner}</code> are now
   659     available in every template where an object's author (e.g. story or
   660     comment author) or owner (e.g. owner of a block) name can be displayed.
   661     They will also respect the <a
   662     href="config.html#desc_show_fullname">$_CONF['show_fullname']</a> setting,
   663     i.e. display either the user's full name or username.</li>
   664 <li>The Article Author's tag in <tt>storytext.thtml</tt> and
   665     <tt>featuredstorytext.thtml</tt> is now called
   666     <code>{contributedby_author}.</code></li>
   667 <li>To enable a remarks field in the answer to polls, the
   668     <tt>pollvotes_bar.thtml</tt>, <tt>pollansweroption.thtml</tt> and
   669     <tt>polleditor.thtml</tt> were changed. The
   670     <tt>pollvotes_bar.thtml</tt> is now colored and has two lines, a class
   671     for color coding each line and the <code>{answer_text}</code>. The
   672     <tt>polleditor.thtml</tt> has an aditional field to enter the remarks,
   673     same as the <tt>pollansweroption.thtml</tt>.
   674 <li>A user's Account Information page has been redesigned. While there were no
   675     technical changes (i.e. template files from earlier versions will still
   676     work), some options have been rearranged and a note has been added to tell
   677     the user that the current password is required to change those. Affected
   678     files in the <tt>preferences</tt> directory: <tt>profile.thtml</tt>,
   679     <tt>username.thtml</tt>, and <tt>userphoto.thtml</tt>.</li>
   680 <li>The <tt>navbar</tt> directory now contains four files,
   681     <tt>menuitem.thtml</tt>,<tt>navbar.thtml</tt>,<tt>breadcrumbs.thtml</tt>,<tt>breadcrumb_link</tt> as well as two images,
   682     <tt>button.gif</tt> and <tt>button_over.gif</tt>.</li>
   683 <li>A <a name="captcha"><code>{captcha}</code></a> variable has been added to
   684     the following files:
   685     <ul>
   686     <li><tt>comment/commentform.thtml</tt></li>
   687     <li><tt>comment/commentform_advanced.thtml</tt></li>
   688     <li><tt>profiles/contactauthorform.thtml</tt></li>
   689     <li><tt>profiles/contactuserform.thtml</tt></li>
   690     <li><tt>submit/submitstory.thtml</tt></li>
   691     <li><tt>submit/submitstory_advanced.thtml</tt></li>
   692     <li><tt>users/registrationform.thtml</tt></li>
   693     </ul>
   694     This variable is supposed to be used by a plugin that implements <a
   695     href="http://en.wikipedia.org/wiki/CAPTCHA" class="wikipedia">CAPTCHA</a>s
   696     and will simply be empty when no such plugin is installed.</li>
   697 </ul>
   698 
   699 <h3>Professional theme</h3>
   700 
   701 <p>The following changes are specific to the Professional theme. There is
   702 probably no need to port them over to other themes.</p>
   703 
   704 <ul>
   705 <li>The theme now uses CSS everywhere for spacing and dividers instead of
   706     relying on a 1x1 pixel transparent GIF image (<tt>speck.gif</tt>).</li>
   707 <li>The amount of nested tables has been reduced, e.g. in the block
   708     headers.</li>
   709 <li>Two unused template files, <tt>customlogin-header.thtml</tt> and
   710     <tt>customlogin-footer.thtml</tt>, have been removed.</li>
   711 </ul>
   712 
   713 
   714 <h2><a name="changes140">Theme changes in Geeklog 1.4.0</a></h2>
   715 
   716 <p>As usual, any missing new theme files can simply be copied over from the
   717 default theme (Professional) that ships with Geeklog.</p>
   718 
   719 <h3>Admin templates</h3>
   720 
   721 <p>Geeklog 1.4.0 comes with revamped Admin sections which required a lot of
   722 theme changes. We therefore suggest that you simply replace the entire
   723 <tt>admin</tt> directory of your theme with the <tt>admin</tt> directory
   724 from Geeklog's default theme (Professional) as it ships with Geeklog 1.4.0
   725 and apply any modfications you may have made to your Admin templates again
   726 afterwards.</p>
   727 
   728 <p><strong>Note:</strong> The new icons for "Command and Control"
   729 (<tt>moderation.php</tt>) in the Professional theme use a white background.
   730 For themes with a dark (or other non-white) background, you can <a
   731 href="http://www.geeklog.net/filemgmt/singlefile.php?lid=623">download</a> these
   732 icons as PNGs with alpha transparency (note that Internet Explorer can not
   733 display images with alpha transparency unless you include a JavaScript "<a
   734 href="http://homepage.ntlworld.com/bobosola/">hack</a>" into your theme, so you
   735 may want to convert those icons to normal transparency or simply set the
   736 background to that of your theme).</p>
   737 
   738 
   739 <h3>Advanced editor</h3>
   740 
   741 <p>To use the included advanced editor (FCKeditor) you will need the following
   742 new template files:</p>
   743 <ul>
   744 <li><tt>comment/commentform_advanced.thtml</tt> (for comments)</li>
   745 <li><tt>submit/submitstory_advanced.thtml</tt> (for story submissions)</li>
   746 <li><tt>admin/story/storyeditor_advanced.thtml</tt> (Admin's story editor)</li>
   747 <li><tt>staticpages/templates/admin/editor_advanced.thtml</tt> (for the Static
   748     Pages editor, located in <tt>/path/to/geeklog/plugins</tt>)</li>
   749 <li><tt>advanced_editor_header.thtml</tt> (included by all of the above)</li>
   750 </ul>
   751 <p>You also have to add <code>{advanced_editor}</code> to the <code>&lt;head&gt;</code> section of your theme's <tt>header.thtml</tt> file.</p>
   752 
   753 <h3>Other changes</h3>
   754 
   755 <ul>
   756 <li>The comment templates <tt>commentbar.thtml</tt> and <tt>thread.thtml</tt>
   757     have changed due to changes in the comment handling.</li>
   758 <li>New directories <tt>trackback</tt> and <tt>admin/trackback</tt> containing
   759     several new template files have been added for the trackback support.</li>
   760 <li>New variables <code>{send_trackback_link}</code>,
   761     <code>{send_trackback_url}</code>, and
   762     <code>{lang_send_trackback_text}</code> are available in the story and
   763     article template files. They provide a complete link as well as the URL and
   764     link text allowing you to send a trackback comment for the current
   765     story.</li>
   766 <li>The <tt>links</tt> and <tt>admin/link</tt> directories have been
   767     removed. Links are now a plugin and the plugin's templates can be found in
   768     <tt>/path/to/geeklog/plugins/links/templates</tt>.</li>
   769 <li>The <tt>pollbooth</tt> and <tt>admin/poll</tt> directories have been
   770     removed. Polls are now a plugin and the plugin's templates can be found in
   771     <tt>/path/to/geeklog/plugins/polls/templates</tt>.</li>
   772 <li>The <tt>preferences/profile.thtml</tt> template now has additional fields
   773     for the password change (old password, confirmation field for the new
   774     password).</li>
   775 <li>The search form, <tt>search/searchform.thtml</tt> has a new option for the
   776     number of search results per page, while the hard-coded option to search
   777     for links has been removed (since Links are in plugin now, it will show up
   778     as part of the <code>{plugin_types}</code> option).</li>
   779 <li>An additional variable, <code>{services}</code>, has to be added to the
   780     <tt>loginform.thtml</tt> template file if you plan to allow users to log in
   781     to your site using remote authentication.</li>
   782 <li>If you plan to enable Trackbacks on your site, you may want to add links to
   783     a story's trackbacks section to your story template files, e.g.
   784     <code>{start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}</code>. See the Professional theme's story template files for
   785     examples.</li>
   786 <li>For the site statistics, the file <tt>stats/sitestatistics.thtml</tt> has
   787     changed (entries for the links and poll have been removed and a new entry
   788     for the number of active users has been added). There is also a new file,
   789     <tt>stats/singlesummary.thtml</tt>, that is used for plugin entries.</li>
   790 <li>The <tt>navbar</tt> directory is now part of a Geeklog theme (previously
   791     used by some plugins, e.g. the Forum plugin). It contains two files,
   792     <tt>menuitem.thtml</tt> and <tt>navbar.thtml</tt>, as well as two images,
   793     <tt>button.gif</tt> and <tt>button_over.gif</tt>.</li>
   794 </ul>
   795 
   796 
   797 <h2><a name="changes1311">Theme changes in Geeklog 1.3.11</a></h2>
   798 
   799 <p>There are no mandatory theme changes in Geeklog 1.3.11, so themes made for Geeklog 1.3.10 will work just fine without any modifications.</p>
   800 
   801 <p>A few minor additions / new options have been introduced:</p>
   802 <ul>
   803 <li>A new variable, <code>{camera_icon}</code>, can now be used in the story
   804     and comment template files to display the small camera icon (the same as in
   805     the Who's Online block) to link to the author's user profile (only if they
   806     uploaded a userphoto).</li>
   807 <li>The <code>{layout_url}</code> variable is now available in the templates
   808     for the story, link, and event submission forms.</li>
   809 <li>Also in the submission forms, a variable <code>{separator}</code> is now
   810     available in addition to the misspelled <code>{seperator}</code>
   811     variable.</li>
   812 <li>A new variable, <code>{calendar_mode}</code>, can be used in the
   813     <tt>calendar/events.thtml</tt> template file to ensure that the "add event"
   814     link will take the user to the proper event submission form for either the
   815     site calendar or the personal calendar.</li>
   816 </ul>
   817 
   818 <h2><a name="changes1310">Theme changes in Geeklog 1.3.10</a></h2>
   819 
   820 <p>General note: To upgrade your custom theme for use with Geeklog 1.3.10, you can simply copy over any new template files from the Geeklog default theme.</p>
   821 
   822 <p>The biggest change in Geeklog 1.3.10 is that we now ship it with only one
   823 default theme (the Professional theme, kindly provided by Victor B. Gonzalez)
   824 and that the previously included themes are now available as a separate
   825 download.</p>
   826 
   827 <h3>Admin templates</h3>
   828 
   829 <p>Most themes don't change the template files in the theme's <tt>admin</tt>
   830 directory, so you can often save yourself a bit of work by simply replacing
   831 the entire <tt>admin</tt> directory with the one from the Geeklog 1.3.10
   832 distribution.</p>
   833 
   834 <ul>
   835 <li>The story editor, <tt>admin/story/storyeditor.thtml</tt> includes new
   836     options for the story archiving and for editable story IDs. <em>It is
   837     recommended to make a copy of this file and re-apply any changes you may
   838     have made to your copy again afterwards!</em></li>
   839 <li>The list of polls, <tt>admin/poll/polllist.thtml</tt> now supports
   840     paging, i.e. uses the {google_paging} variable.</li>
   841 <li>The list of events uses paging and a row number now (files affected:
   842     <tt>admin/event/eventlist.thtml</tt> and
   843     <tt>admin/event/listitem.thtml</tt>).</li>
   844 <li>The plugin editor, <tt>admin/plugins/editor.thml</tt>, now displays 2
   845     version numbers for the plugin: The installed version and the (possibly
   846     differing) version of the actual code.  In the latter case, it will also
   847     display an update button.<br>
   848     The list of plugins, <tt>admin/plugins/pluginlist.thtml</tt> and
   849     <tt>admin/plugins/listitem.thtml</tt>, also displays the 2 version numbers
   850     and now supports paging when more than 25 plugins are installed.</li>
   851 <li>The topic editor, <tt>admin/topic/topiceditor.thtml</tt>, contained a
   852     hard-coded "10" for the default number of stories per pages. The new
   853     variable {default_limit} provides the actual default value now.</li>
   854 <li><tt>admin/mail/mailform.thtml</tt> has been changed to look slightly less
   855     ugly ...</li>
   856 </ul>
   857 
   858 <h3>Other templates</h3>
   859 
   860 <ul>
   861 <li>Added two new templates for the new story archive feature. This allows you
   862     to theme olderstories differently. By default Geeklog 1.3.10 ships with
   863     these template files not themed and the same as a standard story. The new
   864     template files are <ul><li>archivestorytext.thtml</li>
   865     <li>archivestorybodytext.thtml</li></ul></li>
   866 <li>Due to various changes in the comment engine, it is recommended that you
   867     copy over all the comment template files from the <tt>comment</tt> directory
   868     (<tt>comment/reportcomment.thtml</tt> is actually a new file).</li>
   869 <li>In <tt>calendar/dayview/dayview.thtml</tt>, i.e. in the calendar's day
   870     view, the hard-coded am/pm times have been replaced by variables of the
   871     form {xx_hour} (where 'xx' is 0-23).</li>
   872 <li>In the event details template, i.e. in <tt>calendar/eventdetails.thtml</tt>,
   873     the event type and an edit icon were added (this change was only made in
   874     Geeklog 1.3.10rc3).</li>
   875 <li>A "location" field was added in the user's profile: Added {lang_location}
   876     and {user_location} in <tt>users/profile.thtml</tt> and {lang_location},
   877     {lang_location_text}, and {location_value} in
   878     <tt>preferences/profile.thtml</tt>.</li>
   879 </ul>
   880 
   881 <h3>Optional changes</h3>
   882 
   883 <p>The following is a list of optional changes (mostly new variables that are
   884 now available). This information is mostly of interest for those who want to
   885 develop their own themes.</p>
   886 
   887 <ul>
   888 <li>{article_url}, i.e. the full URL to an article, is now also available in
   889     <tt>article/printable.thtml</tt>.</li>
   890 <li>In <tt>links/linkdetails.thtml</tt> the new variable {link_actual_url} now
   891     contains the actual link URL (instead of a link to Geeklog's
   892     <tt>portal.php</tt>).</li>
   893 <li>The following variables are now available in <tt>calendar/eventdetails.thtml</tt>:
   894     {event_state_name} (full name of the state), {event_state_only} and
   895     {event_state_name_only} (abbreviated and full state name without the comma),
   896     {event_edit} (link to edit the event, if allowed for the current user),
   897     {edit_icon} (same, but with the edit icon instead of a text link),
   898     {lang_event_type} and {event_type} for the event type
   899 <li>The topic image is now available through the {topic_image} variable in
   900     <tt>topicoption.thtml</tt> and <tt>topicoption_off.thtml</tt></li>
   901 <li>Several class names have been introduced so that the various lists that
   902     Geeklog uses can now be styled individually: list-feed, list-new-comments,
   903     list-new-links, list-new-plugins, list-older-stories, list-personal-events,
   904     list-site-events, list-story-options, list-whats-related (the names should
   905     be self-explanatory).<br>
   906     Use {list_class_name} to get the actual class name, and {list_class} to get
   907     class="classname".</li>
   908 <li>Several class names have been introduced so that the 2 small calendars
   909     in the calendar's month view can be styled: .smallcal, .smallcal-headline,
   910     .smallcal-week-even, .smallcal-week-odd, .smallcal-week-empty,
   911     .smallcal-day-even, .smallcal-day-odd, and .smallcal-day-empty</li>
   912 </ul>
   913 
   914 
   915 <h2><a name="changes139">Theme changes in Geeklog 1.3.9</a></h2>
   916 
   917 <ul>
   918 <li>In <tt>header.thtml</tt>, you can now use the new variable
   919     <code>{allowed_menu_elements}</code> as an alternative to using
   920     <code>{menu_elements}</code>. The new variable takes the
   921     <code>$_CONF['<i>XXX</i>loginrequired']</code> settings into account, i.e.
   922     it will only list those entries that the current user has access to.</li>
   923 <li>The <tt>admin/syndication</tt> directory, containing
   924     <tt>feededitor.thtml</tt>, <tt>listfeeds.thtml</tt>,
   925     <tt>listitem.thtml</tt>, and <tt>selecttype.thtml</tt> has been added.</li>
   926 <li>Template files <tt>comment/comment.thtml</tt> and
   927     <tt>comment/thread.thtml</tt> have been added and
   928     <tt>comment/startcomment.thtml</tt> has been changed to implement
   929     template-driven comments.<br>
   930     Please note that <tt>comment/comment.thtml</tt> was changed <em>again</em>
   931     in Geeklog 1.3.9rc2.</li>
   932 <li>A <code>{link_edit}</code> variable has been added to
   933     <tt>links/linkdetails.thtml</tt> so that admins can edit links directly
   934     from the links section.</li>
   935 <li>An "edit" icon has been added: <tt>images/edit.gif</tt>. The new variable
   936     <code>{edit_icon}</code> can be used as an alternative to
   937     <code>{edit_link}</code> in the story template files and in
   938     <tt>links/linkdetails.thtml</tt>.</li>
   939 <li>In the <tt>calendar/calendar.thtml</tt> file, the "mode" parameter has been
   940     added to the &lt;&lt; and &gt;&gt; buttons, so that users stay in their
   941     personal calendar when browsing through months.</li>
   942 <li>A new file, <tt>admin/group/groupmembers.thtml</tt>, has been added and
   943     <tt>admin/group/listitem.thtml</tt> has been changed for the new
   944     alternative option to add users to groups.</li>
   945 <li>A new file, <tt>admin/block/listside.thtml</tt>, has been added and
   946     <tt>admin/block/listitem.thtml</tt> and <tt>admin/block/listblocks.thtml</tt>
   947     have been changed for the enhanced block list.</li>
   948 <li>A <code>{google_paging}</code> variable has been added to
   949     <tt>admin/link/linklist.thtml</tt>. Also added a column number to
   950     <tt>linklist.thtml</tt> and <tt>admin/link/listitem.thtml</tt>.</li>
   951 <li>All template files where the user can enter a URL are now using a new
   952     variable, <code>{max_url_length}</code>, instead of a hard-coded number of
   953     characters for the max. length of the URL. Files affected:
   954     <tt>admin/block/blockeditor.thtml</tt>,
   955     <tt>admin/event/eventeditor.thtml</tt>,
   956     <tt>admin/link/linkeditor.thtml</tt>,
   957     <tt>admin/topic/topiceditor.thtml</tt>,
   958     <tt>submit/submitevent.thtml</tt>, <tt>submit/submitlink.thtml</tt>.</li>
   959 <li>The hard-coded <code>&amp;nbsp;</code> has been removed from the
   960     <code>{welcome_msg}</code> variable. The blank was then added to the
   961     <tt>header.thtml</tt> of the Classic, XSilver, and Yahoo themes (the other
   962     themes either look fine without it or didn't use <code>{welcome_msg}</code>
   963     in the first place).</li>
   964 <li>An extra <code>table</code> has been removed from the
   965     <tt>users/profile.thtml</tt> file of the XSilver theme so that the
   966     username now lines up properly with the other entries.</li>
   967 </ul>
   968 
   969 <h2><a name="changes138">Theme changes in Geeklog 1.3.8</a></h2>
   970 
   971 <p>Theme changes in Geeklog 1.3.8 were mostly aimed at moving as much of the
   972 hard-coded HTML into template files as possible. Other changes were made to
   973 give theme authors better control over the layout and a small portion of changes
   974 were done to incorporate new Geeklog features.</p>
   975 
   976 <h3>New template files</h3>
   977 
   978 <p>This is a list of the new files. You can safely copy these over from one of
   979 the standard themes that ship with Geeklog (most of these files contain HTML
   980 that was previously hard-coded into Geeklog).</p>
   981 
   982 <pre>adminoption_off.thtml
   983 loginform.thtml
   984 topicoption.thtml
   985 topicoption_off.thtml
   986 useroption_off.thtml
   987 admin/database/listbackups.thtml
   988 admin/database/listitem.thtml
   989 admin/user/edituser.thtml
   990 admin/user/plainlist.thtml
   991 comment/commentbar.thtml
   992 comment/startcomment.thtml
   993 pollbooth/pollanswer.thtml
   994 pollbooth/pollblock.thtml
   995 pollbooth/pollcomments.thtml
   996 pollbooth/pollresult.thtml
   997 pollbooth/pollvotes_bar.thtml
   998 pollbooth/pollvotes_num.thtml
   999 preferences/boxesblock.thtml
  1000 preferences/commentblock.thtml
  1001 preferences/deleteaccount.thtml
  1002 preferences/digestblock.thtml
  1003 preferences/displayblock.thtml
  1004 preferences/displayprefs.thtml
  1005 preferences/excludeblock.thtml
  1006 preferences/language.thtml
  1007 preferences/privacyblock.thtml
  1008 preferences/profile.thtml
  1009 preferences/theme.thtml
  1010 preferences/username.thtml
  1011 preferences/userphoto.thtml
  1012 search/resultauthdatehits.thtml
  1013 search/resultrowenhanced.thtml
  1014 search/resultsummary.thtml
  1015 search/resulttitle.thtml
  1016 users/newpassword.thtml</pre>
  1017 
  1018 <p>Note: <tt>preferences</tt> and <tt>admin/database</tt> are new directores.</p>
  1019 
  1020 
  1021 <h3>Changed / updated template files</h3>
  1022 
  1023 <p>These files have changed since Geeklog 1.3.7, i.e. they may contain new
  1024 variables, table columns, etc. If you haven't changed these files in your
  1025 existing theme, it is probably best to simply copy them over from one of the
  1026 themes that ship with Geeklog (with the exception of <tt>style.css</tt> and
  1027 <tt>header.thtml</tt>, see below).</p>
  1028 
  1029 <pre>style.css <em>(see below)</em>
  1030 header.thtml <em>(see below)</em>
  1031 admin/block/blockeditor.thtml
  1032 admin/block/listblocks.thtml
  1033 admin/block/listitem.thtml
  1034 admin/event/eventeditor.thtml
  1035 admin/event/eventlist.thtml
  1036 admin/event/listitem.thtml
  1037 admin/group/grouplist.thtml
  1038 admin/group/listitem.thtml
  1039 admin/story/liststories.thtml
  1040 admin/topic/listitem.thtml
  1041 admin/topic/topiceditor.thtml
  1042 admin/topic/topiclist.thtml
  1043 calendar/editpersonalevent.thtml
  1044 calendar/eventdetails.thtml
  1045 search/searchform.thtml
  1046 search/searchresults.thtml
  1047 submit/submitevent.thtml
  1048 users/getpasswordform.thtml</pre>
  1049 
  1050 <p>In <tt>style.css</tt>, four classes have been added that are used in the
  1051 new search code of Geeklog 1.3.8. Instead of copying over the entire file, you
  1052 will probably only want to copy over the code for those four classes:
  1053 <tt>searchAuth</tt>, <tt>searchDate</tt>, <tt>searchHits</tt>,
  1054 <tt>highlight</tt>.</p>
  1055 
  1056 <p>If the <tt>header.thtml</tt> of your theme is using the
  1057 <tt>{menu_elements}</tt> variable, then you do <em>not</em> need to make any
  1058 changes to it. If it is not using that variable, then you will need to make one
  1059 change to it. In that case, search your <tt>header.thtml</tt> for the link
  1060 to the story submission form, i.e. something like</p>
  1061 <pre style="margin-left:4em;"><code>&lt;a href="{site_url}/submit.php?type=story"&gt;</code></pre>
  1062 <p>and change it to read</p>
  1063 <pre style="margin-left:4em;"><code>&lt;a href="{site_url}/submit.php?type=story{current_topic}"&gt;</code></pre>
  1064 
  1065 
  1066 <h3>Removed template files</h3>
  1067 
  1068 <p>If you have a file named <tt>commentheader.thtml</tt> in your theme
  1069 directory, you can safely remove it. It isn't used at all.</p>
  1070 
  1071 
  1072 <h2><a name="changes137">Theme changes in Geeklog 1.3.7</a></h2>
  1073 
  1074 <p>Please note that all the following changes are <em>optional</em>. Themes
  1075 made for Geeklog 1.3.6 will work just fine with Geeklog 1.3.7 - no changes
  1076 are necessary.</p>
  1077 
  1078 <h3>New features and improvements</h3>
  1079 
  1080 <ul>
  1081   <li>Theme-based topic icons are now supported by setting <tt>$_THEME_URL</tt>
  1082     in the theme's <tt>functions.php</tt> file. The variable should point to
  1083     a directory that has the same hierarchy as Geeklog's images directory
  1084     (note that the path to topic images is stored relative to Geeklog's
  1085     public_html directory).<br>
  1086     <strong>Example:</strong>
  1087     <code>$_THEME_URL = $_CONF['layout_url'];</code></li>
  1088   <li>The <code>$_BLOCK_TEMPLATE</code> "hack" can now be applied to the
  1089     What's Related and Story Options blocks, as well. Use
  1090     <tt>whats_related_block</tt> and <tt>story_options_block</tt> as the block
  1091     names.</li>
  1092   <li>The What's Related and Story Options blocks are now available as
  1093     separate variables using <tt>{whats_related}</tt> and
  1094     <tt>{story_options}</tt>, respectively
  1095     (the <tt>{whats_related_story_options}</tt> variable for both blocks is
  1096     still available).</li>
  1097   <li>Several new variables can now be used in the story templates, e.g.
  1098     <tt>{contributedby_fullname}</tt> for the full name of a story author and
  1099     <tt>{contributedby_photo}</tt> for his/her user photo.</li>
  1100   <li>When the new config variable <tt>$_CONF['showfirstasfeatured']</tt> is set
  1101     to 1, then the first story on <em>every</em> page is rendered using the
  1102     template files for featured stories, even when the story is not marked as
  1103     featured.</li>
  1104 </ul>
  1105 
  1106 <h3>Other changes</h3>
  1107 
  1108 <ul>
  1109   <li>The template file <tt>admin/plugins/installform.thtml</tt> has been
  1110     removed since it isn't used any more.</li>
  1111   <li>Two new <em>optional</em> template files,
  1112     <tt>admin/plugins/newpluginlist.thtml</tt> and
  1113     <tt>admin/plugins/newlistitem.thml</tt>, have been added to support
  1114     formatting of the list of plugins which haven't been installed yet. If
  1115     these files do not exist, hard-coded HTML is used to present the list.</li>
  1116   <li>The template file <tt>admin/link/listitem.thtml</tt> has been changed
  1117     so that all the links are clickable.</li>
  1118   <li><code>COM_pollResults()</code> doesn't use the side block templates any
  1119     more when called from <tt>pollbooth.php</tt>. Therefore, you can now use
  1120     different layouts whether the poll results are displayed in a side block
  1121     or on the separate poll results and comments page.</li>
  1122   <li>Removed the Normal / Archive / Refreshing drop down menus from the admin
  1123     story and poll editors of the themes that ship with Geeklog. The setting
  1124     of this dropdown isn't used in Geeklog anyway and has just confused users
  1125     in the past ... (files <tt>admin/story/storyeditor.thtml</tt> and
  1126     <tt>admin/poll/polleditor.thtml</tt>)</li>
  1127 </ul>
  1128 
  1129 
  1130 <h2><a name="changes136">Theme changes in Geeklog 1.3.6</a></h2>
  1131 
  1132 <p>There have been a lot of changes in the themes for 1.3.6 to get rid of the
  1133 last pieces of hard-coded english texts so as to make localisation easier.
  1134 Most of these changes have been made in the Admin editors (<tt>admin</tt>
  1135 directory) and the calendar (<tt>calendar</tt> directory). If you created
  1136 your own theme for an earlier version of Geeklog, we recommend that you copy
  1137 over these two directories from one of the themes that come with Geeklog
  1138 (choose one that is similar to your own theme or which it was originally based
  1139 on). It seems like most Geeklog themes didn't change these files anyway, so
  1140 this shouldn't be too much of a hassle ...</p>
  1141 
  1142 <h3>Other changes</h3>
  1143 <ul>
  1144   <li>The template file <tt>admin/mail/mailform.thtml</tt> has been added.
  1145     This form for sending emails to other users of the site was previously
  1146     hard-coded into Geeklog.<br>
  1147     If you followed the above advice and copied over the <tt>admin</tt>
  1148     directory to your theme, you got this file already.</li>
  1149   <li>Two new files <tt>menuitem_last.thtml</tt> and
  1150     <tt>menuitem_none.thtml</tt> have been added to give theme authors better
  1151     control over the items in menu bars ({menu_elements} and {plg_menu_elements}
  1152     variables in <tt>header.thtml</tt>). The template file
  1153     <tt>menuitem.thtml</tt> is now used to render the first and any following
  1154     menu items - with the exception of the last menu item, which is rendered
  1155     using <tt>menuitem_last.thtml</tt>. If there are no menu elements for a
  1156     menu bar, <tt>menuitem_none.thtml</tt> is used.</li>
  1157   <li>New files have been added and the existing files have been changed for
  1158     the links section (<tt>links</tt> directory). Again, we recommend to just
  1159     copy over those files from one of the themes that ship with Geeklog.<br>
  1160     The new files are: <tt>categoryactivecol.thtml</tt>,
  1161     <tt>categorycol.thtml</tt>, <tt>categorynavigation.thtml</tt>,
  1162     <tt>categoryrow.thtml</tt>, <tt>pagenavigation.thtml</tt></li>
  1163   <li>The user profile has been extended to include a list of the last 10
  1164     stories as well as the total numbers of stories and comments posted by that
  1165     user. Have a look at the file <tt>users/profile.thtml</tt> to see the
  1166     changes or just copy that file over from one of the themes that ship with
  1167     Geeklog. You should also copy over the file <tt>users/storyrow.thtml</tt>
  1168     which describes the block for the last 1o stories.</li>
  1169   <li>The Classic theme has been updated to have an "Edit" link (for
  1170     StoryAdmins) in every story now.<br>
  1171     Files changed: <tt>storybodytext.thtml</tt>,
  1172     <tt>featuredstorybodytext.thtml</tt></li>
  1173   <li>In the Classic and Digital Monochrome themes the "contact" link now
  1174     points to the form to send an email to the admin user instead of using a
  1175     <code>mailto:</code> link with the site's email address from the
  1176     configuration.</li>
  1177 </ul>
  1178 
  1179 <h3>CSS changes</h3>
  1180 <ul>
  1181 <li>The underscore '_' is not a valid character in CSS. Therefore, some class names used by the Geeklog calendar have been changed to use the dash '-' instead. You may need to change your stylesheet accordingly.<br>
  1182 Names that changed: <b>cal-oldday</b>, <b>cal-today</b>,
  1183 <b>cal-futureday</b>, <b>cal-nullday</b>, <b>weekview-curday</b>,
  1184 <b>weekview-offday</b></li>
  1185 <li>A new class named <b>pagenav</b> can be used to format the paged
  1186   navigation.<br>
  1187   Please note that this change was made <em>after</em> the release of Geeklog
  1188   1.3.6rc1 and affects the use of the paged navigation in
  1189   <tt>admin/user/userslist.thtml</tt> and <tt>links/links.thtml</tt>: In
  1190   1.3.6rc1, the navigation was wrapped in &lt;p&gt; tags in those files. As
  1191   of Geeklog 1.3.6 however, the function producing the navigation will wrap
  1192   it in a &lt;div&gt; automatically.</li>
  1193 </ul>
  1194 
  1195 <p><strong>Note:</strong> Theme authors are encouraged to specify a character
  1196 set in the <tt>header.thtml</tt> of their themes like this:</p>
  1197 <pre style="margin-left:4em;"><code>&lt;meta http-equiv="Content-Type" content="text/html; charset={charset}"&gt;</code></pre>
  1198 <p>Geeklog will replace the <code>{charset}</code> variable with the proper
  1199 character set based on the currently used language file. Also make sure that
  1200 you put the above line <em>before</em> the <code>&lt;title&gt;</code> tag in
  1201 the <code>&lt;head&gt;</code> section of your <tt>header.thtml</tt> file.</p>
  1202 
  1203 <div class="footer">
  1204     <a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
  1205     All trademarks and copyrights on this page are owned by their respective owners. Geeklog is copyleft.
  1206 </div>
  1207 </body>
  1208 </html>