This is an automated email from the git hooks/post-receive script. New commit to branch feature/28_avatars in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit a9ba220a76c759a9daf6527930fb88fb6156245d Author: Kevin Morin <morin@codelutin.com> Date: Thu Sep 28 11:12:43 2017 +0200 refs #28 utilisation de l'avatar --- .../java/org/chorem/pollen/rest/api/v1/GtuApi.java | 3 -- .../org/chorem/pollen/services/bean/PollBean.java | 13 ++++++++ .../services/bean/resource/ResourceMetaBean.java | 2 +- .../pollen/services/service/PollService.java | 4 +++ .../pollen/services/service/PollenUserService.java | 8 +++-- .../pollen/services/service/SocialAuthService.java | 5 ++- .../src/main/web/js/ResourceService.js | 4 +++ .../src/main/web/tag/PollenHeader.tag.html | 4 +-- .../src/main/web/tag/UserProfile.tag.html | 18 ++++++----- .../src/main/web/tag/components/Avatar.tag.html | 36 ++++++++++++++++++++++ .../web/tag/favoriteList/FavoriteList.tag.html | 2 -- .../src/main/web/tag/poll/Choice.tag.html | 3 +- .../src/main/web/tag/poll/ChoiceView.tag.html | 6 ++-- .../src/main/web/tag/poll/PollCard.tag.html | 3 +- 14 files changed, 84 insertions(+), 27 deletions(-) diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/GtuApi.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/GtuApi.java index b28619fb..ebb04d88 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/GtuApi.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/GtuApi.java @@ -1,6 +1,5 @@ package org.chorem.pollen.rest.api.v1; -<<<<<<< HEAD /*- * #%L * Pollen :: Rest Api @@ -22,8 +21,6 @@ package org.chorem.pollen.rest.api.v1; * #L% */ -import org.chorem.pollen.services.bean.GtuMetaBean; -import org.chorem.pollen.services.bean.ResourceStreamBean; import org.chorem.pollen.services.bean.resource.GtuMetaBean; import org.chorem.pollen.services.bean.resource.ResourceStreamBean; import org.chorem.pollen.services.service.GtuService; diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java index c382bafa..7b3593f0 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollBean.java @@ -146,6 +146,8 @@ public class PollBean extends PollenBean<Poll> { protected boolean gtuValidated; + protected String creatorAvatar; + @Override public void fromEntity(Poll entity) { @@ -165,6 +167,9 @@ public class PollBean extends PollenBean<Poll> { setCreatorName(entity.getCreator().getName()); setCreatorEmail(entity.getCreator().getEmail()); + if (entity.getCreator().getPollenUser() != null) { + setCreatorAvatar(entity.getCreator().getPollenUser().getAvatar().getTopiaId()); + } } @@ -573,4 +578,12 @@ public class PollBean extends PollenBean<Poll> { public void setGtuValidated(boolean gtuValidated) { this.gtuValidated = gtuValidated; } + + public String getCreatorAvatar() { + return creatorAvatar; + } + + public void setCreatorAvatar(String creatorAvatar) { + this.creatorAvatar = creatorAvatar; + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/resource/ResourceMetaBean.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/resource/ResourceMetaBean.java index 315f854e..4934c1f1 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/bean/resource/ResourceMetaBean.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/resource/ResourceMetaBean.java @@ -34,7 +34,7 @@ public class ResourceMetaBean extends AbstractResourceBean { protected Date uploadDate; - protected ResourceMetaBean() { + public ResourceMetaBean() { super(PollenResource.class); } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java index dc7f72d2..60d488c7 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java @@ -107,6 +107,10 @@ public class PollService extends PollenServiceSupport { input.setGtuValidated(getGtuService().isPollGtuValidated(input.getEntityId())); + if (input.getCreatorAvatar() != null) { + input.setCreatorAvatar(getPollenResourceService().getReduceIdByTopiaId(input.getCreatorAvatar())); + } + return input; }; diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java index 63e9c366..bd0d0677 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java @@ -62,7 +62,9 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer private final Function<PollenUserBean, PollenUserBean> pollenUserFunction = input -> { input.setPassword(null); input.setGtuValidated(getGtuService().isUserGtuValidated(input.getEntityId())); - + if (input.getAvatar() != null) { + input.setAvatar(getPollenResourceService().getReduceIdByTopiaId(input.getAvatar())); + } return input; }; @@ -268,7 +270,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer checkIsConnected(); PollenUser user = getConnectedUser(); if (user.getAvatar() != null) { - getPollenResourceService().deleteResource(user.getAvatar().getTopiaId()); + getPollenResourceDao().delete(user.getAvatar()); } commit(); } @@ -279,7 +281,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer PollenResource avatarResource = getPollenResourceService().createAvatarResource(resourceBean); PollenUser user = getConnectedUser(); if (user.getAvatar() != null) { - getPollenResourceService().deleteResource(user.getAvatar().getTopiaId()); + getPollenResourceDao().delete(user.getAvatar()); } user.setAvatar(avatarResource); commit(); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java index cd31a21c..71c3a6a7 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/SocialAuthService.java @@ -262,12 +262,11 @@ public class SocialAuthService extends PollenServiceSupport { } public void setAvatarToUser(SocialAuthManager manager, Map<String, String> paramsMap) throws Exception { - checkIsConnected(); - PollenUser connectedUser = getConnectedUser(); + PollenUser connectedUser = checkAndGetConnectedUser(); PollenResourceService pollenResourceService = getPollenResourceService(); if (connectedUser.getAvatar() != null) { - pollenResourceService.deleteResource(connectedUser.getAvatar().getTopiaId()); + getPollenResourceDao().delete(connectedUser.getAvatar()); } // get profile diff --git a/pollen-ui-riot-js/src/main/web/js/ResourceService.js b/pollen-ui-riot-js/src/main/web/js/ResourceService.js index 9001f361..7de1ccc0 100644 --- a/pollen-ui-riot-js/src/main/web/js/ResourceService.js +++ b/pollen-ui-riot-js/src/main/web/js/ResourceService.js @@ -52,6 +52,10 @@ class ResourceService extends FetchService { return this.get(url); } + getPreviewUrl(resourceId) { + return this.endPoint + this._getUrlPrefix(resourceId) + "/preview"; + } + getMeta(resourceId) { let url = this._getUrlPrefix(resourceId) + "/meta"; return this.get(url); diff --git a/pollen-ui-riot-js/src/main/web/tag/PollenHeader.tag.html b/pollen-ui-riot-js/src/main/web/tag/PollenHeader.tag.html index e9dc0480..05a0c123 100644 --- a/pollen-ui-riot-js/src/main/web/tag/PollenHeader.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/PollenHeader.tag.html @@ -22,7 +22,7 @@ */ require("./HeaderI18n.tag.html"); require("./popup/FeedbackModal.tag.html"); -require("./components/LetterAvatar.tag.html"); +require("./components/Avatar.tag.html"); <PollenHeader> <a class="header-home instance-title" href="#home" target="_top"></a> @@ -47,7 +47,7 @@ require("./components/LetterAvatar.tag.html"); <div class="dropdown" if={user}> <a class="header-link"> - <LetterAvatar name={user && user.name} rounded="true"/> + <Avatar avatar={user.avatar} name={user.name} rounded="true"/> <span class="user-name action-label"> {user && user.name}</span> </a> <div class="dropdown-content right"> diff --git a/pollen-ui-riot-js/src/main/web/tag/UserProfile.tag.html b/pollen-ui-riot-js/src/main/web/tag/UserProfile.tag.html index 5e89f949..5e0cf192 100644 --- a/pollen-ui-riot-js/src/main/web/tag/UserProfile.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/UserProfile.tag.html @@ -172,7 +172,7 @@ require("./components/LetterAvatar.tag.html"); <h3 class="c-heading"><i class="fa fa-sign-in"/> {__.avatar}</h3> <div class="avatar-container"> <div class="avatar-column" if="{user.avatar}"> - <img src="{userService.getUserAvatarUrl(user.id)}"/> + <img src="{resourceService.getPreviewUrl(user.avatar)}"/> <button onclick="{deleteAvatar}" class="c-button u-small c-button--error"><i class="fa fa-trash"></i></button> </div> <LetterAvatar class="avatar-column" name={user && user.name || ""} if="{!user.avatar}"/> @@ -208,8 +208,9 @@ require("./components/LetterAvatar.tag.html"); this.installBundle(this.session, "userProfile"); this.errors = {}; this.user = this.session.getUser() || {}; - this.userService = require("../js/UserService"); + let userService = require("../js/UserService"); this.authService = require("../js/AuthService"); + this.resourceService = require("../js/ResourceService"); let Message = require("../js/Message"); this.loginProviders = []; @@ -232,7 +233,7 @@ require("./components/LetterAvatar.tag.html"); e.stopPropagation(); this.user.name = this.refs.name.value; this.user.email = this.refs.email.value; - this.userService.saveUser(this.user).then(() => { + userService.saveUser(this.user).then(() => { this.session.updateUser(); this.bus.trigger("message", new Message(this._l("updatedIdentity"), "success")); }); @@ -259,7 +260,7 @@ require("./components/LetterAvatar.tag.html"); if (this.errors.repeatPassword === undefined) { let oldPassword = this.user.withPassword ? this.refs.oldPassword.value : null; let newPassword = this.refs.newPassword.value; - this.userService.changePassword(oldPassword, newPassword).then(() => { + userService.changePassword(oldPassword, newPassword).then(() => { if (this.user.withPassword) { this.refs.oldPassword.value = ""; } @@ -289,7 +290,7 @@ require("./components/LetterAvatar.tag.html"); if (!confirm) { return Promise.reject(); } - return this.userService.unlinkProvider(credentialId); + return userService.unlinkProvider(credentialId); }).then(result => { this.user.credentials.splice(index, 1); this.update(); @@ -309,7 +310,7 @@ require("./components/LetterAvatar.tag.html"); if (!confirm) { return Promise.reject(); } - return this.userService.deleteAvatar(); + return userService.deleteAvatar(); }).then(result => { this.user.avatar = null; this.update(); @@ -318,8 +319,9 @@ require("./components/LetterAvatar.tag.html"); //TODO check size and all this.uploadAvatar = e => { - this.userService.setUserAvatar(this.refs.avatar.files[0]).then((result) => { - this.user.avatar = result; + userService.setUserAvatar(this.refs.avatar.files[0]).then((result) => { + console.log(result); + this.user.avatar = result.id; this.update(); }); } diff --git a/pollen-ui-riot-js/src/main/web/tag/components/Avatar.tag.html b/pollen-ui-riot-js/src/main/web/tag/components/Avatar.tag.html new file mode 100644 index 00000000..b5e875da --- /dev/null +++ b/pollen-ui-riot-js/src/main/web/tag/components/Avatar.tag.html @@ -0,0 +1,36 @@ +require("./LetterAvatar.tag.html"); +<Avatar> + <LetterAvatar name={opts.name} rounded={opts.rounded} if={!opts.avatar} /> + + <div class="avatar {rounded: opts.rounded}" + style="background-image: url('{resourceService.getPreviewUrl(opts.avatar)}');" + show={opts.avatar}> + </div> + + <script> + this.session = require("../../js/Session"); + this.installBundle(this.session, "avatar"); + this.resourceService = require("../../js/ResourceService"); + this.avatarLoaded = false; + + this.onAvatarLoaded = e => { + this.avatarLoaded = true; + this.update(); + }; + </script> + + <style> + + .avatar { + width: 50px; + height:50px; + background-size: 50px 50px; + background-position: center; + background-repeat: no-repeat; + } + .avatar.rounded { + border-radius: 100%; + } + + </style> +</Avatar> \ No newline at end of file diff --git a/pollen-ui-riot-js/src/main/web/tag/favoriteList/FavoriteList.tag.html b/pollen-ui-riot-js/src/main/web/tag/favoriteList/FavoriteList.tag.html index ceac20ac..32733a09 100644 --- a/pollen-ui-riot-js/src/main/web/tag/favoriteList/FavoriteList.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/favoriteList/FavoriteList.tag.html @@ -164,8 +164,6 @@ require("../components/LoadingCard.tag.html"); favoriteListService.favoriteList(this.favoriteList.id).then(results => { this.favoriteList = results; this.loaded = true; - console.log("reloadFavoriteListInfos"); - console.log(results); this.update(); }); }; diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/Choice.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/Choice.tag.html index 46a9cacc..2046ce78 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/Choice.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/Choice.tag.html @@ -53,7 +53,7 @@ require("../components/time-picker.tag.html"); </button> <div if="{originalFile}" class="original-file {opts.choice.choiceType === 'RESOURCE' ? 'selected' : 'hidden'}"> - <img src="{session.configuration.endPoint}/v1/resources/{originalFile}/preview"/> + <img src="{resourceService.getPreviewUrl(originalFile)}"/> <span> {originalFile.name} <i class="fa fa-remove" @@ -126,6 +126,7 @@ require("../components/time-picker.tag.html"); <script type="es6"> this.session = require("../../js/Session"); + this.resourceService = require("../../js/ResourceService"); let moment = require("moment"); moment.locale(this.session.locale); diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/ChoiceView.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/ChoiceView.tag.html index 5c7bd0d5..9cd1dfce 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/ChoiceView.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/ChoiceView.tag.html @@ -39,7 +39,7 @@ require("../components/MultiLineLabel.tag.html"); </span> <div class="choice-ressource" if={opts.choice.choiceType === "RESOURCE" && meta && isImage(meta)}> - <img class="image-preview" src="{session.configuration.endPoint}/v1/resources/{opts.choice.choiceValue}/preview"/> + <img class="image-preview" src="{resourceService.getPreviewUrl(opts.choice.choiceValue)}"/> </div> <div class="choice-ressource" if={opts.choice.choiceType === "RESOURCE" && meta && !isImage(meta)}> @@ -92,13 +92,13 @@ require("../components/MultiLineLabel.tag.html"); </div> <script type="es6"> - let ResourceService = require("../../js/ResourceService"); this.session = require("../../js/Session"); + this.resourceService = require("../../js/ResourceService"); this.installBundle(this.session, "choice"); this.showModalImage = false; if (this.opts.choice.choiceType === "RESOURCE") { - ResourceService.getMeta(this.opts.choice.choiceValue).then(meta => { + this.resourceService.getMeta(this.opts.choice.choiceValue).then(meta => { this.meta = meta; this.update(); }); diff --git a/pollen-ui-riot-js/src/main/web/tag/poll/PollCard.tag.html b/pollen-ui-riot-js/src/main/web/tag/poll/PollCard.tag.html index b70f2bca..fb5cd606 100644 --- a/pollen-ui-riot-js/src/main/web/tag/poll/PollCard.tag.html +++ b/pollen-ui-riot-js/src/main/web/tag/poll/PollCard.tag.html @@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #L% --> +require("../components/Avatar.tag.html"); <PollCard class="poll-{opts.poll.status.toLowerCase()}"> <div class="card-actions"> @@ -48,7 +49,7 @@ </div> <div class="poll-creator" title={opts.poll.creatorName}> - <LetterAvatar name={opts.poll.creatorName} rounded="true"/> + <Avatar avatar={opts.poll.creatorAvatar} name={opts.poll.creatorName} rounded="true"/> <div class="creator-name"> {opts.poll.creatorName} <div class="creation-date"> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.