ti-enxame.com

Redirecionamento de campo modal do Joomla

Criei um campo modal de upload para enviar conteúdo para o diretório de imagens e tudo funciona perfeitamente bem, exceto o redirecionamento após o upload.

Este é o formulário de upload na janela modal:

<form action="<?php echo JUri::base(); ?>index.php?option=com_file_manager&amp;task=file.upload&amp;tmpl=component&amp;<?php echo $this->session->getName() . '=' . $this->session->getId(); ?>&amp;<?php echo JSession::getFormToken();?>=1&amp;view=file" id="uploadForm" class="form-horizontal" name="uploadForm" method="post" enctype="multipart/form-data">
    <div id="uploadform" class="well">
        <fieldset id="upload-noflash" class="actions">
            <div class="control-group">
                <div class="control-label">
                    <label for="upload-file" class="control-label"><?php echo JText::_('COM_MEDIA_UPLOAD_FILE'); ?></label>
                </div>
                <div class="controls">
                    <input type="file" id="upload-file" name="Filedata[]" multiple /><button class="btn btn-primary" id="upload-submit"><i class="icon-upload icon-white"></i> <?php echo JText::_('COM_MEDIA_START_UPLOAD'); ?></button>
                </div>
            </div>
        </fieldset>
                <input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_fal_manager&amp;view=file&amp;layout=modal&amp;tmpl=component'); ?>" />

    </div>
</form>

E é assim que o redirecionamento fica no controlador:

public function upload() {
        // Check for request forgeries
        JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN'));
        $files        = $this->input->files->get('Filedata', '', 'array');
        $return       = $this->input->post->get('return-url', null, 'base64');
        $this->folder = $this->input->get('folder', '', 'path');
        if ($return) {
            $this->setRedirect(base64_decode($return));
        }
}

Eu só preciso que ele me leve de volta ao local original em que estava antes de fazer o upload, o URL do modal é:

index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video

e após o upload:

index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video

Estranho, eu sei, é o mesmo URL, mas não é a mesma página. Isso me leva à exibição em lista dessa página.

Qualquer ajuda muito apreciada

3
Dawid van der Hoven

O problema acabou sendo algo tão simples quanto &amp;, Mudança simples:

<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&amp;view=file&amp;layout=modal&amp;tmpl=component'); ?>" />

para:

<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&view=file&layout=modal&tmpl=component'); ?>" />

Fiz o truque. Obrigado a todos por suas contribuições.

3
Dawid van der Hoven

Você tem view=files na tua return-url entrada oculta do formulário. Em seguida, no controlador, você o atribui a $return var e redirecione usando-o. É por isso que você está sendo redirecionado para a exibição de lista.

1
Dmitry Rekun