560433 Drupal Giveaway/Contest Module wanted

I gang Opslået Apr 7, 2012 Betalt ved levering
I gang Betalt ved levering

We are looking to build a Drupal 6 module that would integrate with a Drupal/Ubercart installation.

The module would be used to organize a giveaway contest on an e-commerce website (running ubercart/drupal 6).

The module should allow a customer to choose a number of products on the site that they would like to win. Once their items are chosen, the users would then have to enter a small text explaining why they would like to win these items. Once this information is entered, the details of their contest entry (the chosen products and the text entered) on should be posted on their facebook page. Posting on facebook should be mandatory to participate in the contest.

A few precisions:

- The minimum and maximum number of items to choose should be customizable (through a configuration value)

- The facebook posting should be done on the e-commerce site directly (using oauth & an iframe)

- The user needs to be able to choose the items by browsing the site regularly. A small javascript snippet can be inserted on the product pages which would render a button if the user is participating in the contest

- A single drupal module should be coded for this (PHP 5.2, MySQL)

- The look&feel of the different UI components of the module should be customizable through CSS

What the Drupal module should deliver

- A javascript file that can be inserted on multiple pages with the following function:

- startContestSelection(p_email):

- Parameters: The participant's e-mail

- Return value: True if the user can participate (new user), false if the user is already registered

- Description: When called, this function will call an ajax method to check if the participant is already registered to the contest. If not, it will set a cookie (name 'giveawayselect', value e-mail entered) on the user's browser to flag that the user wants to start selecting items for the giveaway.

- isPerformingContestSelection();

- Parameters: none

- Return value: true/false

- Description: Checks if the cookie 'giveawayselect' exists on the users browser. Returns true if it exists, false otherwise

- addGiveawayEntry(p_ProductID);

- Parameter: The id of the product to add to the giveaway selection

- Return value: integer - The number of entries selected by the user so far

- Description: This method will store the product id passed in a cookie (name 'giveawayselection'). This method can be called multiple times, therefore the cookie will need to store an array of product ids.

- getGiveawayEntryCount();

- Parameters: none

- Return value: the number of entries stored in the 'giveawayselection' cookie

- getGiveawayEntries();

- Parameters: none

- Return value: The array of product id stored in the 'giveawayselection' cookie

- registerForContest(p_Name, p_email, p_userText);

- Parameters: The user's name, e-mail AND The text a user will have entered to explain why he/she wishes to participate

- Return value: the contest entry confirmation box.

- Description: This method will call an AJAX method on the Drupal module you will supply, providing it with the list of product ids the user has selected along with a the text entered by the user. The AJAX method will add the giveaway entry in a database table and return a URL which can be used to see the contest entry. This method will also clear the 'giveawayselect' cookie and set another cookie 'giveawayentered' to flag that the user has entered the giveaway already.

- A drupal module which will:

- Render the pages at [url removed, login to view], which will render a promotional page informing users of the contest. Page will contain a text box to enter e-mail address and 'participate' button. When clicked the button will call javascript function startContestSelection(p_Email); display a few instructions on how to participate.

- Render the pages at [url removed, login to view]%%entrynumber%%, where %%entrynumber%% is a unique id for a contest entry. This page should display the following information:

- The participants name

- The participant's explanation text of why he/she wants to win the contest

- A series of <div> containing a basic rendering of the products chosen by the contestants. Each div will contain an image, the product title and a few other information. Each div will be clickable to visit the chosen product. HTML will be provided for exact rendering.

- Perform the server-side processing needed to check if an e-mail address is already registered to the contest. Returns a true/false JSON value.

- Perform the server-side processing needed to add a contest entry through an AJAX method call. When entry is saved, an HTML e-mail will be sent to the participant (HTML will be provided, e-mail will be sent using mimemail) This method will return HTML that will be displayed in an box to the user telling him we have saved his contest entry and that he must share it on facebook to participate. HTML for the box will be provided. Rendering of this HTML will resemble the [url removed, login to view]%%entrynumber%% page content. Javascript required to share entry on facebook must be provided by developer. Javascript required to close the box must be provided by developer.

- Provide a Block which can be placed on product pages to add the product to the contestant's list. The block will render a button that will call addGiveawayEntry() to add the product to the participant's list. This block will not render anything if the cookie is not set. Check for the cookie needs to be done on the client side (javascript) as the product pages are cached. HTML for the button will be provided. The button should also render differently if the number of product ids that the user has selected has reached the maximum (set by a variable). When the number of entries has reached the maximum, the button will render something like 'giveaway selection complete - click here to finalize your entry'. When clicked, this button will display a modal box asking the user to enter his name, e-mail (which will be pre-filled with the user's e-mail) and a text explaining why he/she wishes to participate. The box will have a submit button, which will submit the user's entry with the registerForContest(...) javascript method. Once submitted, the entry will display the modal box returned by this javascript function.

- Provide a php function that, when called, will count the number of facebook 'share' entries for a particular url. This method will be used to ensure participants have shared their entries on facebook.

We will provide all mockups for every UI components (signup page, contest entry page, 'add to contest selection' button, 'finalize contest' button, etc...)

AJAX CSS Drupal eHandel Facebook Marketing JavaScript MySQL Odd Jobs PHP Sociale Netværk

Projekt ID: #2306387

Om projektet

Remote projekt Aktiv Jul 11, 2012