Skip to content
Snippets Groups Projects
Commit 53ce0a9f authored by Benjamin Ulrich's avatar Benjamin Ulrich :speech_balloon:
Browse files

merged origin/2021.0 into 1071004_ClassificationRefreshSpecificDataset

parents 545db762 4730ae39
No related branches found
No related tags found
No related merge requests found
Showing
with 221 additions and 61 deletions
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="s.pongratz" id="28627941-6c9b-46e8-922a-b4660b33723c">
<changeSet author="s.pongratz" id="c30bc71b-fcef-4ae6-9356-207adaca9dbd">
<!--Atribute-->
<insert tableName="AB_KEYWORD_ATTRIBUTE">
<column name="AB_KEYWORD_ATTRIBUTEID" value="08fcb5db-531d-4a83-8c6e-b9c9c95dcb16"/>
......
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="b.ulrich" id="50062c3c-f2db-4be1-854f-fc44110fd160">
<createIndex tableName="VISITRECOMMENDATION" indexName="IDX_VISITRECOMMEND_CONPERS_ID">
<column name="CONTACT_PERSON_ID"/>
</createIndex>
<createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_ADVCONTACTID_ID">
<column name="ADVISER_CONTACT_ID"/>
</createIndex>
<createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_DISTRICT_ID">
<column name="DISTRICT_ID"/>
</createIndex>
<createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_CONTACT_ID">
<column name="CONTACT_ID"/>
</createIndex>
<createIndex tableName="KNOWLEDGELINK" indexName="IDX_KNOWLEDELINK_ROW_ID">
<column name="ROW_ID"/>
</createIndex>
<createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDEMNGMT_AUTHCON_ID">
<column name="AUTHOR_CONTACT_ID"/>
</createIndex>
<createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDEMNGMT_RESCON_ID">
<column name="RESPONSIBLE_CONTACT_ID"/>
</createIndex>
<createIndex tableName="KNOWLEDGEMANAGEMENTTAGMODERATION" indexName="IDX_KNOWLEDEMNGMTMOD_ATTR_ID">
<column name="AB_ATTRIBUTE_ID"/>
</createIndex>
<createIndex tableName="OBSERVATION" indexName="IDX_OBSERVATION_OBSERVATION_ID">
<column name="OBSERVATION_ID"/>
</createIndex>
<createIndex tableName="OBSERVATION" indexName="IDX_OBSERVATION_OBJECT_ID">
<column name="OBJECT_ID"/>
</createIndex>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
......@@ -8,4 +8,5 @@
<include relativeToChangelogFile="true" file="Address/addLatLonIndizes.xml"/>
<include relativeToChangelogFile="true" file="District/changelog.xml"/>
<include relativeToChangelogFile="true" file="alter_Order_info.xml"/>
<include relativeToChangelogFile="true" file="MissingIndizes/add_MissingIndizes.xml"/>
</databaseChangeLog>
\ No newline at end of file
......@@ -1285,7 +1285,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<title>${COMM_ADDRESS}</title>
<description></description>
<customProperties>
......@@ -7042,7 +7042,7 @@
<scale v="0" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title>{$OBJECTLINK_OBJECT}</title>
<description></description>
......@@ -7077,7 +7077,7 @@
<scale v="0" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title>Appointment Id</title>
<description></description>
......@@ -14281,7 +14281,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14322,7 +14322,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14607,7 +14607,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14662,7 +14662,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14801,7 +14801,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14815,7 +14815,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14919,7 +14919,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -14975,7 +14975,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15051,7 +15051,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15169,7 +15169,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15183,7 +15183,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15239,7 +15239,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15253,7 +15253,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15627,7 +15627,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -15887,8 +15887,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -15943,8 +15943,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16012,9 +16012,9 @@
<name>VALID_FROM</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="36" />
<scale v="0" />
<columnType v="93" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16026,9 +16026,9 @@
<name>VALID_UNTIL</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="36" />
<scale v="0" />
<columnType v="93" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16119,7 +16119,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -16147,7 +16147,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title>District</title>
<description></description>
......@@ -16173,7 +16173,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -16195,8 +16195,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16209,8 +16209,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16223,8 +16223,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16251,8 +16251,8 @@
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="19" />
<scale v="0" />
<size v="29" />
<scale v="9" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
......@@ -16561,7 +16561,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -16623,7 +16623,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -16756,7 +16756,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -17005,7 +17005,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
......@@ -17507,7 +17507,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<description></description>
</entityFieldDb>
......@@ -17546,7 +17546,7 @@
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<index v="true" />
<documentation></documentation>
<description></description>
</entityFieldDb>
......
......@@ -4,8 +4,8 @@ import("Context_lib");
AdminViewUtils.open("ACTIVITYID", [
["PARENT_ID", vars.get("$field.PARENT_ID")],
["PARENT_CONTEXT", vars.get("$field.PARENT_CONTEXT")],
["DATE_NEW", vars.get("$field.DATE_NEW")],
["DATE_EDIT", vars.get("$field.DATE_EDIT")],
["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
["USER_NEW", vars.get("$field.USER_NEW")],
["USER_EDIT", vars.get("$field.USER_EDIT")]
]);
\ No newline at end of file
......@@ -18,6 +18,7 @@
<entityField>
<name>VALUE</name>
<contentTypeProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/value/contentTypeProcess.js</contentTypeProcess>
<displayValueProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/value/displayValueProcess.js</displayValueProcess>
</entityField>
<entityParameter>
<name>Rows_param</name>
......
import("system.vars");
import("Attribute_lib");
import("system.result");
result.string(AttributeTypeUtil.getAttributeViewValue(vars.get("$field.CONTENTTYPE"), vars.get("$field.VALUE"), null));
\ No newline at end of file
......@@ -28,6 +28,7 @@
<element>PROCESS_SETVALUE</element>
<element>RECORD</element>
</onValueChangeTypes>
<onValidation>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValidation.js</onValidation>
</entityField>
<entityField>
<name>CAMPAIGNSTEP_ID</name>
......@@ -60,11 +61,6 @@
</entityConsumer>
<entityConsumer>
<name>CampaignStepConsumer</name>
<dependency>
<name>dependency</name>
<entityName>CampaignStep_entity</entityName>
<fieldName>CampaignSteps</fieldName>
</dependency>
<children>
<entityParameter>
<name>campaignId_param</name>
......@@ -72,6 +68,11 @@
<expose v="true" />
</entityParameter>
</children>
<dependency>
<name>dependency</name>
<entityName>CampaignStep_entity</entityName>
<fieldName>CampaignSteps</fieldName>
</dependency>
</entityConsumer>
<entityField>
<name>UID</name>
......
import("system.vars");
import("system.result");
import("Sql_lib");
import("system.translate");
let participants = JSON.parse(vars.get("$param.campaignParticipantsRowIds_param"));
if(participants.length > 0)
{
let thisParticipantCount = newSelect("count('')").from("CAMPAIGNPARTICIPANT")
.where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", vars.get("$field.CAMPAIGN_ID"))
.and(
"CAMPAIGNPARTICIPANT.CONTACT_ID",
participants,
SqlBuilder.IN()
).cell();
if(parseInt(thisParticipantCount) > 0)
result.string(translate.text("Participant is already participating"));
}
......@@ -3,8 +3,8 @@ import("Context_lib");
AdminViewUtils.open("CAMPAIGNID", [
["EMPLOYEE_CONTACT_ID", vars.get("$field.EMPLOYEE_CONTACT_ID")],
["DATE_NEW", vars.get("$field.DATE_NEW")],
["DATE_EDIT", vars.get("$field.DATE_EDIT")],
["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
["USER_NEW", vars.get("$field.USER_NEW")],
["USER_EDIT", vars.get("$field.USER_EDIT")]
]);
\ No newline at end of file
......@@ -41,7 +41,6 @@
<children>
<entityParameter>
<name>ClassificationTypeId_param</name>
<valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess>
<expose v="true" />
</entityParameter>
</children>
......
......@@ -41,6 +41,7 @@
</entityParameter>
<entityProvider>
<name>Classifications</name>
<documentation>%aditoprj%/entity/Classification_entity/entityfields/classifications/documentation.adoc</documentation>
<dependencies>
<entityDependency>
<name>6274acfa-3dbf-4a9b-8926-2a2d1ff80d6d</name>
......
=Classifications provider
Provider for all the modules that you want to use the classification for.
The tree gets build using the ObjectRowId_param and ObjectType_param so you can see all the classifications for e.g organisation x or salesproject y.
\ No newline at end of file
......@@ -5,6 +5,7 @@
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/CommRestriction_Entity/documentation.adoc</documentation>
<contentTitleProcess>%aditoprj%/entity/CommRestriction_Entity/contentTitleProcess.js</contentTitleProcess>
<contentTitleProcess>%aditoprj%/entity/CommRestriction_Entity/contentTitleProcess.js</contentTitleProcess>
<titlePlural>Advertising bans</titlePlural>
<recordContainer>db</recordContainer>
<entityFields>
......
import("system.vars");
import("Context_lib");
AdminViewUtils.open("EXPORTTEMPLATEID", ["DATE_NEW", "DATE_EDIT", "USER_NEW", "USER_EDIT"]);
\ No newline at end of file
AdminViewUtils.open("EXPORTTEMPLATEID", [
["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
["USER_NEW", vars.get("$field.USER_NEW"), "DATE"],
["USER_EDIT", vars.get("$field.USER_EDIT"), "DATE"]
]);
\ No newline at end of file
......@@ -3,6 +3,9 @@
<name>ImportField_Entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/ImportField_Entity/documentation.adoc</documentation>
<siblings>
<element>Leadimport_entity</element>
</siblings>
<grantCreate v="false" />
<grantDelete v="false" />
<contentTitleProcess>%aditoprj%/entity/ImportField_Entity/contentTitleProcess.js</contentTitleProcess>
......
......@@ -5,6 +5,9 @@
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/Leadimport_entity/documentation.adoc</documentation>
<icon>NEON:IMPORT</icon>
<siblings>
<element>ImportField_Entity</element>
</siblings>
<grantUpdate v="true" />
<grantUpdateProcess>%aditoprj%/entity/Leadimport_entity/grantUpdateProcess.js</grantUpdateProcess>
<grantDelete v="true" />
......@@ -65,6 +68,7 @@
<name>STATUS</name>
<title>Status</title>
<consumer>KeywordImportStatus</consumer>
<groupable v="true" />
<state>READONLY</state>
<valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/status/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
......@@ -74,6 +78,7 @@
<title>Import date</title>
<contentType>DATE</contentType>
<resolution>DAY</resolution>
<groupable v="false" />
<valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadimport_date/valueProcess.js</valueProcess>
</entityField>
<entityField>
......@@ -97,6 +102,7 @@
<isObjectAction v="false" />
<isSelectionAction v="false" />
<iconId>VAADIN:INBOX</iconId>
<stateProcess>%aditoprj%/entity/Leadimport_entity/entityfields/transferdata/stateProcess.js</stateProcess>
</entityActionField>
<entityField>
<name>SENTENCESEPARATOR</name>
......@@ -104,6 +110,7 @@
<mandatory v="true" />
<dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js</dropDownProcess>
<textInputAllowed v="true" />
<displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/sentenceseparator/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>FIELDSEPARATOR</name>
......@@ -111,6 +118,7 @@
<mandatory v="true" />
<dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fieldseparator/dropDownProcess.js</dropDownProcess>
<textInputAllowed v="true" />
<displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fieldseparator/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>FIELDDELIMITERS</name>
......@@ -118,10 +126,12 @@
<mandatory v="true" />
<dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fielddelimiters/dropDownProcess.js</dropDownProcess>
<textInputAllowed v="true" />
<displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fielddelimiters/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>IMPORTSOURCE</name>
<title>Import source</title>
<groupable v="true" />
<mandatory v="true" />
</entityField>
<entityConsumer>
......@@ -176,11 +186,7 @@
</entityProvider>
<entityConsumer>
<name>ImportFieldID</name>
<dependency>
<name>dependency</name>
<entityName>ImportField_Entity</entityName>
<fieldName>LeadImportIds</fieldName>
</dependency>
<onValidation>%aditoprj%/entity/Leadimport_entity/entityfields/importfieldid/onValidation.js</onValidation>
<children>
<entityParameter>
<name>LeadImportID</name>
......@@ -358,6 +364,13 @@
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
<entityActionField>
<name>ReloadTransferdData</name>
<title>Search for new Entries</title>
<onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/reloadtransferddata/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<iconId>VAADIN:REFRESH</iconId>
</entityActionField>
</entityFields>
<recordContainers>
<dbRecordContainer>
......
import("system.translate");
import("system.vars");
import("system.result");
result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
import("system.translate");
import("system.vars");
import("system.result");
result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
import("system.translate");
import("system.result");
import("Sql_lib");
import("system.vars");
var attributeChanges = {
"LASTNAME" : [],
"NAME" : []
};
var idMapping = {};
var consumerField = "ImportFieldID";
var changedRows = vars.get("$field." + consumerField + ".changedRows");
newSelect(["IMPORTFIELD.MAPPINGFIELD", "IMPORTFIELD.IMPORTFIELDID"])
.from("IMPORTFIELD")
.where("IMPORTFIELD.LEADIMPORT_ID", "9f77f90f-cc49-456f-8d20-2fa86bf6fdf4")
.and(
newWhere("IMPORTFIELD.MAPPINGFIELD", "LASTNAME")
.or("IMPORTFIELD.MAPPINGFIELD", "NAME"))
.table()
.forEach(function (row) {
_addNewID(row[0], row[1]);
});
if (changedRows)
{
changedRows.forEach(function (row)
{
if (!idMapping[row.IMPORTFIELDID])
{
_addNewID(row.MAPPINGFIELD, row.IMPORTFIELDID);
}
else
{
var index = attributeChanges[idMapping[row.IMPORTFIELDID]].indexOf(row.IMPORTFIELDID);
if (index > -1)
{
attributeChanges[idMapping[row.IMPORTFIELDID]].splice(index, 1);
_addNewID(row.MAPPINGFIELD, row.IMPORTFIELDID);
}
}
});
}
if (!attributeChanges.NAME.length && !attributeChanges.LASTNAME.length)
{
result.string(translate.text("The Import Fields \"Lastname\" or \"Organisation\" have to be mapped!"));
}
function _addNewID (pMappingField, pImportId)
{
if (attributeChanges[pMappingField])
{
attributeChanges[pMappingField].push(pImportId);
idMapping[pImportId] = pMappingField;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment