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