You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by cl...@apache.org on 2018/01/12 22:24:57 UTC
[whimsy] branch master updated: Add projects/icla/discuss page
This is an automated email from the ASF dual-hosted git repository.
clr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new 63c0ad1 Add projects/icla/discuss page
63c0ad1 is described below
commit 63c0ad1727b0b17201a89dcac8b66c0858e38d8e
Author: Craig L Russell <cr...@oracle.com>
AuthorDate: Fri Jan 12 14:24:46 2018 -0800
Add projects/icla/discuss page
---
www/project/icla/main.rb | 25 ++-
www/project/icla/views/app.html.rb | 5 +-
www/project/icla/views/pages/discuss.js.rb | 247 +++++------------------------
3 files changed, 68 insertions(+), 209 deletions(-)
diff --git a/www/project/icla/main.rb b/www/project/icla/main.rb
index d7b2a2b..df2b853 100755
--- a/www/project/icla/main.rb
+++ b/www/project/icla/main.rb
@@ -64,14 +64,33 @@ end
get '/discuss' do
@view = 'discuss'
+ @user = env.user
# get a complete list of PMC and PPMC names and mail lists
projects = projectsForUser(env.user)
# server data sent to client
- @pmcs = projects['pmcs']
- @ppmcs = projects['ppmcs']
- @pmc_mail = projects['pmcmail']
+ @token = params['token']
+ # not needed for this form but required for other forms
+ @pmcs = []
+ @ppmcs = []
+ @pmc_mail = {}
+
+ # mocked for testing
+ @contributor = {
+ project: 'whimsy',
+ name: 'Joe Blow',
+ email: 'joe@blow.com'
+ }
+ @subject = '[DISCUSS] Invite Joe Blow to become committer '\
+ 'and PMC member for whimsy'
+ comment1 = {member: 'sebb', timestamp: '11/30/2017 15:30:00',
+ comment: 'Seems like a good enough guy'}
+ comment2 = {member: 'rubys', timestamp: '12/04/2017 17:20:00',
+ comment: 'I agree'}
+ comment3 = {member: 'clr', timestamp: '12/06/2017 10:14:00',
+ comment: 'We could do better\nMuch better'}
+ @comments = [comment1, comment2, comment3]
_html :app
end
diff --git a/www/project/icla/views/app.html.rb b/www/project/icla/views/app.html.rb
index b106da4..52e9609 100755
--- a/www/project/icla/views/app.html.rb
+++ b/www/project/icla/views/app.html.rb
@@ -373,7 +373,10 @@ _html lang: 'en', _width: '80' do
_script src: 'app.js'
_.render '#main' do
- _Main data: {pmcs: @pmcs, ppmcs: @ppmcs, pmc_mail: @pmc_mail}, view: @view
+ _Main data: {pmcs: @pmcs, ppmcs: @ppmcs, pmc_mail: @pmc_mail,
+ token: @token, contributor: @contributor, comments: @comments,
+ user: @user, subject: @subject, phase: @phase, votes: @votes},
+ view: @view
end
end
end
diff --git a/www/project/icla/views/pages/discuss.js.rb b/www/project/icla/views/pages/discuss.js.rb
index d10c301..5b84693 100644
--- a/www/project/icla/views/pages/discuss.js.rb
+++ b/www/project/icla/views/pages/discuss.js.rb
@@ -4,142 +4,63 @@ class Discuss < Vue
@alert = nil
# initialize form fields
- @iclaname = ''
- @iclaemail = ''
- @pmc = ''
- @votelink = ''
- @noticelink = ''
-
-# initialize conditional text
- @showPMCVoteLink = false;
- @showPPMCVoteLink = false;
- @voteErrorMessage = '';
- @showVoteErrorMessage = false;
- @showPMCNoticeLink = false;
- @showPPMCNoticeLink = false;
- @noticeErrorMessage = '';
- @showNoticeErrorMessage = false;
+ @user = Server.data.user
+ @pmc = Server.data.contributor[:project]
+ @iclaname = Server.data.contributor[:name]
+ @iclaemail = Server.data.contributor[:email]
+ @token = Server.data.token
+ @comments = Server.data.comments
+ @discussBody = ''
+ @subject = Server.data.subject
+ @debug = true;
end
def render
_p %{
- This application allows PMC and PPMC members to:
- discuss contributors to achieve consensus;
- vote on contributors to become a committer or a PMC or PPMC member; or
- simply invite them to submit an ICLA.
+ This form allows PMC and PPMC members to
+ discuss contributors to achieve consensus.
}
-
- # error messages
- if @alert
- _div.alert.alert_danger do
- _b 'Error: '
- _span @alert
- end
- end
-
+ _b "Project: " + @pmc
+ _p
+ _b "Contributor: " + @iclaname + " (" + @iclaemail + ")"
+ _p
+ _p "Subject: " + @subject
+ _p
#
# Form fields
#
-
_div.form_group do
- _label "Contributor's name:", for: 'iclaname'
- _input.form_control.iclaname! placeholder: 'GivenName FamilyName',
- required: true, value: @iclaname
- end
+ _label "Comment from " + @user, for: 'discussBody'
+ _textarea.form_control rows: 4,
+ placeholder: 'new comment',
+ name: 'discussBody', value: @discussBody,
+ onChange: self.setDiscussBody
+ end
+ @comments.each {|c|
+ _b 'From: ' + c.member + ' Date: ' + c.timestamp
+ _p c.comment
+ }
- _div.form_group do
- _label "Contributor's E-Mail address:", for: 'iclaemail'
- _input.form_control.iclaemail! type: 'email', required: true,
- placeholder: 'user@example.com', onChange: self.setIclaEmail,
- value: @iclaemail
- end
+ _p 'token: ' + @token
+ _p 'comment: ' + @discussBody
- _div.form_group do
- _label "PMC/PPMC", for: 'pmc'
- _select.form_control.pmc! required: true, onChange: self.setPMC, value: @pmc do
- _option ''
- Server.data.pmcs.each do |pmc|
- _option pmc
- end
- _option '---'
- Server.data.ppmcs.each do |ppmc|
- _option ppmc
- end
+ # error messages
+ if @alert
+ _div.alert.alert_danger do
+ _b 'Error: '
+ _span @alert
end
end
- if @showPMCVoteLink
- _p %{
- Fill the following field only if the person was voted by the PMC
- to become a committer.
- Link to the [RESULT][VOTE] message in the mail archives.
- }
- end
- if @showPPMCVoteLink
- _p %{
- Fill the following field only if the person is an initial
- committer on a new project accepted for incubation, or the person
- has been voted as a committer on a podling.
- For new incubator projects use the
- http://wiki.apache.org/incubator/XXXProposal link; for existing
- podlings link to the [RESULT][VOTE] message in the mail archives.
- }
- end
- if @showPMCVoteLink or @showPPMCVoteLink
- _ 'Navigate to '
- _a "ponymail", href: "https://lists.apache.org"
- _ ', select the appropriate message, right-click PermaLink, copy link'
- _ ' to the clip-board, and paste the link here.'
- _p
- _div.form_group do
- _label "VOTE link", for: 'votelink'
- _input.form_control.votelink! type: 'url', onChange: self.setVoteLink,
- value: @votelink
- end
- if @showVoteErrorMessage
- _div.alert.alert_danger do
- _span @voteErrorMessage
- end
- end
-
- end
- if @showPMCNoticeLink
- _p %{
- Fill the following field only if the person was voted by the PMC
- to become a PMC member.
- Link to the [NOTICE] message sent to the board.
- The message must have been in the archives for at least 72 hours.
- }
- end
- if @showPPMCNoticeLink
- _p %{
- Fill the following field only if the person was voted by the
- PPMC to be a PPMC member.
- Link to the [NOTICE] message sent to the incubator PMC.
- The message must have been in the archives for at least 72 hours.
- }
- end
- if @showPMCNoticeLink or @showPPMCNoticeLink
- _div.form_group do
- _label "NOTICE link", for: 'noticelink'
- _input.form_control.noticelink! type: 'url', onChange: self.setNoticeLink,
- value: @noticelink
- end
- end
- if @showNoticeErrorMessage
- _div.alert.alert_danger do
- _span @noticeErrorMessage
- end
- end
#
# Submission button
#
_p do
- _button.btn.btn_primary 'Preview Invitation', disabled: @disabled,
- onClick: self.previewInvitation
+ _button.btn.btn_primary 'Submit comment', disabled: @disabled,
+ onClick: self.submitComment
end
#
@@ -184,103 +105,19 @@ class Discuss < Vue
end
end
-
end
- # when the form is initially loaded, set the focus on the iclaname field
+ # when the form is initially loaded, set the focus on the discussBody field
def mounted()
- document.getElementById('iclaname').focus()
+ document.getElementById('discussBody').focus()
end
#
# field setters
#
- def setIclaName(event)
- @iclaname = event.target.value
- self.checkValidity()
- end
-
- def setIclaEmail(event)
- @iclaemail = event.target.value
- self.checkValidity()
- end
-
- def setPMC(event)
- @pmc = event.target.value
- @showPMCVoteLink = Server.data.pmcs.include? @pmc
- @showPPMCVoteLink = Server.data.ppmcs.include? @pmc
- @showPMCNoticeLink = Server.data.pmcs.include? @pmc
- @showPPMCNoticeLink = Server.data.ppmcs.include? @pmc
- @showVoteErrorMessage = false;
- @showNoticeErrorMessage = false;
- checkVoteLink() if document.getElementById('votelink');
- checkNoticeLink() if document.getElementById('noticelink');
- self.checkValidity()
- end
-
- def setVoteLink(event)
- @votelink = event.target.value
- @showVoteErrorMessage = false
- checkVoteLink()
- self.checkValidity()
- end
-
- def checkVoteLink()
- document.getElementById('votelink').setCustomValidity('');
- if (@votelink)
- # verify that the link refers to lists.apache.org message on the project list
- if not @votelink=~ /.*lists\.apache\.org.*/
- @voteErrorMessage = "Error: Please link to\
- a message via lists.apache.org"
- @showVoteErrorMessage = true;
- end
- if not @votelink=~ /.*private\@#{Server.data.pmc_mail[@pmc]}(\.incubator)?\.apache\.org.*/
- @voteErrorMessage = "Error: Please link to\
- the [RESULT][VOTE] message sent to the private list."
- @showVoteErrorMessage = true;
- end
- if @showVoteErrorMessage
- document.getElementById('votelink').setCustomValidity(@voteErrorMessage);
- end
- end
- end
-
- def setNoticeLink(event)
- @noticelink = event.target.value
- @showNoticeErrorMessage = false;
- checkNoticeLink()
- self.checkValidity()
- end
-
- def checkNoticeLink()
- document.getElementById('noticelink').setCustomValidity('');
- # verify that the link refers to lists.apache.org message on the proper list
- if (@noticelink)
- if not @noticelink=~ /.*lists\.apache\.org.*/
- @noticeErrorMessage = "Error: please link to\
- a message via lists.apache.org"
- @showNoticeErrorMessage = true;
- end
- if @showPMCNoticeLink and not @noticelink=~ /.*board\@apache\.org.*/
- @noticeErrorMessage = "Error: please link to\
- the NOTICE message sent to the board list."
- @showNoticeErrorMessage = true;
- end
- if @showPPMCNoticeLink and not @noticelink=~ /.*private\@incubator\.apache\.org.*/
- @noticeErrorMessage = "Error: please link to\
- the NOTICE message sent to the incubator private list."
- @showNoticeErrorMessage = true;
- end
- if @showNoticeErrorMessage
- document.getElementById('noticelink').setCustomValidity(@noticeErrorMessage);
- end
- end
- end
-
- def setInvitation(event)
- @invitation = event.target.value
- self.checkValidity()
+ def setDiscussBody(event)
+ @discussBody = event.target.value
end
#
@@ -289,9 +126,9 @@ class Discuss < Vue
# client side field validations
def checkValidity()
- @disabled = !%w(iclaname iclaemail pmc votelink noticelink).all? do |id|
+ @disabled = !%w(discussBody).all? do |id|
element = document.getElementById(id)
- (not element) or element.checkValidity()
+ not element.empty?
end
end
--
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <co...@whimsical.apache.org>'].