Browse Source

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

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
module/contact
Stephan Richter 4 weeks ago
parent
commit
e89f513677
  1. 23
      frontend/src/routes/contact/Card.svelte
  2. 4
      frontend/src/routes/contact/Index.svelte
  3. 2
      frontend/src/routes/contact/URL.svelte
  4. 1
      translations/src/main/resources/de.json
  5. 4
      web/src/main/resources/web/css/default.css

23
frontend/src/routes/contact/Card.svelte

@ -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}

4
frontend/src/routes/contact/Index.svelte

@ -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')}

2
frontend/src/routes/contact/URL.svelte

@ -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}

1
translations/src/main/resources/de.json

@ -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",

4
web/src/main/resources/web/css/default.css

@ -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;
} }
Loading…
Cancel
Save