- dispatch events when saving notes

This commit is contained in:
Richard Alam 2013-01-01 21:20:05 +00:00
parent 5082ab583d
commit 00ea34d0b0
8 changed files with 121 additions and 41 deletions

View File

@ -0,0 +1,14 @@
package org.bigbluebutton.modules.notes.events
{
import flash.events.Event;
public class NotesModuleStartEvent extends Event
{
public static const NOTES_MODULE_START:String = "notes module start event";
public function NotesModuleStartEvent(bubbles:Boolean=true, cancelable:Boolean=false)
{
super(NOTES_MODULE_START, bubbles, cancelable);
}
}
}

View File

@ -0,0 +1,14 @@
package org.bigbluebutton.modules.notes.events
{
import flash.events.Event;
public class NotesModuleStopEvent extends Event
{
public static const NOTES_MODULE_STOP:String = "notes module stop event";
public function NotesModuleStopEvent(bubbles:Boolean=true, cancelable:Boolean=false)
{
super(NOTES_MODULE_STOP, bubbles, cancelable);
}
}
}

View File

@ -0,0 +1,16 @@
package org.bigbluebutton.modules.notes.events
{
import flash.events.Event;
public class SaveNoteEvent extends Event
{
public static const SAVE_NOTE:String = "notes module save note event";
public var note:String;
public function SaveNoteEvent(bubbles:Boolean=true, cancelable:Boolean=false)
{
super(SAVE_NOTE, bubbles, cancelable);
}
}
}

View File

@ -26,9 +26,29 @@
<![CDATA[ <![CDATA[
import mx.events.FlexEvent; import mx.events.FlexEvent;
import org.bigbluebutton.modules.notes.events.NotesModuleStartEvent;
import org.bigbluebutton.modules.notes.events.SaveErrorEvent;
import org.bigbluebutton.modules.notes.events.SaveNoteEvent;
import org.bigbluebutton.modules.notes.events.SaveSuccessEvent;
import org.bigbluebutton.modules.notes.models.NotesModel;
import org.bigbluebutton.modules.notes.services.NotesMessageService;
]]> ]]>
</mx:Script> </mx:Script>
<EventHandlers type="{NotesModuleStartEvent.NOTES_MODULE_START}">
<ObjectBuilder generator="{NotesMessageService}" cache="global" constructorArguments="{scope.dispatcher}"/>
</EventHandlers>
<EventHandlers type="{SaveNoteEvent.SAVE_NOTE}">
<MethodInvoker generator="{NotesMessageService}" method="save" arguments="{event.note}" />
</EventHandlers>
<EventHandlers type="{SaveSuccessEvent.NOTE_SAVE_SUCCESS}">
<MethodInvoker generator="{NotesMessageService}" method="saveSuccess" arguments="{event.noteID}" />
</EventHandlers>
<EventHandlers type="{SaveErrorEvent.FAILED_TO_SAVE}">
<MethodInvoker generator="{NotesMessageService}" method="saveError" arguments="{event}" />
</EventHandlers>
</EventMap> </EventMap>

View File

@ -6,8 +6,5 @@ package org.bigbluebutton.modules.notes.models
public var note:String; public var note:String;
public var saved:Boolean = false; public var saved:Boolean = false;
public function Note()
{
}
} }
} }

View File

