mirror of
https://github.com/espocrm/espocrm.git
synced 2026-03-04 03:07:01 +00:00
Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
901bee6d3f | ||
|
|
72a0415207 | ||
|
|
de69652137 | ||
|
|
1cd2d6b35e | ||
|
|
9888ec8a6f | ||
|
|
ea5321577a | ||
|
|
23c772e029 | ||
|
|
e67387d9ea | ||
|
|
2156094407 | ||
|
|
03d5bf1ef2 | ||
|
|
42f57409c8 | ||
|
|
69d7ce408d | ||
|
|
15b3c0440c | ||
|
|
e1f0715c4d | ||
|
|
15aec72e97 | ||
|
|
66eade5db7 | ||
|
|
3d89e25349 | ||
|
|
7c890aa83a | ||
|
|
62a29c86ab | ||
|
|
bd57b6bb8e | ||
|
|
9ab1d16ea0 | ||
|
|
435aa28ca2 | ||
|
|
4bd375f154 | ||
|
|
d6521f9176 | ||
|
|
f8e0e4955a | ||
|
|
7957359c15 | ||
|
|
bdc3731b9a | ||
|
|
6b8af1220b | ||
|
|
58fffeaa84 | ||
|
|
5806785286 | ||
|
|
2f2d9b5f6f | ||
|
|
5af20c1ee0 | ||
|
|
7620be3b40 | ||
|
|
86f591b409 | ||
|
|
533dfe24d0 | ||
|
|
10c51dc46e | ||
|
|
a9d24a1e09 | ||
|
|
0cfe093701 | ||
|
|
11ec99fe6a | ||
|
|
b07e5a6da2 | ||
|
|
151738f896 | ||
|
|
075a370e7a |
@@ -29,7 +29,7 @@ class GlobalSearch extends \Espo\Core\Controllers\Base
|
||||
{
|
||||
public function actionSearch($params, $data, $request)
|
||||
{
|
||||
$query = $params['query'];
|
||||
$query = $request->get('q');
|
||||
|
||||
$offset = intval($request->get('offset'));
|
||||
$maxSize = intval($request->get('maxSize'));
|
||||
|
||||
@@ -170,6 +170,7 @@ class Record extends Base
|
||||
$asc = $request->get('asc') === 'true';
|
||||
$sortBy = $request->get('sortBy');
|
||||
$q = $request->get('q');
|
||||
$textFilter = $request->get('textFilter');
|
||||
|
||||
if (empty($maxSize)) {
|
||||
$maxSize = self::MAX_SIZE_LIMIT;
|
||||
|
||||
@@ -194,6 +194,28 @@ class Importer
|
||||
$n = sscanf($reference, '%s %s %d %d espo', $parentType, $parentId, $emailSent, $number);
|
||||
if ($n == 4 && $emailSent < time()) {
|
||||
if (!empty($parentType) && !empty($parentId)) {
|
||||
if ($parentType == 'Lead') {
|
||||
$parent = $this->getEntityManager()->getEntity('Lead', $parentId);
|
||||
if ($parent && $parent->get('status') == 'Converted') {
|
||||
if ($parent->get('createdAccountId')) {
|
||||
$account = $this->getEntityManager()->getEntity('Account', $parent->get('createdAccountId'));
|
||||
if ($account) {
|
||||
$parentType = 'Account';
|
||||
$parentId = $account->id;
|
||||
}
|
||||
} else {
|
||||
if ($this->getConfig()->get('b2cMode')) {
|
||||
if ($parent->get('createdContactId')) {
|
||||
$contact = $this->getEntityManager()->getEntity('Contact', $parent->get('createdContactId'));
|
||||
if ($contact) {
|
||||
$parentType = 'Contact';
|
||||
$parentId = $contact->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$email->set('parentType', $parentType);
|
||||
$email->set('parentId', $parentId);
|
||||
$parentFound = true;
|
||||
|
||||
@@ -242,15 +242,15 @@ class Base
|
||||
|
||||
if ($defs['type'] == 'manyMany') {
|
||||
|
||||
if (!empty($defs['relationName']) && !empty($defs['midKeys'])) {
|
||||
if (!empty($defs['midKeys'])) {
|
||||
$result['distinct'] = true;
|
||||
$result['joins'][] = $link;
|
||||
$key = $defs['midKeys'][1];
|
||||
|
||||
$relationName = lcfirst($defs['relationName']);
|
||||
$middleName = $link . 'Middle';
|
||||
|
||||
$result['customJoin'] .= "
|
||||
JOIN " . $query->toDb($pathName) . " AS `{$pathName}` ON {$pathName}.descendor_id = ".$query->sanitize($relationName) . "." . $query->toDb($key) . "
|
||||
JOIN " . $query->toDb($pathName) . " AS `{$pathName}` ON {$pathName}.descendor_id = ".$query->sanitize($middleName) . "." . $query->toDb($key) . "
|
||||
";
|
||||
$part[$pathName . '.ascendorId'] = $val;
|
||||
}
|
||||
|
||||
@@ -150,7 +150,17 @@ class Config
|
||||
|
||||
$removeData = empty($this->removeData) ? null : $this->removeData;
|
||||
|
||||
$result = $this->getFileManager()->mergePhpContents($this->configPath, $values, $removeData);
|
||||
$data = include($this->configPath);
|
||||
|
||||
foreach ($values as $key => $value) {
|
||||
$data[$key] = $value;
|
||||
}
|
||||
|
||||
foreach ($removeData as $key) {
|
||||
unset($data[$key]);
|
||||
}
|
||||
|
||||
$result = $this->getFileManager()->putPhpContents($this->configPath, $data);
|
||||
|
||||
if ($result) {
|
||||
$this->changedData = array();
|
||||
@@ -220,7 +230,7 @@ class Config
|
||||
$restrictItems = $this->getRestrictItems($isAdmin);
|
||||
|
||||
$values = array();
|
||||
foreach($data as $key => $item) {
|
||||
foreach ($data as $key => $item) {
|
||||
if (!in_array($key, $restrictItems)) {
|
||||
$values[$key]= $item;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class Contact extends \Espo\Core\ORM\Repositories\RDB
|
||||
$result = parent::afterSave($entity, $options);
|
||||
$this->handleAfterSaveAccounts($entity, $options);
|
||||
|
||||
if ($entity->has('targetListId') && $entity->isNew()) {
|
||||
if ($entity->has('targetListId')) {
|
||||
$this->relate($entity, 'targetLists', $entity->get('targetListId'));
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"links": {
|
||||
"contacts": "Kontakte",
|
||||
"opportunities": "Verkaufschancen",
|
||||
"cases": "F<EFBFBD>lle",
|
||||
"cases": "Fälle",
|
||||
"documents": "Dokumente",
|
||||
"meetingsPrimary": "Meetings (erweitert)",
|
||||
"callsPrimary": "Anrufe (erweitert)",
|
||||
@@ -31,7 +31,7 @@
|
||||
"Customer": "Kunde",
|
||||
"Investor": "Investor",
|
||||
"Partner": "Partner",
|
||||
"Reseller": "Wiederverk<EFBFBD>ufer"
|
||||
"Reseller": "Wiederverkäufer"
|
||||
},
|
||||
"industry": {
|
||||
"Agriculture": "Landwirtschaft",
|
||||
@@ -47,7 +47,7 @@
|
||||
"Energy": "Energieerzeuger",
|
||||
"Entertainment & Leisure": "Freizeit- und Unterhaltungsindustrie",
|
||||
"Finance": "Finanzsektor",
|
||||
"Food & Beverage": "Speisen und Getr<EFBFBD>nke",
|
||||
"Food & Beverage": "Speisen und Getränke",
|
||||
"Grocery": "Einzelhandel",
|
||||
"Healthcare": "Gesundheitswesen",
|
||||
"Insurance": "Versicherung",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"layouts": {
|
||||
"detailConvert": "Interessent umwandeln",
|
||||
"listForAccount": "Liste (f<EFBFBD>r Firma)"
|
||||
"listForAccount": "Liste (für Firma)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"options": {
|
||||
"status": {
|
||||
"Planned": "Geplant",
|
||||
"Held": "Durchgef<EFBFBD>hrt",
|
||||
"Not Held": "Nicht durchgef<EFBFBD>hrt"
|
||||
"Held": "Durchgeführt",
|
||||
"Not Held": "Nicht durchgeführt"
|
||||
},
|
||||
"direction": {
|
||||
"Outbound": "Ausgehend",
|
||||
@@ -45,7 +45,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Geplant",
|
||||
"held": "Durchgef<EFBFBD>hrt",
|
||||
"held": "Durchgeführt",
|
||||
"todays": "Heutige"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"endDate": "Enddatum",
|
||||
"targetLists": "Kontaktlisten",
|
||||
"sentCount": "Gesendet",
|
||||
"openedCount": "Ge<EFBFBD>ffnet",
|
||||
"openedCount": "Geöffnet",
|
||||
"clickedCount": "Geklickt",
|
||||
"optedOutCount": "Keine E-Mails",
|
||||
"bouncedCount": "Nicht zustellbar",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"options": {
|
||||
"action": {
|
||||
"Sent": "Gesendet",
|
||||
"Opened": "Ge<EFBFBD>ffnet",
|
||||
"Opened": "Geöffnet",
|
||||
"Opted Out": "Keine E-Mails",
|
||||
"Bounced": "Nicht zustellbar",
|
||||
"Clicked": "Geklickt",
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"sent": "Gesendet",
|
||||
"opened": "Ge<EFBFBD>ffnet",
|
||||
"opened": "Geöffnet",
|
||||
"optedOut": "Keine E-Mails",
|
||||
"bounced": "Nicht zustellbar",
|
||||
"clicked": "Geklickt",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"fields": {
|
||||
"url": "URL",
|
||||
"urlToUse": "Code zu Einf<EFBFBD>gen anstelle einer URL",
|
||||
"urlToUse": "Code zu Einfügen anstelle einer URL",
|
||||
"campaign": "Kampagne"
|
||||
},
|
||||
"links": {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"account": "Firma",
|
||||
"contact": "Kontakt",
|
||||
"contacts": "Kontakte",
|
||||
"priority": "Priorit<EFBFBD>t",
|
||||
"priority": "Priorität",
|
||||
"type": "Typ",
|
||||
"description": "Beschreibung",
|
||||
"inboundEmail": "Eingehende E-Mails"
|
||||
@@ -14,7 +14,7 @@
|
||||
"links": {
|
||||
"inboundEmail": "Eingehende E-Mails",
|
||||
"account": "Firma",
|
||||
"contact": "Kontakt (Prim<EFBFBD>r)",
|
||||
"contact": "Kontakt (Primär)",
|
||||
"Contacts": "Kontakte",
|
||||
"meetings": "Meetings",
|
||||
"calls": "Anrufe",
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
"labels": {
|
||||
"Create Case": "Fall erstellen",
|
||||
"Close": "Schlie<EFBFBD>en",
|
||||
"Close": "Schließen",
|
||||
"Reject": "Ablehnen",
|
||||
"Closed": "Abgeschlossen",
|
||||
"Rejected": "Abgelehnt"
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
},
|
||||
"links": {
|
||||
"opportunities": "Verkaufschancen",
|
||||
"cases": "F<EFBFBD>lle",
|
||||
"cases": "Fälle",
|
||||
"targetLists": "Kontaktlisten",
|
||||
"campaignLogRecords": "Kampagnen Log",
|
||||
"campaign": "Kampagne",
|
||||
"account": "Firma (Prim<EFBFBD>r)",
|
||||
"account": "Firma (Primär)",
|
||||
"accounts": "Firmen",
|
||||
"casesPrimary": "F<EFBFBD>lle (Prim<EFBFBD>r)"
|
||||
"casesPrimary": "Fälle (Primär)"
|
||||
},
|
||||
"labels": {
|
||||
"Create Contact": "Kontakt erstellen"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"file": "Datei",
|
||||
"type": "Typ",
|
||||
"source": "Quelle",
|
||||
"publishDate": "Ver<EFBFBD>ffentlichungsdatum",
|
||||
"publishDate": "Veröffentlichungsdatum",
|
||||
"expirationDate": "Ablaufdatum",
|
||||
"description": "Beschreibung",
|
||||
"accounts": "Firmen",
|
||||
|
||||
@@ -28,32 +28,32 @@
|
||||
"Calendar": "Kalender",
|
||||
"Call": "Anrufe",
|
||||
"Task": "Aufgaben",
|
||||
"Case": "F<EFBFBD>lle",
|
||||
"Case": "Fälle",
|
||||
"Document": "Dokumente",
|
||||
"DocumentFolder": "Dokumente Ordner",
|
||||
"Campaign": "Kampagnen",
|
||||
"TargetList": "Kontaktlisten",
|
||||
"MassEmail": "Massen E-Mails",
|
||||
"EmailQueueItem": "E-Mail Warteschlangeneintr<EFBFBD>ge",
|
||||
"EmailQueueItem": "E-Mail Warteschlangeneinträge",
|
||||
"CampaignTrackingUrl": "Tracking URLs"
|
||||
},
|
||||
"dashlets": {
|
||||
"Leads": "Meine Interessenten",
|
||||
"Opportunities": "Meine Verkaufschancen",
|
||||
"Tasks": "Meine Aufgaben",
|
||||
"Cases": "Meine F<EFBFBD>lle",
|
||||
"Cases": "Meine Fälle",
|
||||
"Calendar": "Kalender",
|
||||
"Calls": "Meine Anrufe",
|
||||
"Meetings": "Meine Meetings",
|
||||
"OpportunitiesByStage": "Verkaufschancen nach Verkaufsphase",
|
||||
"OpportunitiesByLeadSource": "Verkaufschancen nach Quelle",
|
||||
"SalesByMonth": "Ums<EFBFBD>tze nach Monat",
|
||||
"SalesByMonth": "Umsätze nach Monat",
|
||||
"SalesPipeline": "Verkaufspipeline",
|
||||
"Activities": "Meine Aktivit<EFBFBD>ten"
|
||||
"Activities": "Meine Aktivitäten"
|
||||
},
|
||||
"labels": {
|
||||
"Create InboundEmail": "Eingehende E-Mail erstellen",
|
||||
"Activities": "Aktivit<EFBFBD>ten",
|
||||
"Activities": "Aktivitäten",
|
||||
"History": "Verlauf",
|
||||
"Attendees": "Teilnehmer",
|
||||
"Schedule Meeting": "Meeting planen",
|
||||
@@ -70,14 +70,14 @@
|
||||
"billingAddressCountry": "Land",
|
||||
"billingAddressPostalCode": "PLZ",
|
||||
"billingAddressState": "Bundesland/Kanton",
|
||||
"billingAddressStreet": "Stra<EFBFBD>e",
|
||||
"billingAddressStreet": "Straße",
|
||||
"addressCity": "Ort",
|
||||
"addressStreet": "Stra<EFBFBD>e",
|
||||
"addressStreet": "Straße",
|
||||
"addressCountry": "Land",
|
||||
"addressState": "Bundesland/Kanton",
|
||||
"addressPostalCode": "PLZ",
|
||||
"shippingAddressCity": "Ort (Lieferadresse)",
|
||||
"shippingAddressStreet": "Stra<EFBFBD>e (Lieferadresse)",
|
||||
"shippingAddressStreet": "Straße (Lieferadresse)",
|
||||
"shippingAddressCountry": "Land (Lieferadresse)",
|
||||
"shippingAddressState": "Bundesland/Kanton (Lieferadresse)",
|
||||
"shippingAddressPostalCode": "PLZ (Lieferadresse)"
|
||||
@@ -91,7 +91,7 @@
|
||||
"tasks": "Aufgaben",
|
||||
"emails": "E-Mails",
|
||||
"accounts": "Firmen",
|
||||
"cases": "F<EFBFBD>lle",
|
||||
"cases": "Fälle",
|
||||
"documents": "Dokumente",
|
||||
"account": "Firma",
|
||||
"opportunity": "Verkaufschance",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"Assigned": "Zugewiesen",
|
||||
"In Process": "In Arbeit",
|
||||
"Converted": "Umgewandelt",
|
||||
"Recycled": "Wiederer<EFBFBD>ffnet",
|
||||
"Recycled": "Wiedereröffnet",
|
||||
"Dead": "'Gestorben'"
|
||||
},
|
||||
"source": {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"links": {
|
||||
"targetLists": "Kontaktlisten",
|
||||
"queueItems": "Warteschlangeneintr<EFBFBD>ge",
|
||||
"queueItems": "Warteschlangeneinträge",
|
||||
"campaign": "Kampagne",
|
||||
"emailTemplate": "E-Mail Vorlage",
|
||||
"inboundEmail": "E-Mail Konto"
|
||||
@@ -35,7 +35,7 @@
|
||||
"Send Test": "Test senden"
|
||||
},
|
||||
"messages": {
|
||||
"selectAtLeastOneTarget": "Zumindest ein Ziel ausw<EFBFBD>hlen",
|
||||
"selectAtLeastOneTarget": "Zumindest ein Ziel auswählen",
|
||||
"testSent": "Test E-Mail(s) die gesendet werden sollen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
"options": {
|
||||
"status": {
|
||||
"Planned": "Geplant",
|
||||
"Held": "Durchgef<EFBFBD>hrt",
|
||||
"Not Held": "Nicht durchgef<EFBFBD>hrt"
|
||||
"Held": "Durchgeführt",
|
||||
"Not Held": "Nicht durchgeführt"
|
||||
},
|
||||
"acceptanceStatus": {
|
||||
"None": "Kein(e)",
|
||||
@@ -42,7 +42,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"planned": "Geplant",
|
||||
"held": "Durchgef<EFBFBD>hrt",
|
||||
"held": "Durchgeführt",
|
||||
"todays": "Heutige"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"Id. Decision Makers": "Entscheider ident.",
|
||||
"Perception Analysis": "Analyse Sichtweise",
|
||||
"Proposal/Price Quote": "Preisangebot",
|
||||
"Negotiation/Review": "Verhandlung/<EFBFBD>berarbeitung",
|
||||
"Negotiation/Review": "Verhandlung/Überarbeitung",
|
||||
"Closed Won": "Gewonnen",
|
||||
"Closed Lost": "Verloren"
|
||||
}
|
||||
@@ -38,6 +38,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Offen",
|
||||
"won": "Gewonnen"
|
||||
"won": "Gewonnen",
|
||||
"lost": "Lost"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"fields": {
|
||||
"name": "Name",
|
||||
"description": "Beschreibung",
|
||||
"entryCount": "Eingabez<EFBFBD>hler",
|
||||
"entryCount": "Eingabezähler",
|
||||
"campaigns": "Kampagnen",
|
||||
"endDate": "Enddatum",
|
||||
"targetLists": "Kontaktlisten"
|
||||
@@ -26,6 +26,6 @@
|
||||
"labels": {
|
||||
"Create TargetList": "Kontaktliste erstellen",
|
||||
"Opted Out": "Keine E-Mails",
|
||||
"Cancel Opt-Out": "Opt-Out zur<EFBFBD>cksetzen"
|
||||
"Cancel Opt-Out": "Opt-Out zurücksetzen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,18 +4,18 @@
|
||||
"parent": "Bezieht sich auf",
|
||||
"status": "Status",
|
||||
"dateStart": "Startdatum",
|
||||
"dateEnd": "F<EFBFBD>llig am",
|
||||
"dateStartDate": "Startdatum (ganzt<EFBFBD>gig)",
|
||||
"dateEndDate": "Enddatum (ganzt<EFBFBD>gig)",
|
||||
"priority": "Priorit<EFBFBD>t",
|
||||
"dateEnd": "Fällig am",
|
||||
"dateStartDate": "Startdatum (ganztägig)",
|
||||
"dateEndDate": "Enddatum (ganztägig)",
|
||||
"priority": "Priorität",
|
||||
"description": "Beschreibung",
|
||||
"isOverdue": "Ist <EFBFBD>berf<EFBFBD>llig",
|
||||
"isOverdue": "Ist überfällig",
|
||||
"account": "Firma",
|
||||
"dateCompleted": "Datum erledigt",
|
||||
"attachments": "Anh<EFBFBD>nge"
|
||||
"attachments": "Anhänge"
|
||||
},
|
||||
"links": {
|
||||
"attachments": "Anh<EFBFBD>nge"
|
||||
"attachments": "Anhänge"
|
||||
},
|
||||
"options": {
|
||||
"status": {
|
||||
@@ -23,7 +23,7 @@
|
||||
"Started": "In Bearbeitung",
|
||||
"Completed": "Abgeschlossen",
|
||||
"Canceled": "Storniert",
|
||||
"Deferred": "Zur<EFBFBD>ckgestellt"
|
||||
"Deferred": "Zurückgestellt"
|
||||
},
|
||||
"priority" : {
|
||||
"Low": "Niedrig",
|
||||
@@ -37,9 +37,9 @@
|
||||
"Complete": "Fertig"
|
||||
},
|
||||
"presetFilters": {
|
||||
"actual": "Tats<EFBFBD>chlich",
|
||||
"actual": "Tatsächlich",
|
||||
"completed": "Abgeschlossen",
|
||||
"todays": "Heutige",
|
||||
"overdue": "<EFBFBD>berf<EFBFBD>llig"
|
||||
"overdue": "Überfällig"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
},
|
||||
"presetFilters": {
|
||||
"open": "Open",
|
||||
"won": "Won"
|
||||
"won": "Won",
|
||||
"lost": "Lost"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
{"name":"name","width":40,"link":true},
|
||||
{"name":"type","width":20},
|
||||
{"name":"status"},
|
||||
{"name":"endDate"}
|
||||
{"name":"createdAt"}
|
||||
]
|
||||
|
||||
@@ -1 +1 @@
|
||||
["opportunities","cases"]
|
||||
["opportunities", "cases", "targetLists"]
|
||||
|
||||
@@ -1 +1 @@
|
||||
[]
|
||||
["targetLists"]
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
{
|
||||
"name":"statistics",
|
||||
"label":"Statistics",
|
||||
"view":"Crm:Campaign.Record.Panels.Statistics"
|
||||
"view":"Crm:Campaign.Record.Panels.Statistics",
|
||||
"hidden": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -24,12 +24,16 @@
|
||||
},
|
||||
"relationshipPanels": {
|
||||
"campaignLogRecords": {
|
||||
"rowActionsView": "Record.RowActions.Empty",
|
||||
"rowActionsView": "views/record/row-actions/empty",
|
||||
"select": false,
|
||||
"create": false
|
||||
},
|
||||
"opportunities":{
|
||||
"layout":"listForAccount"
|
||||
},
|
||||
"targetLists": {
|
||||
"create": false,
|
||||
"rowActionsView": "views/record/row-actions/relationship-unlink-only"
|
||||
}
|
||||
},
|
||||
"boolFilterList": ["onlyMy"],
|
||||
|
||||
@@ -29,12 +29,9 @@
|
||||
{
|
||||
"name":"convertedTo",
|
||||
"label":"Converted To",
|
||||
"view": "Record.Panels.Side",
|
||||
"view": "crm:views/lead/record/panels/converted-to",
|
||||
"notRefreshable": true,
|
||||
"hidden": true,
|
||||
"options": {
|
||||
"fieldList": ["createdAccount", "createdContact", "createdOpportunity"]
|
||||
}
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"name":"activities",
|
||||
@@ -51,6 +48,33 @@
|
||||
"label":"Tasks",
|
||||
"view":"Crm:Record.Panels.Tasks"
|
||||
}
|
||||
],
|
||||
"edit": [
|
||||
{
|
||||
"name":"convertedTo",
|
||||
"label":"Converted To",
|
||||
"view": "crm:views/lead/record/panels/converted-to",
|
||||
"notRefreshable": true,
|
||||
"hidden": true
|
||||
}
|
||||
],
|
||||
"detailSmall": [
|
||||
{
|
||||
"name":"convertedTo",
|
||||
"label":"Converted To",
|
||||
"view": "crm:views/lead/record/panels/converted-to",
|
||||
"notRefreshable": true,
|
||||
"hidden": true
|
||||
}
|
||||
],
|
||||
"editSmall": [
|
||||
{
|
||||
"name":"convertedTo",
|
||||
"label":"Converted To",
|
||||
"view": "crm:views/lead/record/panels/converted-to",
|
||||
"notRefreshable": true,
|
||||
"hidden": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"relationshipPanels": {
|
||||
@@ -58,6 +82,10 @@
|
||||
"rowActionsView": "Record.RowActions.Empty",
|
||||
"select": false,
|
||||
"create": false
|
||||
},
|
||||
"targetLists": {
|
||||
"create": false,
|
||||
"rowActionsView": "views/record/row-actions/relationship-unlink-only"
|
||||
}
|
||||
},
|
||||
"filterList": [
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
"layoutDetailDisabled": true,
|
||||
"layoutListDisabled": true,
|
||||
"layoutMassUpdateDisabled": true,
|
||||
"importDisabled": true,
|
||||
"noLoad": true
|
||||
},
|
||||
"targetList": {
|
||||
|
||||
@@ -27,7 +27,7 @@ class Account extends \Espo\Core\SelectManagers\Base
|
||||
protected function filterPartners(&$result)
|
||||
{
|
||||
$result['whereClause'][] = array(
|
||||
'type' => 'Partnter'
|
||||
'type' => 'Partner'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,10 @@ class Call extends \Espo\Core\SelectManagers\Base
|
||||
}
|
||||
$result['whereClause'][] = array(
|
||||
'users.id' => $this->getUser()->id,
|
||||
'usersMiddle.status!=' => 'Declined'
|
||||
'OR' => array(
|
||||
'usersMiddle.status!=' => 'Declined',
|
||||
'usersMiddle.status=' => null
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,10 @@ class Meeting extends \Espo\Core\SelectManagers\Base
|
||||
}
|
||||
$result['whereClause'][] = array(
|
||||
'users.id' => $this->getUser()->id,
|
||||
'usersMiddle.status!=' => 'Declined'
|
||||
'OR' => array(
|
||||
'usersMiddle.status!=' => 'Declined',
|
||||
'usersMiddle.status=' => null
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class Opportunity extends \Espo\Core\SelectManagers\Base
|
||||
protected function filterOpen(&$result)
|
||||
{
|
||||
$result['whereClause'][] = array(
|
||||
'stage!=' => array('Closed Won', 'Closed Lost')
|
||||
'stage!=' => ['Closed Won', 'Closed Lost']
|
||||
);
|
||||
}
|
||||
|
||||
@@ -38,5 +38,12 @@ class Opportunity extends \Espo\Core\SelectManagers\Base
|
||||
);
|
||||
}
|
||||
|
||||
protected function filterLost(&$result)
|
||||
{
|
||||
$result['whereClause'][] = array(
|
||||
'stage=' => 'Closed Lost'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class Account extends \Espo\Services\Record
|
||||
)
|
||||
);
|
||||
|
||||
protected $mergeLinkList = array(
|
||||
protected $mergeLinkList = [
|
||||
'opportunities',
|
||||
'cases',
|
||||
'documents',
|
||||
@@ -45,8 +45,9 @@ class Account extends \Espo\Services\Record
|
||||
'emails',
|
||||
'meetingsPrimary',
|
||||
'callsPrimary',
|
||||
'emailsPrimary'
|
||||
);
|
||||
'emailsPrimary',
|
||||
'targetLists'
|
||||
];
|
||||
|
||||
protected function getDuplicateWhereClause(Entity $entity)
|
||||
{
|
||||
|
||||
@@ -179,7 +179,7 @@ class Campaign extends \Espo\Services\Record
|
||||
$actionDate = date('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
if (!$queueItemId && !$this->getEntityManager()->getRepository('CampaignLogRecord')->where(array(
|
||||
if ($queueItemId && $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array(
|
||||
'queueItemId' => $queueItemId,
|
||||
'action' => 'Opened',
|
||||
))->findOne()) {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
************************************************************************/
|
||||
|
||||
namespace Espo\Modules\Crm\Services;
|
||||
|
||||
@@ -26,6 +26,10 @@ use \Espo\ORM\Entity;
|
||||
|
||||
class Contact extends \Espo\Services\Record
|
||||
{
|
||||
protected $mergeLinkList = [
|
||||
'targetLists'
|
||||
];
|
||||
|
||||
protected function getDuplicateWhereClause(Entity $entity)
|
||||
{
|
||||
$data = array(
|
||||
|
||||
@@ -29,12 +29,13 @@ use \Espo\ORM\Entity;
|
||||
|
||||
class Lead extends \Espo\Services\Record
|
||||
{
|
||||
protected $mergeLinkList = array(
|
||||
protected $mergeLinkList = [
|
||||
'tasks',
|
||||
'meetings',
|
||||
'calls',
|
||||
'emails'
|
||||
);
|
||||
'emails',
|
||||
'targetLists'
|
||||
];
|
||||
|
||||
protected function getDuplicateWhereClause(Entity $entity)
|
||||
{
|
||||
|
||||
@@ -273,8 +273,7 @@ class MassEmail extends \Espo\Services\Record
|
||||
|
||||
$body = $emailData['body'];
|
||||
|
||||
$trackOpenedUrl = $this->getConfig()->get('siteUrl') . '?entryPoint=campaignTrackOpened&id=' . $queueItem->id;
|
||||
$trackOpenedHtml = '<img width="1" height="1" src="'.$trackOpenedUrl.'">';
|
||||
|
||||
|
||||
$optOutUrl = $this->getConfig()->get('siteUrl') . '?entryPoint=unsubscribe&id=' . $queueItem->id;
|
||||
$optOutLink = '<a href="'.$optOutUrl.'">'.$this->getLanguage()->translate('Unsubscribe', 'labels', 'Campaign').'</a>';
|
||||
@@ -290,11 +289,19 @@ class MassEmail extends \Espo\Services\Record
|
||||
if (stripos($body, '?entryPoint=unsubscribe&id') === false) {
|
||||
if ($emailData['isHtml']) {
|
||||
$body .= "<br><br>" . $optOutLink;
|
||||
} else {
|
||||
$body .= "\n\n" . $optOutUrl;
|
||||
}
|
||||
}
|
||||
|
||||
$trackOpenedUrl = $this->getConfig()->get('siteUrl') . '?entryPoint=campaignTrackOpened&id=' . $queueItem->id;
|
||||
$trackOpenedHtml = '<img width="1" height="1" border="0" src="'.$trackOpenedUrl.'">';
|
||||
|
||||
if ($massEmail->get('campaignId')) {
|
||||
if ($emailData['isHtml']) {
|
||||
if ($massEmail->get('campaignId')) {
|
||||
$body .= $trackOpenedHtml;
|
||||
}
|
||||
} else {
|
||||
$body .= "\n\n" . $optOutUrl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,7 +399,6 @@ class MassEmail extends \Espo\Services\Record
|
||||
|
||||
} catch (\Exception $e) {
|
||||
if ($queueItem->get('attemptCount') >= self::MAX_ATTEMPT_COUNT) {
|
||||
$this->setQueueItemFailed($queueItem);
|
||||
$queueItem->set('status', 'Failed');
|
||||
}
|
||||
$this->getEntityManager()->saveEntity($queueItem);
|
||||
|
||||
@@ -47,7 +47,7 @@ class Email extends \Espo\Core\Notificators\Base
|
||||
return;
|
||||
}
|
||||
|
||||
if ($entity->get('status') === 'Sent') {
|
||||
if ($entity->get('isJustSent')) {
|
||||
$previousUserIdList = [];
|
||||
} else {
|
||||
$previousUserIdList = $entity->getFetched('usersIds');
|
||||
|
||||
@@ -113,6 +113,12 @@ abstract class Base
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($params['additionalSelectColumns']) && is_array($params['additionalSelectColumns'])) {
|
||||
foreach ($params['additionalSelectColumns'] as $column => $field) {
|
||||
$selectPart .= ", " . $column . " AS `{$field}`";
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
$aggDist = false;
|
||||
if ($params['distinct'] && $params['aggregation'] == 'COUNT') {
|
||||
@@ -427,7 +433,7 @@ abstract class Base
|
||||
{
|
||||
if (strpos($orderBy, '.') !== false) {
|
||||
list($alias, $field) = explode('.', $orderBy);
|
||||
$fieldPath = $this->toDb($alias) . '.' . $this->toDb($this->sanitize($field));
|
||||
$fieldPath = $this->sanitize($alias) . '.' . $this->toDb($this->sanitize($field));
|
||||
} else {
|
||||
$fieldPath = $this->getFieldPath($entity, $orderBy);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ class Preferences extends \Espo\Core\ORM\Repository
|
||||
$fields = $this->getMetadata()->get('entityDefs.Preferences.fields');
|
||||
$defaults = array();
|
||||
$defaults['dashboardLayout'] = $this->getMetadata()->get('app.defaultDashboardLayouts.Standard');
|
||||
$defaults['dashletOptions'] = $this->getMetadata()->get('app.defaultDashboardOptions.Standard');
|
||||
foreach ($fields as $field => $d) {
|
||||
if (array_key_exists('default', $d)) {
|
||||
$defaults[$field] = $d['default'];
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
"Email": "E-Mail",
|
||||
"Data": "Daten",
|
||||
"Customization": "Anpassung",
|
||||
"Available Fields": "Verf<EFBFBD>gbare Felder",
|
||||
"Available Fields": "Verfügbare Felder",
|
||||
"Layout": "Aktuelles Layout",
|
||||
"Entity Manager": "Entit<EFBFBD>ts-/Modulmanager",
|
||||
"Add Panel": "Panel hinzuf<EFBFBD>gen",
|
||||
"Add Field": "Feld hinzuf<EFBFBD>gen",
|
||||
"Entity Manager": "Entitäts-/Modulmanager",
|
||||
"Add Panel": "Panel hinzufügen",
|
||||
"Add Field": "Feld hinzufügen",
|
||||
"Settings": "Einstellungen",
|
||||
"Scheduled Jobs": "Geplante Jobs",
|
||||
"Upgrade": "Aktualisierung",
|
||||
@@ -25,10 +25,10 @@
|
||||
"Email Templates": "E-Mail Vorlagen",
|
||||
"Import": "Import",
|
||||
"Layout Manager": "Layouts anpassen",
|
||||
"User Interface": "Benutzeroberfl<EFBFBD>che",
|
||||
"User Interface": "Benutzeroberfläche",
|
||||
"Auth Tokens": "Auth Tokens",
|
||||
"Authentication": "Authentifizierung",
|
||||
"Currency": "W<EFBFBD>hrung",
|
||||
"Currency": "Währung",
|
||||
"Integrations": "Integrationen",
|
||||
"Extensions": "Erweiterungen",
|
||||
"Upload": "Hochladen",
|
||||
@@ -36,19 +36,19 @@
|
||||
"Upgrading...": "Aktualisiere....",
|
||||
"Upgraded successfully": "Erfolgreich aktualisiert",
|
||||
"Installed successfully": "Erfolgreich installiert",
|
||||
"Ready for upgrade": "Bereit f<EFBFBD>r Aktualisierung",
|
||||
"Run Upgrade": "Aktualisierung duchf<EFBFBD>hren",
|
||||
"Ready for upgrade": "Bereit für Aktualisierung",
|
||||
"Run Upgrade": "Aktualisierung duchführen",
|
||||
"Install": "Installieren",
|
||||
"Ready for installation": "Bereit f<EFBFBD>r Installation",
|
||||
"Ready for installation": "Bereit für Installation",
|
||||
"Uninstalling...": "Deinstalliere...",
|
||||
"Uninstalled": "Deinstalliert",
|
||||
"Create Entity": "Entit<EFBFBD>t/Modul erstellen",
|
||||
"Edit Entity": "Entit<EFBFBD>t/Modul bearbeiten",
|
||||
"Create Entity": "Entität/Modul erstellen",
|
||||
"Edit Entity": "Entität/Modul bearbeiten",
|
||||
"Create Link": "Relation erstellen",
|
||||
"Edit Link": "Relation bearbeiten",
|
||||
"Notifications": "Benachrichtigungen",
|
||||
"Jobs": "Jobs",
|
||||
"Reset to Default": "Zur<EFBFBD>cksetzen auf Standard",
|
||||
"Reset to Default": "Zurücksetzen auf Standard",
|
||||
"Email Filters": "E-Mail Filter"
|
||||
},
|
||||
"layouts": {
|
||||
@@ -57,7 +57,7 @@
|
||||
"listSmall": "Liste (Klein)",
|
||||
"detailSmall": "Detail (Klein)",
|
||||
"filters": "Suchfilter",
|
||||
"massUpdate": "Massen<EFBFBD>nderung",
|
||||
"massUpdate": "Massenänderung",
|
||||
"relationships": "Beziehungen"
|
||||
},
|
||||
"fieldTypes": {
|
||||
@@ -67,21 +67,21 @@
|
||||
"duration": "Dauer",
|
||||
"password": "Passwort",
|
||||
"parsonName": "Person Name",
|
||||
"autoincrement": "Automatisch hochz<EFBFBD>hlen",
|
||||
"autoincrement": "Automatisch hochzählen",
|
||||
"bool": "Bool",
|
||||
"currency": "W<EFBFBD>hrung",
|
||||
"currency": "Währung",
|
||||
"date": "Datum",
|
||||
"datetime": "Datum/Zeit",
|
||||
"datetimeOptional": "Datum/Datum-Zeit",
|
||||
"email": "E-Mail",
|
||||
"enum": "Einfachauswahl",
|
||||
"enumInt": "Einfachauswahl Ganzzahlwerte",
|
||||
"enumFloat": "Einfachauswahl Flie<EFBFBD>kommawerte",
|
||||
"float": "Flie<EFBFBD>komma",
|
||||
"enumFloat": "Einfachauswahl Fließkommawerte",
|
||||
"float": "Fließkomma",
|
||||
"int": "Ganzzahl",
|
||||
"link": "Link",
|
||||
"linkMultiple": "Mehrfachlinks",
|
||||
"linkParent": "<EFBFBD>bergeordneter Link",
|
||||
"linkParent": "Übergeordneter Link",
|
||||
"multienim": "Mehrfachauswahl",
|
||||
"phone": "Telefon",
|
||||
"text": "Textbox",
|
||||
@@ -90,10 +90,11 @@
|
||||
"file": "Datei",
|
||||
"image": "Bild",
|
||||
"multiEnum": "Mehrfachauswahl",
|
||||
"attachmentMultiple": "Mehrfach Anh<EFBFBD>nge",
|
||||
"attachmentMultiple": "Mehrfach Anhänge",
|
||||
"rangeInt": "Bereich Ganzzahl",
|
||||
"rangeFloat": "Bereich Flie<EFBFBD>kommawerte",
|
||||
"rangeCurrency": "bereich W<EFBFBD>hrung"
|
||||
"rangeFloat": "Bereich Fließkommawerte",
|
||||
"rangeCurrency": "bereich Währung",
|
||||
"wysiwyg": "Wysiwyg"
|
||||
},
|
||||
"fields": {
|
||||
"type": "Typ",
|
||||
@@ -101,7 +102,7 @@
|
||||
"label": "Bezeichnung",
|
||||
"required": "Erforderlich",
|
||||
"default": "Standard",
|
||||
"maxLength": "Maximall<EFBFBD>nge",
|
||||
"maxLength": "Maximallänge",
|
||||
"options": "Optionen",
|
||||
"after": "Nach (Feld)",
|
||||
"before": "Vor (Feld)",
|
||||
@@ -109,15 +110,16 @@
|
||||
"field": "Feld",
|
||||
"min": "Min",
|
||||
"max": "Max",
|
||||
"translation": "<EFBFBD>bersetzung",
|
||||
"previewSize": "Vorschau Gr<EFBFBD><EFBFBD>e",
|
||||
"translation": "Übersetzung",
|
||||
"previewSize": "Vorschau Größe",
|
||||
"noEmptyString": "Keine leere Zeichenkette",
|
||||
"defaultType": "Standardtyp",
|
||||
"seeMoreDisabled": "Abschneiden des Texts verhindern",
|
||||
"entityList": "Entit<EFBFBD>tsliste",
|
||||
"entityList": "Entitätsliste",
|
||||
"isSorted": "Sortiert (alphabetisch)",
|
||||
"audited": "Auditiert",
|
||||
"trim": "Abschneiden"
|
||||
"trim": "Abschneiden",
|
||||
"height": "Height (px)"
|
||||
},
|
||||
"messages": {
|
||||
"upgradeVersion": "Ihr EspoCRM wird nun auf Version <strong>{version}</strong> aktualisiert. Dies kann einige Zeit dauern.",
|
||||
@@ -125,38 +127,38 @@
|
||||
"upgradeBackup": "Wie empfehlen VOR einer Aktualisierung die Espo Dateien sowie die Datenbank zu sichern.",
|
||||
"thousandSeparatorEqualsDecimalMark": "Das Tausendertrennzeichen kann nicht gleich dem Dezimaltrennzeichen sein",
|
||||
"userHasNoEmailAddress": "Der Benutzer hat keine E-Mail Adresse.",
|
||||
"selectEntityType": "Modul/Entit<EFBFBD>t links ausw<EFBFBD>hlen",
|
||||
"selectUpgradePackage": "Aktualisierungspaket ausw<EFBFBD>hlen",
|
||||
"selectEntityType": "Modul/Entität links auswählen",
|
||||
"selectUpgradePackage": "Aktualisierungspaket auswählen",
|
||||
"downloadUpgradePackage": "Aktualisierungspaket(e) <a href=\"{url}\">hier </a>herunterladen.",
|
||||
"selectLayout": "Layout zum Editieren links ausw<EFBFBD>hlen",
|
||||
"selectExtensionPackage": "Erweiterungspaket ausw<EFBFBD>hlen",
|
||||
"selectLayout": "Layout zum Editieren links auswählen",
|
||||
"selectExtensionPackage": "Erweiterungspaket auswählen",
|
||||
"extensionInstalled": "Erweiterung {name} {version} wurde installiert.",
|
||||
"installExtension": "Erweiterung {name} {version} ist bereit f<EFBFBD>r die Installation",
|
||||
"installExtension": "Erweiterung {name} {version} ist bereit für die Installation",
|
||||
"uninstallConfirmation": "Wollen Sie die Erweiterung wirklich deinstallieren?"
|
||||
},
|
||||
"descriptions": {
|
||||
"settings": "Systemeinstellungen der Applikation.",
|
||||
"scheduledJob": "Aufgaben die durch einen Cronjob ausgef<EFBFBD>hrt werden.",
|
||||
"scheduledJob": "Aufgaben die durch einen Cronjob ausgeführt werden.",
|
||||
"upgrade": "EspoCRM aktualisieren.",
|
||||
"clearCache": "Alle Cache Dateien leeren.",
|
||||
"rebuild": "Wiederherstellung des Backends und Leeren des Cache.",
|
||||
"users": "Benutzerverwaltung.",
|
||||
"teams": "Teamverwaltung.",
|
||||
"roles": "Rollenverwaltung.",
|
||||
"outboundEmails": "SMTP Einstellungen f<EFBFBD>r ausgehende E-Mails.",
|
||||
"groupEmailAccounts": "IMAP Gruppenkonten. E-Mail Import und E-Mails f<EFBFBD>r F<EFBFBD>lle.",
|
||||
"emailTemplates": "Vorlagen f<EFBFBD>r ausgehende E-Mails.",
|
||||
"outboundEmails": "SMTP Einstellungen für ausgehende E-Mails.",
|
||||
"groupEmailAccounts": "IMAP Gruppenkonten. E-Mail Import und E-Mails für Fälle.",
|
||||
"emailTemplates": "Vorlagen für ausgehende E-Mails.",
|
||||
"import": "Datenimport aus CSV Datei.",
|
||||
"layoutManager": "Layouts anpassen (Liste, Detailansicht, Bearbeitungsansicht, Suche, Massenaktualisierung).",
|
||||
"entityManager": "Module/Entit<EFBFBD>ten selbst erstellen, existente bearbeiten, Felder und Relationen verwalten.",
|
||||
"userInterface": "Benutzeroberfl<EFBFBD>che anpassen.",
|
||||
"entityManager": "Module/Entitäten selbst erstellen, existente bearbeiten, Felder und Relationen verwalten.",
|
||||
"userInterface": "Benutzeroberfläche anpassen.",
|
||||
"authTokens": "Aktive Auth Sessions. IP Adresse und letztes Zugriffsdatum,",
|
||||
"authentication": "Authentifizierungs Einstellungen.",
|
||||
"currency": "W<EFBFBD>hrungseinstellungen und Kurse",
|
||||
"currency": "Währungseinstellungen und Kurse",
|
||||
"extensions": "Erweiterungen installieren oder deinstallieren",
|
||||
"integrations": "Integration mit Drittanbietern ",
|
||||
"notifications": "In-App und E-Mail Benachrichtigungseinstellungen.",
|
||||
"inboundEmails": "Einstellungen f<EFBFBD>r eingehende E-Mails",
|
||||
"inboundEmails": "Einstellungen für eingehende E-Mails",
|
||||
"emailFilters": "E-Mails auf die die angegebenen Filter zutreffen werden nicht importiert"
|
||||
},
|
||||
"options": {
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
"dateFrom": "Von Datum",
|
||||
"dateTo": "Bis Datum",
|
||||
"autorefreshInterval": "Aktualisierungsintervall",
|
||||
"displayRecords": "S<EFBFBD>tze anzeigen",
|
||||
"isDoubleHeight": "Zweifache H<EFBFBD>he",
|
||||
"displayRecords": "Sätze anzeigen",
|
||||
"isDoubleHeight": "Zweifache Höhe",
|
||||
"mode": "Modus"
|
||||
},
|
||||
"options": {
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
"isHtml": "Ist HTML",
|
||||
"body": "Inhalt",
|
||||
"subject": "Betreff",
|
||||
"attachments": "Anh<EFBFBD>nge",
|
||||
"selectTemplate": "Vorlage w<EFBFBD>hlen",
|
||||
"attachments": "Anhänge",
|
||||
"selectTemplate": "Vorlage wählen",
|
||||
"fromEmailAddress": "Von Adresse",
|
||||
"toEmailAddresses": "An Adresse",
|
||||
"emailAddress": "E-Mail Adresse",
|
||||
@@ -46,7 +46,7 @@
|
||||
"Forward": "Weiterleiten",
|
||||
"Original message": "Originalnachricht",
|
||||
"Forwarded message": "Weitergeleitete Nachricht:",
|
||||
"Email Accounts": "Pers<EFBFBD>nliche E-Mail Konten",
|
||||
"Email Accounts": "Persönliche E-Mail Konten",
|
||||
"Inbound Emails": "Gruppen E-Mail Konten",
|
||||
"Email Templates": "E-Mail Vorlagen",
|
||||
"Send Test Email": "Test E-Mail senden",
|
||||
@@ -70,7 +70,7 @@
|
||||
"sent": "Gesendet",
|
||||
"archived": "Archiviert",
|
||||
"inbox": "Posteingang",
|
||||
"drafts": "Entw<EFBFBD>rfe"
|
||||
"drafts": "Entwürfe"
|
||||
},
|
||||
"massActions": {
|
||||
"markAsRead": "Als gelesen markieren",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort",
|
||||
"port": "Port",
|
||||
"monitoredFolders": "<EFBFBD>berwachte Ordner",
|
||||
"monitoredFolders": "Überwachte Ordner",
|
||||
"ssl": "SSL",
|
||||
"fetchSince": "Holen seit",
|
||||
"emailAddress": "E-Mail Adresse",
|
||||
@@ -27,14 +27,14 @@
|
||||
"Create EmailAccount": "E-Mail Konto erstellen",
|
||||
"IMAP": "IMAP",
|
||||
"Main": "Wichtig",
|
||||
"Test Connection": "Verbindung <EFBFBD>berpr<EFBFBD>fen"
|
||||
"Test Connection": "Verbindung überprüfen"
|
||||
},
|
||||
"messages": {
|
||||
"couldNotConnectToImap": "Kann keine Verbindung zum IMAP Server herstellen",
|
||||
"connectionIsOk": "Verbindung ist in Ordnung"
|
||||
},
|
||||
"tooltips": {
|
||||
"monitoredFolders": "Sie k<EFBFBD>nnen einen 'Gesendet' Ordner hinzuf<EFBFBD>gen um E-Mails zu synchronisieren, die von einem externen Programm gesendet wurden.",
|
||||
"monitoredFolders": "Sie können einen 'Gesendet' Ordner hinzufügen um E-Mails zu synchronisieren, die von einem externen Programm gesendet wurden.",
|
||||
"storeSentEmails": "Gesendete E-Mail werden auf einem IMAP Server gespeichert. Die E-Mail Adresse muss jene sein von der die E-Mail gesendet wurde."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"labels": {
|
||||
"Primary": "Prim<EFBFBD>r",
|
||||
"Primary": "Primär",
|
||||
"Opted Out": "Keine E-Mails",
|
||||
"Invalid": "Ung<EFBFBD>ltig"
|
||||
"Invalid": "Ungültig"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
"Create EmailFilter": "E.Mail Filter erstellen"
|
||||
},
|
||||
"tooltips": {
|
||||
"name": "Ein Name f<EFBFBD>r den Filter",
|
||||
"subject": "Verwendung des Platzhalters *:\n\ntext* - beginnt mit text,\n*text* - enth<EFBFBD>lt text,\n*text - endet mit text.",
|
||||
"bodyContains": "Der Text der E-Mail enth<EFBFBD>lt eines der angegebenen Worte oder Phrasen.",
|
||||
"from": "Die E-Mails werden von der angegebenen Adresse gesendet. Bitte leer lassen wenn nicht ben<EFBFBD>tigt.",
|
||||
"to": "Die E-Mails werden an die angegebene Adresse gesendet. Bitte leer lassen wenn nicht ben<EFBFBD>tigt.",
|
||||
"parent": "Leer lassen um den Filter global anzuwenden (f<EFBFBD>r alle eingehenden E-Mails)."
|
||||
"name": "Ein Name für den Filter",
|
||||
"subject": "Verwendung des Platzhalters *:\n\ntext* - beginnt mit text,\n*text* - enthält text,\n*text - endet mit text.",
|
||||
"bodyContains": "Der Text der E-Mail enthält eines der angegebenen Worte oder Phrasen.",
|
||||
"from": "Die E-Mails werden von der angegebenen Adresse gesendet. Bitte leer lassen wenn nicht benötigt.",
|
||||
"to": "Die E-Mails werden an die angegebene Adresse gesendet. Bitte leer lassen wenn nicht benötigt.",
|
||||
"parent": "Leer lassen um den Filter global anzuwenden (für alle eingehenden E-Mails)."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"isHtml": "Ist HTML",
|
||||
"body": "Inhalt",
|
||||
"subject": "Betreff",
|
||||
"attachments": "Anh<EFBFBD>nge",
|
||||
"attachments": "Anhänge",
|
||||
"insertField": "Project-Id-Version: Espo de_DE\nPOT-Creation-Date: \nPO-Revision-Date: \nLast-Translator: Robert Laussegger <info@iscongroup.net>\nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\nX-Generator: Poedit 1.6.5\n"
|
||||
},
|
||||
"links": {
|
||||
@@ -15,6 +15,6 @@
|
||||
"Info": "Info"
|
||||
},
|
||||
"messages": {
|
||||
"infoText": "Verf<EFBFBD>gbare Variablen:\n\n{optOutUrl} – URL f<EFBFBD>r den Abmeldelink};\n\n{optOutLink} – ein Abmeldelink."
|
||||
"infoText": "Verfügbare Variablen:\n\n{optOutUrl} – URL für den Abmeldelink};\n\n{optOutLink} – ein Abmeldelink."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
"type": "Typ",
|
||||
"labelSingular": "Bezeichnung Einzahl",
|
||||
"labelPlural": "Bezeichnung Mehrzahl",
|
||||
"stream": "Vorg<EFBFBD>nge",
|
||||
"stream": "Vorgänge",
|
||||
"label": "Bezeichnung",
|
||||
"linkType": "Relationstyp",
|
||||
"entityForeign": "Fremdentit<EFBFBD>t/-modul",
|
||||
"entityForeign": "Fremdentität/-modul",
|
||||
"linkForeign": "Remdrelation/-modul",
|
||||
"link": "Link",
|
||||
"labelForeign": "Fremdbezeichnung",
|
||||
@@ -38,7 +38,7 @@
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"entityCreated": "Entit<EFBFBD>t wurde erstellt",
|
||||
"entityCreated": "Entität wurde erstellt",
|
||||
"linkAlreadyExists": "Konflikt Name Relation"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
"Team": "Team",
|
||||
"Role": "Rolle",
|
||||
"EmailTemplate": "E-Mail Vorlage",
|
||||
"EmailAccount": "Pers<EFBFBD>nliches E-Mail Konto",
|
||||
"EmailAccountScope": "Pers<EFBFBD>nliches E-Mail Konto",
|
||||
"EmailAccount": "Persönliches E-Mail Konto",
|
||||
"EmailAccountScope": "Persönliches E-Mail Konto",
|
||||
"OutboundEmail": "Ausgehende E-Mail",
|
||||
"ScheduledJob": "Geplante Aufgabe",
|
||||
"ExternalAccount": "Externes Konto",
|
||||
"Extension": "Erweiterung",
|
||||
"Dashboard": "<EFBFBD>bersicht",
|
||||
"Dashboard": "Übersicht",
|
||||
"InboundEmail": "Gruppen E-Mail Konto",
|
||||
"Stream": "Vorg<EFBFBD>nge",
|
||||
"Stream": "Vorgänge",
|
||||
"Import": "Import",
|
||||
"Template": "Vorlage",
|
||||
"Job": "Job",
|
||||
@@ -25,15 +25,15 @@
|
||||
"Team": "Teams",
|
||||
"Role": "Rollen",
|
||||
"EmailTemplate": "E-Mail Vorlagen",
|
||||
"EmailAccount": "Pers<EFBFBD>nliche E-Mail Konten",
|
||||
"EmailAccountScope": "Pers<EFBFBD>nliche E-Mail Konten",
|
||||
"EmailAccount": "Persönliche E-Mail Konten",
|
||||
"EmailAccountScope": "Persönliche E-Mail Konten",
|
||||
"OutboundEmail": "Ausgehende E-Mails",
|
||||
"ScheduledJob": "Geplante Jobs",
|
||||
"ExternalAccount": "Externe Konten",
|
||||
"Extension": "Erweiterungen",
|
||||
"Dashboard": "<EFBFBD>bersicht",
|
||||
"Dashboard": "Übersicht",
|
||||
"InboundEmail": "Gruppen E-Mail Konten",
|
||||
"Stream": "Vorg<EFBFBD>nge",
|
||||
"Stream": "Vorgänge",
|
||||
"Import": "Importergebnis",
|
||||
"Template": "Vorlagen",
|
||||
"Job": "Jobs",
|
||||
@@ -41,61 +41,61 @@
|
||||
},
|
||||
"labels": {
|
||||
"Misc": "Verschiedenes",
|
||||
"Merge": "Zusammenf<EFBFBD>hren",
|
||||
"Merge": "Zusammenführen",
|
||||
"None": "Kein(e)",
|
||||
"by": "von",
|
||||
"Saved": "Gespeichert.",
|
||||
"Error": "Fehler",
|
||||
"Select": "Ausw<EFBFBD>hlen",
|
||||
"Not valid": "Ung<EFBFBD>ltig",
|
||||
"Select": "Auswählen",
|
||||
"Not valid": "Ungültig",
|
||||
"Please wait...": "Bitte warten...",
|
||||
"Please wait": "Bitte warten",
|
||||
"Loading...": "Lade...",
|
||||
"Uploading...": "Lade hoch...",
|
||||
"Sending...": "Wird gesendet...",
|
||||
"Merging...": "Zusammenf<EFBFBD>hren",
|
||||
"Merged": "Zusammengef<EFBFBD>hrt",
|
||||
"Removed": "Gel<EFBFBD>scht",
|
||||
"Merging...": "Zusammenführen",
|
||||
"Merged": "Zusammengeführt",
|
||||
"Removed": "Gelöscht",
|
||||
"Posted": "Geposted",
|
||||
"Linked": "Verlinkt",
|
||||
"Unlinked": "Verkn<EFBFBD>pfung gel<EFBFBD>scht",
|
||||
"Unlinked": "Verknüpfung gelöscht",
|
||||
"Done": "Fertig",
|
||||
"Access denied": "Zugriff verweigert",
|
||||
"Access": "Zugang",
|
||||
"Are you sure?": "Sind Sie sicher?",
|
||||
"Record has been removed": "Datensatz wurde gel<EFBFBD>scht",
|
||||
"Record has been removed": "Datensatz wurde gelöscht",
|
||||
"Wrong username/password": "Falscher Benutzername/Passwort",
|
||||
"Post cannot be empty": "Notiz darf nicht leer sein",
|
||||
"Removing...": "L<EFBFBD>sche...",
|
||||
"Unlinking...": "L<EFBFBD>sche Verkn<EFBFBD>pfung...",
|
||||
"Removing...": "Lösche...",
|
||||
"Unlinking...": "Lösche Verknüpfung...",
|
||||
"Posting...": "Poste...",
|
||||
"Username can not be empty!": "Der Benutzername darf nicht leer sein!",
|
||||
"Cache is not enabled": "Cache ist nicht aktiviert",
|
||||
"Cache has been cleared": "Der Cache wurde geleert",
|
||||
"Rebuild has been done": "Wiederherstellen wurde durchgef<EFBFBD>hrt",
|
||||
"Rebuild has been done": "Wiederherstellen wurde durchgeführt",
|
||||
"Saving...": "Speichere...",
|
||||
"Modified": "Ver<EFBFBD>ndert",
|
||||
"Modified": "Verändert",
|
||||
"Created": "Erstellt",
|
||||
"Create": "Erstellen",
|
||||
"create": "erstellen",
|
||||
"Overview": "<EFBFBD>berblick",
|
||||
"Overview": "Überblick",
|
||||
"Details": "Details",
|
||||
"Add Field": "Feld hinzuf<EFBFBD>gen",
|
||||
"Add Dashlet": "Dashlet hinzuf<EFBFBD>gen",
|
||||
"Add Field": "Feld hinzufügen",
|
||||
"Add Dashlet": "Dashlet hinzufügen",
|
||||
"Filter": "Filter",
|
||||
"Edit Dashboard": "<EFBFBD>bersicht bearbeiten",
|
||||
"Add": "Hinzuf<EFBFBD>gen",
|
||||
"Add Item": "Eintrag hinzuf<EFBFBD>gen",
|
||||
"Reset": "Zur<EFBFBD>cksetzen",
|
||||
"Menu": "Men<EFBFBD>",
|
||||
"Edit Dashboard": "Übersicht bearbeiten",
|
||||
"Add": "Hinzufügen",
|
||||
"Add Item": "Eintrag hinzufügen",
|
||||
"Reset": "Zurücksetzen",
|
||||
"Menu": "Menü",
|
||||
"More": "Mehr",
|
||||
"Search": "Suchen",
|
||||
"Only My": "Nur Meine",
|
||||
"Open": "Offen",
|
||||
"Admin": "Admin",
|
||||
"About": "<EFBFBD>ber",
|
||||
"About": "Über",
|
||||
"Refresh": "Aktualisieren",
|
||||
"Remove": "L<EFBFBD>schen",
|
||||
"Remove": "Löschen",
|
||||
"Options": "Optionen",
|
||||
"Username": "Benutzername",
|
||||
"Password": "Passwort",
|
||||
@@ -103,7 +103,7 @@
|
||||
"Log Out": "Abmelden",
|
||||
"Preferences": "Benutzereinstellungen",
|
||||
"State": "Bundesland/Kanton",
|
||||
"Street": "Stra<EFBFBD>e",
|
||||
"Street": "Straße",
|
||||
"Country": "Land",
|
||||
"City": "Ort",
|
||||
"PostalCode": "PLZ",
|
||||
@@ -112,7 +112,7 @@
|
||||
"Followers": "Beobachter",
|
||||
"Clear Local Cache": "Lokalen Cache leeren",
|
||||
"Actions": "Aktionen",
|
||||
"Delete": "L<EFBFBD>schen",
|
||||
"Delete": "Löschen",
|
||||
"Update": "Aktualisieren",
|
||||
"Save": "Speichern",
|
||||
"Edit": "Bearbeiten",
|
||||
@@ -120,32 +120,32 @@
|
||||
"Cancel": "Abbrechen",
|
||||
"Apply": "Anwenden",
|
||||
"Unlink": "Link entfernen",
|
||||
"Mass Update": "Massen<EFBFBD>nderung",
|
||||
"Mass Update": "Massenänderung",
|
||||
"Export": "Exportieren",
|
||||
"No Data": "Keine Daten",
|
||||
"No Access": "Kein Zugriff",
|
||||
"All": "Alle",
|
||||
"Active": "Aktiv",
|
||||
"Inactive": "Inaktiv",
|
||||
"Write your comment here": "Notiz hier einf<EFBFBD>gen",
|
||||
"Write your comment here": "Notiz hier einfügen",
|
||||
"Post": "Senden",
|
||||
"Stream": "Vorg<EFBFBD>nge",
|
||||
"Stream": "Vorgänge",
|
||||
"Show more": "Mehr anzeigen",
|
||||
"Dashlet Options": "Dashlet Optionen",
|
||||
"Full Form": "Komplettes Formular",
|
||||
"Insert": "Einf<EFBFBD>gen",
|
||||
"Insert": "Einfügen",
|
||||
"Person": "Person",
|
||||
"First Name": "Vorname",
|
||||
"Last Name": "Nachname",
|
||||
"Original": "Original",
|
||||
"You": "Sie",
|
||||
"you": "Sie",
|
||||
"change": "<EFBFBD>ndern",
|
||||
"Change": "<EFBFBD>ndern",
|
||||
"Primary": "Prim<EFBFBD>r",
|
||||
"change": "ändern",
|
||||
"Change": "Ändern",
|
||||
"Primary": "Primär",
|
||||
"Save Filter": "Filter speichern",
|
||||
"Administration": "Administration",
|
||||
"Run Import": "Import durchf<EFBFBD>hren",
|
||||
"Run Import": "Import durchführen",
|
||||
"Duplicate": "Duplizieren",
|
||||
"Notifications": "Benachrichtigungen",
|
||||
"Mark all read": "Alle als gelesen markieren",
|
||||
@@ -153,12 +153,12 @@
|
||||
"Today": "Heute",
|
||||
"Tomorrow": "Morgen",
|
||||
"Yesterday": "Gestern",
|
||||
"Submit": "Ausf<EFBFBD>hren",
|
||||
"Close": "Schlie<EFBFBD>en",
|
||||
"Submit": "Ausführen",
|
||||
"Close": "Schließen",
|
||||
"Yes": "Ja",
|
||||
"No": "Nein",
|
||||
"View": "Ansehen",
|
||||
"Select All Result": "Alle ausw<EFBFBD>hlen",
|
||||
"Select All Result": "Alle auswählen",
|
||||
"Value": "Wert",
|
||||
"Current version": "Aktuelle Version",
|
||||
"List View": "Listenansicht",
|
||||
@@ -174,37 +174,37 @@
|
||||
"messages": {
|
||||
"pleaseWait": "Bitte warten...",
|
||||
"confirmLeaveOutMessage": "Sind Sie sicher dass Sie das Formular verlassen wollen?",
|
||||
"notModified": "Sie haben den Datensatz nicht ge<EFBFBD>ndert",
|
||||
"duplicate": "Der Datensatz den Sie erstellen wollen, k<EFBFBD>nnte eine Dublette sein",
|
||||
"fieldIsRequired": "{field} wird ben<EFBFBD>tigt",
|
||||
"fieldShouldBeEmail": "{field} muss eine g<EFBFBD>ltige E-Mail sein",
|
||||
"fieldShouldBeFloat": "{field} muss eine g<EFBFBD>ltige Flie<EFBFBD>komma Zahl sein",
|
||||
"fieldShouldBeInt": "{field} muss eine g<EFBFBD>ltige Ganzzahl sein",
|
||||
"fieldShouldBeDate": "{field} muss ein g<EFBFBD>ltiges Datum sein",
|
||||
"fieldShouldBeDatetime": "{field} muss ein g<EFBFBD>ltiges Datum/Zeit Feld sein",
|
||||
"notModified": "Sie haben den Datensatz nicht geändert",
|
||||
"duplicate": "Der Datensatz den Sie erstellen wollen, könnte eine Dublette sein",
|
||||
"fieldIsRequired": "{field} wird benötigt",
|
||||
"fieldShouldBeEmail": "{field} muss eine gültige E-Mail sein",
|
||||
"fieldShouldBeFloat": "{field} muss eine gültige Fließkomma Zahl sein",
|
||||
"fieldShouldBeInt": "{field} muss eine gültige Ganzzahl sein",
|
||||
"fieldShouldBeDate": "{field} muss ein gültiges Datum sein",
|
||||
"fieldShouldBeDatetime": "{field} muss ein gültiges Datum/Zeit Feld sein",
|
||||
"fieldShouldAfter": "{field} muss nach {otherField} sein",
|
||||
"fieldShouldBefore": "{field} muss vor {otherField} sein",
|
||||
"fieldShouldBeBetween": "{field} muss zwischen {min} und {max} sein",
|
||||
"fieldShouldBeLess": "{field} muss kleiner als {value} sein",
|
||||
"fieldShouldBeGreater": "{field} muss gr<EFBFBD><EFBFBD>er als {value} sein",
|
||||
"fieldBadPasswordConfirm": "{field} falsch best<EFBFBD>tigt",
|
||||
"resetPreferencesDone": "Die Einstellungen wurden auf Standardwerte zur<EFBFBD>ckgesetzt",
|
||||
"fieldShouldBeGreater": "{field} muss größer als {value} sein",
|
||||
"fieldBadPasswordConfirm": "{field} falsch bestätigt",
|
||||
"resetPreferencesDone": "Die Einstellungen wurden auf Standardwerte zurückgesetzt",
|
||||
"assignmentEmailNotificationSubject": "EspoCRM {entityType}: {Entity.name}",
|
||||
"assignmentEmailNotificationBody": "{assignerUserName} hat Ihnen {entityType} '{Entity.name}' zugewiesen.\n\n{recordUrl}",
|
||||
"confirmation": "Sind Sie sicher?",
|
||||
"unlinkAllConfirmation": "Sind Sie sicher, dass Sie die Beziehungen zu allen verbundenen Datens<EFBFBD>tzen entfernen m<EFBFBD>chten?",
|
||||
"resetPreferencesConfirmation": "Sind Sie sicher, dass Sie die Einstellungen auf Standardwerte zur<EFBFBD>cksetzen wollen?",
|
||||
"removeRecordConfirmation": "Sind Sie sicher, dass Sie den Eintrag l<EFBFBD>schen wollen?",
|
||||
"unlinkRecordConfirmation": "Sind Sie sicher, dass Sie die Beziehung zu dem verbundenen Datensatz entfernen m<EFBFBD>chten?",
|
||||
"removeSelectedRecordsConfirmation": "Sind Sie sicher, dass Sie die ausgew<EFBFBD>hlten S<EFBFBD>tze l<EFBFBD>schen m<EFBFBD>chten?",
|
||||
"massUpdateResult": "{count} Eintr<EFBFBD>ge wurden aktualisiert",
|
||||
"unlinkAllConfirmation": "Sind Sie sicher, dass Sie die Beziehungen zu allen verbundenen Datensätzen entfernen möchten?",
|
||||
"resetPreferencesConfirmation": "Sind Sie sicher, dass Sie die Einstellungen auf Standardwerte zurücksetzen wollen?",
|
||||
"removeRecordConfirmation": "Sind Sie sicher, dass Sie den Eintrag löschen wollen?",
|
||||
"unlinkRecordConfirmation": "Sind Sie sicher, dass Sie die Beziehung zu dem verbundenen Datensatz entfernen möchten?",
|
||||
"removeSelectedRecordsConfirmation": "Sind Sie sicher, dass Sie die ausgewählten Sätze löschen möchten?",
|
||||
"massUpdateResult": "{count} Einträge wurden aktualisiert",
|
||||
"massUpdateResultSingle": "{count} Eintrag wurde aktualisiert",
|
||||
"noRecordsUpdated": "Es wurden keine Eintr<EFBFBD>ge aktualisiert",
|
||||
"massRemoveResult": "{count} Eintr<EFBFBD>ge wurden gel<EFBFBD>scht",
|
||||
"massRemoveResultSingle": "{count} Eintrag wurde gel<EFBFBD>scht",
|
||||
"noRecordsRemoved": "Es wurden keine Eintr<EFBFBD>ge gel<EFBFBD>scht",
|
||||
"noRecordsUpdated": "Es wurden keine Einträge aktualisiert",
|
||||
"massRemoveResult": "{count} Einträge wurden gelöscht",
|
||||
"massRemoveResultSingle": "{count} Eintrag wurde gelöscht",
|
||||
"noRecordsRemoved": "Es wurden keine Einträge gelöscht",
|
||||
"clickToRefresh": "Klicken um zu aktualisieren",
|
||||
"streamPostInfo": "Schreiben Sie <strong>@username</strong> um Benutzer in der Notiz hervorzuheben.\n\nVerf<EFBFBD>gbare Syntax:\n`<code>Code</code>`\n**<strong>fetter Text</strong>**\n*<em>Hervorgehobener Text</em>*\n~<del>Durchgestrichen</del>~\n> blockquote\n(url)[link]"
|
||||
"streamPostInfo": "Schreiben Sie <strong>@username</strong> um Benutzer in der Notiz hervorzuheben.\n\nVerfügbare Syntax:\n`<code>Code</code>`\n**<strong>fetter Text</strong>**\n*<em>Hervorgehobener Text</em>*\n~<del>Durchgestrichen</del>~\n> blockquote\n(url)[link]"
|
||||
},
|
||||
"boolFilters": {
|
||||
"onlyMy": "Nur Meine",
|
||||
@@ -215,9 +215,9 @@
|
||||
"all": "Alle"
|
||||
},
|
||||
"massActions": {
|
||||
"remove": "L<EFBFBD>schen",
|
||||
"merge": "Zusammenf<EFBFBD>hren",
|
||||
"massUpdate": "Massen<EFBFBD>nderung",
|
||||
"remove": "Löschen",
|
||||
"merge": "Zusammenführen",
|
||||
"massUpdate": "Massenänderung",
|
||||
"export": "Exportieren"
|
||||
},
|
||||
"fields": {
|
||||
@@ -230,16 +230,16 @@
|
||||
"assignedUserName": "Zugewiesener Benutzername",
|
||||
"teams": "Teams",
|
||||
"createdAt": "Erstellt am",
|
||||
"modifiedAt": "Ge<EFBFBD>ndert am",
|
||||
"modifiedAt": "Geändert am",
|
||||
"createdBy": "Erstellt von",
|
||||
"modifiedBy": "Ge<EFBFBD>ndert von",
|
||||
"modifiedBy": "Geändert von",
|
||||
"description": "Beschreibung",
|
||||
"address": "Adresse",
|
||||
"phoneNumber": "Telefon",
|
||||
"phoneNumberMobile": "Telefon (Mobil)",
|
||||
"phoneNumberHome": "Telefon (Privat)",
|
||||
"phoneNumberFax": "Telefon (Fax)",
|
||||
"phoneNumberOffice": "Telefon (B<EFBFBD>ro)",
|
||||
"phoneNumberOffice": "Telefon (Büro)",
|
||||
"phoneNumberOther": "Telefon (Andere)",
|
||||
"order": "Position",
|
||||
"parent": "Bezieht sich auf",
|
||||
@@ -248,7 +248,7 @@
|
||||
"links": {
|
||||
"assignedUser": "Zugewiesener Benutzer",
|
||||
"createdBy": "Erstellt von",
|
||||
"modifiedBy": "Ge<EFBFBD>ndert von",
|
||||
"modifiedBy": "Geändert von",
|
||||
"team": "Team",
|
||||
"roles": "Rollen",
|
||||
"teams": "Teams",
|
||||
@@ -257,7 +257,7 @@
|
||||
"children": "Kinder"
|
||||
},
|
||||
"dashlets": {
|
||||
"Stream": "Vorg<EFBFBD>nge"
|
||||
"Stream": "Vorgänge"
|
||||
},
|
||||
"notificationMessages": {
|
||||
"assign": "{entityType} {entity} wurde Ihnen zugewiesen",
|
||||
@@ -269,7 +269,7 @@
|
||||
"createAssigned": "{user} hat {entityType} {entity} erstellt und an {assignee} zugewiesen",
|
||||
"assign": "{user} hat {entityType} {entity} an {assignee} zugewiesen",
|
||||
"post": "{user} hat zu {entityType} {entity} notiert",
|
||||
"attach": "{user} hat zu {entityType} {entity} hinzugef<EFBFBD>gt",
|
||||
"attach": "{user} hat zu {entityType} {entity} hinzugefügt",
|
||||
"status": "{user} hat {field} von {entityType} {entity} aktualisiert",
|
||||
"update": "{user} hat {entityType} {entity} aktualisiert",
|
||||
"createRelated": "{user} hat {relatedEntityType} {relatedEntity} verbunden mit {entityType} {entity} erstellt",
|
||||
@@ -280,7 +280,7 @@
|
||||
"createAssignedThis": "{user} hat {entityType} erstellt und an {assignee} zugewiesen",
|
||||
"assignThis": "{user} hat {entityType} an {assignee} zugewiesen",
|
||||
"postThis": "{user} hat notiert",
|
||||
"attachThis": "{user} hat hinzugef<EFBFBD>gt",
|
||||
"attachThis": "{user} hat hinzugefügt",
|
||||
"statusThis": "{user} hat {field} aktualisiert",
|
||||
"updateThis": "{user} hat diese(s/n) {entityType} aktualisiert",
|
||||
"createRelatedThis": "{user} hat {relatedEntityType} {relatedEntity} verbunden mit dieser/m {entityType} erstellt",
|
||||
@@ -302,8 +302,8 @@
|
||||
"emailSentThis": "{by} hat eine E-Mail gesendet"
|
||||
},
|
||||
"lists": {
|
||||
"monthNames": ["Januar", "Februar", "M<EFBFBD>rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||||
"monthNamesShort": ["Jan", "Feb", "M<EFBFBD>r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
|
||||
"monthNames": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||||
"monthNamesShort": ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
|
||||
"dayNames": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
|
||||
"dayNamesShort": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
|
||||
"dayNamesMin": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]
|
||||
@@ -325,7 +325,7 @@
|
||||
"ca_ES": "Katalanisch",
|
||||
"cs_CZ": "Tschechisch",
|
||||
"cy_GB": "Walisisch",
|
||||
"da_DK": "D<EFBFBD>nisch",
|
||||
"da_DK": "Dänisch",
|
||||
"de_DE": "Deutsch",
|
||||
"el_GR": "Griechisch",
|
||||
"en_GB": "Englisch (UK)",
|
||||
@@ -335,19 +335,19 @@
|
||||
"eu_ES": "Baskisch",
|
||||
"fa_IR": "Persisch",
|
||||
"fi_FI": "Finnisch",
|
||||
"fo_FO": "F<EFBFBD>r<EFBFBD>isch",
|
||||
"fr_CA": "Franz<EFBFBD>sisch (CN)",
|
||||
"fr_FR": "Franz<EFBFBD>sisch (FR)",
|
||||
"fo_FO": "Färöisch",
|
||||
"fr_CA": "Französisch (CN)",
|
||||
"fr_FR": "Französisch (FR)",
|
||||
"ga_IE": "Irisch",
|
||||
"gl_ES": "Galizisch",
|
||||
"gn_PY": "Guarani",
|
||||
"he_IL": "Hebr<EFBFBD>isch",
|
||||
"he_IL": "Hebräisch",
|
||||
"hi_IN": "Hindi",
|
||||
"hr_HR": "Kroatisch",
|
||||
"hu_HU": "Ungarisch",
|
||||
"hy_AM": "Armenisch",
|
||||
"id_ID": "Indonesisch",
|
||||
"is_IS": "Isl<EFBFBD>ndisch",
|
||||
"is_IS": "Isländisch",
|
||||
"it_IT": "Italienisch",
|
||||
"ja_JP": "Japanisch",
|
||||
"ka_GE": "Georgisch",
|
||||
@@ -359,16 +359,16 @@
|
||||
"mk_MK": "Mazedonisch",
|
||||
"ml_IN": "Malayalam",
|
||||
"ms_MY": "Malaiisch",
|
||||
"nb_NO":"Norwegian Bokmål",
|
||||
"nb_NO": "Norwegisch Bokmál",
|
||||
"nn_NO": "Norwegisch Nynorsk",
|
||||
"ne_NP": "Nepali",
|
||||
"nl_NL": "Niederl<EFBFBD>ndisch",
|
||||
"nl_NL": "Niederländisch",
|
||||
"pa_IN": "Punjabi",
|
||||
"pl_PL": "Polnisch",
|
||||
"ps_AF": "Pashto",
|
||||
"pt_BR": "Portugiesisch (BR)",
|
||||
"pt_PT": "Portugiesisch (PT)",
|
||||
"ro_RO": "Rum<EFBFBD>nisch",
|
||||
"ro_RO": "Rumänisch",
|
||||
"ru_RU": "Russisch",
|
||||
"sk_SK": "Slowakisch",
|
||||
"sl_SI": "Slowenisch",
|
||||
@@ -378,9 +378,9 @@
|
||||
"sw_KE": "Suaheli",
|
||||
"ta_IN": "Tamil",
|
||||
"te_IN": "Telugu",
|
||||
"th_TH": "Thail<EFBFBD>ndisch",
|
||||
"th_TH": "Thailändisch",
|
||||
"tl_PH": "Tagalog",
|
||||
"tr_TR": "T<EFBFBD>kisch",
|
||||
"tr_TR": "Tükisch",
|
||||
"uk_UA": "Ukrainisch",
|
||||
"ur_PK": "Urdu",
|
||||
"vi_VN": "Vietnamesisch",
|
||||
@@ -405,7 +405,7 @@
|
||||
"lastYear": "Letztes Jahr",
|
||||
"lastSevenDays": "Letzten 7 Tage",
|
||||
"lastXDays": "Letzten X Tage",
|
||||
"nextXDays": "N<EFBFBD>chsten X Tage"
|
||||
"nextXDays": "Nächsten X Tage"
|
||||
},
|
||||
"searchRanges": {
|
||||
"is": "Ist",
|
||||
@@ -415,14 +415,14 @@
|
||||
"varcharSearchRanges": {
|
||||
"equals": "Gleich",
|
||||
"startsWith": "Beginnt mit",
|
||||
"contains": "Enth<EFBFBD>lt"
|
||||
"contains": "Enthält"
|
||||
},
|
||||
"intSearchRanges": {
|
||||
"equals": "Gleich",
|
||||
"notEquals": "Nicht gleich",
|
||||
"greaterThan": "Gr<EFBFBD><EFBFBD>er als",
|
||||
"greaterThan": "Größer als",
|
||||
"lessThan": "Weniger als",
|
||||
"greaterThanOrEquals": "Gr<EFBFBD><EFBFBD>er oder gleich als",
|
||||
"greaterThanOrEquals": "Größer oder gleich als",
|
||||
"lessThanOrEquals": "Weniger oder gleich als",
|
||||
"between": "Zwischen"
|
||||
},
|
||||
@@ -436,7 +436,7 @@
|
||||
},
|
||||
"phoneNumber": {
|
||||
"Mobile": "Telefon Mobil",
|
||||
"Office": "Telefon B<EFBFBD>ro",
|
||||
"Office": "Telefon Büro",
|
||||
"Fax": "Fax",
|
||||
"Home": "Telefon Privat",
|
||||
"Other": "Andere"
|
||||
@@ -444,44 +444,44 @@
|
||||
},
|
||||
"sets": {
|
||||
"summernote": {
|
||||
"NOTICE": "Sie finden die <EFBFBD>bersetzung hier: https://github.com/HackerWins/summernote/tree/master/lang",
|
||||
"NOTICE": "Sie finden die Übersetzung hier: https://github.com/HackerWins/summernote/tree/master/lang",
|
||||
"font":{
|
||||
"bold": "Fett",
|
||||
"italic": "Kursiv",
|
||||
"underline": "Unterstrichen",
|
||||
"strike": "Durchgestrichen",
|
||||
"clear": "Font Stil entfernen",
|
||||
"height": "Zeilenh<EFBFBD>he",
|
||||
"height": "Zeilenhöhe",
|
||||
"name": "Schriftfamilie",
|
||||
"size": "Schriftgr<EFBFBD><EFBFBD>e"
|
||||
"size": "Schriftgröße"
|
||||
},
|
||||
"image":{
|
||||
"image": "Bild",
|
||||
"insert": "Bild einf<EFBFBD>gen",
|
||||
"resizeFull": "Originalgr<EFBFBD><EFBFBD>e",
|
||||
"resizeHalf": "Gr<EFBFBD><EFBFBD>e 1/2",
|
||||
"resizeQuarter": "Gr<EFBFBD><EFBFBD>e 1/4",
|
||||
"floatLeft": "Linksb<EFBFBD>ndig",
|
||||
"floatRight": "Rechtsb<EFBFBD>ndig",
|
||||
"insert": "Bild einfügen",
|
||||
"resizeFull": "Originalgröße",
|
||||
"resizeHalf": "Größe 1/2",
|
||||
"resizeQuarter": "Größe 1/4",
|
||||
"floatLeft": "Linksbündig",
|
||||
"floatRight": "Rechtsbündig",
|
||||
"floatNone": "Kein Textfluss",
|
||||
"dragImageHere": "Ziehen Sie ein Bild mit der Maus hierher",
|
||||
"selectFromFiles": "W<EFBFBD>hlen Sie eine Datei aus",
|
||||
"selectFromFiles": "Wählen Sie eine Datei aus",
|
||||
"url": "Grafik URL",
|
||||
"remove": "Grafik entfernen"
|
||||
},
|
||||
"link":{
|
||||
"link": "Link",
|
||||
"insert": "Link einf<EFBFBD>gen",
|
||||
"insert": "Link einfügen",
|
||||
"unlink": "Link entfernen",
|
||||
"edit": "Bearbeiten",
|
||||
"textToDisplay": "Anzeigetext",
|
||||
"url": "Ziel des Links?",
|
||||
"openInNewWindow": "In einem neuen Fenster <EFBFBD>ffnen"
|
||||
"openInNewWindow": "In einem neuen Fenster öffnen"
|
||||
},
|
||||
"video":{
|
||||
"video": "Video",
|
||||
"videoLink": "Video Link",
|
||||
"insert": "Video einf<EFBFBD>gen",
|
||||
"insert": "Video einfügen",
|
||||
"url": "Video URL?",
|
||||
"providers": "(YouTube, Vimeo, Vine, Instagram oder DailyMotion)"
|
||||
},
|
||||
@@ -489,19 +489,19 @@
|
||||
"table": "Tabelle"
|
||||
},
|
||||
"hr":{
|
||||
"insert": "Eine horizontale Linie einf<EFBFBD>gen"
|
||||
"insert": "Eine horizontale Linie einfügen"
|
||||
},
|
||||
"style":{
|
||||
"style": "Stil",
|
||||
"normal": "Normal",
|
||||
"blockquote": "Zitat",
|
||||
"pre": "Quellcode",
|
||||
"h1": "<EFBFBD>berschrift 1",
|
||||
"h2": "<EFBFBD>berschrift 2",
|
||||
"h3": "<EFBFBD>berschrift 3",
|
||||
"h4": "<EFBFBD>berschrift 4",
|
||||
"h5": "<EFBFBD>berschrift 5",
|
||||
"h6": "<EFBFBD>berschrift 6"
|
||||
"h1": "Überschrift 1",
|
||||
"h2": "Überschrift 2",
|
||||
"h3": "Überschrift 3",
|
||||
"h4": "Überschrift 4",
|
||||
"h5": "Überschrift 5",
|
||||
"h6": "Überschrift 6"
|
||||
},
|
||||
"lists":{
|
||||
"unordered": "Unsortierte Liste",
|
||||
@@ -514,8 +514,8 @@
|
||||
},
|
||||
"paragraph":{
|
||||
"paragraph": "Absatz",
|
||||
"outdent": "Ausr<EFBFBD>ckung",
|
||||
"indent": "Einr<EFBFBD>ckung",
|
||||
"outdent": "Ausrückung",
|
||||
"indent": "Einrückung",
|
||||
"left": "Links ausrichten",
|
||||
"center": "Zentriert ausrichten",
|
||||
"right": "Rechts ausrichten",
|
||||
@@ -528,19 +528,19 @@
|
||||
"foreground": "Schriftfarbe",
|
||||
"transparent": "Transparenz",
|
||||
"setTransparent": "Transparenz setzen",
|
||||
"reset": "Zur<EFBFBD>cksetzen",
|
||||
"resetToDefault": "Zur<EFBFBD>cksetzen auf Standard"
|
||||
"reset": "Zurücksetzen",
|
||||
"resetToDefault": "Zurücksetzen auf Standard"
|
||||
},
|
||||
"shortcut":{
|
||||
"shortcuts": "Tastaturk<EFBFBD>rzel",
|
||||
"close": "Schlie<EFBFBD>en",
|
||||
"shortcuts": "Tastaturkürzel",
|
||||
"close": "Schließen",
|
||||
"textFormatting": "Textformatierung",
|
||||
"action": "Aktion",
|
||||
"paragraphFormatting": "Absatzformatierung",
|
||||
"documentStyle": "Dokumentenstil"
|
||||
},
|
||||
"history":{
|
||||
"undo": "R<EFBFBD>ckg<EFBFBD>ngig",
|
||||
"undo": "Rückgängig",
|
||||
"redo": "Wiederholen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"labels": {
|
||||
"Revert Import": "Import r<EFBFBD>ckg<EFBFBD>ngig machen",
|
||||
"Return to Import": "Zur<EFBFBD>ck zum Import",
|
||||
"Run Import": "Import durchf<EFBFBD>hren",
|
||||
"Back": "Zur<EFBFBD>ck",
|
||||
"Revert Import": "Import rückgängig machen",
|
||||
"Return to Import": "Zurück zum Import",
|
||||
"Run Import": "Import durchführen",
|
||||
"Back": "Zurück",
|
||||
"Field Mapping": "Feldzuordnung",
|
||||
"Default Values": "Standardwerte",
|
||||
"Add Field": "Feld hinzuf<EFBFBD>gen",
|
||||
"Add Field": "Feld hinzufügen",
|
||||
"Created": "Erstellt",
|
||||
"Updated": "Aktualisiert",
|
||||
"Result": "Resultat",
|
||||
"Show records": "Datens<EFBFBD>tze zeigen",
|
||||
"Show records": "Datensätze zeigen",
|
||||
"Remove Duplicates": "Duplikate entfernen",
|
||||
"importedCount": "Importiert (Anzahl)",
|
||||
"duplicateCount": "Duplicate (Anzahl)",
|
||||
@@ -26,9 +26,9 @@
|
||||
},
|
||||
"fields": {
|
||||
"file": "Datei",
|
||||
"entityType": "Entit<EFBFBD>tstyp",
|
||||
"imported": "Importierte Datens<EFBFBD>tze",
|
||||
"duplicates": "Doppelte Datens<EFBFBD>tze",
|
||||
"updated": "Aktualisierte Datens<EFBFBD>tze"
|
||||
"entityType": "Entitätstyp",
|
||||
"imported": "Importierte Datensätze",
|
||||
"duplicates": "Doppelte Datensätze",
|
||||
"updated": "Aktualisierte Datensätze"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
"emailAddress": "E-Mail Adresse",
|
||||
"team": "Team",
|
||||
"status": "Status",
|
||||
"assignToUser": "Mit Benutzer verkn<EFBFBD>pfen",
|
||||
"assignToUser": "Mit Benutzer verknüpfen",
|
||||
"host": "Host",
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort",
|
||||
"port": "Port",
|
||||
"monitoredFolders": "<EFBFBD>berwachte Ordner",
|
||||
"monitoredFolders": "Überwachte Ordner",
|
||||
"trashFolder": "Papierkorb Ordner",
|
||||
"ssl": "SSL",
|
||||
"createCase": "Fall erstellen",
|
||||
@@ -22,13 +22,13 @@
|
||||
"targetUserPosition": "Position Zielbenutzer"
|
||||
},
|
||||
"tooltips": {
|
||||
"reply": "E-Mail Absender informieren, dass die E-Mail empfangen wurde.\n\nEs wird pro Zeitabschnitt nur eine E-Mail an einen bestimmten Empf<EFBFBD>nger gesendet um Schleifen zu vermeiden.",
|
||||
"reply": "E-Mail Absender informieren, dass die E-Mail empfangen wurde.\n\nEs wird pro Zeitabschnitt nur eine E-Mail an einen bestimmten Empfänger gesendet um Schleifen zu vermeiden.",
|
||||
"createCase": "Fall aus eingehender E-Mail automatisch erstellen.",
|
||||
"replyToAddress": "Geben Sie die E-Mail Adresse dieser Mailbox an um Antworten hier zu empfangen.",
|
||||
"caseDistribution": "Wie F<EFBFBD>lle zugewiesen werden. Entweder direkt dem Benutzer oder im Team.",
|
||||
"assignToUser": "Benutzer E-Mails/F<EFBFBD>lle werden zugewiesen an",
|
||||
"team": "Team E-Mails/F<EFBFBD>lle werden verkn<EFBFBD>pft mit",
|
||||
"targetUserPosition": "Bestimmen Sie die Position der Benutzer die F<EFBFBD>lle zugewiesen bekommen."
|
||||
"caseDistribution": "Wie Fälle zugewiesen werden. Entweder direkt dem Benutzer oder im Team.",
|
||||
"assignToUser": "Benutzer E-Mails/Fälle werden zugewiesen an",
|
||||
"team": "Team E-Mails/Fälle werden verknüpft mit",
|
||||
"targetUserPosition": "Bestimmen Sie die Position der Benutzer die Fälle zugewiesen bekommen."
|
||||
},
|
||||
"links": {
|
||||
"filters": "Filter"
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
"redirectUri": "Redirect URI"
|
||||
},
|
||||
"messages": {
|
||||
"selectIntegration": "W<EFBFBD>hlen Sie eine Integration aus dem Men<EFBFBD>.",
|
||||
"noIntegrations": "Keine Integration verf<EFBFBD>gbar."
|
||||
"selectIntegration": "Wählen Sie eine Integration aus dem Menü.",
|
||||
"noIntegrations": "Keine Integration verfügbar."
|
||||
},
|
||||
"help": {
|
||||
"Google": "<p><b>Holen Sie die OAuth 2.0 Credentials <EFBFBD>ber die Google Developers Console.</b></p><p>Visit <a href=\"https://console.developers.google.com/project\">Google Developers Console</a> um OAuth 2.0 Credentials wie eine Client ID und Client Geheimnis zu erhalten die sowohl Google als auch EspoCRM bekannt sind.</p>"
|
||||
"Google": "<p><b>Holen Sie die OAuth 2.0 Credentials über die Google Developers Console.</b></p><p>Visit <a href=\"https://console.developers.google.com/project\">Google Developers Console</a> um OAuth 2.0 Credentials wie eine Client ID und Client Geheimnis zu erhalten die sowohl Google als auch EspoCRM bekannt sind.</p>"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"fields": {
|
||||
"status": "Status",
|
||||
"executeTime": "Ausf<EFBFBD>hren um",
|
||||
"executeTime": "Ausführen um",
|
||||
"attempts": "Verbleibende Versuche",
|
||||
"failedAttempts": "Fehlgeschlagene Versuche",
|
||||
"serviceName": "Service",
|
||||
@@ -13,7 +13,7 @@
|
||||
"status": {
|
||||
"Pending": "Schwebend",
|
||||
"Success": "Erfolg",
|
||||
"Running": "L<EFBFBD>uft",
|
||||
"Running": "Läuft",
|
||||
"Failed": "Fehlgeschlagen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"fields": {
|
||||
"post": "Senden",
|
||||
"attachments": "Anh<EFBFBD>nge"
|
||||
"attachments": "Anhänge"
|
||||
},
|
||||
"filters": {
|
||||
"all": "Alle",
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
"weekStart": "Erster Tag der Woche",
|
||||
"thousandSeparator": "Tausender Trennzeichen",
|
||||
"decimalMark": "Dezimaltrennzeichen",
|
||||
"defaultCurrency": "Standardw<EFBFBD>hrung",
|
||||
"currencyList": "W<EFBFBD>hrungsliste",
|
||||
"defaultCurrency": "Standardwährung",
|
||||
"currencyList": "Währungsliste",
|
||||
"language": "Sprache",
|
||||
"smtpServer": "Server",
|
||||
"smtpPort": "Port",
|
||||
@@ -37,12 +37,12 @@
|
||||
},
|
||||
"labels": {
|
||||
"Notifications": "Benachrichtigungen",
|
||||
"User Interface": "Benutzeroberfl<EFBFBD>che",
|
||||
"User Interface": "Benutzeroberfläche",
|
||||
"SMTP": "SMTP",
|
||||
"Misc": "Verschiedenes",
|
||||
"Locale": "Lokale Einstellungen"
|
||||
},
|
||||
"tooltips": {
|
||||
"autoFollowEntityTypeList": "Der Benutzer beobachtet alle neuen Eintr<EFBFBD>ge der gew<EFBFBD>hlten Entit<EFBFBD>t, sieht Neuigkeiten in den Vorg<EFBFBD>ngen und erh<EFBFBD>lt Benachrichtigungen."
|
||||
"autoFollowEntityTypeList": "Der Benutzer beobachtet alle neuen Einträge der gewählten Entität, sieht Neuigkeiten in den Vorgängen und erhält Benachrichtigungen."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
"teams": "Teams"
|
||||
},
|
||||
"tooltips": {
|
||||
"assignmentPermission": "Erm<EFBFBD>glicht das Recht der Zuweisung von Datens<EFBFBD>tzen an andere Benutzer zu beschr<EFBFBD>nken\n\nAlle - Keine Einschr<EFBFBD>nkung\n\nTeam - Kann an Benutzer des eigenen Teams zuweisen\n\nNein - Kann nur sich selbst zuweisen",
|
||||
"userPermission": "Erlaubt Benutzern die Aktivit<EFBFBD>ten anderer Benutzer zu sehen.\n\nAlle - Kann alle sehen\n\nTeam - Kann nur Aktivit<EFBFBD>ten der Benutzer im eigenen Team sehen\n\nNein - Kann keine anderen Aktivit<EFBFBD>ten sehen"
|
||||
"assignmentPermission": "Ermöglicht das Recht der Zuweisung von Datensätzen an andere Benutzer zu beschränken\n\nAlle - Keine Einschränkung\n\nTeam - Kann an Benutzer des eigenen Teams zuweisen\n\nNein - Kann nur sich selbst zuweisen",
|
||||
"userPermission": "Erlaubt Benutzern die Aktivitäten anderer Benutzer zu sehen.\n\nAlle - Kann alle sehen\n\nTeam - Kann nur Aktivitäten der Benutzer im eigenen Team sehen\n\nNein - Kann keine anderen Aktivitäten sehen"
|
||||
},
|
||||
"labels": {
|
||||
"Access": "Zugang",
|
||||
@@ -34,9 +34,9 @@
|
||||
"actions": {
|
||||
"read": "Lesen",
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "L<EFBFBD>schen"
|
||||
"delete": "Löschen"
|
||||
},
|
||||
"messages": {
|
||||
"changesAfterClearCache": "Alle <EFBFBD>nderungen werden erst nach Leeren des Caches wirksam."
|
||||
"changesAfterClearCache": "Alle Änderungen werden erst nach Leeren des Caches wirksam."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
},
|
||||
"options": {
|
||||
"job": {
|
||||
"Cleanup": "Aufr<EFBFBD>umen",
|
||||
"CheckInboundEmails": "Gruppen E-Mail Konten <EFBFBD>berpr<EFBFBD>fen",
|
||||
"CheckEmailAccounts": "Pers<EFBFBD>nliche E-Mail Konten pr<EFBFBD>fen",
|
||||
"Cleanup": "Aufräumen",
|
||||
"CheckInboundEmails": "Gruppen E-Mail Konten überprüfen",
|
||||
"CheckEmailAccounts": "Persönliche E-Mail Konten prüfen",
|
||||
"SendEmailReminders": "E-Mail Erinnerungen senden"
|
||||
},
|
||||
"cronSetup": {
|
||||
"linux": "Hinweis: F<EFBFBD>gen Sie diese Zeile zu Ihrer Crontab Datei hinzu, um geplante Aufgaben durchf<EFBFBD>hren zu k<EFBFBD>nnen:",
|
||||
"mac": "Hinweis: F<EFBFBD>gen Sie diese Zeile zu Ihrer Crontab Datei hinzu, um geplante Aufgaben durchf<EFBFBD>hren zu k<EFBFBD>nnen:",
|
||||
"windows": "Hinweis: Erstellen Sie eine Stapeldatei mit den folgenden Kommandos um geplante Aufgaben mit dem Windows Aufgabenplaner durchzuf<EFBFBD>hren:",
|
||||
"default": "Hinweis: f<EFBFBD>gen Sie dieses Kommando zum CronJob hinzu (Geplante Aufgaben):"
|
||||
"linux": "Hinweis: Fügen Sie diese Zeile zu Ihrer Crontab Datei hinzu, um geplante Aufgaben durchführen zu können:",
|
||||
"mac": "Hinweis: Fügen Sie diese Zeile zu Ihrer Crontab Datei hinzu, um geplante Aufgaben durchführen zu können:",
|
||||
"windows": "Hinweis: Erstellen Sie eine Stapeldatei mit den folgenden Kommandos um geplante Aufgaben mit dem Windows Aufgabenplaner durchzuführen:",
|
||||
"default": "Hinweis: fügen Sie dieses Kommando zum CronJob hinzu (Geplante Aufgaben):"
|
||||
},
|
||||
"status": {
|
||||
"Active": "Aktiv",
|
||||
@@ -30,6 +30,6 @@
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
"scheduling": "Definiert wann und wie oft ein Job l<EFBFBD>uft\n\n*/5 * * * * - alle 5 Minuten\n\n0 */2 * * * - alle 2 Stunden\n\n30 1 * * * - um 01:30 einmal am Tag\n\n0 0 1 * * - am ersten Tag des Monats"
|
||||
"scheduling": "Definiert wann und wie oft ein Job läuft\n\n*/5 * * * * - alle 5 Minuten\n\n0 */2 * * * - alle 2 Stunden\n\n30 1 * * * - um 01:30 einmal am Tag\n\n0 0 1 * * - am ersten Tag des Monats"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"fields": {
|
||||
"status": "Status",
|
||||
"executionTime": "Ausf<EFBFBD>hrungszeit"
|
||||
"executionTime": "Ausführungszeit"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
"weekStart": "Erster Tag der Woche",
|
||||
"thousandSeparator": "Tausender Trennzeichen",
|
||||
"decimalMark": "Dezimaltrennzeichen",
|
||||
"defaultCurrency": "Standardw<EFBFBD>hrung",
|
||||
"baseCurrency": "Basisw<EFBFBD>hrung",
|
||||
"defaultCurrency": "Standardwährung",
|
||||
"baseCurrency": "Basiswährung",
|
||||
"currencyRates": "Wechselkurse",
|
||||
"currencyList": "W<EFBFBD>hrungsliste",
|
||||
"currencyList": "Währungsliste",
|
||||
"language": "Sprache",
|
||||
"companyLogo": "Firmenlogo",
|
||||
"smtpServer": "Server",
|
||||
@@ -23,12 +23,12 @@
|
||||
"outboundEmailFromName": "Von Name",
|
||||
"outboundEmailFromAddress": "Von Adresse",
|
||||
"outboundEmailIsShared": "Kann von allen Benutzern verwendet werden",
|
||||
"recordsPerPage": "Datens<EFBFBD>tze pro Seite",
|
||||
"recordsPerPageSmall": "Datens<EFBFBD>tze pro Seite (Klein)",
|
||||
"recordsPerPage": "Datensätze pro Seite",
|
||||
"recordsPerPageSmall": "Datensätze pro Seite (Klein)",
|
||||
"tabList": "Reiter Liste",
|
||||
"quickCreateList": "Liste Schnellerstellung",
|
||||
"exportDelimiter": "Export Trennzeichen",
|
||||
"globalSearchEntityList": "Modul-/Entit<EFBFBD>tsliste globale Suche",
|
||||
"globalSearchEntityList": "Modul-/Entitätsliste globale Suche",
|
||||
"authenticationMethod": "Authentifizierungs Methode",
|
||||
"ldapHost": "Host",
|
||||
"ldapPort": "Port",
|
||||
@@ -46,17 +46,20 @@
|
||||
"ldapAccountDomainNameShort": "Domain Name Konto kurz",
|
||||
"ldapOptReferrals": "Opt Referrals",
|
||||
"exportDisabled": "Export deaktivieren (nur Admin ist berechtigt)",
|
||||
"assignmentNotificationsEntityList": "Entit<EFBFBD>ten <EFBFBD>ber die bei Zuweisung benachrichtigt werden soll",
|
||||
"assignmentNotificationsEntityList": "Entitäten über die bei Zuweisung benachrichtigt werden soll",
|
||||
"assignmentEmailNotifications": "E-Mail Nachrichten bei Zuweisungen senden",
|
||||
"assignmentEmailNotificationsEntityList": "Entit<EFBFBD>ten <EFBFBD>ber die mit E-Mail bei Zuweisung benachrichtigt werden soll",
|
||||
"assignmentEmailNotificationsEntityList": "Entitäten über die mit E-Mail bei Zuweisung benachrichtigt werden soll",
|
||||
"b2cMode": "B2C Modus",
|
||||
"avatarsDisabled": "Avatare deaktivieren",
|
||||
"followCreatedEntities": "Erstellten Eintr<EFBFBD>gen beobachten",
|
||||
"followCreatedEntities": "Erstellten Einträgen beobachten",
|
||||
"displayListViewRecordCount": "Gesamtanzahl anzeigen (in Listenansicht)",
|
||||
"theme": "Design",
|
||||
"userThemesDisabled": "Benutzerdesigns deaktivieren",
|
||||
"emailMessageMaxSize": "Max. E-Mail Gr<EFBFBD><EFBFBD>e (Mb)",
|
||||
"massEmailMaxPerHourCount": "Max. Anzahl E-Mails pro Stunde"
|
||||
"emailMessageMaxSize": "Max. E-Mail Größe (Mb)",
|
||||
"massEmailMaxPerHourCount": "Max. Anzahl E-Mails pro Stunde",
|
||||
"personalEmailMaxPortionSize": "Max email portion size for a personal account fetching",
|
||||
"inboundEmailMaxPortionSize": "Max email portion size for a group account fetching",
|
||||
"maxEmailAccountCount": "Max count of personal email accounts per user"
|
||||
},
|
||||
"options": {
|
||||
"weekStart": {
|
||||
@@ -65,10 +68,10 @@
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
"recordsPerPageSmall": "Anzahl S<EFBFBD>tze in Beziehungssubpanels",
|
||||
"outboundEmailIsShared": "Benutzern gestatten, E-Mails <EFBFBD>ber dieses SMTP Konto zu senden",
|
||||
"followCreatedEntities": "Benutzer folgen automatisch jenen S<EFBFBD>tzen die sie erstellt haben",
|
||||
"emailMessageMaxSize": "Alle eingehenden E-Mails die eine angegebene Gr<EFBFBD><EFBFBD>e <EFBFBD>bersteigen, werden <EFBFBD>bersprungen "
|
||||
"recordsPerPageSmall": "Anzahl Sätze in Beziehungssubpanels",
|
||||
"outboundEmailIsShared": "Benutzern gestatten, E-Mails über dieses SMTP Konto zu senden",
|
||||
"followCreatedEntities": "Benutzer folgen automatisch jenen Sätzen die sie erstellt haben",
|
||||
"emailMessageMaxSize": "Alle eingehenden E-Mails die eine angegebene Größe übersteigen, werden übersprungen "
|
||||
},
|
||||
"labels": {
|
||||
"System": "System",
|
||||
@@ -77,8 +80,8 @@
|
||||
"Configuration": "Konfiguration",
|
||||
"In-app Notifications": "In-App Benachrichtigungen",
|
||||
"Email Notifications": "E-Mail Benachrichtigungen",
|
||||
"Currency Settings": "W<EFBFBD>hrunsgseinstellungen",
|
||||
"Currency Rates": "W<EFBFBD>hrungskurse",
|
||||
"Currency Settings": "Währunsgseinstellungen",
|
||||
"Currency Rates": "Währungskurse",
|
||||
"Mass Email": "Massen E-Mails"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"users": "Benutzer"
|
||||
},
|
||||
"tooltips": {
|
||||
"roles": "Zugriffsrollen Benutzer dieses Teams erhalten Zugriffsberechtigung von ausgew<EFBFBD>hlten Rollen",
|
||||
"positionList": "Verf<EFBFBD>gbare Positionen in diesem Team Z.B. Verk<EFBFBD>ufer, Manager etc."
|
||||
"roles": "Zugriffsrollen Benutzer dieses Teams erhalten Zugriffsberechtigung von ausgewählten Rollen",
|
||||
"positionList": "Verfügbare Positionen in diesem Team Z.B. Verkäufer, Manager etc."
|
||||
},
|
||||
"labels": {
|
||||
"Create Team": "Team erstellen"
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
"fields": {
|
||||
"name": "Name",
|
||||
"body": "Inhalt",
|
||||
"entityType": "Entit<EFBFBD>tstyp",
|
||||
"entityType": "Entitätstyp",
|
||||
"header": "Kopf",
|
||||
"footer": "Fu<EFBFBD>",
|
||||
"footer": "Fuß",
|
||||
"leftMargin": "Linker Rand",
|
||||
"topMargin": "Oberer Rand",
|
||||
"rightMargin": "Rechter Rand",
|
||||
"bottomMargin": "Unterer Rand",
|
||||
"printFooter": "Fu<EFBFBD> drucken",
|
||||
"footerPosition": "Position Fu<EFBFBD>"
|
||||
"printFooter": "Fuß drucken",
|
||||
"footerPosition": "Position Fuß"
|
||||
},
|
||||
"links": {
|
||||
},
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
"teamRole": "Position",
|
||||
"password": "Passwort",
|
||||
"currentPassword": "Aktuelles Passwort",
|
||||
"passwordConfirm": "Passwort best<EFBFBD>tigen",
|
||||
"passwordConfirm": "Passwort bestätigen",
|
||||
"newPassword": "Neues Passwort",
|
||||
"newPasswordConfirm": "Neues Passwort best<EFBFBD>tigen",
|
||||
"newPasswordConfirm": "Neues Passwort bestätigen",
|
||||
"avatar": "Avatar",
|
||||
"isActive": "Ist aktiv"
|
||||
},
|
||||
@@ -26,36 +26,36 @@
|
||||
"Generate": "Erzeugen",
|
||||
"Access": "Zugang",
|
||||
"Preferences": "Benutzereinstellungen",
|
||||
"Change Password": "Passwort <EFBFBD>ndern",
|
||||
"Change Password": "Passwort ändern",
|
||||
"Teams and Access Control": "Teams und Zugriffsberechtigung",
|
||||
"Forgot Password?": "Passwort vergessen?",
|
||||
"Password Change Request": "Anforderung zur Passwort<EFBFBD>nderung",
|
||||
"Password Change Request": "Anforderung zur Passwortänderung",
|
||||
"Email Address": "E-Mail Adresse",
|
||||
"External Accounts": "Externe Konten",
|
||||
"Email Accounts": "E-Mail Konten"
|
||||
},
|
||||
"tooltips": {
|
||||
"defaultTeam": "Alle Datens<EFBFBD>tze dieses Benutzers werden standardm<EFBFBD><EFBFBD>ig seinem Team zugeordnet.",
|
||||
"defaultTeam": "Alle Datensätze dieses Benutzers werden standardmäßig seinem Team zugeordnet.",
|
||||
"userName": "Buchstaben a-z, Zahlen 0-9 und Unterstriche sind erlaubt.",
|
||||
"isAdmin": "Der Admin Benutzer hat vollen Zugriff auf alle Funktionen.",
|
||||
"isActive": "Wenn nicht markiert kann der Benutzer nicht einloggen",
|
||||
"teams": "Das Team zu dem dieser Benutzer geh<EFBFBD>rt. Die Zugriffsberechtigung wird von der Team Rolle vererbt.",
|
||||
"roles": "Zus<EFBFBD>tzliche Zugriffsrollen. Wenn ein Benutzer zu keinem Team geh<EFBFBD>rt oder wenn Sie die Zugriffsberechtigung nur f<EFBFBD>r diesen Benutzer erweitern wollen."
|
||||
"teams": "Das Team zu dem dieser Benutzer gehört. Die Zugriffsberechtigung wird von der Team Rolle vererbt.",
|
||||
"roles": "Zusätzliche Zugriffsrollen. Wenn ein Benutzer zu keinem Team gehört oder wenn Sie die Zugriffsberechtigung nur für diesen Benutzer erweitern wollen."
|
||||
},
|
||||
"messages": {
|
||||
"passwordWillBeSent": "Das Passwort wird an die E-Mail Adresse des Benutzers gesendet",
|
||||
"accountInfoEmailSubject": "EspoCRM Benutzerzugriffsinfo",
|
||||
"accountInfoEmailBody": "Ihre EspoCRM Zugriffsinformation:\n\nBenutzername: {userName}\nPasswort: {password}\n\n{siteUrl}",
|
||||
"passwordChangeLinkEmailSubject": "Anforderung zur Passwort<EFBFBD>nderung",
|
||||
"passwordChangeLinkEmailBody": "Sie k<EFBFBD>nnen Ihr Passwort <EFBFBD>ber diesen Link {link} <EFBFBD>ndern Diese eindeutige URL ist nur f<EFBFBD>r kurze Zeit g<EFBFBD>ltig.",
|
||||
"passwordChanged": "Das Passwort wurde ge<EFBFBD>ndert",
|
||||
"passwordChangeLinkEmailSubject": "Anforderung zur Passwortänderung",
|
||||
"passwordChangeLinkEmailBody": "Sie können Ihr Passwort über diesen Link {link} ändern Diese eindeutige URL ist nur für kurze Zeit gültig.",
|
||||
"passwordChanged": "Das Passwort wurde geändert",
|
||||
"userCantBeEmpty": "Der Benutzername darf nicht leer sein!",
|
||||
"wrongUsernamePasword": "Falscher Benutzername/Passwort",
|
||||
"emailAddressCantBeEmpty": "E-Mail Adresse darf nicht leer sein",
|
||||
"userNameEmailAddressNotFound": "Benutzername oder E-Mail Adresse nicht gefunden",
|
||||
"forbidden": "Verboten, bitte sp<EFBFBD>ter nochmals versuchen",
|
||||
"forbidden": "Verboten, bitte später nochmals versuchen",
|
||||
"uniqueLinkHasBeenSent": "Ein einmaliger Link wurde an die angegebene E-Mail Adresse gesendet.",
|
||||
"passwordChangedByRequest": "Das Passwort wurde ge<EFBFBD>ndert"
|
||||
"passwordChangedByRequest": "Das Passwort wurde geändert"
|
||||
},
|
||||
"boolFilters": {
|
||||
"onlyMyTeam": "Nur mein Team"
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
},
|
||||
"messages": {
|
||||
"entityCreated": "Entity has been created",
|
||||
"linkAlreadyExists": "Link name conflict."
|
||||
"linkAlreadyExists": "Link name conflict.",
|
||||
"linkConflict": "Link with the same name already exists."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,10 +43,6 @@
|
||||
{
|
||||
"name": "defaultReminders"
|
||||
}
|
||||
],
|
||||
[
|
||||
{"name":"theme"},
|
||||
false
|
||||
]
|
||||
]
|
||||
},
|
||||
|
||||
@@ -6,21 +6,17 @@
|
||||
[
|
||||
{
|
||||
"name": "Stream",
|
||||
"id": "d0004"
|
||||
},
|
||||
{
|
||||
"name": "Calls",
|
||||
"id": "d0001"
|
||||
"id": "defaultStream"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "Tasks",
|
||||
"id": "d0003"
|
||||
"id": "defaultTasks"
|
||||
},
|
||||
{
|
||||
"name": "Meetings",
|
||||
"id": "d0002"
|
||||
"name": "Activities",
|
||||
"id": "defailtActivities"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"Standard": {
|
||||
"defaultStream": {
|
||||
"isDoubleHeight": true,
|
||||
"displayRecords": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -177,6 +177,12 @@
|
||||
"default": false,
|
||||
"readOnly": true
|
||||
},
|
||||
"isJustSent": {
|
||||
"type": "bool",
|
||||
"default": false,
|
||||
"disabled": true,
|
||||
"notStorable": true
|
||||
},
|
||||
"teams": {
|
||||
"type": "linkMultiple"
|
||||
},
|
||||
|
||||
@@ -87,12 +87,11 @@
|
||||
},
|
||||
|
||||
{
|
||||
"route":"/GlobalSearch/:query",
|
||||
"route":"/GlobalSearch",
|
||||
"method":"get",
|
||||
"params":{
|
||||
"controller":"GlobalSearch",
|
||||
"action":"search",
|
||||
"query": ":query"
|
||||
"action":"search"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -131,6 +131,8 @@ class Email extends Record
|
||||
$this->getStreamService()->noteEmailSent($parent, $entity);
|
||||
}
|
||||
|
||||
$entity->set('isJustSent', true);
|
||||
|
||||
$this->getEntityManager()->saveEntity($entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -154,7 +154,6 @@ class EmailTemplate extends Record
|
||||
protected function parseText($type, Entity $entity, $text)
|
||||
{
|
||||
$fieldList = array_keys($entity->getFields());
|
||||
$fieldList[] = $id;
|
||||
foreach ($fieldList as $field) {
|
||||
$value = $entity->get($field);
|
||||
if (is_object($value)) {
|
||||
|
||||
@@ -787,7 +787,7 @@ class Record extends \Espo\Core\Services\Base
|
||||
|
||||
$count = 0;
|
||||
|
||||
if (array_key_exists('ids', $params)) {
|
||||
if (array_key_exists('ids', $params) && is_array($params['ids'])) {
|
||||
$ids = $params['ids'];
|
||||
foreach ($ids as $id) {
|
||||
$entity = $this->getEntity($id);
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
this.menu.buttons.push({
|
||||
'label': 'Send Invitations',
|
||||
'action': 'sendInvitations',
|
||||
icon: 'glyphicon glyphicon-send',
|
||||
'acl': 'edit',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -25,31 +25,6 @@ Espo.define('Crm:Views.Lead.Record.DetailSide', 'Views.Record.DetailSide', funct
|
||||
|
||||
setupPanels: function () {
|
||||
|
||||
/*var panel = {
|
||||
name: 'convertedTo',
|
||||
label: 'Converted To',
|
||||
view: 'Record.Panels.Side',
|
||||
notRefreshable: true,
|
||||
options: {
|
||||
fieldList: [],
|
||||
mode: 'detail',
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
panel.options.fieldList.push('createdAccount');
|
||||
|
||||
|
||||
panel.options.fieldList.push('createdContact');
|
||||
|
||||
|
||||
panel.options.fieldList.push('createdOpportunity');
|
||||
|
||||
|
||||
this.panels = Espo.Utils.clone(this.panels);
|
||||
this.panels.splice(1, 0, panel);*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM - Open Source CRM application.
|
||||
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
|
||||
* Website: http://www.espocrm.com
|
||||
*
|
||||
* EspoCRM is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* EspoCRM is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('crm:views/lead/record/panels/converted-to', 'views/record/panels/side', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
setup: function () {
|
||||
this.fieldList = [];
|
||||
|
||||
if (this.getAcl().check('Account')) {
|
||||
this.fieldList.push('createdAccount');
|
||||
}
|
||||
|
||||
if (this.getAcl().check('Contact')) {
|
||||
this.fieldList.push('createdContact');
|
||||
}
|
||||
if (this.getAcl().check('Opportunity')) {
|
||||
this.fieldList.push('createdOpportunity');
|
||||
}
|
||||
|
||||
Dep.prototype.setup.call(this);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
@@ -30,7 +30,6 @@ Espo.define('Crm:Views.Meeting.Detail', 'Views.Detail', function (Dep) {
|
||||
this.menu.buttons.push({
|
||||
'label': 'Send Invitations',
|
||||
'action': 'sendInvitations',
|
||||
icon: 'glyphicon glyphicon-send',
|
||||
'acl': 'edit',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ Espo.define('Crm:Views.Task.Detail', 'Views.Detail', function (Dep) {
|
||||
this.menu.buttons.push({
|
||||
'label': 'Complete',
|
||||
'action': 'setCompleted',
|
||||
icon: 'glyphicon glyphicon-ok',
|
||||
'iconHtml': '<span class="glyphicon glyphicon-ok"></span>',
|
||||
'acl': 'edit',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<div class="header-buttons btn-group pull-right">
|
||||
{{#each items.buttons}}
|
||||
<a {{#if link}}href="{{link}}"{{else}}href="javascript:"{{/if}} class="btn btn-{{#if style}}{{style}}{{else}}default{{/if}} action{{#if hidden}} hidden{{/if}}" data-action="{{name}}"{{#each data}} data-{{@key}}="{{./this}}"{{/each}}>
|
||||
{{#if iconHtml}}{{{iconHtml}}}{{/if}}
|
||||
{{#if html}}{{{html}}}{{else}}{{translate label scope=../../scope}}{{/if}}
|
||||
</a>
|
||||
{{/each}}
|
||||
@@ -30,7 +31,7 @@
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
{{#each items.dropdown}}
|
||||
<li class="{{#if hidden}}hidden{{/if}}"><a {{#if link}}href="{{link}}"{{else}}href="javascript:"{{/if}} class="action" data-action="{{name}}"{{#each data}} data-{{@key}}="{{./this}}"{{/each}}>{{#if html}}{{{html}}}{{else}}{{translate label scope=../../../scope}}{{/if}}</a></li>
|
||||
<li class="{{#if hidden}}hidden{{/if}}"><a {{#if link}}href="{{link}}"{{else}}href="javascript:"{{/if}} class="action" data-action="{{name}}"{{#each data}} data-{{@key}}="{{./this}}"{{/each}}>{{#if iconHtml}}{{{iconHtml}}} {{/if}}{{#if html}}{{{html}}}{{else}}{{translate label scope=../../../scope}}{{/if}}</a></li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -42,6 +42,18 @@ Espo.define('model', [], function () {
|
||||
Dep.prototype.initialize.call(this);
|
||||
},
|
||||
|
||||
set: function (key, val, options) {
|
||||
if (typeof key === 'object') {
|
||||
var o = key;
|
||||
if (this.idAttribute in o) {
|
||||
this.id = o[this.idAttribute];
|
||||
}
|
||||
} else if (key === 'id') {
|
||||
this.id = val;
|
||||
}
|
||||
return Dep.prototype.set.call(this, key, val, options);
|
||||
},
|
||||
|
||||
get: function (key) {
|
||||
if (key === 'id' && this.id) {
|
||||
return this.id;
|
||||
|
||||
@@ -23,6 +23,8 @@ Espo.define('views/email-template/record/detail', 'views/record/detail', functio
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
duplicateAction: true,
|
||||
|
||||
afterRender: function () {
|
||||
Dep.prototype.afterRender.call(this);
|
||||
this.listenToInsertField();
|
||||
|
||||
@@ -62,6 +62,22 @@ Espo.define('views/email/fields/email-address', ['views/fields/base'], function
|
||||
}.bind(this)
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
fetchSearch: function () {
|
||||
var value = this.$element.val();
|
||||
if (typeof value.trim === 'function') {
|
||||
value = value.trim();
|
||||
}
|
||||
if (value) {
|
||||
var data = {
|
||||
type: 'equals',
|
||||
value: value
|
||||
}
|
||||
return data;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -357,6 +357,9 @@ Espo.define('Views.Fields.Email', 'Views.Fields.Base', function (Dep) {
|
||||
fetchSearch: function () {
|
||||
var value = this.$element.val() || null;
|
||||
if (value) {
|
||||
if (typeof value.trim === 'function') {
|
||||
value = value.trim();
|
||||
}
|
||||
var data = {
|
||||
type: 'like',
|
||||
value: value + '%',
|
||||
@@ -365,7 +368,7 @@ Espo.define('Views.Fields.Email', 'Views.Fields.Base', function (Dep) {
|
||||
return data;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ Espo.define('Views.Fields.Varchar', 'Views.Fields.Base', function (Dep) {
|
||||
return data;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.GlobalSearch.GlobalSearch', 'View', function (Dep) {
|
||||
Espo.define('views/global-search/global-search', 'view', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'global-search.global-search',
|
||||
template: 'global-search/global-search',
|
||||
|
||||
events: {
|
||||
'keypress #global-search-input': function (e) {
|
||||
@@ -63,7 +63,7 @@ Espo.define('Views.GlobalSearch.GlobalSearch', 'View', function (Dep) {
|
||||
},
|
||||
|
||||
search: function (text) {
|
||||
this.collection.url = this.collection.urlRoot = 'GlobalSearch/' + text;
|
||||
this.collection.url = this.collection.urlRoot = 'GlobalSearch?q=' + encodeURIComponent(text);
|
||||
|
||||
this.showPanel();
|
||||
},
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.Import.Detail', 'Views.Detail', function (Dep) {
|
||||
Espo.define('views/import/detail', 'views/detail', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
Espo.define('Views.Import.Index', 'View', function (Dep) {
|
||||
Espo.define('views/import/index', 'view', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'import.index',
|
||||
template: 'import/index',
|
||||
|
||||
data: function () {
|
||||
return {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.Import.List', 'Views.List', function (Dep) {
|
||||
Espo.define('views/import/list', 'views/list', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
Espo.define('Views.Import.Step1', 'View', function (Dep) {
|
||||
|
||||
Espo.define('views/import/step1', 'view', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'import.step-1',
|
||||
template: 'import/step-1',
|
||||
|
||||
events: {
|
||||
'change #import-file': function (e) {
|
||||
|
||||
@@ -18,11 +18,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
Espo.define('Views.Import.Step2', 'View', function (Dep) {
|
||||
|
||||
Espo.define('views/import/step2', 'view', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'import.step-2',
|
||||
template: 'import/step-2',
|
||||
|
||||
events: {
|
||||
'click button[data-action="back"]': function () {
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.Modals.MassUpdate', 'Views.Modal', function (Dep) {
|
||||
Espo.define('views/modals/mass-update', 'views/modal', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
@@ -27,7 +27,7 @@ Espo.define('Views.Modals.MassUpdate', 'Views.Modal', function (Dep) {
|
||||
|
||||
header: false,
|
||||
|
||||
template: 'modals.mass-update',
|
||||
template: 'modals/mass-update',
|
||||
|
||||
data: function () {
|
||||
return {
|
||||
@@ -151,7 +151,7 @@ Espo.define('Views.Modals.MassUpdate', 'Views.Modal', function (Dep) {
|
||||
data: JSON.stringify({
|
||||
attributes: attributes,
|
||||
ids: self.ids || null,
|
||||
where: (self.ids.length == 0) ? self.options.where : null,
|
||||
where: (!self.ids || self.ids.length == 0) ? self.options.where : null,
|
||||
byWhere: this.byWhere
|
||||
}),
|
||||
success: function (result) {
|
||||
|
||||
@@ -34,6 +34,8 @@ Espo.define('views/record/detail', 'views/record/base', function (Dep) {
|
||||
|
||||
gridLayout: null,
|
||||
|
||||
detailLayout: null,
|
||||
|
||||
/**
|
||||
* @property {string} or {bool} ['both', 'top', 'bottom', false, true] Where to display buttons.
|
||||
*/
|
||||
@@ -338,6 +340,8 @@ Espo.define('views/record/detail', 'views/record/base', function (Dep) {
|
||||
|
||||
this.layoutName = this.options.layoutName || this.layoutName;
|
||||
|
||||
this.detailLayout = this.options.detailLayout || this.detailLayout;
|
||||
|
||||
this.type = this.options.type || this.type;
|
||||
|
||||
this.buttons = this.options.buttons || this.buttons;
|
||||
@@ -627,10 +631,19 @@ Espo.define('views/record/detail', 'views/record/base', function (Dep) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.detailLayout) {
|
||||
this.gridLayout = {
|
||||
type: 'record',
|
||||
layout: this.convertDetailLayout(this.detailLayout)
|
||||
};
|
||||
callback(this.gridLayout);
|
||||
return;
|
||||
}
|
||||
|
||||
this._helper.layoutManager.get(this.model.name, this.layoutName, function (simpleLayout) {
|
||||
this.gridLayout = {
|
||||
type: 'record',
|
||||
layout: this.convertDetailLayout(simpleLayout),
|
||||
layout: this.convertDetailLayout(simpleLayout)
|
||||
};
|
||||
callback(this.gridLayout);
|
||||
}.bind(this));
|
||||
|
||||
@@ -19,16 +19,18 @@
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.Record.ListTreeItem', 'View', function (Dep) {
|
||||
Espo.define('views/record/list-tree-item', 'view', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'record.list-tree-item',
|
||||
template: 'record/list-tree-item',
|
||||
|
||||
isEnd: false,
|
||||
|
||||
level: 0,
|
||||
|
||||
listViewName: 'views/record/list-tree',
|
||||
|
||||
data: function () {
|
||||
return {
|
||||
name: this.model.get('name'),
|
||||
@@ -120,7 +122,7 @@ Espo.define('Views.Record.ListTreeItem', 'View', function (Dep) {
|
||||
view.render();
|
||||
};
|
||||
}
|
||||
this.createView('children', 'Record.ListTree', {
|
||||
this.createView('children', this.listViewName, {
|
||||
collection: childCollection,
|
||||
el: this.options.el + ' > .children',
|
||||
createDisabled: this.options.createDisabled,
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('Views.Record.ListTree', 'Views.Record.List', function (Dep) {
|
||||
Espo.define('views/record/list-tree', 'views/record/list', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
template: 'record.list-tree',
|
||||
template: 'record/list-tree',
|
||||
|
||||
showMore: false,
|
||||
|
||||
@@ -53,6 +53,8 @@ Espo.define('Views.Record.ListTree', 'Views.Record.List', function (Dep) {
|
||||
|
||||
level: 0,
|
||||
|
||||
itemViewName: 'views/record/list-tree-item',
|
||||
|
||||
data: function () {
|
||||
var data = Dep.prototype.data.call(this);
|
||||
data.createDisabled = this.createDisabled;
|
||||
@@ -151,7 +153,7 @@ Espo.define('Views.Record.ListTree', 'Views.Record.List', function (Dep) {
|
||||
var built = 0;
|
||||
modelList.forEach(function (model, i) {
|
||||
this.rows.push('row-' + i);
|
||||
this.createView('row-' + i, 'Record.ListTreeItem', {
|
||||
this.createView('row-' + i, this.itemViewName, {
|
||||
model: model,
|
||||
collection: this.collection,
|
||||
el: this.options.el + ' ' + this.getRowSelector(model.id),
|
||||
@@ -186,14 +188,22 @@ Espo.define('Views.Record.ListTree', 'Views.Record.List', function (Dep) {
|
||||
return this.options.el + ' li[data-id="' + model.id + '"] span.cell-' + item.name;
|
||||
},
|
||||
|
||||
getCreateAttributes: function () {
|
||||
return {};
|
||||
},
|
||||
|
||||
actionCreate: function (data, e) {
|
||||
e.stopPropagation();
|
||||
|
||||
var parentId = null;
|
||||
var parentName = null;
|
||||
var attributes = this.getCreateAttributes();
|
||||
|
||||
attributes.order = this.collection.length + 1;
|
||||
attributes.parentId = null;
|
||||
attributes.parentName = null;
|
||||
|
||||
if (this.model) {
|
||||
parentId = this.model.id;
|
||||
parentName = this.model.get('name');
|
||||
attributes.parentId = this.model.id;
|
||||
attributes.parentName = this.model.get('name');
|
||||
}
|
||||
|
||||
var scope = this.collection.name;
|
||||
@@ -201,11 +211,7 @@ Espo.define('Views.Record.ListTree', 'Views.Record.List', function (Dep) {
|
||||
var viewName = this.getMetadata().get('clientDefs.' + scope + '.modalViews.edit') || 'Modals.Edit';
|
||||
this.createView('quickCreate', viewName, {
|
||||
scope: scope,
|
||||
attributes: {
|
||||
parentId: parentId,
|
||||
parentName: parentName,
|
||||
order: this.collection.length + 1
|
||||
}
|
||||
attributes: attributes
|
||||
}, function (view) {
|
||||
view.render();
|
||||
this.listenToOnce(view, 'after:save', function (model) {
|
||||
|
||||
@@ -410,9 +410,13 @@ Espo.define('views/record/list', 'view', function (Dep) {
|
||||
}
|
||||
|
||||
this.notify('Loading...');
|
||||
var ids = this.checkedList;
|
||||
var ids = false;
|
||||
var allResultIsChecked = this.allResultIsChecked;
|
||||
this.createView('massUpdate', 'Modals.MassUpdate', {
|
||||
if (!allResultIsChecked) {
|
||||
ids = this.checkedList;
|
||||
}
|
||||
|
||||
this.createView('massUpdate', 'views/modals/mass-update', {
|
||||
scope: this.scope,
|
||||
ids: ids,
|
||||
where: this.collection.getWhere(),
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM - Open Source CRM application.
|
||||
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
|
||||
* Website: http://www.espocrm.com
|
||||
*
|
||||
* EspoCRM is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* EspoCRM is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
Espo.define('views/record/row-actions/relationship-view-and-unlink', 'views/record/row-actions/relationship', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
getActionList: function () {
|
||||
var list = [{
|
||||
action: 'viewRelated',
|
||||
label: 'View',
|
||||
data: {
|
||||
id: this.model.id
|
||||
}
|
||||
}];
|
||||
if (this.options.acl.edit) {
|
||||
list.push({
|
||||
action: 'unlinkRelated',
|
||||
label: 'Unlink',
|
||||
data: {
|
||||
id: this.model.id
|
||||
}
|
||||
});
|
||||
}
|
||||
return list;
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -50,7 +50,8 @@ Espo.define('Views.Role.Record.Table', 'View', function (Dep) {
|
||||
'recordAllTeamOwnNo': ['all', 'team', 'own', 'no'],
|
||||
'recordAllTeamNo': ['all', 'team', 'no'],
|
||||
'recordAllOwnNo': ['all', 'own', 'no'],
|
||||
'recordAllNo': ['all', 'no']
|
||||
'recordAllNo': ['all', 'no'],
|
||||
'record': ['all', 'team', 'own', 'no'],
|
||||
},
|
||||
|
||||
data: function () {
|
||||
|
||||
@@ -17,49 +17,58 @@
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
Espo.define('Views.Settings.Fields.CurrencyRates', 'Views.Fields.Base', function (Dep) {
|
||||
************************************************************************/
|
||||
Espo.define('views/settings/fields/currency-rates', 'views/fields/base', function (Dep) {
|
||||
|
||||
return Dep.extend({
|
||||
|
||||
editTemplate: 'settings.fields.currency-rates.edit',
|
||||
|
||||
|
||||
editTemplate: 'settings/fields/currency-rates/edit',
|
||||
|
||||
data: function () {
|
||||
var baseCurrency = this.model.get('baseCurrency');
|
||||
var currencyRates = this.model.get('currencyRates') || {};
|
||||
|
||||
|
||||
var rateValues = {};
|
||||
this.model.get('currencyList').forEach(function (currency) {
|
||||
if (currency != baseCurrency) {
|
||||
rateValues[currency] = currencyRates[currency] || 1.00;
|
||||
}
|
||||
}, this);
|
||||
|
||||
|
||||
return {
|
||||
rateValues: rateValues
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
setup: function () {
|
||||
},
|
||||
|
||||
|
||||
fetch: function () {
|
||||
var data = {};
|
||||
var currencyRates = {};
|
||||
|
||||
|
||||
var baseCurrency = this.model.get('baseCurrency');
|
||||
|
||||
this.model.get('currencyList').forEach(function (currency) {
|
||||
|
||||
var currencyList = this.model.get('currencyList') || [];
|
||||
|
||||
currencyList.forEach(function (currency) {
|
||||
if (currency != baseCurrency) {
|
||||
currencyRates[currency] = parseFloat(this.$el.find('input[data-currency="'+currency+'"]').val() || 1);
|
||||
}
|
||||
}, this);
|
||||
|
||||
|
||||
delete currencyRates[baseCurrency];
|
||||
for (var c in currencyRates) {
|
||||
if (!~currencyList.indexOf(c)) {
|
||||
delete currencyRates[c];
|
||||
}
|
||||
}
|
||||
|
||||
data[this.name] = currencyRates;
|
||||
|
||||
|
||||
return data;
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
@@ -93,6 +93,8 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
|
||||
|
||||
var tabList = this.getPreferences().get('useCustomTabList') ? this.getPreferences().get('tabList') : this.getConfig().get('tabList');
|
||||
|
||||
tabList = tabList || [];
|
||||
|
||||
this.tabList = tabList.filter(function (scope) {
|
||||
if (this.getMetadata().get('scopes.' + scope + '.acl')) {
|
||||
return this.getAcl().check(scope);
|
||||
|
||||
@@ -111,7 +111,9 @@ Espo.define('views/stream/list', 'views/record/list-expanded', function (Dep) {
|
||||
});
|
||||
},
|
||||
|
||||
actionViewRecord: function (data) {
|
||||
actionViewRecord: function (data, e) {
|
||||
e.stopPropagation();
|
||||
|
||||
var id = data.id;
|
||||
var scope = data.scope;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user