Netbeans Preparing Commit

If you ever tried to SVN commit a big project using Netbeans (Magento?) you have most likely seen that “Preparing Commit” message doing seemingly absolutely nothing for several minutes. Apparently the commit takes forever because Netbeans is scanning the entire projet to localize any changes done by external applications before committing. This is not really an issue in 99% of my usual work days thus I had to find a way to disable this.

Seems that adding

-J-Dnetbeans.subversion.commit.deepStatusRefresh=false

To he netbeans configuration file will disable the automatic scan during the commit preparation phase. If for whatever reason  you end up changing a file outside Netbeans (external text editor, adding new pictures…) you cam simply go to the “Files” tab and right-click your projet and hit “Refresh Folder” to let it scan everything.

See http://wiki.netbeans.org/FaqNetbeansConf for information on how to change the netbeans configuration file.

Magento: Ultimate cache clear script

Update: If you use a recent version of Magento there might be a better solution here.

If you have been using Magento with a BIG database of products you will soon realize that the built-in “cache management” is quite limited due to the server’s usual time limit on requests. You just can’t refresh your catalog rewrites on 5000 products in less then a good 5 minutes and the other functions might give you the same problems as well.

By extracting the code from the cache management controller I was able to build a custom script that can be called via command line on the server and that will allow you to do a full cache refresh without any kind of time limit or connection timeout issues. The only requirement is shell access to your website files by SSH, Telnet or a terminal of some sort.

Continue reading “Magento: Ultimate cache clear script”

Magento: How to change the admin theme

So you want to use Magento for your company and now you have to change the look of the backend. Of course you don’t want to change the default Magento adminhtml theme and kill any chances of upgrading your templates later on. So thats where this post comes into play. ;)

Theres an easy way to add your own theme folder and use it to customize the look of your admin control panel. All files that aren’t included in your theme will fall back to the default Magento theme, thus avoiding any problems with missing templates and making it a lot easier to change only a few files.

Add a new adminhtml theme

Start by adding a new folder inside the app/design/adminhtml/default folder. To start out, the folder should also contain one sub-folders called template.

So, for example, you add a folder called mytheme, and inside it you add another folder called template.

Overriding Magento configuration

All you have to do is add a new config.xml file inside app/code/local/MyCompany/Adminhtml/etc. Add the following code inside the file:

Note: if you created this file by following one of my earlier guides you don’t have to create it again and you would simply add the <stores> section at the appropriate location inside the existing file.
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <MyCompany_Adminhtml>
            <version>0.1.1</version>
        </MyCompany_Adminhtml>
    </modules>
    <stores>
        <admin>
            <!-- override default admin design package and theme -->
            <design>
                <package>
                    <name>default</name>
                </package>
                <theme>
                    <default>mytheme</default>
                </theme>
            </design>
        </admin>
    </stores>
</config>

You will also have to tell Magento about this new module in an XML file placed inside /app/etc/modules. This file could be called MyCompany.xml and inside you would copy/paste:

Note: if you created this file by following one of my earlier guides you don’t have to create it again.
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <MyCompany_Adminhtml>
	    <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Adminhtml />
            </depends>
        </MyCompany_Adminhtml>
    </modules>
</config>

Changing template files

Now to change the default Magento templates you basically copy the .phtml files from the app/design/adminhtml/default/default/template folder into your own template folder and change the contents of the .phtml file to suit your needs.

For example, if you want to change the login box and remove the Magento copyright message:

Copy app/design/adminhtml/default/default/template/login.phml into the app/design/adminhtml/default/mytheme/template folder and then change the <p class=”legal”></p> to put your own legal note.

Magento: How to disable update notifications

A short tutorial on how to block the “New Magento Version” notifications in the Magento admin without modifying the core packages.

Create a new package under app/code/local , for this example lets make a “MyCompany” package. If you already have an existing package for your magento mods you can use that one but you will have to change all references to MyCompany in the following code.

Create folder app/code/local/MyCompany

Create a new module called “Adminhtml” containing a “Block” folder and a “etc” folder.

Create folder app/code/local/MyCompany/Adminhtml
Create folder app/code/local/MyCompany/Adminhtml/Block
Create folder app/code/local/MyCompany/Adminhtml/etc

Add a “Notification” folder inside the Block folder.

Create folder app/code/local/MyCompany/Adminhtml/Block/Notification

Create Toolbar.php inside the MyCompany/Block/Notification folder.

<?php
/**
 * Block all notifications
 */
class MyCompany_Adminhtml_Block_Notification_Toolbar extends Mage_Adminhtml_Block_Template
{
    public function isShow()
    {
	return false;
    }

    public function isMessageWindowAvailable()
    {
        return false;
    }
}

Create Window.php inside the MyCompany/Adminhtml/Block/Notification folder.

<?php
/**
 * Prevent popup window
 */
class MyCompany_Adminhtml_Block_Notification_Window extends Mage_Adminhtml_Block_Notification_Window
{
    public function canShow()
    {
        return false;
    }
}

Create config.xml file inside the MyCompany/Adminhtml/etc folder

<?xml version="1.0" encoding="UTF-8"?>

<config>

    <modules>
        <MyCompany_Adminhtml>
            <version>0.1.0</version>
        </MyCompany_Adminhtml>
    </modules>

    <global>

        <blocks>
          <adminhtml>
              <rewrite>
             	  <notification_window>MyCompany_Adminhtml_Block_Notification_Window</notification_window>
		  <notification_toolbar>MyCompany_Adminhtml_Block_Notification_Toolbar</notification_toolbar>
              </rewrite>
          </adminhtml>
        </blocks>

    </global>

</config>

Last but not least, you have to create a new Modules XML file to load your module. Create MyCompany.xml inside the app/etc/modules folder.

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <MyCompany_Adminhtml>
	    <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Adminhtml />
            </depends>
        </MyCompany_Adminhtml>
    </modules>
</config>

How to Enable Ant For Zend Studio

This week I found out that Zend Studio has Ant disabled by default (no idea why). Then I tried find a way to reactivate it by installing plugins or opening the workspace in a standard eclipse. Finally I found a nice post on the internet that explains how to have Zend reactivate the Ant plugins which are actually already installed and ready to be used.

1. Click File->New…->Other…

2. Click on the Java folder and select Existing project using Ant buildfile….

3. Click next

4. A message should popup asking you if you want to enable Ant, click OK

5. Close the new project wizard, you don’t have to actually create a project.

Go to Window->Show View->Other…, the Ant view should now be in the list.

Enjoy