Fix listing icons and more

Former-commit-id: 9406455a67d31ba221f4d770c27e6b019531317a [formerly 8b09c630bb53a1402aeceb5a6aa925c30935a796] [formerly 12b8050b5f3950fbd08238b431fa2f80c7a7cf6b [formerly 338e73a8b2]]
Former-commit-id: 5e065778adf3521aea2da98d4dd2054cf29f28bd [formerly c00e9fec37dd8004bb6f5cdbb41adf4f6a460e7a]
Former-commit-id: 532f25d150440d2eb1254fc0d77270f8144e0e0c
This commit is contained in:
Henrique Dias 2017-07-08 12:46:19 +01:00
parent 4fd33de5ad
commit a9e41695aa
3 changed files with 31 additions and 22 deletions

2
api.go
View File

@ -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
} }

View File

@ -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) {

27
file.go
View File

@ -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