diff --git a/e107_plugins/download/download_shortcodes.php b/e107_plugins/download/download_shortcodes.php
new file mode 100644
index 000000000..47d524920
--- /dev/null
+++ b/e107_plugins/download/download_shortcodes.php
@@ -0,0 +1,525 @@
+ e_sc -> parse_scbatch(__FILE__);
+/*
+SC_BEGIN DOWNLOAD_LIST_NAME
+global $row,$tp,$pref;
+if($parm == "nolink"){
+ return $tp->toHTML($row['download_name'],TRUE,'LINKTEXT');
+}
+if($parm == "request"){
+
+ $agreetext = $tp->toJS($tp->toHTML($pref['agree_text'],FALSE,'DESCRIPTION'));
+ if($row['download_mirror_type']){
+ $text = ($pref['agree_flag'] ? "" : "");
+ }else{
+ $text = ($pref['agree_flag'] ? "" : "");
+ }
+ $text .= $tp->toHTML($row['download_name'], FALSE, 'USER_TITLE')."";
+ return $text;
+}
+
+return "".$tp->toHTML($row['download_name'],TRUE,'LINKTEXT')."";
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_AUTHOR
+global $row;
+return $row['download_author'];
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_REQUESTED
+global $row;
+return $row['download_requested'];
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_ICON
+global $row;
+$img = "";
+if($parm == "link"){
+ return "".$img."";
+}else{
+ return $img;
+}
+return;
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_NEWICON
+global $row;
+return (USER && $row['download_datestamp'] > USERLV ? "
" : "");
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_FILESIZE
+global $row, $e107;
+return $e107->parseMemorySize($row['download_filesize']);
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_DATESTAMP
+global $row;
+$gen = new convert;
+return $gen->convert_date($row['download_datestamp'], "short");
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_THUMB
+global $row;
+$img = ($row['download_thumb']) ? "
" : "";
+if($parm == "link" && $row['download_thumb']){
+ return "".$img."";
+}else{
+ return $img;
+}
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_ID
+global $row;
+return $row['download_id'];
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_RATING
+global $row;
+$rater = new rater;
+$ratearray = $rater->getrating("download", $row['download_id']);
+ if (!$ratearray[0]) {
+ return LAN_dl_13;
+ } else {
+ return ($ratearray[2] ? "{$ratearray[1]}.{$ratearray[2]}/{$ratearray[0]}" : "{$ratearray[1]}/{$ratearray[0]}");
+ }
+SC_END
+
+
+SC_BEGIN DOWNLOAD_LIST_LINK
+global $tp,$row,$pref;
+$agreetext = $tp->toJS($tp->toHTML($pref['agree_text'],FALSE,'DESCRIPTION'));
+ if($row['download_mirror_type']){
+ return ($pref['agree_flag'] ? "" : "");
+ }else{
+ return ($pref['agree_flag'] ? "" : "");
+ }
+SC_END
+
+SC_BEGIN DOWNLOAD_LIST_NEXTPREV
+ global $nextprev_parms,$tp;
+ return $tp->parseTemplate("{NEXTPREV={$nextprev_parms}}");
+SC_END
+
+
+// ---------------------- Download View ----------------------------------------
+
+SC_BEGIN DOWNLOAD_VIEW_ID
+global $dl;
+return $dl['download_id'];
+SC_END
+
+
+SC_BEGIN DOWNLOAD_ADMIN_EDIT
+global $dl;
+return (ADMIN && getperms('6')) ? "
" : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_CATEGORY
+global $dl;
+return $dl['download_category_name'];
+SC_END
+
+SC_BEGIN DOWNLOAD_CATEGORY_ICON
+global $dl;
+list($present,$missing) = explode(chr(1),$dl['download_category_icon']);
+if($present)
+{
+ return "
";
+}
+
+SC_END
+
+SC_BEGIN DOWNLOAD_CATEGORY_DESCRIPTION
+global $tp,$dl;
+$text = $tp -> toHTML($dl['download_category_description'], TRUE,'DESCRIPTION');
+if($parm){
+ return substr($text,0,$parm);
+}else{
+ return $text;
+}
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_NAME
+global $dl;
+$link['view'] = "".$dl['download_name']."";
+$link['request'] = "".$dl['download_name']."";
+
+if($parm){
+ return $link[$parm];
+}
+return $dl['download_name'];
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_NAME_LINKED
+global $pref,$dl,$tp;
+if ($pref['agree_flag'] == 1) {
+ return "toJS($tp->toHTML($pref['agree_text'],FALSE,'DESCRIPTION'))."');\" title='".LAN_dl_46."'>".$dl['download_name']."";
+} else {
+ return "".$dl['download_name']."";
+}
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_AUTHOR
+global $dl;
+return ($dl['download_author'] ? $dl['download_author'] : "");
+SC_END
+
+
+SC_BEGIN DOWNLOAD_VIEW_AUTHOREMAIL
+global $tp,$dl;
+return ($dl['download_author_email']) ? $tp -> toHTML($dl['download_author_email'], TRUE, 'LINKTEXT') : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_AUTHORWEBSITE
+global $tp,$dl;
+return ($dl['download_author_website']) ? $tp -> toHTML($dl['download_author_website'], TRUE,'LINKTEXT') : "";
+SC_END
+
+
+
+SC_BEGIN DOWNLOAD_VIEW_DESCRIPTION
+global $tp, $dl;
+$maxlen = ($parm ? intval($parm) : 0);
+$text = ($dl['download_description'] ? $tp->toHTML($dl['download_description'], TRUE, 'DESCRIPTION') : "");
+if($maxlen){
+ return substr($text, 0, $maxlen);
+}else{
+ return $text;
+}
+return $text;
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_DATE
+global $gen,$dl;
+return ($dl['download_datestamp']) ? $gen->convert_date($dl['download_datestamp'], $parm) : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_DATE_SHORT
+// deprecated: DOWNLOAD_VIEW_DATE should be used instead.
+global $gen,$dl;
+return ($dl['download_datestamp']) ? $gen->convert_date($dl['download_datestamp'], "short") : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_DATE_LONG
+// deprecated: DOWNLOAD_VIEW_DATE should be used instead.
+global $gen,$dl;
+return ($dl['download_datestamp']) ? $gen->convert_date($dl['download_datestamp'], "long") : "";
+SC_END
+
+
+
+SC_BEGIN DOWNLOAD_VIEW_IMAGE
+global $dl;
+if ($dl['download_thumb']) {
+ return ($dl['download_image'] ? "
" : "
");
+}
+else if($dl['download_image']) {
+ return "".LAN_dl_40."";
+}
+else
+{
+ return LAN_dl_75;
+}
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_IMAGEFULL
+global $dl;
+return ($dl['download_image']) ? "
" : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_LINK
+global $pref,$dl,$tp;
+if ($pref['agree_flag'] == 1) {
+ $dnld_link = "toJS($tp->toHTML($pref['agree_text'],FALSE,'DESCRIPTION'))."');\">";
+} else {
+ $dnld_link = "";
+}
+
+if($dl['download_mirror'])
+{
+ if($dl['download_mirror_type'])
+ {
+ return "".LAN_dl_66."";
+ }
+ else
+ {
+ return $dnld_link."
";
+ }
+}
+else
+{
+ return $dnld_link."
";
+}
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_FILESIZE
+global $dl, $e107;
+return ($dl['download_filesize']) ? $e107->parseMemorySize($dl['download_filesize']) : "";
+SC_END
+
+SC_BEGIN DOWNLOAD_VIEW_RATING
+ require_once(e_HANDLER."rate_class.php");
+ $rater = new rater;
+ global $dl, $imode;
+ $text = "
+
";
+
+ if ($ratearray = $rater->getrating("download", $dl['download_id'])) {
+ for($c = 1; $c <= $ratearray[1]; $c++) {
+ $text .= "![]() ![]() | "; + + if (!$rater->checkrated("download", $dl['download_id']) && USER) { + $text .= $rater->rateselect(" ".LAN_dl_14, "download", $dl['download_id']).""; + } + else if(!USER) { + $text .= " "; + } else { + $text .= LAN_dl_15; + } + $text .= " |