Compare commits

..

13 Commits
3.6.1 ... 3.6.2

Author SHA1 Message Date
yuri
725a2be959 fix resize 3 2015-08-28 14:30:17 +03:00
yuri
08b576105c fix nav resize 2 2015-08-28 14:24:27 +03:00
yuri
0e19fe087b fix email restricted appearance 2015-08-27 17:12:42 +03:00
yuri
44ddf9b400 fix acl manager 2015-08-27 15:29:30 +03:00
yuri
9509d00fd4 readOnlyDisabled option 2015-08-27 12:16:53 +03:00
yuri
70eb562400 fix user limit 2015-08-27 12:04:10 +03:00
yuri
6f89a01c50 convert lead improvements 2015-08-27 10:29:07 +03:00
yuri
2d85106a1f dont error 500 if try to follow entity w/o stream 2015-08-27 10:10:41 +03:00
yuri
a9cad90a02 hack issue with user theme and not rendered css 2015-08-26 12:07:53 +03:00
yuri
597d83c6f7 version 2015-08-25 16:18:16 +03:00
yuri
cbc3c3e921 fix theme 2015-08-25 16:17:03 +03:00
yuri
cdcaf7cd24 fix auth tokens 2015-08-24 14:49:53 +03:00
yuri
ce782ab8bd de_DE 2015-08-24 12:10:18 +03:00
31 changed files with 231 additions and 95 deletions

View File

@@ -166,7 +166,7 @@ class AclManager
return true;
}
$data = $this->getTable($user)->getScopeData($entity->getEntityType());
return $this->getImplementation($scope)->checkEntity($user, $entity, $data, $action);
return $this->getImplementation($entity->getEntityType())->checkEntity($user, $entity, $data, $action);
}
public function checkScope(User $user, $scope, $action = null, $isOwner = null, $inTeam = null, $entity = null)

View File

@@ -44,15 +44,18 @@
"Computer": "Informationstechnologie",
"Education": "Bildungswesen",
"Electronics": "Elektronik",
"Energy": "Energieerzeuger",
"Entertainment & Leisure": "Freizeit- und Unterhaltungsindustrie",
"Finance": "Finanzsektor",
"Food & Beverage": "Speisen und Getränke",
"Grocery": "Einzelhandel",
"Healthcare": "Gesundheitswesen",
"Insurance": "Versicherung",
"Legal": "Rechtswesen",
"Manufacturing": "Produktion",
"Publishing": "Medien",
"Real Estate": "Immobilien",
"Service": "Dienstleistung",
"Service": "Service",
"Sports": "Sport",
"Software": "Software",
"Technology": "Technologie",

View File

