Sobrescrevendo controllers do admin no Magento

Para exemplo, utilizarei um módulo chamado Comnisky_Adminhtml, com sua estrutura previamente cadastrada. O caminho deste módulo é app/code/local/Comnisky/Adminhtml/.

Edite o arquivo app/code/local/Comnisky/Adminhtml/config.xml, e inclua o conteúdo de forma que fique parecido como abaixo. A parte relevante está entre as tags <routers> e </routers> dentro de <admin>:

< ?xml version="1.0"?>
<config>
    <modules>
        <comnisky_adminhtml>
            <version>1.0.0</version>
        </comnisky_adminhtml>
    </modules>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <comnisky_adminhtml before="Mage_Adminhtml">Comnisky_Adminhtml</comnisky_adminhtml>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Copie o arquivo app/code/core/Adminhtml/controllers/Catalog/ProductController.php e cole em app/code/local/Comnisky/Adminhtml/controllers/Catalog/ProductController.php, em seguida edite esse arquivo.

Adicione o require_once no início do arquivo:

require_once 'Mage/Adminhtml/controllers/Catalog/ProductController.php';

E depois estenda da classe do core:

class Comnisky_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Catalog_ProductController

Feito isso, basta realizar as customizações nos métodos.

Posted in Artigos | Tagged , | 2 Comments

Magento: exibindo SQL de collection

Em qualquer classe que estenda de Mage_Core_Model_Mysql4_Collection_Abstract e/ou Varien_Data_Collection_Db é possível visualizar a SQL montada para recuperar essa coleção de registros. Basta fazer um cast para string:

var_dump((string)$collection->getSelect());

Ou sem cast:

var_dump($collection->getSelect()->assemble());
Posted in Artigos | Tagged , , | 1 Comment

Visualizando o encoding de arquivos

O comando file com a opção -i retorna o MIME type e MIME encoding para o arquivo informado.

Em conjunto com os comandos find e grep, é bem útil para encontrar encoding incorreto em arquivos.

find ./ -iname '*.php' -type f -exec file -i '{}' \; |
   \ grep -i -v "utf" | sort

Update 06/08/2011: corrigido. Estava faltando o ‘pipe’ antes do grep.

Posted in Genérico | Tagged , , | Leave a comment

Firefox 4 no Ubuntu

sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update

Depois, caso já tenha o Firefox:

sudo apt-get dist-upgrade

Caso contrário:

sudo apt-get install firefox
Posted in Artigos | Tagged , , | Leave a comment

Diferença entre duas revisions no SVN

Muito útil para obter todos arquivos modificados em um branch, por exemplo:

svn diff -r 472:HEAD --summarize ./

O branch foi criado na revision 472, e como não temos desenvolvimento no trunk atualmente, peguei as alterações entre 472 e HEAD. No lugar de HEAD pode ser o número de outra revision.

O retorno do comando acima é parecido com o conteúdo abaixo:

M       PHP/include/lib/Form.inc.php
M       PHP/include/lib/Detail.inc.php
A       PHP/html/js/jquery.maskedinput-1.2.2.min.js
M       PHP/html/js/teclas_atalho.js
A       PHP/html/service/ajax/addFaixaCep.php
A       PHP/html/service/ajax/isCepAtendido.php
A       PHP/html/service/ajax/getCidades.php
A       PHP/html/service/ajax/getRegioes.php
A       PHP/html/service/ajax/removeFaixaCep.php
A       PHP/html/service/ajax/getCliente.php
A       PHP/html/service/ajax/createPedido.php
A       PHP/html/service/ajax
M       PHP/html/gestao/default/css/gerenciamento.css
A       PHP/html/gestao/cadastro/rota_entrega_det.php

Outros comandos que utilizei em conjunto:

svn diff -r 472:HEAD --summarize ./ | cut -c9- | \
    grep -i -E "\.\w+$" | \
    xargs cp --parents -r -t \
    /home/william.comnisky/Desktop/Melhorias/

Update 22/08/2011: como sugestão do @lepkoski, adicionei o grep acima, evitando copiar todos arquivos do diretório incorretamente.

A partir do retorno mostrado acima, com o cut ignoro o status do arquivo no SVN e elimino os espaços em brancos com “-c9-”, ou seja, a partir do nono caractere em diante. Feito isso, utilizo o cp em conjunto com o xargs para copiar os arquivos com a mesma estrutura de diretórios para um novo diretório.

Importante: eu não estou considerando os status do SVN pois só terei adições e modificações de arquivos e diretórios. Porém, se na diferença entre revisões tiver alguma exclusão, é importante levar o status em consideração.

Tendo a estrutura montada nesse novo diretório, utilizo o ls em conjunto com o egrep

ls --format=single-column -R \
    /home/william.comnisky/Desktop/Melhorias/ \
    -F | egrep "[^/]$"
Posted in Artigos | Tagged , , | Leave a comment