Create a web-based dynamic image layout tool that will allow users to select and preview attributes for a print product website.
How it works:
1. Customer selects a product and a general layout.
2. After they have selected a layout, they will go to a second page where they will be able to select from a number of drop-down options to customize their layout.
3. The layout will be represented in the Dynamic Image Layout tool ("DIL" for short) which you will be developing.
There are 14 different layout choices. Each layout has a number of attributes that can be changed. See the document: [login to view URL] for a sample of each layout and the attributes that can be customized in each layout.
We will provide you with the pulldown menus ("Product Attribute Menu") and other form attribute elements (radio buttons, check boxes etc), and their corresponding <option> values and labels.
Every attribute we supply will have onChange events specified, you will write the javascript code to handle those onchange events.
We will also supply all of the graphics needed to render the DIL layouts, and specific sizes for all rendered layouts, including border thickness, and specific alignments of the layout components.
If you are interested, please review the attached document. Please respond by sending us samples of similar work, cost and time estimate. We will only respond to well thought out responses that specifically address our requirements.
## Deliverables
All values selected and applied in the DIL must be saved in php session variables. The reason for this is: if a user selects a series of attributes and the corresponding changes are applied to the DIL, those changes should persist during the visitors session. If the user navigates to another page, and returns to this page, the DIL should reapply automatically the layout that was last rendered, including the image layout and orienting the drop down menus and other input form elements to the correct selections. These values can be saved to PHP session when a user clicks a "save" button on the page, which in essence will POST the values to the page, where they will be stored in PHP session variables, and the page layout will be re-rendered. Other acceptable methods for saving these values as they are entered are: a hidden iframe on the page that receives periodic update POSTs from the DIL (processing them and storing them in session)
In addition to saving all the attributes in session, the developer is required to store all of the attributes in a database as well. This will allow the dynamic layout to be recreated from a later date by passing a key that will read the database values and render the outcome to the DIL. A variable will be passed to the page (for example a unique order number) and this value should be used as the foreign key in the database to store the DIL layout values. All values submitted to the database should protect against SQL injection.
Transparent PNG's will be used to build the layers of the DIL, and the developer will need to apply IE6 transparent PNG fix code to correct for the lack of transparent PNG's in IE 6
The DIL layout itself, the layering of elements and images to create the layouts, can be achieved by using absolutely positioned <div> with corresponding z-index as long as the DIL itself can be embedded in non absolutely positioned container <div> s in the page itself.
We will provide you with the pulldown menus ("Product Attribute Menu") and other form attribute elements (radio buttons, check boxes etc), and their corresponding <option> values and labels.
every attribute we supply will have onChange events specified, you will write the javascript code to handle those onchange events.
We will also supply all of the graphics needed to render the DIL layouts, and specific sizes for all rendered layouts, including border thickness, and specific alignments of the layout components.
It will be up to the developer to decide if they want to store these values in a database, or a properties file, but we would like to consult with you on your choice and the reasons why you feel it is the best choice for this job.
All code should be documented thoroughly in english and easily understandable to someone who must maintain and extend the code. Normal best practices should be followed, including common naming conventions.