* feat(license): add liblicense dep * feat(license): add bolt license service * feat(license): introduce license service * feat(license): validate license before adding * feat(license): aggregate info after changing of licenses * feat(http): implement http handlers * feat(license-management): introduce license service * feat(licenses): introduce empty view * feat(license-management): add datatable * feat(licenses): show license info * fix(license): inject services * feat(licenses): add buttons to buy/renew license * feat(licenses): introduce add license route * feat(licenses): add license form * feat(license): datatable * feat(license): show more details about license * refactor(license): rename components name * feat(licenses): show expiration date * feat(license): introduce init license route * feat(license): validate license * feat(license): save licenses * feat(bouncer): check if license is valid on restricted * feat(bouncer): remove license check on api * feat(home): add node warning * feat(licenses): remove license * feat(licenses): listen to info changes * feat(license): show license expiration message * feat(license): block regular users from licenses view * feat(license): prevent removing of last license * fix(license): show message when failed delete * feat(license): remove trial license when applying oneoff * feat(license): hide the number of nodes for trial * feat(auth): disable login if license is invalid * feat(licenses): add confirmation before removal of license * feat(nodes): count nodes in env * feat(license): show message if nodes exceed allowed * feat(deps): update liblicense * feat(licenses): show validation errors * feat(license): use information panel for node info * fix(license): reload license data on remove * fix(license): always send list of failed keys * fix(license): rename buttons * feat(license): replace icon * feat(license): add link to licenses page in add license * fix(licenses): show green valid icon * fix(licenses): rename expires at * fix(licenses): rename Attach to add * fix(licenses): show license type label * feat(license): aggregate revoked info * chore(deps): update liblicense * fix(license): remove space * fix(sidebar): align icon * fix(license): change info layout * feat(license): aggregate only valid licenses * fix(licenses): move add license to a new line * style(license): remove console * refactor(license): move license line to component * feat(license): check server validation * fix(licenses): check form validation before submit * feat(licenses): send only invalid licenses * fix(license): hide panels when not needed * feat(licnese): receive a single license on init * refactor(header): move header to module * feat(license): move license panel to header * fix(header): set min height * fix(home): show node warning only if subscription * feat(licenses): minor UI updates * feat(licenses): minor UI update * feat(licenses-datatable): add copy button * fix(licenses-datatable): show date without hours * feat(license): show expiration message * fix(users): get user info only on restriced access * fix(license): clear check for single license Co-authored-by: Anthony Lapenna <lapenna.anthony@gmail.com>
67 lines
2.9 KiB
HTML
67 lines
2.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" ng-app="<%= name %>" ng-strict-di>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Portainer</title>
|
|
<meta name="description" content="" />
|
|
<meta name="author" content="<%= author %>" />
|
|
|
|
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
|
|
<!--[if lt IE 9]>
|
|
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
|
<![endif]-->
|
|
|
|
<!-- Fav and touch icons -->
|
|
<link rel="apple-touch-icon" sizes="180x180" href="${require('./assets/ico/apple-touch-icon.png')}" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="${require('./assets/ico/favicon-32x32.png')}" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="${require('./assets/ico/favicon-16x16.png')}" />
|
|
<link rel="mask-icon" href="${require('./assets/ico/safari-pinned-tab.svg')}" color="#5bbad5" />
|
|
<link rel="shortcut icon" href="${require('./assets/ico/favicon.ico')}" />
|
|
<meta name="msapplication-config" content="${require('./assets/ico/browserconfig.xml')}" />
|
|
<meta name="theme-color" content="#ffffff" />
|
|
</head>
|
|
|
|
<body ng-controller="MainController">
|
|
<div
|
|
id="page-wrapper"
|
|
ng-class="{
|
|
open: toggle && ['portainer.auth', 'portainer.init.admin', 'portainer.init.endpoint', 'portainer.init.license'].indexOf($state.current.name) === -1,
|
|
nopadding:
|
|
['portainer.auth', 'portainer.init.admin', 'portainer.init.endpoint', 'portainer.init.license', 'portainer.logout'].indexOf($state.current.name) > -1 ||
|
|
applicationState.loading
|
|
}"
|
|
ng-cloak
|
|
>
|
|
<div id="sideview" ui-view="sidebar" ng-if="!applicationState.loading"></div>
|
|
|
|
<div id="content-wrapper">
|
|
<div class="page-content">
|
|
<div class="page-wrapper" ng-if="applicationState.loading">
|
|
<!-- loading box -->
|
|
<div class="container simple-box">
|
|
<div class="col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3">
|
|
<!-- loading box logo -->
|
|
<div class="row">
|
|
<img ng-if="logo" ng-src="{{ logo }}" class="simple-box-logo" />
|
|
<img ng-if="!logo" src="${require('./assets/images/logo_alt.png')}" class="simple-box-logo" alt="Portainer" />
|
|
</div>
|
|
<!-- !loading box logo -->
|
|
<!-- panel -->
|
|
<div class="row" style="text-align: center;">
|
|
Loading Portainer...
|
|
<i class="fa fa-cog fa-spin" style="margin-left: 5px;"></i>
|
|
</div>
|
|
<!-- !panel -->
|
|
</div>
|
|
</div>
|
|
<!-- !loading box -->
|
|
</div>
|
|
|
|
<!-- Main Content -->
|
|
<div id="view" ui-view="content" ng-if="!applicationState.loading"></div> </div
|
|
><!-- End Page Content --> </div
|
|
><!-- End Content Wrapper --> </div
|
|
><!-- End Page Wrapper -->
|
|
</body></html
|
|
>
|