
Tihti on tulnud ette vajadust otse veebi serveris faile lahti pakkida. Kuna vaikimisi Joomlal selline võimalus puudub, siis selles artiklis vaatame, kuidas on võimalik seda suhteliselt lihtsalt juurde lisada.
Antud lahendus toimib suure tõenäosusega ainult kuni järgmise versiooniuuenduseni. Seega on vaja pärast Joomla! versiooniuuendust teha koodis selle õpetuse järgi taas vajalikud muudatused.
PS! Käesolevas õpetuses toodud juhiseid järgides tuleb muuta süsteemi faile ning sellega tuleb olla väga ettevaatlik
Esmalt ava administrator/component/com_media/views/media/view.html.php muutmiseks ning otsi umbes realt 106 järgmist koodijuppi:
// Add a delete button $title = JText::_('Delete'); $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.delete')\" class=\"toolbar\"> <span class=\"icon-32-delete\" title=\"$title\" type=\"Custom\"></span> $title</a>"; $bar->appendButton( 'Custom', $dhtml, 'delete' );
ning lisa selle ette järgmine koodi jupp:
// Add a Unzip button $title = JText::_('Unzip'); $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.unzip')\" class=\"toolbar\"> <span class=\"icon-32-unarchive\" title=\"$title\" type=\"Custom\"></span> $title</a>"; $bar->appendButton( 'Custom', $dhtml, 'unzip' );
Nüüd lisame juurde ka lahtipakkimise funktsiooni. Selleks ava fail administrator/component/com_media/controllers/folder.php ning lisa umbes alates reast 90 (kohe peale delete funktsiooni) järmise funktsiooni kood:
/* (...) */ function unzip() { global $mainframe; // Set FTP credentials, if given jimport('joomla.client.helper'); JClientHelper::setCredentialsFromRequest('ftp'); // Get some data from the request $tmpl = JRequest::getCmd( 'tmpl' ); $paths = JRequest::getVar( 'rm', array(), '', 'array' ); $folder = JRequest::getVar( 'folder', '', '', 'path'); // Initialize variables $msg = array(); $ret = true; if (count($paths)) { foreach ($paths as $path) { if ($path !== JFilterInput::clean($path, 'path')) { JError::raiseWarning(100, JText::_('Impossible de decompresser:').htmlspecialchars($path, ENT_COMPAT, 'UTF-8').' '.JText::_('WARNDIRNAME')); continue; } $fullPath = JPath::clean(COM_MEDIA_BASE.DS.$folder.DS.$path); if (is_file($fullPath)) { $ext = JFile::getExt(strtolower($fullPath)); $pathdir = $fullPath; if($ext != 'gz') { $pathdir = str_replace( ".".$ext, "",$pathdir); } else { $pathdir = str_replace( ".".$ext, "",$pathdir); $pathdir = str_replace( ".tar", "",$pathdir); } jimport('joomla.filesystem.*'); jimport('joomla.filesystem.archive'); JFolder::create($pathdir); JFile::write($pathdir.DS."index.html", "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>"); JArchive::extract($fullPath, $pathdir); } else if (is_dir($fullPath)) { JError::raiseWarning(100, JText::_('Imossible de decompresser:').$fullPath.' '.JText::_('Pas un fichier ZIP')); } } } if ($tmpl == 'component') { // We are inside the iframe $mainframe->redirect('index.php?option=com_media&view=mediaList& folder='.$folder.'&tmpl=component'); } else { $mainframe->redirect('index.php?option=com_media&folder='.$folder); } } /* (...) */
Lisame ka keelefaili ühe fraasi juurde, selleks ava fail administrator/language/et-EE/et-EE.com_media.ini muutmiseks ning lisa reale 10 järgmine rida:
UNZIP=Paki lahti
Nüüd peaks olema kõik valmis. Lae muudetud failid veebi serverisse ning ava Joomla administreerimisliideses failihaldur. Seal on nüüd juurde tekkinud uus nupp Paki lahti
NB! Enne failides muudatuste tegemist tee kindlasti muudetavatest failidest varukoopia!