Wiki project: Rapid Prototype #5

Imebatilisha Ilichapishwa Apr 24, 2007 Kulipwa wakati wa kujifungua
Imebatilisha Kulipwa wakati wa kujifungua

This project consists of a series of relatively tiny changes to be made to a prior project. I've attached a tarball showing where the code currently stands.

*All* human input *must* be clensed and escaped, using common, standard functions, so as to prevent malicious SQL and HTML/JavaScript code injection as well as preserve natural apostrophies (etc.) in normal text. Use standard PHP functions to do this at all times.

We've acquired the domain [url removed, login to view] for this project. I'm trying to keep that name from being hardcoded anywhere in case this needs to change in the future, but there are a few places where this may unavoidable, such as in the httpd.conf.

## Deliverables

Let me know if you have any questions about each of these changes:

# I had added "show all except #1" logic in one place in [url removed, login to view] which was specifically hiding the very first post (about QWiki); please remove this hiding.

# Force all member names to lowercase, especially at registration.

# [url removed, login to view] should redirect to [url removed, login to view] upon successful completion, and all other CGI's should redirect to ./ upon successful completion.

# Add a new OutputListLength value to the config file, let's try starting with 25.

# Show the OutputListLength most-recent posts for a given member when index gets ?member=membername .

# Move all scripts except index to a new directory /-/ . This will be used for all "management"/"admin" scripts such as the session work you've already written.

# Use an .htaccess file to set up the following rules; first-match order here is important:

/-/* is "real" URL, i.e., the exception rule for us is normal for most sites. :-)

/~* becomes /?member=$1 (but hidden; still show the original entered URL)

/* becomes /?tag=$1 (but hidden; still show the original entered URL)

# Change all existing href's to now use the new URL scheme (above), i.e., use /foo instead of /?tag=foo, and so on.

# We need to disable the functionality in [url removed, login to view] (or possibly in .htaccess?) which uses the original logic that /~* shows the sub-site in /home/$1/public_html . If this can't be done in .htaccess, please show me what needs to be done in httpd.conf.

# While in [url removed, login to view], set up a separate site for [url removed, login to view] which redirects /* to [url removed, login to view]$1 with permanent redirect and *do* show the transition. (i.e., not hidden) If this can't be done in .htaccess, please show me what needs to be done in httpd.conf.

# Rename [url removed, login to view] to [url removed, login to view] (or just include it in [url removed, login to view]) and move both common files to the common (off-site) directory.

# Change [url removed, login to view] to [url removed, login to view] and include it in such a fashion that the directory location will no longer be visible to web browsers.

# Start to add commonality which will permit prettification (designer eye-candy) shortly: All php scripts should include common includes at the top and bottom to allow us to add logos, legal statements, etc. Also start considering CSS so as to allow all design elements to be centralized.

# Add two new lists to [url removed, login to view] after the initial form:

> What do **you** think?

> What **all** QWikians think:

> (OutputListLength most recent)

> (OutputListLength highest rated)

# Move the current how-long-is-the-tag logic (in [url removed, login to view]) to a new common function ("taglen()"?). Use this function whenever determining where the tag is (such as in some of the following items).

# Also use a form of taglen(), implemented in JavaScript, for *live* parsing as the member types into the "What do **you** think?" form. Don't underline (because it's not a hyperlink then), but make it blue and italics *as they're typing!* :-)

# Create two common functions to output the following by using just one spot in the code:

> Members will appear as:

> Q **_qwikian_** (12)

> Q [b][font color=#0000ff][u]qwikian[/u][/font][/b] [font color=#000099 size=-1](12)[/font]

> Tags (within the posts) will appear as:

> O *_interesting-idea_* (17)

> O [em][font color=#0000ff][u]interesting-idea[/u][/font][/em] [font color=#000099 size=-1](17)[/font]

...where the "Q" and "O" stand for the member and tag icons, located in /-/image/{member,tag}.gif .

The member identifier will be bold, blue and underlined, and will link to the /~* page showing that member's most recent posts.

The tag identifier will be italic, blue and underlined, and will link to the /* page showing the most recent posts for that tag.

Both will be followed by a number in parenthesis, in a smaller font and possibly in a darker blue (but not underlined). The number will be the total number of posts made by that member or associated with that tag, respectively.

So, this will be used in all instances, e.g., listing of posts on the front page:

Q qwikian (12) O Harry-Potter (17) has a new movie releasing soon! 12 Apr '07 18:18 GMT

(I showed with explicit HTML and without, as RentACoder often parses HTML incorrectly.)

# Always show the "What do **you** think?" form. If not logged in, go to the login-or-register page, of course. *But*, retain the original post (as a hidden field), and when done logging in or registering, return to their original intent and post it so that it doesn't get lost!

* * *I'm pretty flexible and easy to work with. I tried to make sure that this job is as completely specified as humanly possible.

If you have **any** questions, *please* ask them! I have found that it is far better to risk a bit of embarrassment than to spend time working on an assumption which later proves to be wrong. Do not worry that a question may seem silly; just *let me know* and I will be very happy to answer you!

We've been a Buyer here since July '05, with a rating of 9.9 ("Excellent") out of 10, with over 75 ratings, and we've now paid on over 95 jobs. We've completed both security verifications, we have a non-action ratio under 5% ("very good"), and we've lost 0 out of 10 mediations / arbitrations.

| ![][1] | PGP is **not** required for this project. |

| ![][2] | An NDA is **not** required for this project. |

We will retain full legal rights to the code and/or data upon completion. All code and/or data is and becomes *our* intellectual property! You will *not* have any rights to the code and/or data in any fashion.

**Thank you for your consideration and for bidding through RentACoder!**

* * *Copyright © 2007, RentACoder Buyer

[notecom][3]. **All Rights Reserved.** Reproduction without permission is strictly prohibited.

* * *

1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.

2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):

a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.

b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.

3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).

## Platform

Linux, MySQL, PHP, CSS, JavaScript

CSS Uhandisi JavaScript Linux MySQL PHP Software Architecture Majaribio ya Software Mwenyeji wa Mtandao Usimamizi wa Tovuti Kujaribu Tovuti

Kitambulisho cha Mradi: #2938512

Kuhusu mradi

Mradi wa mbali Ipo mtandaoni %project.latestActivity_relativeTime|badilisha%