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 <[email protected]>
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 <[email protected]>
---
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)