@@ -16,7 +16,8 @@
"softBouncedCount": "Soft Bounced",
"leadCreatedCount": "Erstellte Interessenten",
"revenue": "Umsatz",
"revenueConverted": "Umsatz (konvertiert)"
"revenueConverted": "Umsatz (konvertiert)",
"budget": "Budget"
},
"links": {
"targetLists": "Kontaktlisten",

View File

@@ -5,11 +5,21 @@
"status": "Status",
"account": "Firma",
"contact": "Kontakt",
"contacts": "Kontakte",
"priority": "Priorität",
"type": "Typ",
"description": "Beschreibung"
"description": "Beschreibung",
"inboundEmail": "Eingehende E-Mails"
},
"links": {
"inboundEmail": "Eingehende E-Mails",
"account": "Firma",
"contact": "Kontakt (Primär)",
"Contacts": "Kontakte",
"meetings": "Meetings",
"calls": "Anrufe",
"tasks": "Aufgaben",
"emails": "E-Mails"
},
"options": {
"status": {

View File

@@ -21,7 +21,10 @@
"cases": "Fälle",
"targetLists": "Kontaktlisten",
"campaignLogRecords": "Kampagnen Log",
"campaign": "Kampagne"
"campaign": "Kampagne",
"account": "Firma (Primär)",
"accounts": "Firmen",
"casesPrimary": "Fälle (Primär)"
},
"labels": {
"Create Contact": "Kontakt erstellen"

View File

@@ -56,7 +56,7 @@
"Log Call": "Anruf erfassen",
"Archive Email": "E-Mail archivieren",
"Create Task": "Neue Aufgabe",
"Tasks": "Aufgaben"
"Tasks": "Aufgaben"
},
"fields": {
"billingAddressCity": "Ort",
@@ -68,7 +68,7 @@
"addressStreet": "Straße",
"addressCountry": "Land",
"addressState": "Bundesland/Kanton",
"addressPostalCode": "PLZ",
"addressPostalCode": "PLZ",
"shippingAddressCity": "Ort (Lieferadresse)",
"shippingAddressStreet": "Straße (Lieferadresse)",
"shippingAddressCountry": "Land (Lieferadresse)",
@@ -78,7 +78,7 @@
"links": {
"contacts": "Kontakte",
"opportunities": "Verkaufschancen",
"leads": "Interessenten",
"leads": "Interessenten",
"meetings": "Meetings",
"calls": "Anrufe",
"tasks": "Aufgaben",
@@ -87,7 +87,7 @@
"cases": "Fälle",
"documents": "Dokumente",
"account": "Firma",
"opportunity": "Verkaufschance",
"opportunity": "Verkaufschance",
"contact": "Kontakt",
"parent": "Bezieht sich auf"
},

View File

@@ -28,7 +28,10 @@
"links": {
"targetLists": "Kontaktlisten",
"campaignLogRecords": "Kampagnen Log",
"campaign": "Kampagne"
"campaign": "Kampagne",
"createdAccount": "Firma",
"createdContact": "Kontakt",
"createdOpportunity": "Verkaufschance"
},
"options": {
"status": {

View File

@@ -38,7 +38,7 @@
"Set Not Held": "Auf nicht gehalten setzen",
"Send Invitations": "Einladungen versenden",
"on time": "Aktuelle Zeit",
"before": "bevor"
"before": "Bevor"
},
"presetFilters": {
"planned": "Geplant",

View File

@@ -231,6 +231,11 @@
"foreign": "leads"
}
},
"convertEntityList": [
"Account",
"Contact",
"Opportunity"
],
"convertFields": {
"Contact": {
},

View File

@@ -8,7 +8,7 @@
"Data": "Daten",
"Customization": "Anpassung",
"Available Fields": "Verfügbare Felder",
"Layout": "Layout",
"Layout": "Aktuelles Layout",
"Entity Manager": "Entitäts-/Modulmanager",
"Add Panel": "Panel hinzufügen",
"Add Field": "Feld hinzufügen",
@@ -20,7 +20,7 @@
"Teams": "Teams",
"Roles": "Rollen",
"Outbound Emails": "Ausgehende E-Mails",
"Inbound Emails": "Eingehende E-Mails",
"Inbound Emails": "Gruppen E-Mail Konten",
"Email Templates": "E-Mail Vorlagen",
"Import": "Import",
"Layout Manager": "Layouts anpassen",
@@ -45,7 +45,9 @@
"Edit Entity": "Entität/Modul bearbeiten",
"Create Link": "Relation erstellen",
"Edit Link": "Relation bearbeiten",
"Notifications": "Benachrichtigungen"
"Notifications": "Benachrichtigungen",
"Jobs": "Jobs",
"Reset to Default": "Zurücksetzen auf Standard"
},
"layouts": {
"list": "Liste",
@@ -85,7 +87,8 @@
"varchar": "Text (max. 255)",
"file": "Datei",
"image": "Bild",
"multiEnum": "Mehrfachauswahl"
"multiEnum": "Mehrfachauswahl",
"attachmentMultiple": "Mehrfach Anhänge"
},
"fields": {
"type": "Typ",
@@ -106,17 +109,19 @@
"noEmptyString": "Keine leere Zeichenkette",
"defaultType": "Standardtyp",
"seeMoreDisabled": "Abschneiden des Texts verhindern",
"entityList": "Entity List"
"entityList": "Entitätsliste",
"isSorted": "Sortiert (alphabetisch)",
"audited": "Auditiert"
},
"messages": {
"upgradeVersion": "Ihr EspoCRM wird nun auf Version <strong>{version}</strong> aktualisiert. Dies kann einige Zeit dauern.",
"upgradeDone": "Ihr EspoCRM wurde auf Version <strong>{version}</strong> aktualisiert.",
"upgradeBackup": "Wir empfehlen, vor der Aktualisierung von EspoCRM das Programmverzeichnis sowie die Datenbank zu sichern.",
"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ät links auswählen",
"selectUpgradePackage": "Aktualisierungspaket auswählen",
"downloadUpgradePackage": "Download upgrade package(s) <a href=\"{url}\">here</a>.",
"downloadUpgradePackage": "Aktualisierungspaket(e) <a href=\"{url}\">hier </a>herunterladen.",
"selectLayout": "Layout zum Editieren links auswählen",
"selectExtensionPackage": "Erweiterungspaket auswählen",
"extensionInstalled": "Erweiterung {name} {version} wurde installiert.",

View File

@@ -38,7 +38,8 @@
"Forward": "Weiterleiten",
"Original message": "Originalnachricht",
"Forwarded message": "Weitergeleitete Nachricht:",
"Email Accounts": "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",
"Send": "Senden",

View File

@@ -11,7 +11,8 @@
"fetchSince": "Holen seit",
"emailAddress": "E-Mail Adresse",
"sentFolder": "Gesendet Ordner",
"storeSentEmails": "Gesendete E-Mails speichern"
"storeSentEmails": "Gesendete E-Mails speichern",
"keepFetchedEmailsUnread": "Geholte E-Mails als ungelesen behalten"
},
"links": {
},

View File

@@ -6,7 +6,7 @@
"body": "Inhalt",
"subject": "Betreff",
"attachments": "Anhänge",
"insertField": "Project-Id-Version: 3.50\nPOT-Creation-Date: 2015-07-22\nPO-Revision-Date: \nLast-Translator: iscon\nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\n"
"insertField": "Project-Id-Version: \nPOT-Creation-Date: \nPO-Revision-Date: \nLast-Translator: \nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\nX-Generator: Poedit 1.8.4\n"
},
"links": {
},

View File

@@ -5,17 +5,18 @@
"Team": "Team",
"Role": "Rolle",
"EmailTemplate": "E-Mail Vorlage",
"EmailAccount": "E-Mail Konto",
"EmailAccountScope": "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": "Übersicht",
"InboundEmail": "Eingehende E-Mail",
"InboundEmail": "Gruppen E-Mail Konto",
"Stream": "Vorgänge",
"Import": "Import",
"Template": "Vorlage"
"Template": "Vorlage",
"Job": "Job"
},
"scopeNamesPlural": {
"Email": "E-Mails",
@@ -23,17 +24,18 @@
"Team": "Teams",
"Role": "Rollen",
"EmailTemplate": "E-Mail Vorlagen",
"EmailAccount": "E-Mail Konten",
"EmailAccountScope": "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": "Übersicht",
"InboundEmail": "Eingehende E-Mails",
"InboundEmail": "Gruppen E-Mail Konten",
"Stream": "Vorgänge",
"Import": "Importergebnis",
"Template": "Vorlagen"
"Template": "Vorlagen",
"Job": "Jobs"
},
"labels": {
"Misc": "Verschiedenes",
@@ -160,7 +162,8 @@
"Tree View": "Baumansicht",
"Unlink All": "Alle Links entfernen",
"Total": "Gesamt",
"Print to PDF": "Als PDF drucken"
"Print to PDF": "Als PDF drucken",
"Default": "Standard"
},
"messages": {
"pleaseWait": "Bitte warten...",
@@ -251,7 +254,8 @@
},
"notificationMessages": {
"assign": "{entityType} {entity} wurde Ihnen zugewiesen",
"emailReceived": "E-Mail empfangen von {from}"
"emailReceived": "E-Mail empfangen von {from}",
"entityRemoved": "{user} hat {entityType} {entity} entfernt"
},
"streamMessages": {
"create": "{user} hat {entityType} {entity} erstellt",
@@ -391,7 +395,8 @@
"currentQuarter": "Aktuelles Quartal",
"lastQuarter": "Letztes Quartal",
"currentYear": "Aktuelles Jahr",
"lastYear": "Letztes Jahr"
"lastYear": "Letztes Jahr",
"lastSevenDays": "Letzten 7 Tage"
},
"searchRanges": {
"is": "Ist",
@@ -480,7 +485,7 @@
"style":{
"style": "Stil",
"normal": "Normal",
"blockquote": "Zitat",
"blockquote": "Angebot",
"pre": "Quellcode",
"h1": "Überschrift 1",
"h2": "Überschrift 2",
@@ -530,5 +535,11 @@
"redo": "Wiederholen"
}
}
},
"themes": {
"Espo": "Espo",
"Sakura": "Sakura",
"EspoVertical": "Espo (Vertikal)",
"SakuraVertical": "Sakura (Vertical)"
}
}

