You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by ru...@apache.org on 2017/11/19 19:41:37 UTC
[whimsy] branch master updated (33a782b -> b782f8c)
This is an automated email from the ASF dual-hosted git repository.
rubys pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git.
from 33a782b Doc for ASF LDAP attrs
new 6bd0778 block access to legal name
new b782f8c create a separate class to encapsulate user state
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
www/board/agenda/routes.rb | 6 +++-
www/board/agenda/views/app.js.rb | 1 +
www/board/agenda/views/buttons/add-comment.js.rb | 6 ++--
www/board/agenda/views/buttons/approve.js.rb | 4 +--
www/board/agenda/views/buttons/attend.js.rb | 4 +--
www/board/agenda/views/buttons/commit.js.rb | 2 +-
www/board/agenda/views/buttons/email.js.rb | 4 +--
.../agenda/views/elements/additional-info.js.rb | 4 +--
www/board/agenda/views/keyboard.js.rb | 4 +--
www/board/agenda/views/layout/footer.js.rb | 4 +--
www/board/agenda/views/models/agenda.js.rb | 16 +++++-----
www/board/agenda/views/models/pending.js.rb | 28 -----------------
www/board/agenda/views/models/user.js.rb | 36 ++++++++++++++++++++++
www/board/agenda/views/pages/backchannel.js.rb | 2 +-
www/board/agenda/views/pages/fy23.js.rb | 6 ++--
www/board/agenda/views/pages/help.js.rb | 4 +--
www/board/agenda/views/pages/queue.js.rb | 6 ++--
www/board/agenda/views/pages/shepherd.js.rb | 4 +--
www/board/agenda/views/router.js.rb | 2 +-
www/roster/models/committer.rb | 5 ++-
www/roster/views/person/fullname.js.rb | 2 +-
21 files changed, 83 insertions(+), 67 deletions(-)
create mode 100644 www/board/agenda/views/models/user.js.rb
--
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <co...@whimsical.apache.org>'].
[whimsy] 02/02: create a separate class to encapsulate user state
Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rubys pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
commit b782f8ce1f28caffd17e56ad8262163b58a6afa6
Author: Sam Ruby <ru...@intertwingly.net>
AuthorDate: Sun Nov 19 14:41:17 2017 -0500
create a separate class to encapsulate user state
---
www/board/agenda/routes.rb | 6 +++-
www/board/agenda/views/app.js.rb | 1 +
www/board/agenda/views/buttons/add-comment.js.rb | 6 ++--
www/board/agenda/views/buttons/approve.js.rb | 4 +--
www/board/agenda/views/buttons/attend.js.rb | 4 +--
www/board/agenda/views/buttons/commit.js.rb | 2 +-
www/board/agenda/views/buttons/email.js.rb | 4 +--
.../agenda/views/elements/additional-info.js.rb | 4 +--
www/board/agenda/views/keyboard.js.rb | 4 +--
www/board/agenda/views/layout/footer.js.rb | 4 +--
www/board/agenda/views/models/agenda.js.rb | 16 +++++-----
www/board/agenda/views/models/pending.js.rb | 28 -----------------
www/board/agenda/views/models/user.js.rb | 36 ++++++++++++++++++++++
www/board/agenda/views/pages/backchannel.js.rb | 2 +-
www/board/agenda/views/pages/fy23.js.rb | 6 ++--
www/board/agenda/views/pages/help.js.rb | 4 +--
www/board/agenda/views/pages/queue.js.rb | 6 ++--
www/board/agenda/views/pages/shepherd.js.rb | 4 +--
www/board/agenda/views/router.js.rb | 2 +-
19 files changed, 78 insertions(+), 65 deletions(-)
diff --git a/www/board/agenda/routes.rb b/www/board/agenda/routes.rb
index ecfd710..b1a4745 100755
--- a/www/board/agenda/routes.rb
+++ b/www/board/agenda/routes.rb
@@ -184,7 +184,11 @@ get %r{/(\d\d\d\d-\d\d-\d\d)/(.*)} do |date, path|
@appmtime = Wunderbar::Asset.convert("#{settings.views}/app.js.rb").mtime.to_i
if path == 'bootstrap.html'
- @server[:userid] = nil unless env.password
+ unless env.password
+ @server[:userid] = nil
+ @server[:role] = nil
+ end
+
@page[:parsed] = [
{title: 'Roll Call', timestamp: @page[:parsed].first['timestamp']}
]
diff --git a/www/board/agenda/views/app.js.rb b/www/board/agenda/views/app.js.rb
index ebc1270..0086f5f 100644
--- a/www/board/agenda/views/app.js.rb
+++ b/www/board/agenda/views/app.js.rb
@@ -68,6 +68,7 @@ require_relative 'models/minutes'
require_relative 'models/chat'
require_relative 'models/jira'
require_relative 'models/pending'
+require_relative 'models/user'
require_relative 'models/posted'
require_relative 'models/comments'
require_relative 'models/jsonstorage'
diff --git a/www/board/agenda/views/buttons/add-comment.js.rb b/www/board/agenda/views/buttons/add-comment.js.rb
index 14a846c..9b6d45d 100644
--- a/www/board/agenda/views/buttons/add-comment.js.rb
+++ b/www/board/agenda/views/buttons/add-comment.js.rb
@@ -43,7 +43,7 @@ class AddComment < Vue
_textarea.comment_text! value: @comment, label: 'Comment',
placeholder: 'comment', rows: 5, disabled: @disabled
- if Pending.role == :director and @@item.attach =~ /^[A-Z]+$/
+ if User.role == :director and @@item.attach =~ /^[A-Z]+$/
_input.flag! type: 'checkbox',
label: 'item requires discussion or follow up',
onClick: self.flag, checked: @checked
@@ -85,7 +85,7 @@ class AddComment < Vue
agenda: Agenda.file,
attach: @@item.attach,
initials: document.getElementById("comment-initials").value ||
- Pending.initials,
+ User.initials,
comment: @comment
}
@@ -103,7 +103,7 @@ class AddComment < Vue
data = {
agenda: Agenda.file,
- initials: Pending.initials,
+ initials: User.initials,
attach: @@item.attach,
request: (event.target.checked ? 'flag' : 'unflag')
}
diff --git a/www/board/agenda/views/buttons/approve.js.rb b/www/board/agenda/views/buttons/approve.js.rb
index d6cabbf..c9205dd 100644
--- a/www/board/agenda/views/buttons/approve.js.rb
+++ b/www/board/agenda/views/buttons/approve.js.rb
@@ -18,7 +18,7 @@ class Approve < Vue
'unapprove'
elsif Pending.unapproved.include? @@item.attach
'approve'
- elsif @@item.approved and @@item.approved.include? Pending.initials
+ elsif @@item.approved and @@item.approved.include? User.initials
'unapprove'
else
'approve'
@@ -29,7 +29,7 @@ class Approve < Vue
def click(event)
data = {
agenda: Agenda.file,
- initials: Pending.initials,
+ initials: User.initials,
attach: @@item.attach,
request: request
}
diff --git a/www/board/agenda/views/buttons/attend.js.rb b/www/board/agenda/views/buttons/attend.js.rb
index bf6c2a3..9a5d6cc 100644
--- a/www/board/agenda/views/buttons/attend.js.rb
+++ b/www/board/agenda/views/buttons/attend.js.rb
@@ -13,7 +13,7 @@ class Attend < Vue
# match person by either userid or name
def created()
- person = @@item.people[Pending.userid]
+ person = @@item.people[User.userid]
if person
@attending = person.attending
else
@@ -30,7 +30,7 @@ class Attend < Vue
agenda: Agenda.file,
action: (@attending ? 'regrets' : 'attend'),
name: Pending.username,
- userid: Pending.userid
+ userid: User.userid
}
@disabled = true
diff --git a/www/board/agenda/views/buttons/commit.js.rb b/www/board/agenda/views/buttons/commit.js.rb
index 0a23d78..34c2b4e 100644
--- a/www/board/agenda/views/buttons/commit.js.rb
+++ b/www/board/agenda/views/buttons/commit.js.rb
@@ -101,7 +101,7 @@ class Commit < Vue
# on click, disable the input fields and buttons and submit
def click(event)
@disabled = true
- post 'commit', message: @message, initials: Pending.initials do |response|
+ post 'commit', message: @message, initials: User.initials do |response|
Agenda.load response.agenda, response.digest
Pending.load response.pending
@disabled = false
diff --git a/www/board/agenda/views/buttons/email.js.rb b/www/board/agenda/views/buttons/email.js.rb
index 1d3a58e..d5bff4f 100644
--- a/www/board/agenda/views/buttons/email.js.rb
+++ b/www/board/agenda/views/buttons/email.js.rb
@@ -12,8 +12,8 @@ class Email < Vue
# the report, otherwise render the text as a simple link.
def mailto_class()
if
- Pending.firstname and @@item.shepherd and
- Pending.firstname.start_with? @@item.shepherd.downcase()
+ User.firstname and @@item.shepherd and
+ User.firstname.start_with? @@item.shepherd.downcase()
then
return 'btn-primary'
else
diff --git a/www/board/agenda/views/elements/additional-info.js.rb b/www/board/agenda/views/elements/additional-info.js.rb
index ec193a4..3f711f7 100644
--- a/www/board/agenda/views/elements/additional-info.js.rb
+++ b/www/board/agenda/views/elements/additional-info.js.rb
@@ -77,7 +77,7 @@ class AdditionalInfo < Vue
# pending comments
if @@item.pending
_h5 'Pending Comment', id: "#{@prefix}pending"
- _pre.comment Flow.comment(@@item.pending, Pending.initials)
+ _pre.comment Flow.comment(@@item.pending, User.initials)
end
# historical comments
@@ -115,7 +115,7 @@ class AdditionalInfo < Vue
# pending comments
if @@item.pending
_h4 'Pending Comment', id: "#{@prefix}pending"
- _pre.comment Flow.comment(@@item.pending, Pending.initials)
+ _pre.comment Flow.comment(@@item.pending, User.initials)
end
end
end
diff --git a/www/board/agenda/views/keyboard.js.rb b/www/board/agenda/views/keyboard.js.rb
index 67114a6..e0d2889 100644
--- a/www/board/agenda/views/keyboard.js.rb
+++ b/www/board/agenda/views/keyboard.js.rb
@@ -51,7 +51,7 @@ class Keyboard
return false
elsif event.keyCode == 'S'.ord
if event.shiftKey
- Pending.role = :secretary
+ User.role = :secretary
Main.refresh()
else
link = ~"#shepherd"[0]
@@ -60,7 +60,7 @@ class Keyboard
return false
elsif event.keyCode == 'X'.ord
if Main.item.attach and Minutes.started and not Minutes.complete
- Chat.changeTopic user: Pending.userid, link: Main.item.href,
+ Chat.changeTopic user: User.userid, link: Main.item.href,
text: "current topic: #{Main.item.title}"
return false
end
diff --git a/www/board/agenda/views/layout/footer.js.rb b/www/board/agenda/views/layout/footer.js.rb
index 0f1d68d..4e30ce8 100644
--- a/www/board/agenda/views/layout/footer.js.rb
+++ b/www/board/agenda/views/layout/footer.js.rb
@@ -20,7 +20,7 @@ class Footer < Vue
if @@options.traversal == :queue
prefix = 'queue/'
- while link and not link.ready_for_review(Pending.initials)
+ while link and not link.ready_for_review(User.initials)
link = link.prev
end
link ||= {href: '../queue', title: 'Queue'}
@@ -92,7 +92,7 @@ class Footer < Vue
link = @@item.next
if @@options.traversal == :queue
- while link and not link.ready_for_review(Pending.initials)
+ while link and not link.ready_for_review(User.initials)
link = link.next
end
link ||= {href: 'queue', title: 'Queue'}
diff --git a/www/board/agenda/views/models/agenda.js.rb b/www/board/agenda/views/models/agenda.js.rb
index 196874b..a1899f9 100644
--- a/www/board/agenda/views/models/agenda.js.rb
+++ b/www/board/agenda/views/models/agenda.js.rb
@@ -252,7 +252,7 @@ class Agenda
list << {form: Post, text: 'add resolution'}
end
- if Pending.role == :secretary
+ if User.role == :secretary
if Server.drafts.include? Agenda.file.sub('agenda', 'minutes')
list << {form: PublishMinutes}
elsif Minutes.ready_to_post_draft
@@ -322,7 +322,7 @@ class Agenda
def self.shepherd
shepherd = nil
- firstname = Pending.firstname.downcase()
+ firstname = User.firstname.downcase()
Agenda.index.each do |item|
if
item.shepherd and
@@ -405,9 +405,9 @@ class Agenda
else
SelectActions
end
- elsif @title == 'Roll Call' and Pending.role == :secretary
+ elsif @title == 'Roll Call' and User.role == :secretary
RollCall
- elsif @title == 'Adjournment' and Pending.role == :secretary
+ elsif @title == 'Adjournment' and User.role == :secretary
Adjournment
else
Report
@@ -430,7 +430,7 @@ class Agenda
list << {button: Attend} if @title == 'Roll Call'
if @attach =~ /^(\d|7?[A-Z]+|4[A-Z])$/
- if Pending.role == :secretary or not Minutes.complete
+ if User.role == :secretary or not Minutes.complete
if self.missing
list << {form: Post, text: 'post report'}
elsif @attach =~ /^7\w/
@@ -441,12 +441,12 @@ class Agenda
end
end
- if Pending.role == :director
+ if User.role == :director
unless self.missing or @comments === undefined or Minutes.complete
list << {button: Approve}
end
- elsif Pending.role == :secretary
+ elsif User.role == :secretary
if @attach =~ /^7\w/
list << {form: Vote}
elsif Minutes.get(@title)
@@ -480,7 +480,7 @@ class Agenda
return true if Minutes.started and self.missing
return false unless @flagged_by
return false if @flagged_by.length == 1 and
- @flagged_by.first == Pending.initials and
+ @flagged_by.first == User.initials and
Pending.unflagged.include?(@attach)
return ! @flagged_by.empty?
end
diff --git a/www/board/agenda/views/models/pending.js.rb b/www/board/agenda/views/models/pending.js.rb
index 1263313..a7cacff 100644
--- a/www/board/agenda/views/models/pending.js.rb
+++ b/www/board/agenda/views/models/pending.js.rb
@@ -64,34 +64,6 @@ class Pending
Server.pending.seen || {}
end
- def self.userid
- Server.pending.userid || Server.userid
- end
-
- def self.initials
- Server.pending.initials || Server.initials
- end
-
- def self.firstname
- Server.pending.firstname || Server.firstname
- end
-
- def self.username
- Server.pending.username || Server.username
- end
-
- def self.role
- if Server.pending and Server.pending.role
- Server.pending.role
- else
- Server.role
- end
- end
-
- def self.role=(role)
- Server.pending.role = role
- end
-
def self.status
Server.pending.status || []
end
diff --git a/www/board/agenda/views/models/user.js.rb b/www/board/agenda/views/models/user.js.rb
new file mode 100644
index 0000000..c3148dc
--- /dev/null
+++ b/www/board/agenda/views/models/user.js.rb
@@ -0,0 +1,36 @@
+#
+# Convenience access to user information (currently residing off of the
+# Server.pending data structure).
+#
+
+class User
+ def self.id
+ Server.pending.userid || Server.userid
+ end
+
+ def self.initials
+ Server.pending.initials || Server.initials
+ end
+
+ def self.firstname
+ Server.pending.firstname || Server.firstname
+ end
+
+ def self.username
+ Server.pending.username || Server.username
+ end
+
+ def self.role
+ if Server.role
+ Server.role
+ elsif Server.pending and Server.pending.role
+ Server.pending.role
+ else
+ :guest
+ end
+ end
+
+ def self.role=(role)
+ Server.role = role
+ end
+end
diff --git a/www/board/agenda/views/pages/backchannel.js.rb b/www/board/agenda/views/pages/backchannel.js.rb
index f4a3fe6..08b2d2c 100644
--- a/www/board/agenda/views/pages/backchannel.js.rb
+++ b/www/board/agenda/views/pages/backchannel.js.rb
@@ -56,7 +56,7 @@ class Backchannel < Vue
# highlight mentions of my id
def mention(text)
- return text.gsub(/<.*?>|\b(#{Pending.userid})\b/) do |match|
+ return text.gsub(/<.*?>|\b(#{User.userid})\b/) do |match|
match[0] == '<' ? match : "<span class=mention>#{match}</span>"
end
end
diff --git a/www/board/agenda/views/pages/fy23.js.rb b/www/board/agenda/views/pages/fy23.js.rb
index 113f20d..c09f3e9 100644
--- a/www/board/agenda/views/pages/fy23.js.rb
+++ b/www/board/agenda/views/pages/fy23.js.rb
@@ -17,7 +17,7 @@ class FY23 < Vue
chairman: 10,
}
- if Pending.role == :secretary or not Minutes.started
+ if User.role == :secretary or not Minutes.started
@disabled = false
else
@disabled = true
@@ -292,7 +292,7 @@ class FY23 < Vue
event.target.value = @budget[event.target.id].toLocaleString()
self.recalc()
- if Pending.role == :secretary and Minutes.started
+ if User.role == :secretary and Minutes.started
post 'budget', agenda: Agenda.file, budget: @budget do |budget|
@budget = budget if budget
end
@@ -319,7 +319,7 @@ class FY23 < Vue
end
@budget = budget
- @disabled = true unless Pending.role == :secretary
+ @disabled = true unless User.role == :secretary
end
end
end
diff --git a/www/board/agenda/views/pages/help.js.rb b/www/board/agenda/views/pages/help.js.rb
index b7ac828..e26eb75 100644
--- a/www/board/agenda/views/pages/help.js.rb
+++ b/www/board/agenda/views/pages/help.js.rb
@@ -56,7 +56,7 @@ class Help < Vue
%w(Secretary Director Guest).each do |role|
_div do
_input type: 'radio', name: 'role', value: role.downcase(),
- checked: role.downcase() == Pending.role, onChange: self.setRole
+ checked: role.downcase() == User.role, onChange: self.setRole
_ role
end
end
@@ -64,7 +64,7 @@ class Help < Vue
end
def setRole(event)
- Pending.role = event.target.value
+ User.role = event.target.value
Main.refresh()
end
end
diff --git a/www/board/agenda/views/pages/queue.js.rb b/www/board/agenda/views/pages/queue.js.rb
index 12835c1..285d94f 100644
--- a/www/board/agenda/views/pages/queue.js.rb
+++ b/www/board/agenda/views/pages/queue.js.rb
@@ -13,7 +13,7 @@ class Queue < Vue
def render
_div.col_xs_12 do
- if Pending.role == :director
+ if User.role == :director
# Approvals
_h4 'Approvals'
_p.col_xs_12 do
@@ -73,7 +73,7 @@ class Queue < Vue
end
# Ready
- if Pending.role == :director and not pending.ready.empty?
+ if User.role == :director and not pending.ready.empty?
_div.row.col_xs_12 { _hr }
_h4 'Ready for review'
@@ -126,7 +126,7 @@ class Queue < Vue
action = true
end
- if not action and item.ready_for_review(Pending.initials)
+ if not action and item.ready_for_review(User.initials)
result.ready << item
end
end
diff --git a/www/board/agenda/views/pages/shepherd.js.rb b/www/board/agenda/views/pages/shepherd.js.rb
index 00c11ee..f4bc312 100644
--- a/www/board/agenda/views/pages/shepherd.js.rb
+++ b/www/board/agenda/views/pages/shepherd.js.rb
@@ -31,7 +31,7 @@ class Shepherd < Vue
# flag action
if item.missing or not item.comments.empty?
if item.attach =~ /^[A-Z]+$/
- mine = (shepherd == Pending.firstname ? 'btn-primary' : 'btn-link')
+ mine = (shepherd == User.firstname ? 'btn-primary' : 'btn-link')
_div.shepherd do
_button.btn (item.flagged ? 'unflag' : 'flag'), class: mine,
@@ -91,7 +91,7 @@ class Shepherd < Vue
def click(event)
data = {
agenda: Agenda.file,
- initials: Pending.initials,
+ initials: User.initials,
attach: event.target.getAttribute('data-attach'),
request: event.target.textContent
}
diff --git a/www/board/agenda/views/router.js.rb b/www/board/agenda/views/router.js.rb
index 9897f0f..fb30202 100644
--- a/www/board/agenda/views/router.js.rb
+++ b/www/board/agenda/views/router.js.rb
@@ -26,7 +26,7 @@ class Router
elsif path == 'queue'
item = {view: Queue, title: 'Queued approvals and comments'}
- item.title = 'Queued comments' unless Pending.role == :director
+ item.title = 'Queued comments' unless User.role == :director
elsif path == 'flagged'
item = {view: Flagged, title: 'Flagged reports'}
--
To stop receiving notification emails like this one, please contact
"commits@whimsical.apache.org" <co...@whimsical.apache.org>.
[whimsy] 01/02: block access to legal name
Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rubys pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
commit 6bd0778b0aec2bec3e0767cdb7710c91c21c451d
Author: Sam Ruby <ru...@intertwingly.net>
AuthorDate: Sat Nov 18 21:20:35 2017 -0500
block access to legal name
---
www/roster/models/committer.rb | 5 ++++-
www/roster/views/person/fullname.js.rb | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/www/roster/models/committer.rb b/www/roster/models/committer.rb
index d577193..85c7177 100644
--- a/www/roster/models/committer.rb
+++ b/www/roster/models/committer.rb
@@ -22,7 +22,10 @@ class Committer
if person.icla
name[:public_name] = person.public_name
- name[:legal_name] = person.icla.legal_name
+
+ if id == env.user or ASF::Person.find(env.user).asf_member?
+ name[:legal_name] = person.icla.legal_name
+ end
end
unless person.attrs['cn'].empty?
diff --git a/www/roster/views/person/fullname.js.rb b/www/roster/views/person/fullname.js.rb
index c75cd8a..81e59b4 100644
--- a/www/roster/views/person/fullname.js.rb
+++ b/www/roster/views/person/fullname.js.rb
@@ -39,7 +39,7 @@ class PersonName < Vue
else
if
- name.public_name==name.legal_name and
+ (not name.legal_name or name.public_name==name.legal_name) and
name.public_name==name.ldap
then
_span committer.name.public_name
--
To stop receiving notification emails like this one, please contact
"commits@whimsical.apache.org" <co...@whimsical.apache.org>.