From fd7c24cfd33eaf24badeee2d4d4e2e1be284340c Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Mon, 18 Dec 2006 15:57:49 +0000 Subject: [PATCH] . WCM UI is now sensitive to the 'wcmwf:submitted' aspect marking an item as currently part of a live workflow process - most actions such as Submit, Edit, Delete, Revert etc. are unavailable when an item is within a workflow . Fix to preview url generation after executing an action in the Staging area that changed the UI context . Another icon from Linton git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4638 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/web-client-config-actions.xml | 5 +- .../web-client-config-wcm-actions.xml | 8 ++++ .../evaluator/WCMWorkflowEvaluator.java | 44 ++++++++++++++++++ .../alfresco/web/bean/wcm/AVMBrowseBean.java | 9 +++- .../alfresco/web/bean/wcm/SubmitDialog.java | 8 +--- source/web/images/icons/create_webapp.gif | Bin 1033 -> 1057 bytes .../web/images/icons/create_webapp_large.gif | Bin 1563 -> 1647 bytes 7 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java diff --git a/config/alfresco/web-client-config-actions.xml b/config/alfresco/web-client-config-actions.xml index f4c601cee8..c032748172 100644 --- a/config/alfresco/web-client-config-actions.xml +++ b/config/alfresco/web-client-config-actions.xml @@ -380,11 +380,12 @@ wizard:createForm - - org.alfresco.web.action.evaluator.EditFormEvaluator + + Write,CreateChildren + org.alfresco.web.action.evaluator.EditFormEvaluator edit_form /images/icons/edit_form.gif wizard:editForm diff --git a/config/alfresco/web-client-config-wcm-actions.xml b/config/alfresco/web-client-config-wcm-actions.xml index 2da8058c52..d3cad81c51 100644 --- a/config/alfresco/web-client-config-wcm-actions.xml +++ b/config/alfresco/web-client-config-wcm-actions.xml @@ -8,6 +8,7 @@ Write + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator edit /images/icons/edit_icon.gif #{AVMEditBean.setupEditAction} @@ -21,6 +22,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -35,6 +37,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -49,6 +52,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -63,6 +67,7 @@ Delete + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator delete /images/icons/delete.gif #{AVMBrowseBean.setupContentAction} @@ -77,6 +82,7 @@ Read + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator submit /images/icons/submit.gif #{AVMBrowseBean.setupContentAction} @@ -91,6 +97,7 @@ Read + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator revert /images/icons/revert.gif #{AVMBrowseBean.revertNode} @@ -161,6 +168,7 @@ Write + org.alfresco.web.action.evaluator.WCMWorkflowEvaluator update /images/icons/update.gif #{AVMBrowseBean.setupContentAction} diff --git a/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java b/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java new file mode 100644 index 0000000000..007bc3da1c --- /dev/null +++ b/source/java/org/alfresco/web/action/evaluator/WCMWorkflowEvaluator.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * 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. + */ +package org.alfresco.web.action.evaluator; + +import javax.faces.context.FacesContext; + +import org.alfresco.repo.avm.AVMNodeConverter; +import org.alfresco.repo.avm.wf.AVMSubmittedAspect; +import org.alfresco.service.cmr.avm.AVMService; +import org.alfresco.web.action.ActionEvaluator; +import org.alfresco.web.bean.repository.Node; +import org.alfresco.web.bean.repository.Repository; + +/** + * UI Action Evaluator - return true if the node is not part of an in-progress WCM workflow. + * + * @author Kevin Roast + */ +public class WCMWorkflowEvaluator implements ActionEvaluator +{ + /** + * @see org.alfresco.web.action.ActionEvaluator#evaluate(org.alfresco.web.bean.repository.Node) + */ + public boolean evaluate(Node node) + { + AVMService avm = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getAVMService(); + String path = AVMNodeConverter.ToAVMVersionPath(node.getNodeRef()).getSecond(); + return !avm.hasAspect(-1, path, AVMSubmittedAspect.ASPECT); + } +} diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java index add4244a38..947c5d3332 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java @@ -863,7 +863,14 @@ public class AVMBrowseBean implements IContextListener String[] parts = path.split("[-:]"); String storename = parts[0]; String username = parts[1]; - setupSandboxActionImpl(AVMConstants.buildAVMUserMainStoreName(storename, username), username, false); + if (username.equals(AVMConstants.STORE_STAGING.substring(1))) + { + setupSandboxActionImpl(null, null, false); + } + else + { + setupSandboxActionImpl(AVMConstants.buildAVMUserMainStoreName(storename, username), username, false); + } // setup the action node AVMNodeDescriptor node = avmService.lookup(-1, path, true); diff --git a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java index bd3af95144..ec9532d430 100644 --- a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java @@ -471,7 +471,7 @@ public class SubmitDialog extends BaseDialogBean this.warningItems = new ArrayList(selected.size() >> 1); for (AVMNodeDescriptor node : selected) { - if (hasAssociatedWorkflow(AVMNodeConverter.ToNodeRef(-1, node.getPath())) == false) + if (this.avmService.hasAspect(-1, node.getPath(), AVMSubmittedAspect.ASPECT) == false) { NodeRef ref = AVMNodeConverter.ToNodeRef(-1, node.getPath()); if (submittedPaths.contains(node.getPath()) == false) @@ -555,12 +555,6 @@ public class SubmitDialog extends BaseDialogBean } } - private boolean hasAssociatedWorkflow(NodeRef ref) - { - // TODO: does not appear to work for AVM - need a specific impl instead - return (this.workflowService.getWorkflowsForContent(ref, true).size() != 0); - } - /** * Construct a workflow package as a layered directory over the staging sandbox. The items for * submission are pushed into the layer and the package constructed around it. diff --git a/source/web/images/icons/create_webapp.gif b/source/web/images/icons/create_webapp.gif index acb4beac340742bcbe99b738c95f1bbe4012f322..005c9c5d0cc9d46fa486384281bc5575c88f44ae 100644 GIT binary patch delta 754 zcmVnf$ zo^f%jWo4Lqd$nd}ly7gJg@wC_h`or2yo-yzXlRRZah7>`ppTEdmX^eomBW{p#h94I zgM+D@oXDM>$e*9dq@>KJr_QFP&8Vo(sj1JbtkJ8h(66u3pnssfwzk%|xYwYdyTHKQ z#Khjk#oo!u;mgb7&CTP!zS7Une$%n+uQ5f z+Unro?&IU|;^Ob&;qK(*@aE?6>gx3D?Dg*M_U!ER@bLHY^7!-f`1<<%U}1Zmo~oUm zrfh9;Yix0xoqwUBqNQVHYLb(cc%;;Nr`LL>)_keif2-Ssu;6;3%Zs<>kGt!Qx#*6% z>4~!5inr#5u-t^M+JC0cc%8$4qse=mzjKeQkEp_ts>5h{jAeb3bB(5TjG~UEyM>mf zl%=(Jf{S8wgLR6Whn%jPr?8Wknq_TpWNdDio19o&TtBU`v8bu3ba{AaYG$aZr|?Qp+S#7d(en^(}>a}L?=jKa1bFwh(eS2r~$L)4x=m=AWYEELWitFf+~gi;-!uy kDHLGvP#8~>4rkSpnil&&1 zrjUc7f_0c{Ypi5soN{uoZ*Qt=Yousso^f%jWo4Lqd$o3Uu61>-eSNlOW|VJlpM-?E zetxorg}aA`yoiXsh={z4i@tbxqlk#OXlRR*lf!XwmU(%gmVcJSm6gMnm&KTv#e;*X zoSev=oyeb`$(owNqN2;Bq|B$M&Zef#sHo0~iKwZm&#bJ`tEU^p#oo!u;mgb7%F5x*&Ev(z+RxAA&d%e}(dEw0 z;>E?-)6?eF)n4e%&fvwx*4NkR*4F6N)#usS>e$%n+}!Nj+w0oe>fqq+`S)-6_jLLAg8KQF zlhOf54C>z0+sM4u%E|x#|C2ES+><~8Ykwj61OWg5k^n3K0000G01yBG2<8AK2^{Ff zMUsIC5qf!XV+n{59TE!k0>g(EE>VDZKyi@Z3m#$0j1ki%%7z^y5Rz!3g$$cEX~bN) z;h{!HNjRQ_LE|P)8#7v(aG(%Tpp+h7%&d8%hRhZxM}kPWslv(^NNCQ0nWDtV4}B0P z1~xE2U{NFi1(+Zi;$y~zDgqNIV$=tbp#w;W0LdXk0}FwV66L{jr;vgnKy=V(A!0(7 zMu+&^u~TQypaD5(n5d8;MGQ%f2+^4%2M_}rB`|ncA%u!RM}Pw9`Qzt-g%3rrBy{A+ WfglJG7C@1R5C?)JaEJ>G2mm_(@oJR- diff --git a/source/web/images/icons/create_webapp_large.gif b/source/web/images/icons/create_webapp_large.gif index 60dfc1d99a60aa4c48736957db36e64a0ce29218..fb9ec9bff49ecaeeee346045470d0734e3f8edb8 100644 GIT binary patch delta 1599 zcmV-F2Eh574DSqoM@dFFIbk3GAOQCO00000|NsBSwz}fm=g`j5a&CR;=JdnC%h=c4 zGcQCmF-Y+5`8YRI&duzwuf|A6XRxo;X5+AjV^Zfbw|K{fE{r&$g zFHV$};Bj(|!^HB!!{gf9{MXp_!^GWygTT?#`?9puxVqVY5nZ%ly#Q|FyZ=#>(r+%->4zTmgK-m9<9)Y<;h*ZjW2AJwa)1i+u;A^>H6>S{>9Guyu|Ly z)c(rS{mIh&$|0;vboyO*!|Pm|IpX`$IkK0)AqK! z+tS(mmYJu+&HBmH|HI7nz{&Eoyx_9B-l?(Eu(;aK*#El1<)W#`)703x#Ok-e;g6D? zhKZAZU1Dv4gNNPT;ESBKdx@Q)tGITf(|M-We5u)htlWmO;)=HBiM8d3wBwDr>5I4K zf2Y!nxaW|(>yEnVeyiGouilBa<#?XOZ;`ZqqsVoax^tAZc$vItg`$Y8(s`J;j;O-) z_4d@&)@Xf@o2s{Ic!Rvb#cpwPW@>DWkdazJUS6cAsI;}Uo1L6?d3NOG65Jj9s}&#f|Jn# z6&TW{ck9{3`10(=n|0s6pz!0^$E%v&%fgci0~~*_puv3k3@Tjs??MF-3kGJ`w~wL4 zhJH+Z7-51RJ_7^n*-MCz-^GC!GVp!u3I;5<;p)DZs)^tpeK`R8^H2=L%Qo;(N}{Fy9R!TTjOXAT7_ z)TxsjMTIP42O@FYaYsM>XtF^B3SFQ@DEJWq2ODp6qKG1myb%c`dc@(0Cls{6$qXA* zU{D4sXkiB-hrHp2PmW+%$A)?|;fW}jaMH#mB1m9R04At7p(1qTVWcB;JVN6gazKBf z1Sf{H!Nday7-Yc@YQRxPBaRrE#}tz&$>AMNK*7iyn{1NE2?ZE*0UTbaGKwkFFhj~7 zQ&2IZ6?#+wMHFXBv4$Z;C_un)AuuD(GN>q{%P)3Xp+Y1(tl%f0Z6xx^6Kg!sCPAl2 zg9{Crhl6iUObvWK1^E6l2RQw!~6QG|*6^4JB6S zumTHLwy3#Vi0SX$RfWbe_1S1P9zuJOtzWJ`oYzcpRknrpi zOw@3K0u01JL$1%LqKYrOz#?qE)KtvO6(z*XgA^Upz(4|}sB*w50+ljOILp-X%Fx05 zl1#qRn8E`K9+1EU3MZUk10_2fL(nv;Gk9P>;PHat&EK*K0KP}4R;(~Lt6Dy<~W3M;)(!%QhCP_m5RCkb?l xGpQ`T_$r*2!b~&>3|_fFjeb_06X=MmJ$E} delta 1530 zcmV+y3e89WW zGcQCmF-U@cnDFoUs;J8B>-{)4Q^UgHkdNI+M`y^#>Xw%AP*88v)Bm%x(9h57;o<${ zi*^B`RVEU@$vrE)!8mDPGx7Kg@?y~yuIqf#PZtP{MXp_#m3=> ziLA!S`DA5%Uto68)BCNj&eGKR!NcUZy4mdQ{*;;FmYUFFWrt2sX~@g=u(Q;zvC+}g z`pnPr!^Y>TtjWX0_0+YrK;M+%lv(SpP{A3l9jX3)&I`Y`n9>* z#>(unwbaIc%InhB_{hxdy};kJx75bT=Huo0t**FCP;jWQ?XI@)w7c`GvgfzI^ufsg zy20_q%>H+KnY+R6%FzGI(f_@}?#$Bv#mn_=aEG->(;Hs|9)Y<;h z*Zk1c`O??>(boFO&hW#?>D1Z$(bo9S)b`EN^tru%+}7LuzQWAJwx7u$m`VF|GmTH z)Y|=j)7kvc*7w`s|LN@g=IQ#Epvtqn?6JAzzsU5(&iTQ~^UKu!%F_MG()^d5y~)w~ zx4-16u+z@g|Esdp%hUU(uFk^A?z_U~(AfU6x!Ta!{mIbuy~O6z+W*qo{?OO_&({0R z)cD8F@yyfqw!GVhkF%Gc#KX<{$smS2w{<^%y+}+`s zq|CX*>bJn*_VhXU_GkI`bo=_M{QScG{nnGb0v+I;NWhxF>l@8Po6uT|EtUDvT~ z(WGS9vVqa2cFdu7>)6Hk^6bf;b>F|ByPSc>r;PFB*~O=m$*`Z-$-|Qh0~~*lpo0_) z3MyR4@LvcGC|-0B=-@-civs;nJ9SFbm=hCB)S%!1<3dz>8eJN8=~g2|Hb|79V8JB8 zRK@}YGIRtCnMRP7JW>Uyi{^#Vei&*<1c-mjDlvyz8FGcF87!cU9G#K0NSUA^OBiMl@=Q#bLxr62 zjn$|!RY#I4ablz_%Mcn2vj}?pN-`~3e=Fa@^huJWU9-XfBEo`U3?jQ)Ig3OK*56ye zSGRuj2p1(=TquB8=mGa`N4a3#k|ym^FX6j1@!HM_S`8BnwP62?QiWLQD{1 z3^BvRD9Rgf6oU*Mb&P+~1}8bXF$pd!C_sQh8FXPvF~eZ^hKz8;k%tsMI0>aCx=h2y zBoZ8;kOx~J0|y2e*g;Aua?F9pm}Rz+j4xWG9Q0xn!3fHec*1J63$G%QXy z+@SLgKM3^E2OoM6T)@Z;Sm1yL2L~&pusY$C4DmJ+Q(Q$AKZJor5g%8Ba6|Bx!womv zfI|+x7yzNh4HCF8KsD9c6pzl}fHRIZ@m#RN4J~j$v`qum^G-bUoO8}S@whVp2UqM$ gwLtsS^N#`UxU&EU{rEFBM*8Ga^xJgT{ZBvuJIxe?vH$=8