<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>modules/swfupload/info.yaml</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Core Changelog.txt</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/Delegate.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/ExternalCall.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/FileItem.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/SWFUpload v2.as2proj</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/SWFUpload.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/deploy.bat</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash8/swfupload_f8.swf</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/ExternalCall.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/FileItem.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/SWFUpload v2.as3proj</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/SWFUpload.as</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/SWFUpload.as.bak</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/deploy.bat</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/obj/SWFUpload-v2Config.old</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/obj/SWFUpload-v2Config.xml</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/Flash9/swfupload_f9.swf</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/SWFObject License.txt</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/deploy.bat</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/license.txt</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.cookies.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.graceful_degradation.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.queue.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.swfobject.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.accept.png</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.add.png</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.callbacks.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.cancel.png</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.progressbar.png</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/plugins/swfupload.v102/swfupload.v102.theme.css</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/FlashDevelop/swfupload.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/fileprogress.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/handlers.js</filename>
    </added>
    <added>
      <filename>modules/swfupload/lib/index.php</filename>
    </added>
    <added>
      <filename>modules/swfupload/style.css</filename>
    </added>
    <added>
      <filename>modules/swfupload/swfupload.php</filename>
    </added>
    <added>
      <filename>modules/swfupload/upload_handler.php</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -22,13 +22,24 @@
 			$this-&gt;respondTo(&quot;feed_item&quot;, &quot;enclose_mp3&quot;);
 			$this-&gt;respondTo(&quot;filter_post&quot;, &quot;filter_post&quot;);
 		}
