diff --git a/frontend/src/routes/contact/Address.svelte b/frontend/src/routes/contact/Address.svelte
index 19a86ea..5f00f7f 100644
--- a/frontend/src/routes/contact/Address.svelte
+++ b/frontend/src/routes/contact/Address.svelte
@@ -1,9 +1,9 @@
diff --git a/frontend/src/routes/contact/Card.svelte b/frontend/src/routes/contact/Card.svelte
index be45718..45b1332 100644
--- a/frontend/src/routes/contact/Card.svelte
+++ b/frontend/src/routes/contact/Card.svelte
@@ -1,17 +1,34 @@
-
+
\ No newline at end of file
+
\ No newline at end of file
diff --git a/frontend/src/routes/contact/Email.svelte b/frontend/src/routes/contact/Email.svelte
new file mode 100644
index 0000000..e5d66e7
--- /dev/null
+++ b/frontend/src/routes/contact/Email.svelte
@@ -0,0 +1,9 @@
+
+
+
{adr}
diff --git a/frontend/src/routes/contact/ExtraField.svelte b/frontend/src/routes/contact/ExtraField.svelte
new file mode 100644
index 0000000..f5bb17b
--- /dev/null
+++ b/frontend/src/routes/contact/ExtraField.svelte
@@ -0,0 +1,14 @@
+
+
+{#if field}
+
+ {field.value}
+
+{/if}
\ No newline at end of file
diff --git a/frontend/src/routes/contact/FN.svelte b/frontend/src/routes/contact/FN.svelte
index dd3b5b1..1f91b54 100644
--- a/frontend/src/routes/contact/FN.svelte
+++ b/frontend/src/routes/contact/FN.svelte
@@ -1,9 +1,12 @@
-
{name}
+{#if name}
+
{t('formatted name')}: {name}
+{/if}
\ No newline at end of file
diff --git a/frontend/src/routes/contact/Org.svelte b/frontend/src/routes/contact/Org.svelte
index 0ae5f93..0ea6ecb 100644
--- a/frontend/src/routes/contact/Org.svelte
+++ b/frontend/src/routes/contact/Org.svelte
@@ -1,9 +1,12 @@
-
{o}
+{#if o}
+
{t('organization')}: {o}
+{/if}
\ No newline at end of file
diff --git a/frontend/src/vcard.js b/frontend/src/vcard.js
index 49e7ab1..18be333 100644
--- a/frontend/src/vcard.js
+++ b/frontend/src/vcard.js
@@ -1,5 +1,5 @@
export function addr(vcard){
- const match = vcard.match(/^ADR:(.+)$/m);
+ const match = vcard.match(/^ADR.*:(.+)$/m);
let adr = {
box: null,
ext: null,
@@ -22,9 +22,18 @@ export function addr(vcard){
return adr;
}
+export function email(vcard){
+ const match = vcard.match(/^EMAIL.*:(.+)$/m);
+ return match ? match[1].trim() : '';
+}
+
+export function extra(code){
+ const match = code.match(/^X-(.+):(.+)/)
+ return match ? {name:match[1],value:match[2]} : null
+}
export function fn(vcard){
- const match = vcard.match(/^FN:(.+)$/m);
+ const match = vcard.match(/^FN.*:(.+)$/m);
return match ? match[1].trim() : '';
}
diff --git a/translations/src/main/resources/de.json b/translations/src/main/resources/de.json
index 30a698a..9b9dc34 100644
--- a/translations/src/main/resources/de.json
+++ b/translations/src/main/resources/de.json
@@ -33,6 +33,7 @@
"confirmation": "Bestätigung",
"complete": "abschließen",
"contact": "Kontakt",
+ "contact_number": "Kontakt #{number}",
"contacts": "Kontakte",
"contained_tax": "enthaltene Steuer",
"content": "Inhalt",
diff --git a/translations/src/main/resources/en.json b/translations/src/main/resources/en.json
index f585cbc..e48a177 100644
--- a/translations/src/main/resources/en.json
+++ b/translations/src/main/resources/en.json
@@ -33,6 +33,7 @@
"confirmation": "confirmation",
"complete": "complete",
"contact": "contact",
+ "contact_number": "contact #{number}",
"contacts": "contacts",
"contained_tax": "contained tax",
"content": "content",