mirror of
https://gitee.com/shuto-github/intranet_app_manager.git
synced 2026-04-20 00:00:04 +08:00
first commit
This commit is contained in:
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,44 @@
|
||||
########################################################
|
||||
### Mysql
|
||||
########################################################
|
||||
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/app_manager
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=
|
||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||
|
||||
########################################################
|
||||
### Java Persistence Api
|
||||
########################################################
|
||||
# Specify the DBMS
|
||||
spring.jpa.database = MYSQL
|
||||
# Show or not log for each sql query
|
||||
spring.jpa.show-sql = true
|
||||
# Hibernate ddl auto (create, create-drop, update)
|
||||
spring.jpa.hibernate.ddl-auto = update
|
||||
|
||||
# Naming strategy
|
||||
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
|
||||
############################################################
|
||||
#
|
||||
# 上传文件大小
|
||||
#
|
||||
############################################################
|
||||
spring.servlet.multipart.max-file-size=300MB
|
||||
spring.servlet.multipart.max-request-size=300MB
|
||||
############################################################
|
||||
#
|
||||
# ssl
|
||||
#
|
||||
############################################################
|
||||
server.ssl.key-store=classpath:server.pkcs12
|
||||
server.ssl.key-store-password=123456
|
||||
server.ssl.key-store-type=PKCS12
|
||||
server.ssl.key-alias=1
|
||||
|
||||
# 自定义配置
|
||||
server.port=443
|
||||
server.http.port=80
|
||||
config.debug=debug
|
||||
server.domain=192.168.0.108
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist version="1.0"><dict>
|
||||
<key>items</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>assets</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>kind</key>
|
||||
<string>software-package</string>
|
||||
<key>url</key>
|
||||
<string><![CDATA[${aPackage.safeDownloadURL}]]></string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>kind</key>
|
||||
<string>display-image</string>
|
||||
<key>needs-shine</key>
|
||||
<integer>0</integer>
|
||||
<key>url</key>
|
||||
<string><![CDATA[${aPackage.iconURL}]]></string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>kind</key>
|
||||
<string>full-size-image</string>
|
||||
<key>needs-shine</key>
|
||||
<true/>
|
||||
<key>url</key>
|
||||
<string><![CDATA[${aPackage.iconURL}]]></string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>metadata</key>
|
||||
<dict>
|
||||
<key>bundle-identifier</key>
|
||||
<string>${aPackage.bundleID}</string>
|
||||
<key>bundle-version</key>
|
||||
<string><![CDATA[${aPackage.version}]]></string>
|
||||
<key>kind</key>
|
||||
<string>software</string>
|
||||
<key>title</key>
|
||||
<string><![CDATA[${aPackage.name}]]></string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict></plist>
|
||||
Binary file not shown.
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVDCCAjwCCQCZ0rtCbbUBAjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJD
|
||||
TjERMA8GA1UECAwIWmhlSmlhbmcxETAPBgNVBAcMCEhhbmdaaG91MSEwHwYDVQQL
|
||||
DBhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFDASBgNVBAMMCzE5Mi4xNjguMC4q
|
||||
MB4XDTE5MDYzMDA4MjI0NFoXDTI5MDYyNzA4MjI0NFowbDELMAkGA1UEBhMCQ04x
|
||||
ETAPBgNVBAgMCFpoZUppYW5nMREwDwYDVQQHDAhIYW5nWmhvdTEhMB8GA1UECwwY
|
||||
RG9tYWluIENvbnRyb2wgVmFsaWRhdGVkMRQwEgYDVQQDDAsxOTIuMTY4LjAuKjCC
|
||||
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIEYFPCU5m4kP3/IqAzX21q
|
||||
8rRzwpwe0FMxef3Q3NI64H6Y+Hi064WZuX5W9PuAHyyBuxUYTObMC+AI6rmtV8na
|
||||
5+oGrpnJH0dBjtLL/04unFs5ArSd2ob5hQDZ+bukJMo8ffiOw4T882P9wEiRBNXw
|
||||
RQOJBKuG4zAhDLyAgcpZ96g4Is+3TtgfQnVfbSWIcT6B+mS7yVKJM+Ov0twWb60q
|
||||
94Fk8NlPyq5AhIiM8O7W74IMr9Uu/woMMJ91wJoBnp5MqDl79ebGQzuzOHY0E1VX
|
||||
qyp2RkAZgzEgGOpwLXWOzYfGu2A+HdaMleCZQ2d/xF81w17x6hue3CCS0AIqvMUC
|
||||
AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAlEeut6xHWX7H58c2uqUtak7AYS1P0KmB
|
||||
hN1zuFQ/lwn87TQ9JtLJK8Ock+2mIDadnRzKPPwGfKlKgNRT6kj+MYixnL+xeiE8
|
||||
0bIPs2RAPu0XGbbPFIX9VeHC7gTbixbjPQY8MmrvgTizwnooAdrFg9XrkN9BNgj/
|
||||
f43kwlEA9lw0L8hjcr1EM86IQCFXTUzLdJAW13WrVMQsO7ZVz/09mtHnH0GEVfTv
|
||||
jn/j7Sykr9sEwBNBtKSmbCahSj2CBft4WZl0PyE1LnEbeu29e6xN0XUh9C6OUyXZ
|
||||
wTAwy+aaBE2XID9nHHH0G9EVHlDgm9SnvjNRN8nXag1/z2iESkqK/A==
|
||||
-----END CERTIFICATE-----
|
||||
BIN
Binary file not shown.
File diff suppressed because one or more lines are too long
+6
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,459 @@
|
||||
@font-face {
|
||||
font-family: partner;
|
||||
src: url(./fonts/ipartner.eot?rkodm6);
|
||||
src: url(./fonts/ipartner.eot?rkodm6#iefix) format("embedded-opentype"), url(./fonts/ipartner.ttf?rkodm6) format("truetype"), url(./fonts/ipartner.woff?rkodm6) format("woff"), url(./fonts/ipartner.svg?rkodm6#ipartner) format("svg");
|
||||
font-weight: 400;
|
||||
font-style: normal
|
||||
}
|
||||
|
||||
[class*=" ipartner-"], [class^=ipartner-] {
|
||||
font-family: partner!important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale
|
||||
}
|
||||
|
||||
.ipartner-swift:before {
|
||||
content: "\e900"
|
||||
}
|
||||
|
||||
.ipartner-qingcloud:before {
|
||||
content: "\e902"
|
||||
}
|
||||
|
||||
.ipartner-devlink:before {
|
||||
content: "\e920"
|
||||
}
|
||||
|
||||
.ipartner-logo-pingxx:before {
|
||||
content: "\e921"
|
||||
}
|
||||
|
||||
.ipartner-logo-qiniu:before {
|
||||
content: "\e922"
|
||||
}
|
||||
|
||||
.ipartner-logo-leancloud:before {
|
||||
content: "\e923"
|
||||
}
|
||||
|
||||
.ipartner-logo-flowci:before {
|
||||
content: "\e924"
|
||||
}
|
||||
|
||||
.ipartner-deveco:before {
|
||||
content: "\e925"
|
||||
}
|
||||
|
||||
.ipartner-wilddog:before {
|
||||
content: "\e926"
|
||||
}
|
||||
|
||||
.ipartner-xitu:before {
|
||||
content: "\e927"
|
||||
}
|
||||
|
||||
.ipartner-36kr:before {
|
||||
content: "\e928"
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: icomoon;
|
||||
src: url(./fonts/icomoon.eot?wcusdg);
|
||||
src: url(./fonts/icomoon.eot?wcusdg#iefix) format("embedded-opentype"), url(./fonts/icomoon.ttf?wcusdg) format("truetype"), url(./fonts/icomoon.woff?wcusdg) format("woff"), url(./fonts/icomoon.svg?wcusdg#icomoon) format("svg");
|
||||
font-weight: 400;
|
||||
font-style: normal
|
||||
}
|
||||
|
||||
[class*=" icon-"], [class^=icon-] {
|
||||
font-family: icomoon!important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale
|
||||
}
|
||||
|
||||
.icon-cake:before {
|
||||
content: "\e900"
|
||||
}
|
||||
|
||||
.icon-weibo:before {
|
||||
content: "\e600"
|
||||
}
|
||||
|
||||
.icon-wechat:before {
|
||||
content: "\e601"
|
||||
}
|
||||
|
||||
.icon-firim:before {
|
||||
content: "\e602"
|
||||
}
|
||||
|
||||
.icon-bug:before {
|
||||
content: "\e603"
|
||||
}
|
||||
|
||||
.icon-ion:before {
|
||||
content: "\e604"
|
||||
}
|
||||
|
||||
.icon-angle-right:before {
|
||||
content: "\e606"
|
||||
}
|
||||
|
||||
.icon-cloud-download:before {
|
||||
content: "\e607"
|
||||
}
|
||||
|
||||
.icon-question:before {
|
||||
content: "\e608"
|
||||
}
|
||||
|
||||
.icon-optimize-upload:before {
|
||||
content: "\e609"
|
||||
}
|
||||
|
||||
.icon-console:before {
|
||||
content: "\e60a"
|
||||
}
|
||||
|
||||
.icon-microscope:before {
|
||||
content: "\e60b"
|
||||
}
|
||||
|
||||
.icon-user-access:before {
|
||||
content: "\e60c"
|
||||
}
|
||||
|
||||
.icon-logo-jiecao:before {
|
||||
content: "\e60d"
|
||||
}
|
||||
|
||||
.icon-m:before {
|
||||
content: "\e60e"
|
||||
}
|
||||
|
||||
.icon-f:before {
|
||||
content: "\e60f"
|
||||
}
|
||||
|
||||
.icon-plugin:before {
|
||||
content: "\e610"
|
||||
}
|
||||
|
||||
.icon-launch:before {
|
||||
content: "\e611"
|
||||
}
|
||||
|
||||
.icon-brace-left:before {
|
||||
content: "\e613"
|
||||
}
|
||||
|
||||
.icon-logo:before {
|
||||
content: "\e620"
|
||||
}
|
||||
|
||||
.icon-thumbsup:before {
|
||||
content: "\e615"
|
||||
}
|
||||
|
||||
.icon-webhooks:before {
|
||||
content: "\e616"
|
||||
}
|
||||
|
||||
.icon-brace-right:before {
|
||||
content: "\e617"
|
||||
}
|
||||
|
||||
.icon-comma-eye:before {
|
||||
content: "\e618"
|
||||
}
|
||||
|
||||
.icon-mouth:before {
|
||||
content: "\e619"
|
||||
}
|
||||
|
||||
.icon-brace-hor:before {
|
||||
content: "\e61a"
|
||||
}
|
||||
|
||||
.icon-brace-right-b:before {
|
||||
content: "\e61b"
|
||||
}
|
||||
|
||||
.icon-brace-left-b:before {
|
||||
content: "\e61c"
|
||||
}
|
||||
|
||||
.icon-brace-box:before {
|
||||
content: "\e61d"
|
||||
}
|
||||
|
||||
.icon-menu:before {
|
||||
content: "\e61e"
|
||||
}
|
||||
|
||||
.icon-app:before {
|
||||
content: "\e61f"
|
||||
}
|
||||
|
||||
.icon-box:before {
|
||||
content: "\e620"
|
||||
}
|
||||
|
||||
.icon-combo:before {
|
||||
content: "\e621"
|
||||
}
|
||||
|
||||
.icon-device:before {
|
||||
content: "\e622"
|
||||
}
|
||||
|
||||
.icon-face:before {
|
||||
content: "\e623"
|
||||
}
|
||||
|
||||
.icon-file:before {
|
||||
content: "\e624"
|
||||
}
|
||||
|
||||
.icon-msg:before {
|
||||
content: "\e625"
|
||||
}
|
||||
|
||||
.icon-pen:before {
|
||||
content: "\e626"
|
||||
}
|
||||
|
||||
.icon-ipa:before {
|
||||
content: "\e627"
|
||||
}
|
||||
|
||||
.icon-lock2:before {
|
||||
content: "\e628"
|
||||
}
|
||||
|
||||
.icon-qrcode:before {
|
||||
content: "\e629"
|
||||
}
|
||||
|
||||
.icon-rollback:before {
|
||||
content: "\e62a"
|
||||
}
|
||||
|
||||
.icon-eye:before {
|
||||
content: "\e62b"
|
||||
}
|
||||
|
||||
.icon-plus:before {
|
||||
content: "\e62c"
|
||||
}
|
||||
|
||||
.icon-chart:before {
|
||||
content: "\e62d"
|
||||
}
|
||||
|
||||
.icon-idea:before {
|
||||
content: "\e62e"
|
||||
}
|
||||
|
||||
.icon-owner:before {
|
||||
content: "\e62f"
|
||||
}
|
||||
|
||||
.icon-search:before {
|
||||
content: "\e630"
|
||||
}
|
||||
|
||||
.icon-studio:before {
|
||||
content: "\e631"
|
||||
}
|
||||
|
||||
.icon-upload-cloud2:before {
|
||||
content: "\e632"
|
||||
}
|
||||
|
||||
.icon-android:before {
|
||||
content: "\e633"
|
||||
}
|
||||
|
||||
.icon-trash:before {
|
||||
content: "\e634"
|
||||
}
|
||||
|
||||
.icon-attachment:before {
|
||||
content: "\e635"
|
||||
}
|
||||
|
||||
.icon-apple:before {
|
||||
content: "\e636"
|
||||
}
|
||||
|
||||
.icon-calendar:before {
|
||||
content: "\e637"
|
||||
}
|
||||
|
||||
.icon-calendar2:before {
|
||||
content: "\e638"
|
||||
}
|
||||
|
||||
.icon-eye-close:before {
|
||||
content: "\e639"
|
||||
}
|
||||
|
||||
.icon-reply:before {
|
||||
content: "\e63a"
|
||||
}
|
||||
|
||||
.icon-email:before {
|
||||
content: "\e63b"
|
||||
}
|
||||
|
||||
.icon-error2:before {
|
||||
content: "\e63c"
|
||||
}
|
||||
|
||||
.icon-cross:before {
|
||||
content: "\e63d"
|
||||
}
|
||||
|
||||
.icon-user-plus:before {
|
||||
content: "\e63e"
|
||||
}
|
||||
|
||||
.icon-ios:before {
|
||||
content: "\e63f"
|
||||
}
|
||||
|
||||
.icon-filter:before {
|
||||
content: "\e640"
|
||||
}
|
||||
|
||||
.icon-test-speed:before {
|
||||
content: "\e641"
|
||||
}
|
||||
|
||||
.icon-udid:before {
|
||||
content: "\e642"
|
||||
}
|
||||
|
||||
.icon-update:before {
|
||||
content: "\e643"
|
||||
}
|
||||
|
||||
.icon-comma:before {
|
||||
content: "\e644"
|
||||
}
|
||||
|
||||
.icon-i:before {
|
||||
content: "\e645"
|
||||
}
|
||||
|
||||
.icon-r:before {
|
||||
content: "\e646"
|
||||
}
|
||||
|
||||
.icon-f-dot:before {
|
||||
content: "\e647"
|
||||
}
|
||||
|
||||
.icon-layers:before {
|
||||
content: "\e648"
|
||||
}
|
||||
|
||||
.icon-news:before {
|
||||
content: "\e649"
|
||||
}
|
||||
|
||||
.icon-percent:before {
|
||||
content: "\e64a"
|
||||
}
|
||||
|
||||
.icon-bughd:before {
|
||||
content: "\e64b"
|
||||
}
|
||||
|
||||
.icon-incode:before {
|
||||
content: "\e64c"
|
||||
}
|
||||
|
||||
.icon-message:before {
|
||||
content: "\e64d"
|
||||
}
|
||||
|
||||
.icon-eclipse:before {
|
||||
content: "\e64e"
|
||||
}
|
||||
|
||||
.icon-turkey:before {
|
||||
content: "\e901"
|
||||
}
|
||||
|
||||
.icon-jenkins:before {
|
||||
content: "\e902"
|
||||
}
|
||||
|
||||
.icon-gradle:before {
|
||||
content: "\e903"
|
||||
}
|
||||
|
||||
.icon-statistics:before {
|
||||
content: "\e904"
|
||||
}
|
||||
|
||||
.icon-done:before {
|
||||
content: "\e905"
|
||||
}
|
||||
|
||||
.icon-qiniu:before {
|
||||
content: "\e906"
|
||||
}
|
||||
|
||||
.icon-logo-leancloud:before {
|
||||
content: "\e907"
|
||||
}
|
||||
|
||||
.icon-logo-jd:before {
|
||||
content: "\e908"
|
||||
}
|
||||
|
||||
.icon-logo-xiachufang:before {
|
||||
content: "\e909"
|
||||
}
|
||||
|
||||
.icon-logo-ebaoyang:before {
|
||||
content: "\e90a"
|
||||
}
|
||||
|
||||
.icon-logo-jumei:before {
|
||||
content: "\e90b"
|
||||
}
|
||||
|
||||
.icon-cart:before {
|
||||
content: "\e90c"
|
||||
}
|
||||
|
||||
.icon-users:before {
|
||||
content: "\e90d"
|
||||
}
|
||||
|
||||
.icon-spinner3:before {
|
||||
content: "\e97c"
|
||||
}
|
||||
|
||||
.icon-infinite:before {
|
||||
content: "\ea2f"
|
||||
}
|
||||
|
||||
.icon-spinner:before {
|
||||
content: "\f110"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,183 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
||||
<meta name="renderer" content="webkit">
|
||||
|
||||
<title>应用列表</title>
|
||||
<link rel="icon" type="image/x-icon" th:href="@{/images/favicon.ico}" />
|
||||
<link rel="stylesheet" th:href="@{/css/icons.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/bootstrap.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/manage.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/index.css}">
|
||||
|
||||
<script type="text/javascript" th:src="@{/js/jquery-1.11.0.min.js}"></script>
|
||||
</head>
|
||||
|
||||
<body class="ng-scope">
|
||||
<nav class="navbar navbar-transparent fade-out navbar-black" role="navigation">
|
||||
<div class="navbar-header"><a class="navbar-brand" href="/apps"><i class="icon-logo"></i> </a></div>
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse ng-scope" ng-controller="NavbarController">
|
||||
<div class="dropdown">
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="menu-toggle fade-out"><i class="icon-menu"></i></div>
|
||||
<div class="navbar-wrapper ng-scope">
|
||||
<div ng-controller="NavbarController" class="ng-scope">
|
||||
<div class="navbar-header-wrap">
|
||||
<div class="middle-wrapper">
|
||||
<nav>
|
||||
<h1 class="navbar-title logo">
|
||||
<i class="icon-logo"></i>
|
||||
</h1>
|
||||
<i class="icon-angle-right"></i>
|
||||
<div class="navbar-title primary-title">
|
||||
<a class="ng-binding" th:href="${baseURL} + 'apps'">我的应用</a>
|
||||
</div>
|
||||
<i class="icon-angle-right ng-hide"></i>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- ngInclude: '/templates_manage/upload_modal.html' -->
|
||||
<section data-ui-view="" class="ng-scope" style="">
|
||||
<div class="page-apps ng-scope">
|
||||
<div class="middle-wrapper">
|
||||
</div><!-- ngIf: !appsReady -->
|
||||
<div class="middle-wrapper container-fluid" ng-show="appsReady">
|
||||
<div class="apps row">
|
||||
<upload-card id="uploadCard" class="components-upload-card col-xs-4 col-sm-4 col-md-4 app-animator" >
|
||||
<div class="card text-center">
|
||||
<div class="dashed-space">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<i class="icon-upload-cloud2"></i>
|
||||
<div class="text drag-state">
|
||||
<span id="upload-progress" translate="DRAG_TO_UPLOAD" class="ng-scope">拖拽到这里上传</span>
|
||||
<span translate="DROP_TO_UPLOAD" class="ng-scope">快松手</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</upload-card>
|
||||
<div th:each="app : ${apps}" class="col-xs-4 col-sm-4 col-md-4 app-animator ng-scope">
|
||||
<div th:class="'card app ' + @{'card-' + ${app.platform}}">
|
||||
<i th:class="'type-icon ' + @{'icon-' + ${app.platform}}"></i>
|
||||
<div class="type-mark"></div>
|
||||
<a class="appicon" th:href="'/apps/' + ${app.id}" target="_blank">
|
||||
<img class="icon ng-isolate-scope" width="100" height="100" th:src="@{'/' + ${app.icon}}" />
|
||||
</a>
|
||||
<!-- ngIf: app.has_combo --><br>
|
||||
<p class="appname" th:data="@{${baseURL} + 'apps/' + ${app.id}}">
|
||||
<i class="icon-owner"></i>
|
||||
<span class="ng-binding">[[${app.name}]]</span></p>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="ng-binding">短链接:</td>
|
||||
<td><span class="ng-binding">[[${baseURL}]]s/[[${app.shortCode}]]</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ng-binding">包名:</td>
|
||||
<td>
|
||||
<span title="com.mistong.ewt360" class="ng-binding">[[${app.bundleID}]]</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ng-binding">版本:</td>
|
||||
<td>
|
||||
<span class="ng-binding">[[${app.version}]] ( Build [[${app.buildVersion}]] )</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="action">
|
||||
<a class="ng-binding" th:href="'/apps/' + ${app.id}">
|
||||
<i class="icon-pen"></i> 编辑</a>
|
||||
<a th:href="@{${baseURL}+'s/'+${app.shortCode}}" target="_blank" class="ng-binding">
|
||||
<i class="icon-eye"></i> 预览</a>
|
||||
<button class="btn btn-remove ng-scope" th:data="${app.id}">
|
||||
<i class="icon icon-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div alert-bar="" class="alert-bar ng-hide" ng-show="anyErrors">
|
||||
<div class="action" ng-click="close()"></div>
|
||||
<div class="inner">
|
||||
<p ng-bind="errors" class="ng-binding"></p>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var dashboard = document.getElementById("uploadCard")
|
||||
dashboard.addEventListener("dragover", function (e) {
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
})
|
||||
dashboard.addEventListener("dragenter", function (e) {
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
})
|
||||
dashboard.addEventListener("drop", function (e) {
|
||||
// 必须要禁用浏览器默认事件
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
var files = this.files || e.dataTransfer.files
|
||||
var file = files[0]
|
||||
//上传
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("post", "/app/upload", true);
|
||||
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
||||
// 获取上传进度
|
||||
xhr.upload.onprogress = function (event) {
|
||||
if (event.lengthComputable) {
|
||||
var percent = Math.floor(event.loaded / event.total * 100);
|
||||
var uploadText = "拖拽到这里上传"
|
||||
var uploadElement = document.getElementById("upload-progress")
|
||||
if (percent < 100) {
|
||||
uploadElement.innerText="正在上传:" + percent + "%"
|
||||
} else {
|
||||
uploadElement.innerText=uploadText
|
||||
}
|
||||
}
|
||||
};
|
||||
// 上传完成
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
window.location.href=window.location.href
|
||||
window.location.reload
|
||||
}
|
||||
}
|
||||
var fd = new FormData();
|
||||
fd.append('file', file);
|
||||
xhr.send(fd);
|
||||
})
|
||||
|
||||
$(".btn-remove").click(function () {
|
||||
var url = "/app/delete/" + $(this).attr("data");
|
||||
$.ajax({url:url,success:function(result){
|
||||
window.location.href=window.location.href
|
||||
window.location.reload
|
||||
}
|
||||
});
|
||||
});
|
||||
$(".appname").click(function () {
|
||||
window.open($(this).attr("data"))
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport"
|
||||
content="minimal-ui,width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="white">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link rel="icon" type="image/x-icon" th:href="@{/images/favicon.ico}" />
|
||||
<link rel="stylesheet" th:href="@{/css/download.css}">
|
||||
<script type="text/javascript" th:src="@{/js/qrcode.js}"></script>
|
||||
<script type="text/javascript" th:src="@{/js/jquery-1.11.0.min.js}"></script>
|
||||
<title>[[${app.name}]]</title>
|
||||
</head>
|
||||
|
||||
<body class="app">
|
||||
<div class="masklayer" id="MaskLayer" style="display:none"></div>
|
||||
<span class="pattern left">
|
||||
<img th:src="@{/images/download_pattern_left.png}" />
|
||||
</span>
|
||||
<span class="pattern right">
|
||||
<img th:src="@{/images/download_pattern_right.png}" />
|
||||
</span>
|
||||
<div class="wechat_tip_content"></div>
|
||||
<div class="out-container">
|
||||
<div class="main">
|
||||
<header itemscope="" itemtype="http://schema.org/SoftwareApplication">
|
||||
<div class="table-container">
|
||||
<div class="cell-container">
|
||||
<div class="app-brief">
|
||||
<div class="icon-container wrapper">
|
||||
<i class="icon-icon_path bg-path"></i>
|
||||
<span class="icon">
|
||||
<img th:src="@{'/' + ${app.icon}}" itemprop="image">
|
||||
</span>
|
||||
<span class="qrcode" id="qrcode" th:data="${app.currentPackage.previewURL}">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p class="release-type wrapper">内测版</p>
|
||||
|
||||
<h1 class="name wrapper">
|
||||
<span class="icon-warp">
|
||||
<i th:class="'icon-'+ ${app.platform}"></i>
|
||||
[[${app.name}]]
|
||||
</span>
|
||||
|
||||
</h1>
|
||||
<p class="scan-tips">扫描二维码下载<br>或用手机浏览器输入这个网址: <span
|
||||
class="text-black">[[${app.installPath}]]</span></p>
|
||||
<div class="release-info">
|
||||
<p>内测版 -
|
||||
<span itemprop="softwareVersion">[[${app.version}]] (Build [[${app.buildVersion}]]) -
|
||||
[[${app.currentPackage.displaySize}]]</span></p>
|
||||
<p>更新于: <span itemprop="datePublished">[[${app.currentPackage.displayTime}]]</span></p>
|
||||
</div>
|
||||
<div class="action-animate">
|
||||
<input id="installURL" th:value="${app.currentPackage.installURL}" style="display: none" />
|
||||
<div class="action-animate-text" id="install">下载安装</div>
|
||||
<div class="action-animate-active"></div>
|
||||
</div>
|
||||
<div class="action-animate">
|
||||
<input id="crtURL" th:value="${ca_path}" style="display: none"/>
|
||||
<div class="action-animate-text" id="installCRT">安装证书</div>
|
||||
<div class="action-animate-active"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<!-- Release list -->
|
||||
</div>
|
||||
</div>
|
||||
<script type="application/javascript">
|
||||
$("#install").click(function () {
|
||||
window.location.href = ($("#installURL").val())
|
||||
})
|
||||
|
||||
$("#installCRT").click(function () {
|
||||
window.open($("#crtURL").val())
|
||||
})
|
||||
|
||||
var codeData = $("#qrcode").attr("data");
|
||||
new QRCode("qrcode", {
|
||||
text: codeData,
|
||||
width: 200,
|
||||
height: 200,
|
||||
colorDark: '#000000',
|
||||
colorLight: '#ffffff',
|
||||
correctLevel: QRCode.CorrectLevel.L
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="x-ua-compatible" content="IE=edge">
|
||||
<meta name="renderer" content="webkit">
|
||||
|
||||
<title class="ng-binding">[[${package.name}]] - 应用动态</title>
|
||||
<link rel="icon" type="image/x-icon" th:href="@{/images/favicon.ico}" />
|
||||
<link rel="stylesheet" th:href="@{/css/icons.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/bootstrap.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/manage.css}">
|
||||
<link rel="stylesheet" th:href="@{/css/index.css}">
|
||||
<script type="text/javascript" th:src="@{/js/jquery-1.11.0.min.js}"></script>
|
||||
</head>
|
||||
|
||||
<body class="ng-scope">
|
||||
<nav class="navbar navbar-transparent fade-out navbar-black">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-brand" href="/apps"><i class="icon-logo"></i> </a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse ng-scope">
|
||||
<div class="dropdown">
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="menu-toggle fade-out"><i class="icon-menu"></i></div>
|
||||
<div class="navbar-wrapper ng-scope">
|
||||
<div ng-controller="NavbarController" class="ng-scope">
|
||||
<div class="navbar-header-wrap">
|
||||
<div class="middle-wrapper">
|
||||
<nav>
|
||||
<h1 class="navbar-title logo">
|
||||
<i class="icon-logo"></i>
|
||||
</h1>
|
||||
<i class="icon-angle-right"></i>
|
||||
<div class="navbar-title primary-title">
|
||||
<a class="ng-binding" href="/apps">我的应用</a>
|
||||
</div>
|
||||
<i class="icon-angle-right"></i>
|
||||
<div class="navbar-title secondary-title ng-binding"
|
||||
style="">[[${package.name}]]</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- ngInclude: '/templates_manage/upload_modal.html' -->
|
||||
<section data-ui-view="" class="ng-scope" style="">
|
||||
<div class="page-app app-activities">
|
||||
<div class="banner has-devices">
|
||||
<div class="middle-wrapper clearfix">
|
||||
<div class="pull-left icon-container appicon">
|
||||
<img th:src="'/' + ${package.icon}" width="100" height="100" class="change_icon ng-isolate-scope"/>
|
||||
</div>
|
||||
<div class="badges">
|
||||
<span tooltip-top="" tooltip="复制到剪贴板" id="js-app-short-copy-trigger"
|
||||
class="short tooltip-top ng-binding ng-isolate-scope" th:value="${package.installPath}"
|
||||
copy-trigger="">[[${package.installPath}]]</span>
|
||||
<span class="apptype ng-binding" th:if="${#strings.containsIgnoreCase(package.platform,'ios')}">iOS</span>
|
||||
<span class="apptype ng-binding" th:if="${#strings.containsIgnoreCase(package.platform,'android')}">Android</span>
|
||||
<span class="bundleid ng-binding">BundleID<b class="ng-binding"> [[${package.bundleID}]]</b></span>
|
||||
<span class="version ng-scope" th:if="${#strings.containsIgnoreCase(package.platform,'ios')}" >iOS [[${package.minVersion}]] 或者高版本</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<a class="download ng-binding"th:href="${package.installPath}" target="_blank">
|
||||
<i class="icon-eye"></i>
|
||||
预览
|
||||
</a>
|
||||
</div>
|
||||
<div class="tabs-container">
|
||||
<ul class="list-inline">
|
||||
<li>
|
||||
<a class="ng-binding"><i class="icon-file"></i> 基本信息</a></li>
|
||||
<li>
|
||||
<a class="ng-binding"><i class="icon-device"></i> 设备列表</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- uiView: -->
|
||||
<div data-ui-view="" class="ng-scope">
|
||||
<div class="page-app-activities page-tabcontent ng-scope">
|
||||
<!-- ngIf: !activitiesReady -->
|
||||
<div class="middle-wrapper" ng-show="activitiesReady">
|
||||
<ul class="list-unstyled time-line">
|
||||
<li>
|
||||
<span class="dot"></span>
|
||||
<span class="filter ng-binding">版本更新</span>
|
||||
<span class="filter version-rollback ng-scope"></span>
|
||||
</li>
|
||||
<li>
|
||||
<div class="market-app-info">
|
||||
</div>
|
||||
</li>
|
||||
<li th:each="app,appStat : ${apps}">
|
||||
<div>
|
||||
<div class="directive-view-release">
|
||||
<i class="icon-upload-cloud2"></i>
|
||||
<b class="ng-binding">[[${app.version}]] (Build [[${app.buildVersion}]])</b>
|
||||
<div class="release-metainfo ng-hide">
|
||||
<small>
|
||||
<i class="icon-calendar"></i>
|
||||
<span class="ng-binding">[[${app.displayTime}]]</span>
|
||||
</small>
|
||||
</div>
|
||||
<div class="release-metainfo">
|
||||
<small>
|
||||
<i class="icon-calendar"></i>
|
||||
<span class="ng-binding">[[${app.displayTime}]]</span></small> ·
|
||||
<small class="ng-scope">内测版</small>
|
||||
<i class="ng-hide"> · </i>
|
||||
<small class="ng-binding ng-hide"></small>
|
||||
</div>
|
||||
<div class="release-actions">
|
||||
<button class="tooltip-top download-action" tooltip="下载原文件" th:value="${app.downloadURL}">
|
||||
<i class="icon-cloud-download"></i>
|
||||
<span class="ng-binding">[[${app.displaySize}]]</span>
|
||||
</button>
|
||||
<button class="preview" th:value="${app.previewURL}">
|
||||
<i class="icon-eye"></i>
|
||||
<span class="ng-binding">预览</span>
|
||||
</button>
|
||||
<button class="ng-scope app-delete" th:data="${app.id}" th:if="${appStat.index > 0}">
|
||||
<i class="icon-trash"></i>
|
||||
<span class="ng-binding">删除</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="more ng-hide" ng-show="currentApp.releases.current_page < currentApp.releases.total_pages">
|
||||
<button ng-click="moreRelease()" class="ng-binding">显示更多版本</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<script type="application/javascript">
|
||||
$(".download-action").click(function(){
|
||||
window.open($(this).val())
|
||||
})
|
||||
|
||||
$(".preview").click(function () {
|
||||
window.open($(this).val())
|
||||
})
|
||||
|
||||
|
||||
$(".app-delete").click(function () {
|
||||
var url = "/p/delete/" + $(this).attr("data");
|
||||
$.ajax({url:url,success:function(result){
|
||||
window.location.href=window.location.href
|
||||
window.location.reload
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user