aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2023-04-17 12:20:47 -0400
committerGitHub <noreply@github.com>2023-04-17 12:20:47 -0400
commit3d3c740636632255f58d55e544b523c5c82162b4 (patch)
treeccd13ea1b68a7f23983e43c7e832c5709e41a926
parentc4f569b9a5f4f5d31b79e626e3a6a32fdcc55bd0 (diff)
downloadgitea-3d3c740636632255f58d55e544b523c5c82162b4.tar.gz
gitea-3d3c740636632255f58d55e544b523c5c82162b4.zip
Fix Org edit page bugs: renaming detection, maxlength (#24161) (#24171)
Backport #24161 by @wxiaoguang ## Before * The renaming detection is wrong (eg: pasting a new name into the input doesn't trigger the detection) * The renaming prompt layout is not good * Some MaxSize/maxlength rules is missing Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--modules/structs/org.go6
-rw-r--r--templates/org/create.tmpl2
-rw-r--r--templates/org/settings/options.tmpl15
-rw-r--r--web_src/js/features/common-organization.js19
4 files changed, 17 insertions, 25 deletions
diff --git a/modules/structs/org.go b/modules/structs/org.go
index b4c58623fd..7c83dcdee7 100644
--- a/modules/structs/org.go
+++ b/modules/structs/org.go
@@ -30,8 +30,8 @@ type OrganizationPermissions struct {
// CreateOrgOption options for creating an organization
type CreateOrgOption struct {
// required: true
- UserName string `json:"username" binding:"Required"`
- FullName string `json:"full_name"`
+ UserName string `json:"username" binding:"Required;Username;MaxSize(40)"`
+ FullName string `json:"full_name" binding:"MaxSize(100)"`
Description string `json:"description" binding:"MaxSize(255)"`
Website string `json:"website" binding:"ValidUrl;MaxSize(255)"`
Location string `json:"location" binding:"MaxSize(50)"`
@@ -45,7 +45,7 @@ type CreateOrgOption struct {
// EditOrgOption options for editing an organization
type EditOrgOption struct {
- FullName string `json:"full_name"`
+ FullName string `json:"full_name" binding:"MaxSize(100)"`
Description string `json:"description" binding:"MaxSize(255)"`
Website string `json:"website" binding:"ValidUrl;MaxSize(255)"`
Location string `json:"location" binding:"MaxSize(50)"`
diff --git a/templates/org/create.tmpl b/templates/org/create.tmpl
index 26321f6208..0cc93c1e98 100644
--- a/templates/org/create.tmpl
+++ b/templates/org/create.tmpl
@@ -11,7 +11,7 @@
{{template "base/alert" .}}
<div class="inline required field {{if .Err_OrgName}}error{{end}}">
<label for="org_name">{{.locale.Tr "org.org_name_holder"}}</label>
- <input id="org_name" name="org_name" value="{{.org_name}}" autofocus required>
+ <input id="org_name" name="org_name" value="{{.org_name}}" autofocus required maxlength="40">
<span class="help">{{.locale.Tr "org.org_name_helper"}}</span>
</div>
diff --git a/templates/org/settings/options.tmpl b/templates/org/settings/options.tmpl
index c1623db4d7..a7ddb1fa41 100644
--- a/templates/org/settings/options.tmpl
+++ b/templates/org/settings/options.tmpl
@@ -14,26 +14,27 @@
{{.CsrfTokenHtml}}
<div class="required field {{if .Err_Name}}error{{end}}">
<label for="org_name">{{.locale.Tr "org.org_name_holder"}}
- <span class="text red gt-hidden" id="org-name-change-prompt"> {{.locale.Tr "org.settings.change_orgname_prompt"}}</span>
- <span class="text red gt-hidden" id="org-name-change-redirect-prompt"> {{.locale.Tr "org.settings.change_orgname_redirect_prompt"}}</span>
+ <span class="text red gt-hidden" id="org-name-change-prompt">
+ <br>{{.locale.Tr "org.settings.change_orgname_prompt"}}<br>{{.locale.Tr "org.settings.change_orgname_redirect_prompt"}}
+ </span>
</label>
- <input id="org_name" name="name" value="{{.Org.Name}}" data-org-name="{{.Org.Name}}" autofocus required>
+ <input id="org_name" name="name" value="{{.Org.Name}}" data-org-name="{{.Org.Name}}" autofocus required maxlength="40">
</div>
<div class="field {{if .Err_FullName}}error{{end}}">
<label for="full_name">{{.locale.Tr "org.org_full_name_holder"}}</label>
- <input id="full_name" name="full_name" value="{{.Org.FullName}}">
+ <input id="full_name" name="full_name" value="{{.Org.FullName}}" maxlength="100">
</div>
<div class="field {{if .Err_Description}}error{{end}}">
<label for="description">{{$.locale.Tr "org.org_desc"}}</label>
- <textarea id="description" name="description" rows="2">{{.Org.Description}}</textarea>
+ <textarea id="description" name="description" rows="2" maxlength="255">{{.Org.Description}}</textarea>
</div>
<div class="field {{if .Err_Website}}error{{end}}">
<label for="website">{{.locale.Tr "org.settings.website"}}</label>
- <input id="website" name="website" type="url" value="{{.Org.Website}}">
+ <input id="website" name="website" type="url" value="{{.Org.Website}}" maxlength="255">
</div>
<div class="field">
<label for="location">{{.locale.Tr "org.settings.location"}}</label>
- <input id="location" name="location" value="{{.Org.Location}}">
+ <input id="location" name="location" value="{{.Org.Location}}" maxlength="50">
</div>
<div class="ui divider"></div>
diff --git a/web_src/js/features/common-organization.js b/web_src/js/features/common-organization.js
index 1796efc6a8..352e824b05 100644
--- a/web_src/js/features/common-organization.js
+++ b/web_src/js/features/common-organization.js
@@ -1,25 +1,16 @@
import $ from 'jquery';
import {initCompLabelEdit} from './comp/LabelEdit.js';
-import {hideElem, showElem} from '../utils/dom.js';
+import {toggleElem} from '../utils/dom.js';
export function initCommonOrganization() {
if ($('.organization').length === 0) {
return;
}
- if ($('.organization.settings.options').length > 0) {
- $('#org_name').on('keyup', function () {
- const $prompt = $('#org-name-change-prompt');
- const $prompt_redirect = $('#org-name-change-redirect-prompt');
- if ($(this).val().toString().toLowerCase() !== $(this).data('org-name').toString().toLowerCase()) {
- showElem($prompt);
- showElem($prompt_redirect);
- } else {
- hideElem($prompt);
- hideElem($prompt_redirect);
- }
- });
- }
+ $('.organization.settings.options #org_name').on('input', function () {
+ const nameChanged = $(this).val().toLowerCase() !== $(this).attr('data-org-name').toLowerCase();
+ toggleElem('#org-name-change-prompt', nameChanged);
+ });
// Labels
initCompLabelEdit('.organization.settings.labels');