Quick Tip: How to Work with @Font-face

Quick Tip: How to Work with @Font-face

Due to the fact that @font-face can be a bit overly complicated, it hasn’t caught on quite as much as it should. Once you start reading about licensing, different font formats, browser consistencies, it can potentially become more trouble than it’s worth.

But – in five minutes, I’ll try to simplify the process of working with custom fonts as much as I possibly can. Services like Font Squirrel help to make the task a cinch!


Final CSS

@font-face {
font-family: 'blok-regular';
src: url('type/Blokletters-Potlood.eot');
src: local('Blokletters Potlood Potlood'),
 local('Blokletters-Potlood'),
 url('type/Blokletters-Potlood.ttf') format('truetype');
}

@font-face {
font-family: 'blok-italic';
src: url('type/Blokletters-Balpen.eot');
src: local('Blokletters Balpen Balpen'),
 local('Blokletters-Balpen'),
 url('type/Blokletters-Balpen.ttf') format('truetype');
}

@font-face {
font-family: 'blok-heavy';
src: url('type/Blokletters-Viltstift.eot');
src: local('Blokletters Viltstift Viltstift'),
 local('Blokletters-Viltstift'),
 url('type/Blokletters-Viltstift.ttf') format('truetype');
}

h1 { font-family: blok-heavy, helvetica, arial; }

Notice how we’re referencing both an .eot and .ttf font? This is because, of course, Internet Explorer only uses its own format, that has yet to truly catch on. As such, we must first import that .eot file, and then move on to the different formats for Firefox, Safari, etc. It’s essential that you load the .eot version first.

Next, we search for the font on the user’s computer by using the “local” attribute. If it’s unfound, only then do we pass a url that will load the font.

Why Doesn’t IE Try to Load the TTF Fonts?

This was definitely a concern. If Explorer can’t work with the truetype format, we don’t want to waste time trying to download the font. Luckily, because of all those local attributes, and the commas, IE won’t understand any of it. As such, it will simply skip the line all together, thus, only utilizing the .eot version.



24 Best Practices for AJAX Implementations

24 Best Practices for AJAX Implementations

Implementing AJAX technology can be a hit or miss thing. Do it well and you’ll have users raving over the slickness it provides to the general user experience while if you mess it up, you’ll be at the receiving end of their wrath. Here are 24 tips to guide you with implementing AJAX technology within your web application.

1. Understand What it All Means

First up, you need to understand what AJAX is, what it stands for and how it has revolutionized parts of the internet. You’ll need to know what its advantages are before you can make an informed decision

Here is a list of must read articles to get you up to speed.

2. Check for Appropriate Usage Scenarios

AJAX can sound all fine and dandy but there are only so many places you can implement it without it sounding like another bullet point. Do proper research and testing to make sure you are implementing AJAX for the right reasons. Because it sounds nice is not a valid reason.

Proper usage scenarios would be if you have lots of data in the back end and want to update the UI as and when the user needs access to that data or when you want to emulate a proper desktop application and handle everything asynchronously. An extremely bad scenario is when you have each page of a static web site load through AJAX for no reason other than you can. Use your discretion here.

3. Learn to Implement it With Raw Code

Before you delve into writing your code, understand the raw code to do it first. Libraries are great at reducing the time it takes to create browser agnostic code but when it breaks it’d be best if you know how to do it without libraries helping you.

I highly recommend Jeffrey’s tutorials on making AJAX requests with raw JavaScript here and here.

4. Use a Library

Once you’ve mastered the raw JS which handles the AJAX implementations, it’s best you shift over to a JavaScript library which provides robust support for AJAX. Any of the major libraries like jQuery, Prototype or MooTools should do.

Libraries not only provide an exhaustive feature set you can make use of but also makes sure your code is compatible with all browsers without you having to do anything extra.

Here are a few of our favorites which encompass proper AJAX functionality:

5. Master the Library

Once you’ve gotten the hang of making AJAX requests with your library of choice, it’s time to take it to the next level and master it. It may sound a little redundant but there is a big difference between the two.

With each library getting bigger, packing more features with each release, the developers hide a huge amount of functionality from the beginner developer. For example, did you know that there are multiple methods in jQuery to make AJAX calls? Or that a number of event triggered methods are only available with the core AJAX call? A lot of people don’t know that and thus are unable to leverage the untapped potential of the library.

Here are a few choice resources for your perusal:

6. Provide Feedback

