frontend: dedicate a field in JSON to file hint

This commit is contained in:
nemunaire 2017-01-14 15:03:25 +01:00 committed by nemunaire
parent 2ac685be9f
commit ac3f9129b2
3 changed files with 28 additions and 28 deletions

View File

@ -30,18 +30,16 @@
<div class="panel-heading">
<div class="panel-title"><span class="glyphicon glyphicon-lamp" aria-hidden="true"></span> Indices</div>
</div>
<ul class="list-group">
<li class="list-group-item" ng-repeat="hint in my.exercices[current_exercice].hints">
<form class="pull-right" ng-show="!hint.unlocked" ng-submit="hsubmit(hint)">
<button type="submit" class="btn btn-info" ng-class="{disabled: hint.submitted}"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span> Débloquer</button>
</form>
<a class="btn btn-info pull-right" href="{{ hint.content | limitTo:999:6 }}" target="_self" ng-show="hint.content[0] == '$' && hint.content[1] == 'F' && hint.content[4] == 'E' && hint.content[5] == 'S'"><span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span> Télécharger</a>
<div class="list-group">
<a target="_self" class="list-group-item" ng-repeat="hint in my.exercices[current_exercice].hints" ng-href="{{ hint.file }}">
<button ng-click="hsubmit(hint)" class="pull-right btn btn-info" ng-show="!(hint.content || hint.file)" ng-class="{disabled: hint.submitted}"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span> Débloquer</button>
<h1 class="pull-left" style="margin: 5px 7px 5px -5px" ng-show="hint.file"><span class="glyphicon glyphicon-download" aria-hidden="true"></span></h1>
<h4 class="list-group-item-heading">{{ hint.title }}</h4>
<p class="list-group-item-text" ng-show="hint.unlocked && !(hint.content[0] == '$' && hint.content[1] == 'F' && hint.content[4] == 'E' && hint.content[5] == 'S')" ng-bind-html="hint.content"></p>
<p class="list-group-item-text" ng-show="hint.unlocked && (hint.content[0] == '$' && hint.content[1] == 'F' && hint.content[4] == 'E' && hint.content[5] == 'S')">Utilisez le bouton pour télécharger l'indice.</p>
<p class="list-group-item-text" ng-show="!hint.unlocked">Débloquer cet indice vous coûtera <ng-pluralize count="hint.cost" when="{'one': '{} point', 'other': '{} points'}"></ng-pluralize>.</p>
</li>
</ul>
<p class="list-group-item-text" ng-show="hint.content" ng-bind-html="hint.content"></p>
<p class="list-group-item-text" ng-show="hint.file">Cliquez ici pour télécharger l'indice.</p>
<p class="list-group-item-text" ng-show="!(hint.content || hint.file)">Débloquer cet indice vous coûtera <ng-pluralize count="hint.cost" when="{'one': '{} point', 'other': '{} points'}"></ng-pluralize>.</p>
</a>
</div>
</div>
<div class="panel panel-danger" ng-show="my.team_id && my.exercices[current_exercice] && !(my.exercices[current_exercice].solved)">

View File

@ -6,16 +6,18 @@ import (
)
type EHint struct {
Id int64 `json:"id"`
IdExercice int64 `json:"idExercice"`
Title string `json:"title"`
Id int64 `json:"id"`
IdExercice int64 `json:"idExercice"`
Title string `json:"title"`
Content string `json:"content"`
Cost int64 `json:"cost"`
File string `json:"file"`
Cost int64 `json:"cost"`
}
func treatHintContent(content *string) {
if strings.HasPrefix(*content, "$FILES") {
*content = "$FILES" + path.Join(FilesDir, strings.TrimPrefix(*content, "$FILES"))
func treatHintContent(h *EHint) {
if strings.HasPrefix(h.Content, "$FILES") {
h.File = path.Join(FilesDir, strings.TrimPrefix(h.Content, "$FILES"))
h.Content = ""
}
}
@ -24,7 +26,7 @@ func GetHint(id int64) (EHint, error) {
if err := DBQueryRow("SELECT id_hint, id_exercice, title, content, cost FROM exercice_hints WHERE id_hint = ?", id).Scan(&h.Id, &h.IdExercice, &h.Title, &h.Content, &h.Cost); err != nil {
return h, err
}
treatHintContent(&h.Content)
treatHintContent(&h)
return h, nil
}
@ -42,7 +44,7 @@ func (e Exercice) GetHints() ([]EHint, error) {
if err := rows.Scan(&h.Id, &h.Title, &h.Content, &h.Cost); err != nil {
return nil, err
}
treatHintContent(&h.Content)
treatHintContent(&h)
hints = append(hints, h)
}
if err := rows.Err(); err != nil {
@ -59,7 +61,7 @@ func (e Exercice) AddHint(title string, content string, cost int64) (EHint, erro
} else if hid, err := res.LastInsertId(); err != nil {
return EHint{}, err
} else {
return EHint{hid, e.Id, title, content, cost}, nil
return EHint{hid, e.Id, title, content, "", cost}, nil
}
}

View File

@ -14,11 +14,11 @@ type myTeamFile struct {
Size int64 `json:"size"`
}
type myTeamHint struct {
HintId int64 `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
Cost int64 `json:"cost"`
Unlocked bool `json:"unlocked"`
HintId int64 `json:"id"`
Title string `json:"title"`
Content *string `json:"content"`
File *string `json:"file"`
Cost int64 `json:"cost"`
}
type myTeamExercice struct {
ThemeId int `json:"theme_id"`
@ -99,9 +99,9 @@ func MyJSONTeam(t *Team, started bool) (interface{}, error) {
} else {
for _, h := range hints {
if t == nil || t.HasHint(h) {
exercice.Hints = append(exercice.Hints, myTeamHint{h.Id, h.Title, h.Content, h.Cost, true})
exercice.Hints = append(exercice.Hints, myTeamHint{h.Id, h.Title, &h.Content, &h.File, h.Cost})
} else {
exercice.Hints = append(exercice.Hints, myTeamHint{h.Id, h.Title, "", h.Cost, false})
exercice.Hints = append(exercice.Hints, myTeamHint{h.Id, h.Title, nil, nil, h.Cost})
}
}
}