540 likes | 659 Views
comrad. An administrative solution for Boulder’s own KGNU Radio Station. An overview of comrad (community radio). Tom Buzbee Bryan Callahan Eric Freese Stephanie Pitts Wil St. Charles. The speakers:. comrad. ….Tom Buzbee. ….Bryan Callahan. ….Eric Freese. ….Stephanie Pitts.
E N D
comrad An administrative solution for Boulder’s own KGNU Radio Station. An overview ofcomrad(community radio) Tom Buzbee Bryan Callahan Eric Freese Stephanie Pitts Wil St. Charles
The speakers: comrad ….Tom Buzbee ….Bryan Callahan ….Eric Freese ….Stephanie Pitts ….Wil St. Charles
Today’s Focus comrad • Project Overview • User Interface Design • Architecture • Software Demo Stephanie Pitts
Today’s Focus comrad • Project Overview • The Class • The Problem • The Solution • User Interface Design • Architecture • Software Demo Stephanie Pitts
The Class comrad • Computer Science Capstone • 13 student led projects. • Other projects: • Dine n’ Dash • Red Robin • Graphics Programming on a Giant Spherical Screen • Craft Technologies Stephanie Pitts
The Problem comrad • Radio Station administration is complex • Scheduling shows • Keeping show logs • Scheduling ticket giveaways • Tracking underwriting • Entering show information • … Stephanie Pitts
The Problem comrad • Multitude of techniques to store information • Paper and Pencil • PHP Database • Playlist entry • Administrative backend Stephanie Pitts
The Solution comrad • Uses of comrad • Major Requirements • Uses • Environmental • Functional • Conceptual View of comrad Stephanie Pitts
Uses comrad • For recording information related to the day to day activities of KGNU • Schedule shows • Record information about: • song plays • new items • emergency broadcasting tests • etc… Stephanie Pitts
Environmental Requirements comrad • Software Environment • Client • Internet Explorer 8.0 • Firefox 3.0 • Safari 4.0 • Chrome 3.0 • Opera 10.0 • JQuery 1.0 • HTML 4.0 • RSS 2.0 Stephanie Pitts
Environmental Requirements comrad • Software Environment • Server • Linux • Apache 2.0 • MySQL 5.0 • PHP 5.0 Stephane Pitts
Environmental Requirements comrad • Hardware Environment • Client • Mac • PC • Linux • Server • KGNU’s current server Stephanie Pitts
Functional Requirements comrad • Role defined user interface • Scheduling database (recursive) • Events database (time slice) • Music Catalog database (music) • Interface for: • scheduling shows • entering event metadata • scheduling recurring events Stephanie Pitts
Conceptual view of comrad comrad Stephanie Pitts
Today’s Focus comrad • Project Overview • User Interface Design • Basic use • Roles • Login/Portal • Showbuilder • Calendar • Architecture • Software Demo Eric Freese
Roles comrad Eric Freese
Login/Portal comrad Eric Freese
Today’s Focus comrad • Project Overview • User Interface Design • Basic use • Showbuilder • Calendar • Architecture • Software Demo Eric Freese
Showbuilder comrad • DJ’s main interaction with system • Used for adding songs, news, etc. to a show • Dynamic interaction with databases Eric Freese
Today’s Focus comrad • Project Overview • User Interface Design • Basic use • Showbuilder • Calendar • Architecture • Software Demo Eric Freese
Calendar comrad • WebCalendar • Used as scheduling engine • Stores recurrence information • Used for recurrence database • Interface built in JQuery – Custom for KGNU Eric Freese
Calendar comrad • Used by Schedule Manager to create and change shows and show times • Week is primary searchable granularity • Month makes schedule too full to convey meaningful information Eric Freese
Calendar comrad • Day Navigation • Levels of granularity allow Schedule Manager to optimally enter schedule information Eric Freese
Calendar comrad • Multitude of show recurrence options available Eric Freese
Today’s Focus comrad • Project Overview • User Interface Design • Architecture • Overview • Break it Down • Software Demo Wil St. Charles
Architecture Overview comrad Wil St. Charles
Break it Down – Frontend comrad Wil St. Charles
Break it Down – Frontend comrad • jQuery and jQuery UI for interactive components • Server-side PHP Templates to generate HTML for each page • Head • Body • Close Wil St. Charles
Break it Down – Music Catalog comrad Wil St. Charles
Break it Down – Music Catalog comrad • Stores music metadata • MySQL • Tables: Wil St. Charles
Break it Down – WebCalendar comrad Wil St. Charles
WebCalendar • Open source, PHP • Flattened recurrence information • Informs Event database • WebCalendar wrapper • Provides API • Utilizes OOP • WebCalendar object • Event object • Event iterator Wil St. Charles
Break it Down – Events comrad Wil St. Charles
Break it Down – Events comrad • Stores instances • Song plays • Features • Etc… • MySQL Wil St. Charles
Break it Down – Sync comrad Wil St. Charles
Break it Down – Sync comrad • PHP and Linux time • Nightly updates between event database and WebCalendar • Event database populated with two weeks (months) of WebCalendar information Wil St. Charles
Today’s Focus comrad • Project Overview • User Interface Design • Architecture • Software Demo • A day in the life • Code review Tom Buzbee
Software Demo comrad Tom Buzbee
Today’s Focus comrad • Project Overview • User Interface Design • Architecture • Software Demo • A day in the life • Code review Bryan Callahan
AbstractConnector comrad • Abstract class • Handles database connection and disconnection • Provides • getDatabase() • getIsConnected() Bryan Callahan
InterfaceModule comrad • Interface class • Implement for consistent interaction with database tables • Provides • populate() • unpopulate() • update() • remove() Bryan Callahan
Typical Table Interaction comrad • Extend AbstractConnector and implement InterfaceModule • User Class $user = new User(); $user_exists = $user->populate(); $user->setPassword(‘newP@ssword12’); $user->update(); Bryan Callahan
Detailed Look at the User comrad • ??? NEED ??? • Talk about getters / setters of user class? >update(); BLAH BLAH BLAHA Bryan Callahan
AbstractConnector Revisited comrad • Provides consistent connection $track = new PlaylistTrack($id, $user); Bryan Callahan
InterfaceIterator comrad • Interface class • Implement to provide consistent access to arrays of data • Provides • hasNext() • getItemCount() • getNextCount() • getNext() Bryan Callahan
Typical Iterator Interaction comrad • Extend AbstractConnector and implement InterfaceIterator • UserIterator Class $iter = new UserIterator(); while ($iter->hasNext()) { echo $iter->getNext()->getUsername(); } Bryan Callahan
Template Overview comrad • Secure Session / Authenticate • Instantiate HeadTemplateSection • Instantiate BodyTemplateSection • Instantiate CloseTemplateSection Bryan Callahan
Initialize comrad • Final class • Performs initialization and provides basic framework to get the system off the ground • Provides • getProp($key) • log($entry) • lockDown() • setAutoload() Bryan Callahan
Hello World Page comrad require_once(‘initialize.php’); // Preprocessing (command execution) $head = new HeadTemplateSection(); $head->write(); // Load Javascript Libraries $head = new BodyTemplateSection(); $head->write(); // Body of Page (User Interface) $head = new CloseTemplateSection(); $head->write(); Bryan Callahan
WebCal comrad • Final class • Interface to calendar engine • Provides • insertEventBrute(…) • removeEventBrute($id) • readEvents($startTime, $endTime) Bryan Callahan