From: Felix Dörre Date: Sat, 10 Sep 2016 14:18:48 +0000 (+0200) Subject: add: js-managed default values for certificate-issue-form X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=347c8ebcae546d63b62e90f4260f43bb1ed18be3 add: js-managed default values for certificate-issue-form Change-Id: I73713d708f5fdbd505f408b6b19a7a0f7fab813b --- diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java index 0a29fb2d..8b9272cc 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java @@ -13,7 +13,9 @@ import org.cacert.gigi.dbObjects.Certificate; import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName; import org.cacert.gigi.dbObjects.CertificateProfile; +import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.Organisation; +import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.CertificateValiditySelector; import org.cacert.gigi.output.HashAlgorithms; @@ -144,7 +146,16 @@ public class CertificateIssueForm extends Form { content.append(SAN.getName()); content.append('\n'); } - + vars2.put("placeholderName", CertificateRequest.DEFAULT_CN); + if (c.getTarget() instanceof User) { + User target = (User) c.getTarget(); + vars2.put("defaultName", target.getPreferredName().toString()); + vars2.put("defaultEmail", target.getEmail()); + Domain[] domains = target.getDomains(); + if (domains.length > 0) { + vars2.put("defaultDomain", domains[0].getSuffix()); + } + } vars2.put("CN", cr.getName()); if (c.getTarget() instanceof Organisation) { vars2.put("orga", "true"); diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ index e9947a97..47f82349 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ +++ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.templ @@ -4,7 +4,14 @@

http://www.cacert.org/cps.php

- + + + + + + + + diff --git a/static/static/css/main.css b/static/static/css/main.css index f8cd0729..7bb2ee87 100644 --- a/static/static/css/main.css +++ b/static/static/css/main.css @@ -23,3 +23,6 @@ div.error-msgs p{ .summary-table td{ padding: 0 3px; } +.js-hint { + display: none; +} \ No newline at end of file diff --git a/static/static/js/expert.js b/static/static/js/expert.js index 731dddde..9c623e73 100644 --- a/static/static/js/expert.js +++ b/static/static/js/expert.js @@ -60,8 +60,83 @@ } } } + function initCertForm() { + if(document.getElementById("placeholderName") == null) { + return; + } + function getHint(id){ + var elem = document.getElementById(id); + if(elem === null) { + return null; + } + return $(elem).text(); + } + $("select[name=profile]").off("change"); + $("textarea[name=SANs]").off("keydown"); + $("textarea[name=SANs]").get(0).modified=false; + $("input[name=CN]").off("keydown"); + $("input[name=CN]").get(0).modified=false; + + var placeholderName = getHint("placeholderName"); + var defaultName = getHint("defaultName"); + var defaultEmail = getHint("defaultEmail"); + var defaultDomain = getHint("defaultDomain"); + if(defaultName === null) { + return; + } + $("textarea[name=SANs]").on("keydown", function(){ + this.modified = this.value !== ""; + }); + $("input[name=CN]").on("keydown", function(){ + this.modified = this.value !== ""; + }); + + var loginCheck = document.getElementById("login"); + $("select[name=profile]").change(function(){ + var val = this.value; + var sans = $("textarea[name=SANs]").get(0); + if(val.match(/client.*/)) { + loginCheck.checked = true; + loginCheck.disabled = false; + } else { + loginCheck.checked = false; + loginCheck.disabled = true; + } + if(val.match(/client.*|mail.*/)) { + if(!sans.modified) { + sans.value = "email:"+defaultEmail; + } + } else if(val.match(/server.*/)) { + if(!sans.modified) { + sans.value = defaultDomain === null ? "" : "dns:" + defaultDomain; + } + } + var cn = $("input[name=CN]").get(0); + if(val.match(/.*-a/)) { + if(!cn.modified) { + cn.value = defaultName; + } + }else{ + if(!cn.modified) { + cn.value = placeholderName; + } + } + }); + var children = $("select[name=profile]").get(0).children; + var target = "client-mail"; + for(var i=0; i < children.length; i++){ + if(children[i].value == "client-mail-a"){ + target = "client-mail-a"; + } + } + + $("select[name=profile]").get(0).value = target; + $("select[name=profile]").trigger("change"); + + } function init(){ showExpert(false); + initCertForm(); var expert = document.getElementById("expertbox"); if(expert !== null) { expert.onchange = (function(expert){return function(){showExpert(expert.checked)}})(expert);