diff --git a/components/front.php b/components/front.php
index 469d730467f7024224c8c596033de82f22303054..d0f910e1fc63b5c38e160d44fa95af34994503b4 100644
--- a/components/front.php
+++ b/components/front.php
@@ -12,9 +12,9 @@ if (!$session->loggedin) {
 //include('users.php');
 //$output .= $result;
 //include('planetposts.php');
-$output .= $result;
+//$output .= $result;
 //include('forumposts.php');
-$output .= $result;
+//$output .= $result;
 
 }
 $smarty->assign("secondary",$output);
diff --git a/components/news.php b/components/news.php
index 8c6631e1ffe5794671b96adbbe31d2a14188bb90..ef8a99ca9df8713f700b383cfc725c31e86efd46 100644
--- a/components/news.php
+++ b/components/news.php
@@ -1,7 +1,7 @@
 <?php
 
 // A user must be in the staff group in order to edit content in this component
-$permission = "staff";
+$permission = "html";
 $newstable = "news";
 
 if (isset($session->groups[$permission])) {
@@ -19,6 +19,7 @@ if (isset($session->groups[$permission])) {
 		if ($_REQUEST['id']=="*") {
 			$record['author'] = $session->username;
 			$record['date'] = "now";
+			$record['shorttitle'] = $_REQUEST['edittitle'];
 			$DB->AutoExecute($newstable, $record, 'INSERT');
 		} else {
 			$DB->AutoExecute($newstable, $record, 'UPDATE', "id=".$DB->qstr($_REQUEST['id']));
@@ -54,9 +55,9 @@ if (isset($session->groups[$permission])) {
 		$news = array(array("id" => "*"));
 		$smarty->assign("news", $news);
 	case "edit":
-		$output = $smarty->fetch("news_edit.tpl");
 		$smarty->assign("action", "edit");
 		$smarty->assign("title", "Edit News");
+		$output = $smarty->fetch("news_edit.tpl");
 		break;
 	case "delete-query":
 		$output = $smarty->fetch('news_delete.tpl').$output;		
diff --git a/htdocs/index.php b/htdocs/index.php
index 27b2f1e5df59a63fb932b6ab3e19862724a3564a..3c99268e1254e09647020e945a278789e8ec3bdd 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -104,9 +104,8 @@ if (SUCS_USE_HTTPS) {
 $smarty->assign("ssl_url", $ssl_url);
 
 
-
 // Determine which component to run
-$pathlist = explode('/', parse_url(@$_SERVER['PATH_INFO'],PHP_URL_PATH));
+$pathlist = explode('/', parse_url(rawurldecode(str_replace("_", " ", @$_SERVER['PATH_INFO'])),PHP_URL_PATH));
 while (end($pathlist) === "") array_pop($pathlist);
 $smarty->assign_by_ref("pathlist", $pathlist);
 $path = '';
diff --git a/plugins/function.articlesummary.php b/plugins/function.articlesummary.php
index ee321e1f6d1407d2bc96048ad67daa4b7c818128..2c8a115550d3bdf613017bfd75d352edfea1c4b7 100644
--- a/plugins/function.articlesummary.php
+++ b/plugins/function.articlesummary.php
@@ -1,17 +1,7 @@
 <?php
-
 	function smarty_function_articlesummary($params, &$smarty) {
-		
-		$article = $params['article'];
-		$id = $params['id'];
-		$title = rawurlencode($params['title']);
-
-		$linky = "<span style=\"float: right\"><a href=\"/News/".rawurlencode($title)."\">Read More</a></span>";
-
 		$matches = array();
-		preg_match("/^(<p>.*?<\/p>)/", $article, $matches);
-		$summary = preg_replace("/<\/p>/","$linky</p>", $matches[0]);
-		return $summary;
+		preg_match("/^(<p>.*?<\/p>)/", $params['article'], $matches);
+		return $matches[0];
 	}
-
 ?>
diff --git a/plugins/modifier.encodestring.php b/plugins/modifier.encodestring.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab307310cf4e561d0ef32d1d6714927ae066e15f
--- /dev/null
+++ b/plugins/modifier.encodestring.php
@@ -0,0 +1,8 @@
+<?php
+	function smarty_modifier_encodestring($string) {
+		$string = rawurlencode($string);
+		$string = str_replace("_", "%5F", $string);
+		$string = str_replace("%20", "_", $string);
+		return $string;
+	}
+?>
diff --git a/templates/contents-loop.tpl b/templates/contents-loop.tpl
index a0de4c2811a1932d07b1992d53bfbe7ae76e44a8..d7b118e505226ea43fe236da1180d51c7e65247d 100644
--- a/templates/contents-loop.tpl
+++ b/templates/contents-loop.tpl
@@ -3,8 +3,9 @@
 <ul>
 {/if}
 {foreach name=contents from=$data key=name item=item}
-	{if $level == 0}<h3>{else}<li>{/if}<a href="{$rootnode}{$parent}/{$name}">{$name}</a>{if $level == 0}</h3>
+	{if $level == 0}<h3>{else}<li>{/if}<a href="{$rootnode}{$parent}/{$name|encodestring}">{$name}</a>{if $level == 0}</h3>
 {/if}{if $item.summary}{if $level > 0} - {/if}{$item.summary}{/if}{if is_array($item.file)}
+		{assign var='name' value=$name|encodestring}
 		{include file="contents-loop.tpl" data=$item.file parent="$parent/$name" level=$level}
 {/if}
 {if $level > 0}</li>{/if}
diff --git a/templates/front.tpl b/templates/front.tpl
index 61a448919a1623697b15c4991e24e74108ba1678..345bb7ea3d912198d246c00b0e8f9127da968e01 100644
--- a/templates/front.tpl
+++ b/templates/front.tpl
@@ -8,7 +8,8 @@
 {foreach name=news from=$news key=itemnum item=item}
 	<h3>{$item.title}</h3>
 	<div>
-	{articlesummary id=$item.id article=$item.body title=$item.title}
+	{articlesummary article=$item.body}
+	<span style="float: right"><a href="/News/{$item.title|encodestring}">Read More</a></span>
 	</div>
 {/foreach}
 	<div class="clear"></div>
diff --git a/templates/news.tpl b/templates/news.tpl
index 9279d3662aa0f709f0f6dd9a8c8838c8086a71ce..e59ee47521800df09eda08ba197125114a6f5fef 100644
--- a/templates/news.tpl
+++ b/templates/news.tpl
@@ -8,10 +8,10 @@
 {if $editable}
 <div class="edit">
 <ul>
-<li><a href="{$item.title}?action=delete-query">Delete</a></li>
-<li><a href="{$item.title}?action=edit">Edit</a></li>
+<li><a href="{$item.title|encodestring}?action=delete-query">Delete</a></li>
+<li><a href="{$item.title|encodestring}?action=edit">Edit</a></li>
 {if $item.expirytime > $smarty.now}
-<li><a href="{$item.title}?action=expire-query">Expire</a></li>
+<li><a href="{$item.title|encodestring}?action=expire-query">Expire</a></li>
 {/if}
 </ul>
 <div class="clear"></div>
diff --git a/templates/news_edit.tpl b/templates/news_edit.tpl
index 5adfa4ea37775a4b824d17a1c2ca6a83e66f42cc..c2c5a82015de6ffe0d59403b1f4da9918a967f88 100644
--- a/templates/news_edit.tpl
+++ b/templates/news_edit.tpl
@@ -1,5 +1,5 @@
 
-<h2>Post a news item</h2>
+<h2>{if $action == 'edit'}Edit{else}Post{/if} a news item</h2>
 
 <form class="admin" action="{$path}" method="POST">
         <div class="row">