[Xfce4-commits] <cafe:master> Allow general member information to be changed.

Jannis Pohlmann noreply at xfce.org
Sun Mar 13 02:18:01 CET 2011


Updating branch refs/heads/master
         to ac13008b9fac334cddd47a95bca2b413b51ca396 (commit)
       from 02f3c9e8130180058284883c4ac75a58b84c06f9 (commit)

commit ac13008b9fac334cddd47a95bca2b413b51ca396
Author: Jannis Pohlmann <jannis at 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.wickert at googlemail.com',
-  :password => 'test',
-  :address => 'Foo 123
-D12393 Wherever
+  { :email => 'christoph.wickert at 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 => 'jannis at xfce.org',
-  :password => 'test',
-  :address => 'Foo 123
-23123 Lübeck',
-  :member_since => '2011-02-06'
+  { :email => 'jannis at 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



More information about the Xfce4-commits mailing list