From 93fd6c244b6cdbf2968bbe99111f4efc84173ed9 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Fri, 29 Mar 2019 15:32:40 +0100 Subject: [PATCH] Employee and EmployeeRole --- .../_____SYSTEM_APPLICATION_NEON.aod | 1 + .../AttributeRelation_entity.aod | 6 + .../EmployeeRole_entity.aod | 50 +++++++++ .../entityfields/uid/possibleItemsProcess.js | 10 ++ .../recordcontainers/jdito/contentProcess.js | 11 ++ .../recordcontainers/jdito/onInsert.js | 22 ++++ entity/Employee_entity/Employee_entity.aod | 103 +++++++++++++++++- .../objectrowid_param/valueProcess.js | 4 + .../children/objecttype_param/valueProcess.js | 4 + .../entityfields/contact_id/onValidation.js | 0 .../children/usertitle_param/valueProcess.js | 4 + .../entityfields/firstname/valueProcess.js | 16 +++ .../entityfields/image/valueProcess.js | 15 +++ .../entityfields/lastname/valueProcess.js | 16 +++ .../name_fieldgroup/valueProcess.js | 4 + .../confirm_password => }/onValidation.js | 3 +- .../recordcontainers/jdito/contentProcess.js | 19 +++- .../recordcontainers/jdito/onInsert.js | 10 +- .../recordcontainers/jdito/onUpdate.js | 9 +- .../_____LANGUAGE_EXTRA.aod | 18 +++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 19 ++++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 18 +++ neonContext/EmployeeRole/EmployeeRole.aod | 12 ++ .../EmployeeEdit_view/EmployeeEdit_view.aod | 8 ++ .../EmployeeFilter_view.aod | 5 + .../EmployeeMain_view/EmployeeMain_view.aod | 10 ++ .../EmployeePreview_view.aod | 25 ++++- .../EmployeeRoleFilter_view.aod | 23 ++++ 28 files changed, 424 insertions(+), 21 deletions(-) create mode 100644 entity/EmployeeRole_entity/EmployeeRole_entity.aod create mode 100644 entity/EmployeeRole_entity/entityfields/uid/possibleItemsProcess.js create mode 100644 entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js create mode 100644 entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js create mode 100644 entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/contact_id/onValidation.js create mode 100644 entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/firstname/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/image/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/lastname/valueProcess.js create mode 100644 entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js rename entity/Employee_entity/{entityfields/confirm_password => }/onValidation.js (52%) create mode 100644 neonContext/EmployeeRole/EmployeeRole.aod create mode 100644 neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index daae7fbe27d..74af7250a3e 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -32,6 +32,7 @@ <node name="Attribute" kind="10077" /> <node name="KeywordEntry" kind="10077" /> <node name="KeywordAttribute" kind="10077" /> + <node name="Employee" kind="10077" /> <node name="INTERNAL_ADMINISTRATOR" kind="159" /> </node> </node> diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 2821c0bf012..118e70579db 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -99,6 +99,12 @@ <fieldName>Attributes</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>cb20be7b-35aa-43c7-bf98-3a31010b33d6</name> + <entityName>Employee_entity</entityName> + <fieldName>Attributes</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityParameter> diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod new file mode 100644 index 00000000000..fa71af3a049 --- /dev/null +++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0"> + <name>EmployeeRole_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + <title>Role</title> + <possibleItemsProcess>%aditoprj%/entity/EmployeeRole_entity/entityfields/uid/possibleItemsProcess.js</possibleItemsProcess> + </entityField> + <entityParameter> + <name>UserTitle_param</name> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityProvider> + <name>EmployeeRoles</name> + <fieldType>DEPENDENCY_IN</fieldType> + <dependencies> + <entityDependency> + <name>3bcec57a-7165-4773-9253-5ecab26ee3f4</name> + <entityName>Employee_entity</entityName> + <fieldName>EmployeeRoles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>UserTitle_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFields> + <element>UID.value</element> + </recordFields> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/EmployeeRole_entity/entityfields/uid/possibleItemsProcess.js b/entity/EmployeeRole_entity/entityfields/uid/possibleItemsProcess.js new file mode 100644 index 00000000000..a9b4b9a616d --- /dev/null +++ b/entity/EmployeeRole_entity/entityfields/uid/possibleItemsProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.tools"); + +var roles = []; +var allRoles = tools.getAllRoles([tools.ROLE_INTERNAL, tools.ROLE_PROJECT, tools.ROLE_XMPP]); + +for (let roleId in allRoles) + roles.push([roleId, allRoles[roleId][0]]) + +result.object(roles); \ No newline at end of file diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 00000000000..9f314aac5db --- /dev/null +++ b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); +import("system.tools"); + +var roles = []; +var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param"); + +if (userTitle) + roles = tools.getRoles(userTitle).map(function (role) {return [role]}); + +result.object(roles); \ No newline at end of file diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js b/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 00000000000..bd399bd50cb --- /dev/null +++ b/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,22 @@ +import("system.result"); +import("system.vars"); +import("system.tools"); + +var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param"); +var role = vars.get("$field.UID"); + +if (userTitle) +{ + var user = tools.getUser(userTitle); + var roles = tools.getRoles(userTitle); + var roleObj = {}; + roles = [role].concat(roles) + .filter(function (role) + { + roleObj[role] = true; + return !(role in roleObj); + }); + user[tools.ROLES] = roles; + + tools.updateUser(user); +} \ No newline at end of file diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index 80c05d8fb1d..f79dd76e4da 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -3,6 +3,7 @@ <name>Employee_entity</name> <title>Employee</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <onValidation>%aditoprj%/entity/Employee_entity/onValidation.js</onValidation> <iconId>VAADIN:GROUP</iconId> <recordContainer>jdito</recordContainer> <entityFields> @@ -11,23 +12,30 @@ </entityProvider> <entityField> <name>UID</name> + <searchable v="false" /> </entityField> <entityField> <name>TITLE</name> - <title>Title</title> + <title>Login</title> <mandatory v="true" /> <onValidation>%aditoprj%/entity/Employee_entity/entityfields/title/onValidation.js</onValidation> </entityField> <entityField> <name>CONTACT_ID</name> + <title>Person</title> + <consumer>Contacts</consumer> + <mandatory v="false" /> + <onValidation>%aditoprj%/entity/Employee_entity/entityfields/contact_id/onValidation.js</onValidation> </entityField> <entityField> <name>FIRSTNAME</name> <title>Firstname</title> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/firstname/valueProcess.js</valueProcess> </entityField> <entityField> <name>LASTNAME</name> <title>Lastname</title> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/lastname/valueProcess.js</valueProcess> </entityField> <entityField> <name>ISACTIVE</name> @@ -38,30 +46,114 @@ </entityField> <entityField> <name>EMAIL_ADDRESS</name> - <title>Email address</title> + <title>Email</title> + <mandatory v="true" /> </entityField> <entityField> <name>PASSWORD</name> <title>Password</title> <contentType>PASSWORD</contentType> + <searchable v="false" /> </entityField> <entityField> <name>CONFIRM_PASSWORD</name> <title>Confirm password</title> <contentType>PASSWORD</contentType> - <onValidation>%aditoprj%/entity/Employee_entity/entityfields/confirm_password/onValidation.js</onValidation> + <searchable v="false" /> </entityField> <entityActionField> <name>setPassword</name> <fieldType>ACTION</fieldType> - <title>Set Password</title> + <title>Set password</title> <onActionProcess>%aditoprj%/entity/Employee_entity/entityfields/setpassword/onActionProcess.js</onActionProcess> + <iconId>VAADIN:PASSWORD</iconId> </entityActionField> <entityParameter> <name>passwordChange_param</name> <expose v="true" /> <description>PARAMETER</description> </entityParameter> + <entityParameter> + <name>onlyActives_param</name> + <description>PARAMETER</description> + </entityParameter> + <entityConsumer> + <name>Contacts</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Attributes</name> + <title>Attributes</title> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>RelationsForSpecificObject</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityFieldGroup> + <name>NAME_fieldGroup</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js</valueProcess> + <title>Name</title> + <description>FIELDGROUP</description> + <fields> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </fields> + </entityFieldGroup> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + <searchable v="false" /> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/image/valueProcess.js</valueProcess> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>DEPARTMENT</name> + <title>Department</title> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + <contentType>LONG_TEXT</contentType> + </entityField> + <entityField> + <name>ROLES</name> + </entityField> + <entityConsumer> + <name>EmployeeRoles</name> + <title>Roles</title> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>EmployeeRole_entity</entityName> + <fieldName>EmployeeRoles</fieldName> + </dependency> + <children> + <entityParameter> + <name>UserTitle_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -78,6 +170,9 @@ <element>FIRSTNAME.value</element> <element>LASTNAME.value</element> <element>EMAIL_ADDRESS.value</element> + <element>DESCRIPTION.value</element> + <element>CONTACT_ID.value</element> + <element>CONTACT_ID.displayValue</element> </recordFields> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js b/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js new file mode 100644 index 00000000000..24b12e282d0 --- /dev/null +++ b/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACT_ID")); \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js new file mode 100644 index 00000000000..5996e99db23 --- /dev/null +++ b/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/contact_id/onValidation.js b/entity/Employee_entity/entityfields/contact_id/onValidation.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js b/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js new file mode 100644 index 00000000000..8277e40dbed --- /dev/null +++ b/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TITLE")); \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/firstname/valueProcess.js b/entity/Employee_entity/entityfields/firstname/valueProcess.js new file mode 100644 index 00000000000..7558bfe9497 --- /dev/null +++ b/entity/Employee_entity/entityfields/firstname/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.db"); +import("system.neon"); +import("system.vars"); +import("Sql_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +if ((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT) + && contactId) +{ + var firstname = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", contactId) + .buildSql("select FIRSTNAME from PERSON join CONTACT on CONTACT.PERSON_ID = PERSON.PERSONID") + ); + result.string(firstname); +} \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/image/valueProcess.js b/entity/Employee_entity/entityfields/image/valueProcess.js new file mode 100644 index 00000000000..4701975fe7b --- /dev/null +++ b/entity/Employee_entity/entityfields/image/valueProcess.js @@ -0,0 +1,15 @@ +import("system.db"); +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Person_lib"); +import("Sql_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) +{ + var personId = db.cell(SqlCondition.begin() + .andPrepareVars("CONTACT.CONTACTID", "$field.CONTACT_ID") + .buildSql("select PERSON_ID from CONTACT") + ); + result.string(PersUtils.getImage(personId, (vars.getString("$field.FIRSTNAME") + " " + vars.getString("$field.LASTNAME")).trim())); +} diff --git a/entity/Employee_entity/entityfields/lastname/valueProcess.js b/entity/Employee_entity/entityfields/lastname/valueProcess.js new file mode 100644 index 00000000000..919ab803745 --- /dev/null +++ b/entity/Employee_entity/entityfields/lastname/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.db"); +import("system.neon"); +import("system.vars"); +import("Sql_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +if ((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT) + && contactId) +{ + var lastname = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", contactId) + .buildSql("select LASTNAME from PERSON join CONTACT on CONTACT.PERSON_ID = PERSON.PERSONID") + ); + result.string(lastname); +} \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js b/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js new file mode 100644 index 00000000000..2cb5fabc542 --- /dev/null +++ b/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string((vars.get("$field.FIRSTNAME") + " " + vars.get("$field.LASTNAME")).trim()); \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/confirm_password/onValidation.js b/entity/Employee_entity/onValidation.js similarity index 52% rename from entity/Employee_entity/entityfields/confirm_password/onValidation.js rename to entity/Employee_entity/onValidation.js index f4f7551118f..1ade64458c9 100644 --- a/entity/Employee_entity/entityfields/confirm_password/onValidation.js +++ b/entity/Employee_entity/onValidation.js @@ -1,7 +1,6 @@ import("system.translate"); import("system.result"); import("system.vars"); -import("Entity_lib"); -if (vars.get("$field.PASSWORD") != ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONFIRM_PASSWORD"))) +if (vars.get("$field.PASSWORD") != vars.get("$field.CONFIRM_PASSWORD")) result.string(translate.text("Password and confirmation must be the same!")); \ No newline at end of file diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js index 8a479d6601b..71470598bf4 100644 --- a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.vars"); import("system.result"); import("system.tools"); @@ -12,13 +13,19 @@ users = users.map(function (user) { user = tools.getUser(user); return [ - user.title, - user.title, - user.params.isActive, - user.params.firstname, - user.params.lastname, - user.params.email + user[tools.TITLE], + user[tools.TITLE], + user[tools.PARAMS][tools.ISACTIVE], + user[tools.PARAMS][tools.FIRSTNAME], + user[tools.PARAMS][tools.LASTNAME], + user[tools.PARAMS][tools.EMAIL], + user[tools.PARAMS][tools.DESCRIPTION], + user[tools.PARAMS][tools.CONTACTID], + user[tools.PARAMS][tools.CONTACTID] ]; }); +var filter = vars.exists("$local.filter") && vars.get("$local.filter"); +//logging.log(filter) + result.object(users); \ No newline at end of file diff --git a/entity/Employee_entity/recordcontainers/jdito/onInsert.js b/entity/Employee_entity/recordcontainers/jdito/onInsert.js index a82eeac785c..85d0821c80d 100644 --- a/entity/Employee_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Employee_entity/recordcontainers/jdito/onInsert.js @@ -2,10 +2,12 @@ import("system.vars"); import("system.tools"); var user = {}; -var parameters = []; //this has to be an array -parameters[tools.FIRSTNAME] = vars.get("$field.FIRSTNAME"); -parameters[tools.LASTNAME] = vars.get("$field.LASTNAME"); -parameters[tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS"); +var params = []; //this has to be an array +params[tools.FIRSTNAME] = vars.get("$field.FIRSTNAME"); +params[tools.LASTNAME] = vars.get("$field.LASTNAME"); +params[tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS"); +params[tools.CALENDARID] = vars.get("$field.EMAIL_ADDRESS"); +params[tools.CONTACTID] = vars.get("$field.CONTACT_ID"); user[tools.TITLE] = vars.get("$field.TITLE"); user[tools.PARAMS] = params; diff --git a/entity/Employee_entity/recordcontainers/jdito/onUpdate.js b/entity/Employee_entity/recordcontainers/jdito/onUpdate.js index 0e94ccf1fc5..7d445e24742 100644 --- a/entity/Employee_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/Employee_entity/recordcontainers/jdito/onUpdate.js @@ -1,11 +1,14 @@ +import("system.logging"); import("system.vars"); import("system.tools"); var user = tools.getUser(vars.get("$field.TITLE")); -user.params[tools.FIRSTNAME] = vars.get("$field.FIRSTNAME"); -user.params[tools.LASTNAME] = vars.get("$field.LASTNAME"); -user.params[tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS"); +user[tools.PARAMS][tools.FIRSTNAME] = vars.get("$field.FIRSTNAME"); +user[tools.PARAMS][tools.LASTNAME] = vars.get("$field.LASTNAME"); +user[tools.PARAMS][tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS"); +user[tools.PARAMS][tools.CALENDARID] = vars.get("$field.EMAIL_ADDRESS"); +user[tools.PARAMS][tools.CONTACTID] = vars.get("$field.CONTACT_ID"); if (vars.exists("$param.passwordChange_param") && vars.get("$param.passwordChange_param") && vars.get("$field.PASSWORD") == vars.get("$field.CONFIRM_PASSWORD")) diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index a0f27879af9..d9b394cbcbd 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2655,6 +2655,18 @@ <entry> <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key> </entry> + <entry> + <key>The title already exists!</key> + </entry> + <entry> + <key>Password</key> + </entry> + <entry> + <key>Confirm password</key> + </entry> + <entry> + <key>Set password</key> + </entry> <entry> <key>Email</key> </entry> @@ -2673,6 +2685,12 @@ <entry> <key>{$OBJECTLINK_OBJECT}</key> </entry> + <entry> + <key>Roles</key> + </entry> + <entry> + <key>standard phone</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index f8e2253344b..c9c66d90bf5 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -10,6 +10,10 @@ <key>Company</key> <value>Firma</value> </entry> + <entry> + <key>Confirm password</key> + <value>Passwort bestätigen</value> + </entry> <entry> <key>Entrydate (Day)</key> <value>Eingangsdatum (Tag)</value> @@ -146,6 +150,10 @@ <key>Online-Meeting</key> <value>Online-Meeting</value> </entry> + <entry> + <key>Set password</key> + <value>Passwort setzen</value> + </entry> <entry> <key>Choose address</key> <value>Adresse auswählen</value> @@ -2582,6 +2590,10 @@ <key>Internal</key> <value>intern</value> </entry> + <entry> + <key>Roles</key> + <value>Rollen</value> + </entry> <entry> <key>Brunei Darussalam</key> <value>Brunei Darussalam</value> @@ -2710,6 +2722,10 @@ <key>Hong Kong</key> <value>Hongkong</value> </entry> + <entry> + <key>Password</key> + <value>Passwort</value> + </entry> <entry> <key>Chad</key> <value>Tschad</value> @@ -3442,6 +3458,9 @@ <key>{$OBJECTLINK_OBJECT}</key> <value>Objekt</value> </entry> + <entry> + <key>standard phone</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 4c8ee3cf901..b30d1356094 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -713,6 +713,9 @@ <entry> <key>Connection</key> </entry> + <entry> + <key>standard phone</key> + </entry> <entry> <key>standard email</key> </entry> @@ -2683,6 +2686,18 @@ <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key> <value>%0 has to be between %2 and %3.</value> </entry> + <entry> + <key>The title already exists!</key> + </entry> + <entry> + <key>Password</key> + </entry> + <entry> + <key>Confirm password</key> + </entry> + <entry> + <key>Set password</key> + </entry> <entry> <key>Email</key> </entry> @@ -2703,6 +2718,9 @@ <key>{$OBJECTLINK_OBJECT}</key> <value>Object</value> </entry> + <entry> + <key>Roles</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/EmployeeRole/EmployeeRole.aod b/neonContext/EmployeeRole/EmployeeRole.aod new file mode 100644 index 00000000000..0cb5fb8242c --- /dev/null +++ b/neonContext/EmployeeRole/EmployeeRole.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>EmployeeRole</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>EmployeeRole_entity</entity> + <references> + <neonViewReference> + <name>fd4de342-238b-494e-a85b-ff08e3f065b9</name> + <view>EmployeeRoleFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod index cb955b069aa..61348eb4157 100644 --- a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod +++ b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod @@ -21,6 +21,10 @@ <name>9170856b-45c2-4d8a-864d-4db36bfe4a8c</name> <entityField>ISACTIVE</entityField> </entityFieldLink> + <entityFieldLink> + <name>1925ef51-54a8-41e2-aa78-6d95d1ee4b99</name> + <entityField>CONTACT_ID</entityField> + </entityFieldLink> <entityFieldLink> <name>7d36467f-8b79-4647-b8e5-5759bdbf37a7</name> <entityField>FIRSTNAME</entityField> @@ -33,6 +37,10 @@ <name>6155e6b7-ee2c-45b4-87f5-9e506ffc5775</name> <entityField>EMAIL_ADDRESS</entityField> </entityFieldLink> + <entityFieldLink> + <name>8cffaf75-f2dc-42c5-95d7-1ce1e4927d8a</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> </fields> </genericViewTemplate> </children> diff --git a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod index 42acff8f127..121d76e9307 100644 --- a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod +++ b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod @@ -2,6 +2,7 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0"> <name>EmployeeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> <layout> <boxLayout> <name>layout</name> @@ -12,6 +13,10 @@ <name>Employees</name> <entityField>#ENTITY</entityField> <columns> + <neonTableColumn> + <name>15185ef0-5402-43c4-b5c9-1e0e836ef1c3</name> + <entityField>IMAGE</entityField> + </neonTableColumn> <neonTableColumn> <name>3e3552f9-9591-45ae-a0bb-a85210c2b382</name> <entityField>TITLE</entityField> diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod index 0cceb2165e1..9aa43b4eca4 100644 --- a/neonView/EmployeeMain_view/EmployeeMain_view.aod +++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod @@ -14,5 +14,15 @@ <entityField>#ENTITY</entityField> <view>EmployeePreview_view</view> </neonViewReference> + <neonViewReference> + <name>79a01c28-1eaa-4974-babd-fb6e4d59471b</name> + <entityField>EmployeeRoles</entityField> + <view>EmployeeRoleFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>7164f8cd-3892-4694-92ad-fc45afac68f1</name> + <entityField>Attributes</entityField> + <view>AttributeRelationFilter_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/EmployeePreview_view/EmployeePreview_view.aod b/neonView/EmployeePreview_view/EmployeePreview_view.aod index d18d815697a..2cbb42497cc 100644 --- a/neonView/EmployeePreview_view/EmployeePreview_view.aod +++ b/neonView/EmployeePreview_view/EmployeePreview_view.aod @@ -9,9 +9,30 @@ </layout> <children> <cardViewTemplate> - <name>Card</name> - <titleField>TITLE</titleField> + <name>Header</name> + <iconField>IMAGE</iconField> + <titleField>NAME_fieldGroup</titleField> + <subtitleField>TITLE</subtitleField> <entityField>#ENTITY</entityField> </cardViewTemplate> + <genericViewTemplate> + <name>Info</name> + <showDrawer v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>0bda9209-1437-49eb-98b7-6edea9c6836a</name> + <entityField>DEPARTMENT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>d9786e3d-5364-4075-a08d-0d4ea91c4728</name> + <entityField>EMAIL_ADDRESS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>79cd6a97-6caf-4acb-81af-028b94f33e8f</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> </children> </neonView> diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod new file mode 100644 index 00000000000..1938871992d --- /dev/null +++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0"> + <name>EmployeeRoleFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <autoNewRow v="true" /> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>ab1c8d39-fc29-42e8-8b8e-3557d544b272</name> + <entityField>UID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> -- GitLab