frontend: dedicate a field in JSON to file hint
This commit is contained in:
parent
2ac685be9f
commit
ac3f9129b2
|
@ -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)">
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user