From a89f975503add2adf95448f0aa37b08f5acfde5e Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Wed, 4 Oct 2006 15:53:28 +0000 Subject: [PATCH] . Delete Website implemented - removes staging store, preview stores and associated user stores before removing the website node itself . Content Reviewer permissions definition fix . Useful summary page info added to Create Website wizard git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4020 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/bean/wcm/DeleteWebsiteDialog.java | 98 ++++++++++++++++++ source/web/images/icons/delete_website.gif | Bin 0 -> 635 bytes .../web/images/icons/delete_website_large.gif | Bin 0 -> 1623 bytes 3 files changed, 98 insertions(+) create mode 100644 source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java create mode 100644 source/web/images/icons/delete_website.gif create mode 100644 source/web/images/icons/delete_website_large.gif diff --git a/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java b/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java new file mode 100644 index 0000000000..9903d15db2 --- /dev/null +++ b/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java @@ -0,0 +1,98 @@ +package org.alfresco.web.bean.wcm; + +import java.text.MessageFormat; +import java.util.List; + +import javax.faces.context.FacesContext; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.avm.AVMService; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.namespace.RegexQNamePattern; +import org.alfresco.web.app.Application; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.spaces.DeleteSpaceDialog; + +/** + * Bean implementation for the "Delete Website" dialog. + * Removes all user stores and the main staging and preview stores. + * + * @author kevinr + */ +public class DeleteWebsiteDialog extends DeleteSpaceDialog +{ + protected AVMService avmService; + + // ------------------------------------------------------------------------------ + // Bean property getters and setters + + /** + * @param avmService The AVMService to set. + */ + public void setAvmService(AVMService avmService) + { + this.avmService = avmService; + } + + + // ------------------------------------------------------------------------------ + // Dialog implementation + + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + Node websiteNode = this.browseBean.getActionSpace(); + + // delete all attached website sandboxes in reverse order to the layering + String storeRoot = (String)websiteNode.getProperties().get(ContentModel.PROP_AVMSTORE); + + // get the list of users who have a sandbox in the website + int index = 0; + List userInfoRefs = nodeService.getChildAssocs( + websiteNode.getNodeRef(), ContentModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL); + for (ChildAssociationRef ref : userInfoRefs) + { + String username = (String)nodeService.getProperty(ref.getChildRef(), ContentModel.PROP_WEBUSERNAME); + + // delete the preview store for this user + deleteStore(AVMConstants.buildAVMUserPreviewStoreName(storeRoot, username)); + + // delete the main store for this user + deleteStore(AVMConstants.buildAVMUserMainStoreName(storeRoot, username)); + } + + // remove the main staging and preview stores + deleteStore(AVMConstants.buildAVMStagingPreviewStoreName(storeRoot)); + deleteStore(AVMConstants.buildAVMStagingStoreName(storeRoot)); + + // use the super implementation to delete the node itself + return super.finishImpl(context, outcome); + } + + private void deleteStore(String store) + { + // check it exists before we try to remove it + if (this.avmService.getAVMStore(store) != null) + { + this.avmService.purgeAVMStore(store); + } + } + + + // ------------------------------------------------------------------------------ + // Bean Getters and Setters + + /** + * Returns the confirmation to display to the user before deleting the content. + * + * @return The formatted message to display + */ + public String getConfirmMessage() + { + String fileConfirmMsg = Application.getMessage(FacesContext.getCurrentInstance(), + "delete_website_confirm"); + + return MessageFormat.format(fileConfirmMsg, + new Object[] {this.browseBean.getActionSpace().getName()}); + } +} diff --git a/source/web/images/icons/delete_website.gif b/source/web/images/icons/delete_website.gif new file mode 100644 index 0000000000000000000000000000000000000000..a42e0c0eae181c22c94290a384621305bed6b037 GIT binary patch literal 635 zcmV->0)+iXNk%w1VGsZi0OkMy00030|NnQS)OMrOd8XEQrPX_=*m|eedZyNSrPY6| z+W#VR zjJW5Jyz7s<>UN{jccjyNsn~w2+JCIug0J3#u-}HW;)Sx|h_&R3x8{wy>5RGPi@4{0 zrOuDG--fHugsIMms?3e4#f_%Fm8-#pqP~8Zv5%?3ewC|&nXiYQvy-a8l&ip;v&o*a z#k|MSy2a0amaB!Dtc01XhMTR6pt7B>zMHJOw7|-Uny7}Ap_Zkwl%ubtv%j0Cu&A`X zyT{Oxp{$goudKDZz{bjwpQneBmXn>Lz{bgzouIkE!?d@!hK-Mmla;NswzRmp$IHvK zxVWsau*l2H!NkOypPsF;u))K?o}iqru&m+Y;Es@sy1TgH;@{5C%)!FH$jQaDwXw3Z zuhrGk?(Xd9=;qto*~G-c%m4t)W@i8Y{{R30000000000000000A^8LW004RbEC2ui z01yBW000NrfO>*@YG-$8N>X2HgN<=-V@NtR4GdRtje2NFF)kDlCRRdeZ*qfdb59r? z94RO~aBg;XY=mz#6B`~LD;Z8@MOABag)UD;gRXKXl&S zZ+B}jFDNN2EE7=Q;9Wy-ZATUrC>AnsWMJQ1OjOT1FHS%xfhW%mZ+Y;9G4c%vi3Sc5 z=BXo5O%5#Hd?*+pVnISY1sR#qLT5^g1tAO^NB|O#m_c%uJV1beKmh?C3pNsC0|bZx VA0&#A*htNmC_!+96qGO!06W7TMv?#k literal 0 HcmV?d00001 diff --git a/source/web/images/icons/delete_website_large.gif b/source/web/images/icons/delete_website_large.gif new file mode 100644 index 0000000000000000000000000000000000000000..e55401f3ff2619cb8cf71bbb1b968836e088e62c GIT binary patch literal 1623 zcmcgrSyz(>0u3ak2{bkcR7J&*g@T}ffUTW+CXFCaLS@lvi_+kN*p}%j3?n!~mM>qv zFAyO62AG8;LnMX zW#JKc#3te`wzjtNHI4$^#9y_}>-wp`)lL=}X9^9|e>ctEsQan7{^y&f*#fn_q+!0O z*1@$bfz3~$mStYs3f#I}q!}x1e^!2Pjo-N{xc^&a_pcRQ>%yKF*Y(>b+YUb!Xza!H zbIisChIyWS_ZQZkCqUC8Xn6{?E;DXV7iw&!9nX2~&zSWyP|q@4e1{g%bRY>@3O1gAZ-^{(^(>IV93mXs)?<<%dN4%>Q?AhOR2UU zkl%)?8hJH$!EI5~#*i2RMLkDm0Hk_QZiJL|u*$?1)_@WXN34cqI<8a;%XOec%~RAu z;%b(#8Wbvd(i&J&%@tRHA{8W%aw^2INDc{Q+5TOtgo);UiycazhTl1`g;Ac|9w|zfGeCh za*(imJn~r*L z=eOC;+-p-TM!g485r@_)npe^B7RQEmvt0wU~f*xOGa&|8Rmn0*O?Ds8*~7ZQtF z7i!r!V&424Q)*zMl5lJSiG;nQ;DB85?$;^A_&wptOTgOW_ji(G?Fzyg&c>?p{pXJy zoA-gxQ-y=qfI*bqKYJ%Rt(CVDM1^Gn*5nl{%F~xbff0sEK{Su#XK6Ks3?`TP$5@WA zK(ONjvyR!6Vz(x#&`Po?VZx9AgqaIjZUbe0VL=+0#dVTtGEx@XY;tMi6~S{^Cy)c+ z_^t@NQDYR5lcbVt>wiX#eYt#s-%|c1a24wx{e9;v!eM;#b*3I;Lp#YQiT94H-dr6; zd4(T#Jr;ZhcsYH{zNb#ZkM~8f{o}SQZxZmj*f`Rso8~~|yF0qV&9iAClPkA?zRQ>s zm~I!i59(2=O!mI%dFu#w)+kNzSXL#zy*8sUAdzbd7NqWA3D zqw+2KCa@$}k0O@%?Ht(=+J0sFOwyZ=ltD6w0;V21owrD4CNKlP49+Q_`T?h@Hhf{i z44qUIv2ucd{Uq-l6im25MS1T&L&XyHuI%#6=oQp{Z1%=>d$@iRMq?#e(K|R1@ubZw zY4JWg8efBIW&4&}eX366?~XkE>CriIYUgVl;W+8yH-Ku?Egcidb5U+Tx_ly8bu!Hd z8#R{d9gD|*DFV<7qF?*mJ2D4&M;$a7CT6y8$sWrd6@YidXO0Y57TFIe?w;oWTG%WN zNQ@c2nMR9o-@h@u$8=GbNcb)c@v?EVMAPSnK9_F~9Sn=&e`uu*oF$6ms5bBSB>S4( zebUb}-KJ2>o}rD1<;c%+uI1SR5;f-hF*H70vedXcv36p|w!@3-ty&Zh^!zg4T^7G)9h08dqSL6!rP+Lm6AlgFm I!6E+iU(Pb+X#fBK literal 0 HcmV?d00001