angular.js/src/ControlBar.js

72 lines
2.2 KiB
JavaScript
Raw Normal View History

function ControlBar(document, serverUrl, database) {
2010-01-25 03:12:01 +00:00
this._document = document;
2010-01-06 00:36:58 +00:00
this.serverUrl = serverUrl;
this.database = database;
2010-01-25 03:12:01 +00:00
this._window = window;
2010-01-06 00:36:58 +00:00
this.callbacks = [];
};
2010-01-09 23:02:43 +00:00
ControlBar.HTML =
2010-01-06 00:36:58 +00:00
'<div>' +
'<div class="ui-widget-overlay"></div>' +
'<div id="ng-login" ng-non-bindable="true">' +
'<div class="ng-login-container"></div>' +
'</div>' +
'</div>';
2010-01-09 23:02:43 +00:00
ControlBar.FORBIDEN =
2010-01-06 00:36:58 +00:00
'<div ng-non-bindable="true" title="Permission Error:">' +
'Sorry, you do not have permission for this!'+
'</div>';
2010-01-12 01:32:33 +00:00
ControlBar.prototype = {
bind: function () {
},
login: function (loginSubmitFn) {
this.callbacks.push(loginSubmitFn);
if (this.callbacks.length == 1) {
this.doTemplate("/user_session/new.mini?database="+encodeURIComponent(this.database)+"&return_url=" + encodeURIComponent(this.urlWithoutAnchor()));
2010-01-12 01:32:33 +00:00
}
},
logout: function (loginSubmitFn) {
this.callbacks.push(loginSubmitFn);
if (this.callbacks.length == 1) {
this.doTemplate("/user_session/do_destroy.mini");
}
},
urlWithoutAnchor: function (path) {
2010-01-25 03:12:01 +00:00
return this._window['location']['href'].split("#")[0];
2010-01-12 01:32:33 +00:00
},
doTemplate: function (path) {
var self = this;
var id = new Date().getTime();
2010-01-25 03:12:01 +00:00
var url = this.urlWithoutAnchor() + "#$iframe_notify=" + id;
2010-01-12 01:32:33 +00:00
var iframeHeight = 330;
var loginView = jQuery('<div style="overflow:hidden; padding:2px 0 0 0;"><iframe name="'+ url +'" src="'+this.serverUrl + path + '" width="500" height="'+ iframeHeight +'"/></div>');
2010-01-25 03:12:01 +00:00
this._document.append(loginView);
loginView['dialog']({
'height':iframeHeight + 33, 'width':500,
'resizable': false, 'modal':true,
'title': 'Authentication: <a href="http://www.getangular.com"><tt>&lt;angular/&gt;</tt></a>'
2010-01-12 01:32:33 +00:00
});
angularCallbacks["_iframe_notify_" + id] = function() {
2010-01-25 03:12:01 +00:00
loginView['dialog']("destroy");
loginView['remove']();
2010-01-12 01:32:33 +00:00
foreach(self.callbacks, function(callback){
callback();
});
self.callbacks = [];
};
},
notAuthorized: function () {
if (this.forbidenView) return;
this.forbidenView = jQuery(ControlBar.FORBIDEN);
this.forbidenView.dialog({bgiframe:true, height:70, modal:true});
}
};