Tutorial Image

On of the main reasons people were against AJAX in the past was they couldn’t really tell when the application updates the data it contains. This is also an integral part of the general user experience made even more pertinent with AJAX.

So even for the tiniest thing, remember to provide feedback to the user letting them know their action has been registered. The user has clicked on a button? Let them know!

7. Utilize Proper Events and Callback Functions

Whether you are using raw JS or a library to implement this functionality, you’ll have access to the state of the request i.e. whether the request was successful; met with an error and finally whether it has been completed.

Make proper use of these events and their respective callbacks to manipulate the UI for a better user experience. For example, if the request was unsuccessful, you’d want to update the user interface to reflect that their changes weren’t successful while if it was successful, you’d want to tell them so. Don’t keep the user waiting!

With jQuery, you’d make use of the success and error callbacks. You also get other callbacks such as complete and beforeSend to be invoked for apporopriate use.

$.ajax({
        //Other code
           success: function(msg)
        {
            // Update the UI here to reflect that the request was successful.
            doSomethingClever();
        },
        error: function(msg)
        {
            // Update the UI here to reflect that the request was unsuccessful
            doSomethingMoreClever();
        },
        complete: function(msg)
        {
            // Update the UI here to reflect completion
            doSomethingEvenMoreClever();
        }
});

– Show quoted text –

8. Choose the Right Format for the Job

Just because XML occurs in the abbreviation doesn’t mean you are limited to XML for the payload. You are free to choose whatever format strikes your liking. JSON? Sure. XML? Naturally. HTML? Of course. Raw strings? Definitely.

So, essentially, whatever floats your boat. You aren’t limited to any format. You get to choose whichever format makes the work at hand easier for you and makes the most sense for that specific instance.

9. Read Extensively

AJAX, while old in relative terms, is still very much in flux. Exciting new solutions are created everyday while scarily thorough books covering the subject are often released. Be it web developments blogs (like this one!) or books, keep reading to keep yourself informed of the latest developments.

Here are my most visited and/or read blogs and books:

10. Experiment Continuously

Reading book after book and article after article is awesome but to get a grip on the subject, you’ll need to fold up your sleeves and write some code yourselves. Trust me, you’ll learn a lot more a lot quicker reading a bit and then writing some code about it than just reading continuously without writing any code to better understand what you’ve learnt.

11. Utilize Firebug

Tutorial Image

Firebug is arguable the most important tool in every web developer’s repertoire. Along with impressive JavaScript debugging and other potent features, it also let’s you see each AJAX request as it is made along with a myriad other details about the request including from where it originates, what its payload is and so much more. You can download it right here.

Here are a few more recommended resources:

12. Keep the Users With Old Browsers in Mind

Unless your web application is like Google Maps it’s always a good idea to provide users with a fallback so they can still use your application. Case in point would be the numerous web applications which route all their user interactions through AJAX if they have the capability while falling back to a normal HTML version otherwise.

13. Bookmarkability

The tendency to bookmark is a pervasive habit of the average web user and it’s imperative your application respects that. With AJAX, the address bar of the browser is not updated which means when a user wants to bookmark a page with content loaded dynamically with AJAX, he/she is going to bookmark the initial page and not the updated page. This presents a huge problem.

Fortunately, there are a few techniques to fix this problem. Here is a selected list of articles intended to help you with that:

14. Use Proper Animations

This is another of those user experience issues which may mar an otherwise spectacular application. Often with an AJAX application, the user may fail to even notice a change has occurred with an element of the user interface or the data it contains. In light of this issue, it’s essential that the developer uses non-garish, tasteful animations to draw the user’s attention to the fact that the user interface has been updated to reflect the user’s actions.

You can read about how to use jQuery to create tasteful, cross browser animations here.

15. Respect the Back Button

The back button is another action that has become part of a normal web user’s habits. Make sure your application adheres to this respected paradigm to avoid angering users. Trust me, they will, if suddenly their back button doesn’t work as intended.

Here is a list of article which should help you with the matter.

16. Change the DOM Intelligently

Imagine this: your request has succeeded and has returned a chunk of data with which you hope to update your user interface. If this chunk of data has few individual chunks, you can proceed as usual. If instead it has, say, 15 contiguous elements to be updated, it is better to just create the elements, modify their data in memory and replace those in the DOM in one big swoop rather than accessing each element and updating the DOM each time separately.

