ios alert now keyboard :(

This commit is contained in:
Peter Cottle 2013-01-08 15:42:45 -08:00
parent 015a17d015
commit 8144565211
5 changed files with 108 additions and 96 deletions

View file

@ -4483,6 +4483,7 @@ var DisabledMap = require('../level/disabledMap').DisabledMap;
var Command = require('../models/commandModel').Command; var Command = require('../models/commandModel').Command;
var GitShim = require('../git/gitShim').GitShim; var GitShim = require('../git/gitShim').GitShim;
var Views = require('../views');
var ModalTerminal = require('../views').ModalTerminal; var ModalTerminal = require('../views').ModalTerminal;
var ModalAlert = require('../views').ModalAlert; var ModalAlert = require('../views').ModalAlert;
var MultiView = require('../views/multiView').MultiView; var MultiView = require('../views/multiView').MultiView;
@ -4643,8 +4644,10 @@ var Sandbox = Backbone.View.extend({
'exit level': this.exitLevel, 'exit level': this.exitLevel,
'level': this.startLevel, 'level': this.startLevel,
'sandbox': this.exitLevel, 'sandbox': this.exitLevel,
'levels': this.showLevels 'levels': this.showLevels,
'iosAlert': this.iosAlert
}; };
var method = commandMap[command.get('method')]; var method = commandMap[command.get('method')];
if (!method) { throw new Error('no method for that wut'); } if (!method) { throw new Error('no method for that wut'); }
@ -4670,6 +4673,16 @@ var Sandbox = Backbone.View.extend({
} }
}, },
iosAlert: function(command, deferred) {
var whenClosed = Q.defer();
var view = new Views.iOSKeyboardView({
deferred: whenClosed
});
whenClosed.promise.then(function() {
command.finishWith(deferred);
});
},
delay: function(command, deferred) { delay: function(command, deferred) {
var amount = parseInt(command.get('regexResults')[1], 10); var amount = parseInt(command.get('regexResults')[1], 10);
setTimeout(function() { setTimeout(function() {
@ -6393,17 +6406,13 @@ var init = function() {
/* hacky demo functionality */ /* hacky demo functionality */
if (/\?demo/.test(window.location.href)) { if (/\?demo/.test(window.location.href)) {
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix"); eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix; help");
}, 500); }, 500);
} }
if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent) || true) { if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent)) {
var Views = require('../views');
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', 'iOS keyboardPop'); eventBaton.trigger('commandSubmitted', 'iOS alert');
}, 600); }, 600);
setTimeout(function() {
new Views.iOSKeyboardView();
}, 1000);
} }
}; };
@ -9867,28 +9876,6 @@ var ModalAlert = ContainedBase.extend({
} }
}); });
var iOSKeyboardView = Backbone.View.extend({
initialize: function(options) {
options = options || {};
this.deferred = options.deferred || Q.defer();
this.modalAlert = new ModalAlert({
markdowns: [
'## iOS device',
'',
'On iOS, user input is needed to bring up the keyboard. Click ',
'on this window to bring up the keyboard so you can type commands'
]
});
this.modalAlert.container.navEvents.on('click', this.clicked, this);
},
clicked: function() {
this.modalAlert.die();
$('#commandTextField').focus();
}
});
var ConfirmCancelTerminal = Backbone.View.extend({ var ConfirmCancelTerminal = Backbone.View.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};
@ -9900,7 +9887,6 @@ var ConfirmCancelTerminal = Backbone.View.extend({
options.modalAlert options.modalAlert
)); ));
var buttonDefer = Q.defer(); var buttonDefer = Q.defer();
this.buttonDefer = buttonDefer; this.buttonDefer = buttonDefer;
this.confirmCancel = new ConfirmCancelView({ this.confirmCancel = new ConfirmCancelView({
@ -9966,6 +9952,23 @@ var ConfirmCancelTerminal = Backbone.View.extend({
} }
}); });
var iOSKeyboardView = ConfirmCancelTerminal.extend({
initialize: function(options) {
options = options || {};
options.modalAlert = {
markdowns: [
'## iOS device',
'',
"On iOS, javascript can't bring up the software keyboard so unfortunately ",
"there's no way for you to enter commands :-/ Try visiting the site on desktop ",
"to get the full experience, or submit a pull request if you have an idea on how ",
"to integrate user input on iOS"
]
};
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
}
});
var NextLevelConfirm = ConfirmCancelTerminal.extend({ var NextLevelConfirm = ConfirmCancelTerminal.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};
@ -12920,7 +12923,8 @@ var regexMap = {
'exit level': /^exit level($|\s)/, 'exit level': /^exit level($|\s)/,
'sandbox': /^sandbox($|\s)/, 'sandbox': /^sandbox($|\s)/,
'level': /^level\s?([a-zA-Z0-9]*)/, 'level': /^level\s?([a-zA-Z0-9]*)/,
'levels': /^levels($|\s)/ 'levels': /^levels($|\s)/,
'iosAlert': /^iOS alert($|\s)/
}; };
var parse = function(str) { var parse = function(str) {
@ -16716,17 +16720,13 @@ var init = function() {
/* hacky demo functionality */ /* hacky demo functionality */
if (/\?demo/.test(window.location.href)) { if (/\?demo/.test(window.location.href)) {
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix"); eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix; help");
}, 500); }, 500);
} }
if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent) || true) { if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent)) {
var Views = require('../views');
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', 'iOS keyboardPop'); eventBaton.trigger('commandSubmitted', 'iOS alert');
}, 600); }, 600);
setTimeout(function() {
new Views.iOSKeyboardView();
}, 1000);
} }
}; };
@ -19766,6 +19766,7 @@ var DisabledMap = require('../level/disabledMap').DisabledMap;
var Command = require('../models/commandModel').Command; var Command = require('../models/commandModel').Command;
var GitShim = require('../git/gitShim').GitShim; var GitShim = require('../git/gitShim').GitShim;
var Views = require('../views');
var ModalTerminal = require('../views').ModalTerminal; var ModalTerminal = require('../views').ModalTerminal;
var ModalAlert = require('../views').ModalAlert; var ModalAlert = require('../views').ModalAlert;
var MultiView = require('../views/multiView').MultiView; var MultiView = require('../views/multiView').MultiView;
@ -19926,8 +19927,10 @@ var Sandbox = Backbone.View.extend({
'exit level': this.exitLevel, 'exit level': this.exitLevel,
'level': this.startLevel, 'level': this.startLevel,
'sandbox': this.exitLevel, 'sandbox': this.exitLevel,
'levels': this.showLevels 'levels': this.showLevels,
'iosAlert': this.iosAlert
}; };
var method = commandMap[command.get('method')]; var method = commandMap[command.get('method')];
if (!method) { throw new Error('no method for that wut'); } if (!method) { throw new Error('no method for that wut'); }
@ -19953,6 +19956,16 @@ var Sandbox = Backbone.View.extend({
} }
}, },
iosAlert: function(command, deferred) {
var whenClosed = Q.defer();
var view = new Views.iOSKeyboardView({
deferred: whenClosed
});
whenClosed.promise.then(function() {
command.finishWith(deferred);
});
},
delay: function(command, deferred) { delay: function(command, deferred) {
var amount = parseInt(command.get('regexResults')[1], 10); var amount = parseInt(command.get('regexResults')[1], 10);
setTimeout(function() { setTimeout(function() {
@ -20031,7 +20044,8 @@ var regexMap = {
'exit level': /^exit level($|\s)/, 'exit level': /^exit level($|\s)/,
'sandbox': /^sandbox($|\s)/, 'sandbox': /^sandbox($|\s)/,
'level': /^level\s?([a-zA-Z0-9]*)/, 'level': /^level\s?([a-zA-Z0-9]*)/,
'levels': /^levels($|\s)/ 'levels': /^levels($|\s)/,
'iosAlert': /^iOS alert($|\s)/
}; };
var parse = function(str) { var parse = function(str) {
@ -21684,28 +21698,6 @@ var ModalAlert = ContainedBase.extend({
} }
}); });
var iOSKeyboardView = Backbone.View.extend({
initialize: function(options) {
options = options || {};
this.deferred = options.deferred || Q.defer();
this.modalAlert = new ModalAlert({
markdowns: [
'## iOS device',
'',
'On iOS, user input is needed to bring up the keyboard. Click ',
'on this window to bring up the keyboard so you can type commands'
]
});
this.modalAlert.container.navEvents.on('click', this.clicked, this);
},
clicked: function() {
this.modalAlert.die();
$('#commandTextField').focus();
}
});
var ConfirmCancelTerminal = Backbone.View.extend({ var ConfirmCancelTerminal = Backbone.View.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};
@ -21717,7 +21709,6 @@ var ConfirmCancelTerminal = Backbone.View.extend({
options.modalAlert options.modalAlert
)); ));
var buttonDefer = Q.defer(); var buttonDefer = Q.defer();
this.buttonDefer = buttonDefer; this.buttonDefer = buttonDefer;
this.confirmCancel = new ConfirmCancelView({ this.confirmCancel = new ConfirmCancelView({
@ -21783,6 +21774,23 @@ var ConfirmCancelTerminal = Backbone.View.extend({
} }
}); });
var iOSKeyboardView = ConfirmCancelTerminal.extend({
initialize: function(options) {
options = options || {};
options.modalAlert = {
markdowns: [
'## iOS device',
'',
"On iOS, javascript can't bring up the software keyboard so unfortunately ",
"there's no way for you to enter commands :-/ Try visiting the site on desktop ",
"to get the full experience, or submit a pull request if you have an idea on how ",
"to integrate user input on iOS"
]
};
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
}
});
var NextLevelConfirm = ConfirmCancelTerminal.extend({ var NextLevelConfirm = ConfirmCancelTerminal.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};

View file

@ -119,17 +119,13 @@ var init = function() {
/* hacky demo functionality */ /* hacky demo functionality */
if (/\?demo/.test(window.location.href)) { if (/\?demo/.test(window.location.href)) {
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix"); eventBaton.trigger('commandSubmitted', "gc; git checkout HEAD~1; git commit; git checkout -b bugFix; gc; gc; git rebase -i HEAD~2; git rebase master; git checkout master; gc; gc; git merge bugFix; help");
}, 500); }, 500);
} }
if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent) || true) { if (/(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent)) {
var Views = require('../views');
setTimeout(function() { setTimeout(function() {
eventBaton.trigger('commandSubmitted', 'iOS keyboardPop'); eventBaton.trigger('commandSubmitted', 'iOS alert');
}, 600); }, 600);
setTimeout(function() {
new Views.iOSKeyboardView();
}, 1000);
} }
}; };

