Files
cloudron-box/src/views/apps.html

160 lines
9.7 KiB
HTML
Raw Normal View History

<!-- Modal postinstall confirm -->
<div class="modal fade" id="appPostInstallConfirmModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<img ng-src="{{appPostInstallConfirm.app.iconUrl}}" onerror="this.onerror=null;this.src='img/appicon_fallback.png'" class="app-info-icon"/>
<h5 class="app-info-title">
{{ appPostInstallConfirm.app.manifest.title }}
<span class="app-info-meta text-small">Package <a ng-href="/#/appstore/{{appPostInstallConfirm.app.manifest.id}}?version={{appPostInstallConfirm.app.manifest.version}}">v{{ appPostInstallConfirm.app.manifest.version }}</a> </span>
2018-08-05 21:36:40 -07:00
<br/>
<span ng-show="appPostInstallConfirm.app.manifest.documentationUrl"><a target="_blank" ng-href="{{appPostInstallConfirm.app.manifest.documentationUrl}}">Documentation</a> </span>
<br/>
</h5>
</div>
<div class="modal-body">
<div ng-bind-html="appPostInstallConfirm.app.manifest.postInstallMessage | postInstallMessage:appPostInstallConfirm.app | markdown2html"></div>
<div ng-show="appPostInstallConfirm.app.manifest.documentationUrl">
Please see the <a target="_blank" ng-href="{{appPostInstallConfirm.app.manifest.documentationUrl}}">documentation</a> for more information.
</div>
</div>
<div class="modal-footer">
<div class="form-group pull-left">
<input type="checkbox" id="appPostInstallConfirmCheckbox" ng-model="appPostInstallConfirm.confirmed">
<label class="control-label" for="appPostInstallConfirmCheckbox">Acknowledge instructions</label>
</div>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<a class="btn btn-success" ng-href="{{ appPostInstallConfirm.confirmed ? ('https://' + appPostInstallConfirm.app.fqdn) : '' }}" target="_blank" ng-disabled="!appPostInstallConfirm.confirmed" ng-click="appPostInstallConfirm.submit()">Open {{ appPostInstallConfirm.app.manifest.title }}</a>
</div>
</div>
</div>
</div>
2020-06-10 18:00:50 +02:00
<!-- Modal app info -->
<div class="modal fade" id="appInfoModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<img ng-src="{{appInfo.app.iconUrl}}" onerror="this.onerror=null;this.src='img/appicon_fallback.png'" class="app-info-icon" style="padding-right: 10px;"/>
<h4 style="margin-top: 0;">
{{ appInfo.app.manifest.title }}
<br/>
<span class="text-small text-muted">Package <a ng-href="/#/appstore/{{appInfo.app.manifest.id}}?version={{appInfo.app.manifest.version}}">v{{ appInfo.app.manifest.version }}</a></span>
<br/>
<span class="text-small text-muted" ng-show="appInfo.app.upstreamVersion">App v{{ appInfo.app.upstreamVersion }}</a></span>
</h5>
</div>
<div class="modal-body">
2020-06-24 23:06:12 -07:00
<p>Please see the <a target="_blank" ng-href="{{appInfo.app.manifest.documentationUrl}}">{{ appInfo.app.manifest.title }} documentation</a> for helpful information and common topics on this app.
If you need further help, refer to Cloudron's <a target="_blank" ng-href="{{ appInfo.app.manifest.forumUrl || 'https://forum.cloudron.io' }}">{{ appInfo.app.manifest.title }} forum section</a>.
</p>
<a ng-show="appInfo.app.manifest.postInstallMessage" href="" data-toggle="collapse" data-parent="#accordion" data-target="#appinfo_postinstall_message">
<i class="fa fa-angle-right"></i>
First time setup instructions
</a>
<div id="appinfo_postinstall_message" class="panel-collapse collapse">
<br/>
<div ng-bind-html="appInfo.app.manifest.postInstallMessage | postInstallMessage:appInfo.app | markdown2html"></div>
</div>
2020-06-10 18:00:50 +02:00
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
2018-01-22 13:01:38 -08:00
<script>
function imageErrorHandler(elem) {
'use strict';
elem.src = elem.getAttribute('fallback-icon');
elem.onerror = null; // avoid retry after default icon cannot be loaded
2018-01-22 13:01:38 -08:00
}
</script>
<div class="content content-large">
<!-- Workaround for select-all issue, see commit message -->
<div style="font-size: 1px;">&nbsp;</div>
2020-02-24 12:56:13 +01:00
<div class="animateMeOpacity ng-hide" ng-show="installedApps.length === 0 && user.isAtLeastAdmin">
2018-01-22 13:01:38 -08:00
<div class="col-md-12" style="text-align: center;">
<br/><br/><br/><br/>
<h1><i class="fa fa-cloud-download fa-fw"></i> No apps installed yet!</h1>
<br/></br>
<h3>How about installing some? Check out the <a href="#/appstore">App Store</a></h3>
</div>
</div>
2020-02-24 12:56:13 +01:00
<div class="animateMeOpacity ng-hide" ng-show="installedApps.length === 0 && !user.isAtLeastAdmin">
2018-01-22 13:01:38 -08:00
<div class="col-md-12" style="text-align: center;">
<br/><br/><br/><br/>
2020-03-05 16:54:02 -08:00
<h1>You don't have access to any apps yet!</h1>
2018-01-22 13:01:38 -08:00
<br/></br>
<h3>Once you do, they will show up here.</h3>
</div>
</div>
<div class="animateMeOpacity ng-hide" ng-show="installedApps.length > 0">
<h1 class="view-header">
2020-06-12 15:34:54 +02:00
My Apps
<div class="pull-right">
2020-01-06 15:27:31 +01:00
<form class="form-inline">
<input type="text" class="form-control" placeholder="Search Apps" id="appSearch" ng-model="appSearch" ng-show="installedApps.length > 10"/>
2020-01-06 15:27:31 +01:00
<multiselect ng-model="selectedTags" ng-show="tags.length > 0" ms-header="All Tags" ms-selected="Tags: {{ selectedTags.join(', ') }}" options="tag for tag in tags" data-multiple="true" filter-after-rows="5" scroll-after-rows="10"></multiselect>
<multiselect ng-model="selectedDomain" ng-show="filterDomains.length > 2" data-compare-by="domain" ms-selected="{{ selectedDomain.domain }}" options="domain.domain for domain in filterDomains" data-multiple="false" filter-after-rows="5" scroll-after-rows="10"></multiselect>
</form>
</div>
</h1>
2019-04-12 11:06:56 +02:00
</div>
2018-01-22 13:01:38 -08:00
<div class="animateMeOpacity ng-hide" ng-show="installedApps.length > 0">
<div class="app-grid">
2020-01-06 15:27:31 +01:00
<div class="grid-item" ng-repeat="app in installedApps | selectedTagFilter:selectedTags | selectedDomainFilter:selectedDomain | appSearchFilter:appSearch | orderBy:'location'">
<a ng-href="{{ app | applicationLink }}" ng-click="user.isAtLeastAdmin && (((app | installError) === true || (app | installationActive) === true) && showAppConfigure(app, 'repair')) || ((app | appIsInstalledAndHealthy) && app.pendingPostInstallConfirmation && appPostInstallConfirm.show(app))" target="_blank" ng-class="{ 'hand': (app | appIsInstalledAndHealthy) || (app | installError) || (app | installationActive)}">
<div style="background-color: white;" class="highlight grid-item-content" uib-tooltip="{{ app.fqdn }}" tooltip-class="long nowrap">
<div class="grid-item-top">
<div class="row">
<div class="col-xs-12 text-center" style="padding-left: 5px; padding-right: 5px;">
<br/>
<img ng-src="{{ app.iconUrl || 'img/appicon_fallback.png' }}" fallback-icon="img/appicon_fallback.png" onerror="imageErrorHandler(this)" class="app-icon"/>
</div>
</div>
<br/>
<div class="row">
<div class="col-xs-12 text-center">
2019-04-24 14:31:52 +02:00
<div class="grid-item-top-title" data-fittext>{{ app.label || app.location || app.fqdn }}</div>
<div class="text-muted status" style="text-overflow: ellipsis; white-space: nowrap; overflow: hidden" uib-tooltip="{{ app | appProgressMessage }}" tooltip-class="long nowrap">
2020-05-12 21:30:57 -07:00
{{ app | installationStateLabel }}
</div>
2020-02-24 12:56:13 +01:00
<div class="status" ng-style="{ 'visibility': user.isAtLeastAdmin && (app | installationActive) ? 'visible' : 'hidden' }">
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-success" role="progressbar" style="width: {{ app.progress }}%"></div>
2019-03-25 10:42:31 +01:00
</div>
2018-01-22 13:01:38 -08:00
</div>
2019-03-25 10:42:31 +01:00
</div>
</div>
</div>
2018-01-22 13:01:38 -08:00
2020-02-24 12:56:13 +01:00
<div class="grid-item-actions" ng-show="user.isAtLeastAdmin">
2020-06-11 19:32:23 +02:00
<a ng-href="#/app/{{ app.id}}/display" uib-tooltip="Config" tooltip-placement="right" tooltip-class="grid-items-action-tooltip"><i class="fas fa-cogs"></i></a>
<a ng-href="{{ '/logs.html?appId=' + app.id }}" target="_blank" uib-tooltip="Logs" tooltip-placement="right" tooltip-class="grid-items-action-tooltip"><i class="fas fa-align-left"></i></a>
2020-06-24 23:06:12 -07:00
<a ng-href="" ng-show="app.appStoreId" class="hand" ng-click="appInfo.show(app)" uib-tooltip="Info" tooltip-placement="right" tooltip-class="grid-items-action-tooltip"><i class="fas fa-info-circle"></i></a>
<a ng-href="{{ app | applicationLink }}{{ app.manifest.configurePath }}" target="_blank" ng-show="app.manifest.configurePath && (app | applicationLink)" uib-tooltip="Login Page" tooltip-placement="right" tooltip-class="grid-items-action-tooltip"><i class="fas fa-external-link-alt"></i></a>
</div>
2018-01-22 13:01:38 -08:00
<!-- we check the version here because the box updater does not know when an app gets updated -->
<div class="app-update-badge" ng-click="showAppConfigure(app, 'updates')" ng-show="config.update.apps[app.id].manifest.version && config.update.apps[app.id].manifest.version !== app.manifest.version && (app | installSuccess)">
2019-04-16 09:21:09 +02:00
<i class="fa fa-arrow-up fa-inverse"></i>
2019-03-25 10:42:31 +01:00
</div>
</div>
</a>
2018-01-22 13:01:38 -08:00
</div>
2019-03-25 10:42:31 +01:00
</div>
2018-01-22 13:01:38 -08:00
</div>
</div>