Modifying the DOM separately leads to worse performance as the number of edits to be made increases.

So, for a chunk of HTML like so:

<div id="container">
<span id="elem1"></span>
<span id="elem2"></span>
</div>

instead of doing this:

$("#elem1").html("Value 1");
$("#elem2").html("Value 2");

Do this:

var updatedText = "<span id=\"elem1\">Value1</span>
<span id=\"elem2\">Value2</span>";
$("#container").html(updatedText);

It might look a lot of work for just two elements but once you extrapolate it to more, the performance alone will be worth it. It’ll be faster since you’ll be updating the DOM just once irrespective of how many elements you have within the updated HTML. With the usual method though, the number of edits required to the DOM scales linearly to the number of elements which in turn degrades performance.

17. Comment Your Code

This is a no-brainer but comment your code properly. Chances are, your code is going to be looked at by a few hundred people , at least, looking to learn from you and commenting is definitely going to earn your extra rep points and paragon cookies.

You don’t necessarily need to comment every tiny bit of your code; commenting just the important bits is sufficient.

This is too much!

$.ajax({
    // Switch off caching
    cache: false,

        //Set the type of request
       type: "GET",

        // Set the timeout
    timeout: 5000,

        // Specify the proper handler
       url: "handler.php",
       success: function(msg)
        {
           // Update the UI here to reflect that the request was successful.
           doSomethingClever();
        },
        error: function(msg)
        {
           // Update the UI here to reflect that the request was unsuccessful
           doSomethingMoreClever();
        }
});

A much better way to add comments since a lot of it is self explanatory.


// Make an AJAX call to handler.php and update the UI
$.ajax({
    cache: false,
       type: "GET",
    timeout: 5000,
       url: "handler.php",
       success: function(msg)
        {
           doSomethingClever();
        },
        error: function(msg)
        {
              doSomethingMoreClever();
        }
});

18. Make an Informed Decision About the Request Type

This is strictly a general web application tip than specifically an AJAX tip but do take special note of the type of request you are making: GET or POST. The XMLHttpRequest object is capable of making both type of requests but it is up to you to decide what kind to make.

As their names signify, a GET request is used to procure data from a source while a POST request is used to submit data to be processed. With an AJAX GET request, as with a normal GET request, you’ll have to pass on the query data as part of the URL itself manually as opposed to a POST request where the data is sent automatically. Also note that GET requests are cached automatically while a POST request isn’t.

19. Use a Proper IDE

Tutorial Image

When it comes to JavaScript, please don’t be an elitist and limit yourself to plain old notepad. Your productivity will spike sharply with the use of a proper IDE, specially one with support for your JavaScript library of choice.

For the PC loyalists

For my fruit flavored brethren

  • Coda
  • Espresso
  • <a
    href=”http://macromates.com/”>TextMate
  • <a
    href=”http://www.aptana.com”>Aptana
  • <a
    href=”http://www.adobe.com/products/dreamweaver/”>DreamWeaver CS4

20. Participate in the Community

Getting to be a part of awesome web development communities, like this, will not only expose you to a wider range of ideas but will also lead you to the path of writing better code. By writing and commenting on articles similar to these, you’ll not only teach people less knowledgeable than you on the subject but you’ll also be able to learn more from the more experienced people who comment on your code.

As Jeff says, you only truly understand something when you’ve taught it to someone else.

21. Tweak Your Response Times

By response time I mean only one thing: the time before a user triggers an AJAX request. Consider this, you are typing in an input box which uses AJAX to retrieve search suggestions from the server. Response time would be the time duration between the key press and the AJAX call being made. Too fast and you’d have to do multiple requests for each letter of the search phrase. Too slow and you’ll have the user twiddling his thumbs wondering as to how he broke the application.

This isn’t limited to just the scenario noted above. This applies to each and every non-definite (click) user action. Test rigorously with your users to find the optimum latency.

22. Use Status Indicators

Tutorial Image

This is an extension of a point noted above but just as important. Users coming from the desktop application or a general web application paradigm will be flummoxed when they use an AJAX enabled web application. While notifying the user when a change has been made is good, you’ll also need to make sure to let them know that a request has been initiated in the first place.

This is where status indicators come in. These are the little rotating or bouncing GIFs you see in applications. In function these are similar to the hour glass cursor used in desktop operating systems.

Here is a wonderful little tool which lets you create an indicator of your choice.

23. Appreciate JSON-P’s Awesomeness

