/* | |
* Licensed to the Apache Software Foundation (ASF) under one or more | |
* contributor license agreements. The ASF licenses this file to You | |
* under the Apache License, Version 2.0 (the "License"); you may not | |
* use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. For additional information regarding | |
* copyright in this work, please see the NOTICE file in the top level | |
* directory of this distribution. | |
*/ | |
package org.apache.roller.weblogger.ui.struts2.editor; | |
import org.apache.commons.lang3.StringUtils; | |
import org.apache.commons.logging.Log; | |
import org.apache.commons.logging.LogFactory; | |
import org.apache.roller.weblogger.business.MediaFileManager; | |
import org.apache.roller.weblogger.business.WebloggerFactory; | |
import org.apache.roller.weblogger.pojos.MediaFile; | |
import org.apache.struts2.convention.annotation.AllowedMethods; | |
import org.apache.struts2.interceptor.validation.SkipValidation; | |
/** | |
* Prepares creation of a new weblog entry with an embedded pointer to a media file. | |
*/ | |
@SuppressWarnings("serial") | |
// TODO: make this work @AllowedMethods({"execute"}) | |
public class EntryAddWithMediaFile extends MediaFileBase { | |
private static Log log = LogFactory.getLog(EntryAddWithMediaFile.class); | |
// bean for managing form data | |
private EntryBean bean = new EntryBean(); | |
private String weblog = null; | |
// used by MediaFileView.jsp: multiple images and optional enclosure URL to create a blog post | |
private String[] selectedImages = null; | |
// used by MediaFileView.jsp: single image to create a blog post | |
private String selectedImage = null; | |
public EntryAddWithMediaFile() { | |
this.actionName = "entryAdd"; | |
this.desiredMenu = "editor"; | |
this.pageTitle = "weblogEdit.title.newEntry"; | |
} | |
/** | |
* Prepare bean for creating a new weblog entry with a link to a media file. | |
* @return String The result of the action. | |
*/ | |
@SkipValidation | |
@Override | |
public String execute() { | |
MediaFileManager manager = | |
WebloggerFactory.getWeblogger().getMediaFileManager(); | |
try { | |
if (StringUtils.isNotEmpty(selectedImage) && selectedImages == null) { | |
selectedImages = new String[1]; | |
selectedImages[0] = selectedImage; | |
} | |
StringBuilder sb = new StringBuilder(); | |
if (selectedImages != null) { | |
for (String image : selectedImages) { | |
MediaFile mediaFile = manager.getMediaFile(image); | |
String link; | |
if (mediaFile.isImageFile()) { | |
link = "<p>" + mediaFile.getName() + "</p>"; | |
link += "<a href='<url>'><img src='<urlt>' alt='<name>' width='<width>' height='<height>'></img></a>"; | |
link = link.replace("<url>", mediaFile.getPermalink()) | |
.replace("<urlt>", mediaFile.getThumbnailURL()) | |
.replace("<name>", mediaFile.getName()) | |
.replace("<width>", ""+mediaFile.getThumbnailWidth()) | |
.replace("<height>", ""+mediaFile.getThumbnailHeight()); | |
} else { | |
link = "<a href='<url>'><name></a> (<size> bytes, <type>)"; | |
link = link.replace("<url>", mediaFile.getPermalink()) | |
.replace("<name>", mediaFile.getName()) | |
.replace("<size>",""+mediaFile.getLength()) | |
.replace("<type>",mediaFile.getContentType()); | |
} | |
sb.append(link); | |
} | |
} | |
if (!StringUtils.isEmpty(bean.getEnclosureURL())) { | |
sb.append("<p>") | |
.append(getText("mediaFileEdit.includesEnclosure")) | |
.append("<br />") | |
.append("<a href='" + bean.getEnclosureURL() + "'>") | |
.append(bean.getEnclosureURL()) | |
.append("</a></p>"); | |
} | |
bean.setText(sb.toString()); | |
} catch (Exception e) { | |
log.error("Error while constructing media file link for new entry", e); | |
} | |
return SUCCESS; | |
} | |
public EntryBean getBean() { | |
return bean; | |
} | |
public void setBean(EntryBean bean) { | |
this.bean = bean; | |
} | |
/** | |
* @return the selectedImages | |
*/ | |
public String[] getSelectedImages() { | |
return selectedImages; | |
} | |
/** | |
* @param selectedImages the selectedImages to set | |
*/ | |
public void setSelectedImages(String[] selectedImages) { | |
this.selectedImages = selectedImages; | |
} | |
/** | |
* @return the weblog | |
*/ | |
@Override | |
public String getWeblog() { | |
return weblog; | |
} | |
/** | |
* @param weblog the weblog to set | |
*/ | |
@Override | |
public void setWeblog(String weblog) { | |
this.weblog = weblog; | |
} | |
/** | |
* @return the selectedImage | |
*/ | |
public String getSelectedImage() { | |
return selectedImage; | |
} | |
/** | |
* @param selectedImage the selectedImage to set | |
*/ | |
public void setSelectedImage(String selectedImage) { | |
this.selectedImage = selectedImage; | |
} | |
} |