Merge branch 'master' into letsencrypt
This commit is contained in:
commit
5c57c62546
2
Gopkg.lock
generated
2
Gopkg.lock
generated
|
@ -11,7 +11,7 @@
|
|||
branch = "master"
|
||||
name = "code.gitea.io/sdk"
|
||||
packages = ["gitea"]
|
||||
revision = "b2308e3f700875a3642a78bd3f6e5db8ef6f974d"
|
||||
revision = "ec80752c9512cf07fc62ddc42565118183743942"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/PuerkitoBio/goquery"
|
||||
|
|
6
Makefile
6
Makefile
|
@ -55,6 +55,9 @@ else
|
|||
endif
|
||||
endif
|
||||
|
||||
# $(call strip-suffix,filename)
|
||||
strip-suffix = $(firstword $(subst ., ,$(1)))
|
||||
|
||||
.PHONY: all
|
||||
all: build
|
||||
|
||||
|
@ -301,7 +304,7 @@ public/js/index.js: $(JAVASCRIPTS)
|
|||
|
||||
.PHONY: stylesheets-check
|
||||
stylesheets-check: generate-stylesheets
|
||||
@diff=$$(git diff public/css/index.css); \
|
||||
@diff=$$(git diff public/css/*); \
|
||||
if [ -n "$$diff" ]; then \
|
||||
echo "Please run 'make generate-stylesheets' and commit the result:"; \
|
||||
echo "$${diff}"; \
|
||||
|
@ -311,6 +314,7 @@ stylesheets-check: generate-stylesheets
|
|||
.PHONY: generate-stylesheets
|
||||
generate-stylesheets:
|
||||
node_modules/.bin/lessc --clean-css public/less/index.less public/css/index.css
|
||||
$(foreach file, $(filter-out public/less/themes/_base.less, $(wildcard public/less/themes/*)),node_modules/.bin/lessc --clean-css public/less/themes/$(notdir $(file)) > public/css/theme-$(notdir $(call strip-suffix,$(file))).css;)
|
||||
|
||||
.PHONY: swagger-ui
|
||||
swagger-ui:
|
||||
|
|
|
@ -75,6 +75,8 @@ THEME_COLOR_META_TAG = `#6cc644`
|
|||
MAX_DISPLAY_FILE_SIZE = 8388608
|
||||
; Whether the email of the user should be shown in the Explore Users page
|
||||
SHOW_USER_EMAIL = true
|
||||
; Set the default theme for the Gitea install
|
||||
DEFAULT_THEME = gitea
|
||||
|
||||
[ui.admin]
|
||||
; Number of users that are displayed on one page
|
||||
|
|
|
@ -68,6 +68,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
|||
- `EXPLORE_PAGING_NUM`: **20**: Number of repositories that are shown in one explore page.
|
||||
- `ISSUE_PAGING_NUM`: **10**: Number of issues that are shown in one page (for all pages that list issues).
|
||||
- `FEED_MAX_COMMIT_NUM`: **5**: Number of maximum commits shown in one activity feed.
|
||||
- `DEFAULT_THEME`: **gitea**: \[gitea, arc-green\]: Set the default theme for the Gitea install.
|
||||
|
||||
### UI - Admin (`ui.admin`)
|
||||
|
||||
|
@ -286,6 +287,13 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
|
|||
- `MAX_GIT_DIFF_FILES`: **100**: Max number of files shown in diff view.
|
||||
- `GC_ARGS`: **\<empty\>**: Arguments for command `git gc`, e.g. `--aggressive --auto`.
|
||||
|
||||
## Git - Timeout settings (`git.timeout`)
|
||||
- `MIGRATE`: **600**: Migrate external repositories timeout seconds.
|
||||
- `MIRROR`: **300**: Mirror external repositories timeout seconds.
|
||||
- `CLONE`: **300**: Git clone from internal repositories timeout seconds.
|
||||
- `PULL`: **300**: Git pull from internal repositories timeout seconds.
|
||||
- `GC`: **60**: Git repository GC timeout seconds.
|
||||
|
||||
## API (`api`)
|
||||
|
||||
- `ENABLE_SWAGGER_ENDPOINT`: **true**: Enables /api/swagger, /api/v1/swagger etc. endpoints. True or false; default is true.
|
||||
|
|
|
@ -187,6 +187,13 @@ menu:
|
|||
- `MAX_GIT_DIFF_FILES`: 比较视图中的最大现实文件数目。
|
||||
- `GC_ARGS`: 执行 `git gc` 命令的参数, 比如: `--aggressive --auto`。
|
||||
|
||||
## Git - 超时设置 (`git.timeout`)
|
||||
- `MIGRATE`: **600**: 迁移外部仓库时的超时时间,单位秒
|
||||
- `MIRROR`: **300**: 镜像外部仓库的超时时间,单位秒
|
||||
- `CLONE`: **300**: 内部仓库间克隆的超时时间,单位秒
|
||||
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
|
||||
- `GC`: **60**: git仓库GC的超时时间,单位秒
|
||||
|
||||
## markup (`markup`)
|
||||
|
||||
外部渲染工具支持,你可以用你熟悉的文档渲染工具. 比如一下将新增一个名字为 `asciidoc` 的渲染工具which is followed `markup.` ini section. And there are some config items below.
|
||||
|
|
|
@ -91,3 +91,7 @@ Apart from `extra_links.tmpl` and `extra_tabs.tmpl`, there are other useful temp
|
|||
## Customizing gitignores, labels, licenses, locales, and readmes.
|
||||
|
||||
Place custom files in corresponding sub-folder under `custom/options`.
|
||||
|
||||
## Customizing the look of Gitea
|
||||
|
||||
Gitea has two built-in themes, the default theme `gitea`, and a dark theme `arc-green`. To change the look of your Gitea install change the value of `DEFAULT_THEME` in the [ui](https://docs.gitea.io/en-us/config-cheat-sheet/#ui-ui) section of `app.ini` to another one of the available options.
|
||||
|
|
|
@ -21,10 +21,18 @@ the destination platform from the [downloads page](https://dl.gitea.io/gitea), c
|
|||
the URL and replace the URL within the commands below:
|
||||
|
||||
```sh
|
||||
wget -O gitea https://dl.gitea.io/gitea/1.4.2/gitea-1.4.2-linux-amd64
|
||||
wget -O gitea https://dl.gitea.io/gitea/1.4.3/gitea-1.4.3-linux-amd64
|
||||
chmod +x gitea
|
||||
```
|
||||
|
||||
## Verify GPG signature
|
||||
Gitea signs all binaries with a [GPG key](https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x2D9AE806EC1592E2) to prevent against unwanted modification of binaries. To validate the binary download the signature file which ends in `.asc` for the binary you downloaded and use the gpg command line tool.
|
||||
|
||||
```sh
|
||||
gpg --keyserver pgp.mit.edu --recv 0x2D9AE806EC1592E2
|
||||
gpg --verify gitea-1.5.0-linux-amd64.asc gitea-1.5.0-linux-amd64
|
||||
```
|
||||
|
||||
## Test
|
||||
|
||||
After getting a binary, it can be tested with `./gitea web` or moved to a permanent
|
||||
|
|
50
integrations/api_token_test.go
Normal file
50
integrations/api_token_test.go
Normal file
|
@ -0,0 +1,50 @@
|
|||
// Copyright 2018 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package integrations
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
||||
// TestAPICreateAndDeleteToken tests that token that was just created can be deleted
|
||||
func TestAPICreateAndDeleteToken(t *testing.T) {
|
||||
prepareTestEnv(t)
|
||||
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User)
|
||||
|
||||
req := NewRequestWithJSON(t, "POST", "/api/v1/users/user1/tokens", map[string]string{
|
||||
"name": "test-key-1",
|
||||
})
|
||||
req = AddBasicAuthHeader(req, user.Name)
|
||||
resp := MakeRequest(t, req, http.StatusCreated)
|
||||
|
||||
var newAccessToken api.AccessToken
|
||||
DecodeJSON(t, resp, &newAccessToken)
|
||||
models.AssertExistsAndLoadBean(t, &models.AccessToken{
|
||||
ID: newAccessToken.ID,
|
||||
Name: newAccessToken.Name,
|
||||
Sha1: newAccessToken.Sha1,
|
||||
UID: user.ID,
|
||||
})
|
||||
|
||||
req = NewRequestf(t, "DELETE", "/api/v1/users/user1/tokens/%d", newAccessToken.ID)
|
||||
req = AddBasicAuthHeader(req, user.Name)
|
||||
MakeRequest(t, req, http.StatusNoContent)
|
||||
|
||||
models.AssertNotExistsBean(t, &models.AccessToken{ID: newAccessToken.ID})
|
||||
}
|
||||
|
||||
// TestAPIDeleteMissingToken ensures that error is thrown when token not found
|
||||
func TestAPIDeleteMissingToken(t *testing.T) {
|
||||
prepareTestEnv(t)
|
||||
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User)
|
||||
|
||||
req := NewRequestf(t, "DELETE", "/api/v1/users/user1/tokens/%d", models.NonexistentID)
|
||||
req = AddBasicAuthHeader(req, user.Name)
|
||||
MakeRequest(t, req, http.StatusNotFound)
|
||||
}
|
|
@ -256,6 +256,11 @@ func NewRequestWithBody(t testing.TB, method, urlStr string, body io.Reader) *ht
|
|||
return request
|
||||
}
|
||||
|
||||
func AddBasicAuthHeader(request *http.Request, username string) *http.Request {
|
||||
request.SetBasicAuth(username, userPassword)
|
||||
return request
|
||||
}
|
||||
|
||||
const NoExpectedStatus = -1
|
||||
|
||||
func MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *httptest.ResponseRecorder {
|
||||
|
|
|
@ -101,7 +101,7 @@ var (
|
|||
func (r *Renderer) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) {
|
||||
prefix := r.URLPrefix
|
||||
if r.IsWiki {
|
||||
prefix = util.URLJoin(prefix, "wiki", "src")
|
||||
prefix = util.URLJoin(prefix, "wiki", "raw")
|
||||
}
|
||||
prefix = strings.Replace(prefix, "/src/", "/raw/", 1)
|
||||
if len(link) > 0 {
|
||||
|
|
|
@ -283,6 +283,7 @@ var (
|
|||
ThemeColorMetaTag string
|
||||
MaxDisplayFileSize int64
|
||||
ShowUserEmail bool
|
||||
DefaultTheme string
|
||||
|
||||
Admin struct {
|
||||
UserPagingNum int
|
||||
|
@ -306,6 +307,7 @@ var (
|
|||
ReactionMaxUserNum: 10,
|
||||
ThemeColorMetaTag: `#6cc644`,
|
||||
MaxDisplayFileSize: 8388608,
|
||||
DefaultTheme: `gitea`,
|
||||
Admin: struct {
|
||||
UserPagingNum int
|
||||
RepoPagingNum int
|
||||
|
|
|
@ -186,6 +186,9 @@ func NewFuncMap() []template.FuncMap {
|
|||
"ParseDeadline": func(deadline string) []string {
|
||||
return strings.Split(deadline, "|")
|
||||
},
|
||||
"DefaultTheme": func() string {
|
||||
return setting.UI.DefaultTheme
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
|
|
|
@ -669,7 +669,7 @@ issues.change_milestone_at=`hat den Meilenstein %[3]s von <b>%[1]s</b> zu <b>%[2
|
|||
issues.remove_milestone_at=`hat diesen Issue %[2]s vom <b>%[1]s</b> Meilenstein entfernt`
|
||||
issues.deleted_milestone=`(gelöscht)`
|
||||
issues.self_assign_at=`hat sich das Issue %s selbst zugewiesen`
|
||||
issues.add_assignee_at=`wurde %[1]s zugewiesen von <b>%[2]s</b>`
|
||||
issues.add_assignee_at=`wurde von <b>%s</b> %s zugewiesen`
|
||||
issues.remove_assignee_at=`hat seine Zuweisung %s entfernt`
|
||||
issues.change_title_at=`Titel von <b>%s</b> nach <b>%s</b> %s geändert`
|
||||
issues.delete_branch_at=`löschte die Branch <b>%s</b> %s`
|
||||
|
|
|
@ -192,7 +192,11 @@ login_userpass=Logga in
|
|||
login_openid=OpenID
|
||||
openid_connect_submit=Anslut
|
||||
openid_connect_title=Anslut ett existerande konto
|
||||
openid_connect_desc=Vald OpenID URI är okänd. Associera den med ett nytt konto här.
|
||||
openid_register_title=Skapa nytt konto
|
||||
openid_register_desc=Vald OpenID URI är okänd. Associera den med ett nytt konto här.
|
||||
openid_signin_desc=Ange din OpenID URI. Exempelvis: https://anne.me, bob.openid.org.cn eller gnusocial.net/carry.
|
||||
disable_forgot_password_mail=Återställning av lösenord är inaktiverat. Kontakta webbplatsadministratören.
|
||||
|
||||
[mail]
|
||||
activate_account=Vänligen aktivera ditt konto
|
||||
|
@ -204,12 +208,14 @@ register_notify=Välkommen till Gitea
|
|||
[modal]
|
||||
yes=Ja
|
||||
no=Nej
|
||||
modify=Uppdatera
|
||||
|
||||
[form]
|
||||
UserName=Användarnamn
|
||||
RepoName=Utvecklingskatalogens namn
|
||||
Email=E-postadress
|
||||
Password=Lösenord
|
||||
Retype=Upprepa lösenordet
|
||||
SSHTitle=SSH-nyckelnamn
|
||||
HttpsUrl=HTTPS-URL
|
||||
PayloadUrl=Payload-URL
|
||||
|
@ -225,6 +231,9 @@ TreeName=Filsökväg
|
|||
Content=Innehåll
|
||||
|
||||
require_error=får inte vara tomt
|
||||
alpha_dash_error=` bör endast innehålla alfanumeriska tecken, bindestreck ('-') och understreck ('_').`
|
||||
alpha_dash_dot_error=` bör endast innehålla alfanumeriska tecken, bindestreck ('-'), understreck ('_') och punkter ('.').`
|
||||
git_ref_name_error=` måste vara ett för Git välformaterat referensnamn.'
|
||||
size_error=` måste vara av storleken %s`
|
||||
min_size_error=` måste innehålla minst %s tecken.`
|
||||
max_size_error=` får inte innehålla mer än %s tecken.`
|
||||
|
@ -232,7 +241,10 @@ email_error=` är inte en giltlig epostaddress.`
|
|||
url_error=Den givna URL-adressen är inte valid
|
||||
include_error=` måste innehålla texten '%s'.`
|
||||
unknown_error=Okänt fel:
|
||||
captcha_incorrect=CAPTCHA-koden är ogiltig.
|
||||
password_not_match=Lösenorden matchar inte.
|
||||
|
||||
username_been_taken=Användarnamnet är redan taget.
|
||||
repo_name_been_taken=Namnet för utvecklingskatalogen är upptaget.
|
||||
user_not_exist=Användaren finns inte.
|
||||
|
||||
|
@ -292,19 +304,43 @@ new_password=Nytt lösenord
|
|||
emails=E-postadresser
|
||||
email_desc=Din primära e-postadress kommer att användas för notifieringar och andra åtgärder.
|
||||
primary=Primär
|
||||
add_new_email=Lägg till ny mejladress
|
||||
add_new_openid=Lägg till ny OpenID URI
|
||||
add_email=Lägg till mejladress
|
||||
add_openid=Lägg till OpenID URI
|
||||
add_email_confirmation_sent=Ett bekräftelsemail har skickats till '%s'. Vänligen kontrollera din inkorg inom de närmsta %s för att slutföra bekräftelsen.
|
||||
add_email_success=Den nya mejladressen har lagts till.
|
||||
add_openid_success=Den nya OpenID-adressen har lagts till.
|
||||
keep_email_private=Göm mejladress
|
||||
keep_email_private_popup=Din mejladress kommer döljas för andra användare.
|
||||
openid_desc=OpenID låter dig delegera autentiseringen till en extern leverantör.
|
||||
|
||||
manage_ssh_keys=Hantera SSH-nycklar
|
||||
manage_gpg_keys=Hantera GPG-nycklar
|
||||
add_key=Lägg till nyckel
|
||||
ssh_desc=Dessa publika SSH nycklar är associerade med ditt konto. De motsvarande privata nycklarna tillåter full åtkomst till dina utvecklingskataloger.
|
||||
gpg_desc=Dessa publika GPG nycklar är associerade med ditt konto. Håll dina privata nycklar säkra då de tillåter att commits kan verifieras.
|
||||
ssh_helper=<strong>Behöver du hjälp?</strong> Kolla in Github's guide för att <a href="%s">skapa din egen SSH-nycklar</a> eller lösa <a href="%s">vanliga problem</a> som kan uppstå med SSH.
|
||||
gpg_helper=<strong>Behöver du hjälp?</strong> Ta en titt på Github's guide <a href="%s"> om GPG</a>.
|
||||
add_new_key=Lägg till SSH-nyckel
|
||||
add_new_gpg_key=Lägg till GPG-nyckel
|
||||
ssh_key_been_used=Denna SSH-nyckel är redan associerad med ditt konto.
|
||||
ssh_key_name_used=En SSH-nyckel med samma namn är redan associerad med ditt konto.
|
||||
gpg_key_id_used=En publik GPG-nyckel med samma ID existerar redan.
|
||||
gpg_no_key_email_found=Denna GPG-nyckel är inte brukbar med någon utav mejladresserna associerade med ditt konto.
|
||||
subkeys=Undernycklar
|
||||
key_id=Nyckel-ID
|
||||
key_name=Nyckelnamn
|
||||
key_content=Innehåll
|
||||
add_key_success=SSH-nyckel '%s' har lagts till.
|
||||
add_gpg_key_success=GPG-nyckel '%s' har lagts till.
|
||||
delete_key=Ta bort
|
||||
ssh_key_deletion=Ta bort SSH-nyckel
|
||||
gpg_key_deletion=Ta bort GPG-nyckel
|
||||
ssh_key_deletion_desc=Borttagning utav en SSH-nyckel återkallar dess åtkomst till ditt konto. Vill du fortsätta?
|
||||
gpg_key_deletion_desc=Att ta bort en GPG-nyckel kommer vederlägga tidigare verifierade commits som signerats utav den. Vill du fortsätta?
|
||||
ssh_key_deletion_success=SSH-nyckeln har blivit borttagen.
|
||||
gpg_key_deletion_success=GPG-nyckeln har blivit borttagen.
|
||||
add_on=Tillagd
|
||||
valid_until=Giltig t.om.
|
||||
valid_forever=Giltig för alltid
|
||||
|
@ -316,20 +352,46 @@ key_state_desc=Denna nyckel har använts inom dom senaste 7 dagarna
|
|||
token_state_desc=Denna token har används inom dom senaste 7 dagarna
|
||||
show_openid=Synlig på min profil
|
||||
hide_openid=Dold från min profil
|
||||
ssh_disabled=SSH är inaktiverat
|
||||
|
||||
manage_social=Hantera länkade sociala konton
|
||||
social_desc=Dessa sociala konton är länkade till ditt Gitea konto. Var god kontrollera att du känns vid samtliga då de kan användas för att logga in på ditt Gitea konto.
|
||||
unbind=Koppla från
|
||||
unbind_success=Socialt konto har frånkopplats ditt Gitea konto.
|
||||
|
||||
manage_access_token=Hantera åtkomst-tokens
|
||||
generate_new_token=Generera Nya Tokens
|
||||
tokens_desc=Dessa tokens tillåter åtkomst till ditt konto via Gitea API.
|
||||
new_token_desc=Applikationer som använder en token har full åtkomst till ditt konto.
|
||||
token_name=Tokennamn
|
||||
generate_token=Generera Token
|
||||
generate_token_success=Din nya token har genererats. Kopiera nu då den inte kommer visas igen.
|
||||
delete_token=Radera
|
||||
access_token_deletion=Ta bort åtkomst token
|
||||
access_token_deletion_desc=Borttagning utav en token kommer återkalla åtkomst till ditt konto för de applikationer som använder den. Vill du fortsätta?
|
||||
delete_token_success=Token har tagits bort. Applikationer som använder den kommer inte längre ha åtkomst till ditt konto.
|
||||
|
||||
twofa_desc=Tvåfaktorsautentisering förbättrar säkerheten på ditt konto.
|
||||
twofa_is_enrolled=Ditt konto är för närvarande <strong>uppsäkrad</strong> med tvåfaktorsautentisering.
|
||||
twofa_not_enrolled=Ditt konto är för närvarande inte uppsäkrad med tvåfaktorsautentisering.
|
||||
twofa_disable=Inaktivera tvåfaktorsautentisering
|
||||
twofa_scratch_token_regenerate=Generera ny skrapkod
|
||||
twofa_scratch_token_regenerated=Din skrapkod är nu %s. Förvara den på en säker plats.
|
||||
twofa_enroll=Aktivera tvåfaktorsautentisering
|
||||
twofa_disable_note=Du kan inaktivera tvåfaktorsautentisering om det behövs.
|
||||
twofa_disable_desc=Avaktivering av tvåfaktorsautentisering kommer göra ditt konto mindre säkert. Vill du fortsätta?
|
||||
regenerate_scratch_token_desc=Om du tappat bort din skrapkod, eller redan använt den för att logga in, så kan du återställa den här.
|
||||
twofa_disabled=Tvåfaktorsautentisering har blivit avaktiverat.
|
||||
scan_this_image=Skanna denna bild med ditt autentiseringsprogram:
|
||||
or_enter_secret=Eller skriv in följande sträng: %s
|
||||
then_enter_passcode=Och ange den lösenkod som visas i programmet:
|
||||
passcode_invalid=Koden är ogiltig. Försök igen.
|
||||
twofa_enrolled=Tvåfaktorsautentisering har aktiverats för ditt konto. Förvara din skrapkod (%s) på en säker plats eftersom den bara visas en gång!
|
||||
|
||||
u2f_desc=Säkerhetsnycklar är maskinvaruenheter som innehåller kryptografiska nycklar. De kan användas för tvåfaktorautentisering. Säkerhetsnyckeln måste dock stödja <a href="https://fidoalliance.org/">FIDO U2F</a> standarden.
|
||||
u2f_require_twofa=Tvåfaktorautentisering måste aktiveras för att kunna använda säkerhetsnycklar.
|
||||
u2f_register_key=Lägg till säkerhetsnyckel
|
||||
u2f_nickname=Smeknamn
|
||||
|
||||
|
||||
orgs_none=Du är inte en medlem i någon organisation.
|
||||
|
@ -342,8 +404,13 @@ confirm_delete_account=Bekräfta Borttagelsen
|
|||
owner=Ägare
|
||||
repo_name=Utvecklingskatalogens namn
|
||||
visibility=Synligt för
|
||||
visibility_helper=Gör utvecklingskatalogen privat
|
||||
visibility_helper_forced=Din tjänstadministratör påtvingar privata utvecklingskataloger.
|
||||
visibility_fork_helper=(Ändring av detta kommer påverka alla forkar.)
|
||||
clone_helper=Hjälp med kloning? Se <a target="_blank" rel="noopener" href="%s">hjälp</a>.
|
||||
fork_repo=Forka Repo
|
||||
fork_from=Forka Från
|
||||
fork_visibility_helper=Synligheten av en forkad utvecklingskatalog kan inte ändras.
|
||||
repo_desc=Beskrivning
|
||||
repo_lang=Språk
|
||||
license=Licens
|
||||
|
@ -402,30 +469,50 @@ file_permalink=Permalänk
|
|||
stored_lfs=Sparad med Git LFS
|
||||
|
||||
editor.preview_changes=Förhandsgranska ändringar
|
||||
editor.fork_before_edit=Du måste forka denna utvecklingskatalog för att göra eller föreslå förändringar på denna fil.
|
||||
editor.delete_this_file=Ta bort fil
|
||||
editor.must_have_write_access=Du måste ha skrivåtkomst för att göra eller föreslå ändringar av denna fil.
|
||||
editor.file_delete_success=Fil '%s' har tagits bort.
|
||||
editor.name_your_file=Namnge din fil…
|
||||
editor.filename_help=Lägg till en katalog genom att skriva dess namn följt utav en slash ('/'). Ta bort katalog genom att sudda i början utav fältet.
|
||||
editor.or=eller
|
||||
editor.cancel_lower=Avbryt
|
||||
editor.commit_changes=Checka in ändringar
|
||||
editor.add_tmpl=Lägg till '%s/<filename>'
|
||||
editor.add=Lägg till '%s'
|
||||
editor.update=Uppdatera '%s'
|
||||
editor.delete=Tag bort '%s'
|
||||
editor.commit_message_desc=Lägg till en valfri utökad beskrivning…
|
||||
editor.commit_directly_to_this_branch=Checka in direkt till grenen <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Skapa en <strong>ny gren</strong> för denna incheckning och påbörja en hämtningsbegäran.
|
||||
editor.new_branch_name_desc=Nytt branchnamn…
|
||||
editor.cancel=Avbryt
|
||||
editor.filename_cannot_be_empty=Filnamnet kan inte vara tomt.
|
||||
editor.branch_already_exists=Grenen '%s' finns redan i förrådet.
|
||||
editor.directory_is_a_file=Katalognamnet '%s' används redan som ett filnamn i denna utvecklingskatalog.
|
||||
editor.file_is_a_symlink='%s' är en symbolisk länk. Symboliska länkar kan inte editeras i webbgränssnittet
|
||||
editor.no_changes_to_show=Det finns inga ändringar att visa.
|
||||
editor.fail_to_update_file=Uppdateringen/skapandet av filen '%s' misslyckades med felet: %v
|
||||
editor.add_subdir=Lägga till en katalog…
|
||||
editor.unable_to_upload_files=Uppladdning av filen '%s' misslyckades med felet: %v
|
||||
editor.upload_files_to_dir=Ladda upp filer till '%s'
|
||||
editor.cannot_commit_to_protected_branch=Kan inte commita till den skyddade branchen '%s'.
|
||||
|
||||
commits.desc=Bläddra i källkodens förändringshistorik.
|
||||
commits.commits=Incheckningar
|
||||
commits.search=Sök commits…
|
||||
commits.find=Sök
|
||||
commits.search_all=Alla brancher
|
||||
commits.author=Upphovsman
|
||||
commits.message=Meddelande
|
||||
commits.date=Datum
|
||||
commits.older=Äldre
|
||||
commits.newer=Nyare
|
||||
commits.signed_by=Signerad av
|
||||
commits.gpg_key_id=GPG-nyckel ID
|
||||
|
||||
ext_issues=Externa ärenden
|
||||
ext_issues.desc=Länk till externt ärendehanteringssystem.
|
||||
|
||||
issues.new=Nytt Ärende
|
||||
issues.new.labels=Etiketter
|
||||
|
@ -436,6 +523,8 @@ issues.new.no_milestone=Ingen Milsten
|
|||
issues.new.clear_milestone=Rensa milstenar
|
||||
issues.new.open_milestone=Öppna Milstenar
|
||||
issues.new.closed_milestone=Stängda Milstenar
|
||||
issues.new.assignees=Tilldelade
|
||||
issues.new.clear_assignees=Rensa tilldelade
|
||||
issues.new.no_assignees=Ingen tilldelad
|
||||
issues.no_ref=Ingen branch/Tag specificerad
|
||||
issues.create=Skapa Ärende
|
||||
|
@ -444,7 +533,9 @@ issues.new_label_placeholder=Etikettsnamn
|
|||
issues.new_label_desc_placeholder=Beskrivning
|
||||
issues.create_label=Skapa Etikett
|
||||
issues.label_templates.title=Ladda en fördefinierad uppsättning etiketter
|
||||
issues.label_templates.info=Inga etiketter finns ännu. Skapa en etikett med 'Ny etikett' eller använd fördefinierade etiketter:
|
||||
issues.label_templates.helper=Markera en uppsättning etiketter
|
||||
issues.label_templates.use=Använd etikettsamling
|
||||
issues.label_templates.fail_to_load_file=Laddning av etikettmallen '%s' misslyckades: %v
|
||||
issues.add_label_at=lade till etiketten <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
|
||||
issues.remove_label_at=tog bort etiketten <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
|
||||
|
@ -460,8 +551,11 @@ issues.delete_branch_at='tog bort grenen <b>%s</b> %s'
|
|||
issues.open_tab=%d Öppna
|
||||
issues.close_tab=%d Stängda
|
||||
issues.filter_label=Etikett
|
||||
issues.filter_label_no_select=Alla etiketter
|
||||
issues.filter_milestone=Milsten
|
||||
issues.filter_milestone_no_select=Alla milstolpar
|
||||
issues.filter_assignee=Förvärvare
|
||||
issues.filter_assginee_no_select=Alla tilldelade
|
||||
issues.filter_type=Typ
|
||||
issues.filter_type.all_issues=Alla ärenden
|
||||
issues.filter_type.assigned_to_you=Tilldelad dig
|
||||
|
@ -686,14 +780,44 @@ settings.external_tracker_url=URL För Extern Ärendehanterare
|
|||
settings.external_tracker_url_error=Länken för ärendehanteringsystemet är inte en giltig länk.
|
||||
settings.external_tracker_url_desc=Besökare dirigeras om till länken för det externa ärendehanteringssystemet när de trycker på ärende-tabben.
|
||||
settings.tracker_url_format=URL-Format För Extern Ärendehanterare
|
||||
settings.tracker_issue_style=Externt ärendenummersformat
|
||||
settings.tracker_issue_style.numeric=Numerisk
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerisk
|
||||
settings.enable_timetracker=Aktivera tidsredovisning
|
||||
settings.admin_settings=Administratörsinställningar
|
||||
settings.admin_enable_health_check=Aktivera hälsokontroll för utvecklingskataloger (git fsck)
|
||||
settings.danger_zone=Högrisksområde
|
||||
settings.new_owner_has_same_repo=Den nya ägaren har redan ett repo med det namnet. Vänligen välj ett annat namn.
|
||||
settings.convert=Konvertera till vanlig utvecklingskatalog
|
||||
settings.convert_desc=Du kan konvertera denna spegling till en vanlig utvecklingskatalog. Detta kan ej ångras.
|
||||
settings.convert_confirm=Konvertera utvecklingskatalog
|
||||
settings.convert_succeed=Speglingen har blivit konverterad till en vanlig utvecklingskatalog.
|
||||
settings.transfer=Överför Ägarskap
|
||||
settings.wiki_delete=Ta bort wiki-data
|
||||
settings.wiki_delete_desc=Borttagning av utvecklingskatalogens wiki-data är permanent och kan ej ångras.
|
||||
settings.wiki_delete_notices_1=- Detta kommer permanent ta bort och inaktivera utvecklingskatalogens wiki för %s.
|
||||
settings.confirm_wiki_delete=Ta bort wiki-data
|
||||
settings.wiki_deletion_success=Utvecklingskatalogens wiki-data har blivit borttaget.
|
||||
settings.delete=Ta Bort Detta Repo
|
||||
settings.delete_desc=Borttagning av en utvecklingskatalog är permanent och kan ej ångras.
|
||||
settings.delete_notices_1=- Denna åtgärd kan <strong>INTE</strong> ångras.
|
||||
settings.delete_notices_2=- Denna åtgärd kommer permanent ta bort utvecklingskatalogen <strong>%s</strong> inklusive kod, ärenden, kommentarer, wiki-data samt medarbetarinställningar.
|
||||
settings.delete_notices_fork_1=- Forkar av denna utvecklingskatalog kommer bli självständiga efter borttagning.
|
||||
settings.deletion_success=Utvecklingskatalog har tagits bort.
|
||||
settings.update_settings_success=Inställningar för utvecklingskatalog har uppdaterats.
|
||||
settings.transfer_owner=Ny Ägare
|
||||
settings.make_transfer=Utför förflyttning
|
||||
settings.transfer_succeed=Utvecklingskatalogen har flyttats över.
|
||||
settings.confirm_delete=Ta bort utvecklingskatalog
|
||||
settings.add_collaborator=Lägg till medarbetare
|
||||
settings.add_collaborator_success=Medarbetare har lagts till.
|
||||
settings.delete_collaborator=Ta bort
|
||||
settings.collaborator_deletion=Ta bort medarbetare
|
||||
settings.collaborator_deletion_desc=Borttagning av en medarbetare kommer att återkalla deras åtkomst till utvecklingskatalogen. Vill du fortsätta?
|
||||
settings.remove_collaborator_success=Medarbetaren har blivit borttagen.
|
||||
settings.search_user_placeholder=Sök användare…
|
||||
settings.org_not_allowed_to_be_collaborator=Organisationer kan inte läggas till som en medarbetare.
|
||||
settings.user_is_org_member=Användaren är en organisationsmedlem som inte kan läggas till som medarbetare.
|
||||
settings.add_webhook=Lägg Till Webbhook
|
||||
settings.webhook.test_delivery=Testa Leverans
|
||||
settings.webhook.request=Begäran
|
||||
|
|
|
@ -75,6 +75,7 @@ cancel=取消
|
|||
[install]
|
||||
install=安装页面
|
||||
title=初始配置
|
||||
docker_helper=如果您正在使用 Docker 容器运行 Gitea,请务必先仔细阅读 <a target="_blank" rel="noopener noreferrer" href="%s">官方文档</a> 后再对本页面进行填写。
|
||||
requite_db_desc=Gitea 要求安装 MySQL、PostgreSQL、SQLite3 或 TiDB。
|
||||
db_title=数据库设置
|
||||
db_type=数据库类型
|
||||
|
@ -491,8 +492,13 @@ owner=拥有者
|
|||
repo_name=仓库名称
|
||||
repo_name_helper=好的存储库名称使用简短、深刻和独特的关键字。
|
||||
visibility=可见性
|
||||
visibility_helper=将仓库设为私有
|
||||
visibility_helper_forced=站点管理员强制要求新仓库为私有。
|
||||
visibility_fork_helper=(修改该值将会影响到所有派生仓库)
|
||||
clone_helper=不知道如何克隆?查看<a target="_blank" rel="noopener noreferrer" href="%s">帮助</a> 。
|
||||
fork_repo=派生仓库
|
||||
fork_from=派生自
|
||||
fork_visibility_helper=无法更改派生仓库的可见性。
|
||||
repo_desc=仓库描述
|
||||
repo_lang=仓库语言
|
||||
repo_gitignore_helper=选择 .gitignore 模板。
|
||||
|
@ -607,6 +613,7 @@ editor.directory_is_a_file='%s' 已经作为文件名在此仓库中存在。
|
|||
editor.file_is_a_symlink='%s' 是一个符号链接,无法在线编辑。
|
||||
editor.filename_is_a_directory='%s' 已经作为目录名在此仓库中存在。
|
||||
editor.file_editing_no_longer_exists=正在编辑的文件 '%s' 已不存在。
|
||||
editor.file_changed_while_editing=文件内容在您进行编辑时已经发生变动。<a target="_blank" rel="noopener noreferrer" href="%s">单击此处</a> 查看变动的具体内容,或者 <strong>再次提交</strong> 覆盖已发生的变动。
|
||||
editor.file_already_exists=此仓库已经存在名为 '%s' 的文件。
|
||||
editor.no_changes_to_show=没有可以显示的变更。
|
||||
editor.fail_to_update_file=更新/创建文件 '%s' 时发生错误:%v
|
||||
|
@ -987,6 +994,7 @@ settings.search_user_placeholder=搜索用户...
|
|||
settings.org_not_allowed_to_be_collaborator=组织不允许被添加为仓库协作者!
|
||||
settings.user_is_org_member=被操作的用户是组织,因此无法添加为协作者!
|
||||
settings.add_webhook=添加 Web 钩子
|
||||
settings.hooks_desc=当Gitea事件发生时,Web钩子自动发出HTTP POST请求。在 <a target="_blank" rel="noopener noreferrer" href="%s"> 指南</a> 中阅读更多内容。
|
||||
settings.webhook_deletion=删除 Web 钩子
|
||||
settings.webhook_deletion_desc=删除 web钩子 将删除其设置和历史记录。继续?
|
||||
settings.webhook_deletion_success=Web 钩子删除成功!
|
||||
|
@ -1003,6 +1011,7 @@ settings.githook_edit_desc=如果钩子未启动,则会显示样例文件中
|
|||
settings.githook_name=钩子名称
|
||||
settings.githook_content=钩子文本
|
||||
settings.update_githook=更新钩子设置
|
||||
settings.add_webhook_desc=Gitea 将向目标 URL 发送具有指定内容类型的 <code>POST</code> 请求。在 <a target="_blank" rel="noopener noreferrer" href="%s">webhooks 指南</a> 中阅读更多内容。
|
||||
settings.payload_url=目标 URL
|
||||
settings.content_type=POST Content Type
|
||||
settings.secret=密钥文本
|
||||
|
@ -1264,6 +1273,8 @@ dashboard.operation_switch=开关
|
|||
dashboard.operation_run=执行
|
||||
dashboard.clean_unbind_oauth=清理未绑定的 OAuth 连接
|
||||
dashboard.clean_unbind_oauth_success=所有未绑定的 OAuth 连接已被删除。
|
||||
dashboard.delete_inactivate_accounts=删除所有未激活的帐户
|
||||
dashboard.delete_inactivate_accounts_success=所有未激活的帐户都已删除。
|
||||
dashboard.delete_repo_archives=删除所有仓库存档
|
||||
dashboard.delete_repo_archives_success=所有仓库存档清除成功!
|
||||
dashboard.delete_missing_repos=删除所有丢失 Git 文件的仓库
|
||||
|
|
148
package-lock.json
generated
148
package-lock.json
generated
|
@ -43,7 +43,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"tweetnacl": "0.14.5"
|
||||
"tweetnacl": "^0.14.3"
|
||||
}
|
||||
},
|
||||
"caseless": {
|
||||
|
@ -59,8 +59,8 @@
|
|||
"integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "2.8.1",
|
||||
"source-map": "0.4.4"
|
||||
"commander": "2.8.x",
|
||||
"source-map": "0.4.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
|
@ -69,7 +69,7 @@
|
|||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
"amdefine": ">=0.0.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -87,7 +87,7 @@
|
|||
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"delayed-stream": "1.0.0"
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
|
@ -96,7 +96,7 @@
|
|||
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-readlink": "1.0.1"
|
||||
"graceful-readlink": ">= 1.0.0"
|
||||
}
|
||||
},
|
||||
"core-util-is": {
|
||||
|
@ -113,7 +113,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
"assert-plus": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"assert-plus": {
|
||||
|
@ -138,7 +138,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"jsbn": "0.1.1"
|
||||
"jsbn": "~0.1.0"
|
||||
}
|
||||
},
|
||||
"errno": {
|
||||
|
@ -148,7 +148,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"prr": "1.0.1"
|
||||
"prr": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
|
@ -192,7 +192,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
"assert-plus": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"assert-plus": {
|
||||
|
@ -294,14 +294,14 @@
|
|||
"integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"errno": "0.1.7",
|
||||
"graceful-fs": "4.1.11",
|
||||
"image-size": "0.5.5",
|
||||
"mime": "1.6.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"promise": "7.3.1",
|
||||
"request": "2.85.0",
|
||||
"source-map": "0.6.1"
|
||||
"errno": "^0.1.1",
|
||||
"graceful-fs": "^4.1.2",
|
||||
"image-size": "~0.5.0",
|
||||
"mime": "^1.4.1",
|
||||
"mkdirp": "^0.5.0",
|
||||
"promise": "^7.1.1",
|
||||
"request": "^2.83.0",
|
||||
"source-map": "~0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
|
@ -311,10 +311,10 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"co": "4.6.0",
|
||||
"fast-deep-equal": "1.1.0",
|
||||
"fast-json-stable-stringify": "2.0.0",
|
||||
"json-schema-traverse": "0.3.1"
|
||||
"co": "^4.6.0",
|
||||
"fast-deep-equal": "^1.0.0",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.3.0"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
|
@ -338,7 +338,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
},
|
||||
"cryptiles": {
|
||||
|
@ -348,7 +348,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"boom": "5.2.0"
|
||||
"boom": "5.x.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"boom": {
|
||||
|
@ -358,7 +358,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -370,9 +370,9 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"asynckit": "0.4.0",
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "1.0.6",
|
||||
"mime-types": "2.1.18"
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"har-schema": {
|
||||
|
@ -389,8 +389,8 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ajv": "5.5.2",
|
||||
"har-schema": "2.0.0"
|
||||
"ajv": "^5.1.0",
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"hawk": {
|
||||
|
@ -400,10 +400,10 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"boom": "4.3.1",
|
||||
"cryptiles": "3.1.2",
|
||||
"hoek": "4.2.1",
|
||||
"sntp": "2.1.0"
|
||||
"boom": "4.x.x",
|
||||
"cryptiles": "3.x.x",
|
||||
"hoek": "4.x.x",
|
||||
"sntp": "2.x.x"
|
||||
}
|
||||
},
|
||||
"hoek": {
|
||||
|
@ -419,9 +419,9 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"jsprim": "1.4.1",
|
||||
"sshpk": "1.14.1"
|
||||
"assert-plus": "^1.0.0",
|
||||
"jsprim": "^1.2.2",
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"performance-now": {
|
||||
|
@ -445,28 +445,28 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"aws-sign2": "0.7.0",
|
||||
"aws4": "1.7.0",
|
||||
"caseless": "0.12.0",
|
||||
"combined-stream": "1.0.6",
|
||||
"extend": "3.0.1",
|
||||
"forever-agent": "0.6.1",
|
||||
"form-data": "2.3.2",
|
||||
"har-validator": "5.0.3",
|
||||
"hawk": "6.0.2",
|
||||
"http-signature": "1.2.0",
|
||||
"is-typedarray": "1.0.0",
|
||||
"isstream": "0.1.2",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"mime-types": "2.1.18",
|
||||
"oauth-sign": "0.8.2",
|
||||
"performance-now": "2.1.0",
|
||||
"qs": "6.5.2",
|
||||
"safe-buffer": "5.1.2",
|
||||
"stringstream": "0.0.5",
|
||||
"tough-cookie": "2.3.4",
|
||||
"tunnel-agent": "0.6.0",
|
||||
"uuid": "3.2.1"
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.6.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.5",
|
||||
"extend": "~3.0.1",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.1",
|
||||
"har-validator": "~5.0.3",
|
||||
"hawk": "~6.0.2",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.17",
|
||||
"oauth-sign": "~0.8.2",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.1",
|
||||
"safe-buffer": "^5.1.1",
|
||||
"stringstream": "~0.0.5",
|
||||
"tough-cookie": "~2.3.3",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.1.0"
|
||||
}
|
||||
},
|
||||
"sntp": {
|
||||
|
@ -476,7 +476,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
|
@ -494,7 +494,7 @@
|
|||
"integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"clean-css": "3.4.28"
|
||||
"clean-css": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
|
@ -516,7 +516,7 @@
|
|||
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-db": "1.33.0"
|
||||
"mime-db": "~1.33.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
|
@ -550,7 +550,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"asap": "2.0.6"
|
||||
"asap": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"prr": {
|
||||
|
@ -580,14 +580,14 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"asn1": "0.2.3",
|
||||
"assert-plus": "1.0.0",
|
||||
"bcrypt-pbkdf": "1.0.1",
|
||||
"dashdash": "1.14.1",
|
||||
"ecc-jsbn": "0.1.1",
|
||||
"getpass": "0.1.7",
|
||||
"jsbn": "0.1.1",
|
||||
"tweetnacl": "0.14.5"
|
||||
"asn1": "~0.2.3",
|
||||
"assert-plus": "^1.0.0",
|
||||
"bcrypt-pbkdf": "^1.0.0",
|
||||
"dashdash": "^1.12.0",
|
||||
"ecc-jsbn": "~0.1.1",
|
||||
"getpass": "^0.1.1",
|
||||
"jsbn": "~0.1.0",
|
||||
"tweetnacl": "~0.14.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"assert-plus": {
|
||||
|
@ -613,7 +613,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"punycode": "1.4.1"
|
||||
"punycode": "^1.4.1"
|
||||
}
|
||||
},
|
||||
"tunnel-agent": {
|
||||
|
@ -623,7 +623,7 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.2"
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
|
@ -647,9 +647,9 @@
|
|||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"assert-plus": "^1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "1.3.0"
|
||||
"extsprintf": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"assert-plus": {
|
||||
|
|
1
public/css/theme-arc-green.css
Normal file
1
public/css/theme-arc-green.css
Normal file
File diff suppressed because one or more lines are too long
3
public/less/themes/_base.less
Normal file
3
public/less/themes/_base.less
Normal file
|
@ -0,0 +1,3 @@
|
|||
// TODO: Instead of having each theme file define each
|
||||
// CSS/LESS item in this file and then overide
|
||||
// in the theme files
|
751
public/less/themes/arc-green.less
Normal file
751
public/less/themes/arc-green.less
Normal file
|
@ -0,0 +1,751 @@
|
|||
@import "_base";
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 0.5em;
|
||||
background-color: #2b2b2b !important;
|
||||
color: #bababa;
|
||||
}
|
||||
.repository.file.list .non-diff-file-content .code-view .lines-num, .repository.file.list .non-diff-file-content .code-view .lines-code ol {
|
||||
background-color: #2b2b2b !important;
|
||||
}
|
||||
.hljs-strong, .hljs-emphasis {
|
||||
color: #a8a8a2;
|
||||
}
|
||||
.hljs-bullet, .hljs-quote, .hljs-link, .hljs-number, .hljs-regexp, .hljs-literal {
|
||||
color: #6896ba;
|
||||
}
|
||||
.hljs-code, .hljs-selector-class {
|
||||
color: #a6e22e;
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
.hljs-keyword, .hljs-selector-tag, .hljs-section, .hljs-attribute, .hljs-name, .hljs-variable {
|
||||
color: #cb7832;
|
||||
}
|
||||
.hljs-params {
|
||||
color: #b9b9b9;
|
||||
}
|
||||
.hljs-string {
|
||||
color: #6a8759;
|
||||
}
|
||||
.hljs-subst, .hljs-type, .hljs-built_in, .hljs-builtin-name, .hljs-symbol, .hljs-selector-id, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-template-tag, .hljs-template-variable, .hljs-addition {
|
||||
color: #e0c46c;
|
||||
}
|
||||
.hljs-comment, .hljs-deletion, .hljs-meta {
|
||||
color: #7f7f7f;
|
||||
}
|
||||
.repository .ui.segment.sub-menu .list .item a {
|
||||
color:#dbdbdb;
|
||||
}
|
||||
.ui.horizontal.segments > .segment {
|
||||
background-color: #383c4a;
|
||||
}
|
||||
body {
|
||||
background: #383c4a;
|
||||
color: #9e9e9e;
|
||||
}
|
||||
a {
|
||||
color: #87ab63;
|
||||
}
|
||||
a:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.ui.card>.extra a:not(.ui):hover, .ui.cards>.card>.extra a:not(.ui):hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.ui.breadcrumb a:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.ui.breadcrumb a {
|
||||
color: #87ab63;
|
||||
}
|
||||
.repository .metas .ui.list a .text {
|
||||
color: #87ab63;
|
||||
}
|
||||
.repository .metas .ui.list a .text:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.repository .label.list .item a {
|
||||
color: #87ab63;
|
||||
}
|
||||
.repository .label.list .item a:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.repository .milestone.list > .item > a {
|
||||
color: #87ab63;
|
||||
}
|
||||
.repository .milestone.list > .item > a:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.repository.release #release-list {
|
||||
border-top: 1px solid #4c505c;
|
||||
}
|
||||
.repository .milestone.list > .item .operate > a {
|
||||
color: #87ab63;
|
||||
}
|
||||
.repository .milestone.list > .item .operate > a:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.ui.green.progress .bar {
|
||||
background-color: #668844;
|
||||
}
|
||||
.ui.progress.success .bar {
|
||||
background-color: #7b9e57!important;
|
||||
}
|
||||
.following.bar.light {
|
||||
background: #2e323e;
|
||||
}
|
||||
.ui.secondary.menu .active.item {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.secondary.menu .item {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.following.bar .top.menu a.item:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.repository.view.issue .comment-list .comment .content > .bottom.segment a {
|
||||
border: solid 1px #353945;
|
||||
background-color: #353945;
|
||||
}
|
||||
.following.bar.light {
|
||||
border-bottom: 1px solid #313131;
|
||||
}
|
||||
.ui.attached.header {
|
||||
background: #404552;
|
||||
border: 1px solid #404552;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.attached.table {
|
||||
border: 1px solid #304251;
|
||||
background: #304251;
|
||||
}
|
||||
.feeds .list ul li:not(:last-child) {
|
||||
border-bottom: 1px solid #333640;
|
||||
}
|
||||
.feeds .list ul li.private {
|
||||
background: #353945;
|
||||
border: 1px solid #333640;
|
||||
}
|
||||
.ui.secondary.menu .dropdown.item:hover, .ui.secondary.menu .link.item:hover, .ui.secondary.menu a.item:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.ui.menu .ui.dropdown .menu>.item {
|
||||
background: #2c303a !important;
|
||||
color: #9e9e9e !important;
|
||||
}
|
||||
.ui.secondary.menu .dropdown.item>.menu, .ui.text.menu .dropdown.item>.menu {
|
||||
border: 1px solid #434444;
|
||||
}
|
||||
footer {
|
||||
background: #2e323e;
|
||||
border-top: 1px solid #313131;
|
||||
}
|
||||
.ui.menu .dropdown.item .menu {
|
||||
background: #2c303a;
|
||||
}
|
||||
.ui.menu .ui.dropdown .menu>.item:hover, .ui.menu .ui.dropdown .menu>.selected.item {
|
||||
color: #fff!important;
|
||||
}
|
||||
.ui.dropdown .menu>.header {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.red.label, .ui.red.labels .label {
|
||||
background-color: #7d3434!important;
|
||||
border-color: #8a2121!important;
|
||||
}
|
||||
.ui.menu {
|
||||
background: #404552;
|
||||
border: 1px solid #353945;
|
||||
}
|
||||
.ui.menu .active.item:hover, .ui.vertical.menu .active.item:hover {
|
||||
color: #dbdbdb;
|
||||
background: #4B5162;
|
||||
}
|
||||
.ui.link.menu .item:hover, .ui.menu .dropdown.item:hover, .ui.menu .link.item:hover, .ui.menu a.item:hover {
|
||||
color: #dbdbdb;
|
||||
background: #454b5a;
|
||||
}
|
||||
.ui.menu .active.item {
|
||||
background: #4B5162;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.input input {
|
||||
background: #404552;
|
||||
border: 2px solid #353945;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.input input:focus, .ui.input.focus input {
|
||||
background: #404552;
|
||||
border: 2px solid #353945;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.label {
|
||||
color: #dbdbdb;
|
||||
background-color: #404552;
|
||||
}
|
||||
.issue.list > .item .title {
|
||||
color: #87ab63;
|
||||
}
|
||||
.issue.list > .item .title:hover {
|
||||
color: #a0cc75;
|
||||
}
|
||||
.issue.list > .item {
|
||||
border-bottom: 1px dashed #475767;
|
||||
}
|
||||
.ui.green.label, .ui.green.labels .label {
|
||||
background-color: #2d693b!important;
|
||||
border-color: #2d693b!important;
|
||||
}
|
||||
.issue.list > .item .comment {
|
||||
color: #129c92;
|
||||
}
|
||||
.ui.basic.button, .ui.basic.buttons .button {
|
||||
color: #797979!important;
|
||||
}
|
||||
.ui.basic.red.active.button, .ui.basic.red.buttons .active.button {
|
||||
box-shadow: 0 0 0 1px #c75252 inset!important;
|
||||
color: #c75252!important;
|
||||
}
|
||||
.ui.basic.button:focus, .ui.basic.button:hover, .ui.basic.buttons .button:focus, .ui.basic.buttons .button:hover {
|
||||
background: transparent!important;
|
||||
color: #dbdbdb!important;
|
||||
}
|
||||
.ui.menu .item {
|
||||
background: #404552;
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.menu .item.disabled, .ui.menu .item.disabled:hover {
|
||||
color: #626773;
|
||||
}
|
||||
.ui.pagination.menu .active.item {
|
||||
color: #dbdbdb;
|
||||
background-color: #609926;
|
||||
}
|
||||
.repository .header-wrapper {
|
||||
background-color: #2a2e3a;
|
||||
}
|
||||
.ui.tabular.menu .active.item {
|
||||
background: #383c4a;
|
||||
color: #dbdbdb;
|
||||
border-left: 1px solid transparent;
|
||||
border-right: 1px solid transparent;
|
||||
border-top: none;
|
||||
}
|
||||
.ui.tabular.menu .item {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.tabular.menu .item:hover {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.header, .ui.breadcrumb .divider {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.blue.label, .ui.blue.labels .label {
|
||||
background-color: #26577b!important;
|
||||
border-color: #26577b!important;
|
||||
}
|
||||
.ui.menu .item>.label {
|
||||
background: #565454;
|
||||
}
|
||||
.ui.blue.button, .ui.blue.buttons .button {
|
||||
background-color: #609926;
|
||||
}
|
||||
.ui.blue.button:hover, .ui.blue.buttons .button:hover {
|
||||
background-color: #73ad36;
|
||||
}
|
||||
.ui.form input:not([type]), .ui.form input[type=text], .ui.form input[type=email], .ui.form input[type=search], .ui.form input[type=password], .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=tel], .ui.form input[type=time], .ui.form input[type=url], .ui.form input[type=number] {
|
||||
background: #404552;
|
||||
border: 2px solid #353945;
|
||||
}
|
||||
.ui.form input:not([type]):focus, .ui.form input[type=text]:focus, .ui.form input[type=email]:focus, .ui.form input[type=search]:focus, .ui.form input[type=password]:focus, .ui.form input[type=date]:focus, .ui.form input[type=datetime-local]:focus, .ui.form input[type=tel]:focus, .ui.form input[type=time]:focus, .ui.form input[type=url]:focus, .ui.form input[type=number]:focus {
|
||||
background: #404552;
|
||||
border: 2px solid #4b505f;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.action.input:not([class*="left action"]) input:focus {
|
||||
border-right-color: #4b505f!important;
|
||||
}
|
||||
.ui.green.button, .ui.green.buttons .button {
|
||||
background-color: #609926;
|
||||
}
|
||||
.ui.green.button:hover, .ui.green.buttons .button:hover {
|
||||
background-color: #73ad36;
|
||||
}
|
||||
.ui.button {
|
||||
background: #383c4a;
|
||||
border: 1px solid #4c505c;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.labeled.button:not([class*="left labeled"])>.label, .ui[class*="left labeled"].button>.button {
|
||||
background: #404552;
|
||||
border: 1px solid #4c505c;
|
||||
color: #87ab63;
|
||||
}
|
||||
.ui.button:hover {
|
||||
background-color: #404552;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.table thead th {
|
||||
background: #404552;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.repository.file.list #repo-files-table tr:hover {
|
||||
background-color: #393d4a;
|
||||
}
|
||||
.ui.table {
|
||||
color: #a5a5a5!important;
|
||||
border: 1px solid #4c505c;
|
||||
background: #353945;
|
||||
}
|
||||
.ui.table tbody tr {
|
||||
border-bottom: 1px solid #333640;
|
||||
background: #2a2e3a;
|
||||
}
|
||||
.ui .text.grey {
|
||||
color: #808084 !important;
|
||||
}
|
||||
.ui.attached.table.segment {
|
||||
background: #353945;
|
||||
color: #dbdbdb!important;
|
||||
}
|
||||
.markdown:not(code) h2 {
|
||||
border-bottom: 1px solid #304251;
|
||||
}
|
||||
.hljs, .hljs-keyword, .hljs-selector-tag, .hljs-subst {
|
||||
color: #9daccc;
|
||||
}
|
||||
.markdown:not(code) .highlight pre, .markdown:not(code) pre {
|
||||
background-color: #2a2e3a;
|
||||
border: 1px solid #404552;
|
||||
}
|
||||
.ui.dropdown .menu {
|
||||
background: #2c303a;
|
||||
}
|
||||
.ui.dropdown .menu>.message:not(.ui) {
|
||||
color: rgb(99, 99, 99);
|
||||
}
|
||||
.ui.input {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.overflow.menu .items .item {
|
||||
color: #9d9d9d;
|
||||
}
|
||||
.overflow.menu .items .item:hover {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.segment {
|
||||
background: #353945;
|
||||
color: #9e9e9e!important;
|
||||
border: 1px solid #404552;
|
||||
}
|
||||
.ui.active.button:active, .ui.button:active, .ui.button:focus {
|
||||
background-color: #2e3e4e;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.dropdown .menu .selected.item, .ui.dropdown.selected {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.dropdown .menu>.item:hover {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.dropdown .menu>.item {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.attached.segment {
|
||||
border: 1px solid #404552;
|
||||
}
|
||||
.repository.view.issue .comment-list .comment .content > .bottom.segment {
|
||||
background: #353945;
|
||||
}
|
||||
.repository.view.issue .comment-list .comment .content .header {
|
||||
color: #dbdbdb;
|
||||
background-color: #404552;
|
||||
border-bottom: 1px solid #353944;
|
||||
}
|
||||
.ui .text.grey a {
|
||||
color: #b3b3b3 !important;
|
||||
}
|
||||
.ui.comments .comment .actions a {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.repository.view.issue .comment-list .comment .content .header:after {
|
||||
border-right-color: #404552;
|
||||
}
|
||||
.repository.new.issue .comment.form .content:after {
|
||||
border-right-color: #353945;
|
||||
}
|
||||
.repository.view.issue .comment-list .comment .content .header:before {
|
||||
border-right-color: #404552;
|
||||
}
|
||||
.repository.new.issue .comment.form .content:before {
|
||||
border-right-color: #353945;
|
||||
}
|
||||
.repository.view.issue .comment-list:before {
|
||||
background-color: #313c47;
|
||||
}
|
||||
.repository .comment.form .content .form:after {
|
||||
border-right-color: #313c47;
|
||||
}
|
||||
.repository .comment.form .content .form:before {
|
||||
border-right-color: #313c47;
|
||||
}
|
||||
.ui .text.grey a {
|
||||
color: #dbdbdb !important;
|
||||
}
|
||||
.ui .text.grey a:hover {
|
||||
color: #dbdbdb !important;
|
||||
}
|
||||
.ui.basic.green.active.button, .ui.basic.green.buttons .active.button {
|
||||
color: #13ae38!important;
|
||||
}
|
||||
.ui.form textarea, .ui.form textarea:focus {
|
||||
background: #1a2632;
|
||||
border: 1px solid #313c47;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.form textarea:focus {
|
||||
border: 1px solid #456580;
|
||||
}
|
||||
.ui .info.segment.top {
|
||||
background-color: #404552 !important;
|
||||
}
|
||||
.repository .diff-file-box .code-diff-unified tbody tr.del-code td {
|
||||
background-color: #3c2626 !important;
|
||||
border-color: #634343 !important;
|
||||
}
|
||||
.repository .diff-file-box .code-diff-unified tbody tr.add-code td {
|
||||
background-color: rgb(40, 62, 45) !important;
|
||||
border-color: #314a37 !important;
|
||||
}
|
||||
.repository .diff-file-box .code-diff tbody tr .added-code {
|
||||
background-color: #3a523a;
|
||||
}
|
||||
.repository .diff-file-box .code-diff .lines-num {
|
||||
border-right: 1px solid #2d2d2d;
|
||||
}
|
||||
.repository .diff-file-box .file-body.file-code .lines-num {
|
||||
color: #9e9e9e;
|
||||
background: #2e323e;
|
||||
}
|
||||
.repository .diff-file-box .code-diff tbody tr.tag-code td, .repository .diff-file-box .code-diff tbody tr td.tag-code {
|
||||
border-color: #2d2d2d !important;
|
||||
}
|
||||
.repository .diff-file-box .file-body.file-code .lines-num-old {
|
||||
border-right: 1px solid #2d2d2d;
|
||||
}
|
||||
.hljs-title, .hljs-section, .hljs-selector-id {
|
||||
color: #986c88;
|
||||
}
|
||||
.hljs-string, .hljs-doctag {
|
||||
color: #949494;
|
||||
}
|
||||
.repository .diff-file-box .code-diff tbody tr .removed-code {
|
||||
background-color: #5f3737;
|
||||
}
|
||||
.repository .diff-file-box .code-diff tbody tr.tag-code td, .repository .diff-file-box .code-diff tbody tr td.tag-code {
|
||||
background-color: #292727 !important;
|
||||
}
|
||||
.ui.vertical.menu .active.item {
|
||||
background: #4B5162;
|
||||
}
|
||||
.ui.vertical.menu .item {
|
||||
background: #353945;
|
||||
}
|
||||
.ui.vertical.menu .header.item {
|
||||
background: #404552;
|
||||
}
|
||||
.ui.vertical.menu {
|
||||
background: #353945;
|
||||
border: 1px solid #333640;
|
||||
}
|
||||
.ui.repository.list .item:not(:first-child) {
|
||||
border-top: 1px solid #4c505c;
|
||||
}
|
||||
.ui .text.blue {
|
||||
color: #609926 !important;
|
||||
}
|
||||
.ui.selection.active.dropdown, .ui.selection.active.dropdown .menu {
|
||||
border-color: #4e5361;
|
||||
box-shadow: 0 2px 3px 0 rgba(34,36,38,.15);
|
||||
}
|
||||
.ui.selection.active.dropdown:hover, .ui.selection.active.dropdown:hover .menu {
|
||||
border-color: #4e5361;
|
||||
box-shadow: 0 2px 3px 0 rgba(34,36,38,.15);
|
||||
}
|
||||
.ui.selection.dropdown {
|
||||
background: #404552;
|
||||
border: 1px solid rgb(64, 69, 82);
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.menu .ui.dropdown .menu>.active.item {
|
||||
color: #dbdbdb !important;
|
||||
}
|
||||
.ui.tabular.menu {
|
||||
border-bottom: 1px solid #313c47;
|
||||
}
|
||||
.ui.card, .ui.cards>.card {
|
||||
background: #353945;
|
||||
box-shadow: 0 1px 3px 0 #4c505c, 0 0 0 1px #4c505c;
|
||||
}
|
||||
.ui.card>.content>.header, .ui.cards>.card>.content>.header {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.card>.extra a:not(.ui), .ui.cards>.card>.extra a:not(.ui) {
|
||||
color: #87ab63;
|
||||
}
|
||||
.ui .text.black {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui .text.black:hover {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.secondary.segment {
|
||||
background: #353945;
|
||||
}
|
||||
.ui.secondary.pointing.menu .active.item {
|
||||
border-color: #609926;
|
||||
color: #dbdbdb;
|
||||
background: #404552;
|
||||
}
|
||||
.ui.user.list .item:not(:first-child) {
|
||||
border-top: 1px solid #4c505c;
|
||||
}
|
||||
.ui.secondary.pointing.menu .active.item:hover {
|
||||
border-color: #af8b4c;
|
||||
color: #dbdbdb;
|
||||
background: #4b5162;
|
||||
}
|
||||
.ui.secondary.pointing.menu .dropdown.item:hover, .ui.secondary.pointing.menu .link.item:hover, .ui.secondary.pointing.menu a.item:hover {
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.checkbox label, .ui.checkbox+label, .ui.form .field>label {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.form .inline.field>label, .ui.form .inline.field>p, .ui.form .inline.fields .field>label, .ui.form .inline.fields .field>p, .ui.form .inline.fields>label {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.user.settings .email.list .item:not(:first-child) {
|
||||
border-top: 1px solid #3f4451;
|
||||
}
|
||||
.explore .navbar {
|
||||
background-color: #2a2e3a!important;
|
||||
}
|
||||
.ui.menu.new-menu {
|
||||
background-color: #2a2e3a!important;
|
||||
}
|
||||
input {
|
||||
background: #2e323e;
|
||||
}
|
||||
.ui.secondary.pointing.menu .active.item {
|
||||
border: none;
|
||||
background: #383c4a;
|
||||
}
|
||||
.settings .key.list .item:not(:first-child) {
|
||||
border-top: 1px solid #404552;
|
||||
}
|
||||
.ui.form input:not([type]), .ui.form input[type=text], .ui.form input[type=email], .ui.form input[type=search], .ui.form input[type=password], .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=tel], .ui.form input[type=time], .ui.form input[type=url], .ui.form input[type=number] {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.attached.info.message, .ui.info.message {
|
||||
box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent;
|
||||
}
|
||||
.ui.info.message {
|
||||
background-color: #2c3b4a;
|
||||
color: #9ebcc5;
|
||||
}
|
||||
.ui .warning.header {
|
||||
background-color: #5d3a22 !important;
|
||||
border-color: #794f31;
|
||||
}
|
||||
.ui.red.message {
|
||||
background-color: rgba(80, 23, 17, 0.6);
|
||||
color: #f9cbcb;
|
||||
box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent;
|
||||
}
|
||||
.ui.red.button, .ui.red.buttons .button {
|
||||
background-color: #7d3434;
|
||||
}
|
||||
.ui.red.button:hover, .ui.red.buttons .button:hover {
|
||||
background-color: #984646;
|
||||
}
|
||||
.ui.checkbox label:hover, .ui.checkbox+label:hover {
|
||||
color: #dbdbdb !important;
|
||||
}
|
||||
.ui.checkbox input:checked~.box:after, .ui.checkbox input:checked~label:after {
|
||||
color: rgb(127, 152, 173);
|
||||
}
|
||||
.ui.checkbox input:checked~.box:before, .ui.checkbox input:checked~label:before {
|
||||
background: #304251;
|
||||
}
|
||||
.ui.checkbox .box:hover::before, .ui.checkbox label:hover::before {
|
||||
background: #304251;
|
||||
}
|
||||
.ui.checkbox .box:before, .ui.checkbox label:before {
|
||||
background: #304251;
|
||||
border: 1px solid #304251;
|
||||
}
|
||||
.ui.checkbox .box:active::before, .ui.checkbox label:active::before {
|
||||
background: #304251;
|
||||
border-color: rgba(34,36,38,.35);
|
||||
}
|
||||
.ui.checkbox input:checked~.box:before, .ui.checkbox input:checked~label:before {
|
||||
border-color: #304251;
|
||||
background: #304251;
|
||||
}
|
||||
.ui.checkbox input:focus~.box:before, .ui.checkbox input:focus~label:before {
|
||||
border-color: #304251;
|
||||
background: #304251;
|
||||
}
|
||||
.ui.checkbox input:checked:focus~.box:before, .ui.checkbox input:checked:focus~label:before, .ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before, .ui.checkbox input:not([type=radio]):indeterminate:focus~label:before {
|
||||
border-color: #304251;
|
||||
background: #304251;
|
||||
}
|
||||
.ui.checkbox input:checked~.box:after, .ui.checkbox input:checked~label:after {
|
||||
opacity: 1;
|
||||
color: rgb(127, 152, 173);
|
||||
}
|
||||
.ui.checkbox input:checked:focus~.box:after, .ui.checkbox input:checked:focus~label:after, .ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after, .ui.checkbox input:not([type=radio]):indeterminate:focus~label:after {
|
||||
color: rgb(127, 152, 173);
|
||||
}
|
||||
.ui.checkbox input:focus~.box:after, .ui.checkbox input:focus~label, .ui.checkbox input:focus~label:after {
|
||||
color: #9a9a9a;
|
||||
}
|
||||
.ui.selection.dropdown:hover {
|
||||
border-color: rgba(34,36,38,.35);
|
||||
border: 1px solid #456580;
|
||||
}
|
||||
.ui.selection.dropdown .menu>.item {
|
||||
border-top: 1px solid #313c47;
|
||||
}
|
||||
.ui.selection.visible.dropdown>.text:not(.default) {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.negative.message {
|
||||
background-color: rgba(80, 23, 17, 0.6);
|
||||
color: #f9cbcb;
|
||||
box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent;
|
||||
}
|
||||
.hljs-tag, .hljs-name, .hljs-attribute {
|
||||
color: #ef5e77;
|
||||
}
|
||||
.user.profile .ui.card .extra.content ul li:not(:last-child) {
|
||||
border-bottom: 1px solid #4c505c;
|
||||
}
|
||||
.ui.form textarea, .ui.form textarea:focus {
|
||||
background: #404552;
|
||||
border: 2px solid #353945;
|
||||
}
|
||||
.hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr {
|
||||
color: #bd84bf;
|
||||
}
|
||||
.hljs-string, .hljs-doctag {
|
||||
color: #8ab398;
|
||||
}
|
||||
.ui.form .dropzone {
|
||||
border: 2px dashed #4c505c;
|
||||
}
|
||||
.ui.basic.red.button, .ui.basic.red.buttons .button {
|
||||
box-shadow: 0 0 0 1px #a04141 inset!important;
|
||||
color: #a04141!important;
|
||||
}
|
||||
.ui.list .list>.item .header, .ui.list>.item .header {
|
||||
color: #dedede;
|
||||
}
|
||||
.ui.list .list>.item .description, .ui.list>.item .description {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.user.list .item .description a {
|
||||
color: #668cb1;
|
||||
}
|
||||
.repository.file.list #file-content .code-view .lines-num {
|
||||
background: #2e323e;
|
||||
}
|
||||
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory, .repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule {
|
||||
color: #7c9b5e;
|
||||
}
|
||||
.ui.blue.button:focus, .ui.blue.buttons .button:focus {
|
||||
background-color: #609926;
|
||||
}
|
||||
.ui.basic.blue.button:hover, .ui.basic.blue.buttons .button:hover {
|
||||
box-shadow: 0 0 0 1px #609926 inset!important;
|
||||
color: #609926!important;
|
||||
}
|
||||
.ui.basic.blue.button:focus, .ui.basic.blue.buttons .button:focus {
|
||||
box-shadow: 0 0 0 1px #609926 inset!important;
|
||||
color: #609926!important;
|
||||
}
|
||||
.repository.file.list #file-content .code-view .lines-num pre, .repository.file.list #file-content .code-view .lines-code pre, .repository.file.list #file-content .code-view .lines-num ol, .repository.file.list #file-content .code-view .lines-code ol, .repository.file.list #file-content .code-view .lines-num .hljs, .repository.file.list #file-content .code-view .lines-code .hljs {
|
||||
background-color: #2a2e3a;
|
||||
}
|
||||
a.ui.label:hover, a.ui.labels .label:hover {
|
||||
background-color: #505667;
|
||||
color: rgb(219, 219, 219);
|
||||
}
|
||||
.repository .label.list .item {
|
||||
border-bottom: 1px dashed #4c505c;
|
||||
}
|
||||
.repository.file.list #file-content .code-view .lines-num {
|
||||
background: #2e323e;
|
||||
}
|
||||
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory, .repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule {
|
||||
color: #7c9b5e;
|
||||
}
|
||||
.ui.basic.blue.button, .ui.basic.blue.buttons .button {
|
||||
box-shadow: 0 0 0 1px #a27558 inset !important;
|
||||
color: #a27558 !important;
|
||||
}
|
||||
.repository.file.list #file-content .code-view .lines-num pre, .repository.file.list #file-content .code-view .lines-code pre, .repository.file.list #file-content .code-view .lines-num ol, .repository.file.list #file-content .code-view .lines-code ol, .repository.file.list #file-content .code-view .lines-num .hljs, .repository.file.list #file-content .code-view .lines-code .hljs {
|
||||
background-color: #2a2e3a;
|
||||
}
|
||||
a.ui.label:hover, a.ui.labels .label:hover {
|
||||
background-color: #505667;
|
||||
color: rgb(219, 219, 219);
|
||||
}
|
||||
.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) {
|
||||
background-color: #2a2e3a;
|
||||
}
|
||||
.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), .repository .diff-file-box .code-diff-split tbody tr td.add-code {
|
||||
background-color: #283e2d !important;
|
||||
border-color: #314a37 !important;
|
||||
}
|
||||
.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), .repository .diff-file-box .code-diff-split tbody tr td.del-code {
|
||||
background-color: #3c2626 !important;
|
||||
border-color: #634343 !important;
|
||||
}
|
||||
.ui.blue.button:focus, .ui.blue.buttons .button:focus {
|
||||
background-color: #a27558;
|
||||
}
|
||||
.ui.blue.button:active, .ui.blue.buttons .button:active {
|
||||
background-color: #a27558;
|
||||
}
|
||||
#git-graph-container li a {
|
||||
color: #c79575;
|
||||
}
|
||||
#git-graph-container li .author {
|
||||
color: #c79575;
|
||||
}
|
||||
.ui.header .sub.header {
|
||||
color: #9e9e9e;
|
||||
}
|
||||
.ui.dividing.header {
|
||||
border-bottom: 1px solid #4c505c;
|
||||
}
|
||||
.ui.modal>.header {
|
||||
background: #404552;
|
||||
color: #dbdbdb;
|
||||
}
|
||||
.ui.modal>.actions {
|
||||
background: #404552;
|
||||
border-top: 1px solid #404552;
|
||||
}
|
||||
.ui.modal>.content {
|
||||
background: #383c4a;
|
||||
}
|
||||
.ui.basic.blue.button, .ui.basic.blue.buttons .button {
|
||||
box-shadow: 0 0 0 1px #609926 inset!important;
|
||||
color: #609926!important;
|
||||
}
|
37
public/swagger.v1.json
vendored
37
public/swagger.v1.json
vendored
|
@ -5441,6 +5441,39 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"/users/{username}/tokens/{token}": {
|
||||
"delete": {
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"user"
|
||||
],
|
||||
"summary": "delete an access token",
|
||||
"operationId": "userDeleteAccessToken",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "username of user",
|
||||
"name": "username",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "token to be deleted",
|
||||
"name": "token",
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"$ref": "#/responses/empty"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/version": {
|
||||
"get": {
|
||||
"produces": [
|
||||
|
@ -7479,6 +7512,10 @@
|
|||
"AccessToken": {
|
||||
"description": "AccessToken represents a API access token.",
|
||||
"headers": {
|
||||
"id": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
|
|
|
@ -302,6 +302,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
m.Group("/tokens", func() {
|
||||
m.Combo("").Get(user.ListAccessTokens).
|
||||
Post(bind(api.CreateAccessTokenOption{}), user.CreateAccessToken)
|
||||
m.Combo("/:id").Delete(user.DeleteAccessToken)
|
||||
}, reqBasicAuth())
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Copyright 2018 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
|
@ -36,6 +37,7 @@ func ListAccessTokens(ctx *context.APIContext) {
|
|||
apiTokens := make([]*api.AccessToken, len(tokens))
|
||||
for i := range tokens {
|
||||
apiTokens[i] = &api.AccessToken{
|
||||
ID: tokens[i].ID,
|
||||
Name: tokens[i].Name,
|
||||
Sha1: tokens[i].Sha1,
|
||||
}
|
||||
|
@ -72,5 +74,40 @@ func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption
|
|||
ctx.JSON(201, &api.AccessToken{
|
||||
Name: t.Name,
|
||||
Sha1: t.Sha1,
|
||||
ID: t.ID,
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteAccessToken delete access tokens
|
||||
func DeleteAccessToken(ctx *context.APIContext) {
|
||||
// swagger:operation DELETE /users/{username}/tokens/{token} user userDeleteAccessToken
|
||||
// ---
|
||||
// summary: delete an access token
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: username
|
||||
// in: path
|
||||
// description: username of user
|
||||
// type: string
|
||||
// required: true
|
||||
// - name: token
|
||||
// in: path
|
||||
// description: token to be deleted
|
||||
// type: integer
|
||||
// required: true
|
||||
// responses:
|
||||
// "204":
|
||||
// "$ref": "#/responses/empty"
|
||||
tokenID := ctx.ParamsInt64(":id")
|
||||
if err := models.DeleteAccessTokenByID(tokenID, ctx.User.ID); err != nil {
|
||||
if models.IsErrAccessTokenNotExist(err) {
|
||||
ctx.Status(404)
|
||||
} else {
|
||||
ctx.Error(500, "DeleteAccessTokenByID", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Status(204)
|
||||
}
|
||||
|
|
|
@ -127,6 +127,9 @@
|
|||
<meta property="og:url" content="{{AppUrl}}" />
|
||||
<meta property="og:description" content="{{MetaDescription}}">
|
||||
{{end}}
|
||||
{{if ne DefaultTheme "gitea"}}
|
||||
<link rel="stylesheet" href="{{AppSubUrl}}/css/theme-{{DefaultTheme}}.css">
|
||||
{{end}}
|
||||
{{template "custom/header" .}}
|
||||
</head>
|
||||
<body>
|
||||
|
|
7
vendor/code.gitea.io/sdk/gitea/user_app.go
generated
vendored
7
vendor/code.gitea.io/sdk/gitea/user_app.go
generated
vendored
|
@ -20,6 +20,7 @@ func BasicAuthEncode(user, pass string) string {
|
|||
// AccessToken represents a API access token.
|
||||
// swagger:response AccessToken
|
||||
type AccessToken struct {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Sha1 string `json:"sha1"`
|
||||
}
|
||||
|
@ -54,3 +55,9 @@ func (c *Client) CreateAccessToken(user, pass string, opt CreateAccessTokenOptio
|
|||
"Authorization": []string{"Basic " + BasicAuthEncode(user, pass)}},
|
||||
bytes.NewReader(body), t)
|
||||
}
|
||||
|
||||
// DeleteAccessToken delete token with key id
|
||||
func (c *Client) DeleteAccessToken(user string, keyID int64) error {
|
||||
_, err := c.getResponse("DELETE", fmt.Sprintf("/user/%s/tokens/%d", user, keyID), nil, nil)
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user