Extend the Joomla component MosetsTree with basket functionality
$300-1500 USD
Cancelado
Publicado há aproximadamente 17 anos
$300-1500 USD
Pago na entrega
We are using Joomla and the Joomla component Mosets Tree to build a portal website. People can browse the categories inside Mosets tree and see listings of items in each category.
This project consists of extending Mosets Tree (adding some links) and creating an additional Joomla component in order to have a "basket" functionality.
If a person is logged in, he must be able to add items from Mosets tree to his own basket. The user must be able to remove items from his basket as well. Each item in the basket has a status (pending, subscribed, deleted).
This is only a first phase (10%) of a much larger project. Depending on the quality you will be able to execute new projects that build further upon this project.
=== Requirements ===
* Developer has lots of experience developing Joomla components and Joomla modules
* All code must be object oriented
* Each class and each function must start with comment to explain the functionality and parameters
* Well documented clear code
* Consistent and clear naming of variables, functions etc. (all in English)
* All database access using Joomla libraries or ADODB (using SQL statements is allowed, no need to use an ORM tool)
==== Extension to Mosets tree component ====
An extra link must be added to the details page of an item in the Mosets tree component: "add to basket". This new link must have exactly the same style as the existing links.
This link should not be visible when no user is logged in. When the user clicks this link, the item will be added to his basket (or an error is shown, see further), with status "pending".
See attached image: Add_to_basket_link_-_mosets_tree_item_details.gif‎
==== Basket component (front end) ====
The basket should be implemented as a Joomla component.
If the user is not logged in, the basket component must show the text "You need to log in first".
The basket must show a list of all items within the basket, with status "pending" or status "subscribed". Items with status "deleted" should not be shown. The basket must show the following for each item:
* Name of the item (jos_mt_links.link_name)
* Image of the item (jos_mt_links.link_image)
* Status of the item ([login to view URL])
* Link "remove" to remove the item from the basket (ask confirmation using Javascript popup)
The basket contents should be stored in the MySQL database. Each time an item is added, this should be inserted into the database, with status "pending". If the item is already present with status "subscribed" or "pending", the item should not be added, instead an error must be shown "Already in basket". If the item is already present in the database with status "deleted", the item should be inserted once again with status "pending".
If an item is removed from the basket, the status of the item must be changed to "deleted", but the record should not be deleted from the database.
==== Extension of user management in Joomla administrator section ====
In the Joomla user administrator section, a link should be added next to each user: "basket". If this link is clicked, the basket management component will be shown (see next paragraph). This link must be in the same style as other links on the page.
See attached image: [login to view URL]
==== Basket management component (administrator section) ====
This component is part of the Joomla administrator section, and allows management of the basket of each user. This component shows a list of all items in the basket of one user. For each item in the basket, following is shown:
* Name of the item (jos_mt_links.link_name)
* Image of the item (jos_mt_links.link_image)
* Status of the item ([login to view URL]): this must be a drop down box so status can be changed
* Link "delete" to delete the item from the database (do not change status, actual delete in database, no need to ask confirmation)
There must be a button "save" on top to save the changes (of the status) and a "cancel" button.
==== Database structure new tables ====
table jos_basket:
* id (int: unique id)
* user_id (int: foreign key to [login to view URL])
* item_id (int: foreign key to jos_mt_links.link_id)
* email (varchar 30: should be automatically filled in as follows: user_id.item_id at [login to view URL])
* status (int: foreign key to [login to view URL])
* timestamp_added (varchar 20)
* timestamp_status_modified (varchar 20)
table jos_basket_status:
* id (int: unique id)
* name (varchar 10: possible values: pending, subscribed, deleted)
=== Platform ===
* Windows: 2003
* Apache: 2.0.55
* Joomla version: 1.0.12
* PHP: 5.0.5
* MySQL: 5.0.27
* [login to view URL]
* Test website: [login to view URL]
* Test website Joomla administration:
** URL: [login to view URL]
** Login: admin
** Password: will be delivered
* Test website database access (PHPMyadmin): [login to view URL] (Firefox only)
** Login: newsletterstest
** Password: will be delivered
* Test website FTP account:
** Server: [login to view URL]
** Login: newsletterstest
** Password: will be delivered
=== Deliverables ===
* SQL script to create the required new tables in the MySQL database
* ready to use ZIP install files for all developed Joomla components and modules (installable from the Joomla administrator)
* Clear indication of all code that must be changed in the existing Mosets tree code (for each change: full path to PHP file, line number and code to be inserted or changed)
* All functionality must be working 100% without any errors or bugs on the test website (see above for details)