Homework 5
CS520, Spring 2009


Due: Friday, May 22

Package all the source files of your project into a zip file using the zip Ant target you developed in Homework 1, and upload the zip file to CSNS. Note that file uploading will be disabled automatically after 11:59PM of the due date, so please turn in your work on time.

[CSNS Blogs]

Continue to work on CSNS Blogs and implement the following features:

1. (30pt) Add comments.

Allow users to leave comments to a blog entry. You must use TinyMCE for the content input, and file attachments must be supported. Also note that comments can be viewed by everybody, but only users who have logged in CSNS can add comments.

As part of this exercise, modify your blog entry creation code so blog entries can have file attachments as well.

2. (30pt) Subscribe to a blog.

On the blog page (the page where the entries of a blog are displayed), add a link (or a button) that allows a user to subscribe to or unsubscribe from the blog. If a user is subscribed to a blog, the user should receive an email notification whenever a new entry is posted to the blog. The email notification should include the title and the timestamp of the blog entry, and a URL to the blog page.

3. (40pt) Fold/unfold archive using Ajax.

When a blog page is first requested, the Archive section displays only the years in which blog entries were posted. A user may click on a year, and the archive display should be expanded to show the months of the year in which blog entries were posted. Similarly, a user can click on a month to see the titles of the blog entries posted in that month. We will refer to this as archive "unfolding", and you can check out a few blogs on Blogger.com to see how it works.

If a year (or a month) is unfolded, clicking on it again will "fold" it, i.e. removing the display of the months (or the blog entry titles).

Archive folding and unfolding must be implemented using Ajax (and note that for folding, there is no need to send a request to the server).

(+10pt) Upload banner image.

During blog creation, allow the user to either provide a URL, or upload a file for the blog banner image.

[About Submission and Grading]

Before submitting your work, commit all the changes to your Subversion repository and create a tag.

If you use any libraries that are not in the original CSNS and are not included in your csns.zip, please upload the library jar files together with csns.zip when you submit your work.

To test your project, we will use the following SQL scripts in your csns.zip to create, populate, and then clear the database:

Please make sure that these scripts are up to date and can be run in their entirety without generating any errors. You can check out http://sun.calstatela.edu/~cysun/public/cs520-grading/instructions.txt for more details about the grading procedure.