chore: Update copyright year from 2025 to 2026 across core files

- Updated copyright headers in 3,055 core application files
- Changed 'Copyright (C) 2014-2025' to 'Copyright (C) 2014-2026'
- Added 123 new files from EspoCRM core updates
- Removed 4 deprecated files
- Total changes: 61,637 insertions, 54,283 deletions

This is a routine maintenance update for the new year 2026.
This commit is contained in:
2026-02-07 16:05:21 +01:00
parent 6a8a4a2882
commit 127fa6503b
6468 changed files with 564781 additions and 31179 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,16 @@
<div class="row">
<div class="col-sm-3 col-xs-3">
<select data-name="salutation{{ucName}}" class="form-control">
{{options salutationOptions salutationValue field='salutationName' scope=scope}}
</select>
</div>
<div class="col-sm-5 col-xs-5">
<input type="text" class="form-control" data-name="first{{ucName}}" value="{{firstValue}}" placeholder="{{translate 'First Name'}}"{{#if firstMaxLength}} maxlength="{{firstMaxLength}}"{{/if}} autocomplete="espo-first{{ucName}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="middle{{ucName}}" value="{{middleValue}}" placeholder="{{translate 'Middle Name'}}"{{#if middleMaxLength}} maxlength="{{middleMaxLength}}"{{/if}} autocomplete="espo-middle{{ucName}}">
</div>
<div class="col-sm-12 col-xs-12">
<input type="text" class="form-control" data-name="last{{ucName}}" value="{{lastValue}}" placeholder="{{translate 'Last Name'}}"{{#if lastMaxLength}} maxlength="{{lastMaxLength}}"{{/if}} autocomplete="espo-last{{ucName}}">
</div>
</div>

View File

@@ -0,0 +1,16 @@
<div class="row">
<div class="col-sm-3 col-xs-3">
<select data-name="salutation{{ucName}}" class="form-control">
{{options salutationOptions salutationValue field='salutationName' scope=scope}}
</select>
</div>
<div class="col-sm-9 col-xs-9">
<input type="text" class="form-control" data-name="last{{ucName}}" value="{{lastValue}}" placeholder="{{translate 'Last Name'}}"{{#if lastMaxLength}} maxlength="{{lastMaxLength}}"{{/if}} autocomplete="espo-last{{ucName}}">
</div>
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="first{{ucName}}" value="{{firstValue}}" placeholder="{{translate 'First Name'}}"{{#if firstMaxLength}} maxlength="{{firstMaxLength}}"{{/if}} autocomplete="espo-first{{ucName}}">
</div>
<div class="col-sm-6 col-xs-6">
<input type="text" class="form-control" data-name="middle{{ucName}}" value="{{middleValue}}" placeholder="{{translate 'Middle Name'}}"{{#if middleMaxLength}} maxlength="{{middleMaxLength}}"{{/if}} autocomplete="espo-middle{{ucName}}">
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="row">
<div class="col-sm-3 col-xs-3">
<select data-name="salutation{{ucName}}" class="form-control">
{{options salutationOptions salutationValue field='salutationName' scope=scope}}
</select>
</div>
<div class="col-sm-5 col-xs-5">
<input type="text" class="form-control" data-name="last{{ucName}}" value="{{lastValue}}" placeholder="{{translate 'Last Name'}}"{{#if lastMaxLength}} maxlength="{{lastMaxLength}}"{{/if}} autocomplete="espo-last{{ucName}}">
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="first{{ucName}}" value="{{firstValue}}" placeholder="{{translate 'First Name'}}"{{#if firstMaxLength}} maxlength="{{firstMaxLength}}"{{/if}} autocomplete="espo-first{{ucName}}">
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="row">
<div class="col-sm-3 col-xs-3">
<select data-name="salutation{{ucName}}" class="form-control">
{{options salutationOptions salutationValue field='salutationName' scope=scope}}
</select>
</div>
<div class="col-sm-4 col-xs-4">
<input type="text" class="form-control" data-name="first{{ucName}}" value="{{firstValue}}" placeholder="{{translate 'First Name'}}"{{#if firstMaxLength}} maxlength="{{firstMaxLength}}"{{/if}} autocomplete="espo-first{{ucName}}">
</div>
<div class="col-sm-5 col-xs-5">
<input type="text" class="form-control" data-name="last{{ucName}}" value="{{lastValue}}" placeholder="{{translate 'Last Name'}}"{{#if lastMaxLength}} maxlength="{{lastMaxLength}}"{{/if}} autocomplete="espo-last{{ucName}}">
</div>
</div>

View File

@@ -0,0 +1,167 @@
<h4>{{translate 'Step 1' scope='Import'}}</h4>
<div class="panel panel-default">
<div class="panel-heading"><h4 class="panel-title">{{translate 'What to Import?' scope='Import'}}</h4></div>
<div class="panel-body panel-body-form">
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Entity Type' scope='Import'}}</label>
<div data-name="entityType" class="field">
{{{entityTypeField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'File (CSV)' scope='Import'}}</label>
<div>
<label class="attach-file-label">
<span class="btn btn-default btn-icon">
<span class="fas fa-paperclip"></span>
</span>
<input type="file" id="import-file" accept=".csv" class="file">
</label>
<div class="import-file-name"></div>
</div>
<div class="text-muted import-file-info">{{translate 'utf8' category='messages' scope='Import'}}</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'What to do?' scope='Import'}}</label>
<div data-name="action" class="field">
{{{actionField}}}
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h4 class="panel-title">{{translate 'Properties' scope='Import'}}</h4></div>
<div class="panel-body panel-body-form">
<div id="import-properties">
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Header Row' scope='Import'}}</label>
<div data-name="headerRow" class="field">
{{{headerRowField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Person Name Format' scope='Import'}}</label>
<div data-name="personNameFormat" class="field">
{{{personNameFormatField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<div class="pull-right">
<button
class="btn btn-link hidden"
data-action="saveAsDefault"
>{{translate 'saveAsDefault' category='strings' scope='Import'}}</button>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Field Delimiter' scope='Import'}}</label>
<div data-name="delimiter" class="field">
{{{delimiterField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Date Format' scope='Import'}}</label>
<div data-name="dateFormat" class="field">
{{{dateFormatField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Decimal Mark' scope='Import'}}</label>
<div data-name="decimalMark" class="field">
{{{decimalMarkField}}}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Text Qualifier' scope='Import'}}</label>
<div data-name="textQualifier" class="field">
{{{textQualifierField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Time Format' scope='Import'}}</label>
<div data-name="timeFormat" class="field">
{{{timeFormatField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Currency' scope='Import'}}</label>
<div data-name="currency" class="field">
{{{currencyField}}}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 form-group cell">
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Timezone' scope='Import'}}</label>
<div data-name="timezone" class="field">
{{{timezoneField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'phoneNumberCountry' category='params' scope='Import'}}</label>
<div data-name="phoneNumberCountry" class="field">
{{{phoneNumberCountryField}}}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'inIdle' scope='Import' category='messages'}}</label>
<div data-name="idleMode" class="field">
{{{idleModeField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Skip searching for duplicates' scope='Import'}}</label>
<div data-name="skipDuplicateChecking" class="field">
{{{skipDuplicateCheckingField}}}
</div>
</div>
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Silent Mode' scope='Import'}}</label>
<div data-name="silentMode" class="field">
{{{silentModeField}}}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 form-group cell">
<label class="control-label">{{translate 'Run Manually' scope='Import' category='labels'}}</label>
<div data-name="manualMode" class="field">
{{{manualModeField}}}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h4 class="panel-title">{{translate 'Preview' scope='Import'}}</h4></div>
<div class="panel-body">
<div id="import-preview" style="overflow-x: auto; overflow-y: hidden;">
{{translate 'No Data'}}
</div>
</div>
</div>
<div style="padding-bottom: 10px;" class="clearfix">
{{#if entityList.length}}
<button
class="btn btn-primary btn-s-wide pull-right hidden"
data-action="next"
>{{translate 'Next' scope='Import'}}</button>
{{/if}}
</div>

View File

@@ -0,0 +1,12 @@
<div class="form-group">
<a
role="button"
tabindex="0"
class="remove-filter pull-right"
data-name="{{name}}"
>{{#unless notRemovable}}<i class="fas fa-times"></i>{{/unless}}</a>
<label class="control-label small" data-name="{{name}}">{{translate name category='fields' scope=scope}}</label>
<div class="field" data-name="{{name}}">{{{field}}}</div>
</div>

View File

@@ -0,0 +1,15 @@
{{#each rateValues}}
<div class="input-group">
<span class="input-group-addon radius-left" style="width: 25%">1 {{@key}} = </span>
<span class="input-group-item">
<input
class="form-control"
type="text"
data-currency="{{@key}}"
value="{{./this}}"
style="text-align: right;"
>
</span>
<span class="input-group-addon radius-right" style="width: 22%">{{../baseCurrency}}</span>
</div>
{{/each}}

View File

@@ -0,0 +1,7 @@
<p class="credit small">&copy; 2025
<a
href="https://www.espocrm.com"
title="Powered by EspoCRM"
rel="noopener" target="_blank"
tabindex="-1"
>EspoCRM, Inc.</a></p>

View File

@@ -0,0 +1,39 @@
<div class="row">
<div class="cell col-sm-12 form-group" data-name="post">
<div class="field" data-name="post">{{{postField}}}</div>
</div>
</div>
<div class="row post-control{{#if interactiveMode}} hidden{{/if}}">
<div class="col-sm-7 form-group">
<div class="floated-row clearfix">
{{#if interactiveMode}}
<div>
<button
type="button"
class="btn btn-primary btn-xs-wide post pull-left"
>{{translate 'Post'}}</button>
</div>
{{/if}}
<div>
<div class="field" style="display: inline-block;" data-name="attachments">{{{attachmentsField}}}</div>
</div>
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<div class="cell" data-name="targetType">
<label class="control-label">{{translate 'to' category='otherFields' scope='Note'}}</label>
<div class="field" data-name="targetType">{{{targetTypeField}}}</div>
</div>
<div class="cell" data-name="users">
<div class="field" data-name="users">{{{usersField}}}</div>
</div>
<div class="cell" data-name="teams">
<div class="field" data-name="teams">{{{teamsField}}}</div>
</div>
<div class="cell" data-name="portals">
<div class="field" data-name="portals">{{{portalsField}}}</div>
</div>
</div>
</div>
</div>