Τρίτη 5 Ιουνίου 2012

Merge with latest build and Pull Request

Ήρθε η ώρα να στείλουμε τις αλλαγές μας στον αρχικό project. Έτσι αρχικά τραβήξαμε από το github το τελευταίο build του original project, κάναμε κάποιες αλλαγές που χρειάστηκαν και τελικά στείλαμε το pull request! :) Now we wait


Ενδεικτικά χρειάστηκε πχ να αλλάξουμε των κώδικα που εμφανίζει το link για το Rails Admin Panel που προσθέσαμε καθώς πλέον το engine του Rails Admin φορτώνεται μόνο στο production environment.

Κυριακή 3 Ιουνίου 2012

Correlations Admin View

Όπως βλέπουμε και στην εικόνα η εμφάνιση των στατιστικών στοιχείων ήταν αρκετά άσχημη χωρίς καμία μορφοποίηση.



Έτσι λοιπόν αρχικά χρησιμοποιήσαμε string manipulation της Ruby έτσι ώστε να επεξεργαζόμαστε το string όνομα της μεταβλητής και να το εμφανίζουμε μορφοποιημένο (line 15):




Έπειτα οργανώσαμε το output σε έναν ωραίο πίνακα ώστε να εμφανίζονται πιο οργανωμένα. (above - lines 9-16) (μπορείτε να βρείτε το css εδώ: http://pastebin.com/kpN9Vsk8)

To αποτέλεσμα λοιπόν είναι το εξής:



Σάββατο 2 Ιουνίου 2012

Rails Admin Added

Προστέθηκε σύνδεσμος στο Administration Panel ο οποίος σε οδηγεί στην οθόνη για το administration του site. (Αφορά κυρίως διαχείριση των στοιχείων της βάσης δεδομένων)



Πέμπτη 31 Μαΐου 2012

Revamped Admin's User Search

Πριν:

Η λειτουργία που έδινε τη δυνατότητα στον admin να ψάξει τους εγγεγραμμένους χρήστες και να δει αναλυτικά τα στοιχεία τους χρειαζόταν αρκετή διαμόρφωση. Αρχικά για να βρεις ένα χρήστη έπρεπε να ξέρεις ακριβώς το username του ή το email του. Δεν μπορούσες να γράψεις μέρος του username του. Επίσης τα αποτελέσματα εμφανιζόντουσαν σε raw μορφή δηλαδή έτσι όπως ακριβώς τα διάβαζε η rails χωρίς καμία απολύτως μορφοποίηση. Αυτό τα καθιστούσε τραγικά δύσκολο να διαβαστούν. Αυτά φαίνονται και στις παρακάτω εικόνες



Μετά:

Όπως βλέπουμε στις παρακάτω εικόνες πλέον μπορούμε να κάνουμε full text search οπότε δεν χρειάζεται να ξέρουμε ακριβώς το username/email για να βρούμε ένα χρήστη. Επίσης τα αποτελέσματα οργανώθηκαν σε expandable lists. Ακόμα η εμφάνιση δεν είναι τέλεια αλλά νομίζω είναι πολύ καλύτερα από πριν!




Κώδικας:

Αρχικά όσον αφορά την αναζήτηση η μέθοδος user_search στον adminController διαμορφώθηκε ως εξής (Χρησιμοποιώντας την δυνατότητα της mySQL βάσης για full text search μέσω της εντολής LIKE):


Μετά φτιάχτηκε ένα partial view στο οποίο περνάμε το collection @users που επιστρέφει η μέθοδος και, μας δημιουργεί τη λίστα.

το css και το javascript τα οποία δίνουν τη δυνατότητα στη λίστα να είναι expandable είναι τα εξής:

Σάββατο 26 Μαΐου 2012

Seed Admin Rake Task

Αποφασίσαμε λοιπόν να ασχοληθούμε με το admin panel επομένως έπρεπε πρώτα να φτιάξουμε έναν admin χρήστη ώστε να έχουμε πρόσβαση στον πάνελ. Παρατήρησα λοιπόν ότι δεν υπάρχει κάποια διαδικασία δημιουργίας του admin χρήστη. Πρέπει χειροκίνητα να φτιάξεις ένα χρήστη στη βάση δεδομένων και έπειτα να φανταστείς ότι πρέπει να φτιάξεις εγγραφή στον πίνακα roles και ώς name της εγγραφής να βάλεις admin...
Έτσι λοιπόν αποφάσισα να φτιάξω ένα rake task το οποίο διαβάζει από τον φάκελο config ένα αρχείο admin.yml και δημιουργεί τους χρήστες που βρίσκει εκεί μέσα και έπειτα τους δίνει administrative rights.
Για παράδειγμα μπορούμε να δημιουργήσουμε 2 administrators γράφοντας στο admin.yml τα εξής:


admin1:
  name: "Kostas Stavrou"
  username: "kostas4"
  password: "123456"


admin2:
  name: "Thomas Asikis"
  username: "thomas4"
  password: "123456"

και έπειτα τρέχοντας την εντολή "rake admin"

Print Screen από terminal:


Ο κώδικας που εκτελείται είναι ο εξής:

Παρασκευή 25 Μαΐου 2012

Μετά από επικοινωνία με τους developers παρατηρήσαμε ότι έχει αναλάβει άλλος ήδη την εφαρμογή AJAX και σχεδόν έχει ολοκληρωθεί επομένως δεν μπορέσαμε να βοηθήσουμε. Όμως μας έδωσαν διαφορετικές κατευθύνσεις ώστε να μπορέσουμε να συνεισφέρουμε πιο αποδοτικά. Συγκεκριμένα μας είπαν να δώσουμε έμφαση στον administration panel



Πέμπτη 19 Απριλίου 2012

AJAX with Bookmarks and History

Αποφασίσαμε να προχωρήσουμε ένα βήμα παραπέρα από το απλό full-AJAX implementation και να συμπεριλάβουμε bookmarking και history. Βάζοντας απλά AJAX δεν θα έκανε refresh η σελίδα αλλά θα άλλαζαν μόνο συγκεκριμένα κομμάτια. Επομένως αν ο χρήστης θέλει να κάνει bookmark κάποιο σημείο της ιστοσελίδας (π.χ. το προφίλ ενός φίλου του) δεν θα μπορούσε. Επίσης δεν θα μπορούσε να πατήσει το πλήκτρο back και να μεταφερθεί σε μια προηγούμενη "κατάσταση" της ιστοσελίδας. Όμοια δεν θα αποθηκεύεται και στο ιστορικό η "πλοήγηση" του μέσα στην ιστοσελίδα. Επομένως θεωρούμε ότι είναι σημαντικό να υπάρχει τέτοια δυνατότητα και όχι απλό full-ajax implementation καθώς θα μειώσει το user experience αντί να το αυξήσει και αυτός είναι ο στόχος μας. Για να το πετύχουμε αυτό θα χρησιμοποιήσουμε τη βιβλιοθήκη jQuery-BBQ η οποία προφανώς στηρίζεται στην jQuery.