+		public function __init() {
+			if (!ADMIN or !isset($_GET['action']) or !isset($_GET['feather']))
+				return;
+			if ($_GET['action'] != &quot;write_post&quot; or $_GET['feather'] != &quot;audio&quot;)
+				return;
+
+			Trigger::current()-&gt;call(&quot;prepare_swfupload&quot;, &quot;audio&quot;, &quot;*.mp3&quot;);
+		}
 		public function submit() {
-			if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0)
-				$filename = upload($_FILES['audio'], &quot;mp3&quot;);
-			elseif (!empty($_POST['from_url']))
-				$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
-			else
-				error(__(&quot;Error&quot;), __(&quot;Couldn't upload audio file.&quot;));
+			if (!isset($_POST['filename'])) {
+				if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0)
+					$filename = upload($_FILES['audio'], &quot;mp3&quot;);
+				elseif (!empty($_POST['from_url']))
+					$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
+				else
+					error(__(&quot;Error&quot;), __(&quot;Couldn't upload audio file.&quot;));
+			} else
+				$filename = $_POST['filename'];
 
 			return Post::add(array(&quot;filename&quot; =&gt; $filename,
 			                        &quot;description&quot; =&gt; $_POST['description']),
@@ -38,14 +49,17 @@
 		public function update() {
 			$post = new Post($_POST['id']);
 
-			if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0) {
-				$this-&gt;delete_file($post);
-				$filename = upload($_FILES['audio'], &quot;mp3&quot;);
-			} elseif (!empty($_POST['from_url'])) {
-				$this-&gt;delete_file($post);
-				$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
-			} else
-				$filename = $post-&gt;filename;
+			if (!isset($_POST['filename']))
+				if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0) {
+					$this-&gt;delete_file($post);
+					$filename = upload($_FILES['audio'], &quot;mp3&quot;);
+				} elseif (!empty($_POST['from_url'])) {
+					$this-&gt;delete_file($post);
+					$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
+				} else
+					$filename = $post-&gt;filename;
+			else
+				$filename = $_POST['filename'];
 
 			$post-&gt;update(array(&quot;filename&quot; =&gt; $filename,
 			                    &quot;description&quot; =&gt; $_POST['description']));</diff>
      <filename>feathers/audio/audio.php</filename>
    </modified>
    <modified>
      <diff>@@ -22,13 +22,24 @@
 			$this-&gt;respondTo(&quot;new_post_options&quot;, &quot;alt_text_field&quot;);
 			$this-&gt;respondTo(&quot;edit_post_options&quot;, &quot;alt_text_field&quot;);
 		}
+		public function __init() {
+			if (!ADMIN or !isset($_GET['action']) or !isset($_GET['feather']))
+				return;
+			if ($_GET['action'] != &quot;write_post&quot; or $_GET['feather'] != &quot;photo&quot;)
+				return;
+
+			Trigger::current()-&gt;call(&quot;prepare_swfupload&quot;, &quot;photo&quot;, &quot;*.jpg;*.jpeg;*.png;*.gif;*.tiff;*.bmp&quot;);
+		}
 		public function submit() {
-			if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0)
-				$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
-			elseif (!empty($_POST['from_url']))
-				$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
-			else
-				error(__(&quot;Error&quot;), __(&quot;Couldn't upload photo.&quot;));
+			if (!isset($_POST['filename'])) {
+				if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0)
+					$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+				elseif (!empty($_POST['from_url']))
+					$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+				else
+					error(__(&quot;Error&quot;), __(&quot;Couldn't upload photo.&quot;));
+			} else
+				$filename = $_POST['filename'];
 
 			return Post::add(array(&quot;filename&quot; =&gt; $filename,
 			                        &quot;caption&quot; =&gt; $_POST['caption']),
@@ -38,14 +49,17 @@
 		public function update() {
 			$post = new Post($_POST['id']);
 
-			if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0) {
-				$this-&gt;delete_file($post);
-				$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
-			} elseif (!empty($_POST['from_url'])) {
-				$this-&gt;delete_file($post);
-				$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
-			} else
-				$filename = $post-&gt;filename;
+			if (!isset($_POST['filename']))
+				if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0) {
+					$this-&gt;delete_file($post);
+					$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+				} elseif (!empty($_POST['from_url'])) {
+					$this-&gt;delete_file($post);
+					$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+				} else
+					$filename = $post-&gt;filename;
+			else
+				$filename = $_POST['filename'];
 
 			$post-&gt;update(array(&quot;filename&quot; =&gt; $filename,
 			                    &quot;caption&quot; =&gt; $_POST['caption']));</diff>
      <filename>feathers/photo/photo.php</filename>
    </modified>
    <modified>
      <diff>@@ -95,6 +95,8 @@ $(function(){
 				fontSize: &quot;9px&quot;
 			})
 		})
+
+&lt;?php $trigger-&gt;call(&quot;admin_javascript_domready&quot;); ?&gt;
 })
 
 var Post = {</diff>
      <filename>includes/admin.js.php</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@
 			$post = new Post($_POST['id'], array(&quot;filter&quot; =&gt; false));
 
 			if (!$post-&gt;editable())
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to edit posts.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to edit posts.&quot;));
 
 			$title = $post-&gt;title();
 			$theme_file = THEME_DIR.&quot;/forms/feathers/&quot;.$post-&gt;feather.&quot;.php&quot;;
@@ -95,7 +95,7 @@
 		case &quot;delete_post&quot;:
 			$post = new Post($_POST['id']);
 			if (!$post-&gt;deletable())
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to delete this post.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to delete this post.&quot;));
 
 			Post::delete($_POST['id']);
 			break;
@@ -126,7 +126,7 @@
 			break;
 		case &quot;check_confirm&quot;:
 			if (!$visitor-&gt;group()-&gt;can(&quot;toggle_extensions&quot;))
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to enable/disable extensions.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to enable/disable extensions.&quot;));
 
 			$dir = ($_POST['type'] == &quot;module&quot;) ? MODULES_DIR : FEATHERS_DIR ;
 			$info = Horde_Yaml::loadFile($dir.&quot;/&quot;.$_POST['check'].&quot;/info.yaml&quot;);</diff>
      <filename>includes/ajax.php</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 	require_once &quot;common.php&quot;;
 
 	if (!$visitor-&gt;group()-&gt;can(&quot;add_post&quot;))
-		error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create posts.&quot;));
+		show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create posts.&quot;));
 
 	if (empty($config-&gt;enabled_feathers))
 		error(__(&quot;No Feathers&quot;), __(&quot;Please install a feather or two in order to add a post.&quot;));</diff>
      <filename>includes/bookmarklet.php</filename>
    </modified>
    <modified>
      <diff>@@ -160,7 +160,7 @@
 					$pinned = (isset($result-&gt;pinned) and $result-&gt;pinned);
 					$shown = in_array(when(&quot;m-d-Y&quot;, $result-&gt;created_at), $shown_dates);
 
