Add EnableTimetracking option to app settings (#3719)
This commit is contained in:
		
							parent
							
								
									30c81a126c
								
							
						
					
					
						commit
						8ee45eb614
					
				| 
						 | 
					@ -301,6 +301,8 @@ DEFAULT_KEEP_EMAIL_PRIVATE = false
 | 
				
			||||||
; Default value for AllowCreateOrganization
 | 
					; Default value for AllowCreateOrganization
 | 
				
			||||||
; New user will have rights set to create organizations depending on this setting
 | 
					; New user will have rights set to create organizations depending on this setting
 | 
				
			||||||
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
 | 
					DEFAULT_ALLOW_CREATE_ORGANIZATION = true
 | 
				
			||||||
 | 
					; Enable Timetracking
 | 
				
			||||||
 | 
					ENABLE_TIMETRACKING = true
 | 
				
			||||||
; Default value for EnableTimetracking
 | 
					; Default value for EnableTimetracking
 | 
				
			||||||
; Repositories will use timetracking by default depending on this setting
 | 
					; Repositories will use timetracking by default depending on this setting
 | 
				
			||||||
DEFAULT_ENABLE_TIMETRACKING = true
 | 
					DEFAULT_ENABLE_TIMETRACKING = true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,8 +13,18 @@ import "code.gitea.io/gitea/modules/setting"
 | 
				
			||||||
// |____|   |__|__|_|  /\___  >____|   |__|  (____  /\___  >__|_ \\___  >__|
 | 
					// |____|   |__|__|_|  /\___  >____|   |__|  (____  /\___  >__|_ \\___  >__|
 | 
				
			||||||
// \/     \/                    \/     \/     \/    \/
 | 
					// \/     \/                    \/     \/     \/    \/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CanEnableTimetracker returns true when the server admin enabled time tracking
 | 
				
			||||||
 | 
					// This overrules IsTimetrackerEnabled
 | 
				
			||||||
 | 
					func (repo *Repository) CanEnableTimetracker() bool {
 | 
				
			||||||
 | 
						return setting.Service.EnableTimetracking
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsTimetrackerEnabled returns whether or not the timetracker is enabled. It returns the default value from config if an error occurs.
 | 
					// IsTimetrackerEnabled returns whether or not the timetracker is enabled. It returns the default value from config if an error occurs.
 | 
				
			||||||
func (repo *Repository) IsTimetrackerEnabled() bool {
 | 
					func (repo *Repository) IsTimetrackerEnabled() bool {
 | 
				
			||||||
 | 
						if !setting.Service.EnableTimetracking {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var u *RepoUnit
 | 
						var u *RepoUnit
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	if u, err = repo.GetUnit(UnitTypeIssues); err != nil {
 | 
						if u, err = repo.GetUnit(UnitTypeIssues); err != nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1151,6 +1151,7 @@ var Service struct {
 | 
				
			||||||
	EnableCaptcha                           bool
 | 
						EnableCaptcha                           bool
 | 
				
			||||||
	DefaultKeepEmailPrivate                 bool
 | 
						DefaultKeepEmailPrivate                 bool
 | 
				
			||||||
	DefaultAllowCreateOrganization          bool
 | 
						DefaultAllowCreateOrganization          bool
 | 
				
			||||||
 | 
						EnableTimetracking                      bool
 | 
				
			||||||
	DefaultEnableTimetracking               bool
 | 
						DefaultEnableTimetracking               bool
 | 
				
			||||||
	DefaultAllowOnlyContributorsToTrackTime bool
 | 
						DefaultAllowOnlyContributorsToTrackTime bool
 | 
				
			||||||
	NoReplyAddress                          string
 | 
						NoReplyAddress                          string
 | 
				
			||||||
| 
						 | 
					@ -1174,7 +1175,10 @@ func newService() {
 | 
				
			||||||
	Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool()
 | 
						Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool()
 | 
				
			||||||
	Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
 | 
						Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
 | 
				
			||||||
	Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
 | 
						Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
 | 
				
			||||||
 | 
						Service.EnableTimetracking = sec.Key("ENABLE_TIMETRACKING").MustBool(true)
 | 
				
			||||||
 | 
						if Service.EnableTimetracking {
 | 
				
			||||||
		Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").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.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true)
 | 
				
			||||||
	Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")
 | 
						Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1435,6 +1435,7 @@ config.active_code_lives = Active Code Lives
 | 
				
			||||||
config.reset_password_code_lives = Reset Password Code Expiry Time
 | 
					config.reset_password_code_lives = Reset Password Code Expiry Time
 | 
				
			||||||
config.default_keep_email_private = Default Value for Keep Email Private
 | 
					config.default_keep_email_private = Default Value for Keep Email Private
 | 
				
			||||||
config.default_allow_create_organization = Default permission to create organizations
 | 
					config.default_allow_create_organization = Default permission to create organizations
 | 
				
			||||||
 | 
					config.enable_timetracking = Enable time tracking
 | 
				
			||||||
config.default_enable_timetracking = Enable time tracking by default
 | 
					config.default_enable_timetracking = Enable time tracking by default
 | 
				
			||||||
config.default_allow_only_contributors_to_track_time = Allow only contributors to track time by default
 | 
					config.default_allow_only_contributors_to_track_time = Allow only contributors to track time by default
 | 
				
			||||||
config.no_reply_address = No-reply Address
 | 
					config.no_reply_address = No-reply Address
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -132,10 +132,14 @@
 | 
				
			||||||
				<dd><i class="fa fa{{if .Service.DefaultKeepEmailPrivate}}-check{{end}}-square-o"></i></dd>
 | 
									<dd><i class="fa fa{{if .Service.DefaultKeepEmailPrivate}}-check{{end}}-square-o"></i></dd>
 | 
				
			||||||
				<dt>{{.i18n.Tr "admin.config.default_allow_create_organization"}}</dt>
 | 
									<dt>{{.i18n.Tr "admin.config.default_allow_create_organization"}}</dt>
 | 
				
			||||||
				<dd><i class="fa fa{{if .Service.DefaultAllowCreateOrganization}}-check{{end}}-square-o"></i></dd>
 | 
									<dd><i class="fa fa{{if .Service.DefaultAllowCreateOrganization}}-check{{end}}-square-o"></i></dd>
 | 
				
			||||||
 | 
									<dt>{{.i18n.Tr "admin.config.enable_timetracking"}}</dt>
 | 
				
			||||||
 | 
									<dd><i class="fa fa{{if .Service.EnableTimetracking}}-check{{end}}-square-o"></i></dd>
 | 
				
			||||||
 | 
									{{if .Service.EnableTimetracking}}
 | 
				
			||||||
					<dt>{{.i18n.Tr "admin.config.default_enable_timetracking"}}</dt>
 | 
										<dt>{{.i18n.Tr "admin.config.default_enable_timetracking"}}</dt>
 | 
				
			||||||
					<dd><i class="fa fa{{if .Service.DefaultEnableTimetracking}}-check{{end}}-square-o"></i></dd>
 | 
										<dd><i class="fa fa{{if .Service.DefaultEnableTimetracking}}-check{{end}}-square-o"></i></dd>
 | 
				
			||||||
					<dt>{{.i18n.Tr "admin.config.default_allow_only_contributors_to_track_time"}}</dt>
 | 
										<dt>{{.i18n.Tr "admin.config.default_allow_only_contributors_to_track_time"}}</dt>
 | 
				
			||||||
					<dd><i class="fa fa{{if .Service.DefaultAllowOnlyContributorsToTrackTime}}-check{{end}}-square-o"></i></dd>
 | 
										<dd><i class="fa fa{{if .Service.DefaultAllowOnlyContributorsToTrackTime}}-check{{end}}-square-o"></i></dd>
 | 
				
			||||||
 | 
									{{end}}
 | 
				
			||||||
				<dt>{{.i18n.Tr "admin.config.no_reply_address"}}</dt>
 | 
									<dt>{{.i18n.Tr "admin.config.no_reply_address"}}</dt>
 | 
				
			||||||
				<dd>{{if .Service.NoReplyAddress}}{{.Service.NoReplyAddress}}{{else}}-{{end}}</dd>
 | 
									<dd>{{if .Service.NoReplyAddress}}{{.Service.NoReplyAddress}}{{else}}-{{end}}</dd>
 | 
				
			||||||
				<div class="ui divider"></div>
 | 
									<div class="ui divider"></div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,6 +139,7 @@
 | 
				
			||||||
						</div>
 | 
											</div>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<div class="field {{if (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}disabled{{end}}" id="internal_issue_box">
 | 
										<div class="field {{if (.Repository.UnitEnabled $.UnitTypeExternalTracker)}}disabled{{end}}" id="internal_issue_box">
 | 
				
			||||||
 | 
											{{if .Repository.CanEnableTimetracker}}
 | 
				
			||||||
							<div class="field">
 | 
												<div class="field">
 | 
				
			||||||
								<div class="ui checkbox">
 | 
													<div class="ui checkbox">
 | 
				
			||||||
									<input name="enable_timetracker" class="enable-system" data-target="#only_contributors" type="checkbox" {{if .Repository.IsTimetrackerEnabled}}checked{{end}}>
 | 
														<input name="enable_timetracker" class="enable-system" data-target="#only_contributors" type="checkbox" {{if .Repository.IsTimetrackerEnabled}}checked{{end}}>
 | 
				
			||||||
| 
						 | 
					@ -147,11 +148,11 @@
 | 
				
			||||||
							</div>
 | 
												</div>
 | 
				
			||||||
							<div class="field {{if not .Repository.IsTimetrackerEnabled}}disabled{{end}}" id="only_contributors">
 | 
												<div class="field {{if not .Repository.IsTimetrackerEnabled}}disabled{{end}}" id="only_contributors">
 | 
				
			||||||
								<div class="ui checkbox">
 | 
													<div class="ui checkbox">
 | 
				
			||||||
 | 
					 | 
				
			||||||
									<input name="allow_only_contributors_to_track_time" type="checkbox" {{if .Repository.AllowOnlyContributorsToTrackTime}}checked{{end}}>
 | 
														<input name="allow_only_contributors_to_track_time" type="checkbox" {{if .Repository.AllowOnlyContributorsToTrackTime}}checked{{end}}>
 | 
				
			||||||
									<label>{{.i18n.Tr "repo.settings.allow_only_contributors_to_track_time"}}</label>
 | 
														<label>{{.i18n.Tr "repo.settings.allow_only_contributors_to_track_time"}}</label>
 | 
				
			||||||
								</div>
 | 
													</div>
 | 
				
			||||||
							</div>
 | 
												</div>
 | 
				
			||||||
 | 
											{{end}}
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<div class="field">
 | 
										<div class="field">
 | 
				
			||||||
						<div class="ui radio checkbox">
 | 
											<div class="ui radio checkbox">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue