There was some recent discussion about this in Discord `ui-design`
channel and the conclusion was that
https://github.com/go-gitea/gitea/issues/24305 should have fixed their
OS font installation to have semibold weights.
I have now tested this 601 weight on a Windows 10 machine on Firefox
myself, and I immediately noticed that bold was excessivly bold and
rendering as 700 because browsers are biased towards bolder fonts. So
revert this back to the previous value.
Close#24195
Some of the changes are taken from my another fix
https://github.com/go-gitea/gitea/pull/20147/commits/f07b0de997125c9b79cc5af27966a7cdd1803a4d
in #20147 (although that PR was discarded ....)
The bug is:
1. The old code doesn't handle `removedfile` event correctly
2. The old code doesn't provide attachments for type=CommentTypeReview
This PR doesn't intend to refactor the "upload" code to a perfect state
(to avoid making the review difficult), so some legacy styles are kept.
---------
Co-authored-by: silverwind <[email protected]>
Co-authored-by: Giteabot <[email protected]>
One of the steps in #23328
Before there were 3 different but similar functions: dict/Dict/mergeinto
The code was just copied & pasted, no test.
This PR defines a new stable `dict` function, it covers all the 3 old
functions behaviors, only +160 -171
Future developers do not need to think about or guess the different dict
functions, just use one: `dict`
Why use `dict` but not `Dict`? Because there are far more `dict` than
`Dict` in code already ......
Follow:
* #23574
* Remove all ".tooltip[data-content=...]"
Major changes:
* Remove "tooltip" class, use "[data-tooltip-content=...]" instead of
".tooltip[data-content=...]"
* Remove legacy `data-position`, it's dead code since last Fomantic
Tooltip -> Tippy Tooltip refactoring
* Rename reaction attribute from `data-content` to
`data-reaction-content`
* Add comments for some `data-content`: `{{/* used by the form */}}`
* Remove empty "ui" class
* Use "text color" for SVG icons (a few)
Before, the `dict "ctx" ...` map is used to pass data between templates.
Now, more and more templates need to use real Go context:
* #22962
* #23092
`ctx` is a Go concept for `Context`, misusing it may cause problems, and
it makes it difficult to review or refactor.
This PR contains 2 major changes:
* In the top scope of a template, the `$` is the same as the `.`, so the
old labels_sidebar's `root` is the `ctx`. So this `ctx` could just be
removed.
https://github.com/go-gitea/gitea/commit/bd7f218dce01e0fb661b23b55995f5d51b4530e8
* Rename all other `ctx` to `ctxData`, and it perfectly matches how it
comes from backend: `"ctxData": ctx.Data`.
https://github.com/go-gitea/gitea/pull/23105/commits/7c01260e1df1dcb052e1cf86ebe982bf77c4407f
From now on, there is no `ctx` in templates. There are only:
* `ctxData` for passing data
* `Context` for Go context
Close#22847
This PR:
* introduce Gitea's own `showElem` and related functions
* remove jQuery show/hide
* remove .hide class
* remove inline style=display:none
From now on:
do not use:
* "[hidden]" attribute: it's too weak, can not be applied to an element
with "display: flex"
* ".hidden" class: it has been polluted by Fomantic UI in many cases
* inline style="display: none": it's difficult to tweak
* jQuery's show/hide/toggle: it can not show/hide elements with
"display: xxx !important"
only use:
* this ".gt-hidden" class
* showElem/hideElem/toggleElem functions in "utils/dom.js"
cc: @silverwind , this is the all-in-one PR
To avoid duplicated load of the same data in an HTTP request, we can set
a context cache to do that. i.e. Some pages may load a user from a
database with the same id in different areas on the same page. But the
code is hidden in two different deep logic. How should we share the
user? As a result of this PR, now if both entry functions accept
`context.Context` as the first parameter and we just need to refactor
`GetUserByID` to reuse the user from the context cache. Then it will not
be loaded twice on an HTTP request.
But of course, sometimes we would like to reload an object from the
database, that's why `RemoveContextData` is also exposed.
The core context cache is here. It defines a new context
```go
type cacheContext struct {
ctx context.Context
data map[any]map[any]any
lock sync.RWMutex
}
var cacheContextKey = struct{}{}
func WithCacheContext(ctx context.Context) context.Context {
return context.WithValue(ctx, cacheContextKey, &cacheContext{
ctx: ctx,
data: make(map[any]map[any]any),
})
}
```
Then you can use the below 4 methods to read/write/del the data within
the same context.
```go
func GetContextData(ctx context.Context, tp, key any) any
func SetContextData(ctx context.Context, tp, key, value any)
func RemoveContextData(ctx context.Context, tp, key any)
func GetWithContextCache[T any](ctx context.Context, cacheGroupKey string, cacheTargetID any, f func() (T, error)) (T, error)
```
Then let's take a look at how `system.GetString` implement it.
```go
func GetSetting(ctx context.Context, key string) (string, error) {
return cache.GetWithContextCache(ctx, contextCacheKey, key, func() (string, error) {
return cache.GetString(genSettingCacheKey(key), func() (string, error) {
res, err := GetSettingNoCache(ctx, key)
if err != nil {
return "", err
}
return res.SettingValue, nil
})
})
}
```
First, it will check if context data include the setting object with the
key. If not, it will query from the global cache which may be memory or
a Redis cache. If not, it will get the object from the database. In the
end, if the object gets from the global cache or database, it will be
set into the context cache.
An object stored in the context cache will only be destroyed after the
context disappeared.
As discussed in #22847 the helpers in helpers.less need to have a
separate prefix as they are causing conflicts with fomantic styles
This will allow us to have the `.gt-hidden { display:none !important; }`
style that is needed to for the reverted PR.
Of note in doing this I have noticed that there was already a conflict
with at least one chroma style which this PR now avoids.
I've also added in the `gt-hidden` style that matches the tailwind one
and switched the code that needed it to use that.
Signed-off-by: Andrew Thornton <[email protected]>
---------
Signed-off-by: Andrew Thornton <[email protected]>
Co-authored-by: wxiaoguang <[email protected]>
There are several places in templates/repo/issue/view_content/comments.tmpl where links are made to Posters or Assignees who are Ghosts or have IDs <0.
Fix#20559
Signed-off-by: Andrew Thornton <[email protected]>
* Refactor `i18n` to `locale`
- Currently we're using the `i18n` variable naming for the `locale`
struct. This contains locale's specific information and cannot be used
for general i18n purpose, therefore refactoring it to `locale` makes
more sense.
- Ref: https://github.com/go-gitea/gitea/pull/20096#discussion_r906699200
* Update routers/install/install.go
* Prototyping
* Start work on creating offsets
* Modify tests
* Start prototyping with actual MPH
* Twiddle around
* Twiddle around comments
* Convert templates
* Fix external languages
* Fix latest translation
* Fix some test
* Tidy up code
* Use simple map
* go mod tidy
* Move back to data structure
- Uses less memory by creating for each language a map.
* Apply suggestions from code review
Co-authored-by: delvh <[email protected]>
* Add some comments
* Fix tests
* Try to fix tests
* Use en-US as defacto fallback
* Use correct slices
* refactor (#4)
* Remove TryTr, add log for missing translation key
* Refactor i18n
- Separate dev and production locale stores.
- Allow for live-reloading in dev mode.
Co-authored-by: zeripath <[email protected]>
* Fix live-reloading & check for errors
* Make linter happy
* live-reload with periodic check (#5)
* Fix tests
Co-authored-by: delvh <[email protected]>
Co-authored-by: 6543 <[email protected]>
Co-authored-by: wxiaoguang <[email protected]>
Co-authored-by: zeripath <[email protected]>
* remove unnecessary web context data fields, and unify the i18n/translation related functions to `Locale`
* in development, show an error if a translation key is missing
* remove the unnecessary loops `for _, lang := range translation.AllLangs()` for every request, which improves the performance slightly
* use `ctx.Locale.Language()` instead of `ctx.Data["Lang"].(string)`
* add more comments about how the Locale/LangType fields are used
There are multiple places where Gitea does not properly escape URLs that it is building and there are multiple places where it builds urls when there is already a simpler function available to use this.
This is an extensive PR attempting to fix these issues.
1. The first commit in this PR looks through all href, src and links in the Gitea codebase and has attempted to catch all the places where there is potentially incomplete escaping.
2. Whilst doing this we will prefer to use functions that create URLs over recreating them by hand.
3. All uses of strings should be directly escaped - even if they are not currently expected to contain escaping characters. The main benefit to doing this will be that we can consider relaxing the constraints on user names and reponames in future.
4. The next commit looks at escaping in the wiki and re-considers the urls that are used there. Using the improved escaping here wiki files containing '/'. (This implementation will currently still place all of the wiki files the root directory of the repo but this would not be difficult to change.)
5. The title generation in feeds is now properly escaped.
6. EscapePound is no longer needed - urls should be PathEscaped / QueryEscaped as necessary but then re-escaped with Escape when creating html with locales Signed-off-by: Andrew Thornton <[email protected]>
Signed-off-by: Andrew Thornton <[email protected]>
* creates and implements generic markup less class
* How to give custom CSS to externally rendered html
* Clarifies sources of CSS styling of markup
* further clarification of sources of markup styling
* rename _markdown to _markup
* remove defunct import
* fix orphaned reference
* Update docs/content/doc/advanced/external-renderers.en-us.md
* more renames markdown -> markup
* do not suggest less customization
* add back tokens
* fix class whitespace, remove useless if-clause
* remove unused csv-data rules
* use named exports and rename functions
* sort imports
Co-authored-by: HarvsG <[email protected]>
Co-authored-by: techknowlogick <[email protected]>
Co-authored-by: silverwind <[email protected]>
* Direct avatar rendering
This adds new template helpers for avatar rendering which output image
elements with direct links to avatars which makes them cacheable by the
browsers.
This should be a major performance improvment for pages with many avatars.
* fix avatars of other user's profile pages
* fix top border on user avatar name
* uncircle avatars
* remove old incomplete avatar selector
* use title attribute for name and add it back on blame
* minor refactor
* tweak comments
* fix url path join and adjust test to new result
* dedupe functions
* Update outdated label to use Fomantic UI style
* Use native labels rather than custom style
* Remove leading zero
Co-authored-by: zeripath <[email protected]>
Now that emojify.js has been removed, get rid of all instances of has-emoji class that was only used for that. Support for rendering shortcodes should remain in all of these places so it should still work the same.
Co-authored-by: 6543 <[email protected]>
Co-authored-by: Lauris BH <[email protected]>
* fix typo
* Migrate reviews when migrating repository from github
* fix lint
* Added test and migration when external user login
* fix test
* fix commented state
* Some improvements
* fix bug when get pull request and ref original author on code comments
* Fix migrated line; Added comment for review
* Don't load all pull requests attributes
* Fix typo
* wrong change copy head
* fix tests
* fix reactions
* Fix test
* fix fmt
* fix review comment reactions
* add [ui] Reactions
* move contend check from form to go functions
* use else if
* check if reaction is allowed only on react
(so previous custom reaction can be still removed)
* use $.AllowedReactions in templates
* use ctx.Flash.Error
* use it there too
* add redirection
* back to server error
because a wrong reaction is a template issue ...
* add emoji list link
* add docs entry
* small wording nit
suggestions from @jolheiser - thx
* same reactions as github
* fix PR reactions
* handle error so template JS could check
* Add Integrations Test
* add REACTIONS setting to cheat-sheet doc page
Adds a new key DEFAULT_SHOW_FULL_NAME (default false) to the [ui] section.
If enabled the full name will be shown (unless it's empty, then
the default username will be used)
* Initial ui components for pull request review
* Add Review
Add IssueComment types
Signed-off-by: Jonas Franz <[email protected]>
(cherry picked from commit 2b4daab)
Signed-off-by: Jonas Franz <[email protected]>
* Replace ReviewComment with Content
Signed-off-by: Jonas Franz <[email protected]>
* Add load functions
Add ReviewID to findComments
Signed-off-by: Jonas Franz <[email protected]>
* Add create review comment implementation
Add migration for review
Other small changes
Signed-off-by: Jonas Franz <[email protected]>
* Simplified create and find functions for review
Signed-off-by: Jonas Franz <[email protected]>
* Moved "Pending" to first position
Signed-off-by: Jonas Franz <[email protected]>
* Add GetCurrentReview to simplify fetching current review
Signed-off-by: Jonas Franz <[email protected]>
* Preview for listing comments
Signed-off-by: Jonas Franz <[email protected]>
* Move new comment form to its own file
Signed-off-by: Jonas Franz <[email protected]>
* Implement Review form
Show Review comments on comment stream
Signed-off-by: Jonas Franz <[email protected]>
* Add support for single comments
Showing buttons in context
Signed-off-by: Jonas Franz <[email protected]>
* Add pending tag to pending review comments
Signed-off-by: Jonas Franz <[email protected]>
* Add unit tests for Review
Signed-off-by: Jonas Franz <[email protected]>
* Fetch all review ids at once
Add unit tests
Signed-off-by: Jonas Franz <[email protected]>
* gofmt
Signed-off-by: Jonas Franz <[email protected]>
* Improved comment rendering in "Files" view by adding Comments to DiffLine
Signed-off-by: Jonas Franz <[email protected]>
* Add support for invalidating comments
Signed-off-by: Jonas Franz <[email protected]>
* Switched back to code.gitea.io/git
Signed-off-by: Jonas Franz <[email protected]>
* Moved review migration from v64 to v65
Signed-off-by: Jonas Franz <[email protected]>
* Rebuild css
Signed-off-by: Jonas Franz <[email protected]>
* gofmt
Signed-off-by: Jonas Franz <[email protected]>
* Improve translations
Signed-off-by: Jonas Franz <[email protected]>
* Fix unit tests by updating fixtures and updating outdated test
Signed-off-by: Jonas Franz <[email protected]>
* Comments will be shown at the right place now
Signed-off-by: Jonas Franz <[email protected]>
* Add support for deleting CodeComments
Signed-off-by: Jonas Franz <[email protected]>
* Fix problems caused by files in subdirectories
Signed-off-by: Jonas Franz <[email protected]>
* Add support for showing code comments of reviews in conversation
Signed-off-by: Jonas Franz <[email protected]>
* Add support for "Show/Hide outdated"
Signed-off-by: Jonas Franz <[email protected]>
* Update code.gitea.io/git
Signed-off-by: Jonas Franz <[email protected]>
* Add support for new webhooks
Signed-off-by: Jonas Franz <[email protected]>
* Update comparison
Signed-off-by: Jonas Franz <[email protected]>
* Resolve conflicts
Signed-off-by: Jonas Franz <[email protected]>
* Minor UI improvements
* update code.gitea.io/git
* Fix ui bug reported by @lunny causing wrong position of add button
Add functionality to "Cancel" button
Add scale effects to add button
Hide "Cancel" button for existing comments
Signed-off-by: Jonas Franz <[email protected]>
* Prepare solving conflicts
Signed-off-by: Jonas Franz <[email protected]>
* Show add button only if no comments already exist for the line
Signed-off-by: Jonas Franz <[email protected]>
* Add missing vendor files
Signed-off-by: Jonas Franz <[email protected]>
* Check if reviewer is nil
Signed-off-by: Jonas Franz <[email protected]>
* Show forms only to users who are logged in
Signed-off-by: Jonas Franz <[email protected]>
* Revert "Show forms only to users who are logged in"
This reverts commit c083682
Signed-off-by: Jonas Franz <[email protected]>
* Save patch in comment
Render patch for code comments
Signed-off-by: Jonas Franz <[email protected]>
* Add link to comment in code
Signed-off-by: Jonas Franz <[email protected]>
* Add reply form to comment list
Show forms only to signed in users
Signed-off-by: Jonas Franz <[email protected]>
* Add 'Reply' as translatable
Add CODE_COMMENT_LINES setting
Signed-off-by: Jonas Franz <[email protected]>
* gofmt
Signed-off-by: Jonas Franz <[email protected]>
* Fix problems introduced by checking for singed in user
Signed-off-by: Jonas Franz <[email protected]>
* Add v70
Signed-off-by: Jonas Franz <[email protected]>
* Update generated stylesheet
Signed-off-by: Jonas Franz <[email protected]>
* Fix preview
Beginn with new review comment patch system
Signed-off-by: Jonas Franz <[email protected]>
* Add new algo to generate diff for line range
Remove old algo used for cutting big diffs (it was very buggy)
* Add documentation and example for CutDiffAroundLine
* Fix example of CutDiffAroundLine
* Fix some comment UI rendering bugs
* Add code comment edit mode
* Send notifications / actions to users until review gets published
Fix diff generation bug
Fix wrong hashtag
* Fix vet errors
* Send notifications also for single comments
* Fix some notification bugs, fix link
* Fix: add comment icon is only shown on code lines
* Add lint comment
* Add unit tests for git diff
* Add more error messages
* Regenerated css
Signed-off-by: Jonas Franz <[email protected]>
* fmt
Signed-off-by: Jonas Franz <[email protected]>
* Regenerated CSS with latest less version
Signed-off-by: Jonas Franz <[email protected]>
* Fix test by updating comment type to new ID
Signed-off-by: Jonas Franz <[email protected]>
* Introducing CodeComments as type for map[string]map[int64][]*Comment
Other minor code improvements
Signed-off-by: Jonas Franz <[email protected]>
* Fix data-tab issues
Signed-off-by: Jonas Franz <[email protected]>
* Remove unnecessary change
Signed-off-by: Jonas Franz <[email protected]>
* refactored checkForInvalidation
Signed-off-by: Jonas Franz <[email protected]>
* Append comments instead of setting
Signed-off-by: Jonas Franz <[email protected]>
* Use HeadRepo instead of BaseRepo
Signed-off-by: Jonas Franz <[email protected]>
* Update migration
Signed-off-by: Jonas Franz <[email protected]>
* Regenerated CSS
Signed-off-by: Jonas Franz <[email protected]>
* Add copyright
Signed-off-by: Jonas Franz <[email protected]>
* Update index.css
Signed-off-by: Jonas Franz <[email protected]>