-					$result-&gt;first_of_day = !$pinned and !$shown and !AJAX;
+					$result-&gt;first_of_day = (!$pinned and !$shown and !AJAX);
 
 					if (!$pinned and !$shown)
 						$shown_dates[] = when(&quot;m-d-Y&quot;, $result-&gt;created_at);</diff>
      <filename>includes/class/Model.php</filename>
    </modified>
    <modified>
      <diff>@@ -46,7 +46,7 @@
 						$pinned = (isset($result-&gt;pinned) and $result-&gt;pinned);
 						$shown = in_array(when(&quot;m-d-Y&quot;, $result-&gt;created_at), $shown_dates);
 
-						$result-&gt;first_of_day = !$pinned and !$shown and !AJAX;
+						$result-&gt;first_of_day = (!$pinned and !$shown and !AJAX);
 
 						if (!$pinned and !$shown)
 							$shown_dates[] = when(&quot;m-d-Y&quot;, $result-&gt;created_at);</diff>
      <filename>includes/class/Paginator.php</filename>
    </modified>
    <modified>
      <diff>@@ -315,7 +315,7 @@
 			if ($trigger-&gt;exists(&quot;can_not_view_site&quot;))
 				$trigger-&gt;call(&quot;can_not_view_site&quot;);
 			else
-				error(__(&quot;Access Denied&quot;), __(&quot;You are not allowed to view this site.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You are not allowed to view this site.&quot;));
 
 		$trigger-&gt;call(&quot;runtime&quot;);
 
@@ -338,8 +338,4 @@
 				redirect(fallback($config-&gt;feed_url, url(&quot;feed/&quot;), true)); # Really? Nothing? Too bad. MAIN FEED 4 U.
 
 		$theme = Theme::current();
-
-		# If the URL is invalid, show a 404.
-		if (!ADMIN and !AJAX and !JAVASCRIPT and count($_GET) == 1 and $_GET['action'] == &quot;index&quot; and !empty($route-&gt;arg[0]) and $route-&gt;arg[0] != &quot;index&quot;)
-				show_404();
 	}</diff>
      <filename>includes/common.php</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create posts.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			global $feathers;
 
@@ -75,7 +75,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to edit this post.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			global $feathers;
 			$feathers[$post-&gt;feather]-&gt;update();
@@ -111,7 +111,7 @@
 				redirect(&quot;/admin/?action=manage_posts&quot;);
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$post = new Post($_POST['id']);
 			if (!$post-&gt;deletable())
@@ -195,7 +195,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create pages.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$show_in_list = !empty($_POST['show_in_list']);
 			$clean = (!empty($_POST['slug'])) ? $_POST['slug'] : sanitize($_POST['title']) ;
@@ -230,7 +230,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to edit pages.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$page = new Page($_POST['id']);
 
@@ -284,7 +284,7 @@
 				redirect(&quot;/admin/?action=manage_pages&quot;);
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$page = new Page($_POST['id']);
 			foreach ($page-&gt;children() as $child)
@@ -366,7 +366,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to add users.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			if (empty($_POST['login']))
 				error(__(&quot;Error&quot;), __(&quot;Please enter a username for your account.&quot;));
@@ -416,7 +416,7 @@
 				error(__(&quot;No ID Specified&quot;), __(&quot;An ID is required to edit a user.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$visitor = Visitor::current();
 
@@ -466,7 +466,7 @@
 				redirect(&quot;/admin/?action=manage_users&quot;);
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			User::delete($_POST['id']);
 
@@ -531,7 +531,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create groups.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			Group::add($_POST['name'], array_keys($_POST['permissions']));
 
@@ -559,7 +559,7 @@
 				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to edit groups.&quot;));
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$permissions = array_keys($_POST['permissions']);
 
@@ -602,7 +602,7 @@
 				redirect(&quot;/admin/?action=manage_pages&quot;);
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$group = new Group($_POST['id']);
 			foreach ($group-&gt;members() as $user)
