2018-06-14 15:46:55 +02:00
<!-- 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 / >
2018-06-14 15:46:55 +02:00
< / h5 >
< / div >
< div class = "modal-body" >
< div ng-bind-html = "appPostInstallConfirm.app.manifest.postInstallMessage | postInstallMessage:appPostInstallConfirm.app | markdown2html" > < / div >
2018-08-21 19:12:04 -07:00
< 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 >
2018-06-14 15:46:55 +02:00
< / div >
< div class = "modal-footer" >
2019-09-27 19:43:03 +02:00
< 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 >
2018-06-14 15:46:55 +02:00
< 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';
2019-04-03 14:43:20 +02:00
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;" > < / 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" >
2019-04-15 14:31:12 +02:00
< h1 class = "view-header" >
2020-06-12 15:34:54 +02:00
My Apps
2019-04-15 14:31:12 +02:00
< div class = "pull-right" >
2020-01-06 15:27:31 +01:00
< form class = "form-inline" >
2020-01-07 11:13:22 +01:00
< 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 >
2019-04-15 14:31:12 +02:00
< / 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" >
2019-04-15 14:31:12 +02:00
< 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'" >
2020-03-06 16:41:17 -08:00
< 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)}" >
2019-10-22 15:56:53 +02:00
< div style = "background-color: white;" class = "highlight grid-item-content" uib-tooltip = "{{ app.fqdn }}" tooltip-class = "long nowrap" >
2019-04-15 14:31:12 +02:00
< div class = "grid-item-top" >
< div class = "row" >
< div class = "col-xs-12 text-center" style = "padding-left: 5px; padding-right: 5px;" >
2019-09-18 18:10:51 +02:00
< br / >
< img ng-src = "{{ app.iconUrl || 'img/appicon_fallback.png' }}" fallback-icon = "img/appicon_fallback.png" onerror = "imageErrorHandler(this)" class = "app-icon" / >
2019-04-15 14:31:12 +02:00
< / 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 >
2019-10-22 15:56:53 +02:00
< 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 }}
2019-04-15 14:31:12 +02:00
< / div >
2020-02-24 12:56:13 +01:00
< div class = "status" ng-style = "{ 'visibility': user.isAtLeastAdmin && (app | installationActive) ? 'visible' : 'hidden' }" >
2019-04-15 14:31:12 +02:00
< 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 >
2019-04-15 14:31:12 +02:00
< / 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 >
2020-06-23 12:50:44 +02:00
< 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 >
2019-04-15 14:31:12 +02:00
< / div >
2018-01-22 13:01:38 -08:00
2019-04-15 14:31:12 +02:00
<!-- we check the version here because the box updater does not know when an app gets updated -->
2019-09-18 18:10:51 +02:00
< 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 >
2019-04-15 14:31:12 +02:00
< / 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 >