X-Git-Url: http://nitlanguage.org diff --git a/contrib/benitlux/src/client/views/user_views.nit b/contrib/benitlux/src/client/views/user_views.nit index e45fcb5..348243a 100644 --- a/contrib/benitlux/src/client/views/user_views.nit +++ b/contrib/benitlux/src/client/views/user_views.nit @@ -46,25 +46,21 @@ class UserWindow private var layout_user_options = new VerticalLayout(parent=layout) - private var lbl_user_options_title = new Label(parent=layout_user_options, + private var user_options_header = new SectionHeader(parent=layout_user_options) + private var lbl_user_options_title = new SectionTitle(parent=user_options_header, text="Account options".t) - private var lbl_welcome = new Label(parent=layout_user_options) + var lbl_welcome = new DescLabel(parent=layout_user_options) private var but_logout = new Button(parent=layout_user_options, text="Logout".t) # Refesh displayed text fun refresh do - lbl_user_options_title.size = 1.5 lbl_welcome.set_user_name but_logout.enabled = app.user != null end - init - do - but_logout.observers.add self - refresh - end + init do refresh redef fun on_event(event) do @@ -86,42 +82,47 @@ end class SignupWindow super Window - # Main window layout - var layout = new ListLayout(parent=self) + private var list = new ListLayout(parent=self) + private var lbl_feedback = new DescLabel(parent=list, text="Welcome") + + private var layout_login = new VerticalLayout(parent=list) - private var lbl_welcome = new Label(parent=layout, text="Welcome") + # --- + # First the login options # Name - private var name_line = new HorizontalLayout(parent=layout) + private var name_line = new HorizontalLayout(parent=layout_login) private var lbl_name = new Label(parent=name_line, text="Username".t) private var txt_name = new TextInput(parent=name_line, text=app.user) - # Pass - private var pass_line = new HorizontalLayout(parent=layout) + # Password + private var pass_line = new HorizontalLayout(parent=layout_login) private var lbl_pass = new Label(parent=pass_line, text="Password".t) private var txt_pass = new TextInput(parent=pass_line, is_password=true) - private var lbl_pass_desc = new Label(parent=layout, + private var lbl_pass_desc = new DescLabel(parent=layout_login, size = 0.5, text="Passwords must be composed of at least 6 characters.".t) - private var but_login = new Button(parent=layout, text="Login".t) + private var but_login = new Button(parent=layout_login, text="Login".t) - # Email - private var email_line = new HorizontalLayout(parent=layout) - private var lbl_email = new Label(parent=email_line, text="Email".t) - private var txt_email = new TextInput(parent=email_line) + # --- + # Then, the signup options - private var but_signup = new Button(parent=layout, text="Signup".t) + private var layout_register = new VerticalLayout(parent=list) - private var lbl_feedback = new Label(parent=layout, text="") + private var lbl_signup_desc = new DescLabel(parent=layout_register, size = 0.5, + text="Fill the following fields to sign up.".t) - init - do - lbl_pass_desc.size = 0.5 + # Repeat password + private var pass_line2 = new HorizontalLayout(parent=layout_register) + private var lbl_pass2 = new Label(parent=pass_line2, text="Repeat password".t) + private var txt_pass2 = new TextInput(parent=pass_line2, is_password=true) - for c in [but_login, but_signup] do - c.observers.add self - end - end + # Email + private var email_line = new HorizontalLayout(parent=layout_register) + private var lbl_email = new Label(parent=email_line, text="Email".t) + private var txt_email = new TextInput(parent=email_line) + + private var but_signup = new Button(parent=layout_register, text="Signup".t) redef fun on_event(event) do @@ -133,26 +134,33 @@ class SignupWindow var name = txt_name.text if name == null or not name.name_is_ok then - feedback "Invalid name".t + feedback "Invalid username.".t return end var pass = txt_pass.text if pass == null or not pass.pass_is_ok then - feedback "Invalid password".t + feedback "Invalid password.".t return end if sender == but_login then - (new LoginOrSignupAction(self, "rest/login?name={name}&pass={pass.pass_hash}")).start + feedback "Logging in...".t + (new LoginOrSignupAction(self, "rest/login?name={name.to_percent_encoding}&pass={pass.pass_hash}")).start else if sender == but_signup then + if pass != txt_pass2.text then + feedback "Passwords do not match.".t + return + end + var email = txt_email.text if email == null or email.is_empty then feedback "Invalid email".t return end - (new LoginOrSignupAction(self, "rest/signup?name={name}&pass={pass.pass_hash}&email={email}")).start + feedback "Signing up...".t + (new LoginOrSignupAction(self, "rest/signup?name={name.to_percent_encoding}&pass={pass.pass_hash}&email={email.to_percent_encoding}")).start end end end @@ -175,7 +183,7 @@ class LoginOrSignupAction init do affected_views.add_all([window.but_login, window.but_signup]) - redef fun on_load(res) + redef fun on_load(res, status) do if intercept_error(res) then return @@ -189,27 +197,6 @@ class LoginOrSignupAction app.on_log_in end -end - -# Async request for signing up -class SignupAction - super WindowHttpRequest - - redef type W: SignupWindow - - init do affected_views.add_all([window.but_signup]) - - redef fun on_load(res) - do - if intercept_error(res) then return - if not res isa LoginResult then - on_fail new Error("Server sent unexpected data {res or else "null"}") - return - end - - app.token = res.token - app.user = res.user.name - app.on_log_in - end + redef fun feedback(text) do window.feedback text end