We are an auto classifieds website serving a small region in Washington state.
Our "cars for sale" online database has about 2,000 records in it. They are in a flatfile (tab delineated text), with 17 fields of information for each record. On our site this database is accessed through a simple, but versatile search script. You can see it all in action by going to autopages.com.
The fields of the database are:
For additional clarification -- on our database (see above), fields 1,2,3,4,5,6,9 and 11 are unique to each record, while fields 7,8,12,13,14,15,16 and 17 are unique to each account and are the same for all records within that account. (Field 10 is not used by the web site).
It's not important to understand what these field names mean -- we are listing them as a reference to help you better understand the content of the flatfile database.
The database consists of the inventories of about 30 automobile dealerships in the area. Each dealer's complete listings can be accessed separately simply by doing a search through the "phone" field (7), which is of course the telephone number unique to each dealer.
WHAT WE NEED:
What we need is a script which will work with our current flatfile database, to do the following:
1. Enable users (dealers) to log in to an "admin"-type account, which will give them access to ONLY their own inventory -- that is, only the records in the database which have their corresponding telephone number in the phone field.
2. Within this "admin" area, the script should allow the dealer to pull up a listing of all their current inventory in the database. This listing view should include information from various fields, such as year, make, model, stockno, and also a thumbnail. (Thumbnails already exist on our server and are easily accessed with an "img src" url with the ID/picfilename field)
3. It should have a "remove listings" component which allows the dealer to remove listings. This component should generate a list (as above) but with "checkboxes" that allows for the simultaneous removal of multiple checked listings. This action should lead to a simple page which confirms that the listings have been deleted.
4. It should have an "edit listings" component which allows the year, make, model, description, and price fields to be edited for any listing at that dealership.
5. It should have an "add listing" feature which contains a form with which the dealer can enter in a new listing. This form does not need to be complicated -- Category, Year, Make, Model, Description, Stockno and Price are the only fields needed. However, the script should be able to also automatically "fill in" the other fields corresponding to the dealer's general info (location, phone, etc.). The information for these "hidden" fields could be manually provided by us as a text file for each account, or in whatever way is easiest from a programming viewpoint.
6. The "add listing" feature must contain a "photo upload" function. This function must be able to upload a photo and reference a local application such as ImageMagick to resize the photo to both full size and thumbnail specs, saving these photos in specific directories with names corresponding to the name generated for the "photo" field of the database.
7. Finally, the script should allow users (dealers) to log out of their account.
I realize that this is nothing new, and that thousands of scripts already exist that can do these things. Programmers bidding on this project are welcome to use any free/open source existing scripts as part of their solution. What we're paying for is the trick of making this work with our particular flatfile, tab delineated, text database, and the successful installation of the system on our server in proper coordination with the image resizing application.
To further clarify:
There is no graphic design needed in this project.
The pages required are:
1. Login page.
2. View listings page**
3. Delete listings page*
?4. |--- Delete listings confirmation page.
5. Edit listings page**
6. |--- Edit page for individual listing.
7. |--- Edit listing confirmation page.
8. Add listing page for individual listing.
9. |-- Add listing confirmation page.
** For pages 2, 3, and 5, we have provided a the file [url removed, login to view] ?to use as a template. (It is now attached to the project description).
The ## anchors correspond to the fields on the database. The result should look similar to the results table on our current listings page.
Please make sure that the field information from the database is
"anchored" as shown on the "match template". Please add checkboxes
to the "delete listings" version of this page and radio buttons to the
"edit listings" version.
Pages 1, 4, 6, 7, 8 and 9 can be very simple, links only. Please provide
a white background for simplicity.
* Our server is Linux, Apache version 1.3.37. Thank you.
* There's no need for SSL/secure server type logins. Just regular simple login accounts are fine.
* The "view listings" page should be the default page after login.
* There is no need for a logout confirmation page -- after logout, the browser should be sent back to the login page.
* Please make sure that each page includes simple links for the
correct locations of the pages on your system.
* For the "edit listing" feature, the existing listing information needs to appear in the text input boxes so that it can be edited. If possible, the photo should appear on the page as well. This can easily be done by creating an image src using field 9 of the record. Field 9 functions as both the photo filename and the individual record ID.
* This page should allow a new photo to be uploaded, with a new file name, which will overwrite the old one.
* The "listings" pages should show the inventory in pages of 20 records each. As seen on the template, there should be a line at the top which shows the current range and total number of listings.
* Important: I have enclosed a copy of our database. This script needs to work with our database. It should do so without needing to modify the database in any way except as specified by a user adding/deleting/editing listings. In other words, there should be no modifications to the structure of the database, such as new fields added. The script should also not cause the database to be "offline" for any reason, except for the few moments required to write changes to the database file.
* The login information for all accounts should be accessible on its own database so that we can edit it and add new accounts. A text database is fine.
* There is no need for a specific page to view an individual listing. Our CGI allows a full page for any record to be instantly be accessible simply by using a simple link containing field 9 of the record.
* The "Category" field on the "Add Listing" page should be a drop-down menu instead of a text input box. It should show the following options:
These options should write to database field 1 (Category) with the values of "c", "t", "s", "v", "r", "m", "b", and "o" respectively.
Also, please ensure that this drop-down menu will be set to the correct category for the record, when on the "edit individual listing" page.
Because this script involves uploading photos (for new ads),
it needs to be able to process photos that are uploaded. This
can be easily done by sending commands to a command-line
image application on the same server. Many such open source
applications exist, such as ImageMagick.
It will be the programmer's responsibility to choose an appropriate
image resizing application, to install it on our server, and to configure
it for work with the script. This is should be a simple part of the project
for someone who is familiar with these.
Upon successful uploading of a photo (in the "add listing" page), the script should immediately instruct the image manipulation program to do the following:
1. Save the original photo to the /upload_photos/ directory.
2. Resize it to 500 pixels wide, convert it to .gif format, and save a copy in the /showcase/ directory with the same filename that the script has written into field 9 of that new record.
3. Resize it to 170 pixels wide, convert it to .gif format, and save a copy in the /photos/ directory with the same filename that the script has written into field 9 of that new record.
NOTE: This filename -cannot- be the original photo file name, but should be something random or proprietary (so that we can avoid overwriting if two photos with the same filename are submitted).
Also, the filename written to images should have the .gif extension, but the filename written to field 9 of the database?should be written -without- an extension. For example, IDGS9494 might be the value in field 9 of the database, and in that case [url removed, login to view] would be the actual filename of the photo.
I am attaching a copy of our flatfile text database ([url removed, login to view]), and the listings match template ([url removed, login to view]) to the project description. I also realize that, at a certain point, you will need FTP access to install the script and the image application. I will provide you with this at that time.
If you place a bid, please also contact us via the PMB to
confirm that you understand the specifics of the project.
In particular, please confirm that:
1.) you can write a script with all the pages/functions
we have requested
2.) that you have inspected our database and will
write a script which will work with our database, just
as it is
3.) the script will be able to deal with images and
process them as specified above in the "images" section.
Bids that don't include a PMB contact confirming these
three things will be ignored, sorry.
Thank you for your time and we look forward to hearing