Often, as part of the cross site mashup you’re creating, you’d need to access data from other sites through AJAX requests. This flies directly in the face of the cross domain restriction most browsers enforce. In this case, instead of going with exotic solutions like masking and proxying, you could just use JSON-P.

JSON-P, JSON with Padding, essentially lets us circumvent this restriction and lets us obtain data from third party domains. Here is a list of articles to get you started:

24. Ask Questions Freely

Don’t be shy to ask questions. Every one of us started as a complete newbie and began by asking questions. There are plenty of placed to clarify your doubts including the comments section of Nettuts+. Never, ever be afraid of asking questions. Just try to be a little polite! It always helps.

That’s all folks

And we’re done. Twenty four points to keep in mind when implementing AJAX within your site or web application. Hopefully, this has been useful to you and you found it interesting. I’ll be closely watching the comments section so chime in there if you have any counter arguments or different perspectives on the matter.

Questions? Nice things to say? Criticisms? Hit the comments section and leave me a comment. Happy coding!

Write a Plus Tutorial

Did you know that you can earn up to $600 for writing a PLUS tutorial and/or screencast for us? We’re looking for in depth and well-written tutorials on HTML, CSS, PHP, and JavaScript. If you’re of the ability, please contact Jeffrey at [email protected].

Please note that actual compensation will be dependent upon the quality of the final tutorial and screencast.

Write a PLUS tutorial



Quick Tip: How to Extend Built-in Objects in JavaScript

Quick Tip: How to Extend Built-in Objects in JavaScript

Constructor functions, like Array, offer a wide range of methods and properties that you can make use of. But have ever wished that one of these objects offered some method that isn’t built-in? Is there a way to do so yourself? Absolutely! Let’s see how.

Reversing a String

This little snippet takes advantage of the Array object’s “reverse” method, and applies its functionality to a given string. In effect, something like “hello” will be turned into “olleh,” and can be accessed by using “myString.reverse()”.

String.prototype.reverse = function() {
	return Array.prototype.reverse.apply(this.split('')).join('');
};

var myString = 'hello';
console.log(myString.reverse());

Bonus Question

Now that we have a basic of understanding of augmenting objects, can you figure out a way to write a custom “contains” method for the String object? For example, the jQuery library allows us to write things like:

$("div:contains('John')").css('fontWeight', 'bold');

The snippet above will search through all of the divs on the page, and then filter that wrapped set down to only those that contain the string “John.” How could we extend the String object, with raw JavaScript, to allow for this? Leave your solution in the comments, and we’ll discuss!



What’s Changed in jQuery UI 1.8 – Plus Free Books!

What’s Changed in jQuery UI 1.8 – Plus Free Books!

jQuery UI 1.8 is currently at the release candidate stage and, barring the discovery of a major bug or flaw, will shortly become the current stable release of jQuery’s official UI library. So what has changed since the last current stable release of 1.7.2? One of the major differences of course is that the library now runs on the latest release of jQuery itself – version 1.4.1, but there have been many other changes including the addition of some great new components, which we’ll look at over the course of this article.

Free Copies of jQuery UI 1.7

The author of this article, Dan Wellman, recently released jQuery UI 1.7, from Packt Publishing. It’s a fantastic read, and I’m pleased to announce that we have a handful of copies to randomly give out. Simply leave a comment about the article, and you’ll automatically be entered into the drawing. Check back on Monday to find out if you’re a winner!

jQuery UI 1.7

Bug Zapping

This release of the library brings several bug fixes for some key components including the Datepicker and Dialog widgets and the Droppable, Resizable and Selectable interaction helpers. None of the bugs were show-stoppers, but nevertheless, clearing out the bugs is a critical part of the ongoing progression of the library. One important point to note is that the beforeclose event of the Dialog widget has been deprecated and replaced with beforeClose so that it follows the same naming convention as the events of other components.

As well as bugs in the code, several styling and accessibility issues have also been addressed; notably the title text of Dialog widgets can no longer disappear behind the close icon, and the keyboard navigability of the new button widget has been improved. For a complete list of all bug fixes included with version 1.8 see the changelog at http://jqueryui.com/docs/Changelog/1.8rc1

Positioning

jQuery UI now has a unique positioning system that that can be used whenever a widget needs to be positioned relative to another element, such as with a drop-down menu or a floating tooltip. The Position utility allows us to easily specify, using a series of simple strings, which part of the positioned element should be fixed to which part of the specified target element. So for example, the “top left” point of one element can be fixed to the “bottom right” of another specified element.

