diff options
| author | Adam Abrons | 2010-01-05 16:36:58 -0800 |
|---|---|---|
| committer | Adam Abrons | 2010-01-05 16:36:58 -0800 |
| commit | c9c176a53b1632ca2b1c6ed27382ab72ac21d45d (patch) | |
| tree | b5f719a095c03ee9f8b2721ffdaf1e5ff8c11b41 /src/ControlBar.js | |
| download | angular.js-c9c176a53b1632ca2b1c6ed27382ab72ac21d45d.tar.bz2 | |
angular.js
Diffstat (limited to 'src/ControlBar.js')
| -rw-r--r-- | src/ControlBar.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/ControlBar.js b/src/ControlBar.js new file mode 100644 index 00000000..3e1f0b57 --- /dev/null +++ b/src/ControlBar.js @@ -0,0 +1,71 @@ +// Copyright (C) 2008,2009 BRAT Tech LLC + +nglr.ControlBar = function (document, serverUrl) { + this.document = document; + this.serverUrl = serverUrl; + this.window = window; + this.callbacks = []; +}; + +nglr.ControlBar.prototype.bind = function () { +}; + +nglr.ControlBar.HTML = + '<div>' + + '<div class="ui-widget-overlay"></div>' + + '<div id="ng-login" ng-non-bindable="true">' + + '<div class="ng-login-container"></div>' + + '</div>' + + '</div>'; + +nglr.ControlBar.prototype.login = function (loginSubmitFn) { + this.callbacks.push(loginSubmitFn); + if (this.callbacks.length == 1) { + this.doTemplate("/user_session/new.mini?return_url=" + encodeURIComponent(this.urlWithoutAnchor())); + } +}; + +nglr.ControlBar.prototype.logout = function (loginSubmitFn) { + this.callbacks.push(loginSubmitFn); + if (this.callbacks.length == 1) { + this.doTemplate("/user_session/do_destroy.mini"); + } +}; + +nglr.ControlBar.prototype.urlWithoutAnchor = function (path) { + return this.window.location.href.split("#")[0]; +}; + +nglr.ControlBar.prototype.doTemplate = function (path) { + var self = this; + var id = new Date().getTime(); + var url = this.urlWithoutAnchor(); + url += "#$iframe_notify=" + id; + 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>'); + this.document.append(loginView); + loginView.dialog({ + height:iframeHeight + 33, width:500, + resizable: false, modal:true, + title: 'Authentication: <a href="http://www.getangular.com"><tt><angular/></tt></a>' + }); + nglr["_iframe_notify_" + id] = function() { + loginView.dialog("destroy"); + loginView.remove(); + jQuery.each(self.callbacks, function(i, callback){ + callback(); + }); + self.callbacks = []; + }; +}; + +nglr.ControlBar.FORBIDEN = + '<div ng-non-bindable="true" title="Permission Error:">' + + 'Sorry, you do not have permission for this!'+ + '</div>'; + +nglr.ControlBar.prototype.notAuthorized = function () { + if (this.forbidenView) return; + this.forbidenView = jQuery(nglr.ControlBar.FORBIDEN); + this.forbidenView.dialog({bgiframe:true, height:70, modal:true}); +}; |
