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>.