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 2021/08/11 17:32:40 UTC

[whimsy] branch master updated: Family First support in secretary workbench (#120)

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 58e35df  Family First support in secretary workbench (#120)
58e35df is described below

commit 58e35df90f4387ba2de09e50e3c50eb99c69f736
Author: Craig L Russell <ap...@gmail.com>
AuthorDate: Wed Aug 11 10:32:35 2021 -0700

    Family First support in secretary workbench (#120)
    
    * Family First support in secretary workbench
    
    * Fix file name algorithm
    
    * Add LDAP sn and givenName fields to icla form
    
    * Fix obvious errors
    
    - spurious trailing )
    - duplicate function name
    
    * Update icla.js.rb
    
    Fix calling protocol for genldapsn and genldapgivenname
    
    * Make split of public name explicit split(" ")
    
    * remove dependency on puma
    
    * Family first flag implementation for review after testing
    
    * Disable LDAP icla.js.rb form fields
    
    Co-authored-by: Sebb <se...@apache.org>
---
 www/secretary/iclaparser.rb                    |  1 +
 www/secretary/workbench/views/forms/icla.js.rb | 93 ++++++++++++++++++++++++--
 2 files changed, 88 insertions(+), 6 deletions(-)

diff --git a/www/secretary/iclaparser.rb b/www/secretary/iclaparser.rb
index b35bc94..973a6c5 100644
--- a/www/secretary/iclaparser.rb
+++ b/www/secretary/iclaparser.rb
@@ -116,6 +116,7 @@ module ICLAParser
   NAME2FIELD = {
     'fullname' => :FullName,
     'publicname' => :PublicName,
+    'familyfirst' => :FamilyFirst,
     'mailingaddress' => :MailingAddress,
     'mailingaddress2' => :MailingAddress2,
     'postaladdress' => :MailingAddress,
diff --git a/www/secretary/workbench/views/forms/icla.js.rb b/www/secretary/workbench/views/forms/icla.js.rb
index 5ddb5df..6480860 100644
--- a/www/secretary/workbench/views/forms/icla.js.rb
+++ b/www/secretary/workbench/views/forms/icla.js.rb
@@ -31,7 +31,8 @@ class ICLA < Vue
           _th 'Real Name'
           _td do
             _input name: 'realname', value: @realname, required: true,
-               disabled: (@filed or @pdfbusy), onChange: self.changeRealName
+               disabled: (@filed or @pdfbusy),
+               onChange: self.changeRealName, onBlur: self.changeRealName
           end
         end
 
@@ -39,7 +40,18 @@ class ICLA < Vue
           _th 'Public Name'
           _td do
             _input name: 'pubname', value: @pubname, required: true,
-              disabled: (@filed or @pdfbusy), onFocus: lambda {@pubname ||= @realname}
+              disabled: (@filed or @pdfbusy), onFocus: lambda {@pubname ||= @realname},
+              onChange: self.changePublicName, onBlur: self.changePublicName
+          end
+        end
+
+        _tr do
+          _th 'Family First'
+          _td do
+            _input name: 'familyfirst', required: true,
+              type: 'checkbox', checked: @familyfirst,
+              disabled: (@filed or @pdfbusy),
+              onChange: self.changeFamilyFirst, onBlur: self.changeFamilyFirst
           end
         end
 
@@ -69,6 +81,23 @@ class ICLA < Vue
           end
         end
 
+# May be useful in future
+#       _tr do
+#         _th 'LDAP givenname'
+#         _td do
+#           _input name: 'ldapgivenname', value: @ldapgivenname,
+#             disabled: (@filed or @pdfbusy)
+#         end
+#       end
+
+#       _tr do
+#         _th 'LDAP sn'
+#         _td do
+#           _input name: 'ldapsn', value: @ldapsn,
+#             disabled: (@filed or @pdfbusy)
+#         end
+#       end
+#
         _tr do
           if @project
             _th do
@@ -122,7 +151,11 @@ class ICLA < Vue
 
     @realname = name
     @pubname = parsed.PublicName || name
-    @filename = self.genfilename(name)
+    @pubnamearray = @pubname.split(" ")
+    @familyfirst = parsed.FamilyFirst || false
+    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
+    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
+    @filename = self.genfilename(name, @familyfirst)
     @email = parsed.EMail || @@headers.from
     @user = parsed.ApacheID || ''
     project = parsed.Project
@@ -202,14 +235,62 @@ class ICLA < Vue
     end
   end
 
+  # when real name changes, update file name
   def changeRealName(event)
     @realname = event.target.value;
-    @filename = self.genfilename(event.target.value)
+    @filename = self.genfilename(@realname, @familyfirst)
+  end
+
+  # when family first changes, update file name and LDAP default fields
+  def changeFamilyFirst(event)
+    @filename = self.genfilename(@realname, @familyfirst)
+    @pubnamearray = @pubname.split(' ')
+    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
+    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
+  end
+
+  # when public name changes, update LDAP default fields
+  def changePublicName(event)
+    @pubname = event.target.value;
+    @pubnamearray = @pubname.split(' ')
+    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
+    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
   end
 
   # generate file name from the real name
-  def genfilename(realname)
-    return asciize(realname.strip()).downcase().gsub(/\W+/, '-')
+  def genfilename(realname, familyfirst)
+    nominalname = asciize(realname.strip()).downcase().gsub(/\W+/, '-')
+    if !familyfirst
+      return nominalname
+    else
+      # compute file name with family first; move first name to last
+      namearray = nominalname.split("-")
+      namearray.push(namearray[0])
+      namearray.shift()
+      return namearray.join("-")
+    end
+  end
+
+  # generate LDAP sn from public name
+  # simply return either the first or last name
+  def genldapsn(pnamearray, ffirst)
+    if ffirst
+      return pnamearray[0]
+    else
+      return pnamearray[-1]
+    end
+  end
+
+  # generate LDAP givenName from public name
+  # simply return the remainder after removing either the first or last name
+  def genldapgivenname(pnamearray, ffirst)
+    if ffirst
+      pnamearray.shift()
+      return pnamearray.join(' ')
+    else
+      pnamearray.pop()
+      return pnamearray.join(' ')
+    end
   end
 
   # when leaving an input field, trigger change event (for Safari)

Re: [whimsy] branch master updated: Family First support in secretary workbench (#120)

Posted by sebb <se...@gmail.com>.
On Wed, 11 Aug 2021 at 18:32, <cl...@apache.org> wrote:
>
> 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

Why have you ignored my veto?

You have still not provided any evidence as to what benefit the FF
flag provides.

Please revert the code until this is properly resolved.

Thanks.

>
> The following commit(s) were added to refs/heads/master by this push:
>      new 58e35df  Family First support in secretary workbench (#120)
> 58e35df is described below
>
> commit 58e35df90f4387ba2de09e50e3c50eb99c69f736
> Author: Craig L Russell <ap...@gmail.com>
> AuthorDate: Wed Aug 11 10:32:35 2021 -0700
>
>     Family First support in secretary workbench (#120)
>
>     * Family First support in secretary workbench
>
>     * Fix file name algorithm
>
>     * Add LDAP sn and givenName fields to icla form
>
>     * Fix obvious errors
>
>     - spurious trailing )
>     - duplicate function name
>
>     * Update icla.js.rb
>
>     Fix calling protocol for genldapsn and genldapgivenname
>
>     * Make split of public name explicit split(" ")
>
>     * remove dependency on puma
>
>     * Family first flag implementation for review after testing
>
>     * Disable LDAP icla.js.rb form fields
>
>     Co-authored-by: Sebb <se...@apache.org>
> ---
>  www/secretary/iclaparser.rb                    |  1 +
>  www/secretary/workbench/views/forms/icla.js.rb | 93 ++++++++++++++++++++++++--
>  2 files changed, 88 insertions(+), 6 deletions(-)
>
> diff --git a/www/secretary/iclaparser.rb b/www/secretary/iclaparser.rb
> index b35bc94..973a6c5 100644
> --- a/www/secretary/iclaparser.rb
> +++ b/www/secretary/iclaparser.rb
> @@ -116,6 +116,7 @@ module ICLAParser
>    NAME2FIELD = {
>      'fullname' => :FullName,
>      'publicname' => :PublicName,
> +    'familyfirst' => :FamilyFirst,
>      'mailingaddress' => :MailingAddress,
>      'mailingaddress2' => :MailingAddress2,
>      'postaladdress' => :MailingAddress,
> diff --git a/www/secretary/workbench/views/forms/icla.js.rb b/www/secretary/workbench/views/forms/icla.js.rb
> index 5ddb5df..6480860 100644
> --- a/www/secretary/workbench/views/forms/icla.js.rb
> +++ b/www/secretary/workbench/views/forms/icla.js.rb
> @@ -31,7 +31,8 @@ class ICLA < Vue
>            _th 'Real Name'
>            _td do
>              _input name: 'realname', value: @realname, required: true,
> -               disabled: (@filed or @pdfbusy), onChange: self.changeRealName
> +               disabled: (@filed or @pdfbusy),
> +               onChange: self.changeRealName, onBlur: self.changeRealName
>            end
>          end
>
> @@ -39,7 +40,18 @@ class ICLA < Vue
>            _th 'Public Name'
>            _td do
>              _input name: 'pubname', value: @pubname, required: true,
> -              disabled: (@filed or @pdfbusy), onFocus: lambda {@pubname ||= @realname}
> +              disabled: (@filed or @pdfbusy), onFocus: lambda {@pubname ||= @realname},
> +              onChange: self.changePublicName, onBlur: self.changePublicName
> +          end
> +        end
> +
> +        _tr do
> +          _th 'Family First'
> +          _td do
> +            _input name: 'familyfirst', required: true,
> +              type: 'checkbox', checked: @familyfirst,
> +              disabled: (@filed or @pdfbusy),
> +              onChange: self.changeFamilyFirst, onBlur: self.changeFamilyFirst
>            end
>          end
>
> @@ -69,6 +81,23 @@ class ICLA < Vue
>            end
>          end
>
> +# May be useful in future
> +#       _tr do
> +#         _th 'LDAP givenname'
> +#         _td do
> +#           _input name: 'ldapgivenname', value: @ldapgivenname,
> +#             disabled: (@filed or @pdfbusy)
> +#         end
> +#       end
> +
> +#       _tr do
> +#         _th 'LDAP sn'
> +#         _td do
> +#           _input name: 'ldapsn', value: @ldapsn,
> +#             disabled: (@filed or @pdfbusy)
> +#         end
> +#       end
> +#
>          _tr do
>            if @project
>              _th do
> @@ -122,7 +151,11 @@ class ICLA < Vue
>
>      @realname = name
>      @pubname = parsed.PublicName || name
> -    @filename = self.genfilename(name)
> +    @pubnamearray = @pubname.split(" ")
> +    @familyfirst = parsed.FamilyFirst || false
> +    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
> +    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
> +    @filename = self.genfilename(name, @familyfirst)
>      @email = parsed.EMail || @@headers.from
>      @user = parsed.ApacheID || ''
>      project = parsed.Project
> @@ -202,14 +235,62 @@ class ICLA < Vue
>      end
>    end
>
> +  # when real name changes, update file name
>    def changeRealName(event)
>      @realname = event.target.value;
> -    @filename = self.genfilename(event.target.value)
> +    @filename = self.genfilename(@realname, @familyfirst)
> +  end
> +
> +  # when family first changes, update file name and LDAP default fields
> +  def changeFamilyFirst(event)
> +    @filename = self.genfilename(@realname, @familyfirst)
> +    @pubnamearray = @pubname.split(' ')
> +    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
> +    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
> +  end
> +
> +  # when public name changes, update LDAP default fields
> +  def changePublicName(event)
> +    @pubname = event.target.value;
> +    @pubnamearray = @pubname.split(' ')
> +    @ldapsn = self.genldapsn(@pubnamearray, @familyfirst)
> +    @ldapgivenname = self.genldapgivenname(@pubnamearray, @familyfirst)
>    end
>
>    # generate file name from the real name
> -  def genfilename(realname)
> -    return asciize(realname.strip()).downcase().gsub(/\W+/, '-')
> +  def genfilename(realname, familyfirst)
> +    nominalname = asciize(realname.strip()).downcase().gsub(/\W+/, '-')
> +    if !familyfirst
> +      return nominalname
> +    else
> +      # compute file name with family first; move first name to last
> +      namearray = nominalname.split("-")
> +      namearray.push(namearray[0])
> +      namearray.shift()
> +      return namearray.join("-")
> +    end
> +  end
> +
> +  # generate LDAP sn from public name
> +  # simply return either the first or last name
> +  def genldapsn(pnamearray, ffirst)
> +    if ffirst
> +      return pnamearray[0]
> +    else
> +      return pnamearray[-1]
> +    end
> +  end
> +
> +  # generate LDAP givenName from public name
> +  # simply return the remainder after removing either the first or last name
> +  def genldapgivenname(pnamearray, ffirst)
> +    if ffirst
> +      pnamearray.shift()
> +      return pnamearray.join(' ')
> +    else
> +      pnamearray.pop()
> +      return pnamearray.join(' ')
> +    end
>    end
>
>    # when leaving an input field, trigger change event (for Safari)