Browse Source

repo: minor improve for PR #5219 and support UTF-8 byte count

pull/5293/head
Unknwon 7 years ago
parent
commit
dfd494c113
No known key found for this signature in database
GPG Key ID: 7A02C406FAC875A2
  1. 2
      gogs.go
  2. 4
      pkg/bindata/bindata.go
  3. 4
      pkg/context/context.go
  4. 30
      public/js/gogs.js
  5. 0
      public/plugins/autosize-4.0.2/autosize.min.js
  6. 4
      routes/repo/repo.go
  7. 2
      routes/repo/setting.go
  8. 2
      templates/.VERSION
  9. 3
      templates/base/footer.tmpl
  10. 4
      templates/base/head.tmpl
  11. 11
      templates/repo/create.tmpl
  12. 11
      templates/repo/settings/options.tmpl

2
gogs.go

@ -16,7 +16,7 @@ import (
"github.com/gogs/gogs/pkg/setting" "github.com/gogs/gogs/pkg/setting"
) )
const APP_VER = "0.11.55.0609" const APP_VER = "0.11.56.0611"
func init() { func init() {
setting.AppVer = APP_VER setting.AppVer = APP_VER

4
pkg/bindata/bindata.go

File diff suppressed because one or more lines are too long

4
pkg/context/context.go

@ -68,6 +68,10 @@ func (c *Context) RequireSimpleMDE() {
c.Require("SimpleMDE") c.Require("SimpleMDE")
} }
func (c *Context) RequireAutosize() {
c.Require("Autosize")
}
// FormErr sets "Err_xxx" field in template data. // FormErr sets "Err_xxx" field in template data.
func (c *Context) FormErr(names ...string) { func (c *Context) FormErr(names ...string) {
for i := range names { for i := range names {

30
public/js/gogs.js

@ -1262,6 +1262,12 @@ $(document).ready(function () {
e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')) e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original'))
}); });
// Autosize
if ($('#description.autosize').length > 0) {
autosize($('#description'));
showMessageMaxLength(512, 'description', 'descLength');
}
// AJAX load buttons // AJAX load buttons
$('.ajax-load-button').click(function () { $('.ajax-load-button').click(function () {
var $this = $(this); var $this = $(this);
@ -1444,14 +1450,32 @@ $(function () {
$('form').areYouSure(); $('form').areYouSure();
}); });
// getByteLen counts bytes in a string's UTF-8 representation.
function getByteLen(normalVal) {
// Force string type
normalVal = String(normalVal);
var byteLen = 0;
for (var i = 0; i < normalVal.length; i++) {
var c = normalVal.charCodeAt(i);
byteLen += c < (1 << 7) ? 1 :
c < (1 << 11) ? 2 :
c < (1 << 16) ? 3 :
c < (1 << 21) ? 4 :
c < (1 << 26) ? 5 :
c < (1 << 31) ? 6 : Number.NaN;
}
return byteLen;
}
function showMessageMaxLength(maxLen, textElemId, counterId) { function showMessageMaxLength(maxLen, textElemId, counterId) {
var $msg = $('#'+textElemId); //text message var $msg = $('#'+textElemId);
$('#'+counterId).html(maxLen - $msg.val().length); //symbols count $('#'+counterId).html(maxLen - getByteLen($msg.val()));
var onMessageKey = function (e) { var onMessageKey = function (e) {
var $msg = $(this); var $msg = $(this);
var text = $msg.val(); var text = $msg.val();
var len = text.length; var len = getByteLen(text);
var remainder = maxLen - len; var remainder = maxLen - len;
if (len >= maxLen) { if (len >= maxLen) {

0
public/plugins/autosize-4.0.2/dist/autosize.min.js → public/plugins/autosize-4.0.2/autosize.min.js vendored

4
routes/repo/repo.go

@ -66,7 +66,8 @@ func checkContextUser(c *context.Context, uid int64) *models.User {
} }
func Create(c *context.Context) { func Create(c *context.Context) {
c.Data["Title"] = c.Tr("new_repo") c.Title("new_repo")
c.RequireAutosize()
// Give default value for template to render. // Give default value for template to render.
c.Data["Gitignores"] = models.Gitignores c.Data["Gitignores"] = models.Gitignores
@ -75,7 +76,6 @@ func Create(c *context.Context) {
c.Data["readme"] = "Default" c.Data["readme"] = "Default"
c.Data["private"] = c.User.LastRepoVisibility c.Data["private"] = c.User.LastRepoVisibility
c.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate c.Data["IsForcedPrivate"] = setting.Repository.ForcePrivate
c.Data["RequireAutosize"] = true
ctxUser := checkContextUser(c, c.QueryInt64("org")) ctxUser := checkContextUser(c, c.QueryInt64("org"))
if c.Written() { if c.Written() {

2
routes/repo/setting.go

@ -34,7 +34,7 @@ const (
func Settings(c *context.Context) { func Settings(c *context.Context) {
c.Title("repo.settings") c.Title("repo.settings")
c.PageIs("SettingsOptions") c.PageIs("SettingsOptions")
c.Data["RequireAutosize"] = true c.RequireAutosize()
c.Success(SETTINGS_OPTIONS) c.Success(SETTINGS_OPTIONS)
} }

2
templates/.VERSION

@ -1 +1 @@
0.11.55.0609 0.11.56.0611

3
templates/base/footer.tmpl

@ -49,6 +49,9 @@
<link rel="stylesheet" href="{{AppSubURL}}/plugins/dropzone-4.2.0/dropzone.css"> <link rel="stylesheet" href="{{AppSubURL}}/plugins/dropzone-4.2.0/dropzone.css">
<script src="{{AppSubURL}}/plugins/dropzone-4.2.0/dropzone.js"></script> <script src="{{AppSubURL}}/plugins/dropzone-4.2.0/dropzone.js"></script>
{{end}} {{end}}
{{if .RequireAutosize}}
<script src="{{AppSubURL}}/plugins/autosize-4.0.2/autosize.min.js"></script>
{{end}}
<script src="{{AppSubURL}}/js/libs/emojify-1.1.0.min.js"></script> <script src="{{AppSubURL}}/js/libs/emojify-1.1.0.min.js"></script>
<script src="{{AppSubURL}}/js/libs/clipboard-1.5.9.min.js"></script> <script src="{{AppSubURL}}/js/libs/clipboard-1.5.9.min.js"></script>

4
templates/base/head.tmpl

@ -41,9 +41,7 @@
<script src="{{AppSubURL}}/js/libs/jquery.are-you-sure.js"></script> <script src="{{AppSubURL}}/js/libs/jquery.are-you-sure.js"></script>
<link rel="stylesheet" href="{{AppSubURL}}/assets/font-awesome-4.6.3/css/font-awesome.min.css"> <link rel="stylesheet" href="{{AppSubURL}}/assets/font-awesome-4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{{AppSubURL}}/assets/octicons-4.3.0/octicons.min.css"> <link rel="stylesheet" href="{{AppSubURL}}/assets/octicons-4.3.0/octicons.min.css">
{{if .RequireAutosize}}
<script src="{{AppSubURL}}/plugins/autosize-4.0.2/dist/autosize.min.js"></script>
{{end}}
<!-- notebook.js for rendering ipython notebooks and marked.js for rendering markdown in notebooks --> <!-- notebook.js for rendering ipython notebooks and marked.js for rendering markdown in notebooks -->
{{if .IsIPythonNotebook}} {{if .IsIPythonNotebook}}
<script src="{{AppSubURL}}/plugins/notebookjs-0.3.0/notebook.min.js"></script> <script src="{{AppSubURL}}/plugins/notebookjs-0.3.0/notebook.min.js"></script>

11
templates/repo/create.tmpl

@ -52,7 +52,7 @@
</div> </div>
<div class="inline field {{if .Err_Description}}error{{end}}"> <div class="inline field {{if .Err_Description}}error{{end}}">
<label for="description">{{.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description" rows="3">{{.description}}</textarea> <textarea class="autosize" id="description" name="description" rows="3">{{.description}}</textarea>
<span class="help">{{.i18n.Tr "repo.repo_description_helper" | Safe}}</span> <span class="help">{{.i18n.Tr "repo.repo_description_helper" | Safe}}</span>
<span class="help">{{.i18n.Tr "repo.repo_description_length"}}: <span id="descLength"></span></span> <span class="help">{{.i18n.Tr "repo.repo_description_length"}}: <span id="descLength"></span></span>
</div> </div>
@ -116,13 +116,4 @@
</div> </div>
</div> </div>
<script type="text/javascript">
$(document).ready(function(){
if (typeof window.autosize !== "undefined") {
autosize($('#description'));
}
showMessageMaxLength(512, 'description', 'descLength');
});
</script>
{{template "base/footer" .}} {{template "base/footer" .}}

11
templates/repo/settings/options.tmpl

@ -19,7 +19,7 @@
</div> </div>
<div class="field {{if .Err_Description}}error{{end}}"> <div class="field {{if .Err_Description}}error{{end}}">
<label for="description">{{$.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{$.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description" rows="3">{{.Repository.Description}}</textarea> <textarea class="autosize" id="description" name="description" rows="3">{{.Repository.Description}}</textarea>
<p class="help">{{.i18n.Tr "repo.settings.description_desc"}}</p> <p class="help">{{.i18n.Tr "repo.settings.description_desc"}}</p>
<p class="help">{{.i18n.Tr "repo.settings.description_length"}}: <span id="descLength"></span></p> <p class="help">{{.i18n.Tr "repo.settings.description_length"}}: <span id="descLength"></span></p>
</div> </div>
@ -417,13 +417,4 @@
{{end}} {{end}}
{{end}} {{end}}
<script type="text/javascript">
$(document).ready(function(){
if (typeof window.autosize !== "undefined") {
autosize($('#description'));
}
showMessageMaxLength(512, 'description', 'descLength');
});
</script>
{{template "base/footer" .}} {{template "base/footer" .}}

Loading…
Cancel
Save