Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
19862725
authored
2013-09-12 15:24:08 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
support template
1 parent
f502f844
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
30 deletions
controller.go
utils.go
controller.go
View file @
1986272
...
...
@@ -136,25 +136,32 @@ func (c *Controller) RenderBytes() ([]byte, error) {
}
err
:=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
newbytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
LayoutTplErrDeal
:
if
terr
,
ok
:=
err
.
(
*
template
.
Error
);
ok
{
if
terr
.
ErrorCode
==
template
.
ErrNoSuchTemplate
{
reg
:=
regexp
.
MustCompile
(
"
\"
(.+)
\"
"
)
a
:=
reg
.
FindStringSubmatch
(
terr
.
Description
)
reg
:=
regexp
.
MustCompile
(
"{{template
\"
(.+)
\"
"
)
filedata
,
_
:=
ioutil
.
ReadFile
(
path
.
Join
(
ViewsPath
,
c
.
TplNames
))
a
:=
reg
.
FindStringSubmatch
(
string
(
filedata
))
if
len
(
a
)
>
1
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
a
[
1
])
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
for
_
,
tfile
:=
range
a
[
1
:
]
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
tfile
)
if
ok
,
_
:=
FileExists
(
missfile
);
ok
{
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
}
}
for
k
,
v
:=
range
AllTemplateFiles
.
files
{
BeeTemplates
[
k
]
=
template
.
Must
(
template
.
New
(
"beegoTemplate"
+
k
)
.
Delims
(
TemplateLeft
,
TemplateRight
)
.
Funcs
(
beegoTplFuncMap
)
.
ParseFiles
(
v
...
))
}
err
=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
newbytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
goto
LayoutTplErrDeal
Trace
(
"template Execute err:"
,
err
)
}
goto
LayoutTplOk
}
}
}
Trace
(
"template Execute err:"
,
err
)
}
LayoutTplOk
:
tplcontent
,
_
:=
ioutil
.
ReadAll
(
newbytes
)
c
.
Data
[
"LayoutContent"
]
=
template
.
HTML
(
string
(
tplcontent
))
subdir
=
path
.
Dir
(
c
.
Layout
)
...
...
@@ -162,26 +169,32 @@ func (c *Controller) RenderBytes() ([]byte, error) {
ibytes
:=
bytes
.
NewBufferString
(
""
)
err
=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
ibytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
LayoutErrDeal
:
if
terr
,
ok
:=
err
.
(
*
template
.
Error
);
ok
{
if
terr
.
ErrorCode
==
template
.
ErrNoSuchTemplate
{
reg
:=
regexp
.
MustCompile
(
"
\"
(.+)
\"
"
)
a
:=
reg
.
FindStringSubmatch
(
terr
.
Description
)
reg
:=
regexp
.
MustCompile
(
"{{template
\"
(.+)
\"
"
)
filedata
,
_
:=
ioutil
.
ReadFile
(
path
.
Join
(
ViewsPath
,
c
.
Layout
))
a
:=
reg
.
FindStringSubmatch
(
string
(
filedata
))
if
len
(
a
)
>
1
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
a
[
1
])
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
for
_
,
tfile
:=
range
a
[
1
:
]
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
tfile
)
if
ok
,
_
:=
FileExists
(
missfile
);
ok
{
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
}
}
for
k
,
v
:=
range
AllTemplateFiles
.
files
{
BeeTemplates
[
k
]
=
template
.
Must
(
template
.
New
(
"beegoTemplate"
+
k
)
.
Delims
(
TemplateLeft
,
TemplateRight
)
.
Funcs
(
beegoTplFuncMap
)
.
ParseFiles
(
v
...
))
}
err
=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
ibytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
goto
LayoutErrDeal
Trace
(
"template Execute err:"
,
err
)
}
goto
LayoutOk
}
}
}
Trace
(
"template Execute err:"
,
err
)
}
LayoutOk
:
icontent
,
_
:=
ioutil
.
ReadAll
(
ibytes
)
return
icontent
,
nil
}
else
{
...
...
@@ -200,26 +213,31 @@ func (c *Controller) RenderBytes() ([]byte, error) {
}
err
:=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
ibytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
ErrDeal
:
if
terr
,
ok
:=
err
.
(
*
template
.
Error
);
ok
{
if
terr
.
ErrorCode
==
template
.
ErrNoSuchTemplate
{
reg
:=
regexp
.
MustCompile
(
"
\"
(.+)
\"
"
)
a
:=
reg
.
FindStringSubmatch
(
terr
.
Description
)
reg
:=
regexp
.
MustCompile
(
"{{template
\"
(.+)
\"
"
)
filedata
,
_
:=
ioutil
.
ReadFile
(
path
.
Join
(
ViewsPath
,
c
.
TplNames
))
a
:=
reg
.
FindStringSubmatch
(
string
(
filedata
))
if
len
(
a
)
>
1
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
a
[
1
])
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
for
_
,
tfile
:=
range
a
[
1
:
]
{
missfile
:=
path
.
Join
(
ViewsPath
,
subdir
,
tfile
)
if
ok
,
_
:=
FileExists
(
missfile
);
ok
{
AllTemplateFiles
.
files
[
subdir
]
=
append
(
AllTemplateFiles
.
files
[
subdir
],
missfile
)
}
}
for
k
,
v
:=
range
AllTemplateFiles
.
files
{
BeeTemplates
[
k
]
=
template
.
Must
(
template
.
New
(
"beegoTemplate"
+
k
)
.
Delims
(
TemplateLeft
,
TemplateRight
)
.
Funcs
(
beegoTplFuncMap
)
.
ParseFiles
(
v
...
))
}
err
=
BeeTemplates
[
subdir
]
.
ExecuteTemplate
(
ibytes
,
file
,
c
.
Data
)
if
err
!=
nil
{
goto
ErrDeal
Trace
(
"template Execute err:"
,
err
)
}
goto
TplOk
}
}
}
Trace
(
"template Execute err:"
,
err
)
}
TplOk
:
icontent
,
_
:=
ioutil
.
ReadAll
(
ibytes
)
return
icontent
,
nil
}
...
...
utils.go
View file @
1986272
...
...
@@ -4,6 +4,7 @@ import (
"fmt"
"html/template"
"net/url"
"os"
"reflect"
"regexp"
"strconv"
...
...
@@ -68,14 +69,14 @@ func DateFormat(t time.Time, layout string) (datestring string) {
var
DatePatterns
=
[]
string
{
// year
"Y"
,
"2006"
,
// A full numeric representation of a year, 4 digits
Examples: 1999 or 2003
"y"
,
"06"
,
//A two digit representation of a year
Examples: 99 or 03
"Y"
,
"2006"
,
// A full numeric representation of a year, 4 digits
Examples: 1999 or 2003
"y"
,
"06"
,
//A two digit representation of a year
Examples: 99 or 03
// month
"m"
,
"01"
,
// Numeric representation of a month, with leading zeros 01 through 12
"n"
,
"1"
,
// Numeric representation of a month, without leading zeros
1 through 12
"n"
,
"1"
,
// Numeric representation of a month, without leading zeros
1 through 12
"M"
,
"Jan"
,
// A short textual representation of a month, three letters Jan through Dec
"F"
,
"January"
,
// A full textual representation of a month, such as January or March
January through December
"F"
,
"January"
,
// A full textual representation of a month, such as January or March
January through December
// day
"d"
,
"02"
,
// Day of the month, 2 digits with leading zeros 01 to 31
...
...
@@ -83,19 +84,19 @@ var DatePatterns = []string{
// week
"D"
,
"Mon"
,
// A textual representation of a day, three letters Mon through Sun
"l"
,
"Monday"
,
// A full textual representation of the day of the week
Sunday through Saturday
"l"
,
"Monday"
,
// A full textual representation of the day of the week
Sunday through Saturday
// time
"g"
,
"3"
,
// 12-hour format of an hour without leading zeros
1 through 12
"G"
,
"15"
,
// 24-hour format of an hour without leading zeros
0 through 23
"h"
,
"03"
,
// 12-hour format of an hour with leading zeros
01 through 12
"H"
,
"15"
,
// 24-hour format of an hour with leading zeros
00 through 23
"g"
,
"3"
,
// 12-hour format of an hour without leading zeros
1 through 12
"G"
,
"15"
,
// 24-hour format of an hour without leading zeros
0 through 23
"h"
,
"03"
,
// 12-hour format of an hour with leading zeros
01 through 12
"H"
,
"15"
,
// 24-hour format of an hour with leading zeros
00 through 23
"a"
,
"pm"
,
// Lowercase Ante meridiem and Post meridiem am or pm
"A"
,
"PM"
,
// Uppercase Ante meridiem and Post meridiem AM or PM
"i"
,
"04"
,
// Minutes with leading zeros
00 to 59
"s"
,
"05"
,
// Seconds, with leading zeros
00 through 59
"i"
,
"04"
,
// Minutes with leading zeros
00 to 59
"s"
,
"05"
,
// Seconds, with leading zeros
00 through 59
// time zone
"T"
,
"MST"
,
...
...
@@ -350,3 +351,14 @@ func stringsToJson(str string) string {
}
return
jsons
}
func
FileExists
(
path
string
)
(
bool
,
error
)
{
_
,
err
:=
os
.
Stat
(
path
)
if
err
==
nil
{
return
true
,
nil
}
if
os
.
IsNotExist
(
err
)
{
return
false
,
nil
}
return
false
,
err
}
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment