Joomla 1.5 comes with a built-in site search component. The component allows you to create a “search” module for your website, which consists of an input field and a submit button that site visitors can use to search your site. When you create the search module, you can select an image to use in place of the “Submit” button. Search results are displayed in the site’s default template. What if you’d like to change the look of your search form in different parts of your site, however, and display results in more than one template? You can do it with a little bit of Mootools and an easy update to the search component’s controller.
Read more »
Customize Joomla Search Component with Mootools
Resize and Crop Photos with PHP’s GD Library
I was recently working on a personal project where I wanted to upload photos and, at the same time, carry out the following tasks:
- create a thumbnail of the uploaded image
- resize the image if either its width or height were over 600px and store the resized image rather than the original
- store a caption for the image in a database table
I considered using phpThumb; however, I ran into problems with ImageMagick when I tried saving an image to a file. Googling the problem suggested that I needed to use an older version of ImageMagick, which I was reluctant to do. So I turned to PHP’s GD library, and wrote a class to handle the image-related tasks.
Modify RankChecker Firefox Add-On for Multiple Users
RankChecker is a handy Firefox add-on from SEOBook.com that allows you easily to track search engine results for a particular domain. It rescues you from the wearisome task of entering keywords into a search engine and paging through the results until you find your website. RankChecker also allows you to save results, called presets, to a sqlite database in your Firefox profile.
As a web developer, however, I work with a team of developers and with dozens of websites whose search engine results we want to track and share. To make it easier to do that, I modified RankChecker to allow us to save presets to files stored with clients’ website files on our development server rather than to our individual Firefox profiles. I also modified RankChecker’s scheduled tasks to run presets from each of the databases and, instead of overwriting the preset when the task is run, saving the new data to a new preset. That allows us to keep an historical record of our websites’ keyword performances in search engine results.
Tracking down malicious code on a linux box
This blog site uses a WordPress theme called Blue Zinfandel developed by a guy named Brian Gardner. When I first launched it, I spent several days looking for something I liked and found and downloaded this from – I have no idea where…
Yesterday I discovered malicious code had been inserted into the header.php file. I should have been more careful… but I wasn’t, and I had to spend a few hours tracking down the offending code and cleaning it up. Here’s what happened:
First, the environment: I run this site on a virtualized Fedora box anchored to Xen and hosted by linode.com. I built a customized iptables script to filter traffic and can select incoming and outgoing traffic through a series of 1s and 0s and a quick redeploy. For example, I have a list of variables that can be assigned for client function and a list that can be assigned for server function.
Read more »
CME/UC500: IP phones, dual-line, and call waiting
Most of the 7900 series Cisco IP phones can be configured for dual-line capability. The most notable exceptions are the 7936/7 series conference phones and the 7921 series wireless phones that are both considered single-line. In this case, dual-line function allows an incoming call to display on an IP phone when that phone is off-hook or otherwise already in use. This is not to be confused with a telco-enabled call-waiting feature that may be installed on an analog, CO line. For information on how to use that feature, reference this, earlier post.
There may be reasons why you wouldn’t want a phone to display more than one active/alerting call at a time. If, for example, you have a call center or other type of hunt group function, you may not want additional calls to be coming in to a hunt group member when that person/phone is already engaged.
Read more »



