diff --git a/src/main/java/org/olat/core/gui/components/link/Link.java b/src/main/java/org/olat/core/gui/components/link/Link.java index 44f0fbb14086c356e5a04f2ab1e821cff1bc2757..5c710c8594c26ff4e70a0a88f6106f68e3628a53 100644 --- a/src/main/java/org/olat/core/gui/components/link/Link.java +++ b/src/main/java/org/olat/core/gui/components/link/Link.java @@ -83,6 +83,7 @@ public class Link extends Component { private String customEnabledLinkCSS; private String customDisabledLinkCSS; private String target; + private String modURI; private Object internalAttachedObj; private Object userObject; private String accessKey; @@ -255,6 +256,14 @@ public class Link extends Component { setDirty(true); } + public String getModURI() { + return modURI; + } + + public void setModURI(String modURI) { + this.modURI = modURI; + } + protected String getTextReasonForDisabling() { return textReasonForDisabling; } diff --git a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java index 9490a0be92a9d087f9dc7a4da81e69b3cb541b21..8e9568458c3c1f47b7158cc730d03d2c9af0a712 100644 --- a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java +++ b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java @@ -162,9 +162,8 @@ public class LinkRenderer implements ComponentRenderer { sb.append("\" "); } else { sb.append("href=\""); - ubu.buildURI(sb, new String[] { VelocityContainer.COMMAND_ID }, new String[] { command }, - iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL); + link.getModURI(), iframePostEnabled ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL); sb.append("\""); } diff --git a/src/main/java/org/olat/course/nodes/ta/TaskController.java b/src/main/java/org/olat/course/nodes/ta/TaskController.java index 4423194a382f38874a0c323cb296690996fa5f4d..d0a4e26a5093a9234f8141c46b0f7fdd9ddab338 100644 --- a/src/main/java/org/olat/course/nodes/ta/TaskController.java +++ b/src/main/java/org/olat/course/nodes/ta/TaskController.java @@ -54,6 +54,7 @@ import org.olat.core.id.Identity; import org.olat.core.logging.AssertException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.util.FileUtils; import org.olat.core.util.StringHelper; import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSLeaf; @@ -287,11 +288,27 @@ public class TaskController extends BasicController { if (StringHelper.containsNonWhitespace(taskText)) { myContent.contextPut(VC_TASKTEXT, taskText); } + + String taskFilename = getTaskFilename(assignedTask); + taskLaunchButton.setModURI(taskFilename); myContent.put("task.launch", taskLaunchButton); myContent.contextPut(VC_ASSIGNEDTASK, assignedTask); myContent.contextPut(VC_ASSIGNEDTASK_NEWWINDOW,Boolean.TRUE); panel.setContent(myContent); } + + private String getTaskFilename(String task) { + if(!StringHelper.containsNonWhitespace(task)) { + return null; + } + String extension = FileUtils.getFileSuffix(assignedTask); + if(!StringHelper.containsNonWhitespace(extension)) { + return null; + } + + String filename = assignedTask.substring(0, assignedTask.length() - extension.length()); + return StringHelper.transformDisplayNameToFileSystemName(filename) + "." + extension; + } /** * Auto-assign a task to an identity and mark it as sampled if necessary. @@ -459,10 +476,10 @@ public class TaskController extends BasicController { * Initial Date: 20.04.2010 <br> * @author Lavinia Dumitrescu */ - class DeselectableTaskTableModel extends DefaultTableDataModel { + class DeselectableTaskTableModel extends DefaultTableDataModel<String> { private int COLUMN_COUNT; - public DeselectableTaskTableModel(List objects, int num_cols) { + public DeselectableTaskTableModel(List<String> objects, int num_cols) { super(objects); COLUMN_COUNT = num_cols; } @@ -496,7 +513,4 @@ public class TaskController extends BasicController { return task.equals(assignedTask); } } - - -} - +} \ No newline at end of file