diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 736fbc308301184948c0984579fafe4306bd6f1d..2ee654e1f275974764b6bec1dba0a012fa2333b7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,7 @@ stages: syntax:lint: stage: syntax - image: bobey/docker-gitlab-ci-runner-php7 + image: edbizarro/gitlab-ci-pipeline-php:7.2 allow_failure: false only: - schedules diff --git a/interface/web/dns/dns_spf_edit.php b/interface/web/dns/dns_spf_edit.php index 94096662a1e8e0af7e0e228d322d0c955076b8f2..70f39e44eb2b135abdea6a0251db227388c22c93 100644 --- a/interface/web/dns/dns_spf_edit.php +++ b/interface/web/dns/dns_spf_edit.php @@ -72,13 +72,16 @@ class page_action extends tform_actions { } function onShowEnd() { - global $app, $conf; + global $app; + + $id = $app->functions->intval($_GET['id']); - $zone = $app->functions->intval($_GET['zone']); + // if there is no existing SPF record, assume we want a new active record + $app->tpl->setVar('active', 'CHECKED'); //* check for an existing spf-record - $sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=spf1%' AND zone = ? AND " . $app->tform->getAuthSQL('r'); - $rec = $app->db->queryOneRecord($sql, $zone); + $sql = "SELECT data, active FROM dns_rr WHERE id = ? AND " . $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord($sql, $id); if ( isset($rec) && !empty($rec) ) { $this->id = 1; $old_data = strtolower($rec['data']); @@ -132,7 +135,6 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - // Get the parent soa record of the domain $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $app->functions->intval($_POST["zone"])); @@ -153,8 +155,27 @@ class page_action extends tform_actions { } } } // end if user is not admin + + // Check that the record does not yet exist + $existing_records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE id != ? AND zone = ? AND name = ? AND type = 'TXT'", $this->dataRecord['id'], $_POST['zone'], $_POST['name']); + if (!empty($existing_records)) { + if (count($existing_records) > 1) { + $multiple_existing_records_error_txt = $app->tform->wordbook['spf_record_exists_multiple_txt']; + $multiple_existing_records_error_txt = str_replace('{hostname}', $_POST['name'], $multiple_existing_records_error_txt); + + $app->error($multiple_existing_records_error_txt); + } - //create spf-record + $existing_record = array_pop($existing_records); + + $existing_record_error_txt = $app->tform->wordbook['spf_record_exists_txt']; + $existing_record_error_txt = str_replace('{hostname}', $_POST['name'], $existing_record_error_txt); + $existing_record_error_txt = str_replace('{existing_record_id}', $existing_record['id'], $existing_record_error_txt); + + $app->error($existing_record_error_txt); + } + + // Create spf-record if (!empty($this->dataRecord['spf_mx'])) { $spf_record[] = 'mx'; } @@ -217,7 +238,6 @@ class page_action extends tform_actions { else $this->dataRecord['data'] = 'v=spf1 ' . $this->dataRecord['spf_mechanism'] . 'all'; unset($temp); - $this->dataRecord['name'] = $soa['origin']; if (isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'Y'; // Set the server ID of the rr record to the same server ID as the parent record. @@ -228,10 +248,6 @@ class page_action extends tform_actions { $this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]); $this->dataRecord["stamp"] = date('Y-m-d H:i:s'); - // always update an existing entry - $check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data LIKE 'v=spf1%' AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord['name']); - $this->id = $check['id']; - if (!isset($this->dataRecord['active'])) $this->dataRecord['active'] = 'N'; parent::onSubmit(); diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php index 8f61d2bfe725e218df4a2c3d28b06f040e6ca570..6d518e19d5300b0bbad8d363c9e7ed486efe4cff 100644 --- a/interface/web/dns/dns_txt_edit.php +++ b/interface/web/dns/dns_txt_edit.php @@ -44,7 +44,22 @@ require_once './dns_edit_base.php'; // Loading classes class page_action extends dns_page_action { + function onLoad() { + parent::onLoad(); + + // The SPF wizard has a button to edit a record as TXT. We need this to prevent a redirect loop. + if (!empty($_GET['edit_raw'])) { + return; + } + // Redirect to SPF wizard if we detect a SPF record + if (!empty($this->dataRecord['data'])) { + if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) { + header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id'])); + exit; + } + } + } } $page = new page_action; diff --git a/interface/web/dns/form/dns_spf.tform.php b/interface/web/dns/form/dns_spf.tform.php index 62b6b5283b58dc03f582be5e2f730ee31041e90d..53081b7ccabdf11b10d674abcb3cde1afe5260e4 100644 --- a/interface/web/dns/form/dns_spf.tform.php +++ b/interface/web/dns/form/dns_spf.tform.php @@ -86,7 +86,7 @@ $form["tabs"]['dns'] = array ( 'type' => 'TOLOWER') ), 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}$/', + 'regex' => '/^(\*\.|[a-zA-Z0-9\.\-\_]){0,255}$/', 'errmsg'=> 'name_error_regex'), ), 'default' => '', diff --git a/interface/web/dns/lib/lang/ar_dns_spf.lng b/interface/web/dns/lib/lang/ar_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/ar_dns_spf.lng +++ b/interface/web/dns/lib/lang/ar_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_spf.lng b/interface/web/dns/lib/lang/bg_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/bg_dns_spf.lng +++ b/interface/web/dns/lib/lang/bg_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_spf.lng b/interface/web/dns/lib/lang/br_dns_spf.lng index 739e59cf41787cc4d0dec825d9fe8afb79540cf4..bbf571c3b78143a1c03668e1fd658c0d403af95d 100644 --- a/interface/web/dns/lib/lang/br_dns_spf.lng +++ b/interface/web/dns/lib/lang/br_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'Registro SPF'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; $wb['spf_mechanism_pass_txt'] = 'Pass - permitir e-mails de outros remetentes'; $wb['spf_mechanism_fail_txt'] = 'Fail - rejeitar e-mails de outros remetentes'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'O domÃnio é inválido.'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ativo'; $wb['record_exists_txt'] = 'Registro dns já existe.'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.'; $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.'; $wb['ttl_range_error'] = 'O TTL mÃnimo são 60 segundos.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_spf.lng b/interface/web/dns/lib/lang/ca_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/ca_dns_spf.lng +++ b/interface/web/dns/lib/lang/ca_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_spf.lng b/interface/web/dns/lib/lang/cz_dns_spf.lng index 3086454c34e87cff4a5c722ab48b0c7963632c14..a5691ee3409f32e7f9e0f8f09915583c8585a867 100644 --- a/interface/web/dns/lib/lang/cz_dns_spf.lng +++ b/interface/web/dns/lib/lang/cz_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Záznam'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanismus'; $wb['spf_mechanism_pass_txt'] = 'PÅ™ijmout - pÅ™ijÃmat e-mail od ostatnÃch odesÃlatelů'; $wb['spf_mechanism_fail_txt'] = 'OdmÃtat - odmÃtnout e-mail od ostatnÃch odesÃlatelů'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Neplatné doménové jméno'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'AktivnÃ'; $wb['record_exists_txt'] = 'DNS záznam již existuje'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'Byl dosažen max. poÄet DNS záznamů pro váš úÄet.'; $wb['no_zone_perm'] = 'Nemáte oprávnÄ›nà pÅ™idat záznam do této zóny DNS.'; $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_spf.lng b/interface/web/dns/lib/lang/de_dns_spf.lng index aec5595ad323afbb2212c79a529fb3cac4544828..a4f0f7827f4056c2d614837f303dd6fc1427fb14 100644 --- a/interface/web/dns/lib/lang/de_dns_spf.lng +++ b/interface/web/dns/lib/lang/de_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanismus'; $wb['spf_mechanism_pass_txt'] = 'Pass - Mails von anderen Sendern zulassen'; $wb['spf_mechanism_fail_txt'] = 'Fail - Mails von anderen Sendern abweisen'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Ungültiger Domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Aktiv'; $wb['record_exists_txt'] = 'DNS-Eintrag existiert bereits'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.'; $wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.'; $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_spf.lng b/interface/web/dns/lib/lang/dk_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/dk_dns_spf.lng +++ b/interface/web/dns/lib/lang/dk_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_spf.lng b/interface/web/dns/lib/lang/el_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/el_dns_spf.lng +++ b/interface/web/dns/lib/lang/el_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_spf.lng b/interface/web/dns/lib/lang/en_dns_spf.lng index 7ac24dd227b26b9a34faa0b6877a8a7c5a53b99a..455b5ce0abedd7915331e4ac88271d5a2c6d9d91 100644 --- a/interface/web/dns/lib/lang/en_dns_spf.lng +++ b/interface/web/dns/lib/lang/en_dns_spf.lng @@ -2,6 +2,7 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -21,8 +22,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb["ttl_txt"] = 'TTL'; $wb["active_txt"] = 'Active'; $wb["record_exists_txt"] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.'; $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> - diff --git a/interface/web/dns/lib/lang/es_dns_spf.lng b/interface/web/dns/lib/lang/es_dns_spf.lng index e4094672bb524276712d89d6dfd2820b97be6bb7..353134adededa67f3dc5ed8ff65e0725c409bde7 100755 --- a/interface/web/dns/lib/lang/es_dns_spf.lng +++ b/interface/web/dns/lib/lang/es_dns_spf.lng @@ -1,9 +1,12 @@ <?php $wb['active_txt'] = 'Habilitado'; +$wb['name_txt'] = 'Hostname'; $wb['data_txt'] = 'Registro SPF'; $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.'; $wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.'; $wb['record_exists_txt'] = 'El registro DNS ya existe'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['spf_a_txt'] = 'Permitir a la dirección IP actual del dominio enviar correo electrónico para este dominio'; $wb['spf_domain_note_txt'] = '(dominios separados por espacios en blanco)'; $wb['spf_domain_txt'] = 'Cualquier dominio que pueda entregar o retransmitir correo para este dominio'; @@ -22,4 +25,5 @@ $wb['spf_mechanism_txt'] = 'Mecanismo SPF'; $wb['spf_mx_txt'] = 'Permite a los servidores configurados como MX enviar correos desde este dominio'; $wb['ttl_range_error'] = 'El tiempo mÃn. de TTL es 60 segundos.'; $wb['ttl_txt'] = 'TTL'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_spf.lng b/interface/web/dns/lib/lang/fi_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/fi_dns_spf.lng +++ b/interface/web/dns/lib/lang/fi_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_spf.lng b/interface/web/dns/lib/lang/fr_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/fr_dns_spf.lng +++ b/interface/web/dns/lib/lang/fr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_spf.lng b/interface/web/dns/lib/lang/hr_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/hr_dns_spf.lng +++ b/interface/web/dns/lib/lang/hr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_spf.lng b/interface/web/dns/lib/lang/hu_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/hu_dns_spf.lng +++ b/interface/web/dns/lib/lang/hu_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_spf.lng b/interface/web/dns/lib/lang/id_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/id_dns_spf.lng +++ b/interface/web/dns/lib/lang/id_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_spf.lng b/interface/web/dns/lib/lang/it_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/it_dns_spf.lng +++ b/interface/web/dns/lib/lang/it_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_spf.lng b/interface/web/dns/lib/lang/ja_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/ja_dns_spf.lng +++ b/interface/web/dns/lib/lang/ja_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_spf.lng b/interface/web/dns/lib/lang/nl_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/nl_dns_spf.lng +++ b/interface/web/dns/lib/lang/nl_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_spf.lng b/interface/web/dns/lib/lang/pl_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/pl_dns_spf.lng +++ b/interface/web/dns/lib/lang/pl_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_spf.lng b/interface/web/dns/lib/lang/pt_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/pt_dns_spf.lng +++ b/interface/web/dns/lib/lang/pt_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_spf.lng b/interface/web/dns/lib/lang/ro_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/ro_dns_spf.lng +++ b/interface/web/dns/lib/lang/ro_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_spf.lng b/interface/web/dns/lib/lang/ru_dns_spf.lng index cc4b4b087be6b840f2d58593d5ff3de096b69cd7..a0e77b41b179675ebbbe0d8f0b68aae2a704b055 100644 --- a/interface/web/dns/lib/lang/ru_dns_spf.lng +++ b/interface/web/dns/lib/lang/ru_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-запиÑÑŒ'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'Механизм SPF'; $wb['spf_mechanism_pass_txt'] = 'Pass - разрешить почту от других отправителей'; $wb['spf_mechanism_fail_txt'] = 'Fail - отклонить почту от других отправителей'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'ÐедопуÑтимое доменное им $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Ðктивно'; $wb['record_exists_txt'] = 'DNS-запиÑÑŒ уже ÑущеÑтвует'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'МакÑ. количеÑтво DNS-запиÑей Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи доÑтигнуто.'; $wb['no_zone_perm'] = 'У Ð’Ð°Ñ Ð½ÐµÑ‚ прав добавлÑть Ñту запиÑÑŒ.'; $wb['ttl_range_error'] = 'Мин. Ð²Ñ€ÐµÐ¼Ñ <b>TTL</b> 60 Ñекунд.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_spf.lng b/interface/web/dns/lib/lang/se_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/se_dns_spf.lng +++ b/interface/web/dns/lib/lang/se_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_spf.lng b/interface/web/dns/lib/lang/sk_dns_spf.lng index df8d1fe1453faa2d4decfe0d3dc94cf19ff48458..09720321b260004d0b2a32e8b35aef47ae6e9944 100644 --- a/interface/web/dns/lib/lang/sk_dns_spf.lng +++ b/interface/web/dns/lib/lang/sk_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF-Record'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Mechanism'; $wb['spf_mechanism_pass_txt'] = 'Pass - allow mail from other senders'; $wb['spf_mechanism_fail_txt'] = 'Fail - reject mail from other senders'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Invalid domainname'; $wb['ttl_txt'] = 'TTL'; $wb['active_txt'] = 'Active'; $wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.'; $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.'; $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_spf.lng b/interface/web/dns/lib/lang/tr_dns_spf.lng index 40cad402a461aff5e9fe8ce0d5c94e6f4257e727..2683560275e395bb03f28dcefe93ef055e606179 100644 --- a/interface/web/dns/lib/lang/tr_dns_spf.lng +++ b/interface/web/dns/lib/lang/tr_dns_spf.lng @@ -1,5 +1,6 @@ <?php $wb['data_txt'] = 'SPF Kaydı'; +$wb['name_txt'] = 'Hostname'; $wb['spf_mechanism_txt'] = 'SPF Yöntemi'; $wb['spf_mechanism_pass_txt'] = 'Kabul - DiÄŸer göndericilerden gelen e-postalar kabul edilsin'; $wb['spf_mechanism_fail_txt'] = 'Red - DiÄŸer göndericilerden gelen e-postalar reddedilsin'; @@ -19,7 +20,10 @@ $wb['spf_invalid_domain_txt'] = 'Etki alanı adı geçersiz'; $wb['ttl_txt'] = 'TTL Süresi'; $wb['active_txt'] = 'Etkin'; $wb['record_exists_txt'] = 'DNS kaydı zaten var'; +$wb['spf_record_exists_txt'] = 'SPF-Record already exists for hostname "{hostname}". Do you want to <a href="#" data-load-content="dns/dns_spf_edit.php?id={existing_record_id}">edit the existing record</a>?'; +$wb['spf_record_exists_multiple_txt'] = 'Multiple SPF-Records exist for hostname "{hostname}". This will cause recipients to reject your mail! Delete or merge duplicate existing records and try again.'; $wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla DNS kaydı sınırına ulaÅŸtınız.'; $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.'; $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; +$wb['btn_edit_as_txt_record_txt'] = 'Edit as TXT record'; ?> diff --git a/interface/web/dns/templates/dns_spf_edit.htm b/interface/web/dns/templates/dns_spf_edit.htm index 3c34b37a41b03d0f74b5f335d2a3986c25f2ed43..fc7400d6200f61c7d24d576da966458d65f5a02d 100644 --- a/interface/web/dns/templates/dns_spf_edit.htm +++ b/interface/web/dns/templates/dns_spf_edit.htm @@ -5,6 +5,10 @@ + <div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label> + <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div> + </div> <div class="form-group"> <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label> <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" readonly class="form-control" /></div></div> @@ -52,11 +56,11 @@ <input type="hidden" name="id" value="{tmpl_var name='id'}"> <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone"> <input type="hidden" name="type" value="{tmpl_var name='type'}"> - <input type="hidden" name="name" value="{tmpl_var name='name'}"> </div> <div class="clear"><div class="right"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_spf_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_edit_as_txt_record_txt'}" data-load-content="dns/dns_txt_edit.php?id={tmpl_var name='id'}&zone={tmpl_var name='zone'}&edit_raw=1">{tmpl_var name='btn_edit_as_txt_record_txt'}</button> <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button> </div></div> diff --git a/interface/web/favicon.ico b/interface/web/favicon.ico deleted file mode 100644 index dc71b5320c890943e4aba52d80689deb58c6b39e..0000000000000000000000000000000000000000 Binary files a/interface/web/favicon.ico and /dev/null differ diff --git a/interface/web/login/login_as.php b/interface/web/login/login_as.php index 4c2fb33393e6d6e555d350515750ebd5bf66972d..67d5858ff60be84e3ae954d2fa526791f7c1290f 100644 --- a/interface/web/login/login_as.php +++ b/interface/web/login/login_as.php @@ -96,7 +96,7 @@ echo ' <input type="hidden" name="s_pg" value="dashboard" /> <input type="hidden" name="login_as" value="1" /> <div class="wf_actions buttons"> - <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="/login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button> + <button class="btn btn-default formbutton-success" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button> <button class="btn btn-default formbutton-default" value="'.$wb['btn_back_txt'].'" data-load-content="'.$backlink.'"><span>'.$wb['btn_back_txt'].'</span></button> </div> '; diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php index dadd871bab6214d2214058f125492eed78d664b4..fa60fba63298f271f42036ce82ae34c8c4c6e9f8 100644 --- a/interface/web/login/logout.php +++ b/interface/web/login/logout.php @@ -54,7 +54,7 @@ if ((isset($_SESSION['s_old']) && ($_SESSION['s_old']['user']['typ'] == 'admin' <input type="hidden" name="s_pg" value="index" /> <input type="hidden" name="login_as" value="1" /> <div class="wf_actions buttons"> - <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="/login/index.php"><span>Yes, re-login as ' . $utype . '</span></button> + <button class="btn btn-default formbutton-success" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="login/index.php"><span>Yes, re-login as ' . $utype . '</span></button> <button class="btn btn-default formbutton-default" type="button" value="No, logout" data-load-content="login/logout.php?l=1"><span>No, logout</span></button> </div> '; diff --git a/interface/web/themes/default/assets/favicon/android-chrome-192x192.png b/interface/web/themes/default/assets/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..fd24a98743b0457c88874bffdc136ed0e99401a5 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/android-chrome-192x192.png differ diff --git a/interface/web/themes/default/assets/favicon/android-chrome-512x512.png b/interface/web/themes/default/assets/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d9ad1e03c2471a88f883de17c129555e906774 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/android-chrome-512x512.png differ diff --git a/interface/web/themes/default/assets/favicon/apple-touch-icon.png b/interface/web/themes/default/assets/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..713b3d50d1aaa8f4421ffb898b8d7310e2ee97c1 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/apple-touch-icon.png differ diff --git a/interface/web/themes/default/assets/favicon/browserconfig.xml b/interface/web/themes/default/assets/favicon/browserconfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0076c46ca3e54a8a9edefa6ff5524ec1ea7537a --- /dev/null +++ b/interface/web/themes/default/assets/favicon/browserconfig.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<browserconfig> + <msapplication> + <tile> + <square150x150logo src="/themes/default/assets/favicon/mstile-150x150.png"/> + <TileColor>#cc151c</TileColor> + </tile> + </msapplication> +</browserconfig> diff --git a/interface/web/themes/default/assets/favicon/favicon-16x16.png b/interface/web/themes/default/assets/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6877b0cf7cb185bcd9031c22eeabcd06a7d75175 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/favicon-16x16.png differ diff --git a/interface/web/themes/default/assets/favicon/favicon-32x32.png b/interface/web/themes/default/assets/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..562f38a8669e4e568002f000b5804f9496bde006 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/favicon-32x32.png differ diff --git a/interface/web/themes/default/assets/favicon/favicon.ico b/interface/web/themes/default/assets/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..13554cb35355c7a7eee489693006c26041312d25 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/favicon.ico differ diff --git a/interface/web/themes/default/assets/favicon/mstile-150x150.png b/interface/web/themes/default/assets/favicon/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..83fcba69390f17f68b5dde4969858fb3d9d28292 Binary files /dev/null and b/interface/web/themes/default/assets/favicon/mstile-150x150.png differ diff --git a/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg new file mode 100644 index 0000000000000000000000000000000000000000..12238ebc5b76f76f47e13de85b885110287e24cc --- /dev/null +++ b/interface/web/themes/default/assets/favicon/safari-pinned-tab.svg @@ -0,0 +1 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" width="1422.667" height="1422.667" viewBox="0 0 1067.000000 1067.000000"><path d="M92.9 141.4c-.2.2-2.8.7-5.8 1.1-19.1 2.4-41.8 14.2-57.7 30.1C22 180 13 191.6 13 193.8c0 .5-.8 2-1.9 3.3-1.9 2.5-8.4 19-9.8 25C.9 224 .5 329.7.5 457v231.5l2.7 8.5c9.4 29.1 29.3 51.5 57.2 64.5 8.4 3.9 18.1 7.3 23.1 8 1.1.2 4.5.6 7.5 1.1 3 .4 144.4.8 314.3.8l308.7.1.1 8c0 4.4.2 9.3.3 10.8.1 1.6-.2 3.1-.6 3.3-.5.3-.6 1-.2 1.5.3.5.5 6.2.4 12.7-.1 6.4-.1 12.6-.1 13.7 0 2-.5 2-147.2 1.8-81-.2-163.5-.3-183.4-.3h-36.2l-.3-13.7-.3-13.7-52-.1c-28.6 0-52.4.1-53 .2-2 .6-.8 40.4 1.5 49.3.5 1.9 1.1 4.6 1.4 6 1 5.1 7.9 21.6 9.5 23 .3.3 1.7 2.5 3 5 1.4 2.5 3 5 3.5 5.6.6.6 2.5 2.8 4.1 4.9 2.8 3.6 10.7 11.7 13.7 14 .7.6 3.1 2.5 5.3 4.2 3.8 3 6.7 4.8 16.2 9.8 4.1 2.2 16.2 6.7 21.8 8 3 .8 4.1.9 12.5 2.1 4.9.6 385 1.2 386.3.6.5-.2 3.2-.6 6-.8 6.4-.4 15.5-2.5 22.4-5.2 2.9-1.1 5.4-1.7 5.7-1.4.4.3.6 0 .6-.6 0-.7.3-1.1.8-1 1 .3 10.5-4.6 16.5-8.6 6.7-4.5 14.5-11.2 18.8-16.1 1.9-2.2 4.1-4.7 4.9-5.6 7.4-8.5 16.5-26.4 19.5-38.3 1.8-7.6 2-8.5 3-14.2.6-3.8.7-70 .1-73.9-.1-1.1-.6-4.5-1.1-7.5-.4-3-1.4-7.2-2.1-9.2-.7-2.1-1.3-3.9-1.3-4.1 0-.1-.4-1.5-1-3-.6-1.6-1.1-3-1.1-3.2 0-2.8-11.6-22.7-17-29-10-11.7-26.4-24-39.7-29.5-4.2-1.8-8.3-3.3-9.2-3.5-.9-.3-4.2-1.1-7.3-2-3.2-.8-9.2-1.9-13.5-2.3-4.3-.4-146.1-.7-315-.7H103l-.1-6.5c0-7.6 0-407.7.1-413.2v-3.6h855v8.1c.4 71.1 0 414.1-.4 414.5-.3.3-19.1.5-41.6.5-22.6 0-41.3.4-41.5.8-.4.5-.7 62.4-.5 98.4v5l46.8-.1c38.4 0 55.5-.6 60.2-1.9.3-.1 1.9-.5 3.5-.9 25-6.1 48-22 62.2-43.1 6.1-8.9 10-16.9 13.2-27 2.9-9.1 3.6-11.9 4.8-21 .8-6.5.9-436.1 0-444-1-9.5-1.4-11.5-4.6-21-2.6-8-4.5-12-10.7-23-3.2-5.6-10.1-14-16.5-19.8-8.3-7.6-8.9-8.1-12.4-10.3-1.6-1-3.2-2.1-3.5-2.4-2.8-2.9-22.1-11.5-30.5-13.6-1.6-.4-3.4-.8-4-1-.5-.1-2.3-.6-4-1-2.9-.9-884.8-1.8-885.6-1z"/><path d="M240.3 539.6c.2 1.3.1 2.7-.3 2.9-.4.2-.5 1.7-.3 3.2.8 5.6.8 7.8 0 9-.4.6-.4 1.4.2 1.7.6.4.6 1.8.1 3.6-.5 1.7-.5 3 0 3s.5 1.3 0 2.9c-.4 1.6-.6 3.2-.4 3.4.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.8 1.3 1.1 5.7.3 5.7-.3 0-.5 1.8-.5 4s.2 4 .5 4 .5 1.1.5 2.5-.4 2.5-.8 2.5-.3.8.2 1.8.6 2.4.1 3.3c-.5.8-.5 2.1 0 2.8.4.8.4 2.6 0 4.2-.5 1.5-.6 3-.4 3.2.9.9 1 11.8.2 12.3-.5.3-.5 1-.1 1.7.9 1.4 1.1 5.7.2 5.7-.3 0-.3 1.7 0 3.7l.6 3.8 53 .1c50.2.1 56.5-.2 55-2.6-.3-.5-.5-3-.5-5.7 0-6.2 0-13.8-.2-16.1 0-.9 0-3.1.1-4.7.2-6.6.2-8.1.2-9.3-.1-.6-.1-1.8-.2-2.5 0-.6.1-3.9.2-7.3.1-3.3 0-6.5-.4-7-.3-.6-.2-2.6.2-4.6.5-2 .5-4.2.1-4.9-.5-.7-.4-2.3 0-3.5.5-1.3.5-2.6.1-2.9-.8-.4-.5-6.3.4-9.1.2-.6-.1-1.7-.5-2.5-.5-.7-.5-1.8.1-2.5s.6-1.5.1-1.8c-.8-.5-.5-8.5.4-9.5.2-.2-.1-1.1-.6-2.1-.6-1-.6-3 0-4.8.7-2.5.5-3.2-.8-3.6-.9-.3-25.5-.5-54.6-.5h-52.8l.5 2.5z"/></svg> \ No newline at end of file diff --git a/interface/web/themes/default/assets/favicon/site.webmanifest b/interface/web/themes/default/assets/favicon/site.webmanifest new file mode 100644 index 0000000000000000000000000000000000000000..a94d9f4b4a50a1339d06d14c42929e87705ce309 --- /dev/null +++ b/interface/web/themes/default/assets/favicon/site.webmanifest @@ -0,0 +1,18 @@ +{ + "name": "ISPConfig", + "short_name": "ISPConfig", + "icons": [ + { + "src": "/themes/default/assets/favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/themes/default/assets/favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#cc151c", + "background_color": "#cc151c" +} diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index 5f797af3286f8b0a7902f8bcebe4f48bcdf70c46..70e3a903a65dbf44576868151101c19015858bfd 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -172,7 +172,7 @@ var ISPConfig = { ISPConfig.loadContent(parts[1]); } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) { // Go to the login page - document.location.href = '/index.php'; + document.location.href = './index.php'; } else { $('#pageContent').html(jqXHR.responseText); ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize()); diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.min.js b/interface/web/themes/default/assets/javascripts/ispconfig.min.js index 76af49d1dc114b1279a8ee8941fda095bcdb8cc6..e118b994b0b4cc5c1592b86c465e04fcade91796 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.min.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.min.js @@ -1 +1 @@ -var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="/index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}}); \ No newline at end of file +var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:new Array,new_tpl_add_id:0,dataLogTimer:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=new Array);var c=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][c]=b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++){var d=ISPConfig.registeredHooks[a][c];d(a,b)}},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){if(document.body.style.cursor="wait",1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,ISPConfig.requestsRunning<2)){var a=$("#ajaxloader");a.length<1&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content");if(b.length<1)return;ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,d=b.offset().top+150;a.css({left:c,top:d}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0,ISPConfig.requestsRunning<1&&$(this).fadeOut("fast",function(){$(this).hide()})})}},hideLoadIndicator:function(){document.body.style.cursor="",ISPConfig.requestsRunning-=1,ISPConfig.requestsRunning<1&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))},onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"",1==ISPConfig.options.useComboBox&&$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(){$("#pageForm .table #Filter").length>0&&$("#pageForm .table #Filter").trigger("click")}),$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"}),$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0}),$('[data-toggle="tooltip"]').tooltip({}),$('input[type="password"]').each(function(){$(this).prop("readonly",!0).tooltip({title:"Click to set",placement:"left"})}),$('input[type="password"]').on("click focus",function(){$(this).prop("readonly",!1),$(this).tooltip("destroy")}),ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c){var d=arguments[3];if(c||(c=!1),!c||window.confirm(c)){$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,f){if(d&&alert(d),f.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=f.responseText.split(":");ISPConfig.loadContent(g[1])}else f.responseText.indexOf("LOGIN_REDIRECT:")>-1?document.location.href="./index.php":($("#pageContent").html(f.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(a){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(a,b){var c=function(a){var b,c=a.contentWindow.document.body.innerHTML;try{b=JSON.parse(c)}catch(d){b=c}var e=$("<div></div>").html(b),f="",g=e.find("#OKMsg").html();g&&(f='<div id="OKMsg">'+g+"</div>");var h=e.find("#errorMsg").html();h&&(f=f+'<div id="errorMsg">'+h+"</div>");var i=e.find('input[name="_csrf_key"]').val(),j=e.find('input[name="_csrf_id"]').val();return f=f+'<input type="hidden" name="_csrf_id" value="'+j+'" /><input type="hidden" name="_csrf_key" value="'+i+'" />'},d="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1e3);$("body").append('<iframe width="0" height="0" style="display:none;" name="'+d+'" id="'+d+'"/>'),$("#"+d).load(function(){var a=c(this);$("#errorMsg").remove(),$("#OKMsg").remove(),$('input[name="_csrf_key"]').remove(),$('input[name="_csrf_id"]').remove(),$('input[name="id"]').before(a),$(this).remove()}),$('input[type="file"]').closest("form").attr({target:d,action:b}).submit()},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(""!=c.responseText)if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else if(c.responseText.indexOf("URL_REDIRECT:")>-1){var e=c.responseText.substr(c.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=e}ISPConfig.loadMenus(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})},loadContent:function(a){{var b=arguments[1];$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,d,e){if(e.responseText.indexOf("HEADER_REDIRECT:")>-1){var f=e.responseText.split(":");ISPConfig.loadContent(f[1])}else if(e.responseText.indexOf("URL_REDIRECT:")>-1){var g=e.responseText.substr(e.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=g}else $("#pageContent").html(e.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged=!1;clearTimeout(dataLogTimer),ISPConfig.dataLogNotification(),ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 113")}})}},loadContentRefresh:function(a){if($("#refreshinterval").val()>0){{$.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,d){ISPConfig.hideLoadIndicator(),$("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,"refresh="+document.getElementById("refreshinterval").value),ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful."+a)}})}setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",1e3*document.getElementById("refreshinterval").value*60)}},loadInitContent:function(){var a=$("#pageContent").attr("data-startpage");a||(a="dashboard/dashboard.php");$.ajax({type:"GET",url:a,data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){if(c.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=c.responseText.split(":");ISPConfig.loadContent(d[1])}else $("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1;ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus(),ISPConfig.keepalive(),ISPConfig.dataLogNotification(),setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}},1e3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#sidebar").html(c.responseText),ISPConfig.onAfterSideNavLoaded(),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 115")}}),$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator(),$("#topnav-container").html(c.responseText),ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator(),ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(ISPConfig.requestsRunning>0)return console.log("tab change interrupted, request still running."),!1;document.pageForm.next_tab.value=a;var d=$("form#pageForm").find('[name="id"]'),e=null;if(d.length>0&&(e=d.val()),"y"!=ISPConfig.tabChangeDiscard||c)if(e&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged)if(window.confirm(ISPConfig.tabChangeWarningTxt))ISPConfig.submitForm("pageForm",b);else{var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}else ISPConfig.submitForm("pageForm",b);else{if(!(d.length<1||e)||0!=ISPConfig.pageFormChanged&&!window.confirm(ISPConfig.tabChangeDiscardTxt))return!1;var f=a;e?ISPConfig.loadContent(b,{next_tab:f,id:e}):ISPConfig.loadContent(b,{next_tab:f})}},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a,b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,c,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(d,e,f){var g=f.responseText,h=g.split("#");el=document.getElementById(a),el.innerHTML="";for(var i=0;i<h.length;++i){var j=document.createElement("option");j.appendChild(document.createTextNode(h[i])),j.value=h[i],el.appendChild(j)}"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(){setTimeout(function(){ISPConfig.keepalive()},1e6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},dataLogNotification:function(){console.log(ISPConfig.options);$.ajax({type:"GET",url:"datalogstatus.php",dataType:"json",success:function(a){var d=[];$.each(a.entries,function(a,b){d.push("<li><strong>"+b.text+":</strong> "+b.count+"</li>")}),a.count>0?($(".modal-body").html(d.join("")),$(".notification_text").text(a.count),$(".notification").css("display",""),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},2e3)):($(".notification").css("display","none"),$(".modal-body").html(""),$("#datalogModal").modal("hide"),dataLogTimer=setTimeout(function(){ISPConfig.dataLogNotification()},5e3))},error:function(){ISPConfig.reportError("Notification not loading, aborting."),$(".notification").css("display","none")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],d=b[1];if(c>0){var e=a.split("/");ISPConfig.new_tpl_add_id+=1;var f=$('<a href="#"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></span></a>').attr("class","btn btn-danger btn-xs").click(function(a){a.preventDefault(),ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});e[e.length]="n"+ISPConfig.new_tpl_add_id+":"+c,$("<li>"+d+"</li>").attr("rel","n"+ISPConfig.new_tpl_add_id).append(f).appendTo("#template_additional_list ul"),$("#template_additional").val(e.join("/")),alert("additional template "+d+" added to customer")}else alert("no additional template selcted")},delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),d=c.text();c.remove();for(var e=b.split("/"),f=new Array,g=0;g<e.length;g++){var h=e[g].split(":",2);(2!=h.length||h[0]!=a)&&(f[f.length]=e[g])}$("#template_additional").val(f.join("/")),alert("additional template "+d+" deleted from customer")}else if(""!=b){var i=document.getElementById("tpl_add_select").value.split("|",2),j=i[0],d=i[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var a=$(this).text();return a==d?($(this).remove(),!1):this});var f=b,k=new RegExp("(^|/)"+j+"(/|$)");f=f.replace(k,""),f=f.replace("//","/"),$("#template_additional").val(f),alert("additional template "+d+" deleted from customer")}else alert("no additional template selcted")}};$(document).on("change",function(a){var b=a.target.localName;$("#pageForm .table #Filter").length>0&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),("select"==b||"input"==b||"textarea"==b)&&0==$(a.target).hasClass("no-page-form-change")&&(ISPConfig.pageFormChanged=!0)});var $page=$("html, body");$(document).on("click","a[data-load-content],button[data-load-content]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-load-content");return b?void ISPConfig.loadContent(b):this}),$(document).on("click","a[data-capp],button[data-capp]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this).attr("data-capp");return b?void ISPConfig.capp(b):this}),$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){if(a.preventDefault(),ISPConfig.requestsRunning>0)return void console.log("preventing click because there is still a request running.");$page.on("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()}),$page.animate({scrollTop:0},1e3,function(){$page.off("scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove",function(){$page.stop()})});var b=$(this),c=b.attr("data-form-action"),d=b.attr("data-submit-form");"true"==b.attr("data-form-upload")?ISPConfig.submitUploadForm(d,c):ISPConfig.submitForm(d,c)}),$(document).bind("keypress",function(a){"13"==a.which&&$("#pageForm .table #Filter").length>0&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click")),"13"==a.which&&$(".tab-content button.formbutton-success").length>0&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".tab-content button.formbutton-success").not("[disabled='disabled']").trigger("click"))}),$(document).on("click","th[data-column]",function(){var b=$(this),c=b.attr("data-column");if(!c)return this;if($("#pageForm .table #Filter").length>0&&"false"!=b.attr("data-sortable")){var d=$("#Filter"),e=d.attr("data-form-action"),f=d.attr("data-submit-form"),g=b.attr("data-ordered"),h="?";e.indexOf("?")>=0&&(h="&"),e=e+h+"orderby="+c,ISPConfig.submitForm(f,e),$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"),g&&"asc"==g?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}}),$(document).on("click",".addPlaceholder",function(){var a=$(this).text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text(),b=$(this).siblings(":input");b.insertAtCaret(a)}),$(document).on("click","[data-check-fields] > input[type='checkbox']",function(){if($(this).is(":checked"))for(var a=$(this).parent().attr("data-check-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!0)}}),$(document).on("click","[data-uncheck-fields] > input[type='checkbox']",function(){if(0==$(this).is(":checked"))for(var a=$(this).parent().attr("data-uncheck-fields"),b=a.split(/,/),c=0;c<b.length;c++){var d=b[c];$('input[type="checkbox"][name="'+d+'"]').prop("checked",!1)}}),$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){var c=this.selectionStart,d=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(d,this.value.length),this.focus(),this.selectionStart=c+a.length,this.selectionEnd=c+a.length,this.scrollTop=e}else this.value+=a,this.focus()})}}),$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"}),ISPConfig.loadInitContent(),$("#searchform").submit(function(a){a.preventDefault()}),$("#pageForm").submit(function(a){$("#pageForm .table #Filter").length>0&&a.preventDefault()}),$.fn.setCursorPosition=function(a){var b=$(this).get(0);if(b.setSelectionRange)b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();c.collapse(!0),a<0&&(a=$(this).val().length+a),c.moveEnd("character",a),c.moveStart("character",a),c.select()}},$.fn.getCursorPosition=function(){var a=0,b=$(this).get(0);if("number"===typeof b.selectionStart)a="backward"==b.selectionDirection?b.selectionStart:b.selectionEnd;else if(document.selection){this.focus();var c=document.selection.createRange();c.moveStart("character",-b.value.length),a=c.text.length}return a}}); \ No newline at end of file diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 0cdd2f89b342158ee6e496aa4e9351275314efc2..b49e6cd61dfd978365185ea35a8909c504206169 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -10,6 +10,16 @@ <meta name='keywords' lang='en' content='' /> <meta name='robots' content='noindex, nofollow' /> + <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'> + <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'> + <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'> + <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'> + <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'> + <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'> + <meta name='msapplication-TileColor' content='#cc151c'> + <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'> + <meta name='theme-color' content='#cc151c'> + <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> <link rel='stylesheet' href='themes/<tmpl_var name='current_theme'>/assets/stylesheets/ispconfig.css' /> diff --git a/interface/web/themes/default/templates/main_login.tpl.htm b/interface/web/themes/default/templates/main_login.tpl.htm index 11042f02af351ebfdc4f97212bcf3b3b3b1044a5..c52e9071f283b83ff20ebd4b1cc53d039399f5f3 100644 --- a/interface/web/themes/default/templates/main_login.tpl.htm +++ b/interface/web/themes/default/templates/main_login.tpl.htm @@ -8,7 +8,16 @@ <meta name='viewport' content='width=device-width, user-scalable=yes'> <meta name='description' lang='en' content='' /> <meta name='keywords' lang='en' content='' /> - <meta name='robots' content='index, follow' /> + + <link rel='apple-touch-icon' sizes='180x180' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/apple-touch-icon.png'> + <link rel='icon' type='image/png' sizes='32x32' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-32x32.png'> + <link rel='icon' type='image/png' sizes='16x16' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon-16x16.png'> + <link rel='manifest' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/site.webmanifest'> + <link rel='mask-icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/safari-pinned-tab.svg' color='#cc151c'> + <link rel='shortcut icon' href='/themes/<tmpl_var name='current_theme'>/assets/favicon/favicon.ico'> + <meta name='msapplication-TileColor' content='#cc151c'> + <meta name='msapplication-config' content='/themes/<tmpl_var name='current_theme'>/assets/favicon/browserconfig.xml'> + <meta name='theme-color' content='#cc151c'> <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> diff --git a/remoting_client/API-docs/mail_alias_add.html b/remoting_client/API-docs/mail_alias_add.html index 0e87abd8fc89473621ea55c9d38ef340bdedbb0a..101d3bfef8d05f0c9463c87cc496078d961312e7 100644 --- a/remoting_client/API-docs/mail_alias_add.html +++ b/remoting_client/API-docs/mail_alias_add.html @@ -24,6 +24,8 @@ <p class="margin"> destination (<span class="paratype">text</span>)</p> <p class="margin"> type (<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> allow_send_ase (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> greylisting (<span class="paratype">enum('n','y')</span>)</p> <p class="headgrp">Output: </p> <p class="margin"> Returns the ID of the newly added mail alias.</p> <!--<b>Output:</b> diff --git a/remoting_client/API-docs/mail_alias_update.html b/remoting_client/API-docs/mail_alias_update.html index 0a2c6890748558eb245d54ca4879915c1c57a160..f4d960a059e8e374d843ed1c0390a6cb21bcb5a4 100644 --- a/remoting_client/API-docs/mail_alias_update.html +++ b/remoting_client/API-docs/mail_alias_update.html @@ -24,6 +24,8 @@ <p class="margin"> destination (<span class="paratype">text</span>)</p> <p class="margin"> type (<span class="paratype">enum('alias','aliasdomain','forward','catchall')</span>)</p> <p class="margin"> active (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> allow_send_ase (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> greylisting (<span class="paratype">enum('n','y')</span>)</p> <b>Output: </b> <p class="margin"> Returns the number of affected rows.</p> <!--<b>Output:</b>