Skip to content

Commit f84e25f

Browse files
committed
Add EnableTimetracking option to app settings
1 parent 04b7fd8 commit f84e25f

File tree

6 files changed

+38
-16
lines changed

6 files changed

+38
-16
lines changed

custom/conf/app.ini.sample

+2
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ DEFAULT_KEEP_EMAIL_PRIVATE = false
299299
; Default value for AllowCreateOrganization
300300
; New user will have rights set to create organizations depending on this setting
301301
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
302+
; Enable Timetracking
303+
ENABLE_TIMETRACKING = true
302304
; Default value for EnableTimetracking
303305
; Repositories will use timetracking by default depending on this setting
304306
DEFAULT_ENABLE_TIMETRACKING = true

models/repo_issue.go

+10
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,18 @@ import "code.gitea.io/gitea/modules/setting"
1313
// |____| |__|__|_| /\___ >____| |__| (____ /\___ >__|_ \\___ >__|
1414
// \/ \/ \/ \/ \/ \/
1515

16+
// CanEnableTimetracker returns true when the server admin enabled time tracking
17+
// This overrules IsTimetrackerEnabled
18+
func (repo *Repository) CanEnableTimetracker() bool {
19+
return setting.Service.EnableTimetracking
20+
}
21+
1622
// IsTimetrackerEnabled returns whether or not the timetracker is enabled. It returns the default value from config if an error occurs.
1723
func (repo *Repository) IsTimetrackerEnabled() bool {
24+
if !setting.Service.EnableTimetracking {
25+
return false
26+
}
27+
1828
var u *RepoUnit
1929
var err error
2030
if u, err = repo.GetUnit(UnitTypeIssues); err != nil {

modules/setting/setting.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -1149,6 +1149,7 @@ var Service struct {
11491149
EnableCaptcha bool
11501150
DefaultKeepEmailPrivate bool
11511151
DefaultAllowCreateOrganization bool
1152+
EnableTimetracking bool
11521153
DefaultEnableTimetracking bool
11531154
DefaultAllowOnlyContributorsToTrackTime bool
11541155
NoReplyAddress string
@@ -1172,7 +1173,10 @@ func newService() {
11721173
Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool()
11731174
Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
11741175
Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
1175-
Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").MustBool(true)
1176+
Service.EnableTimetracking = sec.Key("ENABLE_TIMETRACKING").MustBool(true)
1177+
if Service.EnableTimetracking {
1178+
Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").MustBool(true)
1179+
}
11761180
Service.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true)
11771181
Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")
11781182

options/locale/locale_en-US.ini

+1
Original file line numberDiff line numberDiff line change
@@ -1429,6 +1429,7 @@ config.active_code_lives = Active Code Lives
14291429
config.reset_password_code_lives = Reset Password Code Expiry Time
14301430
config.default_keep_email_private = Default Value for Keep Email Private
14311431
config.default_allow_create_organization = Default permission to create organizations
1432+
config.enable_timetracking = Enable time tracking
14321433
config.default_enable_timetracking = Enable time tracking by default
14331434
config.default_allow_only_contributors_to_track_time = Allow only contributors to track time by default
14341435
config.no_reply_address = No-reply Address

templates/admin/config.tmpl

+8-4
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,14 @@
132132
<dd><i class="fa fa{{if .Service.DefaultKeepEmailPrivate}}-check{{end}}-square-o"></i></dd>
133133
<dt>{{.i18n.Tr "admin.config.default_allow_create_organization"}}</dt>
134134
<dd><i class="fa fa{{if .Service.DefaultAllowCreateOrganization}}-check{{end}}-square-o"></i></dd>
135-
<dt>{{.i18n.Tr "admin.config.default_enable_timetracking"}}</dt>
136-
<dd><i class="fa fa{{if .Service.DefaultEnableTimetracking}}-check{{end}}-square-o"></i></dd>
137-
<dt>{{.i18n.Tr "admin.config.default_allow_only_contributors_to_track_time"}}</dt>
138-
<dd><i class="fa fa{{if .Service.DefaultAllowOnlyContributorsToTrackTime}}-check{{end}}-square-o"></i></dd>
135+
<dt>{{.i18n.Tr "admin.config.enable_timetracking"}}</dt>
136+
<dd><i class="fa fa{{if .Service.EnableTimetracking}}-check{{end}}-square-o"></i></dd>
137+
{{if .Service.EnableTimetracking}}
138+
<dt>{{.i18n.Tr "admin.config.default_enable_timetracking"}}</dt>
139+
<dd><i class="fa fa{{if .Service.DefaultEnableTimetracking}}-check{{end}}-square-o"></i></dd>
140+
<dt>{{.i18n.Tr "admin.config.default_allow_only_contributors_to_track_time"}}</dt>
141+
<dd><i class="fa fa{{if .Service.DefaultAllowOnlyContributorsToTrackTime}}-check{{end}}-square-o"></i></dd>
142+
{{end}}
139143
<dt>{{.i18n.Tr "admin.config.no_reply_address"}}</dt>
140144
<dd>{{if .Service.NoReplyAddress}}{{.Service.NoReplyAddress}}{{else}}-{{end}}</dd>
141145
<div class="ui divider"></div>

templates/repo/settings/options.tmpl

+12-11
Original file line numberDiff line numberDiff line change
@@ -139,19 +139,20 @@
139139
</div>
140140
</div>
141141
<div class="field {{if (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}disabled{{end}}" id="internal_issue_box">
142-
<div class="field">
143-
<div class="ui checkbox">
144-
<input name="enable_timetracker" class="enable-system" data-target="#only_contributors" type="checkbox" {{if .Repository.IsTimetrackerEnabled}}checked{{end}}>
145-
<label>{{.i18n.Tr "repo.settings.enable_timetracker"}}</label>
142+
{{if .Repository.CanEnableTimetracker}}
143+
<div class="field">
144+
<div class="ui checkbox">
145+
<input name="enable_timetracker" class="enable-system" data-target="#only_contributors" type="checkbox" {{if .Repository.IsTimetrackerEnabled}}checked{{end}}>
146+
<label>{{.i18n.Tr "repo.settings.enable_timetracker"}}</label>
147+
</div>
146148
</div>
147-
</div>
148-
<div class="field {{if not .Repository.IsTimetrackerEnabled}}disabled{{end}}" id="only_contributors">
149-
<div class="ui checkbox">
150-
151-
<input name="allow_only_contributors_to_track_time" type="checkbox" {{if .Repository.AllowOnlyContributorsToTrackTime}}checked{{end}}>
152-
<label>{{.i18n.Tr "repo.settings.allow_only_contributors_to_track_time"}}</label>
149+
<div class="field {{if not .Repository.IsTimetrackerEnabled}}disabled{{end}}" id="only_contributors">
150+
<div class="ui checkbox">
151+
<input name="allow_only_contributors_to_track_time" type="checkbox" {{if .Repository.AllowOnlyContributorsToTrackTime}}checked{{end}}>
152+
<label>{{.i18n.Tr "repo.settings.allow_only_contributors_to_track_time"}}</label>
153+
</div>
153154
</div>
154-
</div>
155+
{{end}}
155156
</div>
156157
<div class="field">
157158
<div class="ui radio checkbox">

0 commit comments

Comments
 (0)