use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class DialogCourseNodeIndexer method doIndex.
@Override
public void doIndex(SearchResourceContext repositoryResourceContext, ICourse course, CourseNode courseNode, OlatFullIndexer indexWriter) throws IOException, InterruptedException {
SearchResourceContext courseNodeResourceContext = createSearchResourceContext(repositoryResourceContext, courseNode, null);
Document document = CourseNodeDocument.createDocument(courseNodeResourceContext, courseNode);
indexWriter.addDocument(document);
RepositoryEntry entry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
DialogElementsManager dialogElmsMgr = CoreSpringFactory.getImpl(DialogElementsManager.class);
List<DialogElement> elements = dialogElmsMgr.getDialogElements(entry, courseNode.getIdent());
for (DialogElement element : elements) {
Forum forum = element.getForum();
doIndexAllMessages(courseNodeResourceContext, forum, indexWriter);
doIndexFile(element, courseNodeResourceContext, indexWriter);
}
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class OLATUpgrade_12_3_0 method createDialogElement.
private void createDialogElement(DialogElement element, RepositoryEntry entry, String nodeIdent) {
try {
Identity author = null;
if (StringHelper.isLong(element.getAuthor())) {
author = securityManager.loadIdentityByKey(Long.valueOf(element.getAuthor()));
} else if (StringHelper.containsNonWhitespace(element.getAuthor())) {
author = securityManager.findIdentityByName(element.getAuthor());
}
Forum forum = forumManager.loadForum(element.getForumKey());
if (forum == null) {
log.error("Missing forum", null);
return;
}
Object currentElement = dialogElementsManager.getDialogElementByForum(forum.getKey());
if (currentElement != null) {
return;
}
Date date = element.getDate() == null ? new Date() : element.getDate();
DialogElementImpl el = new DialogElementImpl();
el.setCreationDate(date);
el.setLastModified(date);
el.setFilename(element.getFilename());
el.setSize(getFileSize(forum.getKey()));
el.setEntry(entry);
el.setSubIdent(nodeIdent);
el.setAuthor(author);
el.setForum(forum);
dbInstance.getCurrentEntityManager().persist(el);
} catch (Exception e) {
log.error("", e);
}
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class DialogElementsManagerTest method getDialogElementByForumKey.
@Test
public void getDialogElementByForumKey() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("session-1");
String subIdent = UUID.randomUUID().toString();
DialogElement element = dialogElementsManager.createDialogElement(entry, author, "task_e.txt", 235l, subIdent);
dbInstance.commitAndCloseSession();
Forum forum = element.getForum();
DialogElement loadedElement = dialogElementsManager.getDialogElementByForum(forum.getKey());
Assert.assertNotNull(loadedElement.getKey());
Assert.assertEquals(forum, loadedElement.getForum());
Assert.assertEquals(author, loadedElement.getAuthor());
Assert.assertEquals("task_e.txt", loadedElement.getFilename());
Assert.assertEquals(Long.valueOf(235l), loadedElement.getSize());
Assert.assertEquals(subIdent, loadedElement.getSubIdent());
Assert.assertEquals(entry, loadedElement.getEntry());
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class DialogElementsManagerImpl method createDialogElement.
@Override
public DialogElement createDialogElement(RepositoryEntry entry, Identity author, String filename, Long size, String subIdent) {
DialogElementImpl element = new DialogElementImpl();
element.setCreationDate(new Date());
element.setLastModified(element.getCreationDate());
element.setFilename(filename);
element.setSize(size);
element.setAuthor(author);
element.setEntry(entry);
element.setSubIdent(subIdent);
Forum forum = forumManager.addAForum();
element.setForum(forum);
dbInstance.getCurrentEntityManager().persist(element);
return element;
}
use of org.olat.modules.fo.Forum in project OpenOLAT by OpenOLAT.
the class ForumCourseNodeWebService method addMessage.
/**
* Internal helper method to add a message to a forum.
* @param courseId
* @param nodeId
* @param parentMessageId can be null (will lead to new thread)
* @param title
* @param body
* @param identityName
* @param isSticky only necessary when adding new thread
* @param request
* @return
*/
private Response addMessage(Long courseId, String nodeId, Long parentMessageId, String title, String body, String identityName, Boolean isSticky, HttpServletRequest request) {
if (!isAuthor(request)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
BaseSecurity securityManager = BaseSecurityManager.getInstance();
Identity identity;
if (identityName != null) {
identity = securityManager.findIdentityByName(identityName);
} else {
identity = RestSecurityHelper.getIdentity(request);
}
if (identity == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
// load forum
ICourse course = CoursesWebService.loadCourse(courseId);
if (course == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
} else if (!isAuthorEditor(course, request)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
CourseNode courseNode = getParentNode(course, nodeId);
if (courseNode == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
Property forumKeyProp = cpm.findCourseNodeProperty(courseNode, null, null, FOCourseNode.FORUM_KEY);
Forum forum = null;
ForumManager fom = ForumManager.getInstance();
if (forumKeyProp != null) {
// Forum does already exist, load forum with key from properties
Long forumKey = forumKeyProp.getLongValue();
forum = fom.loadForum(forumKey);
}
if (forum == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
MessageVO vo;
if (parentMessageId == null || parentMessageId == 0L) {
// creating the thread (a message without a parent message)
Message newThread = fom.createMessage(forum, identity, false);
if (isSticky != null && isSticky.booleanValue()) {
// set sticky
org.olat.modules.fo.Status status = new org.olat.modules.fo.Status();
status.setSticky(true);
newThread.setStatusCode(org.olat.modules.fo.Status.getStatusCode(status));
}
newThread.setTitle(title);
newThread.setBody(body);
// open a new thread
fom.addTopMessage(newThread);
vo = new MessageVO(newThread);
} else {
// adding response message (a message with a parent message)
Message threadMessage = fom.loadMessage(parentMessageId);
if (threadMessage == null) {
return Response.serverError().status(Status.NOT_FOUND).build();
}
// create new message
Message message = fom.createMessage(forum, identity, false);
message.setTitle(title);
message.setBody(body);
fom.replyToMessage(message, threadMessage);
vo = new MessageVO(message);
}
return Response.ok(vo).build();
}
Aggregations