@ -2,7 +2,7 @@ package org.bigbluebutton.modules.notes.models
{ {
import mx.collections.ArrayCollection; import mx.collections.ArrayCollection;
public class Notes public class NotesModel
{ {
private var _notes:ArrayCollection = new ArrayCollection(); private var _notes:ArrayCollection = new ArrayCollection();

View File

@ -1,7 +1,5 @@
package org.bigbluebutton.modules.notes.services package org.bigbluebutton.modules.notes.services
{ {
import com.asfusion.mate.events.Dispatcher;
import flash.events.Event; import flash.events.Event;
import flash.events.HTTPStatusEvent; import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher; import flash.events.IEventDispatcher;
@ -23,19 +21,19 @@ package org.bigbluebutton.modules.notes.services
public class NoteSaver public class NoteSaver
{ {
public var serverURL:String; private var _serverURL:String;
public var dispatcher:Dispatcher;
private var _request:URLRequest = new URLRequest(); private var _request:URLRequest = new URLRequest();
private var _vars:URLVariables; private var _vars:URLVariables;
private var _uri:String; private var _uri:String;
private var _loader = new URLLoader(); private var _loader:URLLoader = new URLLoader();
private var _note:Note; private var _note:Note;
private var _dispatcher:Dispatcher; private var _dispatcher:IEventDispatcher;
public function NoteSaver(note:Note, dispatcher:Dispatcher) { public function NoteSaver(note:Note, serverURL:String, dispatcher:IEventDispatcher) {
_note = note; _note = note;
_dispatcher = dispatcher; _dispatcher = dispatcher;
_serverURL = serverURL;
_loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(Event.COMPLETE, completeHandler);
_loader.addEventListener(Event.OPEN, openHandler); _loader.addEventListener(Event.OPEN, openHandler);
@ -50,12 +48,10 @@ package org.bigbluebutton.modules.notes.services
} }
public function save():void { public function save():void {
_request.url = serverURL; _request.url = _serverURL;
_request.method = URLRequestMethod.GET; _request.method = URLRequestMethod.GET;
var date:Date = new Date(); _vars.noteID = _note.noteID;
_vars.noteID = generateRandomString(5) + "-" + date.time;
_vars.note = base64Encode(_note.note); _vars.note = base64Encode(_note.note);
_vars.eventName = UsersUtil.getExternalMeetingID(); _vars.eventName = UsersUtil.getExternalMeetingID();
_vars.userId = UsersUtil.internalUserIDToExternalUserID(UsersUtil.getMyUserID()); _vars.userId = UsersUtil.internalUserIDToExternalUserID(UsersUtil.getMyUserID());
@ -84,8 +80,6 @@ package org.bigbluebutton.modules.notes.services
successEvent.noteID = _note.noteID; successEvent.noteID = _note.noteID;
_dispatcher.dispatchEvent(successEvent); _dispatcher.dispatchEvent(successEvent);
// var loader:URLLoader = URLLoader(event.target);
// trace("completeHandler: " + loader.data);
} }
private function openHandler(event:Event):void { private function openHandler(event:Event):void {
@ -116,15 +110,6 @@ package org.bigbluebutton.modules.notes.services
_dispatcher.dispatchEvent(errorEvent); _dispatcher.dispatchEvent(errorEvent);
} }
private function generateRandomString(strlen:Number):String{
var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var num_chars:Number = chars.length - 1;
var randomChar:String = "";
for (var i:Number = 0; i < strlen; i++){
randomChar += chars.charAt(Math.floor(Math.random() * num_chars));
}
return randomChar;
}
} }
} }

View File

@ -1,25 +1,59 @@
package org.bigbluebutton.modules.notes.services package org.bigbluebutton.modules.notes.services
{ {
import com.asfusion.mate.events.Dispatcher; import flash.events.IEventDispatcher;
import mx.collections.ArrayCollection; import mx.collections.ArrayCollection;
import org.bigbluebutton.modules.notes.events.SaveErrorEvent;
import org.bigbluebutton.modules.notes.models.Note; import org.bigbluebutton.modules.notes.models.Note;
import org.bigbluebutton.modules.notes.models.NotesModel;
import org.bigbluebutton.modules.notes.models.NotesOptions; import org.bigbluebutton.modules.notes.models.NotesOptions;
public class NotesMessageService public class NotesMessageService
{ {
private var _noteSaver:ArrayCollection = new ArrayCollection(); private var _notesModel:NotesModel = new NotesModel();
private var _noteSavers:ArrayCollection = new ArrayCollection();
private var _options:NotesOptions; private var _options:NotesOptions;
private var _dispatcher:Dispatcher; private var _dispatcher:IEventDispatcher;
public function NotesMessageService() { public function NotesMessageService(dispatcher:IEventDispatcher) {
_dispatcher = new Dispatcher(); _dispatcher = dispatcher;
} }
public function save(note:Note):void { public function save(note:String):void {
var noteSaver:NoteSaver = new NoteSaver(note, _dispatcher); var date:Date = new Date();
_noteSaver.addItem(noteSaver);
var n:Note = new Note();
n.noteID = generateRandomString(5) + "-" + date.time;
n.note = note;
n.saved = false;
_notesModel.addNote(n);
var noteSaver:NoteSaver = new NoteSaver(n, _options.saveURL, _dispatcher);
_noteSavers.addItem(noteSaver);
noteSaver.save();
} }
public function public function saveError(event:SaveErrorEvent):void {
}
public function saveSuccess(noteID:String):void {
_notesModel.noteSaved(noteID);
}
private function generateRandomString(strlen:Number):String{
var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var num_chars:Number = chars.length - 1;
var randomChar:String = "";
for (var i:Number = 0; i < strlen; i++){
randomChar += chars.charAt(Math.floor(Math.random() * num_chars));
}
return randomChar;
}
} }
} }