diff --git a/cmd/media.go b/cmd/media.go index 12e1632a..5992ac51 100644 --- a/cmd/media.go +++ b/cmd/media.go @@ -131,6 +131,8 @@ func handleUploadMedia(c echo.Context) error { func handleGetMedia(c echo.Context) error { var ( app = c.Get("app").(*App) + pg = app.paginator.NewFromURL(c.Request().URL.Query()) + query = c.FormValue("query") id, _ = strconv.Atoi(c.Param("id")) ) @@ -143,11 +145,18 @@ func handleGetMedia(c echo.Context) error { return c.JSON(http.StatusOK, okResp{out}) } - out, err := app.core.GetAllMedia(app.constants.MediaUpload.Provider, app.media) + res, total, err := app.core.QueryMedia(app.constants.MediaUpload.Provider, app.media, query, pg.Offset, pg.Limit) if err != nil { return err } + out := models.PageResults{ + Results: res, + Total: total, + Page: pg.Page, + PerPage: pg.PerPage, + } + return c.JSON(http.StatusOK, okResp{out}) } diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 008c8ff7..c37a32f1 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -244,8 +244,8 @@ export const deleteCampaign = async (id) => http.delete(`/api/campaigns/${id}`, { loading: models.campaigns }); // Media. -export const getMedia = async () => http.get('/api/media', - { loading: models.media, store: models.media }); +export const getMedia = async (params) => http.get('/api/media', + { params, loading: models.media, store: models.media }); export const uploadMedia = (data) => http.post('/api/media', data, { loading: models.media }); diff --git a/frontend/src/assets/style.scss b/frontend/src/assets/style.scss index a22fc0b8..e5b697f5 100644 --- a/frontend/src/assets/style.scss +++ b/frontend/src/assets/style.scss @@ -766,93 +766,20 @@ section.analytics { /* Media gallery */ .media-files { - .thumbs { - display: flex; - flex-wrap: wrap; - flex-direction: column; - flex-flow: row wrap; - - .thumb { - margin: 10px; - max-height: 90px; - overflow: hidden; - position: relative; - width: 250px; - min-height: 250px; - text-align: center; - - .link { - display: block; - } - - .ext { - display: block; - margin-top: 60px; - font-size: 2rem; - text-transform: uppercase; - } - - .filename { - display: inline-block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - color: $grey; - } - - img { - max-width: 250px; - } - - .caption { - background-color: rgba($white, .70); - color: $grey; - position: absolute; - bottom: 0; - left: 0; - right: 0; - padding: 5px 15px; - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - .actions { - background-color: rgba($white, .70); - position: absolute; - top: 0; - left: 0; - right: 0; - padding: 2px 5px; - display: none; - - a { - margin-left: 10px; - } - } - - &:hover .actions { - display: block; - } - } - - .box { - padding: 10px; - } - } -} - -.modal .media-files { - .thumb { - min-width: 175px; - width: 175px; - min-height: 175px; + img { + max-width: 125px; } - .gallery { - padding-left: 0; - padding-right: 0; + .thumb.box { + display: inline-block; + padding: 5px; + min-width: 140px; + max-height: 140px; + overflow: hidden; + text-align: center; + } + .ext { + text-transform: uppercase; } } diff --git a/frontend/src/views/Media.vue b/frontend/src/views/Media.vue index 35589440..12a2ab81 100644 --- a/frontend/src/views/Media.vue +++ b/frontend/src/views/Media.vue @@ -41,34 +41,67 @@ - @@ -76,9 +109,13 @@