mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-25 18:07:31 +09:00
212 lines
7 KiB
JavaScript
212 lines
7 KiB
JavaScript
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var gCurrentDomain;
|
|
var gPrefsBundle;
|
|
|
|
function identityPageValidate()
|
|
{
|
|
var canAdvance = false;
|
|
var name = document.getElementById("fullName").value;
|
|
let email = document.getElementById("email").value.trim();
|
|
|
|
if (name && email) {
|
|
canAdvance = gCurrentDomain ? emailNameIsLegal(email) : emailNameAndDomainAreLegal(email);
|
|
|
|
if (gCurrentDomain && canAdvance) {
|
|
// For prefilled ISP data we must check if the account already exists as
|
|
// there is no second chance. The email is the username since the user
|
|
// fills in [______]@example.com.
|
|
var pageData = parent.GetPageData();
|
|
var serverType = parent.getCurrentServerType(pageData);
|
|
var hostName = parent.getCurrentHostname(pageData);
|
|
var usernameWithDomain = email + "@" + gCurrentDomain;
|
|
if (parent.AccountExists(email, hostName, serverType) ||
|
|
parent.AccountExists(usernameWithDomain, hostName, serverType))
|
|
canAdvance = false;
|
|
}
|
|
}
|
|
|
|
document.documentElement.canAdvance = canAdvance;
|
|
}
|
|
|
|
function identityPageUnload()
|
|
{
|
|
var pageData = parent.GetPageData();
|
|
var name = document.getElementById("fullName").value;
|
|
let email = document.getElementById("email").value.trim();
|
|
setPageData(pageData, "identity", "fullName", name);
|
|
setPageData(pageData, "identity", "email", email);
|
|
|
|
return true;
|
|
}
|
|
|
|
// This is for the case when the code appends the domain
|
|
// unnecessarily.
|
|
// This simply gets rid of "@domain" from "foo@domain"
|
|
|
|
function fixPreFilledEmail()
|
|
{
|
|
var emailElement = document.getElementById("email");
|
|
var email = emailElement.value;
|
|
var emailArray = email.split('@');
|
|
|
|
if (gCurrentDomain) {
|
|
// check if user entered an @ sign even though we have a domain
|
|
if (emailArray.length >= 2) {
|
|
email = emailArray[0];
|
|
emailElement.value = email;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This function checks for common illegal characters.
|
|
* It shouldn't be too strict, since we do more extensive tests later.
|
|
*/
|
|
function emailNameIsLegal(aString)
|
|
{
|
|
return aString && !/[^!-?A-~]/.test(aString);
|
|
}
|
|
|
|
function emailNameAndDomainAreLegal(aString)
|
|
{
|
|
return /^[!-?A-~]+\@[A-Za-z0-9.-]+$/.test(aString);
|
|
}
|
|
|
|
function identityPageInit()
|
|
{
|
|
gCurrentDomain = null;
|
|
gPrefsBundle = document.getElementById("bundle_prefs");
|
|
clearEmailTextItems();
|
|
setEmailDescriptionText();
|
|
checkForDomain();
|
|
checkForFullName();
|
|
checkForEmail();
|
|
fixPreFilledEmail();
|
|
identityPageValidate();
|
|
}
|
|
|
|
function clearEmailTextItems()
|
|
{
|
|
var emailDescText = document.getElementById("emailDescText");
|
|
|
|
if (emailDescText.hasChildNodes())
|
|
emailDescText.firstChild.remove();
|
|
|
|
var postEmailText = document.getElementById("postEmailText");
|
|
postEmailText.setAttribute("value", "");
|
|
postEmailText.hidden = true;
|
|
}
|
|
|
|
// Use email example data that ISP has provided. ISP data, if avaialble
|
|
// for the choice user has made, will be read into CurrentAccountData.
|
|
// Default example data from properties will be used when the info is missing.
|
|
function setEmailDescriptionText()
|
|
{
|
|
var emailDescText = document.getElementById("emailDescText");
|
|
var emailFieldLabel = document.getElementById("emailFieldLabel");
|
|
var currentAccountData = parent.gCurrentAccountData;
|
|
|
|
var displayText = null;
|
|
var emailFieldLabelData = null;
|
|
var setDefaultEmailDescStrings = true;
|
|
|
|
// Set the default field label
|
|
emailFieldLabel.setAttribute("value", gPrefsBundle.getString("emailFieldText"));
|
|
|
|
// Get values for customized data from current account
|
|
if (currentAccountData)
|
|
{
|
|
var emailProvider = currentAccountData.emailProviderName;
|
|
var sampleEmail = currentAccountData.sampleEmail;
|
|
var sampleUserName = currentAccountData.sampleUserName;
|
|
var emailIDDesc = currentAccountData.emailIDDescription;
|
|
var emailIDTitle = currentAccountData.emailIDFieldTitle;
|
|
|
|
if (emailProvider &&
|
|
sampleEmail &&
|
|
sampleUserName &&
|
|
emailIDDesc &&
|
|
emailIDTitle)
|
|
{
|
|
// Get email description data
|
|
displayText = gPrefsBundle.getFormattedString("customizedEmailText",
|
|
[emailProvider,
|
|
emailIDDesc,
|
|
sampleEmail,
|
|
sampleUserName]);
|
|
|
|
// Set emailfield label
|
|
emailFieldLabelData = emailIDTitle;
|
|
emailFieldLabel.setAttribute("value", emailFieldLabelData);
|
|
|
|
// Need to display customized data. Turn off default settings.
|
|
setDefaultEmailDescStrings = false;
|
|
}
|
|
}
|
|
|
|
if (setDefaultEmailDescStrings)
|
|
{
|
|
// Check for obtained values and set with default values if needed
|
|
var username = gPrefsBundle.getString("exampleEmailUserName");
|
|
var domain = gPrefsBundle.getString("exampleEmailDomain");
|
|
|
|
displayText = gPrefsBundle.getFormattedString("defaultEmailText",
|
|
[username, domain]);
|
|
}
|
|
|
|
// Create a text nodes with text to be displayed
|
|
var emailDescTextNode = document.createTextNode(displayText);
|
|
|
|
// Display the dynamically generated text for email description
|
|
emailDescText.appendChild(emailDescTextNode);
|
|
}
|
|
|
|
// retrieve the current domain from the parent wizard window,
|
|
// and update the UI to add the @domain static text
|
|
function checkForDomain()
|
|
{
|
|
var accountData = parent.gCurrentAccountData;
|
|
if (!accountData || !accountData.domain)
|
|
return;
|
|
|
|
// save in global variable
|
|
gCurrentDomain = accountData.domain;
|
|
var postEmailText = document.getElementById("postEmailText");
|
|
postEmailText.setAttribute("value", "@" + gCurrentDomain);
|
|
postEmailText.hidden = false;
|
|
}
|
|
|
|
function checkForFullName() {
|
|
var name = document.getElementById("fullName");
|
|
if (name.value=="") {
|
|
try {
|
|
var userInfo = Components.classes["@mozilla.org/userinfo;1"].getService(Components.interfaces.nsIUserInfo);
|
|
name.value = userInfo.fullname;
|
|
}
|
|
catch (ex) {
|
|
// dump ("checkForFullName failed: " + ex + "\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
function checkForEmail()
|
|
{
|
|
var email = document.getElementById("email");
|
|
var pageData = parent.GetPageData();
|
|
if (pageData && pageData.identity && pageData.identity.email) {
|
|
email.value = pageData.identity.email.value;
|
|
}
|
|
if (email.value=="") {
|
|
try {
|
|
var userInfo = Components.classes["@mozilla.org/userinfo;1"].getService(Components.interfaces.nsIUserInfo);
|
|
email.value = userInfo.emailAddress;
|
|
}
|
|
catch (ex) {
|
|
// dump ("checkForEmail failed: " + ex + "\n");
|
|
}
|
|
}
|
|
}
|