Problema nel Pannello di amministrazione dopo l'installazione di SUPEE Patch 8788


9

Ho Magento CE 1.9.2.4 installato insieme alle patch (5377,1533,4788 ecc. Quasi tutte le patch).

Questa domanda rivela anche problemi che possono / si verificano sicuramente in qualsiasi modulo personalizzato che coinvolge i caricamenti di immagini nelle loro sezioni personalizzate, piuttosto che problemi di magento.

  1. Ora dopo aver installato l'ultima patch 8788 tramite riga di comando, non sono in grado di aprire la pagina "Aggiungi / Modifica" del mio modulo personalizzato, che funzionava bene prima dell'installazione di 8788.

Ricevo l'errore di seguito quando provo ad aprire la pagina "Aggiungi nuovo banner" del mio modulo:

Errore irreversibile: chiamata a una funzione membro setUrl () su un non oggetto in /home/site_user/public_html/app/code/community/My/Module/Block/Adminhtml/Banner/Add/Tab/Image.php on line 57

La linea colpevole è la seguente:

$this->getUploader()->getConfig()->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'))
  1. Inoltre non riesco a vedere le immagini dei prodotti già caricate nella Catalog > Manage Products > Any product > Imagessezione admin .

Di seguito è riportata la Mage_Adminhtml_Block_Media_Uploaderclasse principale chiamata.

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magento.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage_Adminhtml
 * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

/**
 * Adminhtml media library uploader
 *
 * @category   Mage
 * @package    Mage_Adminhtml
 * @author      Magento Core Team <core@magentocommerce.com>
 */

/**
 * @deprecated
 * Class Mage_Adminhtml_Block_Media_Uploader
 */
class Mage_Adminhtml_Block_Media_Uploader extends Mage_Uploader_Block_Multiple
{
    /**
     * Constructor for uploader block
     */
    public function __construct()
    {
        parent::__construct();
        $this->getUploaderConfig()->setTarget(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/upload'));
        $this->getUploaderConfig()->setFileParameterName('file');
    }
}

Qualcuno mi faccia sapere come risolvere questo problema con il minimo cambiamento di codice possibile.


Potresti pubblicare il contenuto del getUploadermetodo per favore?
Raffaello al Pianismo digitale,

Si prega di controllare, aggiornata la mia domanda.
Vicky Dev,

3
Possibile duplicato della patch
Teja Bhagavan Kollepara,

1
@TejabhagavanKollepara Si prega di controllare entrambi i casi nella domanda prima di contrassegnare in fretta il duplicato.
Vicky Dev,

1
@VickyDev l'ho appena risolto qui magento.stackexchange.com/questions/141775/…
Qaisar Satti,

Risposte:


17

Mage_Adminhtml_Block_Media_Uploaderè obsoleto dopo SUPEE-8788 (e 1.9.3). Quindi ci sono diverse modifiche all'incompatibilità all'indietro che interrompono il modulo usando l'uploader.

Per prima cosa ho pensato che un piccolo cambiamento avrebbe risolto il problema, ma in realtà c'è molto altro da fare.

Crea un modulo usando la galleria compatibile con 1.9.2 e 1.9.3

Quindi, se sei un fornitore di moduli, non vuoi avere due diverse versioni del tuo modulo per 1.9.2 e 1.9.3. Ecco come rendere il tuo codice compatibile con entrambi:

Nel tuo _prepareLayoutmetodo di blocco devi effettuare le seguenti operazioni:

Sostituire:

 $this->getUploader()->getConfig()
            ->setUrl($url)
            ->setFileField('image')
            ->setFilters(array(
                'images' => array(
                    'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
                    'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
                )
            ));

Con:

    if (class_exists("Mage_Uploader_Block_Abstract")) {
        // PATCH SUPEE-8788 or Magento 1.9.3
        $this->getUploader()->getUploaderConfig()
            ->setFileParameterName('image')
            ->setTarget($url);

        $browseConfig = $this->getUploader()->getButtonConfig();
        $browseConfig
            ->setAttributes(
                array("accept"  =>  $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg'))
            );
    } else {
        $this->getUploader()->getConfig()
            ->setUrl($url)
            ->setFileField('image')
            ->setFilters(array(
                'images' => array(
                    'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
                    'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
                )
            ));
    }

Come puoi vedere sto usando class_existsper verificare se SUPEE-8788 o Magento 1.9.3 è applicato.

Quindi nel tuo gallery.phtmldevi sostituire:

var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php if ($_block->getElement()->getReadonly()):?>null<?php else:?><?php echo $_block->getUploader()->getJsObjectName() ?><?php endif;?>, <?php echo $_block->getImageTypesJson() ?>);

Con:

<?php if (class_exists("Mage_Uploader_Block_Abstract")): ?>
    var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php echo $_block->getImageTypesJson() ?>);
<?php else: ?>
    var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php if ($_block->getElement()->getReadonly()):?>null<?php else:?><?php echo $_block->getUploader()->getJsObjectName() ?><?php endif;?>, <?php echo $_block->getImageTypesJson() ?>);
