-
اکستراکت فایل های فشرده در مدیریت رسانه - جوملا
سلام
اگر توجه کنید Media manager یا همون مدیریت رسانه امکان انزیپ کردن فایل های فشرده رو در خودش نداره. خب در این آموزش قصد داریم نحوه اضافه کردن این امکان رو توضیح بدیم:
ابتدا فایل administrator/component/com_media/views/media/view.html.php رو از روت جوملای خود باز کنید و به خط 106 مراجعه کنید که یه همچین کدی رو خواهید دید:
کد:
/* (...) */
// 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' );
/* (...) */
حالا بعد از خط 106 این کد رو اضافه کنید:
کد:
/* (...) */
// 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' );
/* (...) */
خب تا این مرحله شما یک آیکن کنار آیکن delete در مدیریت رسانه ایجاد کردید.
حالا این فایل رو باز کنید
administrator/component/com_media/controllers/folder.php
و بعد از خط 90 این کد رو اضافه کنید:
کد:
/* (...) */
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);
}
}
/* (...) */
خب حالا یک دکمه برای اکستراکت ساخته شد و شما قادر هستید فرمت های zip,tar و gz رو از حالت فشرده خارج کنید.
توجه داشته باشید و قتی فایلی رو انزیپ می کنید یک پوشه با همون نام ایجاد میشه و محتویات انزیپ شده داخلش قرار میگیره.
این کار روی نسخه 1.5.20 جوملا امتحان شده.
منبع:
کد:
http://docs.joomla.org
جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.
-
-
09-07-2010 05:19 PM
# ADS
تبلیغات در جوملا فارسی
علاقه مندی ها (Bookmarks)