@@ -1601,7 +1601,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$config = Config::current();
 			$config-&gt;set(&quot;name&quot;, $_POST['name']);
@@ -1629,7 +1629,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$config = Config::current();
 			$config-&gt;set(&quot;can_register&quot;, !empty($_POST['can_register']));
@@ -1651,7 +1651,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$config = Config::current();
 			$config-&gt;set(&quot;feed_items&quot;, $_POST['feed_items']);
@@ -1676,7 +1676,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$config = Config::current();
 			$config-&gt;set(&quot;clean_urls&quot;, !empty($_POST['clean_urls']));</diff>
      <filename>includes/controller/Admin.php</filename>
    </modified>
    <modified>
      <diff>@@ -53,7 +53,7 @@
 		public function drafts() {
 			$visitor = Visitor::current();
 			if (!$visitor-&gt;group()-&gt;can(&quot;view_own_draft&quot;, &quot;view_draft&quot;))
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to view drafts.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to view drafts.&quot;));
 
 			global $posts;
 			$posts = new Paginator(Post::find(array(&quot;placeholders&quot; =&gt; true,</diff>
      <filename>includes/controller/Main.php</filename>
    </modified>
    <modified>
      <diff>@@ -42,6 +42,7 @@
 
 		# Since the header might already be set to gzip, start output buffering again.
 		if (extension_loaded(&quot;zlib&quot;) and !ini_get(&quot;zlib.output_compression&quot;) and
+			isset($_SERVER['HTTP_ACCEPT_ENCODING']) and
 		    substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], &quot;gzip&quot;)) {
 			ob_start(&quot;ob_gzhandler&quot;);
 			header(&quot;Content-Encoding: gzip&quot;);</diff>
      <filename>includes/helpers.php</filename>
    </modified>
    <modified>
      <diff>@@ -146,7 +146,7 @@
 			break;
 		case &quot;bookmarklet&quot;:
 			if (!$visitor-&gt;group()-&gt;can(&quot;add_post&quot;))
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create posts.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to create posts.&quot;));
 			if (empty($config-&gt;enabled_feathers))
 				error(__(&quot;No Feathers&quot;), __(&quot;Please install a feather or two in order to add a post.&quot;));
 </diff>
      <filename>index.php</filename>
    </modified>
    <modified>
      <diff>@@ -128,7 +128,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			Config::current()-&gt;set(&quot;cache_expire&quot;, $_POST['cache_expire']);
 </diff>
      <filename>modules/cacher/cacher.php</filename>
    </modified>
    <modified>
      <diff>@@ -121,7 +121,7 @@
 				redirect(&quot;/admin/?action=manage_comments&quot;);
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$comment = new Comment($_POST['id']);
 			if (!$comment-&gt;deletable())
@@ -142,7 +142,7 @@
 
 		static function admin_manage_spam() {
 			if (!Comment::any_editable() and !Comment::any_deletable())
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to manage any comments.&quot;, &quot;comments&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to manage any comments.&quot;, &quot;comments&quot;));
 
 			global $admin;
 
@@ -267,7 +267,7 @@
 				return;
 
 			if (!isset($_POST['hash']) or $_POST['hash'] != Config::current()-&gt;secure_hashkey)
-				error(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;Invalid security key.&quot;));
 
 			$config = Config::current();
 			$config-&gt;set(&quot;allowed_comment_html&quot;, explode(&quot;, &quot;, $_POST['allowed_comment_html']));
@@ -322,7 +322,7 @@
 
 		static function admin_manage_comments() {
 			if (!Comment::any_editable() and !Comment::any_deletable())
-				error(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to manage any comments.&quot;, &quot;comments&quot;));
+				show_403(__(&quot;Access Denied&quot;), __(&quot;You do not have sufficient privileges to manage any comments.&quot;, &quot;comments&quot;));
 
 			global $admin;
 </diff>
      <filename>modules/comments/comments.php</filename>
    </modified>
    <modified>
      <diff>@@ -2458,7 +2458,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
 				[:][ ]+						# definition mark (colon)
 			)
 			((?s:.+?))						# definition text = $3
