Changeset 260 for Dev/branches/rest-dojo-ui/client/rft
- Timestamp:
- 02/14/12 18:22:25 (13 years ago)
- Location:
- Dev/branches/rest-dojo-ui/client/rft
- Files:
-
- 5 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
Dev/branches/rest-dojo-ui/client/rft/auth.js
r256 r260 1 define(['dojo/_base/Deferred','./api'],function(Deferred,api){ 2 return new (function() { 3 var self = this; 4 var currentUser = null; 1 define(['dojo/_base/Deferred','dojo/_base/xhr','dojo/_base/json'], 2 function(Deferred,xhr,json){ 3 return new (function() { 4 var self = this; 5 var currentUser = null; 5 6 6 self.login = function(username,password) { 7 var d = new Deferred(); 8 api.post("login", 9 { 10 username:username, 11 password:password 12 }) 13 .then(function(data) { 14 currentUser = data; 15 d.resolve(data); 16 },function(){ 17 d.reject(); 18 }); 19 return d.promise; 20 }; 7 function post(path,args) { 8 return xhr.post({ 9 url: "../server/api.php"+path, 10 handleAs: "json", 11 headers: { 12 "Content-Type": "application/json" 13 }, 14 rawBody: json.toJson(args) 15 }); 16 } 17 18 self.login = function(username,password) { 19 var d = new Deferred(); 20 post("/login", 21 { 22 username:username, 23 password:password 24 }) 25 .then(function(data) { 26 currentUser = data; 27 d.resolve(data); 28 },function(){ 29 d.reject(); 30 }); 31 return d.promise; 32 }; 33 34 self.restore = function() { 35 var d = new Deferred(); 36 post("/login",{}) 37 .then(function(data) { 38 currentUser = data; 39 d.resolve(data); 40 },function(){ 41 d.reject(); 42 }); 43 return d.promise; 21 44 22 self.register = function(username,password) { 23 var d = new Deferred(); 24 api.post("register", 25 { 26 username:username, 27 password:password 28 }) 29 .then(function(data) { 30 currentUser = data; 31 d.resolve(data); 32 },function(){ 33 d.reject(); 34 }); 35 return d.promise; 36 }; 45 }; 46 47 self.register = function(username,password) { 48 var d = new Deferred(); 49 post("/register", 50 { 51 username:username, 52 password:password 53 }) 54 .then(function(data) { 55 currentUser = data; 56 d.resolve(data); 57 },function(){ 58 d.reject(); 59 }); 60 return d.promise; 61 }; 37 62 38 self.getUser = function(){39 return currentUser;40 };41 })();42 });63 self.getUser = function(){ 64 return currentUser; 65 }; 66 })(); 67 }); -
Dev/branches/rest-dojo-ui/client/rft/content.js
r257 r260 1 define(['dojo/_base/declare','dojo/_base/connect','dojo/_base/xhr','dojo/_base/lang','dojo/_base/Deferred','dojo/hash','dojo/io-query','dijit/registry','dijit','rft/util','rft/ui/Page'], 2 function(declare,connect,xhr,lang,Deferred,hash,uriQuery,registry,dijit,util,Page){ 1 define(['dojo/_base/declare','dojo/_base/connect','dojo/_base/xhr','dojo/dom-construct', 2 'dojo/dom-attr','dojo/_base/lang','dojo/_base/Deferred','dojo/hash', 3 'dojo/io-query','dojo/_base/json','dijit','rft/util'], 4 function(declare,connect,xhr,domConstruct,attr,lang,Deferred,hash,uriQuery,json,dijit,util){ 3 5 return new (function() { 4 6 var self = this; … … 6 8 7 9 var HRI = declare(null,{ 8 constructor: function() {10 constructor: function() { 9 11 this._path = '/'; 10 12 this._args = {}; … … 61 63 hash(newHash,replace); 62 64 xhr.get({ 63 url: 'pages'+hri.path()+'.html' 65 url: 'pages'+hri.path()+'.html', 66 failOk: true 64 67 }) 65 68 .then(function(html){ 66 contentPane.set('content',html); 67 var widgets = registry.findWidgets(contentPane.containerNode); 68 for(var i in widgets) { 69 if ( widgets[i].isInstanceOf(Page) ) { 70 widgets[i].init(hri.args()); 71 break; 72 } 73 } 69 var root = domConstruct.toDom(html) 70 var props = json.toJson(hri.args()); 71 props = props.slice(1,props.length-2); 72 if ( props ) 73 attr.set(root,'data-rft-props',props); 74 contentPane.set('content',root); 74 75 d.resolve(); 75 76 },function(){ … … 82 83 self.initial = function(path,args) { 83 84 if ( current ) { 84 return; 85 var dfd = new Deferred(); 86 dfd.resolved(); 87 return dfd.promise; 85 88 } 86 89 if ( hash() ) { 87 90 var hri = new HRI(hash()); 88 _goTo(hri, true);91 return _goTo(hri, true); 89 92 } else { 90 _goTo(new HRI(path,args));93 return _goTo(new HRI(path,args)); 91 94 } 92 95 } 93 96 94 97 self.goTo = function(path,args) { 95 _goTo(new HRI(path,args));98 return _goTo(new HRI(path,args)); 96 99 } 97 100 -
Dev/branches/rest-dojo-ui/client/rft/run.js
r258 r260 1 define(['require'], function(require) { 2 return {}; 3 }); 1 require(['dojo/_base/window','dojo/parser', 'rft/ui/LoginDialog', 2 'dojo/dom', 'dojo/_base/connect', 'rft/auth', 'rft/content', 3 'dojo/domReady!', 'dijit/layout/ContentPane', 'dijit/MenuBar', 4 'dijit/MenuBarItem', 'rft/ui/MenuBarLink', 'rft/ui/Page'], 5 function(win,parser,LoginDialog,dom,connect,auth,content) { 6 parser.parse(); 7 8 var login = new LoginDialog().placeAt(document.body); 9 login.startup(); 10 11 auth.restore() 12 .then(function(user){ 13 content.initial(); 14 },function(){ 15 login.show(); 16 }); 17 18 connect.connect(dom.byId('userinfo'),'click',function(){ 19 login.show(); 20 }); 21 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/LoginDialog.html
r256 r260 6 6 </span> 7 7 </div> 8 <form data-dojo-type="dijit.form.Form" data-dojo-attach-point="loginForm"> 9 <fieldset> 10 <label for="username" class="loginLabel">Email</label> 11 <input data-dojo-type="dijit.form.TextBox" name="username" type="text" class="loginInput" /> 12 <label for="password" class="loginLabel">Password</label> 13 <input data-dojo-type="dijit.form.TextBox" name="password" type="password" class="loginInput" /> 14 </fieldset> 15 </form> 16 <button type="button" data-dojo-type="dijit.form.Button" data-dojo-attach-event="onClick:onLogin">Login</button> 17 <button type="button" data-dojo-type="dijit.form.Button" data-dojo-attach-event="onClick:onCancel">Cancel</button> 18 <div data-dojo-attach-point="loginErrors"></div> 19 <div data-dojo-attach-point="containerNode"></div> 8 <div data-dojo-attach-point="containerNode"> 9 <form data-dojo-type="dijit.form.Form" data-dojo-attach-point="loginForm"> 10 <fieldset> 11 <label for="username" class="loginLabel">Email</label> 12 <input data-dojo-type="dijit.form.TextBox" name="username" type="text" class="loginInput" /> 13 <label for="password" class="loginLabel">Password</label> 14 <input data-dojo-type="dijit.form.TextBox" name="password" type="password" class="loginInput" /> 15 </fieldset> 16 </form> 17 <button type="button" data-dojo-type="dijit.form.Button" data-dojo-attach-event="onClick:onLogin">Login</button> 18 <button type="button" data-dojo-type="dijit.form.Button" data-dojo-attach-event="onClick:onCancel">Cancel</button> 19 <div data-dojo-attach-point="loginErrors"></div> 20 </div> 20 21 </div> -
Dev/branches/rest-dojo-ui/client/rft/ui/LoginDialog.js
r256 r260 8 8 title: "Login", 9 9 baseClass: "rftLoginDialog", 10 show: function() { 11 this.loginErrors.innerHTML = ''; 12 this.loginForm.reset(); 13 this.inherited(arguments); 14 }, 10 15 onLogin: function() { 11 16 this.loginErrors.innerHTML = ''; … … 15 20 .then(function() { 16 21 hide(); 17 content.initial( "sessions");22 content.initial(); 18 23 },function() { 19 24 this.loginErrors.innerHTML = 'Login failed.'; -
Dev/branches/rest-dojo-ui/client/rft/ui/Page.js
r257 r260 1 define(['dojo/_base/declare','dijit/_WidgetBase','dijit/_Container'], 2 function(declare,_WidgetBase,_Container){ 3 return declare('rft.ui.Page',[_WidgetBase,_Container],{ 4 init: function(args){ 5 } 1 define(['dojo/_base/declare','dojo/query','dojo/_base/json','dojo/dom-attr','dojo/_base/lang','dijit/registry','dijit/_WidgetBase','dijit/_Container'], 2 function(declare,query,json,attr,lang,registry,_WidgetBase,_Container){ 3 return declare('rft.ui.Page',[_WidgetBase,_Container],{ 4 postCreate: function() { 5 this.inherited(arguments); 6 this.args = {}; 7 var props = attr.get(this.domNode,'data-rft-props'); 8 if ( props ) { 9 props = json.fromJson.call(this,'{'+props+'}'); 10 lang.mixin(this.args,props); 11 } 12 }, 13 startup: function() { 14 this.inherited(arguments); 15 query('[data-rft-attach-point]').forEach(lang.hitch(this,function(node){ 16 var name = attr.get(node,'data-rft-attach-point'); 17 this[name] = registry.byNode(node) || node; 18 })); 19 this.init(); 20 }, 21 init: function(){} 22 }); 6 23 }); 7 });
Note: See TracChangeset
for help on using the changeset viewer.