WebComponent icon = ISIApplication.get().makeIcon(wicketId, elt.getAttribute("class"));
icon.add(new AttributeModifier("class", true, new Model<String>("sectionIcon")));
return icon;
} else if (wicketId.startsWith("thumbRating_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String thumbId = elt.getAttribute("id");
ThumbPanel thumbPanel = new ThumbPanel(wicketId, loc, thumbId);
thumbPanel.add(new AttributeRemover("id"));
return thumbPanel;
} else if (wicketId.startsWith("thumbRatingDescription_")) {
Label thumbRatingDescription = new Label(wicketId, new ResourceModel("thumbRatingPanel.ratingDescription", "Rate It:"));
return thumbRatingDescription;
} else if (wicketId.startsWith("mediaThumbImage_")) {
String src = elt.getAttribute("src");
ResourceReference imgRef = getRelativeRef(src);
Image image = new Image(wicketId, imgRef) {
private static final long serialVersionUID = 1L;
@Override
protected void onComponentTag(final ComponentTag tag)
{
super.onComponentTag(tag);
tag.put("width", elt.getAttribute("width"));
tag.put("height", elt.getAttribute("height"));
}
};
return image;
} else if (wicketId.startsWith("mediaThumbLink_")) {
String videoId = elt.getAttributeNS(null, "videoId");
XmlSectionModel currentSectionModel = getModel();
VideoLink videoLink = new VideoLink(wicketId, videoId, currentSectionModel);
videoLink.add(new AttributeRemover("videoId"));
return videoLink;
} else if (wicketId.startsWith("videoplayer_")) {
final String videoSrc = elt.getAttribute("src");
ResourceReference videoRef = getRelativeRef(videoSrc);
String videoUrl = RequestCycle.get().urlFor(videoRef).toString();
Integer width = Integer.valueOf(elt.getAttribute("width"));
Integer height = Integer.valueOf(elt.getAttribute("height"));
String preview = elt.getAttribute("poster");
String captions = elt.getAttribute("captions");
String audioDescription = elt.getAttribute("audiodescription");
MediaPlayerPanel comp = new MediaPlayerPanel(wicketId, videoUrl, width, height) {
private static final long serialVersionUID = 1L;
@Override
public void onPlay (String status) {
if (cwmSessionService.isSignedIn())
eventService.saveEvent("video:view", "id=" + elt.getAttribute("videoId") + ",state=" + status, contentPage);
}
};
comp.setFullScreen(true);
comp.setUseOnPlay(true);
if (!Strings.isEmpty(preview))
comp.setPreview(getRelativeRef(preview));
if (!Strings.isEmpty(captions))
comp.setCaptionFile(getRelativeRef(captions));
if (!Strings.isEmpty(audioDescription))
comp.setAudioDescriptionFile(getRelativeRef(audioDescription));
comp.add(new AttributeRemover("src", "width", "height", "poster", "captions", "audiodescription", "videoId"));
return comp;
} else if (wicketId.startsWith("audioplayer_")) {
String audioSrc = elt.getAttribute("src");
ResourceReference audioRef = getRelativeRef(audioSrc);
String audioUrl = RequestCycle.get().urlFor(audioRef).toString();
int width = 400;
if (!elt.getAttribute("width").equals("")) {
try {
width = Integer.parseInt(elt.getAttribute("width").trim());
} catch (Exception e) {
log.debug("Can't get width for {}: {}", audioUrl, e);
width = 400;
}
}
AudioPlayerPanel player = new AudioPlayerPanel(wicketId, audioUrl, width, 20);
player.setShowDownloadLink(false);
player.setRenderBodyOnly(true);
String preview = elt.getAttribute("poster");
if (!Strings.isEmpty(preview))
player.setPreview(getRelativeRef(preview));
return player;
} else if (wicketId.startsWith("swf_")) {
ResourceReference swfRef = getRelativeRef(elt.getAttribute("src"));
return new FlashAppletPanel(wicketId, swfRef,
Integer.valueOf(elt.getAttribute("width")),
Integer.valueOf(elt.getAttribute("height")),
"");
} else if (wicketId.startsWith("feedbackButton_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
IModel<Prompt> pm = responseService.getOrCreatePrompt(PromptType.FEEDBACK, loc, responseGroupId);
ResponseFeedbackButtonPanel component = new ResponseFeedbackButtonPanel(wicketId, pm, responseFeedbackPanel);
String forRole = elt.getAttribute("for");
boolean usesTeacherButton = cwmSessionService.getUser().getRole().subsumes(Role.TEACHER);
component.setVisibilityAllowed(usesTeacherButton ? forRole.equals("teacher") : forRole.equals("student"));
component.add(new AttributeRemover("rgid", "for"));
return component;
} else if (wicketId.startsWith("scoreButtons_")) {
IModel<Prompt> promptModel = getPrompt(elt);
IModel<User> studentModel = ISISession.get().getTargetUserModel();
ISortableDataProvider<Response> responseProvider = responseService.getResponseProviderForPrompt(promptModel, studentModel);
TeacherScoreResponseButtonPanel component = new TeacherScoreResponseButtonPanel(wicketId, responseProvider);
return component;
} else if (wicketId.startsWith("showScore_")) {
IModel<Prompt> promptModel = getPrompt(elt);
IModel<User> studentModel = cwmSessionService.getUserModel();
ISortableDataProvider<Response> responseProvider = responseService.getResponseProviderForPrompt(promptModel, studentModel);
ScorePanel component = new StudentScorePanel(wicketId, responseProvider);
return component;
// A container for a single-select form and whiteboard, notebook links
} else if (wicketId.startsWith("responseContainer")) {
return new WebMarkupContainer(wicketId);
// A single-select, multiple choice form. MultipleChoiceItems will be added to a RadioGroup
// child of this form.
} else if (wicketId.startsWith("select1_immediate_")) {
return makeImmediateResponseForm(wicketId, elt);
// A single-select, multiple choice form. MultipleChoiceItems will be added to a RadioGroup
// child of this form.
} else if (wicketId.startsWith("select1_delay_")) {
return makeDelayedResponseForm(wicketId, elt);
// buttons for viewing in whiteboard and notebook
} else if (wicketId.startsWith("viewActions")) {
IModel<Prompt> mPrompt = getPrompt(elt, PromptType.SINGLE_SELECT);
Long promptId = mPrompt.getObject().getId();
ResponseViewActionsPanel component = new ResponseViewActionsPanel(wicketId, promptId);
component.add(new AttributeRemover("rgid", "title", "group", "type"));
return component;
// A single-select, multiple choice disabled form. MultipleChoiceItems will be added to a RadioGroup
// child of this form.
} else if (wicketId.startsWith("select1_view_immediate")) {
return makeImmediateResponseView(wicketId, elt);
// A single-select, multiple choice disabled form. MultipleChoiceItems will be added to a RadioGroup
// child of this form.
} else if (wicketId.startsWith("select1_view_delay")) {
return makeDelayedResponseView(wicketId, elt);
// A multiple choice radio button. Stores a "correct" value. This is
// added to a generic RadioGroup in a SingleSelectForm.
} else if (wicketId.startsWith("selectItem_")) {
Component mcItem = new SingleSelectItem(wicketId,
new Model<String>(wicketId.substring("selectItem_".length())),
Boolean.valueOf(elt.getAttribute("correct")));
mcItem.add(new AttributeRemover("correct"));
return mcItem;
// A message associated with a wicketId.startsWith("selectItem_").
// The wicketId of the associated SingleSelectItem should be provided as a "for" attribute.
// Visibility based on whether the corresponding radio button is selected in the enclosing form.
} else if (wicketId.startsWith("selectMessage_")) {
return new SingleSelectMessage(wicketId, elt.getAttribute("for")).add(new AttributeRemover("for"));
// A delayed feedback message associated with a wicketId.startsWith("selectItem_").
// The wicketId of the associated SingleSelectItem should be provided as a "for" attribute.
// Visibility based on whether the response has been reviewed.
} else if (wicketId.startsWith("selectDelayMessage_")) {
ISIXmlSection section = getISIXmlSection();
IModel<XmlSection> currentSectionModel = new XmlSectionModel(section);
SingleSelectDelayMessage component = new SingleSelectDelayMessage(wicketId, currentSectionModel);
return component.add(new AttributeRemover("for"));
} else if (wicketId.startsWith("responseList_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
ResponseMetadata metadata = getResponseMetadata(responseGroupId);
IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc, responseGroupId, metadata.getCollection());
ResponseList dataView = new ResponseList (wicketId, mPrompt, metadata, loc, ISISession.get().getTargetUserModel());
dataView.setContext(getResponseListContext(false));
dataView.setAllowEdit(!isTeacher);
dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
dataView.add(new AttributeRemover("rgid", "group"));
return dataView;
} else if (wicketId.startsWith("locking_responseList_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
ResponseMetadata metadata = getResponseMetadata(responseGroupId);
IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc, responseGroupId, metadata.getCollection());
ResponseList dataView = new LockingResponseList (wicketId, mPrompt, metadata, loc, ISISession.get().getTargetUserModel());
dataView.setContext(getResponseListContext(false));
dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
dataView.add(new AttributeRemover("rgid", "group"));
return dataView;
} else if (wicketId.startsWith("period_responseList_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
ResponseMetadata metadata = getResponseMetadata(responseGroupId);
IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc, responseGroupId, metadata.getCollection());
PeriodResponseList dataView = new PeriodResponseList(wicketId, mPrompt, metadata, loc, ISISession.get().getCurrentPeriodModel());
dataView.setContext(getResponseListContext(true));
dataView.setAllowEdit(!isTeacher);
dataView.setAllowNotebook(!inGlossary && !isTeacher && ISIApplication.get().isNotebookOn());
dataView.setAllowWhiteboard(!inGlossary && ISIApplication.get().isWhiteboardOn());
dataView.add(new AttributeRemover("rgid", "group"));
return dataView;
} else if (wicketId.startsWith("responseButtons_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
Element xmlElement = getModel().getObject().getElement().getOwnerDocument().getElementById(responseGroupId);
ResponseMetadata metadata = new ResponseMetadata(xmlElement);
if (!ISIApplication.get().isUseAuthoredResponseType()) {
// set all the response types to the default per application configuration here
metadata = addMetadata(metadata);
}
IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc, metadata.getId(), metadata.getCollection());
ResponseButtons buttons = new ResponseButtons(wicketId, mPrompt, metadata, loc);
buttons.setVisible(!isTeacher);
return buttons;
} else if (wicketId.startsWith("locking_responseButtons_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String responseGroupId = elt.getAttribute("rgid");
Element xmlElement = getModel().getObject().getElement().getOwnerDocument().getElementById(responseGroupId);
ResponseMetadata metadata = new ResponseMetadata(xmlElement);
if (!ISIApplication.get().isUseAuthoredResponseType()) {
// set all the response types to the default per application configuration here
metadata = addMetadata(metadata);
}
IModel<Prompt> mPrompt = responseService.getOrCreatePrompt(PromptType.RESPONSEAREA, loc, metadata.getId(), metadata.getCollection());
return new LockingResponseButtons(wicketId, mPrompt, metadata, loc, cwmSessionService.getUserModel());
} else if (wicketId.startsWith("ratePanel_")) {
ContentLoc loc = new ContentLoc(getModel().getObject());
String promptText = null;
String ratingId = elt.getAttribute("id");
NodeList nodes = elt.getChildNodes();
// extract the prompt text authored - we might want to consider re-writing this
// to use xsl instead of this - but this works for now - ldm