You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2015/12/24 22:11:17 UTC

[whimsy.git] [1/1] Commit b03cd98: request account updates

Commit b03cd987a0a1692ad8df3e067d3cd5fd22be6d86:
    request account updates


Branch: refs/heads/secmail
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>

------------------------------------------------------------
www/secmail/models/message.rb                                | ++ 
www/secmail/server.rb                                        | ++ 
www/secmail/views/forms/icla.js.rb                           | +++++++++ --
www/secmail/views/parts.html.rb                              | + -
www/secmail/views/parts.js.rb                                | + -
------------------------------------------------------------
47 changes: 39 additions, 8 deletions.
------------------------------------------------------------


diff --git a/www/secmail/models/message.rb b/www/secmail/models/message.rb
index 39f0686..0beab95 100644
--- a/www/secmail/models/message.rb
+++ b/www/secmail/models/message.rb
@@ -1,4 +1,6 @@
 class Message
+  attr_reader :headers
+
   def initialize(mailbox, hash, headers, email)
     @hash = hash
     @mailbox = mailbox
diff --git a/www/secmail/server.rb b/www/secmail/server.rb
index 00dcff8..74e170d 100644
--- a/www/secmail/server.rb
+++ b/www/secmail/server.rb
@@ -81,6 +81,8 @@
   message = Mailbox.new(month).find(hash)
   pass unless message
   @attachments = message.attachments
+  @headers = message.headers.dup
+  @headers.delete :attachments
   _html :parts
 end
 
diff --git a/www/secmail/views/forms/icla.js.rb b/www/secmail/views/forms/icla.js.rb
index 7a0fb2f..004b36f 100644
--- a/www/secmail/views/forms/icla.js.rb
+++ b/www/secmail/views/forms/icla.js.rb
@@ -41,7 +41,7 @@ def render
         _tr do
           _th 'User ID'
           _td do
-            _input name: 'userid', value: @userid
+            _input name: 'user', value: @user
           end
         end
 
@@ -67,26 +67,53 @@ def render
         end
       end
 
-      _button.btn.btn_primary 'Request Account', disabled: true
+      _button.btn.btn_primary 'Request Account', ref: 'acreq',
+        onClick: self.acreq
     end
   end
 
-  # on initial display, update state
+  # on initial display, default various fields based on headers, and update
+  # state 
   def componentDidMount()
-    # self.componentDidUpdate()
+    @realname = @@headers.name
+    @email = @@headers.from
+    self.componentDidUpdate()
   end
 
-  # as fields change, enable/disable the file button
+  # as fields change, enable/disable the associated buttons and adjust
+  # input requirements.
   def componentDidUpdate()
+    # ICLA file form
     valid = %w(realname pubname email filename).all? do |name|
-      return document.querySelector("input[name=#{name}]").validity.valid
+      document.querySelector("input[name=#{name}]").validity.valid
     end
 
     $file.disabled = !valid
+
+    # new account request form
+    valid = true
+    %w(user pmc podling votelink).each do |name|
+      input = document.querySelector("input[name=#{name}]")
+      input.required = @user && !@user.empty?
+      input.required = false if name == 'podling' and @pmc != 'incubator'
+      valid &= input.validity.valid
+    end
+
+    $acreq.disabled = !valid or !@user
   end
 
   # generate file name from the public name
   def genfilename()
     @filename ||= @pubname.downcase().gsub(/\W/, '-') + '.pdf'
   end
+
+  # show new account request window with fields filled in
+  def acreq()
+    params = %w{email user pmc podling votelink}.map do |name|
+      "#{name}=#{encodeURIComponent(self.state[name])}"
+    end
+
+    window.parent.frames.content.location.href = 
+      "https://id.apache.org/acreq/members/?" + params.join('&')
+  end
 end
diff --git a/www/secmail/views/parts.html.rb b/www/secmail/views/parts.html.rb
index a55d1d2..4667d10 100644
--- a/www/secmail/views/parts.html.rb
+++ b/www/secmail/views/parts.html.rb
@@ -14,6 +14,6 @@
 
   _script src: '../../app.js'
   _.render '#attachments' do
-    _Parts attachments: @attachments
+    _Parts attachments: @attachments, headers: @headers
   end
 end
diff --git a/www/secmail/views/parts.js.rb b/www/secmail/views/parts.js.rb
index 8588ed8..1578957 100644
--- a/www/secmail/views/parts.js.rb
+++ b/www/secmail/views/parts.js.rb
@@ -87,7 +87,7 @@ def render
       end
 
       if @form
-        React.createElement @form, submit: self.submit
+        React.createElement @form, headers: @@headers, submit: self.submit
       end
     end