Procházet zdrojové kódy

Merge pull request #311 from nuss-justin/issue/281

Fix #281. Add mouse-over precise time and on-click switch listener.
tags/v0.9.99
无闻 před 10 roky
rodič
revize
568c9b353e
4 změnil soubory, kde provedl 80 přidání a 2 odebrání
  1. 6
    0
      conf/app.ini
  2. 7
    2
      modules/base/tool.go
  3. 53
    0
      modules/setting/setting.go
  4. 14
    0
      public/js/app.js

+ 6
- 0
conf/app.ini Zobrazit soubor

@@ -186,6 +186,12 @@ MAX_SIZE = 32
; Max number of files per upload. Defaults to 10
MAX_FILES = 10

[time]
; Specifies the format for fully outputed dates. Defaults to RFC1123
; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
; For more information about the format see http://golang.org/pkg/time/#pkg-constants
FORMAT =

[log]
ROOT_PATH =
; Either "console", "file", "conn", "smtp" or "database", default is "console"

+ 7
- 2
modules/base/tool.go Zobrazit soubor

@@ -12,6 +12,7 @@ import (
"encoding/hex"
"fmt"
"hash"
"html/template"
"math"
"strings"
"time"
@@ -241,8 +242,7 @@ func TimeSincePro(then time.Time) string {
return strings.TrimPrefix(timeStr, ", ")
}

// TimeSince calculates the time interval and generate user-friendly string.
func TimeSince(then time.Time, lang string) string {
func timeSince(then time.Time, lang string) string {
now := time.Now()

lbl := i18n.Tr(lang, "tool.ago")
@@ -292,6 +292,11 @@ func TimeSince(then time.Time, lang string) string {
}
}

// TimeSince calculates the time interval and generate user-friendly string.
func TimeSince(t time.Time, lang string) template.HTML {
return template.HTML(fmt.Sprintf(`<span class="time-since" title="%s">%s</span>`, t.Format(setting.TimeFormat), timeSince(t, lang)))
}

const (
Byte = 1
KByte = Byte * 1024

+ 53
- 0
modules/setting/setting.go Zobrazit soubor

@@ -11,6 +11,7 @@ import (
"path"
"path/filepath"
"strings"
"time"

"github.com/Unknwon/com"
"github.com/Unknwon/goconfig"
@@ -77,6 +78,9 @@ var (
AttachmentMaxFiles int
AttachmentEnabled bool

// Time settings.
TimeFormat string

// Cache settings.
CacheAdapter string
CacheInternal int
@@ -183,6 +187,55 @@ func NewConfigContext() {
AttachmentMaxFiles = Cfg.MustInt("attachment", "MAX_FILES", 10)
AttachmentEnabled = Cfg.MustBool("attachment", "ENABLE", true)

TimeFormat = Cfg.MustValue("time", "FORMAT", time.RFC1123)

switch TimeFormat {
case "ANSIC":
TimeFormat = time.ANSIC

case "UnixDate":
TimeFormat = time.UnixDate

case "RubyDate":
TimeFormat = time.RubyDate

case "RFC822":
TimeFormat = time.RFC822

case "RFC822Z":
TimeFormat = time.RFC822Z

case "RFC850":
TimeFormat = time.RFC850

case "RFC1123":
TimeFormat = time.RFC1123

case "RFC1123Z":
TimeFormat = time.RFC1123Z

case "RFC3339":
TimeFormat = time.RFC3339

case "RFC3339Nano":
TimeFormat = time.RFC3339Nano

case "Kitchen":
TimeFormat = time.Kitchen

case "Stamp":
TimeFormat = time.Stamp

case "StampMilli":
TimeFormat = time.StampMilli

case "StampMicro":
TimeFormat = time.StampMicro

case "StampNano":
TimeFormat = time.StampNano
}

if err = os.MkdirAll(AttachmentPath, os.ModePerm); err != nil {
log.Fatal(4, "Could not create directory %s: %s", AttachmentPath, err)
}

+ 14
- 0
public/js/app.js Zobrazit soubor

@@ -1120,6 +1120,18 @@ function initOrganization() {
console.log("init script : organization done");
}

function initTimeSwitch() {
$(".time-since[title]").on("click", function() {
var $this = $(this);

var title = $this.attr("title");
var text = $this.text();

$this.text(title);
$this.attr("title", text);
});
}

(function ($) {
$(function () {
initCore();
@@ -1148,6 +1160,8 @@ function initOrganization() {
if ($('#body-nav').hasClass("org-nav")) {
initOrganization();
}

initTimeSwitch();
});
})(jQuery);


Načítá se…
Zrušit
Uložit