1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

انزیپ کردن فایل های فشرده در جوملا

شروع موضوع توسط hector2141 ‏10/9/12 در انجمن Joomla

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    در سیسیتم مدیریت تصاویر یا همان media manager امکانی برای باز نمودن و یا انزیپ کردن فایل های بارگذاری شده وجود ندارد ، لذا بر ان شدیم تا اموزش ایجاد این قابلیت را برای استفاده کنندهگان جوملا معرفی کنیم . با پیگیری این آموزش شما امکان انزیپ کردن فایل هایی با پسوند های zip و tar و gz را خواهید داشت و به آسانی خواهید توانست که بر فایل های خود مدیریت داشته و به اسانی فولد و فایلا های خود را به هاست از طریق سیستم جوملا منتقل نمایید .

    نکته :
    این روش بر روی جوملای نسخه 1.5.15 امتحان شده و جواب داده است . در صورتی که می خواهید برای نسخه های قدیمی تر استفاده نمایید ابتدا جوملای خود را بروز نمایید .
    ابتدا وارد روت سایت خود بشوید و به ادرس زیر مراجعه کنید و فایل مربوطه را باز کنید(view.html.php) :
    PHP:
    administrator/component/com_media/views/media/view.html.php

    در این فایل در خط 106 شما کد زیر را مشاهده خواهید کرد :

    view sourceprint?

    PHP:
    01./* (...) */
    02.   // Add a delete button
    03.   $title JText::_('Delete');
    04.   $dhtml "<a href=\"#\" onclick=\"MediaManager.submit('folder.delete')\"
    05.     class=\"toolbar\">
    06.               <span class=\"icon-32-delete\" title=\"
    $title\"
    07.                 type=\"Custom\"></span>
    08.               
    $title</a>";
    09.   $bar->appendButton'Custom'$dhtml'delete' );
    10.   /* (...) */



    حال بعد از کد بالا کد نوشته شده در پایین را اضافه نمایید :


    view sourceprint?

    PHP:
    01./* (...) */
    02.   // Add a Unzip button
    03.   $title JText::_('Unzip');
    04.   $dhtml "<a href=\"#\" onclick=\"MediaManager.submit('folder.unzip')\"
    05.     class=\"toolbar\">
    06.               <span class=\"icon-32-unarchive\" title=\"
    $title\"
    07.                 type=\"Custom\"></span>
    08.               
    $title</a>";
    09.   $bar->appendButton'Custom'$dhtml'unzip' );
    10.   /* (...) *



    با این عمل در واقع شما کدی برای نمایش دکمه انزیپ کردن را در منوی ابزار مدیریت رسانه ایجاد کرده اید .
    حال برای افزودن تابع انزیپ به ادرس زیر رفته و فایل (folder.php) را باز نمایید :
    administrator/component/com_media/controllers/folder.php

    حال در این فایل بعد از تابع حذف (delete function) کد زیرا را اضافه نمایید (احتمالا بعد از خط 90) :

    view sourceprint?

    PHP:
    01./* (...) */
    02. function unzip() {
    03.     global $mainframe;
    04.
    05.     
    // Set FTP credentials, if given
    06.     jimport('joomla.client.helper');
    07.     JClientHelper::setCredentialsFromRequest('ftp');
    08.
    09.     
    // Get some data from the request
    10.     $tmpl    JRequest::getCmd'tmpl' );
    11.     $paths    JRequest::getVar'rm', array(), '''array' );
    12.     $folder JRequest::getVar'folder''''''path');
    13.
    14.     
    // Initialize variables
    15.     $msg = array();
    16.     $ret true;
    17.
    18.     
    if (count($paths)) {
    19.         foreach ($paths as $path)
    20.         {
    21.             if ($path !== JFilterInput::clean($path'path')) {
    22.                 JError::raiseWarning(100JText::_('Impossible de
    23.                   decompresser:'
    ).htmlspecialchars($pathENT_COMPAT,
    24.                   'UTF-8').' '.JText::_('WARNDIRNAME'));
    25.                 continue;
    26.             }
    27.
    28.             $fullPath 
    JPath::clean(COM_MEDIA_BASE.DS.$folder.DS.$path);
    29.
    30.             
    if (is_file($fullPath)) {
    31.                 $ext JFile::getExt(strtolower($fullPath));
    32.                     $pathdir $fullPath;
    33.                     if($ext != 'gz') {
    34.                         $pathdir str_replace".".$ext"",$pathdir);
    35.                     }
    36.                 else {
    37.                     $pathdir str_replace".".$ext"",$pathdir);
    38.                     $pathdir str_replace".tar""",$pathdir);
    39.                 }
    40.
    41.                 jimport
    ('joomla.filesystem.*');
    42.                 jimport('joomla.filesystem.archive');
    43.                 JFolder::create($pathdir);
    44.                 JFile::write($pathdir.DS."index.html""<html>\n<body
    45.                   bgcolor=\"#FFFFFF\">\n</body>\n</html>"
    );
    46.                 JArchive::extract($fullPath$pathdir);
    47.
    48.
    49.             
    } else if (is_dir($fullPath)) {
    50.                 JError::raiseWarning(100JText::_('Imossible de
    51.                   decompresser:'
    ).$fullPath.' '.JText::_('Pas un fichier
    52.                   ZIP'
    ));
    53.             }
    54.         }
    55.     }
    56.     if ($tmpl == 'component') {
    57.         // We are inside the iframe
    58.         $mainframe->redirect('index.php?option=com_media&view=mediaList&
    59.           folder='
    .$folder.'&tmpl=component');
    60.     } else {
    61.         $mainframe->redirect('index.php?option=com_media&folder='.$folder);
    62.     }
    63. }
    64. /* (...) */