Reviewing a CMS solution developed on Mediatemple with the Seagull PHP Framework, including Paypal integration

Wednesday, July 25th, 2007

On Friday 20th July I finally deployed a site which we as a team have been working on for a number of months. Working on the project has been a huge learning curve and has taken way longer than ever expected.

BD4D

The site which I am talking about is http://bd4d.com, which stands for By Designers 4 Designers is built using the seagull php framework with the new cms module

General comments

Media Temple Installation

During the live installation I encountered a few problems, most of which related to permissions of files on the server:

The main one however were the permissions of the /var/lib/php/session/ folder – it has to be writable

Plugins that I found really useful during development

There were two firefox plug-ins that I found very useful during development of the site:

Colorzilla – gives you # codes for colours on any webpage
IE tab – allows you to open up ie7 tabs within firefox, which is great for cross browser compliant xhtml/css

Thanks to the developers of these two add-ons ;)

Paypal

The site has a payment gateway for listing jobs and events which has transaction processing done by Paypal.

In terms of project mistakes, this was one of the biggest we made. The support that James received from Paypal was extremely poor and the general documentation which they supply is often out of date and incorrect. I am amazed that they have become such a successful company, when it is so difficult to integrate their transaction processing into one’s site.

However after a lot of waiting for accounts to go live, numerous queries, emails, phone calls and a lot of frustration, we did eventually get the transactions working. It is working fine now, but it was definitely not worth all of that hassle.

I would be interested to here about other experiences from developers using Paypal – hopefully you had a better one than we did.

Site Features

Showcase

The section of the site that I am most proud of is the Showcase section, which has flash and movies of some really cool clips which the bd4d guys have done. The section allows comments to be made on each of the movies and I think it looks pretty slick – even if I say so myself ;)
To get the section functioning, I used the following:

A comment manager which Dmitri initially developed and then I adapted that code to be used for the site.

To prevent spam on the site I used captcha package from the php pear library

And I used the following code in the template to hold the movies/flash files:

< object width="550" height="400" >
< param name="movie" value="{webRoot}/themes/bd4d/showcasemovies/
{oItem.media}" >
< param name="quality" value="high" >
< embed src="{webRoot}/themes/bd4d/showcasemovies/
{oItem.media}" quality="high" width="{oItem.width}" height="{oItem.height}" autostart="true">< / embed >
< / object >

Events

The Events calendar uses the default seagull events module as a basis, but there where a few enhancements made to fit the requirements of the site. The majority of the development of this section was done by James and I think that he did a pretty good job of it.

The calendar looks pretty slick and works really well, also the backend of the seagull events module provides a lot of flexibility for administrators wanting to manage events.

Job board

The Job board uses custom managers in the default module and as I have mentioned in my section about paypal, it allows members of the site to post jobs for a fee. The transaction processing handles straight paypal payments as well as credit card payments which are verified by paypal.

Conclusion

As I mentioned in the introduction this site took way longer than expected and there were a number of hard lessons which the whole team learnt. But at the end of the day, the site looks pretty good and works as expected, so in some way it can be seen as a success.

Developing a CMS solution on Mediatemple with the Seagull PHP Framework, including Google Maps

Friday, April 20th, 2007

Having just completed the Atalink site, I would like to highlight some of my experiences, frustrations and lessons which I have learnt over the past few months.

Background

I developed the site using the Seagull php framework, using the publisher module (which has recently been superseded by the CMS module).

The publisher module requires a bit of hacking to make it run effectively, especially if the site requires content pages which have different layouts. But, overall the site works well and looks pretty good, even if I say so myself ;).

I have still had a number of difficulties, so for those of you who are planning on building a similar site, here are some of the things which I have learnt:

This is especially relevant if you are going to be using some of the following:

Lessons learned

Tips for using the Seagull publisher module:

If you have various site sections which need to have different layouts, the best way of handling this is to create different content types for each different layout which is required.

Then create a different publisher template for that content type and specify the styling which you want for that particular section.

If you have any exceptions, then use a handler like this:

{if:isEqual(29,articleID)}

{end:}
{if:isEqual(30,articleID)}

{end:}
{if:isEqual(34,articleID)}

{end:}

I will endeavour to write a more in depth tutorial for this and put it on the Seagull wiki. Once I have done so, I will update this post.

Server Issues

The first issue which I encountered was trying to do an installation on a staging sub-domain on a Media Temple Dedicated Virtual Server, where php safe mode was turned on. I have written a post which is a guide on how to successfully remove these restrictions.

Browser Issues

As always, I encountered problems with cross browser compatibility. I discovered huge differences between IE6, IE7 and Firefox. The site looks best in Firefox, Safari and in IE6, but there are a few small differences on IE7.