View file

@ -12,6 +12,7 @@ var DisabledMap = require('../level/disabledMap').DisabledMap;
var Command = require('../models/commandModel').Command; var Command = require('../models/commandModel').Command;
var GitShim = require('../git/gitShim').GitShim; var GitShim = require('../git/gitShim').GitShim;
var Views = require('../views');
var ModalTerminal = require('../views').ModalTerminal; var ModalTerminal = require('../views').ModalTerminal;
var ModalAlert = require('../views').ModalAlert; var ModalAlert = require('../views').ModalAlert;
var MultiView = require('../views/multiView').MultiView; var MultiView = require('../views/multiView').MultiView;
@ -172,8 +173,10 @@ var Sandbox = Backbone.View.extend({
'exit level': this.exitLevel, 'exit level': this.exitLevel,
'level': this.startLevel, 'level': this.startLevel,
'sandbox': this.exitLevel, 'sandbox': this.exitLevel,
'levels': this.showLevels 'levels': this.showLevels,
'iosAlert': this.iosAlert
}; };
var method = commandMap[command.get('method')]; var method = commandMap[command.get('method')];
if (!method) { throw new Error('no method for that wut'); } if (!method) { throw new Error('no method for that wut'); }
@ -199,6 +202,16 @@ var Sandbox = Backbone.View.extend({
} }
}, },
iosAlert: function(command, deferred) {
var whenClosed = Q.defer();
var view = new Views.iOSKeyboardView({
deferred: whenClosed
});
whenClosed.promise.then(function() {
command.finishWith(deferred);
});
},
delay: function(command, deferred) { delay: function(command, deferred) {
var amount = parseInt(command.get('regexResults')[1], 10); var amount = parseInt(command.get('regexResults')[1], 10);
setTimeout(function() { setTimeout(function() {

View file

@ -44,7 +44,8 @@ var regexMap = {
'exit level': /^exit level($|\s)/, 'exit level': /^exit level($|\s)/,
'sandbox': /^sandbox($|\s)/, 'sandbox': /^sandbox($|\s)/,
'level': /^level\s?([a-zA-Z0-9]*)/, 'level': /^level\s?([a-zA-Z0-9]*)/,
'levels': /^levels($|\s)/ 'levels': /^levels($|\s)/,
'iosAlert': /^iOS alert($|\s)/
}; };
var parse = function(str) { var parse = function(str) {

View file

@ -288,28 +288,6 @@ var ModalAlert = ContainedBase.extend({
} }
}); });
var iOSKeyboardView = Backbone.View.extend({
initialize: function(options) {
options = options || {};
this.deferred = options.deferred || Q.defer();
this.modalAlert = new ModalAlert({
markdowns: [
'## iOS device',
'',
'On iOS, user input is needed to bring up the keyboard. Click ',
'on this window to bring up the keyboard so you can type commands'
]
});
this.modalAlert.container.navEvents.on('click', this.clicked, this);
},
clicked: function() {
this.modalAlert.die();
$('#commandTextField').focus();
}
});
var ConfirmCancelTerminal = Backbone.View.extend({ var ConfirmCancelTerminal = Backbone.View.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};
@ -321,7 +299,6 @@ var ConfirmCancelTerminal = Backbone.View.extend({
options.modalAlert options.modalAlert
)); ));
var buttonDefer = Q.defer(); var buttonDefer = Q.defer();
this.buttonDefer = buttonDefer; this.buttonDefer = buttonDefer;
this.confirmCancel = new ConfirmCancelView({ this.confirmCancel = new ConfirmCancelView({
@ -387,6 +364,23 @@ var ConfirmCancelTerminal = Backbone.View.extend({
} }
}); });
var iOSKeyboardView = ConfirmCancelTerminal.extend({
initialize: function(options) {
options = options || {};
options.modalAlert = {
markdowns: [
'## iOS device',
'',
"On iOS, javascript can't bring up the software keyboard so unfortunately ",
"there's no way for you to enter commands :-/ Try visiting the site on desktop ",
"to get the full experience, or submit a pull request if you have an idea on how ",
"to integrate user input on iOS"
]
};
ConfirmCancelTerminal.prototype.initialize.apply(this, [options]);
}
});
var NextLevelConfirm = ConfirmCancelTerminal.extend({ var NextLevelConfirm = ConfirmCancelTerminal.extend({
initialize: function(options) { initialize: function(options) {
options = options || {}; options = options || {};