Fixed static folder thumbnails
This commit is contained in:
parent
c7747293c5
commit
eafb34d2c2
6 changed files with 57 additions and 27 deletions
|
|
@ -26,7 +26,7 @@
|
|||
<c:forEach items="${subFolders}" var="subFolder">
|
||||
<div class="grid-item folder-thumb col-md-2 col-sm-3 col-xs-4">
|
||||
<a href="?folder=${subFolder.id}">
|
||||
<img class="img-responsive" src="" alt="${subFolder.name}" />
|
||||
<img class="img-responsive" src="${subFolder.getUrlSmall()}" alt="${subFolder.name}" />
|
||||
</a>
|
||||
</div>
|
||||
</c:forEach>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import zall.page.ContentServlet;
|
||||
import zutil.db.DBConnection;
|
||||
import zutil.db.bean.DBBean;
|
||||
import zutil.db.bean.DBBeanSQLResultHandler;
|
||||
|
|
@ -76,6 +77,10 @@ public class Folder extends DBBean {
|
|||
String tmp = name.replaceAll("\\{NAME\\}", userName);
|
||||
return tmp;
|
||||
}
|
||||
public String getRealName() {
|
||||
return name.replaceAll("\\{NAME\\}",
|
||||
"" + (owner != null ? owner.getId() : -1));
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
|
@ -95,4 +100,8 @@ public class Folder extends DBBean {
|
|||
return Folder.loadSubFolders(db, this).isEmpty() &&
|
||||
Media.load(db, this).isEmpty();
|
||||
}
|
||||
|
||||
public String getUrlSmall() {
|
||||
return ContentServlet.getFolderThumbnailUrl(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,13 +106,13 @@ public class Image extends Media {
|
|||
BufferedImage image = null;
|
||||
switch (size) {
|
||||
case SMALL:
|
||||
image = ImageUtil.cropScale(original, 125, 125);
|
||||
image = ImageUtil.scale(original, 600, 600, true);
|
||||
break;
|
||||
case MEDIUM:
|
||||
image = ImageUtil.scale(original, 500, 375, true);
|
||||
image = ImageUtil.scale(original, 1200, 1200, true);
|
||||
break;
|
||||
case LARGE:
|
||||
image = ImageUtil.scale(original, 1200, 800, true);
|
||||
image = ImageUtil.scale(original, 2400, 2400, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -120,9 +120,9 @@ public class Image extends Media {
|
|||
ImageIO.write(image, IMAGE_FORMAT, file);
|
||||
}
|
||||
else if (!orgFile.exists())
|
||||
logger.severe("Original image file missing: '" + file.getAbsolutePath() + "'");
|
||||
logger.severe("Original image file missing: '" + orgFile.getAbsolutePath() + "'");
|
||||
else if (orgFile.canRead())
|
||||
logger.severe("Can not read original image file: '" + file.getAbsolutePath() + "'");
|
||||
logger.severe("Can not read original image file: '" + orgFile.getAbsolutePath() + "'");
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class AuthenticationFilter implements Filter {
|
|||
HttpServletRequest httpRequest = (HttpServletRequest) request;
|
||||
User user = AuthenticationManager.getUserSession(httpRequest.getSession());
|
||||
|
||||
// continue the request via the filter pipeline if it is login page or it is a isValid User
|
||||
// continue the request via the filter pipeline if it is login page or it is a valid User
|
||||
if (AuthenticationManager.isValid(user, httpRequest)) {
|
||||
logger.finest("User already authenticated, continuing filter chain.");
|
||||
chain.doFilter(request, response);
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ public class ResourceManager {
|
|||
currentFolder != null;
|
||||
currentFolder = currentFolder.getParent()) {
|
||||
|
||||
path.insert(0, currentFolder.getName());
|
||||
path.insert(0, currentFolder.getRealName());
|
||||
if (path.charAt(0) != '/')
|
||||
path.insert(0, '/');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import java.io.File;
|
|||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
|
|
@ -15,12 +16,17 @@ import org.apache.commons.fileupload.util.Streams;
|
|||
|
||||
import zall.Zallery;
|
||||
import zall.ZalleryServlet;
|
||||
import zall.bean.Folder;
|
||||
import zall.bean.Image;
|
||||
import zall.bean.Media;
|
||||
import zall.bean.Video;
|
||||
import zall.manager.ResourceManager;
|
||||
import zutil.MimeTypeUtil;
|
||||
import zutil.db.DBConnection;
|
||||
import zutil.io.file.FileUtil;
|
||||
import zutil.log.LogUtil;
|
||||
|
||||
import static zall.page.ContentServlet.URI_FOLDER;
|
||||
import static zall.page.ContentServlet.URI_IMAGE;
|
||||
import static zall.page.ContentServlet.URI_VIDEO;
|
||||
|
||||
|
|
@ -28,26 +34,32 @@ import static zall.page.ContentServlet.URI_VIDEO;
|
|||
/**
|
||||
* A headless page that provides media content.
|
||||
*/
|
||||
@WebServlet({URI_IMAGE, URI_VIDEO})
|
||||
@WebServlet({URI_IMAGE, URI_VIDEO, URI_FOLDER})
|
||||
public class ContentServlet extends ZalleryServlet {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static Logger logger = LogUtil.getLogger();
|
||||
|
||||
public static final String URI_IMAGE = "/image";
|
||||
public static final String URI_VIDEO = "/video";
|
||||
public static final String URI_FOLDER = "/folder";
|
||||
public static final String URI_IMAGE = "/image";
|
||||
public static final String URI_VIDEO = "/video";
|
||||
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
|
||||
|
||||
Media media = null;
|
||||
String contentType = "";
|
||||
File file = null;
|
||||
String extension = null;
|
||||
|
||||
switch (request.getServletPath()){
|
||||
case "/video":
|
||||
media = Video.load(db, Integer.parseInt(request.getParameter("id")));
|
||||
contentType = "video";
|
||||
case URI_FOLDER:
|
||||
file = new File(getServletContext().getRealPath("img/folder.png"));
|
||||
break;
|
||||
case "/image":
|
||||
case URI_IMAGE:
|
||||
media = Image.load(db, Integer.parseInt(request.getParameter("id")));
|
||||
contentType = "image";
|
||||
break;
|
||||
case URI_VIDEO:
|
||||
media = Video.load(db, Integer.parseInt(request.getParameter("id")));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -56,23 +68,25 @@ public class ContentServlet extends ZalleryServlet {
|
|||
if (request.getParameter("size") != null)
|
||||
size = Media.Size.valueOf(request.getParameter("size").toUpperCase());
|
||||
|
||||
File file = media.getFile(size);
|
||||
String extension = media.getFileExtension(size);
|
||||
file = media.getFile(size);
|
||||
extension = media.getFileExtension(size);
|
||||
}
|
||||
|
||||
if (file != null && file.exists()) {
|
||||
if (request.getParameter("download") != null)
|
||||
response.setHeader("Content-disposition", "attachment; filename=" + media.getTitle() + "." + extension);
|
||||
|
||||
if (file.exists()) {
|
||||
response.setContentType(contentType + "/" + extension);
|
||||
response.setContentLength((int) file.length());
|
||||
if (extension == null)
|
||||
extension = FileUtil.getFileExtension(file);
|
||||
|
||||
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
|
||||
Streams.copy(in, response.getOutputStream(), false);
|
||||
in.close();
|
||||
} else
|
||||
response.setStatus(404);
|
||||
response.setContentType(MimeTypeUtil.getMimeByExtension(extension).toString());
|
||||
response.setContentLength((int) file.length());
|
||||
|
||||
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
|
||||
Streams.copy(in, response.getOutputStream(), false);
|
||||
in.close();
|
||||
} else {
|
||||
// Page not found
|
||||
logger.warning("File does not exist: " + file);
|
||||
response.setStatus(404);
|
||||
}
|
||||
}
|
||||
|
|
@ -91,4 +105,11 @@ public class ContentServlet extends ZalleryServlet {
|
|||
"?id=" + media.getId() + "&size=" + size.toString().toLowerCase() +
|
||||
(download ? "&download" : "");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a URL for a specific media file where its data can be retrieved.
|
||||
*/
|
||||
public static String getFolderThumbnailUrl(Folder folder) {
|
||||
return Zallery.WEBSITE_URL + "/folder";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue