540 likes | 672 Vues
CoMRAD is a student-led project aimed at simplifying the administrative challenges faced by KGNU Radio Station in Boulder. This overview covers the project's goals, including user interface design, architecture, and a software demo. Students Tom Buzbee, Bryan Callahan, Eric Freese, Stephanie Pitts, and Wil St. Charles discuss the complexities of radio station administration, the multi-faceted solution provided by CoMRAD, and its functional requirements. The project streamlines tasks such as scheduling shows, maintaining logs, and tracking underwriting to improve station operations.
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