View File

@@ -1,6 +1,7 @@
{
"fields": {
"name": "Name",
"emailAddress": "E-Mail Adresse",
"team": "Team",
"status": "Status",
"assignToUser": "Mit Benutzer verknüpfen",

View File

@@ -0,0 +1,20 @@
{
"fields": {
"status": "Status",
"executeTime": "Ausführen um",
"attempts": "Verbleibende Versuche",
"failedAttempts": "Fehlgeschlagene Versuche",
"serviceName": "Service",
"method": "Methode",
"scheduledJob": "Geplante Aufgabe",
"data": "Daten"
},
"options": {
"status": {
"Pending": "Schwebend",
"Success": "Erfolg",
"Running": "Läuft",
"Failed": "Fehlgeschlagen"
}
}
}

View File

@@ -22,7 +22,8 @@
"autoFollowEntityTypeList": "Autom. Beobachten",
"signature": "E-Mail Signatur",
"dashboardTabList": "Reiter Liste",
"defaultReminders": "Standarderinnerungen"
"defaultReminders": "Standarderinnerungen",
"theme": "Design"
},
"links": {
},

View File

@@ -51,7 +51,10 @@
"assignmentEmailNotificationsEntityList": "Entitäten über die mit E-Mail bei Zuweisung benachrichtigt werden soll",
"b2cMode": "B2C Modus",
"avatarsDisabled": "Avatare deaktivieren",
"followCreatedEntities": "Erstellten Einträgen beobachten"
"followCreatedEntities": "Erstellten Einträgen beobachten",
"displayListViewRecordCount": "Gesamtanzahl anzeigen (in Listenansicht)",
"theme": "Design",
"userThemesDisabled": "Benutzerdesigns deaktivieren"
},
"options": {
"weekStart": {
@@ -62,7 +65,7 @@
"tooltips": {
"recordsPerPageSmall": "Anzahl Sätze in Beziehungssubpanels",
"outboundEmailIsShared": "Benutzern gestatten, E-Mails über dieses SMTP Konto zu senden",
"followCreatedEntities": "Wenn ein Benutzer einen Datensatz erstellt hat dann folgt er ihm automatisch"
"followCreatedEntities": "Benutzer folgen automatisch jenen Sätzen die sie erstellt haben"
},
"labels": {
"System": "System",

View File

@@ -169,7 +169,7 @@ class Stream extends \Espo\Core\Services\Base
public function followEntityMass(Entity $entity, array $sourceUserIdList)
{
if (!$this->getMetadata()->get('scopes.' . $entity->getEntityName() . '.stream')) {
throw new Error();
return false;
}
$userIdList = [];

View File

@@ -255,10 +255,11 @@ class User extends Record
if ($this->getConfig()->get('userLimit') && !$this->getUser()->get('isSuperAdmin')) {
$userCount = $this->getEntityManager()->getRepository('User')->where(array(
'isActive' => true,
'isSuperAdmin' => false
'isSuperAdmin' => false,
'id!=' => 'system'
))->count();
if ($userCount >= $this->getConfig()->get('userLimit')) {
throw new Forbidden('User limit is reached.');
throw new Forbidden('User limit '.$this->getConfig()->get('userLimit').' is reached.');
}
}
}
@@ -270,10 +271,11 @@ class User extends Record
if (array_key_exists('isActive', $data) && $data['isActive']) {
$userCount = $this->getEntityManager()->getRepository('User')->where(array(
'isActive' => true,
'isSuperAdmin' => false
'isSuperAdmin' => false,
'id!=' => 'system'
))->count();
if ($userCount >= $this->getConfig()->get('userLimit')) {
throw new Forbidden('User limit is reached.');
throw new Forbidden('User limit '.$this->getConfig()->get('userLimit').' is reached.');
}
}
}

View File

@@ -1,12 +1,12 @@
<div class="page-header">
<h3><a href='#Lead'>{{translate scope category='scopeNamesPlural'}}</a>
&raquo
<a href='#Lead/view/{{this.model.id}}'>{{get this.model 'name'}}</a>
&raquo
<h3><a href='#Lead'>{{translate scope category='scopeNamesPlural'}}</a>
&raquo
<a href='#Lead/view/{{this.model.id}}'>{{get this.model 'name'}}</a>
&raquo
{{translate 'convert' scope='Lead'}}</h3>
</div>
{{#each scopes}}
{{#each scopeList}}
<div>
<label><h4><input type="checkbox" class="check-scope" data-scope="{{./this}}"> {{translate this category='scopeNames'}}</h4></label>
<div class="edit-container-{{toDom this}} hide">
@@ -16,6 +16,8 @@
{{/each}}
<div class="button-container">
<button class="btn btn-primary" data-action="convert">{{translate 'Convert' scope='Lead'}}</button>
<button class="btn btn-default" data-action="cancel">{{translate 'Cancel'}}</button>
<div class="btn-group">
<button class="btn btn-primary" data-action="convert">{{translate 'Convert' scope='Lead'}}</button>
<button class="btn btn-default" data-action="cancel">{{translate 'Cancel'}}</button>
</div>
</div>

View File

@@ -27,7 +27,7 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
data: function () {
return {
scopes: this.scopes,
scopeList: this.scopeList,
scope: this.model.name,
};
},
@@ -69,18 +69,21 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
},
build: function () {
var scopes = this.scopes = [];
for (var scope in this.model.defs.convertFields) {
if (this.getAcl().check(scope, 'edit')) {
scopes.push(scope);
var scopeList = this.scopeList = [];
(this.getMetadata().get('entityDefs.Lead.convertEntityList') || []).forEach(function (scope) {
if (scope == 'Account' && this.getConfig().get('b2cMode')) {
return;
}
}
if (this.getAcl().check(scope, 'edit')) {
scopeList.push(scope);
}
}, this);
var i = 0;
var attributeList = this.getFieldManager().getEntityAttributes(this.model.name);
var ignoreAttributeList = ['createdAt', 'modifiedAt', 'modifiedById', 'modifiedByName', 'createdById', 'createdByName'];
scopes.forEach(function (scope) {
scopeList.forEach(function (scope) {
this.getModelFactory().create(scope, function (model) {
model.populateDefaults();
@@ -109,27 +112,31 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
exit: function () {},
}, function (view) {
i++;
if (i == scopes.length) {
if (i == scopeList.length) {
this.wait(false);
this.notify(false);
}
}.bind(this));
}, this);
}, this);
if (scopeList.length == 0) {
this.wait(false);
}
},
convert: function () {
var scopes = [];
var scopeList = [];
this.scopes.forEach(function (scope) {
this.scopeList.forEach(function (scope) {
var el = this.$el.find('input[data-scope="' + scope + '"]').get(0);
if (el && el.checked) {
scopes.push(scope);
scopeList.push(scope);
}
}.bind(this));
if (scopes.length == 0) {
if (scopeList.length == 0) {
this.notify('Select one or more checkboxes', 'error');
return;
}
@@ -137,11 +144,11 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
this.getRouter().confirmLeaveOut = false;
var notValid = false;
scopes.forEach(function (scope) {
scopeList.forEach(function (scope) {
var editView = this.getView(scope);
editView.model.set(editView.fetch());
notValid = editView.validate() || notValid;
}.bind(this));
}, this);
var self = this;
@@ -149,7 +156,7 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
id: self.model.id,
records: {}
};
scopes.forEach(function (scope) {
scopeList.forEach(function (scope) {
data.records[scope] = self.getView(scope).model.attributes;
});
@@ -162,9 +169,10 @@ Espo.define('crm:views/lead/convert', 'View', function (Dep) {
data: JSON.stringify(data),
type: 'POST',
success: function () {
this.getRouter().confirmLeaveOut = false;
self.getRouter().navigate('#Lead/view/' + self.model.id, {trigger: true});
self.notify('Converted', 'success');
},
}.bind(this),
error: function () {
self.$el.find('[data-action="convert"]').removeClass('disabled');
}

View File

@@ -16,7 +16,7 @@
{{#each tabListDefs}}
<li data-name="{{name}}"><a href="{{link}}" class="nav-link"><span class="full-label">{{label}}</span><span class="short-label" title="{{label}}">{{shortLabel}}</span></a></li>
{{/each}}
<li class="dropdown">
<li class="dropdown more">
<a id="nav-more-tabs-dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#">{{translate 'More'}} <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="nav-more-tabs-dropdown"></ul>
</li>

View File

@@ -137,7 +137,9 @@ Espo.define(
this.user.defs = this.metadata.get('entityDefs.User');
this.preferences.defs = this.metadata.get('entityDefs.Preferences');
$('#main-stylesheet').attr('href', this.themeManager.getStylesheet());
if (this.themeManager.isUserTheme()) {
$('#main-stylesheet').attr('href', this.themeManager.getStylesheet());
}
this.loader.addLibsConfig(this.metadata.get('app.jsLibs') || {});

View File

@@ -35,7 +35,7 @@ Espo.define('theme-manager', [], function () {
return name;
}
}
return this.config.get('name');
return this.config.get('theme');
},
getStylesheet: function () {

View File

@@ -23,7 +23,7 @@ Espo.define('views/admin/auth-token/record/list', 'views/record/list', function
return Dep.extend({
rowActionsView: 'record/row-actions/remove-only',
rowActionsView: 'views/record/row-actions/remove-only',
massActionList: ['remove'],

View File

@@ -30,13 +30,16 @@ Espo.define('views/email/record/detail', 'views/record/detail', function (Dep) {
var isRestricted = false;
if (this.model.get('status') == 'Sent') {
this.layoutName += 'Restricted';
isRestricted = true;
}
if (this.model.get('status') == 'Archived' && this.model.get('createdById') == 'system') {
if (this.model.get('status') == 'Archived') {
if (this.model.get('createdById') == 'system' || !this.model.get('createdById')) {
isRestricted = true;
}
}
if (isRestricted) {
this.layoutName += 'Restricted';
isRestricted = true;
}
this.isRestricted = isRestricted;
}

View File

@@ -171,6 +171,10 @@ Espo.define('Views.Fields.Base', 'View', function (Dep) {
}
}
if (this.options.readOnlyDisabled) {
this.readOnly = false;
}
if (this.mode == 'edit' && this.readOnly) {
this.mode = 'detail';
}

View File

@@ -121,17 +121,8 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
});
},
afterRender: function () {
this.selectTab(this.getRouter().getLast().controller);
if (this.getStorage().get('state', 'layoutMinimized')) {
var $body = $('body');
$body.addClass('minimized');
}
var self = this;
$window = $(window);
adjust: function () {
var $window = $(window);
var navbarIsVertical = this.getThemeManager().getParam('navbarIsVertical');
var navbarStaticItemsHeight = this.getThemeManager().getParam('navbarStaticItemsHeight') || 0;
@@ -140,7 +131,8 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
if (!navbarIsVertical) {
var $tabs = this.$el.find('ul.tabs');
var $more = $tabs.find('li.dropdown > ul');
var $moreDropdown = $tabs.find('li.more');
var $more = $tabs.find('li.more > ul');
$window.on('resize.navbar', function() {
updateWidth();
@@ -152,28 +144,29 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
$one.prependTo($more);
};
var unhideOneTab = function () {
var count = $tabs.children().size();
var $one = $more.children().eq(0);
if ($one.size()) {
$one.insertAfter($tabs.children().eq(count - 2));
$one.insertBefore($moreDropdown);
}
};
var tabCount = this.tabList.length;
var $navbar = $('#navbar .navbar');
var navbarNeededHeight = 45;
var moreWidth = $('#nav-more-tabs-dropdown').width();
$moreDd = $('#nav-more-tabs-dropdown');
var updateWidth = function () {
var windowWidth = $(window.document).width();
var windowWidth = window.innerWidth;
var moreWidth = $moreDd.width();
$more.children('li').each(function (i, li) {
unhideOneTab();
});
$more.parent().addClass('hide');
$more.parent().addClass('hidden');
if (windowWidth < smallScreenWidth) {
return;
@@ -182,15 +175,23 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
var headerWidth = this.$el.width();
var maxWidth = headerWidth - 546 - moreWidth;
var width = $tabs.width();
var i = 0;
while (width > maxWidth) {
hideOneTab();
width = $tabs.width();
i++;
if (i >= tabCount) {
setTimeout(function () {
updateWidth();
}, 100);
break;
}
}
if ($more.children().size() > 0) {
$more.parent().removeClass('hide');
$moreDropdown.removeClass('hidden');
}
}.bind(this);
@@ -208,10 +209,12 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
};
if ($navbar.height() <= navbarNeededHeight) {
$more.parent().addClass('hide');
$more.parent().addClass('hidden');
}
processUpdateWidth();
} else {
var $tabs = this.$el.find('ul.tabs');
@@ -238,7 +241,51 @@ Espo.define('Views.Site.Navbar', 'View', function (Dep) {
});
updateHeight();
}
},
afterRender: function () {
this.selectTab(this.getRouter().getLast().controller);
if (this.getStorage().get('state', 'layoutMinimized')) {
var $body = $('body');
$body.addClass('minimized');
}
if (this.getThemeManager().getParam('navbarIsVertical')) {
var process = function () {
if (this.$el.height() < $(window).height() / 2) {
setTimeout(function () {
process();
}.bind(this), 50);
return;
}
if (this.getThemeManager().isUserTheme()) {
setTimeout(function () {
this.adjust();
}.bind(this), 10);
return;
}
this.adjust();
}.bind(this);
process();
} else {
var process = function () {
if (this.$el.width() < $(window).width() / 2) {
setTimeout(function () {
process();
}.bind(this), 50);
return;
}
if (this.getThemeManager().isUserTheme()) {
setTimeout(function () {
this.adjust();
}.bind(this), 10);
return;
}
this.adjust();
}.bind(this);
process();
}
},
selectTab: function (name) {

View File

@@ -1,7 +1,7 @@
{
"labels": {
"Main page title": "Willkommen bei EspoCRM",
"Main page header": "Project-Id-Version: 3.50\nPOT-Creation-Date: 2015-07-22\nPO-Revision-Date: \nLast-Translator: iscon\nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\n",
"Main page header": "Project-Id-Version: \nPOT-Creation-Date: \nPO-Revision-Date: \nLast-Translator: \nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\nX-Generator: Poedit 1.8.4\n",
"Start page title": "Lizenz Vereinbarung",
"Step1 page title": "Lizenz Vereinbarung",
"License Agreement": "Lizenz Vereinbarung",
@@ -14,7 +14,7 @@
"Finish page title": "Die Installation ist abgeschlossen",
"Congratulation! Welcome to EspoCRM": "Gratulation! EspoCRM wurde erfolgreich installiert.",
"More Information": "Für mehr Informationen besuchen Sie bitte unseren {BLOG} und/oder folgen Sie und auf {TWITTER}.<br><br>Für Fragen oder Verbesserungsvorschläge besuchen Sie das {FORUM}.",
"share": "Wenn Sie EspoCRM gut finden dann erzählen Sie anderen Leuten wie toll Sie das Produkt finden.",
"share": "Wenn Sie EspoCRM gut finden, dann erzählen Sie Ihren Freunden und anderen Leuten davon!",
"blog": "Blog",
"twitter": "Twitter",
"forum": "Forum",
@@ -120,7 +120,7 @@
"windows": "<br> <pre>1. Finden Sie die httpd.conf Datei (normalerweise in einem Verzeichnis conf, config oder ähnlich)<br> 2. Innerhalb der httpd.conf Datei aktivieren Sie die Zeile LoadModule rewrite_module modules/mod_rewrite.so (entfernen Sie das # Zeichen vom Anfang der Zeile)<br> 3. Stellen Sie sicher, dass die Zeile ClearModuleList nicht auskommentiert ist, genauso wie die Zeile AddModule mod_rewrite.c. </pre>"
},
"microsoft-iis": {
"windows": "Project-Id-Version: 3.50\nPOT-Creation-Date: 2015-07-22\nPO-Revision-Date: \nLast-Translator: iscon\nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\n"
"windows": "Project-Id-Version: \nPOT-Creation-Date: \nPO-Revision-Date: \nLast-Translator: \nLanguage-Team: iscon group <info@iscongroup.net>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nLanguage: de_DE\nX-Generator: Poedit 1.8.4\n"
}
},
"modRewriteHelp": {

View File

@@ -1,6 +1,6 @@
{
"name": "espocrm",
"version": "3.6.1",
"version": "3.6.2",
"description": "",
"main": "index.php",
"repository": {