mirror of
https://github.com/portainer/portainer.git
synced 2025-07-31 03:09:44 +02:00
When portainer is restarted the user's session is invalidated and as soon as they start clicking around they will be logged out. This PR does two additional things when this happens. 1) We trigger a browser page reload which will force the client the grab the latest version of our js, css, etc. Previously if a user updated portainer, but never clicked the browser's refresh button they would never see new css changes. 2) We also set "cache-control no-cache" on the index.html header. Since portainer is an SPA and the the index.html is very small it makes sense to avoid letting the browser cache it so that the user is always given the latest version when the above reload is triggered.
84 lines
3.6 KiB
HTML
84 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" ng-app="<%= name %>" ng-strict-di data-edition="<%= process.env.PORTAINER_EDITION %>">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Portainer</title>
|
|
<meta name="description" content="" />
|
|
<meta name="author" content="<%= author %>" />
|
|
<meta http-equiv="cache-control" content="no-cache" />
|
|
<meta http-equiv="expires" content="0" />
|
|
<meta http-equiv="pragma" content="no-cache" />
|
|
<base id="base" />
|
|
<script>
|
|
if (window.origin == 'file://') {
|
|
// we are loading the app from a local file as in docker extension
|
|
document.getElementById('base').href = 'http://localhost:9000/';
|
|
|
|
window.ddExtension = true;
|
|
} else {
|
|
var path = window.location.pathname.replace(/^\/+|\/+$/g, '');
|
|
var basePath = path ? '/' + path + '/' : '/';
|
|
document.getElementById('base').href = basePath;
|
|
}
|
|
</script>
|
|
|
|
<!-- 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">
|
|
<react-query-dev-tools></react-query-dev-tools>
|
|
<div
|
|
id="page-wrapper"
|
|
ng-class="{
|
|
open: isSidebarOpen() && ['portainer.auth', 'portainer.init.admin', 'portainer.init.endpoint'].indexOf($state.current.name) === -1,
|
|
nopadding: ['portainer.auth', 'portainer.init.admin', 'portainer.init.endpoint', '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.svg')%>" 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>
|