I used this basic conditional block to include an IE hacks file for when a user views the site using IE.

< !--[if IE] >< style type="text/css" >@import “http://www.atalink.com/ themes/atalink/css/hacks/ie.css”;< /style >< ![endif]-- > (Remove spaces)

Google Maps

Although this is not that difficult to implement, I found quite a useful site called:

Google Maps latitude, longitude Popup , which gives you the latitudes and longitude values for a specific location, which you use in the Google supplied javascript

Design

Although a designer may do a really good job and a client signs off a design, one has to be flexible enough to deal with client requests for changing of the layouts. Often the changes requested are quite valid and one should consider each request before just disagreeing.

Content

Again, I have been reminded about how important it is to have content ready and signed off, before beginning with development. It is amazing how much time can be wasted when you are waiting for pieces of content. Details about content should be agreed upon during initial agreements and no matter how difficult it may be, these agreements should be adhered to.

Conclusion

I have enjoyed working on this site and I have learnt a lot, in terms of development and in terms of communicating with clients.

Tech4Africa 2007: Thanks for the feedback

Tuesday, January 30th, 2007

Technology for Africa Logo

When I first started doing research on the web to get contact details for Southern African businesses & individuals involved with the web and information technology, I wasn’t convinced that there would be massive interest in another technology conference in South Africa.

However, with responses from over 150 people I am pleased to say that I now know that there is a definite ineterest for a conference like “Technolgy for Africa”. We have had some great responses and feedback from interested people and here are some of the suggested topics which will probably be discussed at the conference:

  • Emerging technologies & trends
  • Web 2.0
  • New Marketing
  • The role of Open Source Software
  • Blogging & social/community software
  • Future of the web
  • Telecommunications in Africa - VOIP, mobile/cellular technology
  • Web standards

The “power of the blogosphere” has been a great help in getting the word out there. So far there have been at least 6 posts from different bloggers, all of whom have written very supportive articles. It’s a great help to have your guys support, thanks goes out to:

David Duarte
Cowboysengines
Hash @ Whiteafrican.com
Coda.co.za
Scott.za.net
Muti.co.za

During the next few weeks, our main aims are to find a suitable date, add some new features to the website(technologyforafrica.org.) , talk to the key note speakers - and get as much buy in as possible from the Africa web & technology community…

Watch this space, we are going to make this happen!

Technorati Profile

The value of user data

Wednesday, November 22nd, 2006

During my morning feed reading I have again been reminded about how valuble a critical mass of users can be. Flickr have launched a camera finder section on their site, which identifies what camera is used to take a digital photo. This data is extremely useful to the camera industry, flickr users and photograpers.

The “Flickr Launches Camera Finder” post on Mashable gives a really good summary the details of what the new feature entails.

I think that it is about time for our team at Technovated to release one of our products, which we have been putting on hold for so long because of client work. Come on chaps - lets stop talking and start working!

Building for the web is like building a house

Thursday, November 16th, 2006

Over the past few months, I have been working a a number of quite different projects. But, even though the projects have been different from one another, I have encountered the same problems on each of them.

The problems I have encountered generally relate to project requirements and client expectations. What I have realised is that for a project to be successful and to be delivered on time (which hardly ever happens with IT projects) it is incredibly important to agree the requirements before starting.
Once these requirements have been agreed, there should be a line drawn in the sand. From that point no changes should be made to the original agreement.

Another thing that I have become aware of, which relates to expectations is that the average person wanting a webiste doesn’t care about technical specifications. As long as the site “works” then they are satisfied - They don’t care whether the site is table based and are more worried about the design then about fuctionality. This brings me to my “analogy”.

Whilst at lunch one day this week, we come up with “The house analogy” - lets call it that for now. What it entails is that I want to compare building a website to a house. When someone wants a house built they need to get a plan, blueprints, approval, building suppluies and other resources. What I am getting at is that there is a lot of planning reuired to build a house - you don’t just decide to build a house one day and then shoot from the hip.

I believe that the same should go for a website. I can’t get my head around the fact that people want a site developed without ever going through a process of planning. It is not sufficient to just provide a developer with some design layouts and then expect him to magically create a new website.

You can’t just give a picture of a house to a builder and say - “Build it, I want a new double story house with a balcony”. I am sure he would tell you to fly a kite! Well being a developer, it is so important to have proper requirments. I am talking about wireframes, process flow, sitemaps, information architecture and design. Not just a few pictures of a site.

The bottom line is that generally the average joe on the street wanting a webiste doesn’t want to spend extra money on that sort of planning detail and would rather go for the cheapest and quickest option. Sad but true!

All I can hope is that in the future, web standards will become more important and proper planning will become integral. This will make life as a develope lot easier!