summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/auth/repo_form.go40
-rw-r--r--modules/auth/user_form.go1
-rw-r--r--modules/context/repo.go14
-rw-r--r--modules/setting/setting.go32
4 files changed, 61 insertions, 26 deletions
diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go
index 2071cccb41..4e9d2bff61 100644
--- a/modules/auth/repo_form.go
+++ b/modules/auth/repo_form.go
@@ -12,7 +12,7 @@ import (
"code.gitea.io/gitea/models"
"github.com/Unknwon/com"
"github.com/go-macaron/binding"
- macaron "gopkg.in/macaron.v1"
+ "gopkg.in/macaron.v1"
)
// _______________________________________ _________.______________________ _______________.___.
@@ -95,15 +95,17 @@ type RepoSettingForm struct {
EnablePrune bool
// Advanced settings
- EnableWiki bool
- EnableExternalWiki bool
- ExternalWikiURL string
- EnableIssues bool
- EnableExternalTracker bool
- ExternalTrackerURL string
- TrackerURLFormat string
- TrackerIssueStyle string
- EnablePulls bool
+ EnableWiki bool
+ EnableExternalWiki bool
+ ExternalWikiURL string
+ EnableIssues bool
+ EnableExternalTracker bool
+ ExternalTrackerURL string
+ TrackerURLFormat string
+ TrackerIssueStyle string
+ EnablePulls bool
+ EnableTimetracker bool
+ AllowOnlyContributorsToTrackTime bool
}
// Validate validates the fields
@@ -423,3 +425,21 @@ type DeleteRepoFileForm struct {
func (f *DeleteRepoFileForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
return validate(errs, ctx.Data, f, ctx.Locale)
}
+
+// ___________.__ ___________ __
+// \__ ___/|__| _____ ____ \__ ___/___________ ____ | | __ ___________
+// | | | |/ \_/ __ \ | | \_ __ \__ \ _/ ___\| |/ // __ \_ __ \
+// | | | | Y Y \ ___/ | | | | \// __ \\ \___| <\ ___/| | \/
+// |____| |__|__|_| /\___ > |____| |__| (____ /\___ >__|_ \\___ >__|
+// \/ \/ \/ \/ \/ \/
+
+// AddTimeManuallyForm form that adds spent time manually.
+type AddTimeManuallyForm struct {
+ Hours int `binding:"Range(0,1000)"`
+ Minutes int `binding:"Range(0,1000)"`
+}
+
+// Validate validates the fields
+func (f *AddTimeManuallyForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
+ return validate(errs, ctx.Data, f, ctx.Locale)
+}
diff --git a/modules/auth/user_form.go b/modules/auth/user_form.go
index 3193717150..ab0bb1e7dd 100644
--- a/modules/auth/user_form.go
+++ b/modules/auth/user_form.go
@@ -48,6 +48,7 @@ type InstallForm struct {
RequireSignInView bool
DefaultKeepEmailPrivate bool
DefaultAllowCreateOrganization bool
+ DefaultEnableTimetracking bool
NoReplyAddress string
AdminName string `binding:"OmitEmpty;AlphaDashDot;MaxSize(30)" locale:"install.admin_name"`
diff --git a/modules/context/repo.go b/modules/context/repo.go
index b16d188428..e335eafde3 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -1,4 +1,5 @@
// Copyright 2014 The Gogs Authors. All rights reserved.
+// Copyright 2017 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.
@@ -14,8 +15,8 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/setting"
"github.com/Unknwon/com"
- editorconfig "gopkg.in/editorconfig/editorconfig-core-go.v1"
- macaron "gopkg.in/macaron.v1"
+ "gopkg.in/editorconfig/editorconfig-core-go.v1"
+ "gopkg.in/macaron.v1"
)
// PullRequest contains informations to make a pull request
@@ -85,6 +86,15 @@ func (r *Repository) CanCommitToBranch() (bool, error) {
return r.CanEnableEditor() && !protectedBranch, nil
}
+// CanUseTimetracker returns whether or not a user can use the timetracker.
+func (r *Repository) CanUseTimetracker(issue *models.Issue, user *models.User) bool {
+ // Checking for following:
+ // 1. Is timetracker enabled
+ // 2. Is the user a contributor, admin, poster or assignee and do the repository policies require this?
+ return r.Repository.IsTimetrackerEnabled() && (!r.Repository.AllowOnlyContributorsToTrackTime() ||
+ r.IsWriter() || issue.IsPoster(user.ID) || issue.AssigneeID == user.ID)
+}
+
// GetEditorconfig returns the .editorconfig definition if found in the
// HEAD of the default repo branch.
func (r *Repository) GetEditorconfig() (*editorconfig.Editorconfig, error) {
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index a5908bacaa..00aaad6913 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -34,7 +34,7 @@ import (
"github.com/go-macaron/session"
_ "github.com/go-macaron/session/redis" // redis plugin for store session
"github.com/go-xorm/core"
- ini "gopkg.in/ini.v1"
+ "gopkg.in/ini.v1"
"strk.kbt.io/projects/go/libravatar"
)
@@ -1016,19 +1016,21 @@ func NewContext() {
// Service settings
var Service struct {
- ActiveCodeLives int
- ResetPwdCodeLives int
- RegisterEmailConfirm bool
- DisableRegistration bool
- ShowRegistrationButton bool
- RequireSignInView bool
- EnableNotifyMail bool
- EnableReverseProxyAuth bool
- EnableReverseProxyAutoRegister bool
- EnableCaptcha bool
- DefaultKeepEmailPrivate bool
- DefaultAllowCreateOrganization bool
- NoReplyAddress string
+ ActiveCodeLives int
+ ResetPwdCodeLives int
+ RegisterEmailConfirm bool
+ DisableRegistration bool
+ ShowRegistrationButton bool
+ RequireSignInView bool
+ EnableNotifyMail bool
+ EnableReverseProxyAuth bool
+ EnableReverseProxyAutoRegister bool
+ EnableCaptcha bool
+ DefaultKeepEmailPrivate bool
+ DefaultAllowCreateOrganization bool
+ DefaultEnableTimetracking bool
+ DefaultAllowOnlyContributorsToTrackTime bool
+ NoReplyAddress string
// OpenID settings
EnableOpenIDSignIn bool
@@ -1049,6 +1051,8 @@ func newService() {
Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool()
Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
+ Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").MustBool(true)
+ Service.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true)
Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")
sec = Cfg.Section("openid")