Fix listing icons and more
parent
55c097b2aa
commit
338e73a8b2
2
api.go
2
api.go
|
@ -133,7 +133,7 @@ func getHandler(c *requestContext, w http.ResponseWriter, r *http.Request) (int,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tries to get the file type.
|
// Tries to get the file type.
|
||||||
if err = f.RetrieveFileType(); err != nil {
|
if err = f.RetrieveFileType(true); err != nil {
|
||||||
return errorToHTTP(err, true), err
|
return errorToHTTP(err, true), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
@drop="drop"
|
@drop="drop"
|
||||||
@click="click"
|
@click="click"
|
||||||
@dblclick="open"
|
@dblclick="open"
|
||||||
:aria-selected="isSelected()">
|
:aria-selected="isSelected">
|
||||||
<div>
|
<div>
|
||||||
<i class="material-icons">{{ icon() }}</i>
|
<i class="material-icons">{{ icon }}</i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
@ -35,20 +35,20 @@ export default {
|
||||||
props: ['name', 'isDir', 'url', 'type', 'size', 'modified', 'index'],
|
props: ['name', 'isDir', 'url', 'type', 'size', 'modified', 'index'],
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['selected', 'req']),
|
...mapState(['selected', 'req']),
|
||||||
...mapGetters(['selectedCount'])
|
...mapGetters(['selectedCount']),
|
||||||
},
|
isSelected () {
|
||||||
methods: {
|
|
||||||
...mapMutations(['addSelected', 'removeSelected', 'resetSelected']),
|
|
||||||
isSelected: function () {
|
|
||||||
return (this.selected.indexOf(this.index) !== -1)
|
return (this.selected.indexOf(this.index) !== -1)
|
||||||
},
|
},
|
||||||
icon: function () {
|
icon () {
|
||||||
if (this.isDir) return 'folder'
|
if (this.isDir) return 'folder'
|
||||||
if (this.type === 'image') return 'insert_photo'
|
if (this.type === 'image') return 'insert_photo'
|
||||||
if (this.type === 'audio') return 'volume_up'
|
if (this.type === 'audio') return 'volume_up'
|
||||||
if (this.type === 'video') return 'movie'
|
if (this.type === 'video') return 'movie'
|
||||||
return 'insert_drive_file'
|
return 'insert_drive_file'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
...mapMutations(['addSelected', 'removeSelected', 'resetSelected']),
|
||||||
humanSize: function () {
|
humanSize: function () {
|
||||||
return filesize(this.size)
|
return filesize(this.size)
|
||||||
},
|
},
|
||||||
|
@ -58,6 +58,12 @@ export default {
|
||||||
dragStart: function (event) {
|
dragStart: function (event) {
|
||||||
if (this.selectedCount === 0) {
|
if (this.selectedCount === 0) {
|
||||||
this.addSelected(this.index)
|
this.addSelected(this.index)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.isSelected) {
|
||||||
|
this.resetSelected()
|
||||||
|
this.addSelected(this.index)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dragOver: function (event) {
|
dragOver: function (event) {
|
||||||
|
|
15
file.go
15
file.go
|
@ -64,7 +64,7 @@ type file struct {
|
||||||
// A listing is the context used to fill out a template.
|
// A listing is the context used to fill out a template.
|
||||||
type listing struct {
|
type listing struct {
|
||||||
// The items (files and folders) in the path.
|
// The items (files and folders) in the path.
|
||||||
Items []file `json:"items"`
|
Items []*file `json:"items"`
|
||||||
// The number of directories in the listing.
|
// The number of directories in the listing.
|
||||||
NumDirs int `json:"numDirs"`
|
NumDirs int `json:"numDirs"`
|
||||||
// The number of files (items that aren't directories) in the listing.
|
// The number of files (items that aren't directories) in the listing.
|
||||||
|
@ -124,7 +124,7 @@ func (i *file) getListing(c *requestContext, r *http.Request) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
fileinfos []file
|
fileinfos []*file
|
||||||
dirCount, fileCount int
|
dirCount, fileCount int
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -146,16 +146,19 @@ func (i *file) getListing(c *requestContext, r *http.Request) error {
|
||||||
// Absolute URL
|
// Absolute URL
|
||||||
url := url.URL{Path: i.URL + name}
|
url := url.URL{Path: i.URL + name}
|
||||||
|
|
||||||
i := file{
|
i := &file{
|
||||||
Name: f.Name(),
|
Name: f.Name(),
|
||||||
Size: f.Size(),
|
Size: f.Size(),
|
||||||
ModTime: f.ModTime(),
|
ModTime: f.ModTime(),
|
||||||
Mode: f.Mode(),
|
Mode: f.Mode(),
|
||||||
IsDir: f.IsDir(),
|
IsDir: f.IsDir(),
|
||||||
URL: url.String(),
|
URL: url.String(),
|
||||||
|
Extension: filepath.Ext(name),
|
||||||
|
VirtualPath: filepath.Join(i.VirtualPath, name),
|
||||||
|
Path: filepath.Join(i.Path, name),
|
||||||
}
|
}
|
||||||
i.RetrieveFileType()
|
|
||||||
|
|
||||||
|
i.RetrieveFileType(false)
|
||||||
fileinfos = append(fileinfos, i)
|
fileinfos = append(fileinfos, i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,14 +201,14 @@ func (i *file) getEditor() error {
|
||||||
|
|
||||||
// RetrieveFileType obtains the mimetype and converts it to a simple
|
// RetrieveFileType obtains the mimetype and converts it to a simple
|
||||||
// type nomenclature.
|
// type nomenclature.
|
||||||
func (i *file) RetrieveFileType() error {
|
func (i *file) RetrieveFileType(checkContent bool) error {
|
||||||
var content []byte
|
var content []byte
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
// Tries to get the file mimetype using its extension.
|
// Tries to get the file mimetype using its extension.
|
||||||
mimetype := mime.TypeByExtension(i.Extension)
|
mimetype := mime.TypeByExtension(i.Extension)
|
||||||
|
|
||||||
if mimetype == "" {
|
if mimetype == "" && checkContent {
|
||||||
content, err = ioutil.ReadFile(i.Path)
|
content, err = ioutil.ReadFile(i.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue