Updating branch refs/heads/master to ac13008b9fac334cddd47a95bca2b413b51ca396 (commit) from 02f3c9e8130180058284883c4ac75a58b84c06f9 (commit)
commit ac13008b9fac334cddd47a95bca2b413b51ca396 Author: Jannis Pohlmann <jan...@xfce.org> Date: Sun Mar 13 02:16:14 2011 +0100 Allow general member information to be changed. examples/xfce-foundation/config.ru | 24 ++++++++++++------------ lib/controllers/members.rb | 30 ++++++++++++++++++++++++++++-- lib/views/member.erb | 17 ++++++++++------- lib/views/stylesheet.sass | 15 ++++++++++++--- 4 files changed, 62 insertions(+), 24 deletions(-) diff --git a/examples/xfce-foundation/config.ru b/examples/xfce-foundation/config.ru index 54d165f..9fabfdb 100644 --- a/examples/xfce-foundation/config.ru +++ b/examples/xfce-foundation/config.ru @@ -20,22 +20,22 @@ require '../../lib/cafe' # create dummy users user = Cafe::Models::Member.first_or_create( - :fullname => 'Christoph Wickert', - :email => 'christoph.wick...@googlemail.com', - :password => 'test', - :address => 'Foo 123 -D12393 Wherever + { :email => 'christoph.wick...@googlemail.com' }, + { :fullname => 'Christoph Wickert', + :password => 'test', + :address => 'Foo 123 +D-12393 Wherever Germany', - :member_since => '2011-02-06' + :member_since => '2011-02-06' } ) user.save user = Cafe::Models::Member.first_or_create( - :fullname => 'Jannis Pohlmann', - :email => 'jan...@xfce.org', - :password => 'test', - :address => 'Foo 123 -23123 Lübeck', - :member_since => '2011-02-06' + { :email => 'jan...@xfce.org' }, + { :fullname => 'Jannis Pohlmann', + :password => 'test', + :address => 'Foo 123 +23123 Lübeck', + :member_since => '2011-02-06' } ) user.save diff --git a/lib/controllers/members.rb b/lib/controllers/members.rb index 2f1f8d3..c8f191c 100644 --- a/lib/controllers/members.rb +++ b/lib/controllers/members.rb @@ -11,13 +11,39 @@ module Cafe app.get '/member/:id' do authorization_required - @member = Member.first(params[:id]) + @member = Member.get(params[:id]) view :member end app.post '/member/:id/information' do authorization_required - @member = Member.first(params[:id]) + @member = Member.get(params[:id]) + + error_set(:fullname, 'No name specified') if params[:fullname].empty? + error_set(:email, 'No email address specified') if params[:email].empty? + error_set(:address, 'No address specified') if params[:address].empty? + error_set(:member_since, 'No membership start date specified') if params[:member_since].empty? + + unless params[:new_password_repeat].empty? + if params[:new_password] != params[:new_password_repeat] + error_set(:new_password, 'Passwords did not match') + end + end + + unless error_set? + @member.fullname = params[:fullname] + @member.email = params[:email] + @member.address = params[:address] + @member.member_since = params[:member_since] + unless params[:new_password_repeat].empty? + @member.password = params[:new_password] + end + @member.save + + redirect '/members' + end + + view :member end end diff --git a/lib/views/member.erb b/lib/views/member.erb index 5f54f8f..8f8fccc 100644 --- a/lib/views/member.erb +++ b/lib/views/member.erb @@ -5,31 +5,34 @@ <p> <label for="fullname">Full name:</label> <input type="text" id="fullname" name="fullname" value="<%= @member.fullname %>"/> + <% if error(:fullname) %><span class="error"><%= error(:fullname) %></span><% end %> </p> <p> <label for="email">Email address:</label> <input type="text" id="email" name="email" value="<%= @member.email %>"/> + <% if error(:email) %><span class="error"><%= error(:email) %></span><% end %> </p> <p> - <label for="email">Email address:</label> - <input type="text" id="email" name="email" value="<%= @member.email %>"/> + <label for="address">Address:</label> + <textarea id="address" name="address"><%= @member.address %></textarea> </p> + <% if error(:address) %><p class="error"><span class="placeholder"> </span><%= error(:address) %></p><% end %> <p> <label for="new_password">Password:</label> <input type="password" id="new_password" name="new_password" value=""/> + <% if error(:new_password) %><span class="error"><%= error(:new_password) %></span><% end %> </p> <p> <label for="new_password">Password (confirmation):</label> <input type="password" id="new_password_repeat" name="new_password_repeat" value=""/> - </p> - <p> - <label for="address">Address:</label> - <textarea id="address" name="address" style="height:10em;"><%= @member.address %></textarea> + <% unless params.has_key?(:new_password) %> + <span class="info">Leave empty for no password change</span> + <% end %> </p> <p> <label for="member_since">Member since:</label> <input type="text" id="member_since" name="member_since" value="<%= @member.member_since %>"/> - Format: YYYY-MM-DD + <span class="info">Format: YYYY-MM-DD</span> </p> <p><span class="placeholder"> </span> <input type="submit" value="Save"/></p> </form> diff --git a/lib/views/stylesheet.sass b/lib/views/stylesheet.sass index 68f870b..82e3e57 100755 --- a/lib/views/stylesheet.sass +++ b/lib/views/stylesheet.sass @@ -93,6 +93,9 @@ fieldset p padding: 0em + p.error + margin-top: -1em + label, span.placeholder display: block float: left @@ -110,6 +113,7 @@ fieldset height: 2em input[type=text] + width: 20em border: thin solid rgb(150,150,150) line-height: 2em padding: @@ -121,10 +125,15 @@ fieldset textarea @extend input[type=text] - width: 60% + width: 40em + height: 10em + + span.error + padding-left: 0.5em - span.error, span.info - padding-left: 1em + span.info + @extend span.error + font-style: italic .error color: red _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits