From 36cee77790abfba91f706ffaa85ba5d05f929dea Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 13 Jun 2012 20:05:58 +0000 Subject: [PATCH] NEW - # 116: Added Private Folder s http://bugs.koc.se/view.php?id=116 --- WebContent/css/zallery.css | 11 +++++++ WebContent/gallery.jsp | 21 ++++++++++--- WebContent/img/private.png | Bin 0 -> 2471 bytes WebContent/img/private.xcf | Bin 0 -> 7736 bytes WebContent/img/user-share.png | Bin 0 -> 881 bytes WebContent/img/user-silhouette.png | Bin 0 -> 511 bytes src/zall/Zallery.java | 4 +-- src/zall/ZalleryAjax.java | 48 ++++++++++++++++++++++++----- src/zall/bean/Folder.java | 19 +++++++++--- 9 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 WebContent/img/private.png create mode 100644 WebContent/img/private.xcf create mode 100644 WebContent/img/user-share.png create mode 100644 WebContent/img/user-silhouette.png diff --git a/WebContent/css/zallery.css b/WebContent/css/zallery.css index 461dbc9..9ffc983 100644 --- a/WebContent/css/zallery.css +++ b/WebContent/css/zallery.css @@ -96,4 +96,15 @@ padding-top: 0px; .modmedia_edit{ display: none; +} + +.not-singular .entry-content .private{ + display: block; + position: absolute; + top: -6px; + right: 10px; + width: 74px; + height: 22px; + background: url("../img/private.png") no-repeat top left; + z-index: 200 } \ No newline at end of file diff --git a/WebContent/gallery.jsp b/WebContent/gallery.jsp index 8a1edec..bbb1d43 100644 --- a/WebContent/gallery.jsp +++ b/WebContent/gallery.jsp @@ -15,9 +15,15 @@ <%} %> - <%if( user.canEdit( folder ) && folder.getParent() != null ){ %> + <%if( user.canEdit( folder ) && folder.getParent() != null ){ %>
+ + <%if( !folder.isPrivate() ){ %> + + <%}else{ %> + + <%} %>
<%} %> @@ -27,9 +33,16 @@ for( Folder subfolder : ((List)request.getAttribute("subfolders")) ){ %>
- <%if( subfolder.getDate().after(new Timestamp(System.currentTimeMillis()-10*24*60*60*1000) )){ %><%} %> - <%=subfolder.getName()%> - <%=subfolder.getName()%> + <%if( subfolder.isPrivate() ){ %> + + <%} else if( subfolder.getDate().after(new Timestamp(System.currentTimeMillis()-10*24*60*60*1000) )){ %> + + <%} %> + + <%=subfolder.getName()%> + <%=subfolder.getName()%> +
<% } %> diff --git a/WebContent/img/private.png b/WebContent/img/private.png new file mode 100644 index 0000000000000000000000000000000000000000..51bad179bc35f462541e148b0a1ef676e0286977 GIT binary patch literal 2471 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 literal 0 HcmV?d00001 diff --git a/WebContent/img/private.xcf b/WebContent/img/private.xcf new file mode 100644 index 0000000000000000000000000000000000000000..99679b554c81f465956371e017e4dbec58a45478 GIT binary patch literal 7736 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 literal 0 HcmV?d00001 diff --git a/WebContent/img/user-share.png b/WebContent/img/user-share.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7841973ebf93ee4f2f08c221d141a4c7cc393d GIT binary patch literal 881 zcmV-%1CIQOP)chJ_$!DK10(xV2+InEref3i zvE0?Rwz<2z?cUzk4_eZJbI*IudCqgs`=0k@utoF?1Lek=0rH5sLexyuOZ0&R{G>U7 zC?`qCNH1p7im4FrEoVi=`6EqDZV|Bg7Z-IT{F3Hqp@!h))UoLqI9LXXE#17Hkg9H6 zZ8SQpMvP4q7+cPLuBx*#|6mA#9nIERSlQ^--L!u6YfGGa%}DS(s8wsVC3V(tE6Me4 zf@Jh_Z^#6WF(66$OjB9wzPN`EhY??01+~G4ao8&7e9oRR|dzaMvJ^mNtj za8$W{W5Z*8>I>Zi+BP7SAQ}h6)cO|wFOr*pk8#T@jLUrh)KZ_u(@|s^xoZo%-LM`} zsC3^Y+Xa<^slR;O(WWbHv_+(Ch?ZR}aF#o4Unl*_L^4%G+Mj|X@s!{bDQn-ehh-#5 za#v@L-9BdUww@@QtI1P_bLN>MTsl*S7gI8r3t8=c%XX(mi6YM|N475w%dcH)cX_>D z^!DC;)YsRCmeSZ-BSIpH`Go-R?mot!yMSmFi5ej$#mqAEcIUIf(eG{9FCh1LJO~Cu z;5ZJENCf=vD1_KL37aLuspf-NSz3Z^q7z}h0U448I$uAoE5|DjDMl~J1Azc|K8{r~ z>oA#hQb^(lAq@qC5Cj3a`S~a?nQ-=W1G?^X%v6@`gR|jqu1ZsF?(e)eK&Zflv<#x%tb-PTM5}&Cv@?Q!gL~HsBT+6Q5G7pLPN+pl`EBRe8%TMQT{z5r z_r81Py!-A`6}d%$9B?SsMc@|b%x}~d5abex#6>!tj&V_~R+G(UlkV00#?S(SBiD6f zs;cVnb^46SHp&S00NXGOJqQTj7P%Q)kq{KK+3c1M3x$68`~ALR+jg|oY8_yC^Ou50 zK$XN*k^A!qr=?QKpG+phAV9xdF8j-7%WFkLhn4c>o6 zwo%qZkN1rk*t9Im7>~yal!V&tHXHasLGz6XY#+D;c0JEavQX1Bo?jUbha^!7g~AK+ z55P5W|69RHBofIxj^k!BnROPhIOqY%y4|jlN~J9LPOsNH9t;NWNIeA#o>90>sXVu7 zno2kvo>73JDG3Ud(P%XGeV<3!;ai9RaZDTQr-d>C<}ljRFJhDyXDt<^fpg#t_!2LU z_~Z}@g<fo0A9ZZ7yv%Ul43kS-Pr&D002ovPDHLkV1m{x B-17hc literal 0 HcmV?d00001 diff --git a/src/zall/Zallery.java b/src/zall/Zallery.java index db7d199..588c465 100644 --- a/src/zall/Zallery.java +++ b/src/zall/Zallery.java @@ -260,7 +260,7 @@ public class Zallery extends HttpServlet{ if(request.getParameter("folder") != null && !request.getParameter("folder").equalsIgnoreCase("null")) folder = Folder.load(db, Long.parseLong(request.getParameter("folder")) ); else{ - folder = Folder.loadRoot(db); + folder = Folder.loadRoot(db, user); // Setup new root folder if( folder == null ){ folder = Folder.genRoot(); @@ -268,7 +268,7 @@ public class Zallery extends HttpServlet{ } } List list = Media.load(db, folder); - List subFolders = Folder.loadSubFolders(db, folder.getId()); + List subFolders = Folder.loadSubFolders(db, folder.getId(), user); //session.setAttribute("user", user); request.setAttribute("folder", folder); diff --git a/src/zall/ZalleryAjax.java b/src/zall/ZalleryAjax.java index 30917ed..e91f87c 100644 --- a/src/zall/ZalleryAjax.java +++ b/src/zall/ZalleryAjax.java @@ -93,13 +93,18 @@ public class ZalleryAjax extends HttpServlet{ if( action.equalsIgnoreCase("verfemail") ){ User verfuser = User.load(db, Long.parseLong(request.getParameter("id"))); if( verfuser.verifyEmail(request.getParameter("hash")) ){ - sendEmailNewUserToAdmin(verfuser, db); + if( verfuser.isEnabled() ) + if(out != null) out.println("{ }"); + else msgs.add(MessageType.INFO, "Your email has been successfully verified"); + else { + sendEmailNewUserToAdmin(verfuser, db); + if(out != null) out.println("{ }"); + else msgs.add(MessageType.INFO, "Your email has been successfully verified, the account is waiting account activation by an admin."); + } verfuser.save(db); - if(out != null) out.println("{ }"); - else msgs.add(MessageType.INFO, "Your email has been successfully verified, the account is waiting account activation by an admin."); } - else if(out != null) out.println("{ \"error\":\"Email verification failed!\" }"); - else msgs.add(MessageType.ERROR, "Email verification failed!"); + else if(out != null) out.println("{ \"error\":\"Invalid email verification hash!\" }"); + else msgs.add(MessageType.ERROR, "Invalid email verification hash!"); return; } @@ -301,6 +306,33 @@ public class ZalleryAjax extends HttpServlet{ else if(out != null) out.println("{ \"error\": \"No such item!\"}"); else msgs.add(MessageType.ERROR, "The item does not exist!"); + } + // Toggle folder private + else if( action.equalsIgnoreCase("mkprivate") ){ + if( request.getParameter("id") == null){ + if(out != null) out.println("{ \"error\": \"Missing parameters!\"}"); + else msgs.add(MessageType.ERROR, "Missing parameters!"); + return; + } + long id = Long.parseLong(request.getParameter("id")); + Folder folder = Folder.load(db, id); + + if( folder != null ){ + if( user.canEdit(folder) ){ + folder.setPrivate( !folder.isPrivate() ); + folder.save(db); + if(out != null) out.println("{}"); + else{ + if(folder.isPrivate()) msgs.add(MessageType.INFO, "Folder is now private (not visible to other users)."); + else msgs.add(MessageType.INFO, "Folder is now public (can be viewed by other users)."); + } + } + else if(out != null) out.println("{ \"error\": \"You are not authorize to edit this folder!\"}"); + else msgs.add(MessageType.ERROR, "You are not authorize to edit this folder!"); + } + else if(out != null) out.println("{ \"error\": \"No such folder!\"}"); + else msgs.add(MessageType.ERROR, "The folder does not exist!"); + } else if( action.equalsIgnoreCase("rmdir") ){ if( request.getParameter("id") == null){ @@ -336,7 +368,7 @@ public class ZalleryAjax extends HttpServlet{ // parent folder if( folder == null ){ String[] dirs = path.split("/"); - Folder parent = Folder.loadRoot(db); + Folder parent = Folder.loadRoot(db, user); if( user.isSuperUser() && path.charAt(0) == '/' ) path = ""; else{ @@ -345,7 +377,7 @@ public class ZalleryAjax extends HttpServlet{ // Get root folder parent = Folder.load(db, path, user); // Get user root folder if( parent == null ){ // Create root folder - parent = Folder.loadRoot(db); // get root folder + parent = Folder.loadRoot(db, user); // get root folder folder = new Folder(); folder.setUser( user ); folder.setParent( parent ); @@ -409,7 +441,7 @@ public class ZalleryAjax extends HttpServlet{ smtpEmail.setSubject("Registration at "+Zallery.getWebsiteName()); smtpEmail.setContentType(ContentType.HTML); smtpEmail.setMessage("You receive this message because you have requested an account" + - "
at "+Zallery.getWebsiteName()+". Please click the link to verify your email address: " + + "
at "+Zallery.getWebsiteName()+". Please click the link to verify your email address: " + "

