BRIX a Simple and Powerfull J2EE CMS Platform

Μέσα απο την αναζήτηση μου για ένα εργαλείο ανοιχτού κώδικα που να μπορεί να πάργει εύκολα και γρήγορα CMS Sites βασισμένο σε Java μπορώ να πώ ότι είχα λίγο απεπιστεί. Μπορύσα να βρώ πάρα πολλά για entriprise level portals τα οποία θελανε πολύ δουλειά η οποία σίγουρα δεν άξιζε το κόπο για ιστοσελίδες με 2-3 μενού και 10-15 μέρη. Μέχρι που συνάντησα το BRIX! Brix, ένα Wicket-based CMS framework με καθαρό διαχωρισμό static και dynamic συμπεριφοράς στο front-end

Brix

Το Brix είναι ένα Google-code project που πρόσφατα έφτασε σε παραγωγικό επίπεδο. Χρησιμοποιεί Apache Wicket και Jackrabbit και αποτελείτε απο ένα πυρήνα με διάφορα πρόσθετα γύρω.

Brix Architecture
Brix Architecture

Αυτά τα πρόσθετα εγκαθίστανται και ενεργοποιούνται στο ‘Extension Point Registry’ στο κώδικά σου (παραδειγμα 1).Η κατάσταση του site είναι persisted σε ένα JCR repository, ‘Workspace’. Με το Snapshot plugin μπορείς να πάρεις backup τη τρέχουσα κατάσταση. Το Brix προσφαίρει ένα Διαχειριστικό Εργαλείο (AdminPanel) που τα “μαζεύει” όλα σε ένα view.

Το Brix επίσης περιέχει και μια δοκιμαστική εφαρμογή (brix-demo) που δείχνει το πως λειτουργούν όλα μεταξύ μους. Νόμιζω ότι είναι το καλύτερο μέρος να ξεκινήσεις με το Brix. Επίσης πρέπει να κανείς να διαβάσει το ‘Running the demo‘ wiki page του Brix.

Κατασκευάζοντας site με το Brix

Site Plugin

Το site plugin είναι το κεντρικό σημείο για να φτιάξεις το site σου. Εδώ μπορείς να προσθέσεις resources όπως css αρχεία, να φτιάξεις νέες σελίδες, φακέλους και templates. Στο αριστερό panel μπορείς να πας στο κάθε resource και να το επεξεργαστείς. Οι σελίδες και τα templates έχουν content και page preview. Όταν κάνεις edit μια σελίδα έχεις τη δυνατότητα να βάλεις HTML κώδικα με 3εις τρόπους συμπεριλαμβανομένου και WYSIWYG editor όπου η γνώση HTML δεν είναι απαραίτητη.

Tiles

Τα Tiles είναι “δομικοί λίθοι” που μπορείς να βάλεις σε ένα site. Αυτά έχουν 3εις τύπους Page Tiles, Menu Tiles και Custom Tiles. Τα Page Tiles προσφαίρουν τη δυνατότητα να επαναχρησιμοποιε. Τα Menu tiles αναφέρονται σε menus. Τα Custom tiles χρησημοποιούν το implementation του Tile interface και το extension του TileEditorPanel. Με τα Custom Tiles κάνεις extend την εφαρμογή σου βάζοντας το δικό σου logic. Τα Custom Tiles πρέπει να γίνουν registered στο ‘Extension Point Registry’ κατά την εκκίνηση

[java]
public CMSBrix(BrixConfig config)
{
super(config);
// register plugins
config.getRegistry().register(Plugin.POINT, new MenuPlugin(this));
config.getRegistry().register(Plugin.POINT, new SnapshotPlugin(this));
config.getRegistry().register(Plugin.POINT, new PrototypePlugin(this)) config.getRegistry().register(Plugin.POINT, new WebdavUrlPlugin());
// register tiles;
config.getRegistry().register(Tile.POINT, new SurveyTile())

[/java]

Για να βάλεις ένα Tile σε μια σελίδα πρέπει να δηλώσεις σε αυτό ένα identifier και με αυτό να το καλέσεις με ένα tag στη σελίδα <brix tile id=”[identifier]”/> .

Templates

Τα Templates χρησημοποιούνται για να συγκεντρώνουν ολα τα κομμάτια της σελίδας (header, footer κλπ). Τα Templates μπορούν να κάνουν extent άλλα Templates. Μέσα πρέπει να έχουν το tag <brix:content/> μαζί με tiles, τα templates στήνουν μια ολοκληρωμένη σελίδα.

Navigation

Το menu plugin χρησημοποιήται για να δημιουργήσεις μενού σε άλλες σελίδες. Το menu plugin είναι διαχειρηζόμενο απο το ‘Menu’ tab στο AdminPanel. Εκεί φτιάχνεις μενού menu με titles και κατάληλες παραμπομπές στις άλλες σελίδες. Το menu για μια σελίδα είναι απλά άλλο ένα Tile <brix:tile id=[menutile-id]/>

Στα δια ταύτα…

Το Brix framework είναι ένα CMS που σίγουρα θα χρησημοποιείσω συχνα!. Το Brix προσφέρει out-of-the-box έτοιμες λύσεις για γρήγορη ανάπτυξη

Επειδή χρησημοποιεί το Apache Wicket μπαίνει εύκολα και γρήγορα σε μια έτοιμη Wicket web application. Enjoy…

ScreenShots

 

Passionate Archer, Runner, Linux lover and JAVA Geek! That's about everything! Alexius Dionysius Diakogiannis is a Senior Java Solutions Architect and Squad Lead at the European Investment Bank. He has over 20 years of experience in Java/JEE development, with a strong focus on enterprise architecture, security and performance optimization. He is proficient in a wide range of technologies, including Spring, Hibernate and JakartaEE. Alexius is a certified Scrum Master and is passionate about agile development. He is also an experienced trainer and speaker, and has given presentations at a number of conferences and meetups. In his current role, Alexius is responsible for leading a team of developers in the development of mission-critical applications. He is also responsible for designing and implementing the architecture for these applications, focusing on performance optimization and security.