<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://gwiki3.thatlinuxbox.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cordiste</id>
		<title>GeeklogWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://gwiki3.thatlinuxbox.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cordiste"/>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/Special:Contributions/Cordiste"/>
		<updated>2026-04-05T09:59:16Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.5</generator>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Google_Summer_of_Code&amp;diff=6144</id>
		<title>Google Summer of Code</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Google_Summer_of_Code&amp;diff=6144"/>
				<updated>2012-03-09T17:43:21Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: /* Mentors */  Link to cordiste's page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=User:Cordiste&amp;diff=6143</id>
		<title>User:Cordiste</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=User:Cordiste&amp;diff=6143"/>
				<updated>2012-03-09T17:41:21Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: New page: Ben aka cordiste  Contact: http://geeklog.fr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ben aka cordiste&lt;br /&gt;
&lt;br /&gt;
Contact: http://geeklog.fr&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Multi-Site_Setup&amp;diff=5903</id>
		<title>Multi-Site Setup</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Multi-Site_Setup&amp;diff=5903"/>
				<updated>2010-11-08T21:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: /* siteconfig.php */ Allow siteconfig to each site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is it? ==&lt;br /&gt;
&lt;br /&gt;
With only a small modification, Geeklog can be used to run several websites off of one code base, i.e. you only need one physical set of files to run more than one Geeklog site.&lt;br /&gt;
&lt;br /&gt;
Please note that this setup does have some drawbacks and limitations (discussed below) and is not officially supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setting it up ==&lt;br /&gt;
&lt;br /&gt;
Since (almost) all the configuration information is held in the database, we only need to make sure that Geeklog picks the correct database for the site it's supposed to display. The trick is that the global PHP variable &amp;lt;code&amp;gt;$_SERVER['HTTP_HOST']&amp;lt;/code&amp;gt; contains, effectively, the domain name that the visitor used to call up the site. So we modify &amp;lt;tt&amp;gt;db-config.php&amp;lt;/tt&amp;gt; like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (strpos($_SERVER['HTTP_HOST'], 'example.com') !== false) {&lt;br /&gt;
    $_DB_host = 'localhost';&lt;br /&gt;
    $_DB_name = 'database1';&lt;br /&gt;
    $_DB_user = 'dbuser1';&lt;br /&gt;
    $_DB_pass = 'password1';&lt;br /&gt;
    $_DB_table_prefix = 'ex1_';&lt;br /&gt;
} else {&lt;br /&gt;
    $_DB_host = 'localhost';&lt;br /&gt;
    $_DB_name = 'database2';&lt;br /&gt;
    $_DB_user = 'dbuser2';&lt;br /&gt;
    $_DB_pass = 'password2';&lt;br /&gt;
    $_DB_table_prefix = 'ex2_';&lt;br /&gt;
}&lt;br /&gt;
$_DB_dbms = 'mysql';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can add additional &amp;lt;code&amp;gt;elseif&amp;lt;/code&amp;gt; sections for every additional site that you want to support.&lt;br /&gt;
&lt;br /&gt;
=== Tweaks ===&lt;br /&gt;
Minor tweaks:&lt;br /&gt;
* If all databases are using the same host, you only need to list the &amp;lt;code&amp;gt;$_DB_host&amp;lt;/code&amp;gt; variable once.&lt;br /&gt;
* If all sites use their own database, they could also all use the same table prefix, which would also be listed only once then.&lt;br /&gt;
* If you want to run sites with different DBMS (e.g. one site running on Postgres, while others are on MySQL), you would need to move the &amp;lt;code&amp;gt;$_DB_dbms&amp;lt;/code&amp;gt; into the if/else construct.&lt;br /&gt;
&lt;br /&gt;
=== Domain Name ===&lt;br /&gt;
&lt;br /&gt;
Note that we're using &amp;lt;code&amp;gt;strpos&amp;lt;/code&amp;gt; to check for the domain name. This is so that we can both accept &amp;lt;tt&amp;gt;www.example.com&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may want to set up a &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; rule so that your site always uses the same form, despite what the user enters. For example, if you prefer the form &amp;lt;tt&amp;gt;www.example.com&amp;lt;/tt&amp;gt; over others, you can add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTP_HOST} example.com [NC]&lt;br /&gt;
RewriteRule (.*) http://www.example.com/$1 [L,R]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to your &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; to redirect &amp;lt;nowiki&amp;gt;http://example.com/&amp;lt;/nowiki&amp;gt; to &amp;lt;nowiki&amp;gt;http://www.example.com/&amp;lt;/nowiki&amp;gt;. That redirect happens before the above code in your &amp;lt;tt&amp;gt;db-config.php&amp;lt;/tt&amp;gt; is executed, i.e. the code will only see the &amp;quot;www&amp;quot; form then.&lt;br /&gt;
&lt;br /&gt;
=== siteconfig.php ===&lt;br /&gt;
&lt;br /&gt;
As in the db-config.php file, the informations from the &amp;lt;tt&amp;gt;siteconfig.php&amp;lt;/tt&amp;gt; file can be different for each site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($_SERVER['HTTP_HOST'] == 'example1.com') {&lt;br /&gt;
    // To disable your site1 quickly, simply set this flag to false&lt;br /&gt;
    $_CONF['site_enabled'] = true;&lt;br /&gt;
    $_CONF_FCK['imagelibrary'] = '/images/library_site1';&lt;br /&gt;
    $_CONF['default_charset'] = 'utf-8';&lt;br /&gt;
 &lt;br /&gt;
} else if ($_SERVER['HTTP_HOST'] == 'example2.com) {&lt;br /&gt;
    // To disable your site2 quickly, simply set this flag to false&lt;br /&gt;
    $_CONF['site_enabled'] = true;&lt;br /&gt;
    $_CONF_FCK['imagelibrary'] = '/images/library_site2';&lt;br /&gt;
    $_CONF['default_charset'] = 'utf-8';&lt;br /&gt;
&lt;br /&gt;
} else if ($_SERVER['HTTP_HOST'] == 'example3.com) {&lt;br /&gt;
    // To disable your site2 quickly, simply set this flag to false&lt;br /&gt;
    $_CONF['site_enabled'] = false;&lt;br /&gt;
    $_CONF_FCK['imagelibrary'] = '/images/library_site3';&lt;br /&gt;
    $_CONF['default_charset'] = 'utf-8';&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Limitations and Workarounds ==&lt;br /&gt;
&lt;br /&gt;
The main advantage of this setup is also its main limitation: All the resources are shared between sites. This is what we want for the source code, but it also happens for other files. This can be worked around in some cases but not in all of them.&lt;br /&gt;
&lt;br /&gt;
=== Installation and Upgrades ===&lt;br /&gt;
&lt;br /&gt;
Please note that Geeklog's install script is not aware of this hack and will only be able to install or upgrade one site at a time. This makes upgrades especially awkward, as you have to take all the sites down at the same time and then upgrade them one after the other (using temporary copies of &amp;lt;tt&amp;gt;db-config.php&amp;lt;/tt&amp;gt;, since the install script will modify it).&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
All plugins will be available to all the sites. This does not mean, however, that they need to be installed for all of them. You can install, say, the Forum plugin for one site only. Just keep in mind that it will show up as an uninstalled plugin for all the other sites.&lt;br /&gt;
&lt;br /&gt;
Plugins share all of their files with all of the sites. This may cause problems when the plugin stores files in fixed locations (e.g. configuration information that needs to be different for different sites).&lt;br /&gt;
&lt;br /&gt;
==== sitemap.xml ====&lt;br /&gt;
&lt;br /&gt;
Of the plugins that ship with Geeklog, the [[XMLSitemap Plugin]] needs a special setup: The default name for the sitemap file is &amp;lt;tt&amp;gt;sitemap.xml&amp;lt;/tt&amp;gt; and would be used by all the sites which would obviously cause confusion. Go to the XMLSitemap section in the Configuration and make sure you use a different file name for each site.&lt;br /&gt;
&lt;br /&gt;
Note that due to the fact that all your sites share a single [[Multi-Site Setup#robots.txt|robots.txt]] you can ''not'' add the sitemaps to your &amp;lt;tt&amp;gt;robots.txt&amp;lt;/tt&amp;gt; file. Instead, you will have to submit them manually for each site, e.g. via the [https://www.google.com/webmasters/tools/ Google Webmaster Tools].&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
&lt;br /&gt;
Like any other resource, all themes are also available for each site. This may not be a problem if you're using a distinct theme for each site anyway and don't let your users change their theme. Otherwise, you may need to change the [http://www.geeklog.net/docs/english/config.html#desc_path_themes Themes Path] in the Configuration of each site.&lt;br /&gt;
&lt;br /&gt;
==== Favicon ====&lt;br /&gt;
&lt;br /&gt;
Related to the theme: You probably want to use different [http://en.wikipedia.org/wiki/Favicon Favicons] for your sites. Since some browsers are looking for a file called &amp;lt;tt&amp;gt;favicon.ico&amp;lt;/tt&amp;gt; by default, you should make sure ''not'' to have a file of that name. Instead, modify the &amp;lt;tt&amp;gt;header.thtml&amp;lt;/tt&amp;gt; of your site's theme to point to a favicon with a unique name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;SHORTCUT ICON&amp;quot; href=&amp;quot;{site_url}/mysite.ico&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
&lt;br /&gt;
Geeklog's &amp;lt;tt&amp;gt;images&amp;lt;/tt&amp;gt; directory is shared. This may cause problems especially with the user photos (if you allow those). You can disable uploading of user photos and/or switch to using [http://www.geeklog.net/docs/english/config.html#desc_use_gravatar Gravatar].&lt;br /&gt;
&lt;br /&gt;
As long as you make sure not to re-use story IDs, all article images could be left in the same directory. If you can not guarantee that, you may want to separate the images directories (again, in the Configuration). Please note that this will also affect user photos and topic icons.&lt;br /&gt;
&lt;br /&gt;
=== robots.txt ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;robots.txt&amp;lt;/tt&amp;gt; has a fixed file name and will have to be shared between all sites. Keep that in mind when adding entries.&lt;br /&gt;
&lt;br /&gt;
(In theory, it should be possible to set up the server to create the &amp;lt;tt&amp;gt;robots.txt&amp;lt;/tt&amp;gt; dynamically. Not sure if that's worth the effort and it will most likely affect all &amp;lt;tt&amp;gt;.txt&amp;lt;/tt&amp;gt; files on the server.)&lt;br /&gt;
&lt;br /&gt;
=== .htaccess ===&lt;br /&gt;
&lt;br /&gt;
Unless you can tweak you webserver's setup, the &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; will also have to be shared between sites. Keep that in mind when adding redirects or deny rules.&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Google_Code-in&amp;diff=5859</id>
		<title>Google Code-in</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Google_Code-in&amp;diff=5859"/>
				<updated>2010-10-29T07:22:08Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: /* Update plugins list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Information for students =&lt;br /&gt;
&lt;br /&gt;
This is a collection of ''possible'' tasks for the [http://code.google.com/opensource/gci/2010-11/ Google Code-in]. Please note that you can '''not''' claim these tasks from here. Should Geeklog be accepted as a mentoring organization, you will be able to claim tasks from the Code-in homepage, once the contest starts.&lt;br /&gt;
&lt;br /&gt;
For more information, please see the [http://code.google.com/opensource/gci/2010-11/faqs.html Google Code-in FAQ].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tasks =&lt;br /&gt;
&lt;br /&gt;
== Move the FAQ to the wiki ==&lt;br /&gt;
&lt;br /&gt;
Description: The [http://www.geeklog.net/faqman/ Geeklog FAQ] is hard to maintain in its current state (due to technical issues with the FAQ plugin and the fact that contributions can't be included easily). So the idea is to move all the current FAQ topics to the [http://wiki.geeklog.net/ Geeklog Wiki]. Hints: One wiki page per FAQ article. Add a FAQ category. Make sure the formatting, e.g. of sample code, is carried over.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: a few hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== FAQ: Fix occurences of config.php ==&lt;br /&gt;
&lt;br /&gt;
Description: There are a lot of places in the [http://www.geeklog.net/faqman/ Geeklog FAQ] that still refer to the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; that was used for configuration in earlier Geeklog versions. Find and rewrite those sections to refer to the Configuration Admin panel instead. Note: Some occurences may still be valid (e.g. when referring to upgrading from an old version) or may need to refer to the &amp;lt;tt&amp;gt;siteconfig.php&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;db-config.php&amp;lt;/tt&amp;gt; file now instead.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Review the installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Description: Try to install Geeklog following the [http://www.geeklog.net/docs/english/install.html installation instructions]. Make notes of the problems you have ''understanding'' these instructions. Suggest a list of improvements.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Review the installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Description: Try to install Geeklog following the [http://www.geeklog.net/docs/english/install.html installation instructions]. Make notes of the problems you run into ''following'' these instructions. Check that the troubleshooting section covers these problems. If not, suggest additions.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Find a replacement for kses ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog uses [http://sourceforge.net/projects/kses/ kses] as its HTML filter. Since kses is no longer supported, we are looking for a replacement. Research other existing HTML filters and evaluate them. Check features such as filtering abilities (HTML tags + attributes, JavaScript, CSS), ability to close unbalanced HTML tags. Also consider dependency on any frameworks / libraries, ongoing support, and a GPLv2-compatible license.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Research&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Provide a translation for a plugin ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 20 [[What Languages are Available?|languages]]. However, not all of the plugins we ship with Geeklog have been translated to all those languages yet. If you speak one of those languages, [[Translations|provide a missing translation]]. (To do: make a full list of the missing translations; this should easily account for 20+ tasks)&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Translation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4-6 hours each&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentors: preferrably people speaking the language ...&lt;br /&gt;
&lt;br /&gt;
== Update a Geeklog (Core) translation ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 20 [[What Languages are Available?|languages]]. However, not all of the Core language files are actively maintained, so some of them are only partially translated. If you speak one of those languages, [[Translations|update one of those translations]]. (To do: make a full list of the affected translations; this should account for another 10+ tasks)&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Translation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4-6 hours each&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentors: preferrably people speaking the language ...&lt;br /&gt;
&lt;br /&gt;
== Create a &amp;quot;Invitation to contribute&amp;quot; page ==&lt;br /&gt;
&lt;br /&gt;
Description: When you click to download OpenOffice.org, you are taken to [http://download.openoffice.org/contribute.html this page] that explains how you can contribute to OOo. Design a similar page for Geeklog.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Outreach&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
== Design a flyer == &lt;br /&gt;
&lt;br /&gt;
Description: Design a flyer / handout (for inspiration, here's an [http://www.geeklog.net/filemgmt/index.php?id=711 old flyer] and a [http://geeklog.info/filemgmt/index.php?id=170 poster] that can also be used as a flyer). Refer to the [http://www.geeklog.net/docs/english/ Geeklog Documentation] for a list of features.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Outreach&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8-12 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
== Update plugins list  == &lt;br /&gt;
&lt;br /&gt;
Description: Update the [[Unofficial_Plugins|plugins list]] and give some basic informations for each one (Description, last available version, last release date, link to support or contact).&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Research&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8-12 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
= TBD =&lt;br /&gt;
&lt;br /&gt;
More programming tasks can be lifted from the bugtracker:&lt;br /&gt;
* issues labelled &amp;quot;beginner&amp;quot;&lt;br /&gt;
* issues that have a patch attached: try out the patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possible categories: Code, documentation, outreach, QA, research, training, translation, user interface&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Google_Code-in&amp;diff=5858</id>
		<title>Google Code-in</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Google_Code-in&amp;diff=5858"/>
				<updated>2010-10-29T07:19:50Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Create task : Update plugins list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Information for students =&lt;br /&gt;
&lt;br /&gt;
This is a collection of ''possible'' tasks for the [http://code.google.com/opensource/gci/2010-11/ Google Code-in]. Please note that you can '''not''' claim these tasks from here. Should Geeklog be accepted as a mentoring organization, you will be able to claim tasks from the Code-in homepage, once the contest starts.&lt;br /&gt;
&lt;br /&gt;
For more information, please see the [http://code.google.com/opensource/gci/2010-11/faqs.html Google Code-in FAQ].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tasks =&lt;br /&gt;
&lt;br /&gt;
== Move the FAQ to the wiki ==&lt;br /&gt;
&lt;br /&gt;
Description: The [http://www.geeklog.net/faqman/ Geeklog FAQ] is hard to maintain in its current state (due to technical issues with the FAQ plugin and the fact that contributions can't be included easily). So the idea is to move all the current FAQ topics to the [http://wiki.geeklog.net/ Geeklog Wiki]. Hints: One wiki page per FAQ article. Add a FAQ category. Make sure the formatting, e.g. of sample code, is carried over.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: a few hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== FAQ: Fix occurences of config.php ==&lt;br /&gt;
&lt;br /&gt;
Description: There are a lot of places in the [http://www.geeklog.net/faqman/ Geeklog FAQ] that still refer to the &amp;lt;tt&amp;gt;config.php&amp;lt;/tt&amp;gt; that was used for configuration in earlier Geeklog versions. Find and rewrite those sections to refer to the Configuration Admin panel instead. Note: Some occurences may still be valid (e.g. when referring to upgrading from an old version) or may need to refer to the &amp;lt;tt&amp;gt;siteconfig.php&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;db-config.php&amp;lt;/tt&amp;gt; file now instead.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Review the installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Description: Try to install Geeklog following the [http://www.geeklog.net/docs/english/install.html installation instructions]. Make notes of the problems you have ''understanding'' these instructions. Suggest a list of improvements.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Review the installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Description: Try to install Geeklog following the [http://www.geeklog.net/docs/english/install.html installation instructions]. Make notes of the problems you run into ''following'' these instructions. Check that the troubleshooting section covers these problems. If not, suggest additions.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Documentation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: easy&lt;br /&gt;
&amp;lt;br&amp;gt;Time: 1-2 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Find a replacement for kses ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog uses [http://sourceforge.net/projects/kses/ kses] as its HTML filter. Since kses is no longer supported, we are looking for a replacement. Research other existing HTML filters and evaluate them. Check features such as filtering abilities (HTML tags + attributes, JavaScript, CSS), ability to close unbalanced HTML tags. Also consider dependency on any frameworks / libraries, ongoing support, and a GPLv2-compatible license.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Research&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: [[User:Dirk|Dirk Haun]]&lt;br /&gt;
&lt;br /&gt;
== Provide a translation for a plugin ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 20 [[What Languages are Available?|languages]]. However, not all of the plugins we ship with Geeklog have been translated to all those languages yet. If you speak one of those languages, [[Translations|provide a missing translation]]. (To do: make a full list of the missing translations; this should easily account for 20+ tasks)&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Translation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4-6 hours each&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentors: preferrably people speaking the language ...&lt;br /&gt;
&lt;br /&gt;
== Update a Geeklog (Core) translation ==&lt;br /&gt;
&lt;br /&gt;
Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 20 [[What Languages are Available?|languages]]. However, not all of the Core language files are actively maintained, so some of them are only partially translated. If you speak one of those languages, [[Translations|update one of those translations]]. (To do: make a full list of the affected translations; this should account for another 10+ tasks)&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Translation&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4-6 hours each&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentors: preferrably people speaking the language ...&lt;br /&gt;
&lt;br /&gt;
== Create a &amp;quot;Invitation to contribute&amp;quot; page ==&lt;br /&gt;
&lt;br /&gt;
Description: When you click to download OpenOffice.org, you are taken to [http://download.openoffice.org/contribute.html this page] that explains how you can contribute to OOo. Design a similar page for Geeklog.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Outreach&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 4 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
== Design a flyer == &lt;br /&gt;
&lt;br /&gt;
Description: Design a flyer / handout (for inspiration, here's an [http://www.geeklog.net/filemgmt/index.php?id=711 old flyer] and a [http://geeklog.info/filemgmt/index.php?id=170 poster] that can also be used as a flyer). Refer to the [http://www.geeklog.net/docs/english/ Geeklog Documentation] for a list of features.&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Outreach&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8-12 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
== Update plugins list  == &lt;br /&gt;
&lt;br /&gt;
Description: Update the plugins list and give some basic informations for each one (Description, last available version, last release date, link to support or contact).&lt;br /&gt;
&amp;lt;br&amp;gt;Category: Research&lt;br /&gt;
&amp;lt;br&amp;gt;Difficulty: medium&lt;br /&gt;
&amp;lt;br&amp;gt;Time: about 8-12 hours&lt;br /&gt;
&amp;lt;br&amp;gt;Possible Mentor: ???&lt;br /&gt;
&lt;br /&gt;
= TBD =&lt;br /&gt;
&lt;br /&gt;
More programming tasks can be lifted from the bugtracker:&lt;br /&gt;
* issues labelled &amp;quot;beginner&amp;quot;&lt;br /&gt;
* issues that have a patch attached: try out the patch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Possible categories: Code, documentation, outreach, QA, research, training, translation, user interface&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5792</id>
		<title>Adding Moderation Capability</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Adding_Moderation_Capability&amp;diff=5792"/>
				<updated>2010-03-31T17:28:33Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Move explanations into the right  paragraphs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section will describe and document how to enable your plugin to use the Geeklog moderation engine.&lt;br /&gt;
&lt;br /&gt;
==Note==&lt;br /&gt;
This set of functions is optional when creating your plugin, but should be used when your plugin has functionality that includes submitting of an item that needs to be reviewed by a site admin or plugin admin before posting to the site.  The Geeklog (GL) developers have made the implementation of this API very straight forward and enabled the API calls into the moderation related &lt;br /&gt;
core programs.&lt;br /&gt;
&lt;br /&gt;
===Version note===&lt;br /&gt;
You will need to be using Geeklog version 1.3.7 or apply the &lt;br /&gt;
changes noted in the appendix to successfully use the Moderation API's, though some functionality may work with previous versions of Geeklog.  The changes with 1.3.7 release include the following programs:  moderation.php, submit.php, plugin.class.php and lib-plugins.php.&lt;br /&gt;
Refer to the appendix if you have a previous release and want to review the needed changes.&lt;br /&gt;
&lt;br /&gt;
==The functions==&lt;br /&gt;
There are six (6) plugin functions that are required for the moderation plugin and two (2) optional functions.  The example functions that are provided can be used as guide, but they will required some changes to make them work for your plugin.  &lt;br /&gt;
&lt;br /&gt;
The following table summarizes the functions:&lt;br /&gt;
&lt;br /&gt;
{|cellPadding=&amp;quot;2&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!width=4%|&lt;br /&gt;
!Function&lt;br /&gt;
!Description of Function&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[#plugin_ismoderator_&amp;lt;plugin name&amp;gt;|plugin_ismoderator_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Checks if the current user has rights to moderate for the plugin and returns true if this is the case, false otherwise.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[#plugin_submissioncount_&amp;lt;plugin name&amp;gt;|plugin_submissioncount_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Calculates the current number of submissions awaiting moderation and returns that number.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[#plugin_savesubmission_&amp;lt;plugin name&amp;gt;|plugin_savesubmission_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Takes the data input by the plugin submission form and populates the &amp;lt;plugin name&amp;gt; submission table with that data.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[#plugin_moderationvalues_&amp;lt;plugin name&amp;gt;|plugin_moderationvalues_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Returns a list of important moderation values.  The list contains (in order): the row 'id' label, the main plugin table name, comma separated string of moderation fields, and the plugin submission table name.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[#plugin_itemlist_&amp;lt;plugin name&amp;gt;|plugin_itemlist_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Uses the plugin class to return data required by moderation.php to list plugin objects that need to be moderated.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[#plugin_submit_&amp;lt;plugin name&amp;gt;|plugin_submit_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|Returns a string containing the HTML to display the plugin submission form.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[#plugin_moderationapprove_&amp;lt;plugin name&amp;gt;|plugin_moderationapprove_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|This optional function supplements moderation.php.  While moderation.php actually moves data from the &amp;lt;plugin name&amp;gt; submission table to the main &amp;lt;plugin name&amp;gt; table, this function executes all other submission approval tasks including any other database updates required by your plugin.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[#plugin_moderationdelete_&amp;lt;plugin name&amp;gt;|plugin_moderationdelete_&amp;lt;plugin name&amp;gt;]]&lt;br /&gt;
|This optional function supplements moderation.php.  While moderation.php actually removes data from the &amp;lt;plugin name&amp;gt; submission table, this function executes all other submission removal tasks including any other database updates required by your plugin.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== How to call the Moderation Engine ===&lt;br /&gt;
&lt;br /&gt;
After you implement the moderation functions in your plugin, you will need to call the Geeklog moderation engine or program to create or moderate the submission. This can be done by adding a link or button which redirects the user to submit.php or moderate.php with the necessary parameters from your plugin.&lt;br /&gt;
&lt;br /&gt;
The example below was used by the Mailing Lists plugin to link to the 'submit new mailing list' page.  The link to submit.php needs to be passed with the parameter '''type''' to indicate which plugin's submission form should be displayed.  The  variable $retval is assigned the formatted link which will be displayed as a link in the plugin display.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$retval = &amp;quot;&amp;lt;a href='&amp;quot; . $_CONF['site_url'] . &amp;quot;/submit.php?type=lists'&amp;gt;&amp;quot; . $LANG_LISTS['SUBMITLIST'] . &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Admin interaction with the Moderation Engine:''' Once all the moderation&lt;br /&gt;
functions are implemented, the 'Submissions' link in the admin block will include a list of all submissions to be moderated (they can be approved, removed or edited).  You must write your own submission edit function located in $_CONF['site_admin_url'] . '/plugins/&amp;lt;plugin name&amp;gt;/&amp;lt;plugin name&amp;gt;.php. It will be passed the http variables id=&amp;lt;item id&amp;gt; and mode=editsubmission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugin database changes ===&lt;br /&gt;
&lt;br /&gt;
The table &amp;lt;plugin name&amp;gt; submission must be the name of your submission &lt;br /&gt;
table.  This table can only contain a proper subset of the columns from the main &amp;lt;plugin name&amp;gt; table.  This allows the moderation.php script to &lt;br /&gt;
automatically copy those columns from the submission to the main table upon&lt;br /&gt;
approval.  All data in columns of the submission table that are not in the main table will be lost.&lt;br /&gt;
&lt;br /&gt;
=== Function details and examples ===&lt;br /&gt;
&lt;br /&gt;
This explanation of the plugin moderation API functions will use the Mailing Lists plugin for examples and give a detailed description of each function.&lt;br /&gt;
&lt;br /&gt;
====plugin_ismoderator_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The '''''plugin_ismoderator'''''  function simply returns TRUE if &lt;br /&gt;
the current user has moderation privileges for the plugin.  In the example&lt;br /&gt;
to the right, The mailing lists plugin simply uses the security function &lt;br /&gt;
SEC_hasRights to determine if a user has the required rights.  The lists.admin permission was installed with the plugin.  You could use your own SQL query or some other criteria to determine access rights.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_ismoderator_lists()&lt;br /&gt;
{&lt;br /&gt;
    global $_USER, $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    return SEC_hasRights('lists.admin');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_submissioncount_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The '''''plugin_submissioncount''''' function returns the number of &lt;br /&gt;
submissions for this plugin that are awaiting moderation.  This value is used to indicate the number of waiting submissions in the admin block.  A DB_count() on the plugin submission table is usually sufficient for this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_submissioncount_lists()&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    return DB_count($_TABLES['listssubmission']);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_savesubmission_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The '''''plugin_savesubmission''''' function takes data entered into&lt;br /&gt;
the submission form and saves it to the submission table.  Optionally, this function can use different logic for an admin or power user as seen in the Mailing Lists Plugin.  &lt;br /&gt;
In addition to saving the information to the plugin's submission table, it must also check data entered for validity.   Upon failure the function should return false or redirect to the submission form.  If successful, the function should redirect to a relevant page, or return true.  In Geeklog 1.3.7 the plugin API expects the function to do a redirect (COM_refresh()).  If it does not, a successful return from the function &lt;br /&gt;
will redirect the user back to the Geeklog home page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_savesubmission_lists($A)&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES, $_USER, $_CONF;&lt;br /&gt;
&lt;br /&gt;
    // check for missing fields&lt;br /&gt;
    if (empty($A['ml_name']) || empty($A['ml_descr'])) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (empty($_USER['uid'])) {&lt;br /&gt;
        $owner_id = 1;&lt;br /&gt;
    } else {&lt;br /&gt;
        $owner_id = $_USER['uid'];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (SEC_hasRights('links.admin')) {&lt;br /&gt;
        $result = DB_getItem($_TABLES['groups'], '*', &amp;quot;grp_name = 'lists Admin'&amp;quot;);&lt;br /&gt;
        if ($_CONF['listsarchive'] == 'optional') {&lt;br /&gt;
            $archive = $_CONF['listsarchivedefault'];&lt;br /&gt;
        } elseif ($_CONF['listsarchive'] == 'no') {&lt;br /&gt;
            $archive = 0;&lt;br /&gt;
        } else {     // $_CONF['listsarchive'] == 'yes'&lt;br /&gt;
            $archive = 1;&lt;br /&gt;
        }&lt;br /&gt;
        DB_save($_TABLES['lists'], 'ml_id, ml_name, ml_descr, html, archive, owner_id, group_id',&lt;br /&gt;
                &amp;quot;'&amp;quot; . COM_makeSid() . &amp;quot;', '&amp;quot; . $A['ml_name'] . &amp;quot;', '&amp;quot; . $A['ml_descr'] &lt;br /&gt;
              . &amp;quot;', &amp;quot; . $_CONF['listshtml'] . &amp;quot;, $archive, $owner_id, &amp;quot; . $result['grp_id']);&lt;br /&gt;
    } elseif ($_CONF['listssubmission'] == 1) {&lt;br /&gt;
        DB_save($_TABLES['listssubmission'],&lt;br /&gt;
                'ml_id, ml_name, ml_descr',&lt;br /&gt;
                &amp;quot;'&amp;quot; . COM_makeSid() . &amp;quot;', '&amp;quot; . $A['ml_name'] . &amp;quot;', '&amp;quot; &lt;br /&gt;
              . $A['ml_descr'] . &amp;quot;'&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (DB_error()) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_moderationvalues_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The '''''plugin_moderationvalues''''' function returns important information used by the Plugin API to handle plugin submissions.  It must return an array consisting of the main column id (ml_id), the main table name ($_TABLES['lists']), a comma separated list of columns that will be copied from the plugin submission table to the main table (ml_id, ml_name, ml_descr), and the name of the submission table ($_TABLE['listssubmission']).  This information is used to automatically&lt;br /&gt;
copy information from the plugin submission table to the plugin main table when a submission is approved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_moderationvalues_lists()&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    return array('ml_id', $_TABLES['lists'], 'ml_id, ml_name, ml_descr', $_TABLES['listssubmission']);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_itemlist_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The function '''''plugin_itemlist''''' returns a Plugin() class containing information that will displayed on the moderation.php page.  The following member variables of the Plugin class must be filled out:&lt;br /&gt;
&lt;br /&gt;
* '''submissionlabel:''' The title that indicate the plugin submission section.&lt;br /&gt;
* '''getsubmissionsql:''' An SQL query that will select all the data that will be displayed in the plugin submission section.  NOTE: one item (the unique id column) must be labeled id ('as id').&lt;br /&gt;
* '''addSubmissionHeading():'''  This function must be called once for every field besides the one labeled id.  The parameter passed should be the column name to be displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_itemlist_lists()&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    if (plugin_ismoderator_lists()) {&lt;br /&gt;
        $plugin = new Plugin();&lt;br /&gt;
        $plugin-&amp;gt;submissionlabel = 'Mailing List Submissions';&lt;br /&gt;
        $plugin-&amp;gt;getsubmissionssql = SELECT ml_id as id, ml_name, ml_descr FROM  &lt;br /&gt;
                                   . $_TABLES['listssubmission'];&lt;br /&gt;
        $plugin-&amp;gt;addSubmissionHeading('List Name');&lt;br /&gt;
        $plugin-&amp;gt;addSubmissionHeading('List Description');&lt;br /&gt;
&lt;br /&gt;
        return $plugin;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_submit_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
The function '''''plugin_submit''''' creates HTML that contains the submission form for the plugin.  It is recommended to use the Geeklog template functionality as shown here to create the form.  See the section of this manual [[Using Templates and Language Files|on templates]] for more information.  When creating the form, be sure to include fields for each variable you would like the user to fill along with preview and submit buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_submit_lists()&lt;br /&gt;
{&lt;br /&gt;
    global $_CONF, $LANG12;&lt;br /&gt;
&lt;br /&gt;
    if ($_CONF['listssubmission'] == 0 &amp;amp;amp;&amp;amp;amp; !SEC_hasRights('lists.admin')) {&lt;br /&gt;
        return &amp;quot;Submission queue disabled for mailing lists&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($_POST['mode'] == $LANG12[32]) { // preview&lt;br /&gt;
        $A = $_POST;&lt;br /&gt;
        $ml_id = $A['ml_id'];&lt;br /&gt;
    } else {&lt;br /&gt;
        $ml_id = COM_makesid();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $template = new Template($_CONF['path'] . &amp;quot;plugins/lists/templates/public&amp;quot;);&lt;br /&gt;
    $template-&amp;gt;set_file(array('form' =&amp;gt; 'submit_form.thtml'));&lt;br /&gt;
    $template-&amp;gt;set_var('site_url', $_CONF['site_url']);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_name', 'List Name');&lt;br /&gt;
    $template-&amp;gt;set_var('ml_name', $A['ml_name']);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_descr', 'Description');&lt;br /&gt;
    $template-&amp;gt;set_var('ml_descr', $A['ml_descr']);&lt;br /&gt;
    $template-&amp;gt;set_var('ml_id', $ml_id);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_preview', $LANG12[32]);&lt;br /&gt;
    $template-&amp;gt;set_var('lang_save', $LANG12[8]);&lt;br /&gt;
&lt;br /&gt;
    return $template-&amp;gt;parse('output', 'form');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_moderationapprove_&amp;lt;plugin name&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
Although the moderation.php script takes care of the work of actually moving data from the plugin submission table to the main plugin table, often times a plugin requires more to be done to the plugin tables or for other information to be updated.  Geeklog provides the function '''''plugin_moderationapprove''''' for these tasks.  In the case of the lists plugin, the main plugin table is updated with additional data that it is not desirable for a user to enter.  Instead this function takes care of placing that information into the table.  As of now the return value for this function is ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_moderationapprove_lists($id)&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES, $_USER, $_CONF;&lt;br /&gt;
&lt;br /&gt;
    $result = DB_query(&amp;quot;SELECT * FROM &amp;quot; . $_TABLES['groups'] &lt;br /&gt;
                     . &amp;quot; WHERE grp_name = 'lists Admin'&amp;quot;);&lt;br /&gt;
    $group  = DB_fetchArray($result);&lt;br /&gt;
    if ($_CONF['listsarchive'] == 'optional') {&lt;br /&gt;
        $archive = $_CONF['listsarchivedefault'];&lt;br /&gt;
    } elseif ($_CONF['listsarchive'] == 'no') {&lt;br /&gt;
        $archive = 0;&lt;br /&gt;
    } else {     // $_CONF['listsarchive'] == 'yes'&lt;br /&gt;
        $archive = 1;&lt;br /&gt;
    }&lt;br /&gt;
    $sql = &amp;quot;UPDATE &amp;quot; . $_TABLES['lists'] . &amp;quot; SET owner_id = &amp;quot; . $_USER['uid'] &lt;br /&gt;
         . &amp;quot;, group_id = &amp;quot; . $group['grp_id'] . &amp;quot;, html = &amp;quot; . $_CONF['listshtml']&lt;br /&gt;
         . &amp;quot;, archive = $archive WHERE ml_id = '$id'&amp;quot;;&lt;br /&gt;
    $result = DB_query($sql);&lt;br /&gt;
&lt;br /&gt;
    if (DB_error()) {&lt;br /&gt;
       return 'Error';&lt;br /&gt;
    }&lt;br /&gt;
    return '';&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====plugin_moderationdelete_&amp;lt;plugin name&amp;gt;====&lt;br /&gt;
&lt;br /&gt;
Although the moderation.php script takes care of the work of actually removing data from the plugin submission table for a submission deletion, often times a plugin requires more to be done to the plugin tables or for other information to be updated.  Geeklog provides the function '''''plugin_moderationdelete''''' for these tasks.  In the case of the lists plugin, tables are checked for extraneous data (that should not exist in most cases) and that data is removed if found.  As of now the return value for this function is ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function plugin_moderationdelete_lists($id)&lt;br /&gt;
{&lt;br /&gt;
    global $_TABLES;&lt;br /&gt;
&lt;br /&gt;
    // these tables should not contain any rows with ml_id = $id&lt;br /&gt;
    // this is done 'just in case'&lt;br /&gt;
    DB_delete($_TABLES['listsubscriptions'], 'ml_id', $id);&lt;br /&gt;
    DB_delete($_TABLES['listarchive'], 'ml_id', $id);&lt;br /&gt;
    DB_delete($_TABLES['listpermissions'], 'ml_id', $id);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugin Developers Handbook]] [[Category:Plugin Development]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Who_made_Geeklog%3F&amp;diff=5719</id>
		<title>Who made Geeklog?</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Who_made_Geeklog%3F&amp;diff=5719"/>
				<updated>2010-02-24T10:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: remove aptitude reference and start a developers list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Geeklog was originally used to run the SecurityGeeks and NewsGeeks websites, and has since been released under the GNU General Public License (version 2). It is a bona fide Open Source / Free Software project. The template code Geeklog uses is from PHPLib, however, which is under the LGPL.&lt;br /&gt;
&lt;br /&gt;
Geeklog was originally created by Jason Whittenburg, but like all good open source projects, depends on the community. Geeklog is currently maintained by '''Dirk Haun'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Core developers ==&lt;br /&gt;
&lt;br /&gt;
* Dirk Haun&lt;br /&gt;
* Blaine Lang&lt;br /&gt;
* Tom&lt;br /&gt;
* Sami&lt;br /&gt;
* Tim&lt;br /&gt;
&lt;br /&gt;
== Plugins developers ==&lt;br /&gt;
&lt;br /&gt;
* Blaine Lang&lt;br /&gt;
* ::Ben aka cordiste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thanks for your continued support, and let us know what we can do to make Geeklog better.&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Administration&amp;diff=5536</id>
		<title>Administration</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Administration&amp;diff=5536"/>
				<updated>2009-06-17T20:54:06Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#[[Introduction]]&lt;br /&gt;
#[[Installation]]&lt;br /&gt;
#[[Administration]]&lt;br /&gt;
##[[Configuration]]&lt;br /&gt;
###[[The Geeklog Configuration File]]&lt;br /&gt;
#### (also see [[ConfigFile14|the 1.4 version]] of this page)&lt;br /&gt;
###[[Remote Authentication]]&lt;br /&gt;
####[[LDAP Remote Authentication]]&lt;br /&gt;
####[[OpenID]]&lt;br /&gt;
###[[Blocks]]&lt;br /&gt;
####[[Official Blocks|Official]]&lt;br /&gt;
#####[[Whos Online Block|Who's Online Block]]&lt;br /&gt;
#####[[Topics Block]]&lt;br /&gt;
#####[[Admins Block]]&lt;br /&gt;
#####[[User Settings &amp;amp; User Functions Block]]&lt;br /&gt;
#####[[What's New Block]]&lt;br /&gt;
#####[[Poll Block]]&lt;br /&gt;
#####[[Events Block]]&lt;br /&gt;
#####[[Older Stories Block]]&lt;br /&gt;
####[[Unofficial Blocks|Unofficial]]&lt;br /&gt;
#####[[News Block]]&lt;br /&gt;
####[[Block Types]]&lt;br /&gt;
###[[Plugins]]&lt;br /&gt;
####[[Official Plugins|Bundled Plugins]]&lt;br /&gt;
#####[[Calendar Plugin]]&lt;br /&gt;
#####[[Links Plugin]]&lt;br /&gt;
#####[[Polls Plugin]]&lt;br /&gt;
#####[[Static Pages Plugin]]&lt;br /&gt;
#####[[Spam-X Plugin]]&lt;br /&gt;
#####[[XMLSitemap Plugin]]&lt;br /&gt;
####[[Unofficial Plugins|3rd Party Plugins]]&lt;br /&gt;
#####[[Ban Plugin]]&lt;br /&gt;
#####[[Captcha Plugin]]&lt;br /&gt;
#####[[Contacts Plugin]]&lt;br /&gt;
#####[[Dokuwiki plugin]]&lt;br /&gt;
#####[[External Pages Plugin]]&lt;br /&gt;
#####[[FAQ Manager Plugin]]&lt;br /&gt;
#####[[File Management Plugin]]&lt;br /&gt;
#####[[Forum Plugin]]&lt;br /&gt;
#####[[GlinksPlugin]]&lt;br /&gt;
#####[[Mediagallery Plugin]]&lt;br /&gt;
#####[[Menu Plugin]]&lt;br /&gt;
#####[[MultiFAQ Plugin]]&lt;br /&gt;
#####[[Net Tools]]&lt;br /&gt;
#####[[ThingsToDoPlugin]]&lt;br /&gt;
#####[[Visitor Stats Plugin]]&lt;br /&gt;
####[[How To Install A Geeklog Plugin]] &lt;br /&gt;
###[[Themes]]&lt;br /&gt;
####[[Installing Themes]]&lt;br /&gt;
####[[Custom Themes]]&lt;br /&gt;
####[[Default Themes]]&lt;br /&gt;
####[[Other Themes]]&lt;br /&gt;
####[[ThemePort|Porting a Theme]]&lt;br /&gt;
###[[Hacks]]&lt;br /&gt;
####[[Admin Toolbox]]&lt;br /&gt;
##[[Daily Administration]]&lt;br /&gt;
###[[Users and Groups]]&lt;br /&gt;
###[[Adding and Managing Content]]&lt;br /&gt;
####[[Content Types]]&lt;br /&gt;
#####[[Stories]]&lt;br /&gt;
#####[[Links]]&lt;br /&gt;
#####[[Events]]&lt;br /&gt;
#####[[Polls]]&lt;br /&gt;
####[[Topics]]&lt;br /&gt;
####[[Editors and Admins]]&lt;br /&gt;
####[[Submission Queues]]&lt;br /&gt;
####[[Comments]]&lt;br /&gt;
###[[Geeklog Permissions]]&lt;br /&gt;
###[[Troubleshooting]]&lt;br /&gt;
###[[Dealing with Spam]]&lt;br /&gt;
##[[HowTo|Quick How-Tos]]&lt;br /&gt;
##[[Security Guidelines]]&lt;br /&gt;
#[[Users Documentation|User's Documentation]]&lt;br /&gt;
#[[Programmers/Developers Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Geeklog Documentation|Main TOC]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Complete Table of Contents]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Unofficial_Plugins&amp;diff=5348</id>
		<title>Unofficial Plugins</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Unofficial_Plugins&amp;diff=5348"/>
				<updated>2009-05-18T22:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: start a plugin list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unofficial Plugins are plugins that are not included in the official release of Geeklog.  Some are created by the Geeklog developers, many by other developers for their own needs and contributed back to the project.&lt;br /&gt;
&lt;br /&gt;
== Plugins List ==&lt;br /&gt;
&lt;br /&gt;
=== Analytics ===&lt;br /&gt;
&lt;br /&gt;
=== Archive ===&lt;br /&gt;
&lt;br /&gt;
=== Autosave ===&lt;br /&gt;
&lt;br /&gt;
=== AutoTags ===&lt;br /&gt;
&lt;br /&gt;
=== Bad Behavior2 ===&lt;br /&gt;
&lt;br /&gt;
=== CAPTCHA ===&lt;br /&gt;
&lt;br /&gt;
=== chameleon ===&lt;br /&gt;
&lt;br /&gt;
=== Chatterblock ===&lt;br /&gt;
&lt;br /&gt;
=== Comment Feeds ===&lt;br /&gt;
&lt;br /&gt;
=== dataproxy ===&lt;br /&gt;
&lt;br /&gt;
=== DBman ===&lt;br /&gt;
&lt;br /&gt;
=== DokuWiki ===&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&lt;br /&gt;
=== FAQManager ===&lt;br /&gt;
&lt;br /&gt;
=== MultiFAQ ===&lt;br /&gt;
&lt;br /&gt;
=== FileMgmt ===&lt;br /&gt;
&lt;br /&gt;
=== Forum ===&lt;br /&gt;
&lt;br /&gt;
=== Flickr ===&lt;br /&gt;
&lt;br /&gt;
=== G2Bridge ===&lt;br /&gt;
&lt;br /&gt;
=== glEventMgr ===&lt;br /&gt;
&lt;br /&gt;
=== glMenu ===&lt;br /&gt;
&lt;br /&gt;
=== glMessenger ===&lt;br /&gt;
&lt;br /&gt;
=== glQuiz ===&lt;br /&gt;
&lt;br /&gt;
=== GL Utility ===&lt;br /&gt;
&lt;br /&gt;
=== Geeklog Usage Stats ===&lt;br /&gt;
&lt;br /&gt;
=== Mantis ===&lt;br /&gt;
&lt;br /&gt;
=== Manual Digets ===&lt;br /&gt;
&lt;br /&gt;
=== Media Gallery ===&lt;br /&gt;
&lt;br /&gt;
=== paypal ===&lt;br /&gt;
&lt;br /&gt;
=== phpbbbridge ===&lt;br /&gt;
&lt;br /&gt;
=== tag ===&lt;br /&gt;
&lt;br /&gt;
=== TaskMan ===&lt;br /&gt;
&lt;br /&gt;
=== Technorati ===&lt;br /&gt;
&lt;br /&gt;
=== tkgmaps ===&lt;br /&gt;
&lt;br /&gt;
=== Testimonials ===&lt;br /&gt;
&lt;br /&gt;
=== vthemes ===&lt;br /&gt;
&lt;br /&gt;
=== YouTube ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there is a plugin missing that you are running or developed, please add it to the list.  Feel free to add any information about the plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Plugins&amp;diff=5347</id>
		<title>Plugins</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Plugins&amp;diff=5347"/>
				<updated>2009-05-18T21:41:40Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Geeklog plugins are addon components that provide new functionality and leverage the internal services of Geeklog. Many of the available and contributed plugins are listed in this document. Plugins are different then blocks which normally do not use any of the internal Geeklog services (API's).&lt;br /&gt;
&lt;br /&gt;
* See [[Official_Plugins|Official Plugins]]&lt;br /&gt;
* See [[UnOfficial_Plugins|Unofficial Plugins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many services that a plugin can use to provide a tightly coupled application that now performs and looks like it a natural part of the over all Geeklog solution. It's possible to just wrap Geeklog around another application but it may have it's own security and user model for example. It's far better to have a single user database and security model to manage users and access to site features.&lt;br /&gt;
&lt;br /&gt;
Plugins will for example automatically add themselves to your site navigation and provide the ability to restrict and control access to the component for public access and administrative functions.&lt;br /&gt;
&lt;br /&gt;
Geeklog Plugins have access to the following services or API's&lt;br /&gt;
* Plugin Editor to install/de-install and enable/disable plugins&lt;br /&gt;
* Provide links to the SiteHeader Navigation, User and Admin Menu's&lt;br /&gt;
* Add to the site search function&lt;br /&gt;
* Extend the site stats reporting&lt;br /&gt;
* Leverage the GL Comment Engine&lt;br /&gt;
* Automatically update tables upon user add/edit/delete&lt;br /&gt;
* Extend the User Account Profile - add new options&lt;br /&gt;
* Support moderation to have admin approve content changes&lt;br /&gt;
* Provide new RSS Newsfeeds&lt;br /&gt;
* Provide a formatted Centerblock&lt;br /&gt;
* Integrate into the WhatsNew block&lt;br /&gt;
&lt;br /&gt;
Plugins can be complete applications or provide a new administrative service but they all need to support a minimum set of features to be called a plugin.&lt;br /&gt;
* Support the Plugin Editor Install/De-install&lt;br /&gt;
* Provide new security rights such as plugin_name.edit and plugin_name.user&lt;br /&gt;
* Provide menu integration&lt;br /&gt;
&lt;br /&gt;
Plugins all have a similar installation procedure which requires a few manual steps to copy the plugin related files to the required directories. This part of the plugin installation is often confusing for new users/site admins. This is understandable but once you do one plugin, you will find others much easier to install. &lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' By default the '''staticpages''' plugin is installed as part of the core Geeklog installation. Use this also as an example.&lt;br /&gt;
&lt;br /&gt;
In addition, each plugin may have other steps that need to be performed so read the plugin installation directions carefully.&lt;br /&gt;
&lt;br /&gt;
As an overview to assist you with installing a plugin, I have created an illustrated image that describes the directory structure and locations of the plugin related folders and files. [[Image:PluginInstallOverview.jpg]]&lt;br /&gt;
&lt;br /&gt;
Once the files are copied and in place as required, you will use the Admin Plugin Editor to complete the installation. The plugin editor will automatically list new un-installed plugins if the files have been copied correctly. If not - then review your previous steps.&lt;br /&gt;
&lt;br /&gt;
The plugin editor will call the plugin install or de-install functions - which are part of the new plugin program files. The installation process will&lt;br /&gt;
* Create all required new tables&lt;br /&gt;
* Add any new default data&lt;br /&gt;
* Add the new security rights and update the admin user permissions&lt;br /&gt;
* Register the plugin as installed if all these steps are steps are completed without error.&lt;br /&gt;
&lt;br /&gt;
Note: If there are any errors during installation, the plugin will (should) by default remove itself and delete the added tables.&lt;br /&gt;
&lt;br /&gt;
Troubleshooting: Review the Geeklog error.log file for a detailed trace of the installation for any related errors if the install is not successful.&lt;br /&gt;
&lt;br /&gt;
The following illustrated image shows the Plugin Editor with an overview of it's usage.&lt;br /&gt;
[[Image:PluginEditor.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Geeklog_Documentation&amp;diff=5346</id>
		<title>Geeklog Documentation</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Geeklog_Documentation&amp;diff=5346"/>
				<updated>2009-05-18T21:34:36Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: /* Geeklog Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Logo.gif]]&lt;br /&gt;
&lt;br /&gt;
== Geeklog Documentation ==&lt;br /&gt;
&lt;br /&gt;
# [[Introduction]]&lt;br /&gt;
# [[Installation]]&lt;br /&gt;
# [[Administration]]&lt;br /&gt;
## ''[[Plugins]]''&lt;br /&gt;
## ''[[Themes]]''&lt;br /&gt;
# [[Users Documentation|User's Documentation]]&lt;br /&gt;
# [[Programmers/Developers Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Complete Table of Contents]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5345</id>
		<title>Other Themes</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5345"/>
				<updated>2009-05-18T21:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking for the Geeklog themes? Here's the place to find them! Welcome to the Geeklog Themes list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geeklog alphabetic Themes list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== colors ===&lt;br /&gt;
&lt;br /&gt;
By [http://geeklog.fr/filemgmt/index.php?id=11 ::Ben]&lt;br /&gt;
[[Image:Tn colors.png|200px|thumb|none]]&lt;br /&gt;
Last version 1.5.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nouveau ===&lt;br /&gt;
By Eric Warren&lt;br /&gt;
[[Image:Tn nouveau.png|200px|thumb|none]]&lt;br /&gt;
Nouveau is a fixed &amp;amp; fluid width, blue &amp;amp; grey neutral theme&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pure ===&lt;br /&gt;
&lt;br /&gt;
By [http://geeklog.fr/filemgmt/index.php?id=18 ::Ben]&lt;br /&gt;
[[Image:Tn pure.png|200px|thumb|none]]&lt;br /&gt;
Pure is a fluid width theme for Geeklog 1.5.1. Tested it in Firefox 2 and 3, IE 6/7, Opera 9, and Safari beta 3 on Windows. Features: Tableless markup. SEO friendly where content comes first in the code, followed by the left and right blocks. MooTools Javascript Library v1.11 integration, including some javascript widgets. Additional typography elements with quote and code styling, multiple list styling options, and more. Last version 1.5.1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Feel free to add your theme if you are a designer.&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5344</id>
		<title>Other Themes</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5344"/>
				<updated>2009-05-18T21:19:13Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: /* Geeklog alphabetic Themes list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking for the Geeklog themes? Here's the place to find them! Welcome to the Geeklog Themes list.&lt;br /&gt;
&lt;br /&gt;
Feel free to add your theme if you are a designer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geeklog alphabetic Themes list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== colors ===&lt;br /&gt;
&lt;br /&gt;
By [http://geeklog.fr/filemgmt/index.php?id=11 ::Ben]&lt;br /&gt;
[[Image:Tn colors.png|200px|thumb|none]]&lt;br /&gt;
Last version 1.5.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nouveau ===&lt;br /&gt;
By Eric Warren&lt;br /&gt;
[[Image:Tn nouveau.png|200px|thumb|none]]&lt;br /&gt;
Nouveau is a fixed &amp;amp; fluid width, blue &amp;amp; grey neutral theme&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pure ===&lt;br /&gt;
&lt;br /&gt;
By [http://geeklog.fr/filemgmt/index.php?id=18 ::Ben]&lt;br /&gt;
[[Image:Tn pure.png|200px|thumb|none]]&lt;br /&gt;
Pure is a fluid width theme for Geeklog 1.5.1. Tested it in Firefox 2 and 3, IE 6/7, Opera 9, and Safari beta 3 on Windows. Features: Tableless markup. SEO friendly where content comes first in the code, followed by the left and right blocks. MooTools Javascript Library v1.11 integration, including some javascript widgets. Additional typography elements with quote and code styling, multiple list styling options, and more. Last version 1.5.1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5343</id>
		<title>Other Themes</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Other_Themes&amp;diff=5343"/>
				<updated>2009-05-18T21:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looking for the Geeklog themes? Here's the place to find them! Welcome to the Geeklog Themes list.&lt;br /&gt;
&lt;br /&gt;
Feel free to add your theme if you are a designer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Geeklog alphabetic Themes list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Colors''' by [http://geeklog.fr/filemgmt/index.php?id=11 ::Ben]&lt;br /&gt;
[[Image:Tn colors.png|200px|thumb|none]]&lt;br /&gt;
Last version 1.5.0.4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Nouveau''' by Eric Warren&lt;br /&gt;
[[Image:Tn nouveau.png|200px|thumb|none]]&lt;br /&gt;
Nouveau is a fixed &amp;amp; fluid width, blue &amp;amp; grey neutral theme&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Pure''' by [http://geeklog.fr/filemgmt/index.php?id=18 ::Ben]&lt;br /&gt;
[[Image:Tn pure.png|200px|thumb|none]]&lt;br /&gt;
Pure is a fluid width theme for Geeklog 1.5.1. Tested it in Firefox 2 and 3, IE 6/7, Opera 9, and Safari beta 3 on Windows. Features: Tableless markup. SEO friendly where content comes first in the code, followed by the left and right blocks. MooTools Javascript Library v1.11 integration, including some javascript widgets. Additional typography elements with quote and code styling, multiple list styling options, and more. Last version 1.5.1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_colors.png&amp;diff=5342</id>
		<title>File:Tn colors.png</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_colors.png&amp;diff=5342"/>
				<updated>2009-05-18T21:12:14Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Colors theme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Colors theme&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_nouveau.png&amp;diff=5341</id>
		<title>File:Tn nouveau.png</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_nouveau.png&amp;diff=5341"/>
				<updated>2009-05-18T20:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_pure.png&amp;diff=5340</id>
		<title>File:Tn pure.png</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=File:Tn_pure.png&amp;diff=5340"/>
				<updated>2009-05-18T20:50:08Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: pure theme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pure theme&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=Themes&amp;diff=5339</id>
		<title>Themes</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=Themes&amp;diff=5339"/>
				<updated>2009-05-18T20:26:43Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Creation of the main theme page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Themes allow you to change the look and feel of your site. The Geeklog designers and developers have done an excellent job of separating the code from the presentation layer, so it is pretty easy to customize your sites look and feel without ever touching the PHP code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Professional theme''' is included in the official release of Geeklog.&lt;br /&gt;
&lt;br /&gt;
[[Image:Professional.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#[[Installing Themes]]&lt;br /&gt;
#[[Custom Themes]]&lt;br /&gt;
#[[Default Themes]]&lt;br /&gt;
#[[Other Themes]]&lt;br /&gt;
#[[ThemePort|Porting a Theme]]&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=File:Professional.png&amp;diff=5338</id>
		<title>File:Professional.png</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=File:Professional.png&amp;diff=5338"/>
				<updated>2009-05-18T20:23:42Z</updated>
		
		<summary type="html">&lt;p&gt;Cordiste: Professional theme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Professional theme&lt;/div&gt;</summary>
		<author><name>Cordiste</name></author>	</entry>

	</feed>