Skip to content

Commit

Permalink
events mostly working
Browse files Browse the repository at this point in the history
  • Loading branch information
pgte committed Dec 5, 2009
1 parent 6ec5857 commit 88b402e
Show file tree
Hide file tree
Showing 8 changed files with 222 additions and 23 deletions.
60 changes: 40 additions & 20 deletions assets/javascripts/cymain.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,34 @@ var Cyclops = function(type) {
}
}

cyclops_get_lastModified = null;
Cyclops.prototype.startListening = function() {
$.get("/activity?id=final", {}, function(ev) {
ev = JSON.parse(ev);
slave['playEvent_'+ev.type](ev);
slave.startListening();
});

temp_cyclops_get_lastModified = $.ajax({
beforeSend: function(XMLHttpRequest) {
if(cyclops_get_lastModified != null) {
XMLHttpRequest.setRequestHeader("If-Modified-Since", cyclops_get_lastModified);
}
},
type: "GET",
url: "/activity?id="+$.cookie('cyclops_queue_id'),
dataType: "json",
success: function(ev){
//console.info('data = '+data);
//ev = JSON.parse(data);
//try {
slave['playEvent_'+ev.type](ev);
//} catch(exception) {
//if (self['console'])
//console.error(exception);
//}
slave.startListening();
}
}).getResponseHeader('Last-Modified');

if(temp_cyclops_get_lastModified)
cyclops_get_lastModified = temp_cyclops_get_lastModified;

}


Expand All @@ -29,7 +51,7 @@ Cyclops.prototype.startListeningFromStorage = function() {

if (el)
{
console.info(el.type);
//console.info(el.type);
slave["playEvent_"+el.type](el);
}
}
Expand All @@ -53,9 +75,7 @@ Cyclops.prototype.sendEvent = function(e) {

ev = master['getEvent_'+e.type](e);

$.post('/publish?id=final', ev.serialize(), function(data, textStatus) {
if (textStatus != "success")
console.info("failed posting! " + stextStatus);
$.post('/publish?id='+$.cookie('cyclops_queue_id'), ev.serialize(), function(data, textStatus) {
});
}

Expand All @@ -78,23 +98,23 @@ Cyclops.prototype.playEvent_mousemove = function(e) {
evt.initMouseEvent("mousemove", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);

if(el = document.elementFromPoint(e.data.x, e.data.y)) {
el.dispatchEvent(evt);
}
if(el = document.elementFromPoint(e.data.x, e.data.y)) {
el.dispatchEvent(evt);
}
}

Cyclops.prototype.playEvent_click = function(e) {
// TODO: move to dispatch event
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
1, 0, 0, 0, 0, false, false, false, false, 0, null);
$('#mouse').hide();
if(el = document.elementFromPoint(e.data.x, e.data.y)) {
console.info(el);
el.dispatchEvent(evt);
} else {
console.error('No element in '+e.data.x + ', '+e.data.y);
}
$('#mouse').show();
$('#mouse').hide();
if(el = document.elementFromPoint(e.data.x, e.data.y)) {
//console.info(el);
el.dispatchEvent(evt);
} else {
//console.error('No element in '+e.data.x + ', '+e.data.y);
}
$('#mouse').show();

}
96 changes: 96 additions & 0 deletions assets/javascripts/jquery.cookie.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/

/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
* used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/

/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
// in the packed version for some reason...
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
1 change: 1 addition & 0 deletions assets/javascripts/jquery.url.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions assets/jquery.url.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions demo_final/application.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ <h2>Paint here:</h2>
<script src="../assets/javascripts/json2.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/pubsub.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/event.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/cymain.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/cynotify.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.hotkeys.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.jgrowl.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.url.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/cymain.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/cynotify.js" type="text/javascript" charset="utf-8"></script>

</body>
</html>
23 changes: 23 additions & 0 deletions demo_final/start.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<title>Cyclops Demo Final - Start</title>
<meta name="description" content="" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../assets/stylesheets/master.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="../assets/stylesheets/jquery.jgrowl.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
Session will start in seconds, please wait...
<script src="../assets/javascripts/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.url.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var queue_id = jQuery.url.param("queue_id");
$.cookie('cyclops_queue_id', queue_id);
var redirect_to = jQuery.url.param("redirect_to");
//alert(unescape(redirect_to));
document.location = redirect_to;
</script>
</body>
</html>
56 changes: 56 additions & 0 deletions demo_final/start_master.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<head>
<title>Cyclops Demo Final - Start Master</title>
<meta name="description" content="" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../assets/stylesheets/master.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="../assets/stylesheets/jquery.jgrowl.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
<form>
<p>
<label for="url">URL:</label>
<input type="text" id="url" value="http://localhost:8000/demo_final/application.html"/>
</p>
<p>
<input type="submit" id="go" value="generate URL" />
</p>

<p>
<input type="text" id="generated_url" />
</p>

</form>

<p id="link_container"></p>

<script src="../assets/javascripts/jquery.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.url.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/javascripts/jquery.cookie.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">

function randomString(length)
{
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
pass = "";
for(x=0;x<length;x++)
{
i = Math.floor(Math.random() * 62);
pass += chars.charAt(i);
}
return pass;
}

$('form').submit(function() {
var url = $('#url').val();
var queueId = randomString(10);
var final_url = 'http://localhost:8000/demo_final/start.html?queue_id='+escape(queueId)+'&redirect_to='+url;
$('#generated_url').val(final_url);
$('#link_container').html('<a href="'+final_url+'" >'+final_url+'</a>');
return false;
});
</script>

</body>
</html>
2 changes: 1 addition & 1 deletion nginx/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ http {
set $push_channel_id $arg_id; #/?id=239aff3 or somesuch
push_publisher;

push_store_messages off; # enable message queueing
push_store_messages on; # enable message queueing
push_message_timeout 2h; # expire buffered messages after 2 hours
push_max_message_buffer_length 100; # store 10 messages
push_min_message_recipients 0; # minimum recipients before purge
Expand Down

0 comments on commit 88b402e

Please sign in to comment.