use of org.olat.core.gui.media.NotFoundMediaResource in project openolat by klemens.
the class GlossaryDefinitionMapper method handle.
/**
* @see org.olat.core.dispatcher.mapper.Mapper#handle(java.lang.String,
* javax.servlet.http.HttpServletRequest)
*/
public MediaResource handle(String relPath, HttpServletRequest request) {
GlossaryItemManager gIM = GlossaryItemManager.getInstance();
String[] parts = relPath.split("/");
String glossaryId = parts[1];
String glossaryFolderString = FolderConfig.getCanonicalRoot() + FolderConfig.getRepositoryHome() + "/" + glossaryId + "/" + GlossaryMarkupItemController.INTERNAL_FOLDER_NAME;
File glossaryFolderFile = new File(glossaryFolderString);
if (!glossaryFolderFile.isDirectory()) {
logWarn("GlossaryDefinition delivery failed; path to glossaryFolder not existing: " + relPath, null);
return new NotFoundMediaResource();
}
VFSContainer glossaryFolder = new LocalFolderImpl(glossaryFolderFile);
if (!gIM.isFolderContainingGlossary(glossaryFolder)) {
logWarn("GlossaryDefinition delivery failed; glossaryFolder doesn't contain a valid Glossary: " + glossaryFolder, null);
return new NotFoundMediaResource();
}
String glossaryMainTerm = parts[2];
if (parts.length > 2) {
// this handle / or \ in a term
for (int i = 3; i < parts.length; i++) {
glossaryMainTerm += "/" + parts[i];
}
}
// cut away ".html" if necessary
if (glossaryMainTerm.endsWith(".html")) {
glossaryMainTerm = glossaryMainTerm.substring(0, glossaryMainTerm.length() - 5);
}
glossaryMainTerm = glossaryMainTerm.toLowerCase();
Set<String> alternatives = new HashSet<>();
prepareAlternatives(glossaryMainTerm, alternatives);
// Create a media resource
StringMediaResource resource = new StringMediaResource() {
@Override
public void prepare(HttpServletResponse hres) {
// don't use normal string media headers which prevent caching,
// use standard browser caching based on last modified timestamp
}
};
resource.setLastModified(gIM.getGlossaryLastModifiedTime(glossaryFolder));
resource.setContentType("text/html");
List<GlossaryItem> glossItems = gIM.getGlossaryItemListByVFSItem(glossaryFolder);
GlossaryItem foundItem = null;
for (GlossaryItem glossaryItem : glossItems) {
String item = glossaryItem.getGlossTerm().toLowerCase();
if (alternatives.contains(item)) {
foundItem = glossaryItem;
break;
}
}
if (foundItem == null) {
return new NotFoundMediaResource();
}
StringBuilder sb = new StringBuilder();
sb.append("<dd><dt>").append(foundItem.getGlossTerm()).append("</dt><dl>").append(foundItem.getGlossDef()).append("</dl></dd>");
resource.setData(sb.toString());
resource.setEncoding("utf-8");
if (isLogDebugEnabled())
logDebug("loaded definition for " + glossaryMainTerm, null);
return resource;
}
use of org.olat.core.gui.media.NotFoundMediaResource in project openolat by klemens.
the class ResourcesMapper method handle.
@Override
public MediaResource handle(String relPath, HttpServletRequest request) {
String filename = null;
MediaResource resource = null;
try {
File root = new File(assessmentObjectUri.getPath());
String href = request.getParameter("href");
if (StringHelper.containsNonWhitespace(href)) {
filename = href;
} else if (StringHelper.containsNonWhitespace(relPath)) {
filename = relPath;
if (filename.startsWith("/")) {
filename = filename.substring(1, filename.length());
}
}
File file = new File(root.getParentFile(), filename);
if (file.exists()) {
if (file.getName().endsWith(".xml")) {
resource = new ForbiddenMediaResource();
} else if (FileUtils.isInSubDirectory(root.getParentFile(), file)) {
resource = new FileMediaResource(file, true);
} else {
resource = new ForbiddenMediaResource();
}
} else if (filename.endsWith("/raw/_noversion_/images/transparent.gif")) {
String realPath = request.getServletContext().getRealPath("/static/images/transparent.gif");
resource = new FileMediaResource(new File(realPath), true);
} else {
String submissionName = null;
File storage = null;
if (filename.startsWith("submissions/")) {
String submission = filename.substring("submissions/".length());
int candidateSessionIndex = submission.indexOf('/');
if (candidateSessionIndex > 0) {
submissionName = submission.substring(candidateSessionIndex + 1);
if (submissionDirectory != null) {
storage = submissionDirectory;
} else if (submissionDirectoryMaps != null) {
String sessionKey = submission.substring(0, candidateSessionIndex);
if (StringHelper.isLong(sessionKey)) {
try {
storage = submissionDirectoryMaps.get(new Long(sessionKey));
} catch (Exception e) {
log.error("", e);
}
}
}
}
}
if (storage != null && StringHelper.containsNonWhitespace(submissionName)) {
File submissionFile = new File(storage, submissionName);
if (submissionFile.exists()) {
resource = new FileMediaResource(submissionFile, true);
} else {
resource = new NotFoundMediaResource();
}
} else {
resource = new NotFoundMediaResource();
}
}
} catch (Exception e) {
log.error("", e);
resource = new NotFoundMediaResource();
}
return resource;
}
use of org.olat.core.gui.media.NotFoundMediaResource in project openolat by klemens.
the class QTI21AssessmentRunController method doDownloadSignature.
private void doDownloadSignature(UserRequest ureq) {
MediaResource resource = null;
if (courseNode instanceof IQTESTCourseNode) {
IQTESTCourseNode testCourseNode = (IQTESTCourseNode) courseNode;
AssessmentEntry assessmentEntry = testCourseNode.getUserAssessmentEntry(userCourseEnv);
AssessmentTestSession session = qtiService.getAssessmentTestSession(assessmentEntry.getAssessmentId());
File signature = qtiService.getAssessmentResultSignature(session);
if (signature.exists()) {
resource = new DownloadeableMediaResource(signature);
}
}
if (resource == null) {
resource = new NotFoundMediaResource();
}
ureq.getDispatchResult().setResultingMediaResource(resource);
}
use of org.olat.core.gui.media.NotFoundMediaResource in project openolat by klemens.
the class MessageListController method doDeliverAttachment.
private void doDeliverAttachment(UserRequest ureq, String cmd) {
MediaResource res = null;
try {
int index = cmd.lastIndexOf("_");
String attachmentPosition = cmd.substring(cmd.indexOf("_") + 1, index);
String messageKey = cmd.substring(index + 1);
int position = Integer.parseInt(attachmentPosition);
Long key = new Long(messageKey);
for (MessageView view : backupViews) {
if (view.getKey().equals(key)) {
List<VFSItem> attachments = view.getAttachments();
// velocity counter start with 1
VFSLeaf attachment = (VFSLeaf) attachments.get(position - 1);
VFSMediaResource fileResource = new VFSMediaResource(attachment);
// prevent XSS attack
fileResource.setDownloadable(true);
res = fileResource;
}
}
} catch (Exception e) {
logError("Cannot deliver message attachment", e);
}
if (res == null) {
res = new NotFoundMediaResource();
}
ureq.getDispatchResult().setResultingMediaResource(res);
}
use of org.olat.core.gui.media.NotFoundMediaResource in project OpenOLAT by OpenOLAT.
the class VideoHandler method getAsMediaResource.
@Override
public MediaResource getAsMediaResource(OLATResourceable res, boolean backwardsCompatible) {
RepositoryManager repoManager = CoreSpringFactory.getImpl(RepositoryManager.class);
RepositoryEntry repoEntry = repoManager.lookupRepositoryEntry(res, false);
if (repoEntry == null) {
return new NotFoundMediaResource();
}
VideoManager videoManager = CoreSpringFactory.getImpl(VideoManager.class);
VideoExportMediaResource exportResource = videoManager.getVideoExportMediaResource(repoEntry);
return exportResource;
}
Aggregations