Download - An overview of comrad (community radio)
An overview of
comrad(community radio)
An administrative solution for Boulder’s own KGNU Radio Station.
Tom BuzbeeBryan CallahanEric FreeseStephanie PittsWil St. Charles
1
Today’s Focus Project Overview
The ClassThe ProblemThe Solution
User Interface Design Architecture Software Demo
4Stephanie Pitts
The Class Computer Science Capstone 13 student led projects. Other projects:
Dine n’ Dash○ Red Robin
Graphics Programming on a Giant Spherical Screen○ Craft Technologies
5Stephanie Pitts
The Problem Radio Station administration is complex
Scheduling showsKeeping show logsScheduling ticket giveawaysTracking underwritingEntering show information…
6Stephanie Pitts
The Problem Multitude of techniques to store
informationPaper and PencilPHP DatabasePlaylist entryAdministrative backend
7Stephanie Pitts
The Solution Uses of comrad Major Requirements
Uses EnvironmentalFunctional
Conceptual View of comrad
8Stephanie Pitts
Uses For recording information related to the
day to day activities of KGNUSchedule showsRecord information about:
○ song plays○ new items○ emergency broadcasting tests○ etc…
9Stephanie Pitts
Environmental Requirements 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
10Stephanie Pitts
Environmental Requirements Software Environment
Server○ Linux○ Apache 2.0○ MySQL 5.0○ PHP 5.0
11Stephane Pitts
Environmental Requirements Hardware Environment
Client○ Mac○ PC○ Linux
Server○ KGNU’s current server
12Stephanie Pitts
Functional Requirements Role defined user interface Scheduling database (recursive) Events database (time slice) Music Catalog database (music) Interface for:
scheduling showsentering event metadatascheduling recurring events
13Stephanie Pitts
Today’s Focus Project Overview User Interface Design
Basic use○ Roles○ Login/Portal
ShowbuilderCalendar
Architecture Software Demo
15Eric Freese
Today’s Focus Project Overview User Interface Design
Basic useShowbuilderCalendar
Architecture Software Demo
18
Eric Freese
Showbuilder
19
DJ’s main interaction with system
Used for adding songs, news, etc. to a show
Dynamic interaction with databases
Eric Freese
Today’s Focus Project Overview User Interface Design
Basic useShowbuilderCalendar
Architecture Software Demo
20Eric Freese
Calendar
21
WebCalendarUsed as scheduling engineStores recurrence informationUsed for recurrence databaseInterface built in JQuery – Custom for KGNU
Eric Freese
Calendar
22
o Used by Schedule Manager to create and change shows and show times
o Week is primary
searchable granularity
o Month makes schedule too full to convey meaningful information
Eric Freese
Calendar
23
o Day Navigation
o Levels of granularity allow Schedule Manager to optimally enter schedule information
Eric Freese
Today’s Focus Project Overview User Interface Design Architecture
OverviewBreak it Down
Software Demo
25Wil St. Charles
Break it Down – Frontend
28Wil St. Charles
jQuery and jQuery UI for interactive components
Server-side PHP Templates to generate HTML for each pageHeadBodyClose
32
WebCalendar Open source, PHP Flattened recurrence information
Informs Event database WebCalendar wrapper
Provides APIUtilizes OOP
○ WebCalendar object○ Event object○ Event iterator
Wil St. Charles
Break it Down – Sync
36Wil St. Charles
PHP and Linux time Nightly updates between event
database and WebCalendar Event database populated with two
weeks (months) of WebCalendar information
Today’s Focus Project Overview User Interface Design Architecture Software Demo
A day in the lifeCode review
37Tom Buzbee
Today’s Focus Project Overview User Interface Design Architecture Software Demo
A day in the lifeCode review
39Bryan Callahan
AbstractConnector Abstract class Handles database connection and
disconnection Provides
getDatabase()getIsConnected()
40Bryan Callahan
InterfaceModule Interface class Implement for consistent interaction with
database tables Provides
populate()unpopulate()update()remove()
41Bryan Callahan
Typical Table Interaction Extend AbstractConnector and
implement InterfaceModule User Class
$user = new User();$user_exists = $user->populate();$user->setPassword(‘newP@ssword12’);$user->update();
42Bryan Callahan
Detailed Look at the User ??? NEED ??? Talk about getters / setters of user
class?
>update(); BLAH BLAH BLAHA
43Bryan Callahan
AbstractConnector Revisited Provides consistent connection
$track = new PlaylistTrack($id,
$user);
44Bryan Callahan
InterfaceIterator Interface class Implement to provide consistent access
to arrays of data Provides
hasNext()getItemCount()getNextCount()getNext()
45Bryan Callahan
Typical Iterator Interaction Extend AbstractConnector and implement
InterfaceIterator UserIterator Class
$iter = new UserIterator();while ($iter->hasNext()){
echo $iter->getNext()->getUsername();}
46Bryan Callahan
Template Overview Secure Session / Authenticate Instantiate HeadTemplateSection Instantiate BodyTemplateSection Instantiate CloseTemplateSection
47Bryan Callahan
Initialize Final class Performs initialization and provides basic
framework to get the system off the ground Provides
getProp($key)log($entry)lockDown()setAutoload()
48Bryan Callahan
Hello World Pagerequire_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();
49Bryan Callahan
WebCal Final class Interface to calendar engine Provides
insertEventBrute(…)removeEventBrute($id)readEvents($startTime, $endTime)
50Bryan Callahan
WebCalEventsIterator Final class that implements InterfaceIterator Iterates through events given a start time and
an end time Provides simple way to pull all event data
51Bryan Callahan
Summary Project Overview
The ClassThe ProblemThe Solution
User Interface DesignBasic UseShow BuilderCalendar
ArchitectureOverviewClasses
Software Demo53
Tom Buzbee