<?php endif; ?>

Quindi, per il file di layout, puoi farlo in questo modo:

<reference name="head">
    <action method="addJs"><file helper="module/getFlowMin" /></action>
    <action method="addJs"><file helper="module/getFustyFlow" /></action>
    <action method="addJs"><file helper="module/getFustyFlowFactory" /></action>
    <action method="addJs"><file helper="module/getAdminhtmlUploaderInstance" /></action>
</reference>

Sostituisci modulecon l'identificatore della classe di supporto e nel modulo di Data.phpsupporto aggiungi quanto segue:

protected function _isNoFlashUploader()
{
    return class_exists("Mage_Uploader_Block_Abstract");
}

public function getFlowMin()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/flow.min.js" : null;
}

public function getFustyFlow()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/fusty-flow.js" : null;
}

public function getFustyFlowFactory()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/fusty-flow-factory.js" : null;
}

public function getAdminhtmlUploaderInstance()
{
    return $this->_isNoFlashUploader() ? "mage/adminhtml/uploader/instance.js" : null;
}

1
anche setUrlcambiare con setTarget.
Qaisar Satti,

Funziona per il problema di caricamento di file CSV su Magento 1.9.3.8. Grande!
Igor Revenko,

3

aggiungendo la risposta di @Raphael è necessario aggiungere tre correzioni

prima correzione

Spacename_Moduelname_Block_Adminhtml_Modulename_Edit_Tab_Images.php

protected $_uploaderType = 'uploader/multiple';
public function __construct()
{
    parent::__construct();
    $this->setTemplate('moduelname/gallery.phtml');
    ....
}
protected function _prepareLayout()
    {
 $this->setChild('uploader',
            $this->getLayout()->createBlock($this->_uploaderType)
        );

        $this->getUploader()->getUploaderConfig()
            ->setFileParameterName('image')
            ->setTarget(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'));

        $browseConfig = $this->getUploader()->getButtonConfig();
        $browseConfig
            ->setAttributes(array(
                'accept' => $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg')
            ));
     return parent::_prepareLayout();
    }

Seconda correzione in adminhtml / default / default / modulename / gallery.phtml di file

 <script type="text/javascript">
//<![CDATA[
var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php echo $_block->getImageTypesJson() ?>);
//]]>
</script>

terzo aggiustare la parte js layout / module.xml

<reference name="head">
            <action method="addJs"><file>lib/uploader/flow.min.js</file></action>
            <action method="addJs"><file>lib/uploader/fusty-flow.js</file></action>
            <action method="addJs"><file>lib/uploader/fusty-flow-factory.js</file></action>
            <action method="addJs"><file>mage/adminhtml/uploader/instance.js</file></action>
</reference>

file per correggere loaction

prima correzione app / codice / core / Mage / Adminhtml / Block / Catalog / Product / Helper / Form / Gallery / Content.php

seconda correzione app / design / adminhtml / default / default / template / catalogue / product / helper / gallery.phtml


Sarebbe davvero utile se menzionassi anche i file per le correzioni.
Vicky Dev,

@VickyDev ha aggiunto anche il nome file.
Qaisar Satti,

Grazie, per la tua risposta, ma questo succede nelle immagini dei prodotti Core Magento, quindi dove devo fare le prime due modifiche? Magento ce 1.9.2.4 con patch 8788 installata.
Vicky Dev,

1
Ma non vedo alcun link per passare alla visualizzazione della chat qui.
Vicky Dev,

1
@QaisarSatti vedi che ho aggiornato il mio codice in modo che sia compatibile sia con la 1.9.2 che con la 1.9.3;)
Raffaello al Pianismo Digitale,

2

Risolto - Problema di caricamento dell'immagine dopo l'installazione PATCH 8788 della versione Magento CE 1.7.0.2 - 1.9.2.4.

I was able to fix it,Please Follow following instruction.

Passaggio >> 1: Dopo aver installato correttamente la patch di sicurezza 8788, vai al pannello di amministrazione e svuota tutta la cache di Magento . Quindi disconnettersi dal Pannello di amministrazione e accedere nuovamente al Pannello di amministrazione .

Passaggio >> 2: vai a Gestione indice e seleziona reindicizza tutti i dati dopo aver nuovamente scaricato tutta la cache di Magento .

Passaggio >> 3: Questo passaggio molto importante, Elimina la cronologia della cache del browser (Ctrl + Maiusc + Elimina) cancella tutti i dati di navigazione dal browser inclusi i cookie.

Passaggio >> 4: vai al catalogo >> Gestione prodotti, aggiungi una nuova immagine di qualsiasi prodotto, ora puoi vedere che tutto funziona perfettamente.


0

Stavo riscontrando il tuo stesso caso problema 2. Nel mio caso è stato causato dalla sovrascrittura di questo file da un modulo personalizzato:

app / design / adminhtml / default / default / template / catalogo / prodotto / assistente / gallery.phtml

Ti suggerirei di controllare se hai un modello simile che sovrascrive il modello per quel blocco Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contente, in tal caso, applica la Supee-8788patch al file di sovrascrittura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.