The utility also features a robust collision detection system which prevents viewers of the page being exposed to unsightly toolbars if the element being positioned gets too close to the edge of the viewport, or cannot otherwise occupy its positioned place.

The API for this utility is compact, with just 7 configurable options at this stage. This gives us all the control we need however and allows us to specify up to 81 possible combinations of positioning; options we can configure include the following:

at:
Refers to the position on the target element the element being positioned will be fixed to; the method accepts a single string comprised of the value for the horizontal axis (either right, center, or left) followed by the value for the vertical axis (either top, center, or bottom). There is no separating character between the 2 values.
bgiframe:
If the bgiframe plugin is available on the page, this option will apply an iframe shim to the positioned element, which can help to prevent select elements showing above the positioned content in IE6.
collision:
This option determines how collisions are handled; it accepts one of the following strings: flip, fit or none. The default is flip, which causes the element being positioned to invert the position relative to the target element, e.g. “right center” will become “left center”.
my:
Refers to the element being positioned; accepts same values as at.
of:
Accepts a jQuery selector specifying the target element.
offset:
Specify a number of pixels to offset the element being positioned on the target element.
using:
A callback function can be used with this option allowing you to animate the positioning of the element.

Autocomplete

One of my favourite widgets has returned as an official UI component! Autocomplete was a beta widget in an early 1.6 version of the library and is now back after a complete refactor. It is attached to text inputs on the page and supplies a list of possible choices when a visitor begins typing in the text field.

The widget can take its data (the matching items in the suggestion menu) from a variety of sources including a standard JavaScript array, JSON via an AJAX request or a flexible callback function that can implement any data source and return a customized response to display in the suggestion menu.

Autocomplete is a highly configurable widget and features a full API of options, methods and events to make use of. It’s completely themable via SteamRoller and fully keyboard navigable. All in all this component brings a lot of functionality to your pages. At some future point caching may also be a configurable behaviour.

Let’s take a look at its API; it contains the following three configuration options:

delay:
We can specify the number of milliseconds the widget should wait before displaying the suggestion menu when the visitor begins typing in the input.
minLength:
This option takes an integer that refers to how many characters should be typed into the input before the suggestion menu is displayed.
source:
We configure the data source using this option; possible values include an array of strings representing the items to show in the suggestion menu, or an array of objects where each object contains two properties – the first is the label shown in the suggestion menu, the second is the value that will be added to the input if an item in the suggestion menu is selected. We can also supply a single string representing a remote resource that can return the data asynchronously, or a callback function that can request the data and return it to the widget in the required format.

The following two methods are exposed by Autocomplete:

close:
Used to close the suggestion menu.
search:
Perform a search of the available data and display the suggestions if the term is matched. Can take a predefined value as the term which is passed into the method as an argument, or the value of the input field it is associated with.

We can also hook callback functions into the following custom events:

change:
Fired after an item in the suggestion menu is selected and the menu is closed.
close:
Fired whenever the suggestion menu is closed, whether or not an item was selected. Precedes the change event.
focus:
Fired directly before focus is given to an item in the suggestion menu.
open:
Fired once the data has been returned, directly before the suggestion menu is displayed.
search:
Fired directly before the data source is searched. The search can be cancelled by returning false from a callback function bound to this event.
select:
This event is triggered when an item from the menu before the menu closes.

As a special bonus, the source file for the Autocomplete widget also contains the beta Menu widget, which is still currently in development and is due for release in a later version of the library. So far it looks like a robust and attractive addition to the library, and allows us to transform an unordered list into an attractive drop-down or fly-out menu. Many features are supported including sub-menus, icons, dividers and even a drill-down menu with breadcrumb.

Button

The button widget allows us to implement attractive and functional buttons that can be configured to behave like a particular type of button; for example, we can crate standard push buttons, radio-style buttons where only a single button in a set may be selected, or check-style buttons where any number in a particular set may be selected. Several types of button that incorporate a simple drop-down menu can also be created.

It’s a very flexible widget and can be built using a variety of underlying elements including <button>, <input> and <a>. The buttons are fully accessible and ARIA compliant, adding or removing the appropriate roles and states when necessary. The API is relatively simple at this point, but covers all essentials with three configurable options and a single method to invoke; the configuration options are as follows:

