diff --git a/contrib/link_image/main.php b/contrib/link_image/main.php
new file mode 100644
index 00000000..7b71a702
--- /dev/null
+++ b/contrib/link_image/main.php
@@ -0,0 +1,122 @@
+add_main_block(new Block("Link to Image", $this->get_html($event->image)));
+ }
+ if(is_a($event, 'SetupBuildingEvent')) {
+ $sb = new SetupBlock("Extension - Link to Image");
+ $sb->add_text_option("ext_link-img_text-link_format","Text Link Format");
+ $event->panel->add_main_block($sb);
+ }
+ if(is_a($event, 'ConfigSaveEvent')) {
+ $event->config->set_string_from_post("ext_link-img_text-link_format");
+ }
+ if(is_a($event, 'InitExtEvent')) {
+ global $config;
+ //just set default if empty.
+ if ($config->get_string("ext_link-img_text-link_format") == "") {
+ $config->set_string("ext_link-img_text-link_format", '$title - $id ($ext $size $filesize)');
+ }
+ }
+ }
+
+ private function get_html ($image) {
+ global $config;
+
+ $thumb_src = $image->get_thumb_link();
+ $image_src = $image->get_image_link();
+ $post_link = $image->get_short_link();
+
+ $text_link = $this->parse_link_template($config->get_string("ext_link-img_text-link_format"),$image);
+
+ $html = "
";
+
+ $html .= "
";
+
+ $html .= "";
+
+ $html .= "";
+
+ return $html;
+ }
+
+ private function ubb_url($link,$content) {
+ return "[url=".$link."]".$content."[/url]";
+ }
+ private function ubb_img($src) {
+ return "[img]".$src."[/img]";
+ }
+
+ private function html_url($link,$content) {
+ return "".$content."";
+ }
+ private function html_img($src) {
+ return "";
+ }
+
+ private function link_code($label,$content,$id=NULL) {
+ $control = "\n";
+ $control .= "\n";
+ $control .= "
\n\n";
+ return $control;
+ }
+
+ private function parse_link_template($tmpl, $img) { //shamelessly copied from image.class.php
+ global $config;
+
+ // don't bother hitting the database if it won't be used...
+ $safe_tags = "";
+ if(strpos($tmpl, '$tags') !== false) { // * stabs dynamically typed languages with a rusty spoon *
+ $safe_tags = preg_replace(
+ "/[^a-zA-Z0-9_\- ]/",
+ "", $img->get_tag_list());
+ }
+
+ $base_href = $config->get_string('base_href');
+ $fname = $img->get_filename();
+ $base_fname = strpos($fname, '.') ? substr($fname, 0, strrpos($fname, '.')) : $fname;
+
+ $tmpl = str_replace('$id', $img->id, $tmpl);
+ $tmpl = str_replace('$hash', $img->hash, $tmpl);
+ $tmpl = str_replace('$tags', $safe_tags, $tmpl);
+ $tmpl = str_replace('$base', $base_href, $tmpl);
+ $tmpl = str_replace('$ext', $img->ext, $tmpl);
+ $tmpl = str_replace('$size', "{$img->width}x{$img->height}", $tmpl);
+ $tmpl = str_replace('$filesize', to_shorthand_int($img->filesize), $tmpl);
+ $tmpl = str_replace('$filename', $base_fname, $tmpl);
+ $tmpl = str_replace('$title', $config->get_string("title"), $tmpl);
+
+ return $tmpl;
+ }
+}
+add_event_listener(new LinkImage());
+?>
\ No newline at end of file
diff --git a/contrib/link_image/style.css b/contrib/link_image/style.css
new file mode 100644
index 00000000..fe72e1d7
--- /dev/null
+++ b/contrib/link_image/style.css
@@ -0,0 +1 @@
+/* 404'ed :| */