mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Preview images for Issue cards in Project Board view (#22112)
Original Issue: https://github.com/go-gitea/gitea/issues/22102 This addition would be a big benefit for design and art teams using the issue tracking. The preview will be the latest "image type" attachments on an issue- simple, and allows for automatic updates of the cover image as issue progress is made! This would make Gitea competitive with Trello... wouldn't it be amazing to say goodbye to Atlassian products? Ha. First image is the most recent, the SQL will fetch up to 5 latest images (URL string). All images supported by browsers plus upcoming formats: *.avif *.bmp *.gif *.jpg *.jpeg *.jxl *.png *.svg *.webp The CSS will try to center-align images until it cannot, then it will left align with overflow hidden. Single images get to be slightly larger! Tested so far on: Chrome, Firefox, Android Chrome, Android Firefox. Current revision with light and dark themes:   --------- Co-authored-by: Jason Song <i@wolfogre.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: delvh <dev.lh@web.de>
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							e9288c2477
						
					
				
				
					commit
					fb1a2a13f0
				
			| @@ -19,12 +19,18 @@ import ( | ||||
| ) | ||||
|  | ||||
| type ( | ||||
| 	// ProjectsConfig is used to identify the type of board that is being created | ||||
| 	ProjectsConfig struct { | ||||
| 	// BoardConfig is used to identify the type of board that is being created | ||||
| 	BoardConfig struct { | ||||
| 		BoardType   BoardType | ||||
| 		Translation string | ||||
| 	} | ||||
|  | ||||
| 	// CardConfig is used to identify the type of board card that is being used | ||||
| 	CardConfig struct { | ||||
| 		CardType    CardType | ||||
| 		Translation string | ||||
| 	} | ||||
|  | ||||
| 	// Type is used to identify the type of project in question and ownership | ||||
| 	Type uint8 | ||||
| ) | ||||
| @@ -91,6 +97,7 @@ type Project struct { | ||||
| 	CreatorID   int64                  `xorm:"NOT NULL"` | ||||
| 	IsClosed    bool                   `xorm:"INDEX"` | ||||
| 	BoardType   BoardType | ||||
| 	CardType    CardType | ||||
| 	Type        Type | ||||
|  | ||||
| 	RenderedContent string `xorm:"-"` | ||||
| @@ -145,15 +152,23 @@ func init() { | ||||
| 	db.RegisterModel(new(Project)) | ||||
| } | ||||
|  | ||||
| // GetProjectsConfig retrieves the types of configurations projects could have | ||||
| func GetProjectsConfig() []ProjectsConfig { | ||||
| 	return []ProjectsConfig{ | ||||
| // GetBoardConfig retrieves the types of configurations project boards could have | ||||
| func GetBoardConfig() []BoardConfig { | ||||
| 	return []BoardConfig{ | ||||
| 		{BoardTypeNone, "repo.projects.type.none"}, | ||||
| 		{BoardTypeBasicKanban, "repo.projects.type.basic_kanban"}, | ||||
| 		{BoardTypeBugTriage, "repo.projects.type.bug_triage"}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // GetCardConfig retrieves the types of configurations project board cards could have | ||||
| func GetCardConfig() []CardConfig { | ||||
| 	return []CardConfig{ | ||||
| 		{CardTypeTextOnly, "repo.projects.card_type.text_only"}, | ||||
| 		{CardTypeImagesAndText, "repo.projects.card_type.images_and_text"}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IsTypeValid checks if a project type is valid | ||||
| func IsTypeValid(p Type) bool { | ||||
| 	switch p { | ||||
| @@ -237,6 +252,10 @@ func NewProject(p *Project) error { | ||||
| 		p.BoardType = BoardTypeNone | ||||
| 	} | ||||
|  | ||||
| 	if !IsCardTypeValid(p.CardType) { | ||||
| 		p.CardType = CardTypeTextOnly | ||||
| 	} | ||||
|  | ||||
| 	if !IsTypeValid(p.Type) { | ||||
| 		return util.NewInvalidArgumentErrorf("project type is not valid") | ||||
| 	} | ||||
| @@ -280,9 +299,14 @@ func GetProjectByID(ctx context.Context, id int64) (*Project, error) { | ||||
|  | ||||
| // UpdateProject updates project properties | ||||
| func UpdateProject(ctx context.Context, p *Project) error { | ||||
| 	if !IsCardTypeValid(p.CardType) { | ||||
| 		p.CardType = CardTypeTextOnly | ||||
| 	} | ||||
|  | ||||
| 	_, err := db.GetEngine(ctx).ID(p.ID).Cols( | ||||
| 		"title", | ||||
| 		"description", | ||||
| 		"card_type", | ||||
| 	).Update(p) | ||||
| 	return err | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user