icons:
This option allows us to specify primary and secondary icons to display on the button. It expects an object with the keys primary and secondary, and CSS class names as the values.
label:
With this option we can set the text that is displayed on the button; a string value is expected, but if this is not supplied the value of the underlying HTML element from which the button is created can be used.
text:
The text option accepts a Boolean indicating whether or not to show a text label on the button, which could be the case if a simple icon is all that is needed. The default value is true.

The event that we can bind to in order to execute a callback function and react to interaction is the click event; the native click event of the browser is used unless with the radio or checkbox-style buttons, in which case the event is fired by the widget, not the underlying element.

Mouse Utility

The final new utility to be found in jQuery UI 1.8 is the Mouse utility, which is used by other library components in order to better distribute related implementations of the same behaviour by different widgets. This is great for developers because it means that if mouse interaction is a required behaviour of a custom UI widget, the logic in this utility can be used without having to rewrite it manually. Like the Menu component however, this utility should be considered beta and subject to considerable revision in future releases.

The API is very compact; there are just three configurable options; there are a series of private methods that are used internally by the plugin, but nothing we would need to manually invoke. The configurable options are as follows:

cancel:
This option accepts a string value containing selectors and allows us to configure elements that interaction should be cancelled on. The default value is ‘:input, option’ so for example, in a drag and drop implementation, these elements would not be draggable.
distance:
This option accepts an integer representing the number of pixels the mouse should move before the interaction is registered. The default is 1.
delay:
This option also accepts an integer, but this time refers to the number of milliseconds that should elapse before the interaction is registered. The default of this option is 0.

Summary

jQuery UI 1.8 is shaping up to be a fine release of the library; with a combination of both bug-fixes and new components it’s looking like an important milestone in the library’s roadmap. We first looked at the library’s new positioning system which gives us easy access to a huge number of different was of positioning one element relative to another element. We then looked at the two new components Autocomplete and Button and saw the different configuration options, methods and events exposed by each of their APIs.



Articlewriting Martial Arts

Articlewriting Martial Arts
Articles will be on benefits of (Martial Arts, Kickboxing, Krav Maga, Self-Defense and Karate trainig) for the both children and adults. One subject per article, for example. Benefits of Martial Arts training for children. Benefits of Kickboxing training for Adults, etc.

I need an article writer to write on 20 articles initially commitment. 500 Words Minimum if hired on monthly basis. You should be aware of keywords insertion and carefully choosing article titles. No copied articles will be accepted , ALL articles must pass CopyScape test.

In this project, bid total price for 20 articles. please send me two articles with minimum 500 Words.

Please demonstrate your experience.

Interested candidates need to send 2 sample articles(500 words)

Required web content writers would be expected to write keyword rich articles and web content pages on a variety of subjects. Candidates with excellent English, internet research skills and an understanding of seo concepts will be preferred.

Build 3 Basic WordPress Sites

Build 3 Basic WordPress Sites
I am looking to have three basic e-commerce wordpress website built.

They will all use:

– wordpress
– have the shopping cart set up with paypal
– have web forms with optin using infusionsoft (its a CRM email software system like aweber and icontact)
– all be editable from the backend by someone who doesn’t know a lot about html code, templates or css

Here are the three websites. Only one requires more than 3 pages.

1. PerfectShakers.com.

This is a shaker bottle website that I want built to look like www.blenderbottle.com

