Merge pull request #535 from wknet123/master

Add JS minification process when building UI image.
This commit is contained in:
kun wang 2016-07-13 17:44:57 +08:00 committed by GitHub
commit d88afdc9c5
11 changed files with 286 additions and 203 deletions

View File

@ -46,8 +46,6 @@ services:
volumes: volumes:
- ./config/ui/app.conf:/etc/ui/app.conf - ./config/ui/app.conf:/etc/ui/app.conf
- ./config/ui/private_key.pem:/etc/ui/private_key.pem - ./config/ui/private_key.pem:/etc/ui/private_key.pem
- ../static:/go/bin/static
- ../views:/go/bin/views
depends_on: depends_on:
- log - log
logging: logging:

View File

@ -35,6 +35,9 @@ db_password = root123
#Turn on or off the self-registration feature #Turn on or off the self-registration feature
self_registration = on self_registration = on
#Turn on or off the options for production
production = on
#Number of job workers in job service, default is 3 #Number of job workers in job service, default is 3
max_job_workers = 3 max_job_workers = 3

59
Deploy/jsminify.sh Executable file
View File

@ -0,0 +1,59 @@
#!/bin/sh
set -e
echo "This shell will minify the Javascript in Harbor project."
echo "Usage: #jsminify [src] [dest]"
#prepare workspace
rm -rf $2 /tmp/harbor.app.temp.js
BASEPATH=/go/bin
#concat the js files from js include file
echo "Concat js files..."
cat $1 |while read LINE
do
if [ -n "$LINE" ]
then
TEMP="$BASEPATH""$LINE"
cat `echo "$TEMP" | sed 's/<script src=\"//g' |sed 's/\"><\/script>//g'` >> /tmp/harbor.app.temp.js
printf "\n" >> /tmp/harbor.app.temp.js
fi
done
#remove space
echo "Remove space.."
sed 's/ //g' -i /tmp/harbor.app.temp.js
#remove '//' and '/*'
echo "Remove '//'and '/*' annotation..."
sed '/^\/\//'d -i /tmp/harbor.app.temp.js
sed '/\/\*/{/\*\//d;:a;N;/\*\//d;ba};s,//.*,,' -i /tmp/harbor.app.temp.js
cat > $2 << EOF
/*
Copyright (c) 2016 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
EOF
#remove '\n'
echo "Remove CR ..."
cat /tmp/harbor.app.temp.js | tr -d '\n' >> $2
#clear workspace
rm -rf /tmp/harbor.app.temp.js
echo "Done."
exit 0

View File

@ -38,6 +38,7 @@ ldap_url = rcp.get("configuration", "ldap_url")
ldap_basedn = rcp.get("configuration", "ldap_basedn") ldap_basedn = rcp.get("configuration", "ldap_basedn")
db_password = rcp.get("configuration", "db_password") db_password = rcp.get("configuration", "db_password")
self_registration = rcp.get("configuration", "self_registration") self_registration = rcp.get("configuration", "self_registration")
production = rcp.get("configuration", "production")
customize_crt = rcp.get("configuration", "customize_crt") customize_crt = rcp.get("configuration", "customize_crt")
crt_country = rcp.get("configuration", "crt_country") crt_country = rcp.get("configuration", "crt_country")
crt_state = rcp.get("configuration", "crt_state") crt_state = rcp.get("configuration", "crt_state")
@ -98,8 +99,9 @@ render(os.path.join(templates_dir, "ui", "env"),
ldap_url=ldap_url, ldap_url=ldap_url,
ldap_basedn=ldap_basedn, ldap_basedn=ldap_basedn,
self_registration=self_registration, self_registration=self_registration,
production=production,
ui_secret=ui_secret, ui_secret=ui_secret,
verify_remote_cert=verify_remote_cert) verify_remote_cert=verify_remote_cert)
render(os.path.join(templates_dir, "ui", "app.conf"), render(os.path.join(templates_dir, "ui", "app.conf"),
ui_conf, ui_conf,

View File

@ -13,8 +13,10 @@ LDAP_URL=$ldap_url
LDAP_BASE_DN=$ldap_basedn LDAP_BASE_DN=$ldap_basedn
UI_SECRET=$ui_secret UI_SECRET=$ui_secret
SELF_REGISTRATION=$self_registration SELF_REGISTRATION=$self_registration
PRODUCTION=$production
LOG_LEVEL=debug LOG_LEVEL=debug
GODEBUG=netdns=cgo GODEBUG=netdns=cgo
EXT_ENDPOINT=$ui_url EXT_ENDPOINT=$ui_url
TOKEN_URL=http://ui TOKEN_URL=http://ui
VERIFY_REMOTE_CERT=$verify_remote_cert VERIFY_REMOTE_CERT=$verify_remote_cert
PRODUCTION=$production

View File

@ -23,10 +23,12 @@ ENV MYSQL_USR root \
COPY views /go/bin/views COPY views /go/bin/views
COPY static /go/bin/static COPY static /go/bin/static
COPY favicon.ico /go/bin/favicon.ico COPY favicon.ico /go/bin/favicon.ico
COPY Deploy/jsminify.sh /tmp/jsminify.sh
RUN chmod u+x /go/bin/harbor_ui \ RUN chmod u+x /go/bin/harbor_ui \
&& sed -i 's/TLS_CACERT/#TLS_CAERT/g' /etc/ldap/ldap.conf \ && sed -i 's/TLS_CACERT/#TLS_CAERT/g' /etc/ldap/ldap.conf \
&& sed -i '$a\TLS_REQCERT allow' /etc/ldap/ldap.conf && sed -i '$a\TLS_REQCERT allow' /etc/ldap/ldap.conf \
&& /tmp/jsminify.sh /go/bin/views/sections/script-include.htm /go/bin/static/resources/js/harbor.app.min.js
WORKDIR /go/bin/ WORKDIR /go/bin/
ENTRYPOINT ["/go/bin/harbor_ui"] ENTRYPOINT ["/go/bin/harbor_ui"]

View File

@ -21,6 +21,7 @@ type BaseController struct {
SelfRegistration bool SelfRegistration bool
IsAdmin bool IsAdmin bool
AuthMode string AuthMode string
Production bool
} }
type langType struct { type langType struct {
@ -98,6 +99,14 @@ func (b *BaseController) Prepare() {
b.AuthMode = authMode b.AuthMode = authMode
b.Data["AuthMode"] = b.AuthMode b.Data["AuthMode"] = b.AuthMode
production := os.Getenv("PRODUCTION")
if production == "on" {
b.Production = true
}
if _, err := os.Stat(filepath.Join("static", "resources", "js", "harbor.app.min.js")); os.IsNotExist(err) {
b.Production = false
}
} }
// Forward to setup layout and template for content for a page. // Forward to setup layout and template for content for a page.
@ -107,6 +116,15 @@ func (b *BaseController) Forward(title, templateName string) {
b.Data["Title"] = b.Tr(title) b.Data["Title"] = b.Tr(title)
b.LayoutSections = make(map[string]string) b.LayoutSections = make(map[string]string)
b.LayoutSections["HeaderInclude"] = filepath.Join(prefixNg, viewPath, "header-include.htm") b.LayoutSections["HeaderInclude"] = filepath.Join(prefixNg, viewPath, "header-include.htm")
if b.Production {
b.LayoutSections["HeaderScriptInclude"] = filepath.Join(prefixNg, viewPath, "script-min-include.htm")
} else {
b.LayoutSections["HeaderScriptInclude"] = filepath.Join(prefixNg, viewPath, "script-include.htm")
}
log.Debugf("Loaded HeaderScriptInclude file: %s", b.LayoutSections["HeaderScriptInclude"])
b.LayoutSections["FooterInclude"] = filepath.Join(prefixNg, viewPath, "footer-include.htm") b.LayoutSections["FooterInclude"] = filepath.Join(prefixNg, viewPath, "footer-include.htm")
b.LayoutSections["HeaderContent"] = filepath.Join(prefixNg, viewPath, "header-content.htm") b.LayoutSections["HeaderContent"] = filepath.Join(prefixNg, viewPath, "header-content.htm")
b.LayoutSections["FooterContent"] = filepath.Join(prefixNg, viewPath, "footer-content.htm") b.LayoutSections["FooterContent"] = filepath.Join(prefixNg, viewPath, "footer-content.htm")

View File

@ -16,6 +16,7 @@
<html> <html>
<head> <head>
{{.HeaderInclude}} {{.HeaderInclude}}
{{.HeaderScriptInclude}}
<title>{{.Title}}</title> <title>{{.Title}}</title>
</head> </head>
<body ng-app="harbor.app" ng-controller="CurrentUserController as vm"> <body ng-app="harbor.app" ng-controller="CurrentUserController as vm">

View File

@ -54,207 +54,10 @@
<script src="/static/resources/js/harbor.initialize.js"></script> <script src="/static/resources/js/harbor.initialize.js"></script>
<script src="/static/resources/js/harbor.data.js"></script> <script src="/static/resources/js/harbor.data.js"></script>
<script src="/static/resources/js/layout/header/header.module.js"></script>
<script src="/static/resources/js/layout/header/header.controller.js"></script>
<script src="/static/resources/js/layout/footer/footer.module.js"></script>
<script src="/static/resources/js/layout/footer/footer.controller.js"></script>
<script src="/static/resources/js/layout/navigation/navigation.module.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-header.directive.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-details.directive.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-admin-options.directive.js"></script>
<script src="/static/resources/js/layout/sign-up/sign-up.module.js"></script>
<script src="/static/resources/js/layout/sign-up/sign-up.controller.js"></script>
<script src="/static/resources/js/layout/add-new/add-new.module.js"></script>
<script src="/static/resources/js/layout/add-new/add-new.controller.js"></script>
<script src="/static/resources/js/layout/account-setting/account-setting.module.js"></script>
<script src="/static/resources/js/layout/account-setting/account-setting.controller.js"></script>
<script src="/static/resources/js/layout/forgot-password/forgot-password.module.js"></script>
<script src="/static/resources/js/layout/forgot-password/forgot-password.controller.js"></script>
<script src="/static/resources/js/layout/change-password/change-password.module.js"></script>
<script src="/static/resources/js/layout/change-password/change-password.controller.js"></script>
<script src="/static/resources/js/layout/reset-password/reset-password.module.js"></script>
<script src="/static/resources/js/layout/reset-password/reset-password.controller.js"></script>
<script src="/static/resources/js/layout/index/index.module.js"></script>
<script src="/static/resources/js/layout/index/index.controller.js"></script>
<script src="/static/resources/js/layout/dashboard/dashboard.module.js"></script>
<script src="/static/resources/js/layout/dashboard/dashboard.controller.js"></script>
<script src="/static/resources/js/layout/project/project.module.js"></script>
<script src="/static/resources/js/layout/project/project.controller.js"></script>
<script src="/static/resources/js/layout/details/details.module.js"></script>
<script src="/static/resources/js/layout/details/details.config.js"></script>
<script src="/static/resources/js/layout/details/details.controller.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.module.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.controller.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.config.js"></script>
<script src="/static/resources/js/layout/search/search.module.js"></script>
<script src="/static/resources/js/layout/search/search.controller.js"></script>
<script src="/static/resources/js/components/element-height/element-height.module.js"></script>
<script src="/static/resources/js/components/element-height/element-height.inspector.js"></script>
<script src="/static/resources/js/services/i18n/services.i18n.module.js"></script> <script src="/static/resources/js/services/i18n/services.i18n.module.js"></script>
{{ if eq .Lang "zh-CN" }}
{{ if eq .Lang "zh-CN" }}
<script src="/static/resources/js/services/i18n/locale_messages_zh-CN.js"></script> <script src="/static/resources/js/services/i18n/locale_messages_zh-CN.js"></script>
{{ else if eq .Lang "en-US"}} {{ else if eq .Lang "en-US" }}
<script src="/static/resources/js/services/i18n/locale_messages_en-US.js"></script> <script src="/static/resources/js/services/i18n/locale_messages_en-US.js"></script>
{{ end }} {{ end }}
<script src="/static/resources/js/services/i18n/services.i18n.js"></script> <script src="/static/resources/js/services/i18n/services.i18n.js"></script>
<script src="/static/resources/js/services/search/services.search.module.js"></script>
<script src="/static/resources/js/services/search/services.search.js"></script>
<script src="/static/resources/js/services/project/services.project.module.js"></script>
<script src="/static/resources/js/services/project/services.list-project.js"></script>
<script src="/static/resources/js/services/project/services.add-project.js"></script>
<script src="/static/resources/js/services/project/services.toggle-project-publicity.js"></script>
<script src="/static/resources/js/services/project/services.stat-project.js"></script>
<script src="/static/resources/js/services/user/services.user.module.js"></script>
<script src="/static/resources/js/services/user/services.current-user.js"></script>
<script src="/static/resources/js/services/user/services.sign-in.js"></script>
<script src="/static/resources/js/services/user/services.sign-up.js"></script>
<script src="/static/resources/js/services/user/services.user-exist.js"></script>
<script src="/static/resources/js/services/user/services.change-password.js"></script>
<script src="/static/resources/js/services/user/services.send-mail.js"></script>
<script src="/static/resources/js/services/user/services.reset-password.js"></script>
<script src="/static/resources/js/services/user/services.list-user.js"></script>
<script src="/static/resources/js/services/user/services.toggle-admin.js"></script>
<script src="/static/resources/js/services/user/services.delete-user.js"></script>
<script src="/static/resources/js/services/user/services.log-out.js"></script>
<script src="/static/resources/js/services/user/services.update-user.js"></script>
<script src="/static/resources/js/services/repository/services.repository.module.js"></script>
<script src="/static/resources/js/services/repository/services.list-repository.js"></script>
<script src="/static/resources/js/services/repository/services.list-tag.js"></script>
<script src="/static/resources/js/services/repository/services.list-manifest.js"></script>
<script src="/static/resources/js/services/repository/services.delete-repository.js"></script>
<script src="/static/resources/js/services/repository/services.list-top-repository.js"></script>
<script src="/static/resources/js/services/project-member/services.project-member.module.js"></script>
<script src="/static/resources/js/services/project-member/services.current-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.add-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.list-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.edit-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.delete-project-member.js"></script>
<script src="/static/resources/js/services/log/services.log.module.js"></script>
<script src="/static/resources/js/services/log/services.list-log.js"></script>
<script src="/static/resources/js/services/log/services.list-integrated-log.js"></script>
<script src="/static/resources/js/services/replication-policy/services.replication-policy.module.js"></script>
<script src="/static/resources/js/services/replication-policy/services.list-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.create-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.toggle-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.update-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-job/services.replication-job.module.js"></script>
<script src="/static/resources/js/services/replication-job/services.list-replication-job.js"></script>
<script src="/static/resources/js/services/destination/services.destination.module.js"></script>
<script src="/static/resources/js/services/destination/services.create-destination.js"></script>
<script src="/static/resources/js/services/destination/services.list-destination.js"></script>
<script src="/static/resources/js/services/destination/services.ping-destination.js"></script>
<script src="/static/resources/js/services/destination/services.update-destination.js"></script>
<script src="/static/resources/js/services/destination/services.delete-destination.js"></script>
<script src="/static/resources/js/services/destination/services.list-destination-policy.js"></script>
<script src="/static/resources/js/session/session.module.js"></script>
<script src="/static/resources/js/session/session.current-user.js"></script>
<script src="/static/resources/js/components/optional-menu/optional-menu.module.js"></script>
<script src="/static/resources/js/components/optional-menu/optional-menu.directive.js"></script>
<script src="/static/resources/js/components/modal-dialog/modal-dialog.module.js"></script>
<script src="/static/resources/js/components/modal-dialog/modal-dialog.directive.js"></script>
<script src="/static/resources/js/components/validator/validator.module.js"></script>
<script src="/static/resources/js/components/validator/validator.config.js"></script>
<script src="/static/resources/js/components/validator/password.validator.js"></script>
<script src="/static/resources/js/components/validator/confirm-password.validator.js"></script>
<script src="/static/resources/js/components/validator/user-exist.validator.js"></script>
<script src="/static/resources/js/components/validator/invalid-chars.validator.js"></script>
<script src="/static/resources/js/components/validator/project-name.validator.js"></script>
<script src="/static/resources/js/components/search/search.module.js"></script>
<script src="/static/resources/js/components/search/search.directive.js"></script>
<script src="/static/resources/js/components/search/search-input.directive.js"></script>
<script src="/static/resources/js/components/sign-in/sign-in.module.js"></script>
<script src="/static/resources/js/components/sign-in/sign-in.directive.js"></script>
<script src="/static/resources/js/components/project/project.module.js"></script>
<script src="/static/resources/js/components/project/add-project.directive.js"></script>
<script src="/static/resources/js/components/project/publicity-button.directive.js"></script>
<script src="/static/resources/js/components/details/switch-pane-projects.directive.js"></script>
<script src="/static/resources/js/components/details/retrieve-projects.directive.js"></script>
<script src="/static/resources/js/components/repository/repository.module.js"></script>
<script src="/static/resources/js/components/repository/list-repository.directive.js"></script>
<script src="/static/resources/js/components/repository/list-tag.directive.js"></script>
<script src="/static/resources/js/components/repository/popup-details.directive.js"></script>
<script src="/static/resources/js/components/repository/pull-command.directive.js"></script>
<script src="/static/resources/js/components/project-member/project-member.module.js"></script>
<script src="/static/resources/js/components/project-member/project-member.config.js"></script>
<script src="/static/resources/js/components/project-member/add-project-member.directive.js"></script>
<script src="/static/resources/js/components/project-member/switch-role.directive.js"></script>
<script src="/static/resources/js/components/project-member/list-project-member.directive.js"></script>
<script src="/static/resources/js/components/project-member/edit-project-member.directive.js"></script>
<script src="/static/resources/js/components/user/user.module.js"></script>
<script src="/static/resources/js/components/user/list-user.directive.js"></script>
<script src="/static/resources/js/components/user/toggle-admin.directive.js"></script>
<script src="/static/resources/js/components/log/log.module.js"></script>
<script src="/static/resources/js/components/log/log.config.js"></script>
<script src="/static/resources/js/components/log/list-log.directive.js"></script>
<script src="/static/resources/js/components/log/advanced-search.directive.js"></script>
<script src="/static/resources/js/components/replication/replication.module.js"></script>
<script src="/static/resources/js/components/replication/list-replication.directive.js"></script>
<script src="/static/resources/js/components/replication/create-policy.directive.js"></script>
<script src="/static/resources/js/components/system-management/system-management.module.js"></script>
<script src="/static/resources/js/components/system-management/system-management.directive.js"></script>
<script src="/static/resources/js/components/system-management/destination.directive.js"></script>
<script src="/static/resources/js/components/system-management/create-destination.directive.js"></script>
<script src="/static/resources/js/components/system-management/replication.directive.js"></script>
<script src="/static/resources/js/components/system-management/configuration.directive.js"></script>
<script src="/static/resources/js/components/summary/summary.module.js"></script>
<script src="/static/resources/js/components/summary/summary.directive.js"></script>
<script src="/static/resources/js/components/user-log/user-log.module.js"></script>
<script src="/static/resources/js/components/user-log/user-log.directive.js"></script>
<script src="/static/resources/js/components/top-repository/top-repository.module.js"></script>
<script src="/static/resources/js/components/top-repository/top-repository.directive.js"></script>
<script src="/static/resources/js/components/loading-progress/loading-progress.module.js"></script>
<script src="/static/resources/js/components/loading-progress/loading-progress.directive.js"></script>
<script src="/static/resources/js/components/inline-help/inline-help.module.js"></script>
<script src="/static/resources/js/components/inline-help/inline-help.directive.js"></script>
<script src="/static/resources/js/components/dismissable-alerts/dismissable-alerts.module.js"></script>
<script src="/static/resources/js/components/dismissable-alerts/dismissable-alerts.directive.js"></script>

View File

@ -0,0 +1,194 @@
<script src="/static/resources/js/layout/header/header.module.js"></script>
<script src="/static/resources/js/layout/header/header.controller.js"></script>
<script src="/static/resources/js/layout/footer/footer.module.js"></script>
<script src="/static/resources/js/layout/footer/footer.controller.js"></script>
<script src="/static/resources/js/layout/navigation/navigation.module.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-header.directive.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-details.directive.js"></script>
<script src="/static/resources/js/layout/navigation/navigation-admin-options.directive.js"></script>
<script src="/static/resources/js/layout/sign-up/sign-up.module.js"></script>
<script src="/static/resources/js/layout/sign-up/sign-up.controller.js"></script>
<script src="/static/resources/js/layout/add-new/add-new.module.js"></script>
<script src="/static/resources/js/layout/add-new/add-new.controller.js"></script>
<script src="/static/resources/js/layout/account-setting/account-setting.module.js"></script>
<script src="/static/resources/js/layout/account-setting/account-setting.controller.js"></script>
<script src="/static/resources/js/layout/forgot-password/forgot-password.module.js"></script>
<script src="/static/resources/js/layout/forgot-password/forgot-password.controller.js"></script>
<script src="/static/resources/js/layout/change-password/change-password.module.js"></script>
<script src="/static/resources/js/layout/change-password/change-password.controller.js"></script>
<script src="/static/resources/js/layout/reset-password/reset-password.module.js"></script>
<script src="/static/resources/js/layout/reset-password/reset-password.controller.js"></script>
<script src="/static/resources/js/layout/index/index.module.js"></script>
<script src="/static/resources/js/layout/index/index.controller.js"></script>
<script src="/static/resources/js/layout/dashboard/dashboard.module.js"></script>
<script src="/static/resources/js/layout/dashboard/dashboard.controller.js"></script>
<script src="/static/resources/js/layout/project/project.module.js"></script>
<script src="/static/resources/js/layout/project/project.controller.js"></script>
<script src="/static/resources/js/layout/details/details.module.js"></script>
<script src="/static/resources/js/layout/details/details.config.js"></script>
<script src="/static/resources/js/layout/details/details.controller.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.module.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.controller.js"></script>
<script src="/static/resources/js/layout/admin-option/admin-option.config.js"></script>
<script src="/static/resources/js/layout/search/search.module.js"></script>
<script src="/static/resources/js/layout/search/search.controller.js"></script>
<script src="/static/resources/js/components/element-height/element-height.module.js"></script>
<script src="/static/resources/js/components/element-height/element-height.inspector.js"></script>
<script src="/static/resources/js/services/search/services.search.module.js"></script>
<script src="/static/resources/js/services/search/services.search.js"></script>
<script src="/static/resources/js/services/project/services.project.module.js"></script>
<script src="/static/resources/js/services/project/services.list-project.js"></script>
<script src="/static/resources/js/services/project/services.add-project.js"></script>
<script src="/static/resources/js/services/project/services.toggle-project-publicity.js"></script>
<script src="/static/resources/js/services/project/services.stat-project.js"></script>
<script src="/static/resources/js/services/user/services.user.module.js"></script>
<script src="/static/resources/js/services/user/services.current-user.js"></script>
<script src="/static/resources/js/services/user/services.sign-in.js"></script>
<script src="/static/resources/js/services/user/services.sign-up.js"></script>
<script src="/static/resources/js/services/user/services.user-exist.js"></script>
<script src="/static/resources/js/services/user/services.change-password.js"></script>
<script src="/static/resources/js/services/user/services.send-mail.js"></script>
<script src="/static/resources/js/services/user/services.reset-password.js"></script>
<script src="/static/resources/js/services/user/services.list-user.js"></script>
<script src="/static/resources/js/services/user/services.toggle-admin.js"></script>
<script src="/static/resources/js/services/user/services.delete-user.js"></script>
<script src="/static/resources/js/services/user/services.log-out.js"></script>
<script src="/static/resources/js/services/user/services.update-user.js"></script>
<script src="/static/resources/js/services/repository/services.repository.module.js"></script>
<script src="/static/resources/js/services/repository/services.list-repository.js"></script>
<script src="/static/resources/js/services/repository/services.list-tag.js"></script>
<script src="/static/resources/js/services/repository/services.list-manifest.js"></script>
<script src="/static/resources/js/services/repository/services.delete-repository.js"></script>
<script src="/static/resources/js/services/repository/services.list-top-repository.js"></script>
<script src="/static/resources/js/services/project-member/services.project-member.module.js"></script>
<script src="/static/resources/js/services/project-member/services.current-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.add-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.list-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.edit-project-member.js"></script>
<script src="/static/resources/js/services/project-member/services.delete-project-member.js"></script>
<script src="/static/resources/js/services/log/services.log.module.js"></script>
<script src="/static/resources/js/services/log/services.list-log.js"></script>
<script src="/static/resources/js/services/log/services.list-integrated-log.js"></script>
<script src="/static/resources/js/services/replication-policy/services.replication-policy.module.js"></script>
<script src="/static/resources/js/services/replication-policy/services.list-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.create-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.toggle-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-policy/services.update-replication-policy.js"></script>
<script src="/static/resources/js/services/replication-job/services.replication-job.module.js"></script>
<script src="/static/resources/js/services/replication-job/services.list-replication-job.js"></script>
<script src="/static/resources/js/services/destination/services.destination.module.js"></script>
<script src="/static/resources/js/services/destination/services.create-destination.js"></script>
<script src="/static/resources/js/services/destination/services.list-destination.js"></script>
<script src="/static/resources/js/services/destination/services.ping-destination.js"></script>
<script src="/static/resources/js/services/destination/services.update-destination.js"></script>
<script src="/static/resources/js/services/destination/services.delete-destination.js"></script>
<script src="/static/resources/js/services/destination/services.list-destination-policy.js"></script>
<script src="/static/resources/js/session/session.module.js"></script>
<script src="/static/resources/js/session/session.current-user.js"></script>
<script src="/static/resources/js/components/optional-menu/optional-menu.module.js"></script>
<script src="/static/resources/js/components/optional-menu/optional-menu.directive.js"></script>
<script src="/static/resources/js/components/modal-dialog/modal-dialog.module.js"></script>
<script src="/static/resources/js/components/modal-dialog/modal-dialog.directive.js"></script>
<script src="/static/resources/js/components/validator/validator.module.js"></script>
<script src="/static/resources/js/components/validator/validator.config.js"></script>
<script src="/static/resources/js/components/validator/password.validator.js"></script>
<script src="/static/resources/js/components/validator/confirm-password.validator.js"></script>
<script src="/static/resources/js/components/validator/user-exist.validator.js"></script>
<script src="/static/resources/js/components/validator/invalid-chars.validator.js"></script>
<script src="/static/resources/js/components/validator/project-name.validator.js"></script>
<script src="/static/resources/js/components/search/search.module.js"></script>
<script src="/static/resources/js/components/search/search.directive.js"></script>
<script src="/static/resources/js/components/search/search-input.directive.js"></script>
<script src="/static/resources/js/components/sign-in/sign-in.module.js"></script>
<script src="/static/resources/js/components/sign-in/sign-in.directive.js"></script>
<script src="/static/resources/js/components/project/project.module.js"></script>
<script src="/static/resources/js/components/project/add-project.directive.js"></script>
<script src="/static/resources/js/components/project/publicity-button.directive.js"></script>
<script src="/static/resources/js/components/details/switch-pane-projects.directive.js"></script>
<script src="/static/resources/js/components/details/retrieve-projects.directive.js"></script>
<script src="/static/resources/js/components/repository/repository.module.js"></script>
<script src="/static/resources/js/components/repository/list-repository.directive.js"></script>
<script src="/static/resources/js/components/repository/list-tag.directive.js"></script>
<script src="/static/resources/js/components/repository/popup-details.directive.js"></script>
<script src="/static/resources/js/components/repository/pull-command.directive.js"></script>
<script src="/static/resources/js/components/project-member/project-member.module.js"></script>
<script src="/static/resources/js/components/project-member/project-member.config.js"></script>
<script src="/static/resources/js/components/project-member/add-project-member.directive.js"></script>
<script src="/static/resources/js/components/project-member/switch-role.directive.js"></script>
<script src="/static/resources/js/components/project-member/list-project-member.directive.js"></script>
<script src="/static/resources/js/components/project-member/edit-project-member.directive.js"></script>
<script src="/static/resources/js/components/user/user.module.js"></script>
<script src="/static/resources/js/components/user/list-user.directive.js"></script>
<script src="/static/resources/js/components/user/toggle-admin.directive.js"></script>
<script src="/static/resources/js/components/log/log.module.js"></script>
<script src="/static/resources/js/components/log/log.config.js"></script>
<script src="/static/resources/js/components/log/list-log.directive.js"></script>
<script src="/static/resources/js/components/log/advanced-search.directive.js"></script>
<script src="/static/resources/js/components/replication/replication.module.js"></script>
<script src="/static/resources/js/components/replication/list-replication.directive.js"></script>
<script src="/static/resources/js/components/replication/create-policy.directive.js"></script>
<script src="/static/resources/js/components/system-management/system-management.module.js"></script>
<script src="/static/resources/js/components/system-management/system-management.directive.js"></script>
<script src="/static/resources/js/components/system-management/destination.directive.js"></script>
<script src="/static/resources/js/components/system-management/create-destination.directive.js"></script>
<script src="/static/resources/js/components/system-management/replication.directive.js"></script>
<script src="/static/resources/js/components/system-management/configuration.directive.js"></script>
<script src="/static/resources/js/components/summary/summary.module.js"></script>
<script src="/static/resources/js/components/summary/summary.directive.js"></script>
<script src="/static/resources/js/components/user-log/user-log.module.js"></script>
<script src="/static/resources/js/components/user-log/user-log.directive.js"></script>
<script src="/static/resources/js/components/top-repository/top-repository.module.js"></script>
<script src="/static/resources/js/components/top-repository/top-repository.directive.js"></script>
<script src="/static/resources/js/components/loading-progress/loading-progress.module.js"></script>
<script src="/static/resources/js/components/loading-progress/loading-progress.directive.js"></script>
<script src="/static/resources/js/components/inline-help/inline-help.module.js"></script>
<script src="/static/resources/js/components/inline-help/inline-help.directive.js"></script>
<script src="/static/resources/js/components/dismissable-alerts/dismissable-alerts.module.js"></script>
<script src="/static/resources/js/components/dismissable-alerts/dismissable-alerts.directive.js"></script>

View File

@ -0,0 +1 @@
<script src="/static/resources/js/harbor.app.min.js"></script>