اکستراکت فایلهای فشرده در مدیریت رسانه - جوملا
مقدمه
اگر توجه کنید Media manager یا همان مدیریت رسانه امکان اكستراكت کردن فایلهای فشرده را در خودش ندارد.
قصد داريم تا اين امكان را به آن اضافه كنيم.
چگونه میتوان اين امكان را به آن اضافه كرد؟
ابتدا فایل administrator/component/com_media/views/media/view.html.php را از ريشه جوملای خود باز کرده و در خط 106 کد زير را پيدا كنيد:
<source lang="php"> /* (...) */
// Add a delete button $title = JText::_('Delete'); $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.delete')\" class=\"toolbar\"> $title</a>"; $bar->appendButton( 'Custom', $dhtml, 'delete' ); /* (...) */
</source>
سپس بعد از خط 106 این کد را اضافه کنید:
<source lang="php">
/* (...) */ // Add a Unzip button $title = JText::_('Unzip'); $dhtml = "<a href=\"#\" onclick=\"MediaManager.submit('folder.unzip')\" class=\"toolbar\"> $title</a>"; $bar->appendButton( 'Custom', $dhtml, 'unzip' ); /* (...) */
</source>
تا این مرحله شما یک آیکن کنار آیکن delete در مدیریت رسانه ایجاد کردید.
حالا فایل زير را باز کنید :
administrator/component/com_media/controllers/folder.php
و بعد از خط 90 کد زير را اضافه کنید:
<source lang="php">
/* (...) */ 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); } } /* (...) */
</source>
پس از ذخيره فايل یک دکمه برای اکستراکت ساخته شده و شما قادر هستید فرمتهای zip,tar و gz را از حالت فشرده خارج کنید.
توجه داشته باشید و قتی فایلی رو اكستراكت میکنید یک پوشه با همان نام ایجاد میشود و محتویات اكستراكت شده درون آن شاخه قرار میگیرد.
منبع :
http://docs.joomla.org
گردآورنده :
torghoundy
![]() |