Õpetus

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!

Lisa kommentaar


Kontrollkood
Värskenda


Tõlked
Algaja/Raul - JoomGallery [1.5 RC2]
[90%]

Eraser - JQuiXplorer [1.0]
[100%]

jflash - JEvents [1.5.3]
[100%]

Eraser - RokDownloads [1.0b7]
[75%]

Eraser - Virtuemart [1.1.4]
[75%]

Eraser - FUAL [2.0.1]
[100%]

antichrist - Community Builder [1.2.1]
[20%]