The website is for the brand Perfect Shakers. People can come to the perfect shakers website and order various types of shaker cups. I want to be able to easily upload the different styles of shaker cups and to be able to change the colour of the lids like on blenderbottle.com (http://blenderbottle.com/product/1/Original).

We have 4 products we are going to sell on this site, but plan to add 10 more in the near future so the website needs to be built in a way that we can easily add products to the website.

The website must have all the basic features such as:
email optin for a free report, right on the homepage. Then when the person opts in, I want a second page created where they can opt in to a second offer. The second page is only visible when the person opts in to the first free report offer.
about us
contact us
shopping cart (paypal)
site map
The ability for people to post reviews about each of the products that we add to the sites. (I imagine with wordpress this can be done very easily)
A page where we can add news
be able to create invoices
product details page (a summary page that has all the products on one and then an individual page for each shaker bottle) (If possible I would like the person visiting the site be able to upload their logo and see how it looks on the website)
(If you look close at the blenderbottle.com website you will get a good idea of what I am looking for)

I also want the email address service(at)perfectshakers.com created and have it set up to receive emails by webmail.

The next two website are very basic and are more of opt in pages/sales letter pages. They are almost exactly the same so you can just create the same one twice on two different domains and I will change up the text where needed. I would like both of the websites created to direct the website visitor to the same opt in, offer, shopping cart and checkout pages. I do though want to be able to track where the person came from who gives their email or makes a purchase.

2. FreeShakerOffer.com and FreeShakers.com

This is a one page sales letter page that directs people to opt in to give their email and to purchase the free shaker cup offer.

Attached is a word document for these websites. It is to be created like a sales letter type of website, where the visitor can opt in with their email in many places and click to purchase the offer in many places, especially at the bottom of the site. Please refer to other websites like this for ideas:

http://www.vincedelmontefitness.com/?hop=jpc1015

I would like the email opt in to pop up as well just like on the above website.

So the person reads through the offer and at the end decides to get the free marketing kit.

Along the way there are other opportunities to opt in the email list (infusionsoft web form)

When the person decides to buy, they go to the shopping cart and enter in all their info and get the free shaker cup offer I have, they just pay $9.95 for shipping.

I can talk over skype as well about the project if you wish.

Looking forward to your bid.

-Mark

Page + 2 Forms +akismet Api

Page + 2 Forms +akismet Api
1 Page with multiple contact details (a team of people/states/suburbs) needs to be created using existing site db variables. The variables are controlled by an existing admin section.

2 forms are needed using the akismet api.
1st form is a contact form. Needs to work with akismet api using the PHP5Akismet Class. Some of the fields need to be validated. All data is to be stored in a MYSQL db. Some variables are to be taken from existing site db. Also using a honeypot to filter out spam.

2nd form is a signup form. Needs to work with akismet api using the PHP5Akismet Class. Some of the fields need to be validated. All data is to be stored in an existing MYSQL db. Variables taken from existing site db. Also using a honeypot to filter out spam.

Expired Domain Drop Catcher

Expired Domain Drop Catcher
I’m looking for a server-side domain drop catcher script. It DOES NOT need to compete in speed and success with bog drop catchers as are SnapNames, NameJet and Pool, just to be as good and fast as possible to snap up expired domains as soon as they become available again. Script has to be able to handle many different domain registrars. I already have drop catcher scripts written in php for Enom and Dynadot which you can use as an example and for modifications.

This project is for someone who understands the process of drop catching.

Php/mysql Programmer Needed

Php/mysql Programmer Needed
I have a site application already built (social media type site for sharing conversations, photos, videos, etc) but need a programmer to make some needed changes and fixes.

Some of the fixes include:
– Change current chat program to include a group chat capability
– Fix PayPal payment processing and site’s subscription level settings
– Prevent unpaid members from logging into site
– Evaluating and improving site security
– Change username/password requirements
…and a few other smaller fixes.

I can’t imagine this would take more than 10-20 hours of programming to fix it all.

WINNING programmer must speak fluent English and be available for at least 2 hours for communication anytime between 9 am and 10 pm USA Eastern Standard Time.

Also, there is a possibility this could turn into a long term relationship for future projects as well.

Torrent Indexer

Torrent Indexer
Hello everyone,

I need someone to make a torrent indexer from scratch. I have a rough idea what it should look like, and what it should do.

It should utilize the same methods torrentifyx.letsgetcool.com uses to gather its torrents (from the site : It receives latest RSS feeds and API results to bring you the best and freshest content. )

Here is list of general features it should have to help you get a picture of what it should look like.

– Does not need a back-end
– Should index movies,music,tv shows and apps.
– needs a tag cloud of most popular searches
– needs to list most popular torrents (50 or 100)
– should have an on-site comment system via facebook connect
– all the torrents should link off-site (or if you know what isohunt.com does that keeps the download .torrent button on their site but collects the information for others) to keep it “legal”
– needs to implement the “meebo” bar (http://business.meebo.com/publishers/) – I have the code
– should be able to sort by seeds/leachers

More specific examples will be provided for design/feature reference.

Time is not a factor.

Thanks all.

Import Members + Dual Join

Import Members + Dual Join
Hello,

I currently run a torrent website and I am about to add a youtube like service to the site, I would like to import the members to the new service so I will need imported:

– customer username
– their password
– email address

Than I would like both the sign up forms altered so that if a new member signs up at the torrent section it will also create the account at the video section or if they join at the video section an account will also be created for the torrents.

Thanks