Disable Stars config option (#14653)
* Add config option to disable stars * Replace "stars" with watched in user profile * Add documentation
This commit is contained in:
		
							parent
							
								
									af2adb4e35
								
							
						
					
					
						commit
						f44543a1bb
					
				
					 16 changed files with 83 additions and 27 deletions
				
			
		|  | @ -70,6 +70,8 @@ PREFIX_ARCHIVE_FILES = true | |||
| DISABLE_MIRRORS = false | ||||
| ; Disable migrating feature. | ||||
| DISABLE_MIGRATIONS = false | ||||
| ; Disable stars feature. | ||||
| DISABLE_STARS = false | ||||
| ; The default branch name of new repositories | ||||
| DEFAULT_BRANCH = master | ||||
| ; Allow adoption of unadopted repositories | ||||
|  |  | |||
|  | @ -75,6 +75,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. | |||
| - `PREFIX_ARCHIVE_FILES`: **true**: Prefix archive files by placing them in a directory named after the repository. | ||||
| - `DISABLE_MIRRORS`: **false**: Disable the creation of **new** mirrors. Pre-existing mirrors remain valid. | ||||
| - `DISABLE_MIGRATIONS`: **false**: Disable migrating feature. | ||||
| - `DISABLE_STARS`: **false**: Disable stars feature. | ||||
| - `DEFAULT_BRANCH`: **master**: Default branch name of all repositories. | ||||
| - `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to adopt unadopted repositories | ||||
| - `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to delete unadopted repositories | ||||
|  |  | |||
|  | @ -143,6 +143,7 @@ type SearchRepoOptions struct { | |||
| 	OrderBy         SearchOrderBy | ||||
| 	Private         bool // Include private repositories in results
 | ||||
| 	StarredByID     int64 | ||||
| 	WatchedByID     int64 | ||||
| 	AllPublic       bool // Include also all public repositories of users and public organisations
 | ||||
| 	AllLimited      bool // Include also all public repositories of limited organisations
 | ||||
| 	// None -> include public and private
 | ||||
|  | @ -241,6 +242,11 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond { | |||
| 		cond = cond.And(builder.In("id", builder.Select("repo_id").From("star").Where(builder.Eq{"uid": opts.StarredByID}))) | ||||
| 	} | ||||
| 
 | ||||
| 	// Restrict to watched repositories
 | ||||
| 	if opts.WatchedByID > 0 { | ||||
| 		cond = cond.And(builder.In("id", builder.Select("repo_id").From("watch").Where(builder.Eq{"user_id": opts.WatchedByID}))) | ||||
| 	} | ||||
| 
 | ||||
| 	// Restrict repositories to those the OwnerID owns or contributes to as per opts.Collaborate
 | ||||
| 	if opts.OwnerID > 0 { | ||||
| 		accessCond := builder.NewCond() | ||||
|  |  | |||
|  | @ -704,6 +704,7 @@ func Contexter() func(next http.Handler) http.Handler { | |||
| 			ctx.Data["EnableSwagger"] = setting.API.EnableSwagger | ||||
| 			ctx.Data["EnableOpenIDSignIn"] = setting.Service.EnableOpenIDSignIn | ||||
| 			ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations | ||||
| 			ctx.Data["DisableStars"] = setting.Repository.DisableStars | ||||
| 
 | ||||
| 			ctx.Data["ManifestData"] = setting.ManifestData | ||||
| 
 | ||||
|  |  | |||
|  | @ -43,6 +43,7 @@ var ( | |||
| 		PrefixArchiveFiles                      bool | ||||
| 		DisableMirrors                          bool | ||||
| 		DisableMigrations                       bool | ||||
| 		DisableStars                            bool `ini:"DISABLE_STARS"` | ||||
| 		DefaultBranch                           string | ||||
| 		AllowAdoptionOfUnadoptedRepositories    bool | ||||
| 		AllowDeleteOfUnadoptedRepositories      bool | ||||
|  | @ -154,6 +155,7 @@ var ( | |||
| 		PrefixArchiveFiles:                      true, | ||||
| 		DisableMirrors:                          false, | ||||
| 		DisableMigrations:                       false, | ||||
| 		DisableStars:                            false, | ||||
| 		DefaultBranch:                           "master", | ||||
| 
 | ||||
| 		// Repository editor settings
 | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ type GeneralRepoSettings struct { | |||
| 	MirrorsDisabled      bool `json:"mirrors_disabled"` | ||||
| 	HTTPGitDisabled      bool `json:"http_git_disabled"` | ||||
| 	MigrationsDisabled   bool `json:"migrations_disabled"` | ||||
| 	StarsDisabled        bool `json:"stars_disabled"` | ||||
| 	TimeTrackingDisabled bool `json:"time_tracking_disabled"` | ||||
| 	LFSDisabled          bool `json:"lfs_disabled"` | ||||
| } | ||||
|  |  | |||
|  | @ -421,6 +421,7 @@ repositories = Repositories | |||
| activity = Public Activity | ||||
| followers = Followers | ||||
| starred = Starred Repositories | ||||
| watched = Watched Repositories | ||||
| projects = Projects | ||||
| following = Following | ||||
| follow = Follow | ||||
|  |  | |||
|  | @ -60,6 +60,7 @@ func GetGeneralRepoSettings(ctx *context.APIContext) { | |||
| 		MirrorsDisabled:      setting.Repository.DisableMirrors, | ||||
| 		HTTPGitDisabled:      setting.Repository.DisableHTTPGit, | ||||
| 		MigrationsDisabled:   setting.Repository.DisableMigrations, | ||||
| 		StarsDisabled:        setting.Repository.DisableStars, | ||||
| 		TimeTrackingDisabled: !setting.Service.EnableTimetracking, | ||||
| 		LFSDisabled:          !setting.LFS.StartServer, | ||||
| 	}) | ||||
|  |  | |||
|  | @ -238,6 +238,27 @@ func Profile(ctx *context.Context) { | |||
| 			ctx.ServerError("GetProjects", err) | ||||
| 			return | ||||
| 		} | ||||
| 	case "watching": | ||||
| 		repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ | ||||
| 			ListOptions: models.ListOptions{ | ||||
| 				PageSize: setting.UI.User.RepoPagingNum, | ||||
| 				Page:     page, | ||||
| 			}, | ||||
| 			Actor:              ctx.User, | ||||
| 			Keyword:            keyword, | ||||
| 			OrderBy:            orderBy, | ||||
| 			Private:            ctx.IsSigned, | ||||
| 			WatchedByID:        ctxUser.ID, | ||||
| 			Collaborate:        util.OptionalBoolFalse, | ||||
| 			TopicOnly:          topicOnly, | ||||
| 			IncludeDescription: setting.UI.SearchRepoDescription, | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			ctx.ServerError("SearchRepository", err) | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		total = int(count) | ||||
| 	default: | ||||
| 		repos, count, err = models.SearchRepository(&models.SearchRepoOptions{ | ||||
| 			ListOptions: models.ListOptions{ | ||||
|  |  | |||
|  | @ -157,10 +157,12 @@ | |||
| 						{{svg "octicon-person"}} | ||||
| 						{{.i18n.Tr "your_profile"}}<!-- Your profile --> | ||||
| 					</a> | ||||
| 					{{if not .DisableStars}} | ||||
| 						<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}?tab=stars"> | ||||
| 							{{svg "octicon-star"}} | ||||
| 							{{.i18n.Tr "your_starred"}} | ||||
| 						</a> | ||||
| 					{{end}} | ||||
| 					<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings"> | ||||
| 						{{svg "octicon-tools"}} | ||||
| 						{{.i18n.Tr "your_settings"}}<!-- Your settings --> | ||||
|  |  | |||
|  | @ -42,7 +42,9 @@ | |||
| 					{{if .PrimaryLanguage }} | ||||
| 					<span class="text grey df ac mr-3"><i class="color-icon mr-3" style="background-color: {{.PrimaryLanguage.Color}}"></i>{{ .PrimaryLanguage.Language }}</span> | ||||
| 					{{end}} | ||||
| 					{{if not $.DisableStars}} | ||||
| 						<span class="text grey df ac mr-3">{{svg "octicon-star" 16 "mr-3"}}{{.NumStars}}</span> | ||||
| 					{{end}} | ||||
| 					<span class="text grey df ac mr-3">{{svg "octicon-git-branch" 16 "mr-3"}}{{.NumForks}}</span> | ||||
| 				</div> | ||||
| 			</div> | ||||
|  |  | |||
|  | @ -12,8 +12,10 @@ | |||
| 			<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> | ||||
| 			<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> | ||||
| 			<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> | ||||
| 			{{if not .DisableStars}} | ||||
| 				<a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a> | ||||
| 				<a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a> | ||||
| 			{{end}} | ||||
| 			<a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a> | ||||
| 			<a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a> | ||||
| 		</div> | ||||
|  |  | |||
|  | @ -71,6 +71,7 @@ | |||
| 							</a> | ||||
| 						</div> | ||||
| 					</form> | ||||
| 					{{if not $.DisableStars}} | ||||
| 						<form method="post" action="{{$.RepoLink}}/action/{{if $.IsStaringRepo}}un{{end}}star?redirect_to={{$.Link}}"> | ||||
| 							{{$.CsrfTokenHtml}} | ||||
| 							<div class="ui labeled button{{if not $.IsSigned}} poping up{{end}}" tabindex="0"{{if not $.IsSigned}} data-content="{{$.i18n.Tr "repo.star_guest_user" }}" data-position="top center" data-variation="tiny"{{end}}> | ||||
|  | @ -82,6 +83,7 @@ | |||
| 								</a> | ||||
| 							</div> | ||||
| 						</form> | ||||
| 					{{end}} | ||||
| 					{{if and (not .IsEmpty) ($.Permission.CanRead $.UnitTypeCode)}} | ||||
| 						<div class="ui labeled button{{if not $.CanSignedUserFork}} poping up disabled{{end}}"{{if and (not $.CanSignedUserFork) $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" {{else if not $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_guest_user"}}"{{end}} data-position="top center" data-variation="tiny" tabindex="0"> | ||||
| 							<a class="ui compact small basic button"{{if $.CanSignedUserFork}} href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{end}}> | ||||
|  |  | |||
|  | @ -14151,6 +14151,10 @@ | |||
|           "type": "boolean", | ||||
|           "x-go-name": "MirrorsDisabled" | ||||
|         }, | ||||
|         "stars_disabled": { | ||||
|           "type": "boolean", | ||||
|           "x-go-name": "StarsDisabled" | ||||
|         }, | ||||
|         "time_tracking_disabled": { | ||||
|           "type": "boolean", | ||||
|           "x-go-name": "TimeTrackingDisabled" | ||||
|  |  | |||
|  | @ -130,10 +130,12 @@ | |||
| 									{{svg "octicon-archive" 16 "ml-2"}} | ||||
| 								</span> | ||||
| 							</div> | ||||
| 							{{if not .DisableStars}} | ||||
| 								<div class="text light grey df ac"> | ||||
| 									${repo.stars_count} | ||||
| 									{{svg "octicon-star" 16 "ml-2"}} | ||||
| 								</div> | ||||
| 							{{end}} | ||||
| 						</a> | ||||
| 					</li> | ||||
| 				</ul> | ||||
|  |  | |||
|  | @ -84,16 +84,22 @@ | |||
| 			</div> | ||||
| 			<div class="ui eleven wide column"> | ||||
| 				<div class="ui secondary stackable pointing tight menu"> | ||||
| 					<a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars") (ne .TabName "projects")}}active{{end}} item' href="{{.Owner.HomeLink}}"> | ||||
| 					<a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars") (ne .TabName "watching") (ne .TabName "projects")}}active{{end}} item' href="{{.Owner.HomeLink}}"> | ||||
| 						{{svg "octicon-repo"}} {{.i18n.Tr "user.repositories"}} | ||||
| 					</a> | ||||
| 					<a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity"> | ||||
| 						{{svg "octicon-rss"}} {{.i18n.Tr "user.activity"}} | ||||
| 					</a> | ||||
| 					{{if not .DisableStars}} | ||||
| 						<a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars"> | ||||
| 							{{svg "octicon-star"}}  {{.i18n.Tr "user.starred"}} | ||||
| 							<div class="ui label">{{.Owner.NumStars}}</div> | ||||
| 						</a> | ||||
| 					{{else}} | ||||
| 						<a class='{{if eq .TabName "watching"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=watching"> | ||||
| 							{{svg "octicon-eye"}}  {{.i18n.Tr "user.watched"}} | ||||
| 						</a> | ||||
| 					{{end}} | ||||
| 					<a class='{{if eq .TabName "following"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=following"> | ||||
| 						{{svg "octicon-person"}}  {{.i18n.Tr "user.following"}} | ||||
| 						<div class="ui label">{{.Owner.NumFollowing}}</div> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue