V10: Show more telemetry info on the installer (#12739)
* remove absolute-center class from installer and replace with css grid * replace tooltips for telemetry with columns and a direct view of what eact telemetry level means * ensure that inputs will out entire columns and that buttons are aligned as the rest of the system with the CTA on the right side * update buttons on the database screen to match the user screen * set min-width on installer for views with only text content * add border to preconfigured database field * remove extra headline from telemetry data info text * change telemetry info text to 'small' * remove opacity for database settings * update wording of intro text to the installer * add unordered list to the detailed telemetry description * add helper text to indicate that telemetry can be changed later * change wording from 'analytics' to 'telemetry data' * add smooth-steps-tap to noUiSlider for telemetry data * add short text explaining what telemetry is to the installer
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
|
||||
<div id="overlay" ng-cloak ng-animate="'fade'" ng-show="installer.done"></div>
|
||||
|
||||
<div id="installer" class="absolute-center clearfix"
|
||||
<div id="installer"
|
||||
ng-cloak
|
||||
ng-animate="'fade'"
|
||||
ng-show="installer.configuring">
|
||||
|
||||
@@ -2528,7 +2528,7 @@ To manage your website, simply open the Umbraco backoffice and start adding cont
|
||||
<key alias="settingsPublishedStatus">Published Status</key>
|
||||
<key alias="settingsModelsBuilder">Models Builder</key>
|
||||
<key alias="settingsHealthCheck">Health Check</key>
|
||||
<key alias="settingsAnalytics">Analytics</key>
|
||||
<key alias="settingsAnalytics">Telemetry data</key>
|
||||
<key alias="settingsProfiler">Profiling</key>
|
||||
<key alias="memberIntro">Getting Started</key>
|
||||
<key alias="formsInstall">Install Umbraco Forms</key>
|
||||
@@ -2886,8 +2886,8 @@ To manage your website, simply open the Umbraco backoffice and start adding cont
|
||||
<key alias="searchResults">items returned</key>
|
||||
</area>
|
||||
<area alias="analytics">
|
||||
<key alias="consentForAnalytics">Consent for analytics</key>
|
||||
<key alias="analyticsLevelSavedSuccess">Analytics level saved!</key>
|
||||
<key alias="consentForAnalytics">Consent for telemetry data</key>
|
||||
<key alias="analyticsLevelSavedSuccess">Telemetry level saved!</key>
|
||||
<key alias="analyticsDescription">
|
||||
<![CDATA[
|
||||
In order to improve Umbraco and add new functionality based on as relevant information as possible,
|
||||
@@ -2903,12 +2903,13 @@ To manage your website, simply open the Umbraco backoffice and start adding cont
|
||||
<key alias="detailedLevelDescription">
|
||||
<![CDATA[
|
||||
We will send:
|
||||
<br>- Anonymized site ID, umbraco version, and packages installed.
|
||||
<br>- Number of: Root nodes, Content nodes, Macros, Media, Document Types, Templates, Languages, Domains, User Group, Users, Members, and Property Editors in use.
|
||||
<br>- System information: Webserver, server OS, server framework, server OS language, and database provider.
|
||||
<br>- Configuration settings: Modelsbuilder mode, if custom Umbraco path exists, ASP environment, and if you are in debug mode.
|
||||
<br>
|
||||
<br><i>We might change what we send on the Detailed level in the future. If so, it will be listed above.
|
||||
<ul>
|
||||
<li>Anonymized site ID, umbraco version, and packages installed.</li>
|
||||
<li>Number of: Root nodes, Content nodes, Macros, Media, Document Types, Templates, Languages, Domains, User Group, Users, Members, and Property Editors in use.</li>
|
||||
<li>System information: Webserver, server OS, server framework, server OS language, and database provider.</li>
|
||||
<li>Configuration settings: Modelsbuilder mode, if custom Umbraco path exists, ASP environment, and if you are in debug mode.</li>
|
||||
</ul>
|
||||
<i>We might change what we send on the Detailed level in the future. If so, it will be listed above.
|
||||
<br>By choosing "Detailed" you agree to current and future anonymized information being collected.</i>
|
||||
]]>
|
||||
</key>
|
||||
|
||||
@@ -1,144 +1,188 @@
|
||||
<div ng-controller="Umbraco.Installer.DataBaseController">
|
||||
<h1>Configure your database</h1>
|
||||
<p>
|
||||
Enter connection and authentication details for the database you want to
|
||||
install Umbraco on
|
||||
</p>
|
||||
|
||||
<h1>Configure your database</h1>
|
||||
<p>
|
||||
Enter connection and authentication details for the database you want to install Umbraco on
|
||||
</p>
|
||||
<form
|
||||
name="myForm"
|
||||
class="form-horizontal -no-margin-bottom"
|
||||
novalidate
|
||||
ng-submit="validateAndForward();"
|
||||
>
|
||||
<div class="control-group">
|
||||
<legend>What type of database do you use?</legend>
|
||||
<label class="control-label" for="dbType">Database type</label>
|
||||
<div class="controls">
|
||||
<select
|
||||
id="dbType"
|
||||
ng-options="db as db.displayName for db in dbs"
|
||||
required
|
||||
ng-model="selectedDbMeta"
|
||||
></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form name="myForm" class="form-horizontal" novalidate ng-submit="validateAndForward();">
|
||||
<div class="control-group">
|
||||
<legend>What type of database do you use?</legend>
|
||||
<label class="control-label" for="dbType">Database type</label>
|
||||
<div ng-if="isCustom()">
|
||||
<legend>What is the exact connection string we should use?</legend>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Custom_connectionString"
|
||||
>Connection string</label
|
||||
>
|
||||
<div class="controls">
|
||||
<textarea
|
||||
id="Custom_connectionString"
|
||||
class="input-block-level"
|
||||
required
|
||||
ng-model="installer.current.model.connectionString"
|
||||
rows="5"
|
||||
></textarea>
|
||||
<small class="inline-help"
|
||||
>Enter a valid database connection string.</small
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Custom_providerName"
|
||||
>Provider Name</label
|
||||
>
|
||||
<div class="controls">
|
||||
<select
|
||||
id="dbType"
|
||||
ng-options="providerName for providerName in providerNames"
|
||||
required
|
||||
ng-model="installer.current.model.providerName"
|
||||
></select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="!isCustom()">
|
||||
<div class="row">
|
||||
<legend>Where do we find your database?</legend>
|
||||
|
||||
<div ng-if="selectedDbMeta.requiresServer">
|
||||
<div class="span6">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Sql_Server">Server</label>
|
||||
<div class="controls">
|
||||
<input
|
||||
type="text"
|
||||
id="Sql_Server"
|
||||
placeholder="{{selectedDbMeta.serverPlaceholder}}"
|
||||
required
|
||||
ng-model="installer.current.model.server"
|
||||
/>
|
||||
<small class="inline-help">Enter server domain or IP</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span6">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Sql_databaseName"
|
||||
>Database name</label
|
||||
>
|
||||
<div class="controls">
|
||||
<select id="dbType"
|
||||
ng-options="db as db.displayName for db in dbs"
|
||||
required
|
||||
ng-model="selectedDbMeta">
|
||||
</select>
|
||||
<input
|
||||
type="text"
|
||||
id="Sql_databaseName"
|
||||
placeholder="umbraco-cms"
|
||||
required
|
||||
ng-model="installer.current.model.databaseName"
|
||||
/>
|
||||
<small class="inline-help">Enter the name of the database</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="isCustom()">
|
||||
<legend>What is the exact connection string we should use?</legend>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Custom_connectionString">Connection string</label>
|
||||
<div class="controls">
|
||||
<textarea id="Custom_connectionString"
|
||||
class="input-block-level"
|
||||
required
|
||||
ng-model="installer.current.model.connectionString"
|
||||
rows="5"></textarea>
|
||||
<small class="inline-help">Enter a valid database connection string.</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Custom_providerName">Provider Name</label>
|
||||
<div class="controls">
|
||||
<select id="dbType"
|
||||
ng-options="providerName for providerName in providerNames"
|
||||
required
|
||||
ng-model="installer.current.model.providerName">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div ng-if="!isCustom()">
|
||||
<div class="row">
|
||||
<legend>Where do we find your database?</legend>
|
||||
|
||||
<div ng-if="selectedDbMeta.requiresServer">
|
||||
<div class="span6">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Sql_Server">Server</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="Sql_Server"
|
||||
placeholder="{{selectedDbMeta.serverPlaceholder}}"
|
||||
required
|
||||
ng-model="installer.current.model.server" />
|
||||
<small class="inline-help">Enter server domain or IP</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span6">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="Sql_databaseName">Database name</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="Sql_databaseName"
|
||||
placeholder="umbraco-cms"
|
||||
required
|
||||
ng-model="installer.current.model.databaseName" />
|
||||
<small class="inline-help">Enter the name of the database</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="selectedDbMeta.requiresCredentials">
|
||||
<div class="row">
|
||||
<legend>What credentials are used to access the database?</legend>
|
||||
<div class="span6">
|
||||
<div class="control-group" ng-if="!installer.current.model.integratedAuth">
|
||||
<label class="control-label" for="Sql_login">Login</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="Sql_login"
|
||||
placeholder="umbraco-db-user"
|
||||
required
|
||||
ng-model="installer.current.model.login" />
|
||||
<small class="inline-help">Enter the database user name</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span6">
|
||||
<div class="control-group" ng-if="!installer.current.model.integratedAuth">
|
||||
<label class="control-label" for="Sql_password">Password</label>
|
||||
<div class="controls">
|
||||
<input type="password" id="Sql_password"
|
||||
placeholder="umbraco-db-password"
|
||||
required
|
||||
ng-model="installer.current.model.password" />
|
||||
<small class="inline-help">Enter the database password</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span12 control-group" ng-if="selectedDbMeta.supportsIntegratedAuthentication">
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" ng-model="installer.current.model.integratedAuth" />
|
||||
Use integrated authentication
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-if="selectedDbMeta.requiresCredentials">
|
||||
<div class="row">
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<input type="submit" value="Install" class="btn btn-success"
|
||||
ng-disabled="myForm.$invalid || checking"
|
||||
ng-class="{disabled:myForm.$invalid}" />
|
||||
|
||||
<button class="btn btn-info" ng-click="restart()">Go back</button>
|
||||
|
||||
<span class="inline-help" ng-if="checking" ng-animate="'fade'">
|
||||
Validating your database connection...
|
||||
</span>
|
||||
|
||||
<span class="inline-help error" ng-if="invalidDbDns" ng-animate="'fade'">
|
||||
Could not connect to database
|
||||
</span>
|
||||
</div>
|
||||
<legend>What credentials are used to access the database?</legend>
|
||||
<div class="span6">
|
||||
<div
|
||||
class="control-group"
|
||||
ng-if="!installer.current.model.integratedAuth"
|
||||
>
|
||||
<label class="control-label" for="Sql_login">Login</label>
|
||||
<div class="controls">
|
||||
<input
|
||||
type="text"
|
||||
id="Sql_login"
|
||||
placeholder="umbraco-db-user"
|
||||
required
|
||||
ng-model="installer.current.model.login"
|
||||
/>
|
||||
<small class="inline-help">Enter the database user name</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span6">
|
||||
<div
|
||||
class="control-group"
|
||||
ng-if="!installer.current.model.integratedAuth"
|
||||
>
|
||||
<label class="control-label" for="Sql_password">Password</label>
|
||||
<div class="controls">
|
||||
<input
|
||||
type="password"
|
||||
id="Sql_password"
|
||||
placeholder="umbraco-db-password"
|
||||
required
|
||||
ng-model="installer.current.model.password"
|
||||
/>
|
||||
<small class="inline-help">Enter the database password</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="span12 control-group"
|
||||
ng-if="selectedDbMeta.supportsIntegratedAuthentication"
|
||||
>
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
<input
|
||||
type="checkbox"
|
||||
ng-model="installer.current.model.integratedAuth"
|
||||
/>
|
||||
Use integrated authentication
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="control-actions controls-space-between">
|
||||
<button class="btn btn-info" ng-click="restart()">Go back</button>
|
||||
<button
|
||||
class="btn btn-success"
|
||||
ng-disabled="myForm.$invalid || checking"
|
||||
ng-class="{disabled:myForm.$invalid}"
|
||||
>
|
||||
Install
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<span ng-if="checking" class="inline-help" ng-animate="'fade'">
|
||||
Validating your database connection...
|
||||
</span>
|
||||
|
||||
<span
|
||||
ng-if="invalidDbDns"
|
||||
class="inline-help error"
|
||||
ng-animate="'fade'"
|
||||
>
|
||||
Could not connect to database
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@ angular.module("umbraco.install").controller("Umbraco.Install.UserController", f
|
||||
$scope.majorVersion = Umbraco.Sys.ServerVariables.application.version;
|
||||
$scope.passwordPattern = /.*/;
|
||||
$scope.installer.current.model.subscribeToNewsLetter = $scope.installer.current.model.subscribeToNewsLetter || false;
|
||||
$scope.installer.current.model.telemetryLevel = $scope.installer.current.model.telemetryLevel || $scope.installer.current.model.consentLevels[1].level;
|
||||
setTelemetryLevelAndDescription($scope.installer.current.model.telemetryIndex ?? 1);
|
||||
|
||||
if ($scope.installer.current.model.minNonAlphaNumericLength > 0) {
|
||||
var exp = "";
|
||||
@@ -15,11 +15,6 @@ angular.module("umbraco.install").controller("Umbraco.Install.UserController", f
|
||||
$scope.passwordPattern = new RegExp(exp);
|
||||
}
|
||||
|
||||
$scope.consentTooltip = {
|
||||
show: false,
|
||||
event: null
|
||||
};
|
||||
|
||||
if ('noUiSlider' in window) {
|
||||
let consentSliderStartLevel = 2;
|
||||
const initialConsentLevel = $scope.installer.current.model.consentLevels.findIndex(x => x.level === $scope.installer.current.model.telemetryLevel);
|
||||
@@ -36,6 +31,7 @@ angular.module("umbraco.install").controller("Umbraco.Install.UserController", f
|
||||
"min": 1,
|
||||
"max": 3
|
||||
},
|
||||
behaviour: 'smooth-steps-tap',
|
||||
pips: {
|
||||
mode: 'values',
|
||||
density: 50,
|
||||
@@ -63,22 +59,6 @@ angular.module("umbraco.install").controller("Umbraco.Install.UserController", f
|
||||
});
|
||||
|
||||
pips.forEach(function (pip) {
|
||||
pip.addEventListener('mouseenter', function (e) {
|
||||
$scope.$apply(function () {
|
||||
const value = pip.getAttribute('data-value');
|
||||
$scope.consentTooltip.show = true;
|
||||
$scope.consentTooltip.event = e;
|
||||
$scope.consentTooltip.description = $sce.trustAsHtml($scope.installer.current.model.consentLevels[value - 1].description);
|
||||
});
|
||||
});
|
||||
|
||||
pip.addEventListener('mouseleave', function () {
|
||||
$scope.$apply(function () {
|
||||
$scope.consentTooltip.show = false;
|
||||
$scope.consentTooltip.event = null;
|
||||
$scope.consentTooltip.description = '';
|
||||
});
|
||||
});
|
||||
|
||||
pip.addEventListener('click', function () {
|
||||
const value = pip.getAttribute('data-value');
|
||||
@@ -99,8 +79,16 @@ angular.module("umbraco.install").controller("Umbraco.Install.UserController", f
|
||||
};
|
||||
|
||||
function onChangeConsent(values) {
|
||||
const result = Number(values[0]);
|
||||
$scope.installer.current.model.telemetryLevel = $scope.installer.current.model.consentLevels[result - 1].level;
|
||||
const result = Number(values[0]) - 1;
|
||||
$scope.$apply(() => {
|
||||
setTelemetryLevelAndDescription(result);
|
||||
});
|
||||
};
|
||||
|
||||
function setTelemetryLevelAndDescription(idx) {
|
||||
$scope.telemetryDescription = $sce.trustAsHtml($scope.installer.current.model.consentLevels[idx].description);
|
||||
$scope.installer.current.model.telemetryIndex = idx;
|
||||
$scope.installer.current.model.telemetryLevel = $scope.installer.current.model.consentLevels[idx].level;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -1,102 +1,168 @@
|
||||
<div ng-controller="Umbraco.Install.UserController">
|
||||
<h1>Install Umbraco</h1>
|
||||
|
||||
<p>Enter your name, email and password to install Umbraco with its default settings, alternatively you can customize
|
||||
your installation</p>
|
||||
<p>
|
||||
Enter credentials for the default administrator user and choose the level of
|
||||
consent for telemetry data of your Umbraco installation.
|
||||
</p>
|
||||
|
||||
<form name="myForm" class="form-horizontal" novalidate ng-submit="validateAndInstall();">
|
||||
|
||||
<div class="row">
|
||||
<div class="span8">
|
||||
<div class="pull-right">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">Name</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="name" name="name" placeholder="Full name" required
|
||||
ng-model="installer.current.model.name" />
|
||||
</div>
|
||||
<form
|
||||
class="-no-margin-bottom"
|
||||
name="myForm"
|
||||
novalidate
|
||||
ng-submit="validateAndInstall();"
|
||||
>
|
||||
<div class="installer-cols">
|
||||
<div class="installer-col user-col">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="name">Name</label>
|
||||
<div class="controls">
|
||||
<input
|
||||
type="text"
|
||||
id="name"
|
||||
name="name"
|
||||
placeholder="Full name"
|
||||
required
|
||||
ng-model="installer.current.model.name"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="email">Email</label>
|
||||
<div class="controls">
|
||||
<input type="email" id="email" name="email" placeholder="you@example.com" val-email required
|
||||
ng-model="installer.current.model.email" />
|
||||
<small class="inline-help">Your email will be used as your login</small>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="email">Email</label>
|
||||
<div class="controls">
|
||||
<input
|
||||
type="email"
|
||||
id="email"
|
||||
name="email"
|
||||
placeholder="you@example.com"
|
||||
val-email
|
||||
required
|
||||
ng-model="installer.current.model.email"
|
||||
/>
|
||||
<small class="inline-help"
|
||||
>Your email will be used as your login</small
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="password">Password</label>
|
||||
<div class="controls">
|
||||
<!-- why isn't this masked: https://www.nngroup.com/articles/stop-password-masking/ -->
|
||||
<input type="text" name="installer.current.model.password"
|
||||
ng-minlength="{{installer.current.model.minCharLength}}" ng-pattern="passwordPattern" autocorrect="off"
|
||||
autocapitalize="off" autocomplete="off" required ng-model="installer.current.model.password"
|
||||
id="password" />
|
||||
<small class="inline-help">At least {{installer.current.model.minCharLength}} characters long</small>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="password">Password</label>
|
||||
<div class="controls">
|
||||
<!-- why isn't this masked: https://www.nngroup.com/articles/stop-password-masking/ -->
|
||||
<input
|
||||
type="text"
|
||||
name="installer.current.model.password"
|
||||
ng-minlength="{{installer.current.model.minCharLength}}"
|
||||
ng-pattern="passwordPattern"
|
||||
autocorrect="off"
|
||||
autocapitalize="off"
|
||||
autocomplete="off"
|
||||
required
|
||||
ng-model="installer.current.model.password"
|
||||
id="password"
|
||||
/>
|
||||
<small class="inline-help"
|
||||
>At least {{installer.current.model.minCharLength}} characters
|
||||
long</small
|
||||
>
|
||||
|
||||
<small ng-if="installer.current.model.minNonAlphaNumericLength > 0" class="inline-help">
|
||||
At least {{installer.current.model.minNonAlphaNumericLength}}
|
||||
symbol{{installer.current.model.minNonAlphaNumericLength > 1 ? 's' : ''}}
|
||||
</small>
|
||||
</div>
|
||||
<small
|
||||
ng-if="installer.current.model.minNonAlphaNumericLength > 0"
|
||||
class="inline-help"
|
||||
>
|
||||
At least {{installer.current.model.minNonAlphaNumericLength}}
|
||||
symbol{{installer.current.model.minNonAlphaNumericLength > 1 ? 's'
|
||||
: ''}}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label>
|
||||
<input
|
||||
type="checkbox"
|
||||
id="subscribeToNewsLetter"
|
||||
name="subscribeToNewsLetter"
|
||||
ng-model="installer.current.model.subscribeToNewsLetter"
|
||||
/>
|
||||
Keep me updated on Umbraco Versions, Security Bulletins and
|
||||
Community News
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
ng-if="installer.current.model.quickInstallSettings"
|
||||
style="margin-top: auto"
|
||||
>
|
||||
<div class="control-group">
|
||||
<label class="control-label">Telemetry</label>
|
||||
<div class="controls">
|
||||
<div id="consentSliderWrapper">
|
||||
<div id="consentSlider"></div>
|
||||
|
||||
<umb-tooltip ng-if="consentTooltip.show" event="consentTooltip.event">
|
||||
<div ng-bind-html="consentTooltip.description"></div>
|
||||
</umb-tooltip>
|
||||
<label class="control-label" for="dbType">Database</label>
|
||||
<div class="controls -with-border">
|
||||
<div class="input-readonly-text">
|
||||
<strong>Provider:</strong>
|
||||
{{installer.current.model.quickInstallSettings.displayName}}
|
||||
<br /><strong>Name:</strong>
|
||||
{{installer.current.model.quickInstallSettings.defaultDatabaseName}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label>
|
||||
<input type="checkbox" id="subscribeToNewsLetter" name="subscribeToNewsLetter"
|
||||
ng-model="installer.current.model.subscribeToNewsLetter" />
|
||||
Keep me updated on Umbraco Versions, Security Bulletins and Community News
|
||||
</label>
|
||||
<div class="installer-col telemetry-col">
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Consent for telemetry data
|
||||
<br /><small>
|
||||
This can be changed later in the Settings panel.
|
||||
</small>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div id="consentSliderWrapper">
|
||||
<div id="consentSlider"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="installer.current.model.quickInstallSettings" ng-style="{'opacity': myForm.$invalid ? '0.4' : ''}">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="dbType">Database</label>
|
||||
<div class="controls">
|
||||
<div class="input-readonly-text">
|
||||
<strong>Provider:</strong> {{installer.current.model.quickInstallSettings.displayName}}
|
||||
<br /><strong>Name:</strong> {{installer.current.model.quickInstallSettings.defaultDatabaseName}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group" ng-class="{disabled:myForm.$invalid}">
|
||||
<div class="controls">
|
||||
<div ng-if="installer.current.model.quickInstallSettings">
|
||||
<button ng-disabled="myForm.$invalid" class="btn btn-success">
|
||||
Install
|
||||
</button>
|
||||
<button
|
||||
ng-if="installer.current.model.quickInstallSettings && installer.current.model.customInstallAvailable"
|
||||
class="btn btn-info control-customize" ng-disabled="myForm.$invalid"
|
||||
ng-click="validateAndForward()">Change Database</button>
|
||||
</div>
|
||||
|
||||
<button ng-if="!installer.current.model.quickInstallSettings" class="btn btn-primary control-customize"
|
||||
ng-disabled="myForm.$invalid" ng-click="validateAndForward()">Next</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
In order to improve Umbraco and add new functionality based on as
|
||||
relevant information as possible, we would like to collect system-
|
||||
and usage information from your installation.
|
||||
</small>
|
||||
</p>
|
||||
<p><small ng-bind-html="telemetryDescription"></small></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="control-actions" ng-class="{disabled:myForm.$invalid}">
|
||||
<div
|
||||
class="controls-space-between"
|
||||
ng-if="installer.current.model.quickInstallSettings"
|
||||
>
|
||||
<button
|
||||
ng-if="installer.current.model.quickInstallSettings && installer.current.model.customInstallAvailable"
|
||||
class="btn btn-info control-customize"
|
||||
ng-disabled="myForm.$invalid"
|
||||
ng-click="validateAndForward()"
|
||||
>
|
||||
Change Database
|
||||
</button>
|
||||
|
||||
<button ng-disabled="myForm.$invalid" class="btn btn-success">
|
||||
Install
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<button
|
||||
ng-if="!installer.current.model.quickInstallSettings"
|
||||
class="btn btn-primary control-customize"
|
||||
ng-disabled="myForm.$invalid"
|
||||
ng-click="validateAndForward()"
|
||||
>
|
||||
Next
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -29,27 +29,25 @@
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
html {
|
||||
body {
|
||||
background: url('../img/installer.svg') no-repeat center center fixed;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
height: 100vh;
|
||||
width: 100%;
|
||||
font-family: @baseFontFamily;
|
||||
font-size: @baseFontSize;
|
||||
line-height: @baseLineHeight;
|
||||
color: @textColor;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
// better font rendering
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
// center items
|
||||
display: grid;
|
||||
place-items: center center;
|
||||
}
|
||||
|
||||
#logo {
|
||||
@@ -61,16 +59,14 @@ body {
|
||||
}
|
||||
|
||||
#installer {
|
||||
margin: auto;
|
||||
background: @white;
|
||||
width: 80%;
|
||||
max-width: 750px;
|
||||
height: 640px;
|
||||
width: min-content;
|
||||
min-width: 500px;
|
||||
text-align: left;
|
||||
padding: 30px;
|
||||
padding: 3rem;
|
||||
z-index: 667;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.16);
|
||||
box-shadow: 0 0 2px 4px rgba(0, 0, 0, 0.16);
|
||||
}
|
||||
|
||||
#overlay {
|
||||
@@ -144,6 +140,14 @@ legend {
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
#installer input {
|
||||
width: 100%;
|
||||
|
||||
&[type=checkbox] {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
input.ng-dirty.ng-invalid {
|
||||
border-color: @pink;
|
||||
color: @pink;
|
||||
@@ -153,6 +157,21 @@ input.ng-dirty.ng-invalid {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.installer-cols {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(300px, 1fr));
|
||||
gap: 120px;
|
||||
}
|
||||
|
||||
.user-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.telemetry-col {
|
||||
min-height: 500px
|
||||
}
|
||||
|
||||
|
||||
#installer label.control-label,
|
||||
#installer .constrol-label {
|
||||
@@ -166,6 +185,19 @@ input.ng-dirty.ng-invalid {
|
||||
display: block;
|
||||
color: @gray-3;
|
||||
}
|
||||
|
||||
&.-with-border {
|
||||
border: 1px solid @inputBorder;
|
||||
}
|
||||
}
|
||||
|
||||
.control-actions {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.controls-space-between {
|
||||
display: flex;
|
||||
justify-content: space-between;;
|
||||
}
|
||||
|
||||
#installer .input-readonly-text {
|
||||
@@ -176,15 +208,6 @@ input.ng-dirty.ng-invalid {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.absolute-center {
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.fade-hide,
|
||||
.fade-show {
|
||||
transition: all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
|
||||
@@ -282,10 +305,12 @@ select {
|
||||
}
|
||||
|
||||
#consentSliderWrapper {
|
||||
margin-bottom: 40px;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
#consentSlider {
|
||||
width: 300px;
|
||||
|
||||
.noUi-target {
|
||||
background: linear-gradient(to bottom, @grayLighter 0%, @grayLighter 100%);
|
||||
box-shadow: none;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
"min": 1,
|
||||
"max": 3
|
||||
},
|
||||
behaviour: 'smooth-steps-tap',
|
||||
pips: {
|
||||
mode: 'values',
|
||||
density: 50,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<umb-box>
|
||||
<umb-box-content>
|
||||
<h3 class="bold">
|
||||
<localize key="analytics_consentForAnalytics">Consent for analytics</localize>
|
||||
<localize key="analytics_consentForAnalytics">Consent for telemetry data</localize>
|
||||
</h3>
|
||||
<div class="umb-healthcheck-help-text">
|
||||
<localize key="analytics_analyticsDescription">
|
||||
@@ -23,29 +23,24 @@
|
||||
</div>
|
||||
|
||||
<div ng-if="vm.sliderVal === 'Minimal'">
|
||||
<b>{{vm.sliderVal}}</b>
|
||||
<br>
|
||||
<localize key="analytics_minimalLevelDescription">We'll only send an anonymous site ID to let us know that the
|
||||
site exists.
|
||||
</localize>
|
||||
</div>
|
||||
<div ng-if="vm.sliderVal === 'Basic'">
|
||||
<b>{{vm.sliderVal}}</b>
|
||||
<br>
|
||||
<localize key="analytics_basicLevelDescription">We'll send site ID, umbraco version and packages installed
|
||||
</localize>
|
||||
</div>
|
||||
<div ng-if="vm.sliderVal === 'Detailed'">
|
||||
<b>{{vm.sliderVal}}</b>
|
||||
<br>
|
||||
<localize key="analytics_detailedLevelDescription">
|
||||
We will send:
|
||||
<br>- Anonymized site ID, umbraco version, and packages installed.
|
||||
<br>- Number of: Root nodes, Content nodes, Macros, Media, Document Types, Templates, Languages, Domains, User Group, Users, Members, and Property Editors in use.
|
||||
<br>- System information: Webserver, server OS, server framework, server OS language, and database provider.
|
||||
<br>- Configuration settings: Modelsbuilder mode, if custom Umbraco path exists, ASP environment, and if you are in debug mode.
|
||||
<br>
|
||||
<br><i>We might change what we send on the Detailed level in the future. If so, it will be listed above.
|
||||
We will send:
|
||||
<ul>
|
||||
<li>Anonymized site ID, umbraco version, and packages installed.</li>
|
||||
<li>Number of: Root nodes, Content nodes, Macros, Media, Document Types, Templates, Languages, Domains, User Group, Users, Members, and Property Editors in use.</li>
|
||||
<li>System information: Webserver, server OS, server framework, server OS language, and database provider.</li>
|
||||
<li>Configuration settings: Modelsbuilder mode, if custom Umbraco path exists, ASP environment, and if you are in debug mode.</li>
|
||||
</ul>
|
||||
<i>We might change what we send on the Detailed level in the future. If so, it will be listed above.
|
||||
<br>By choosing "Detailed" you agree to current and future anonymized information being collected.</i>
|
||||
</localize>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user