2012-07-20 3 views
0

Я конвертирую компонент Joomla 1.5 в J2.5 Я загружаю файлы динамически. IFrame заполнен формой для этого, iframe имеет внутренний iframe, чтобы установить цель формы. Получив ответ JSON, я использую функцию на onload внутреннего iframe, чтобы стереть iframe и отобразить загруженное изображение (используя элементы родительской страницы). Все отлично работает на J1.5, но на J2.5 я получаю файл joomla.json для загрузки и кажется, что форма не использует цель.Joomla 2.5 загружать файл динамически

Функция для отображения формы на Outter IFRAME является:

function showUploadImage(evt) { 

    if (!document.getElementById("uploadIFrame")) { 

     return false; 

    } 

    var frame = document.getElementById("uploadIFrame"); 

    var doc = frame.contentDocument; 

    var page; 

    page = "\ 

      <html> \ 

       <head> \ 

        <link rel='stylesheet' href='<?php echo JRoute::_(JURI::base().'/components/com_tutorial/css/base.css',false); ?>' type='text/css' /> \ 

        <link rel='stylesheet' href='<?php echo JRoute::_(JURI::base().'components/com_tutorial/css/upframe.css',false); ?>' type='text/css' /> \ 
       </head> \ 

       <body>"; 

    page += ' \ 

      <div id="waitimage"></div> \ 

      <form id="fileUploadForm" method="post" enctype="multipart/form-data" action="<?php echo JRoute::_('index.php?option=com_tutorial&view=edittutorial&task=savetutimage&tmpl=json&format=json&tutId='.$this->tutId); ?>" target="uploadTarget"> \ 

       <label class="title" for="images"><?php echo JText::_("UPLOAD IMAGE"); ?></label> \ 

       <div class="separator25"></div> \ 

       <div id="pageimages"> \ 

        <div id="newimgfields"> \ 

         <div class="controw"> \ 

          <label class="title" for="image"><?php echo JText::_('SELECT_FILE'); ?></label><input size="35" id="image" type="file" name="image" /> \ 

         </div> \ 

         <div class="controw"> \ 

          <input type="submit" onclick="document.getElementById(\'waitimage\').innerHTML=\'<div class = &quot;mooloader&quot;></div>\';" value="<?php echo JText::_('UPLOAD_IMAGE'); ?>" /> \ 

         </div> \ 

        </div> \ 

       </div> \ 

      </form> \ 

      <iframe id="uploadTarget" name="uploadTarget" src="" style="width:0;height:0;border:0px solid #fff;"></iframe> \ 

      '; 

    page += "</body></html>"; 

    // now write out the new contents 

    if (doc == undefined || doc == null) 

     doc = frame.contentWindow.document; 

    doc.open(); 

    doc.write(page); 

    doc.close(); 
    doc.getElementById("uploadTarget").onload = uploadDone; 

} 

И функция выполняется на "OnLoad" является:

function uploadDone() { 

    var frame = document.getElementById("uploadIFrame"); 

    var doc = frame.contentDocument; 

    var innerFrame = doc.getElementById("uploadTarget"); 

    var ret = innerFrame.contentDocument.getElementsByTagName("body")[0].innerHTML; 

    var data = eval("(" + JSON.decode(ret) + ")"); 

    //var data = eval("("+ret+")"); 

    if (data=="0"){ 

     alert("<?php echo JText::_('ERROR_SAVE_IMAGE'); ?>"); 

    } 

    else if (data=="") { 

    } 

    else { 

     var upImage = new Element('img',{ 

      'class':'tutmainthumb', 

      'id':'tutThumb', 

      'src':'components/com_tutorial/helpers/image.php?img='+data 

     }); 

     upImage.inject('tutImage','top'); 

     $('uploadIFrame').dispose(); 

    } 


} 

ответ