Add torrentFileExists function, check if torrent file exists and if it doesn't lower the opacity on the torrent download button (#1504)
* Add torrentFileExists function * If torrent file doesn't exist, put torrent download button opacity at 50% * ditto for listing * Forgot an if * attempt at fixing travis by adding function into test templates * Attempt at fixing travis by having sex with my own mother * fix wrong error message * Add torrentFileExists as global function * Update template_functions.go
Cette révision appartient à :
Parent
ea7d42210c
révision
35d4eb9ca8
4 fichiers modifiés avec 33 ajouts et 7 suppressions
|
@ -87,11 +87,9 @@
|
||||||
<a href="{{.Magnet}}" title="{{ T("magnet_link") }}">
|
<a href="{{.Magnet}}" title="{{ T("magnet_link") }}">
|
||||||
<div class="icon-magnet"></div>
|
<div class="icon-magnet"></div>
|
||||||
</a>
|
</a>
|
||||||
{{if .TorrentLink != ""}}
|
<a href="{{.TorrentLink}}" title="{{ T("torrent_file") }}" {{if !torrentFileExists(.Hash)}}class="hidden"{{end}}>
|
||||||
<a href="{{.TorrentLink}}" title="{{ T("torrent_file") }}">
|
|
||||||
<div class="icon-floppy"></div>
|
<div class="icon-floppy"></div>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
|
||||||
</td>
|
</td>
|
||||||
<td class="tr-size home-td hide-xs">
|
<td class="tr-size home-td hide-xs">
|
||||||
{{ fileSize(.Filesize, T) }}
|
{{ fileSize(.Filesize, T) }}
|
||||||
|
|
|
@ -133,11 +133,9 @@
|
||||||
<a href="{{Torrent.Magnet}}" class="form-input btn-green download" style="float:left;height: auto;margin-right: 0.5em;">
|
<a href="{{Torrent.Magnet}}" class="form-input btn-green download" style="float:left;height: auto;margin-right: 0.5em;">
|
||||||
<div class="icon-magnet"></div> {{ T("magnet_link")}}
|
<div class="icon-magnet"></div> {{ T("magnet_link")}}
|
||||||
</a>
|
</a>
|
||||||
{{ if Torrent.TorrentLink != ""}}
|
<a href="{{Torrent.TorrentLink}}" class="form-input download{{ if !torrentFileExists(Torrent.Hash)}} hidden{{end}}" style="float:left;height: auto;">
|
||||||
<a href="{{Torrent.TorrentLink}}" class="form-input download" style="float:left;height: auto;">
|
|
||||||
<div class="icon-floppy"></div> {{ T("torrent_file")}}
|
<div class="icon-floppy"></div> {{ T("torrent_file")}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
|
||||||
{{ if User.ID > 0}}
|
{{ if User.ID > 0}}
|
||||||
<a id="reportPopup" href="#" class="form-input">{{ T("report_btn") }}</a>
|
<a id="reportPopup" href="#" class="form-input">{{ T("report_btn") }}</a>
|
||||||
{{ if User.HasAdmin()}}
|
{{ if User.HasAdmin()}}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
"os"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -30,7 +32,7 @@ func templateFunctions(vars jet.VarMap) jet.VarMap {
|
||||||
vars.Set("getDefaultLanguage", publicSettings.GetDefaultLanguage)
|
vars.Set("getDefaultLanguage", publicSettings.GetDefaultLanguage)
|
||||||
vars.Set("FlagCode", flagCode)
|
vars.Set("FlagCode", flagCode)
|
||||||
vars.Set("getAvatar", getAvatar)
|
vars.Set("getAvatar", getAvatar)
|
||||||
|
vars.Set("torrentFileExists", torrentFileExists)
|
||||||
vars.Set("formatDateRFC", formatDateRFC)
|
vars.Set("formatDateRFC", formatDateRFC)
|
||||||
vars.Set("GetHostname", format.GetHostname)
|
vars.Set("GetHostname", format.GetHostname)
|
||||||
vars.Set("GetCategories", categories.GetSelect)
|
vars.Set("GetCategories", categories.GetSelect)
|
||||||
|
@ -292,3 +294,13 @@ func contains(arr interface{}, comp string) bool {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func torrentFileExists(hash string) bool {
|
||||||
|
|
||||||
|
Openfile, err := os.Open(fmt.Sprintf("%s%c%s.torrent", config.Get().Torrents.FileStorage, os.PathSeparator, hash))
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer Openfile.Close()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
|
@ -588,6 +588,24 @@ func TestContains(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testTorrentFileExists(t *testing.T) {
|
||||||
|
var tests = []struct {
|
||||||
|
hash string
|
||||||
|
Expected bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
hash: "",
|
||||||
|
Expected: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
value := torrentFileExists(test.hash)
|
||||||
|
if value != test.Expected {
|
||||||
|
t.Errorf("Unexpected value from the function TorrentFileExists, got '%t', wanted '%t' for '%s'", value, test.Expected, test.hash)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func mockupTemplateT(t *testing.T) publicSettings.TemplateTfunc {
|
func mockupTemplateT(t *testing.T) publicSettings.TemplateTfunc {
|
||||||
conf := config.Get().I18n
|
conf := config.Get().I18n
|
||||||
conf.Directory = path.Join("..", conf.Directory)
|
conf.Directory = path.Join("..", conf.Directory)
|
||||||
|
|
Référencer dans un nouveau ticket