Improve feedback form
Signed-off-by: Michael Mayer <michael@lastzero.net>
This commit is contained in:
parent
b87e860444
commit
4e172c450a
|
@ -5,7 +5,7 @@
|
|||
<translate>Your message has been sent</translate>
|
||||
</v-toolbar-title>
|
||||
<v-toolbar-title v-else>
|
||||
<translate>Whatever it is, we'd love to hear from you!</translate>
|
||||
<translate>How can we help?</translate>
|
||||
</v-toolbar-title>
|
||||
|
||||
<!-- v-spacer></v-spacer>
|
||||
|
@ -44,15 +44,7 @@
|
|||
<v-flex xs12 class="pa-2">
|
||||
<v-textarea required auto-grow flat solo hide-details browser-autocomplete="off"
|
||||
v-model="form.Message" rows="10" :rules="[v => !!v || $gettext('Required')]"
|
||||
:label="$gettext('Your Message')"></v-textarea>
|
||||
</v-flex>
|
||||
|
||||
<v-flex xs12 sm6 class="pa-2">
|
||||
<v-text-field flat solo hide-details required browser-autocomplete="off"
|
||||
color="secondary-dark" :rules="[v => !!v || $gettext('Required')]"
|
||||
background-color="secondary-light"
|
||||
:label="$gettext('E-Mail')" type="email" v-model="form.UserEmail">
|
||||
</v-text-field>
|
||||
:label="$gettext('Message')"></v-textarea>
|
||||
</v-flex>
|
||||
|
||||
<v-flex xs12 sm6 class="pa-2">
|
||||
|
@ -63,6 +55,14 @@
|
|||
</v-text-field>
|
||||
</v-flex>
|
||||
|
||||
<v-flex xs12 sm6 class="pa-2">
|
||||
<v-text-field flat solo hide-details required browser-autocomplete="off"
|
||||
color="secondary-dark" :rules="[v => !!v || $gettext('Required')]"
|
||||
background-color="secondary-light"
|
||||
:label="$gettext('E-Mail')" type="email" v-model="form.UserEmail">
|
||||
</v-text-field>
|
||||
</v-flex>
|
||||
|
||||
<v-flex xs12 grow class="px-2 py-1">
|
||||
<v-btn color="secondary-dark"
|
||||
class="white--text ml-0"
|
||||
|
|
|
@ -64,7 +64,7 @@ export default [
|
|||
name: "feedback",
|
||||
path: "/feedback",
|
||||
component: Feedback,
|
||||
meta: {title: c.name, auth: false},
|
||||
meta: {title: c.name, auth: true},
|
||||
},
|
||||
{
|
||||
name: "license",
|
||||
|
|
|
@ -14,6 +14,13 @@ import (
|
|||
// POST /api/v1/feedback
|
||||
func SendFeedback(router *gin.RouterGroup) {
|
||||
router.POST("/feedback", func(c *gin.Context) {
|
||||
conf := service.Config()
|
||||
|
||||
if conf.Public() {
|
||||
Abort(c, http.StatusForbidden, i18n.ErrPublic)
|
||||
return
|
||||
}
|
||||
|
||||
s := Auth(SessionID(c), acl.ResourceFeedback, acl.ActionCreate)
|
||||
|
||||
if s.Invalid() {
|
||||
|
@ -21,7 +28,6 @@ func SendFeedback(router *gin.RouterGroup) {
|
|||
return
|
||||
}
|
||||
|
||||
conf := service.Config()
|
||||
conf.UpdatePro()
|
||||
|
||||
var f form.Feedback
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/photoprism/photoprism/internal/form"
|
||||
"github.com/photoprism/photoprism/pkg/txt"
|
||||
"net/http"
|
||||
"runtime"
|
||||
"time"
|
||||
|
@ -13,16 +14,17 @@ import (
|
|||
var FeedbackURL = ApiURL + "/%s/feedback"
|
||||
|
||||
type Feedback struct {
|
||||
Key string `json:"ApiKey"`
|
||||
ClientVersion string `json:"ClientVersion"`
|
||||
ClientOS string `json:"ClientOS"`
|
||||
ClientArch string `json:"ClientArch"`
|
||||
ClientCPU int `json:"ClientCPU"`
|
||||
Category string `json:"Category"`
|
||||
Subject string `json:"Subject"`
|
||||
Message string `json:"Message"`
|
||||
UserName string `json:"UserName"`
|
||||
UserEmail string `json:"UserEmail"`
|
||||
UserAgent string `json:"UserAgent"`
|
||||
ApiKey string `json:"ApiKey"`
|
||||
ClientVersion string `json:"ClientVersion"`
|
||||
ClientOS string `json:"ClientOS"`
|
||||
ClientArch string `json:"ClientArch"`
|
||||
ClientCPU int `json:"ClientCPU"`
|
||||
}
|
||||
|
||||
// NewFeedback creates a new photoprism.pro key request instance.
|
||||
|
@ -38,11 +40,12 @@ func NewFeedback(version string) *Feedback {
|
|||
func (c *Config) SendFeedback(f form.Feedback) (err error) {
|
||||
feedback := NewFeedback(c.Version)
|
||||
feedback.Category = f.Category
|
||||
feedback.Subject = txt.TrimLen(f.Message, 50)
|
||||
feedback.Message = f.Message
|
||||
feedback.UserName = f.UserName
|
||||
feedback.UserEmail = f.UserEmail
|
||||
feedback.UserAgent = f.UserAgent
|
||||
feedback.Key = c.Key
|
||||
feedback.ApiKey = c.Key
|
||||
|
||||
client := &http.Client{Timeout: 60 * time.Second}
|
||||
url := fmt.Sprintf(FeedbackURL, c.Key)
|
||||
|
|
|
@ -24,3 +24,11 @@ func Clip(s string, size int) string {
|
|||
|
||||
return s
|
||||
}
|
||||
|
||||
func TrimLen(s string, size int) string {
|
||||
if len(s) < size || size < 4 {
|
||||
return s
|
||||
}
|
||||
|
||||
return Clip(s, size-3) + "..."
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue