Index: plugins.php
===================================================================
--- plugins.php	(revision 5798)
+++ plugins.php	(working copy)
@@ -113,6 +113,51 @@
 	_e("Couldn&#8217;t open plugins directory or there are no plugins available."); // TODO: make more helpful
 	echo '</p>';
 } else {
+	
+	echo '<style type="text/css">
+		table#plugins-table-of-contents { border: 1px solid #ccc; width: 100%; margin-bottom: 10px; }
+		table#plugins-table-of-contents ul { list-style-type: none; }
+	</style>';
+	
+	$number_of_plugins = count($plugins);
+	$i = 1;
+
+	foreach ($plugins as $plugin_file => $plugin_data)
+	{
+		$plugins[$i] = $plugin_data;
+		$plugins[$plugin_file] = array_merge($plugin_data, array('order' => $i));
+		$i++;
+	}
+	
+	$table_columns = 5;
+	$plugins_per_table = ceil(count($plugins) / 2 / $table_columns);
+	
+	echo '<h3>Plugins Table of Contents for ' . (count($plugins) / 2) . ' plugins</h3><table id="plugins-table-of-contents"><tr>';
+
+	$k = 1;
+	$starting_plugin = $plugins_per_table;
+	for ($i = 1; $i <= $table_columns; $i++)
+	{
+		echo '<td valign="top"><ul>';
+		for ($j = $k; $j <= $starting_plugin; $j++)
+		{
+			$plugins[$k]['order'] = $k;
+			echo '<li>' . $k . '. <a href="plugins.php#plugin-' . $k . '">' . $plugins[$k]['Name'] . '</a></li>';
+			if ($k == $number_of_plugins)
+				break;
+			$k++;
+		}
+		$starting_plugin += $plugins_per_table;
+		echo '</ul></td>';
+	}
+	
+	echo '</tr></table>';
+	
+	for ($i = 1; $i <= $number_of_plugins; $i++)
+	{
+		unset($plugins[$i]);
+	}
+	
 ?>
 <table class="widefat plugins">
 	<thead>
@@ -153,7 +198,7 @@
 			$edit = '';
 
 		echo "
-	<tr $style>
+	<tr $style id=\"plugin-{$plugin_data['order']}\">
 		<td class='name'>{$plugin_data['Title']}</td>
 		<td class='vers'>{$plugin_data['Version']}</td>
 		<td class='desc'><p>{$plugin_data['Description']} <cite>".sprintf(__('By %s'), $plugin_data['Author']).".</cite></p></td>

