Τελική Εργασία

Ως τελική άσκηση θα πρέπει να υλοποιηθεί μέρος της βασικής λειτουργικότητας μιας εφαρμογής forum.

Η λειτουργικότητα που μας ενδιαφέρει είναι αυτή της ανάγνωσης και δημοσίευσης post, threads και forums από χρήστες διαφορετικών ρόλων. Επίσης αναγκαία είναι η παροχή δυνατότητας διαχείρισης χρηστών.

Σε αυτό το πλαίσιο με βάση τις απαιτήσεις της εφαρμογής που θα αναλυθούν παρακάτω, θα πρέπει:

  1. να δημιουργήσετετην αντίστοιχη βάση που θα καλύπτει όλες τις ανάγκες (4 βαθμοί)
  2. να δημιουργήσετε σελίδες που θα παρουσιάζουν δεδομένα που περιέχονται στη βάση (2.5 βαθμοί)
  3. να δημιουργήσετε σελίδες κατάλληλες για την εισαγωγή/ μετατροπή δεδομένων. (2.5 βαθμοί)
  4. να δημιουργηθεί σελίδα για την διαχείριση του site. (1 βαθμός).

Η εφαρμογή θα αποτελείται από τις ακόλουθες βασικές σελίδες:


  • ·Forums.aspx – Θα παρουσιάζει το σύνολο από τα forums που υπάρχουν στη βάση σε ένα controlτης επιλογής σας (π.χ. DataListcontrol). Για κάθε μια εγγραφή θα παρουσιάζονταιοι πληροφορίες: Όνομα Φόρουμ, Περιγραφή Φόρουμ, Σύνολο από threads, ημερομηνία τελευταίου post. Με κλικ στο όνομα του φόρουμ ο χρήστης θα μεταβαίνει στη σελίδα Threads.aspx που περιλαμβάνει μια λίστα από threads για το συγκεκριμένο φόρουμ.
  • ·Threads.aspx -Θα παρουσιάζει το σύνολο από τα thread για ένα συγκεκριμένο φόρουμ σε ένα controlτης επιλογής σας (π.χ. DataListcontrol). Για κάθε μια εγγραφή θα παρουσιάζονταιοι πληροφορίες: Όνομα thread, όνομα δημιουργού, ημερομηνία τελευταίου post,Σύνολο των posts, σύνολο views, και ένα εικονίδιο το οποίο θα δηλώνει αν το thread είναι ανοιχτό ή κλειστό, ένα εικονίδιο που θα φαίνεται μόνο αν είναι hot (υπάρχουν πάνω από π.χ. 10 posts), ένα εικονίδιο που θα φαίνεται μόνο αν είναι νέο (φτιάχτηκε δηλαδή εντός της ημέρας) καιένα εικονίδιο που θα φαίνεται μόνο αν είναι sticky. Η λίστα αυτή θα πρέπει να είναι ταξινομημένη με βάση το αν το thread είναι sticky και με βάση την ημερομηνία δημιουργίας τους (τα stickyπάντα στην κορυφή και από κάτω τα υπόλοιπα threads με αυτά για το οποία έχουν δημιουργηθεί postsτελευταία να προηγούνται). Με κλικ στο όνομα του thread ο χρήστης θα μεταβαίνει στη σελίδα Topics.aspx που περιλαμβάνει μια λίστα από topics για το συγκεκριμένο thread. Επίσης αν ο χρήστης δεν έχει γίνει ban θα εμφανίζεται ένα textbox και ένα κουμπί “createnewthread”.
  • ·Posts.aspx– Θα εμφανίζει ως τίτλο το όνομα του thread. Επίσης, θα παρουσιάζει το σύνολο από τα posts για ένα συγκεκριμένο thread σε ένα control της επιλογής σας (π.χ. DataListcontrol). Για κάθε μια εγγραφή θα παρουσιάζονταιοι πληροφορίες: Τον αριθμό του post σε αυτό το thread (π.χ #125), το περιεχόμενο του post, την ημερομηνία δημιουργίας του post, ένα κουμπί reportabuse, το όνομα δημιουργού, το εικονίδιό του (αν δεν έχει θα εμφανίζεται ένα κοινό), το σύνολο των posts που έχει κάνει αυτός, την υπογραφή του (μια φράση που έχει ορίσει αυτός). Με κλικ στο όνομα του χρήστη θα μεταβαίνει στη σελίδα Member.aspx. Πάνω και κάτω από τη λίστα με τις εγγραφές θα περιλαμβάνονται κουμπιά «Reply» τα οποία θα μεταφέρουν στη σελίδα NewPost.aspx. Αυτά θα είναι εμφανή μόνο αν ο χρήστης δεν έχει γίνει banκαι το threadείναι ακόμα ανοιχτό.
  • ·NewPost.aspx – θα εμφανίζει μια περιοχή για την εισαγωγή κειμένου, καθώς και ένα σύνολο από βοηθητικά controls για την επεξεργασία του κειμένου. Το κουμπί Β, Ι, U, που θα μετατρέπουν τη γραμματοσειρά του επιλεγμένου στοιχείου σε έντονη, πλάγια, υπογραμμισμένη αντίστοιχα. Παράλληλα θα υπάρχουν δυο dropdownlists που θα αλλάζουν το FontStyle, και το FontSizeτης γραμματοσειράς αντίστοιχα, κατά την επιλογή ενός στοιχείου. Οι λειτουργίες αυτές θα γίνονται μέσω javascriptή jquery και στο επιλεγμένο κείμενο θα προστίθενται απλά τα κατάλληλα tagsστην αρχή και το τέλος του επιλεγμένου κειμένου ανάλογα με την επιλογή που έχει γίνει π.χ. <b> …</b>. Κατά την εισαγωγή του νέου post στη βάση προφανώς εκτός από το insert στο συγκεκριμένο πίνακα, θα συμβαίνει updateκαι σε άλλους πίνακες που αποθηκεύουν σχετικές πληροφορίες π.χ. το σύνολο των posts του χρήστη.
  • ·Member.aspx – θα εμφανίζει ένα σύνολο από πληροφορίες για το χρήστη όπως, username, email, εικονίδιο (avatar), διεύθυνση site, διεύθυνση messenger, υπογραφή, αν έχει γίνει ban, σύνολο από posts, τα τελευαταία3 threads που έχει δημιουργήσει.Αν ο χρήστης που βλέπει τις πληροφορίες είναι ο ίδιος με το χρήστη στον οποίο οι πληροφορίες αναφέρονται τότε θα εμφανίζεται ένα κουμπί update για την αλλαγή ορισμένων εξ αυτών. Μεταξύ άλλων ο χρήστης θα πρέπει να είναι σε θέση να κάνει upload ένα εικονίδιο από τον υπολογιστή του στο server συγκεκριμένου μεγέθους π.χ. 500kb.
  • ·ControlPanel.aspx- Η σελίδα αυτή θα είναι ορατή μόνο από χρήστες του ρόλου admin. Εκεί θα παρέχεται η δυνατότητα να ενταχθεί ένας χρήστης σε ένα ρόλο, να γίνει banένας χρήστης, να διαγραφτεί ένας χρήστης, να γίνει close ένα thread, να αλλάξει το themeτου site.
  • ·MasterPage - θα περιέχει ένα μενού με συνδέσμους Home (Forums.apsx), Profile (Member.aspx), ControlPanel (ControlPanel.aspx) το οποίο θα είναι ορατό μόνο σε admins. Login, Register, όνομαχρήστη (ήanonymous).
  • ·Login.aspx – όπως η άσκηση 7
  • ·Register.aspx – όπως η άσκηση 7

Tips

Τα querystringparameters είναι πολύτιμα εργαλεία για τη μεταφορά πληροφορίας (π.χ. id από σελίδα σε σελίδα).

Αν κάνετε χρήση Logincontrolsπροτιμητέο θα είναι να αρχίσετε με τη δημιουργία της σελίδας Register (η οποία θα περιλαμβάνει το CreateUserWizardcontrol) ώστε να δημιουργηθεί αυτόματα η βάση των χρηστών. Σε αυτή θα μπορείτε να χτίσετε και την υπόλοιπη προσθέτοντας τα κατάλληλα tables.

Από τα παραπάνω μερικοί πίνακες που θα μπορούσαν να προκύψουν είναι: MemberDetails, Forum, Thread, Post.

Ως παράδειγμα ενός παρόμοιου φόρουμ (φυσικά με περισσότερες λειτουργίες είναι το http://hosted.comm100.com/forum/Default.aspx?siteId=10000)