Skip to content
Snippets Groups Projects
Commit d6a540b5 authored by srosse's avatar srosse
Browse files

Merge with 4494fad474e5c489adcdb747a8d4cca808e33180

parents df4b3352 b12b8966
No related branches found
No related tags found
No related merge requests found
Showing with 32 additions and 16 deletions
...@@ -62,7 +62,7 @@ public interface InfoMessageFrontendManager { ...@@ -62,7 +62,7 @@ public interface InfoMessageFrontendManager {
public void deleteInfoMessage(InfoMessage infoMessage); public void deleteInfoMessage(InfoMessage infoMessage);
public void deleteInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity); public void updateInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity);
public void removeInfoMessagesAndSubscriptionContext(BusinessGroup group); public void removeInfoMessagesAndSubscriptionContext(BusinessGroup group);
......
...@@ -27,6 +27,7 @@ import java.util.Locale; ...@@ -27,6 +27,7 @@ import java.util.Locale;
import java.util.Set; import java.util.Set;
import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.model.InfoMessage;
import org.olat.commons.info.model.InfoMessageImpl;
import org.olat.commons.info.notification.InfoSubscriptionManager; import org.olat.commons.info.notification.InfoSubscriptionManager;
import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.commons.services.notifications.SubscriptionContext;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
...@@ -163,11 +164,18 @@ public class InfoMessageFrontendManagerImpl implements InfoMessageFrontendManage ...@@ -163,11 +164,18 @@ public class InfoMessageFrontendManagerImpl implements InfoMessageFrontendManage
} }
@Override @Override
public void deleteInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity) { public void updateInfoMessagesOfIdentity(BusinessGroup businessGroup, Identity identity) {
List<InfoMessage> infoMessages = infoMessageManager.loadInfoMessagesOfIdentity(businessGroup, identity); List<InfoMessage> infoMessages = infoMessageManager.loadInfoMessagesOfIdentity(businessGroup, identity);
for (InfoMessage infoMessage : infoMessages) { for (InfoMessage infoMessage : infoMessages) {
infoMessageManager.deleteInfoMessage(infoMessage); Identity author = infoMessage.getAuthor();
infoSubscriptionManager.markPublisherNews(infoMessage.getOLATResourceable(), infoMessage.getResSubPath()); Identity modifier = infoMessage.getModifier();
if (author != null && author.equals(identity)) {
((InfoMessageImpl)infoMessage).setAuthor(null);
infoSubscriptionManager.markPublisherNews(infoMessage.getOLATResourceable(), infoMessage.getResSubPath());
}
if (modifier != null && modifier.equals(identity)) {
infoMessage.setModifier(null);
}
} }
} }
......
...@@ -103,11 +103,12 @@ public class InfoMessageManagerImpl extends InfoMessageManager { ...@@ -103,11 +103,12 @@ public class InfoMessageManagerImpl extends InfoMessageManager {
public List<InfoMessage> loadInfoMessagesOfIdentity(BusinessGroupRef businessGroup, IdentityRef identity) { public List<InfoMessage> loadInfoMessagesOfIdentity(BusinessGroupRef businessGroup, IdentityRef identity) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select msg from ").append(InfoMessageImpl.class.getName()).append(" msg") sb.append("select msg from ").append(InfoMessageImpl.class.getName()).append(" msg")
.append(" inner join fetch msg.author author") .append(" left join fetch msg.author author")
.append(" inner join fetch author.user") .append(" left join fetch author.user")
.append(" left join fetch msg.modifier modifier") .append(" left join fetch msg.modifier modifier")
.append(" left join fetch modifier.user") .append(" left join fetch modifier.user")
.append(" where author.key=:authorKey") .append(" where (author.key=:authorKey")
.append(" or modifier.key=:authorKey)")
.append(" and msg.resId=:groupKey"); .append(" and msg.resId=:groupKey");
return dbInstance.getCurrentEntityManager() return dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), InfoMessage.class) .createQuery(sb.toString(), InfoMessage.class)
...@@ -120,8 +121,8 @@ public class InfoMessageManagerImpl extends InfoMessageManager { ...@@ -120,8 +121,8 @@ public class InfoMessageManagerImpl extends InfoMessageManager {
public InfoMessage loadInfoMessageByKey(Long key) { public InfoMessage loadInfoMessageByKey(Long key) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select msg from ").append(InfoMessageImpl.class.getName()).append(" msg") sb.append("select msg from ").append(InfoMessageImpl.class.getName()).append(" msg")
.append(" inner join fetch msg.author author") .append(" left join fetch msg.author author")
.append(" inner join fetch author.user") .append(" left join fetch author.user")
.append(" left join fetch msg.modifier modifier") .append(" left join fetch msg.modifier modifier")
.append(" left join fetch modifier.user") .append(" left join fetch modifier.user")
.append(" where msg.key=:key"); .append(" where msg.key=:key");
...@@ -175,8 +176,8 @@ public class InfoMessageManagerImpl extends InfoMessageManager { ...@@ -175,8 +176,8 @@ public class InfoMessageManagerImpl extends InfoMessageManager {
sb.append(" from ").append(InfoMessageImpl.class.getName()).append(" msg"); sb.append(" from ").append(InfoMessageImpl.class.getName()).append(" msg");
if (!count) { if (!count) {
sb.append(" inner join fetch msg.author author") sb.append(" left join fetch msg.author author")
.append(" inner join fetch author.user") .append(" left join fetch author.user")
.append(" left join fetch msg.modifier modifier") .append(" left join fetch msg.modifier modifier")
.append(" left join fetch modifier.user"); .append(" left join fetch modifier.user");
} }
......
...@@ -87,8 +87,8 @@ public class InfoMessageImpl implements InfoMessage, CreateInfo, Persistable { ...@@ -87,8 +87,8 @@ public class InfoMessageImpl implements InfoMessage, CreateInfo, Persistable {
@Column(name="businesspath", nullable=true, insertable=true, updatable=false) @Column(name="businesspath", nullable=true, insertable=true, updatable=false)
private String businessPath; private String businessPath;
@ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=false) @ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=true)
@JoinColumn(name="fk_author_id", nullable=false, insertable=true, updatable=false) @JoinColumn(name="fk_author_id", nullable=true, insertable=true, updatable=true)
private Identity author; private Identity author;
@ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=true) @ManyToOne(targetEntity=IdentityImpl.class, fetch=FetchType.LAZY, optional=true)
@JoinColumn(name="fk_modifier_id", nullable=true, insertable=true, updatable=true) @JoinColumn(name="fk_modifier_id", nullable=true, insertable=true, updatable=true)
......
...@@ -270,7 +270,12 @@ public class InfoDisplayController extends FormBasicController { ...@@ -270,7 +270,12 @@ public class InfoDisplayController extends FormBasicController {
String authorName = userManager.getUserDisplayName(info.getAuthor()); String authorName = userManager.getUserDisplayName(info.getAuthor());
String creationDate = formatter.formatDateAndTime(info.getCreationDate()); String creationDate = formatter.formatDateAndTime(info.getCreationDate());
String infos = translate("display.info", new String[]{StringHelper.escapeHtml(authorName), creationDate}); String infos;
if (authorName.isEmpty()) {
infos = translate("display.info.noauthor", new String[]{creationDate});
} else {
infos = translate("display.info", new String[]{StringHelper.escapeHtml(authorName), creationDate});
}
return new InfoMessageForDisplay(info.getKey(), info.getTitle(), message, infos, modifier); return new InfoMessageForDisplay(info.getKey(), info.getTitle(), message, infos, modifier);
} }
......
...@@ -5,6 +5,7 @@ new_message=Neue Mitteilung erstellen ...@@ -5,6 +5,7 @@ new_message=Neue Mitteilung erstellen
create_message=Mitteilung erstellen create_message=Mitteilung erstellen
input.toolong=Leider ist Ihr gerade eingegebener Text mit {1} Zeichen zu lang. Bitte beschr\u00E4nken Sie sich auf maximal {0} Zeichen. input.toolong=Leider ist Ihr gerade eingegebener Text mit {1} Zeichen zu lang. Bitte beschr\u00E4nken Sie sich auf maximal {0} Zeichen.
display.info=Publiziert von {0} am {1} display.info=Publiziert von {0} am {1}
display.info.noauthor=Publiziert am {0}
display.modifier=ge\u00E4ndert von {0} am {1} display.modifier=ge\u00E4ndert von {0} am {1}
display.new_messages=Aktuelle Mitteilungen anzeigen display.new_messages=Aktuelle Mitteilungen anzeigen
display.old_messages=\u00C4ltere Mitteilungen anzeigen display.old_messages=\u00C4ltere Mitteilungen anzeigen
......
...@@ -3,6 +3,7 @@ already.deleted=This message has been deleted in the meantime by another user. ...@@ -3,6 +3,7 @@ already.deleted=This message has been deleted in the meantime by another user.
already.edited=This message is being edited by user {0}. Please try again later. already.edited=This message is being edited by user {0}. Please try again later.
create_message=Create message create_message=Create message
display.info=Published by {0} on {1} display.info=Published by {0} on {1}
display.info.noauthor=Published on {0}
display.modifier=modified by {0} on {1} display.modifier=modified by {0} on {1}
display.new_messages=Show new messages display.new_messages=Show new messages
display.no_messages=There are no new messages display.no_messages=There are no new messages
......
...@@ -1035,7 +1035,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD ...@@ -1035,7 +1035,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
private void removeParticipant(Identity ureqIdentity, Identity identity, BusinessGroup group, MailPackage mailing, private void removeParticipant(Identity ureqIdentity, Identity identity, BusinessGroup group, MailPackage mailing,
List<BusinessGroupModifiedEvent.Deferred> events) { List<BusinessGroupModifiedEvent.Deferred> events) {
infoMessageManager.deleteInfoMessagesOfIdentity(group, identity); infoMessageManager.updateInfoMessagesOfIdentity(group, identity);
boolean removed = businessGroupRelationDAO.removeRole(identity, group, GroupRoles.participant.name()); boolean removed = businessGroupRelationDAO.removeRole(identity, group, GroupRoles.participant.name());
if(removed) { if(removed) {
// notify currently active users of this business group // notify currently active users of this business group
......
...@@ -190,7 +190,7 @@ public class InfoMessageFrontendManagerTest extends OlatTestCase { ...@@ -190,7 +190,7 @@ public class InfoMessageFrontendManagerTest extends OlatTestCase {
dbInstance.commitAndCloseSession(); dbInstance.commitAndCloseSession();
infoManager.deleteInfoMessagesOfIdentity(businessGroup, id1); infoManager.updateInfoMessagesOfIdentity(businessGroup, id1);
dbInstance.commitAndCloseSession(); dbInstance.commitAndCloseSession();
// load messages after deletion // load messages after deletion
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment