implemented adding of new addresses, numbers, emails and web pages

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-10-10 20:53:33 +02:00
parent 57122c6d42
commit e89f513677
5 changed files with 28 additions and 6 deletions

View File

@@ -26,6 +26,23 @@
let orgs = $derived(contact.vcard.match(/^ORG.*:.+$/gm)); let orgs = $derived(contact.vcard.match(/^ORG.*:.+$/gm));
let urls = $derived(contact.vcard.match(/^URL.*:.+$/gm)); let urls = $derived(contact.vcard.match(/^URL.*:.+$/gm));
function add_address(){
var new_addr = `ADR;TYPE=WORK:;;${t('street')};${t('locality')};${t('region')};${t('post_code')};${t('country')}`;
patch('END:',`${new_addr}\nEND:`);
}
function add_email(){
patch('END:',`EMAIL:${t('email')}@example.com\nEND:`);
}
function add_number(){
patch('END:',`TEL:${t('phone')}\nEND:`);
}
function add_url(){
patch('END:',`URL:https://example.com\nEND:`);
}
async function drop(){ async function drop(){
for (let n of names){ for (let n of names){
n = name(n); n = name(n);
@@ -114,13 +131,15 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<button class="symbol" onclick={add_address} title={t('add_object',{object:t('address')})}></button>
{#each addresses as code} {#each addresses as code}
<Address {code} {patch} /> <Address {code} {patch} />
{/each} {/each}
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td class="phones">
<button class="symbol" onclick={add_number} title={t('add_object',{object:t('number')})}></button>
{#each numbers as code} {#each numbers as code}
<Number {code} {patch} /> <Number {code} {patch} />
{/each} {/each}
@@ -128,6 +147,7 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<button class="symbol" onclick={add_email} title={t('add_object',{object:t('email')})}></button>
{#each emails as code} {#each emails as code}
<Email {code} {patch} /> <Email {code} {patch} />
{/each} {/each}
@@ -142,6 +162,7 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<button class="symbol" onclick={add_url} title={t('add_object',{object:t('website')})}></button>
{#each urls as code} {#each urls as code}
<URL {code} {patch} /> <URL {code} {patch} />
{/each} {/each}

View File

@@ -23,13 +23,9 @@ PRODID:Umbrella Contact manager by SRSoftware
FN:${t('formatted_name')} FN:${t('formatted_name')}
N:${t('family_name')};${t('given_name')};;; N:${t('family_name')};${t('given_name')};;;
ORG:${t('organization')} ORG:${t('organization')}
EMAIL;TYPE=HOME:${t('email')}
EMAIL;TYPE=WORK:${t('email')} EMAIL;TYPE=WORK:${t('email')}
ADR;TYPE=HOME:;;${t('street')};${t('locality')};${t('region')};${t('post_code')};${t('country')}
ADR;TYPE=WORK:;;${t('street')};${t('locality')};${t('region')};${t('post_code')};${t('country')} ADR;TYPE=WORK:;;${t('street')};${t('locality')};${t('region')};${t('post_code')};${t('country')}
TEL;TYPE=CELL;:${t('phone_cell')} TEL;TYPE=CELL;:${t('phone_cell')}
TEL;TYPE=HOME;:${t('phone_home')}
TEL;TYPE=WORK;:${t('phone_work')}
X-TAX-NUMBER:${t('tax_id')} X-TAX-NUMBER:${t('tax_id')}
X-BANK-ACCOUNT:${t('bank_account')}\\nIBAN:XXXX\\nBIC:XXXX X-BANK-ACCOUNT:${t('bank_account')}\\nIBAN:XXXX\\nBIC:XXXX
X-COURT:${t('local_court')} X-COURT:${t('local_court')}

View File

@@ -14,5 +14,5 @@
</script> </script>
{#if value} {#if value}
<LineEditor type="span" editable={true} {value} {onSet} title={t('url')}/> <LineEditor type="div" editable={true} {value} {onSet} title={t('url')}/>
{/if} {/if}

View File

@@ -293,6 +293,7 @@
"user_module" : "Umbrella User-Verwaltung", "user_module" : "Umbrella User-Verwaltung",
"users": "Benutzer", "users": "Benutzer",
"website": "Website",
"welcome" : "Willkommen, {0}", "welcome" : "Willkommen, {0}",
"wiki": "Wiki", "wiki": "Wiki",
"wikis": "Wiki-Seiten", "wikis": "Wiki-Seiten",

View File

@@ -419,4 +419,8 @@ fieldset.vcard{
border-width: 1px; border-width: 1px;
vertical-align: top; vertical-align: top;
padding: 2px; padding: 2px;
}
.vcard td button.symbol{
float: right;
} }