"+Zallery.getWebsiteURL()+"?action=verfemail&id="+user.getId()+"&hash="+user.getEmailVerificationHash()+"" + "

You will have to wait for an admin to activate your account after you have verified your email."); smtpEmail.send(); diff --git a/src/zall/bean/Folder.java b/src/zall/bean/Folder.java index 7dcbc88..611a89f 100644 --- a/src/zall/bean/Folder.java +++ b/src/zall/bean/Folder.java @@ -26,6 +26,7 @@ public class Folder extends DBBean{ protected String path; protected Folder parent; protected Timestamp date; + protected boolean isPrivate; //@DBLinkTable(name="FolderTree", beanClass=Folder.class, idColumn="parent") //protected LinkedList subFolders; @@ -34,15 +35,17 @@ public class Folder extends DBBean{ public static Folder load(DBConnection db, Long id) throws SQLException{ return load(db, Folder.class, id); } - public static List loadSubFolders(DBConnection db, Long id) throws SQLException{ - PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE parent=?"); + public static List loadSubFolders(DBConnection db, Long id, User user) throws SQLException{ + PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE parent=? AND (isPrivate=0 OR user=?)"); sql.setLong(1, id); + sql.setLong(2, user.getId()); return DBConnection.exec(sql, DBBeanSQLResultHandler.createList(Folder.class, db)); } - public static Folder loadRoot(DBConnection db) throws SQLException{ - PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE path=?"); + public static Folder loadRoot(DBConnection db, User user) throws SQLException{ + PreparedStatement sql = db.getPreparedStatement("SELECT * FROM Folder WHERE path=? AND (isPrivate=0 OR user=?)"); sql.setString(1, "/"); + sql.setLong(2, user.getId()); return DBConnection.exec(sql, DBBeanSQLResultHandler.create(Folder.class, db)); } @@ -85,6 +88,12 @@ public class Folder extends DBBean{ public void setUser(User user){ this.user = user; } + public boolean isPrivate(){ + return isPrivate; + } + public void setPrivate(boolean priv){ + this.isPrivate = priv; + } public String getPath(){ String tmp = path.replaceAll("\\{NAME\\}", user.getName()); return tmp; @@ -180,6 +189,6 @@ public class Folder extends DBBean{ } public boolean isEmpty(DBConnection db) throws SQLException { - return Folder.loadSubFolders(db, this.getId()).isEmpty() && Media.load(db, this).isEmpty(); + return Folder.loadSubFolders(db, this.getId(), user).isEmpty() && Media.load(db, this).isEmpty(); } }