версия remository 3.46, пытался все делать по вашему плану, но получилось только коряво поставить кнопку, файл при нажатии на которую ни в какую не хочет играть.
прикрепляю скрин и файл remository.html.php(без вставки кода, приведенного в первых постах)
<?php
/**************************************************************
* This file is part of Remository
* Copyright (c) 2006 Martin Brampton
* Issued as open source under GNU/GPL
* For support and other information, visit http://remository.com
* To contact Martin Brampton, write to martin@remository.com
*
* Remository started life as the psx-dude script by psx-dude@psx-dude.net
* It was enhanced by Matt Smith up to version 2.10
* Since then development has been primarily by Martin Brampton,
* with contributions from other people gratefully accepted
*/
class remositoryUserHTML {
	var $controller = '';
	var $repository = '';
	var $interface = '';
	var $remUser = '';
	var $submitok = false;
	var $submit_text = '';
	var $orderby = _REM_DEFAULT_ORDERING;
	var $mainpicture = '';
	function remositoryUserHTML (&$controller) {
		$this->controller = $controller;
		$this->interface =& remositoryInterface::getInstance();
		$this->repository = $controller->repository;
		$this->mainpicture = $this->repository->headerpic;
		$thumb_width_x = $this->repository->Small_Image_Width + 20;
		$thumb_width_x_plus = $thumb_width_x + 20;
		$thumb_height_y = $this->repository->Small_Image_Height + 50;
		$css = <<<end_css
<style type='text/css'>
/* Remository specific CSS requiring variables */
#remositorypageheading {
	background-image:	url($this->mainpicture);
}
.remositoryfilesummary
{
	margin-right:	{$thumb_width_x_plus}px;
}
.remositoryonethumb {
	width: {$thumb_width_x}px;
}
.remositorydelthumb {
	height:		{$thumb_height_y}px;
}
/* End of variable Remository CSS */
</style>
end_css;
		$this->interface->addCustomHeadTag($css);
		$baselink = $this->interface->getCfg('live_site').'/components/';
		$basedir = $this->interface->getCfg('absolute_path').'/components/';
		$cssfile = file_exists($basedir.'com_remository_files/custom.css') ? $baselink.'com_remository_files/custom.css' : $baselink.'com_remository/remository.css';
		$css = "\n<link href='$cssfile' rel='stylesheet' type='text/css' />";
		$this->interface->addCustomHeadTag($css);
		$this->remUser = $controller->remUser;
		$this->submitok = $controller->submitok;
		$this->submit_text = $controller->submit_text;
		$this->orderby = $controller->orderby;
	}
	function fileOutputBox ($title, $value, $suppressHTML=false) {
	    if ($suppressHTML) $value = htmlspecialchars($value);
		echo <<<OUTPUT_BOX
		<dt>$title</dt>
		<dd>
		  $value
		</dd>
OUTPUT_BOX;
	}
	function mainPageHeading ($belowTop) {
		$title = _DOWNLOADS_TITLE;
		if ($title OR $this->mainpicture) {
			if ($belowTop) $headlevel = 'h3';
			else $headlevel = 'h2';
			echo "\n\t<div id='remositorypageheading'>";
			// if ($this->mainpicture != '') echo "\n\t\t<img src='$this->mainpicture' alt='Header'/>";
			echo "\n\t\t<$headlevel>$title ";
			// The following three lines create RSS links - now controlled by config
			if ($this->repository->Show_RSS_feeds) {
				$rssurl = $this->repository->RemositoryBasicFunctionURL('rss');
				$this->interface->addCustomHeadTag("<link rel='alternate' type='application/rss+xml' title='RSS - "._DOWN_NEWEST."' href='$rssurl' />");
				echo "<a href='".$rssurl."'>".$this->repository->RemositoryImageURL('feedicon16.gif',16,16)." RSS</a>";
			}
			// End of RSS link code
			echo "</$headlevel>";
			echo "\n\t<!-- End of remositorypageheading-->";
			echo "\n\t</div>\n";
			if (!$belowTop AND $this->repository->preamble) echo <<<PREAMBLE
			<div id="remositorypreamble">
				{$this->repository->preamble}
			</div>
PREAMBLE;
		}
	}
	function folderListHeading($container){
		$cname = htmlspecialchars($container->name);
		echo "\n\t<div id='remositorycontainer'>";
		echo "\n\t\t<h2>$cname ";
		// The following three lines create the RSS link for the container - now controlled by config
		if ($this->repository->Show_RSS_feeds) {
			$rssurl = $this->repository->RemositoryBasicFunctionURL('rss', $container->id);
			$this->interface->addCustomHeadTag("<link rel='alternate' type='application/rss+xml' title='RSS - "._DOWN_NEWEST." - $cname' href='$rssurl' />");
			echo "<a href='$rssurl'>".$this->repository->RemositoryImageURL('feedicon16.gif',16,16).' RSS</a>';
		}
		// End of RSS code
		echo '</h2>';
		echo "\n\t\t<p>".$container->description.'</p>';
		echo "\n\t<!-- End of remositorycontainer -->";
		echo "\n\t</div>";
	}
	// To suppress the credits line, change the default for $show_credits to false
	// If you do this, please also consider making a donation to the Remository project!
	function remositoryCredits ($show_credits=true) {
		$version = _REMOSITORY_VERSION;
		echo "\n\t<div id='remositorycredits'>";
		if ($show_credits) echo "\n\t\t<a href='http://www.remository.com'>Remository $version</a> is technology by <a href='http://guru-php.com'>Guru PHP</a>";
		echo "\n\t<!-- End of remositorycredits-->";
		echo "\n\t</div>\n";
	}
	function pathwayHTML ($parent) {
		$repository = remositoryRepository::getInstance();
		if (0 == ($repository->Remository_Pathway & 2)) return;
		echo "\n\t<div id='remositorypathway'>";
		echo "\n\t\t".$this->repository->RemositoryFunctionURL().$this->repository->RemositoryImageURL('gohome.gif').' '._MAIN_DOWNLOADS.'</a>';
		if ($parent) {
			echo "\n\t\t";
			$parent->showPathway();
		}
		echo "\n\t<!-- End of remositorypathway-->";
		echo "\n\t</div>\n";
	}
	// Extra function needed to integration pathway into CMS pathway
	function pathwayImage () {
		$interface =& remositoryInterface::getInstance();
		$imagePath =  '/templates/'.$interface->getTemplate().'/images/arrow.png';
		if (file_exists( $interface->getCfg('absolute_path').$imgPath )) $image = '<img src="' . $interface->getCfg('live_site'). $imagePath . '" border="0" alt="arrow" />';
		else {
			$imagePath = '/images/M_images/arrow.png';
			if (file_exists( $interface->getCfg('absolute_path') . $imagePath )) $image = '<img src="' . $interface->getCfg('live_site') . $imagePath .'" alt="arrow" />';
			else $image = '>';
		}
		return $image;
	}
	function URLDisplay ($text, $value) {
		if (!eregi(_REMOSITORY_REGEXP_URL,$value)) {
			if (eregi(_REMOSITORY_REGEXP_URL,'http://'.$value)) $value = 'http://'.$value;
			else {
				echo "\n\t\t\t<dt>$text</dt>";
				echo "\n\t\t\t<dd>$value</dd>";
				return;
			}
		}
		echo "\n\t\t\t<dt>$text</dt>";
		echo "\n\t\t\t<dd><a href='$value'>"._DOWN_CLICK_TO_VISIT.'</a></dd>';
	}
	
	function filesFooterHTML () {
		$fsearch = $this->footerSearchHTML();
		$fsubmit = $this->footerSubmitHTML();
		echo <<<FILES_FOOTER
		
		<div id='remositoryfooter'>
			$fsearch
			$fsubmit
		<!-- End of remositoryfooter-->
		</div>
		
FILES_FOOTER;
	}
	
	function footerSearchHTML () {
		$text = _DOWN_SEARCH;
		$surl = $this->repository->RemositoryFunctionURL('search');
		$simg = $this->repository->RemositoryImageURL('search.gif');
		return <<<FOOTER_SEARCH
		
		<div id='left'>
			$surl
			$simg
			$text</a>
		</div>
		
FOOTER_SEARCH;
	}
	
	function footerSubmitHTML () {
		if (!$this->repository->Allow_User_Sub) return '';
		if ($this->submitok) {
			$idparm = remositoryRepository::GetParam($_REQUEST, 'id', 0);
			$startlink = $this->repository->RemositoryFunctionURL('addfile', $idparm);
			$endlink = _SUBMIT_FILE_BUTTON.'</a>';
		}
		else {
			$startlink = '';
			$endlink = $this->submit_text;
		}
		$subimage = $this->repository->RemositoryImageURL('add_file.gif');
		return <<<FOOTER_SUBMIT
		
		<div id='right'>
			$startlink
			$subimage
			$endlink
		</div>
		
FOOTER_SUBMIT;
	}
	function fileListing ($file, $container, $downlogo, $remUser, $showContainer=false, $type='A', $downlinktype=0) {
		$thumbnails = new remositoryThumbnails($file);
		$filefunc = $downlinktype ? 'directinfo' : 'fileinfo';
		$downlink = $this->repository->RemositoryFunctionURL($filefunc,$file->id);
		if ($file->icon == '') $downlink .= $this->repository->RemositoryImageURL('stuff1.gif');
		else $downlink .= $this->repository->RemositoryImageURL('file_icons/'.$file->icon);
		$downlink .= $file->filetitle.'</a>';
		if ($file->filetype=='mp3') { // mp3 - расширение файла, при котором отображается проигрыватель
 echo "<table><tr>";
 echo "<td align='left' valign='middle'>Прослушать</td>";
 echo "<td align='left' valign='middle'>";
  $medialink = $this->repository->RemositoryBasicFunctionMediaURL('download', $file->id, $file->realname);
  require_once ('components/com_remository/v-classes/remositoryFileInfoHTML.php');
  $view =& new remositoryFileInfoHTML($this);
  $view->audioPlayer ($medialink);
echo "</td>";
echo "</tr></table>";
}
		if ($this->repository->Enable_List_Download AND is_object($container) AND $container->isDownloadable($this->remUser)) {
				$downlink .= $file->downloadLink($downlinktype).' '.$downlogo.' '._DOWNLOAD.'</a>';
		}
		if ($showContainer AND is_object($container)) $downlink .= ' ('.remositoryRepository::RemositoryFunctionURL('select', $container->id).$container->name.'</a>)';
		
		$thumbdisplay = $thumbnails->displayOneThumbnail();
		echo <<<BEFORE_DETAILS
		
			<div class='remositoryfileblock'>
				<h3>$downlink</h3>
   				<div class='remositoryonethumb'>
   					$thumbdisplay
   				<!-- End of remositoryonethumb -->
   				</div>
   				<div class='remositoryfilesummary'><dl>
   			
BEFORE_DETAILS;
		$this->showFileDetails($file, $remUser, $type);
		
		echo <<<AFTER_DETAILS
		
				<!-- End of remositoryfilesummary -->
				</dl></div>
			<!-- End of remositoryfileblock -->
			</div>
AFTER_DETAILS;
	}
	
	function showFileDetails ($file, $remUser, $type, $dodisplay=true) {
		if ($dodisplay AND $remUser->isAdmin()) $this->fileOutputBox(_DOWN_PUB, ($file->published == 1 ? _YES : _NO), false);
		$customcontrol = unserialize($this->repository->customizer);
		$customobj = new remositoryCustomizer();
		$fieldnames = $customobj->getFileListFields();
		$order = array();
		$count = 0;
		foreach ($customcontrol['S'] as $key=>$sequence) $order[$sequence] = $key;
		ksort($order);
		if (count($order)) foreach ($order as $key) {
			if (!empty($customcontrol[$type][$key])) {
				$fieldname = $fieldnames[$key][0];
				$method = 'show_'.$fieldname;
				if (method_exists($this, $method)) {
					$count++;
					if ($dodisplay) $this->$method($file);
				}
			}
		}
		return $count;
	}
	
	function show_smalldesc ($file) {
		if ($file->smalldesc<>'') $this->fileOutputBox(_DOWN_DESC_SMALL, $file->smalldesc, !$file->autoshort);
	}
	
	function show_submittedby ($file) {
		if ($file->submittedby) {
		    $submitter =& new remositoryUser($file->submittedby);
		    $this->fileOutputBox(_DOWN_SUB_BY, $submitter->name);
        }
	}
	
	function show_submitdate ($file) {
		if ($file->submitdate<>'') $this->fileOutputBox(_DOWN_SUB_DATE, date ($this->repository->Date_Format, $this->controller->revertFullTimeStamp($file->submitdate)));
	}
	
	function show_filesize ($file) {
		if ($file->filesize<>'') $this->fileOutputBox(_DOWN_FILE_SIZE, $file->filesize);
	}
	
	function show_downloads ($file) {
		$this->fileOutputBox(_DOWN_DOWNLOADS, $file->downloads);
	}
	
	function show_license ($file) {
		if ($file->license<>'') $this->fileOutputBox(_DOWN_LICENSE, $file->license, false);
	}
	
	function show_fileversion ($file) {
		if ($file->fileversion<>'') $this->fileOutputBox(_DOWN_FILE_VER, $file->fileversion);
	}
	
	function show_fileauthor ($file) {
		if ($file->fileauthor<>'') $this->fileOutputBox(_DOWN_FILE_AUTHOR, $file->fileauthor);
	}
	
	function show_filehomepage ($file) {
		if ($file->filehomepage<>'') $this->URLDisplay (_DOWN_FILE_HOMEPAGE, $file->filehomepage);
	}
	
	function show_vote_value ($file, $terminate=true) {
		if ($this->repository->Allow_Votes) {
		echo "\n";
		?>
			<dt><?php echo _DOWN_RATING; ?></dt>
			<dd>
				<div class='remositoryrating'><?php echo $this->repository->RemositoryImageURL('stars/'.$file->evaluateVote().'.gif',64,12);
					echo _DOWN_VOTES;
					echo round($file->vote_count); ?></div>
		<?php
		if ($terminate) echo "\n\t\t\t\t</dd>";
		}
	}
	function voteDisplay (&$file, $entry, $linkfunc='fileinfo') {
		$this->show_vote_value ($file, false);
		if ($entry AND $this->remUser->isLogged() AND !$file->userVoted($this->remUser)) {
			$formurl = $this->interface->sefRelToAbs('index.php?option=com_remository&Itemid='.$this->interface->getCurrentItemid()."&func=$linkfunc&id=".$file->id);
			?>
				<div>
					<form method="post" action="<?php echo $formurl; ?>">
						<select name="user_rating" class="inputbox">
							<option value="0">?</option>
							<option value="1">1</option>
							<option value="2">2</option>
							<option value="3">3</option>
							<option value="4">4</option>
							<option value="5">5</option>
						</select>
						<input class="button" type="submit" name="submit_vote" value="<?php echo _DOWN_RATE_BUTTON; ?>" />
						<input type="hidden" name="id" value="<?php echo $file->id; ?>" />
					</form>
				</div>
			<?php
		}
		echo "\n\t\t\t\t</dd>";
	}
	// Not presently used in Remository, but kept here for potential value of the code
	function multiOptionList ($name, $title, $options, $current, $tooltip=null) {
		$alternatives = explode(',',$options);
		$already = explode(',', $current);
		?>
		<tr>
	    <td width="30%" valign="top" align="right">
	  	<b><?php echo $title; ?></b> 
	    </td>
	    <td valign="top">
		<?php
		foreach ($alternatives as $one) {
			if (in_array($one,$already)) $mark = 'checked="checked"';
			else $mark = '';
			$value = $name.'_'.$one;
			echo "<input type=\"checkbox\" name=\"$value\" $mark />$one";
		}
		if ($tooltip) echo ' '.tooltip($tooltip);
		echo '</td></tr>';
	}
	function tooltip ($text) {
		return '<a href="javascript:void(0)"  onmouseover="return escape('."'".$text."'".')">'.RemositoryRepository::RemositoryImageURL('tooltip.png').'</a>';
	}
}
...пытаюсь сделать толковый mp3 архив с возможностью загрузки песен пользователями с фронтенда уже больше месяца...видно не скоро такой появится в полноценном формате