-			(?= \n+             			# stop at next definition mark,
+			(?= \n+                 		# stop at next definition mark,
 				(?:							# next term or end of text
 					[ ]{0,'.$less_than_tab.'} [:][ ]	|
 					&lt;dt&gt; | \z</diff>
      <filename>modules/markdown/lib/markdown.php</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,11 @@
 						{% endif %}
 						&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
 						&lt;span class=&quot;info&quot;&gt;
-							&lt;strong&gt;&lt;a href=&quot;$post.url&quot;&gt;${ post.created_at | strftime(&quot;%B %d @ %I:%M %p&quot;) }&lt;/a&gt;&lt;/strong&gt;
+							{% if post.pinned %}
+							&lt;strong&gt;&lt;a href=&quot;$post.url&quot;&gt;${ post.created_at | strftime(&quot;%B %e @ %I:%M %p&quot;) }&lt;/a&gt;&lt;/strong&gt;
+							{% else %}
+							&lt;strong&gt;&lt;a href=&quot;$post.url&quot;&gt;${ post.created_at | strftime(&quot;%I:%M %p&quot;) }&lt;/a&gt;&lt;/strong&gt;
+							{% endif %}
 							{% if enabled_modules.categorize and post.category.id != 0 %}
 							|
 							&lt;a href=&quot;$post.category.url&quot; rel=&quot;tag&quot;&gt;$post.category.name&lt;/a&gt;
@@ -21,12 +25,14 @@
 							{% endif %}
 							{% if post.tags.linked | length &gt; 0 %}
 							|
-							Tags: ${ post.tags.linked | join }
+							${ &quot;Tags&quot; | translate }: ${ post.tags.linked | join }
 							{% endif %}
 						&lt;/span&gt;
+{% if visitor.group.can(&quot;edit_post&quot;, &quot;delete_post&quot;) %}
 						&lt;span class=&quot;controls&quot;&gt;
-							${ post.edit_link(&quot;Edit&quot; | translate, &quot;&quot;) }
+							$post.edit_link
 							${ post.delete_link(&quot;Delete&quot; | translate, &quot;| &quot;) }
 						&lt;/span&gt;
+{% endif %}
 						&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
 					&lt;/div&gt;
\ No newline at end of file</diff>
      <filename>themes/stardust/content/post.twig</filename>
    </modified>
    <modified>
      <diff>@@ -138,9 +138,12 @@ textarea {
 	margin-bottom: 1.5em;
 	padding: .3em .4em;
 }
+input[type=&quot;file&quot;] {
+	margin-bottom: 1.5em;
+}
 input[type=&quot;text&quot;],
 input[type=&quot;password&quot;] {
-	width: 20.0em;
+	width: 20em;
 }
 textarea.wide {
 &lt;?php if (substr_count($_SERVER['HTTP_USER_AGENT'], &quot;Safari&quot;)): ?&gt;
@@ -533,6 +536,9 @@ div.page span.controls {
 	width: 41.4em;
 &lt;?php endif; ?&gt;
 }
+.inline_edit input[type=&quot;file&quot;] {
+	color: #eee;
+}
 .inline_edit .more_options_link:link {
 	color: #5B7C99;
 	display: block;</diff>
      <filename>themes/stardust/stylesheets/screen.css.php</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>053373bf5f7074321c346007d8437d5f7fd3c053</id>
    </parent>
  </parents>
  <author>
    <name>Alex Suraci</name>
    <email>i.am@toogeneric.com</email>
  </author>
  <url>http://github.com/vito/chyrp/commit/6acd3ceef2e9e5858309f9f07fc6718f48b969b6</url>
  <id>6acd3ceef2e9e5858309f9f07fc6718f48b969b6</id>
  <committed-date>2008-07-10T02:03:45-07:00</committed-date>
  <authored-date>2008-07-10T02:03:45-07:00</authored-date>
  <message>* Added a SWFUpload module, and had the Photo and Audio feathers utilize it.
* Updated Access Denied errors to use show_403()
* CSS fixes</message>
  <tree>551d65c14ee96c99e900116606d935d02e03304f</tree>
  <committer>
    <name>Alex Suraci</name>
    <email>i.am@toogeneric.com</email>
  </committer>
</commit>
