افزودن آنزیپ(unzip) به مدیریت رسانه ها ، بصری، تصویری،...


نوشته شده توسط سعید شمسی
پنجشنبه, 02 اردیبهشت 1389 ساعت 06:01
با سلام
امروز می خوام یک آموزش خوب که خیلی به درد می خوررا براتون بزارم
اگر تا به حال با با 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' );
/* (...) */
کد زیر را قرار دهید
/* (...) */
// 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' );
/* (...) */
با اضافه کردن این کد، دکمه در منو بالایی و در کنار دکمه حذف به وجود خواهد آمد.
بعد از اضافه کردن کد بالا به مسیر زیر مراجعه کرده و فایل مورد نظر را باز کنید
administrator/component/com_media/controllers/folder.php
و بعد ازخط 90( تابع حذف ) یا به عبارتی بعد از کد زیر :
function delete()
{
global $mainframe;
JRequest::checkToken('request') or jexit( 'Invalid Token' );
// 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 !== JFile::makeSafe($path)) {
JError::raiseWarning(100, JText::_('Unable to delete:').htmlspecialchars($path, ENT_COMPAT, 'UTF-8').' '.JText::_('WARNDIRNAME'));
continue;
}
$fullPath = JPath::clean(COM_MEDIA_BASE.DS.$folder.DS.$path);
if (is_file($fullPath)) {
$ret |= !JFile::delete($fullPath);
} else if (is_dir($fullPath)) {
$files = JFolder::files($fullPath, '.', true);
$canDelete = true;
foreach ($files as $file) {
if ($file != 'index.html') {
$canDelete = false;
}
}
if ($canDelete) {
$ret |= !JFolder::delete($fullPath);
} else {
JError::raiseWarning(100, JText::_('Unable to delete:').$fullPath.' '.JText::_('Not Empty!'));
}
}
}
}
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);
}
}
این کد را قرار دهید (کد زیر)
/* (...) */ function unzip() { global $mainframe;
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);
}
}
/* (...) */
خوب کار تموم شد ...
شما از این پس می توانید تواسط Media Manager (مدیریت رسانه ها ، بصری، تصویری،...) فایل های فشرده با پسوند های Zip,Tar,Gz را آنزیپ کنید .
ترجمه شده توسط : سعید شمسی از ویکی جوملا