From abeaff52e8da466caae325c02b1f6c5b09352527 Mon Sep 17 00:00:00 2001 From: Suneet Gupta <89080268+suneet-gupta@users.noreply.github.com> Date: Thu, 27 Jun 2024 10:05:57 +0530 Subject: [PATCH] [APPS-2019] Add Undeletable and Unmovable Aspects to Data Dictionary and its Level 1 sub-folders (#2705) * [force] Force release for 2024-06-09. * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] Added Undeletable and Unmovable Aspect to Data Dictionary Folder * [APPS-2019] [ags] [tas] Added Integration Test Cases * [APPS-2019] [ags] [tas] Added fix for restricting the move folder for Data Dictionary * [APPS-2019] [ags] [tas] Added fix for restricting the move folder for Data Dictionary * Added Undeletable and Unmovable Aspects to Data Dictionary Folder * [APPS-2019] Updated Integration Test Cases * [APPS-2019] [ags] [tas] Added fix for restricting the move folder for Data Dictionary * [APPS-2019] [ags] [tas] Added fix for restricting the move folder for Data Dictionary * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments * [APPS-2019] [ags] [tas] Addressed review comments --------- Co-authored-by: Alfresco CI User --- .../bootstrap/RMDataDictionaryBootstrap.xml | 5 + .../bootstrap/customMessagesSpace.xml | 2 + .../alfresco/bootstrap/customModelsSpace.acp | Bin 1710 -> 1863 bytes .../customWebClientExtensionSpace.xml | 2 + .../bootstrap/customWorkflowDefsSpace.acp | Bin 1737 -> 1885 bytes .../alfresco/bootstrap/imapSpaces.acp | Bin 2280 -> 2321 bytes .../bootstrap/renderingActionSpace.xml | 4 + .../bootstrap/replicationActionSpace.xml | 4 + .../bootstrap/scheduledActionsFolder.xml | 4 + .../bootstrap/solrFacetsRootFolder.xml | 4 + .../resources/alfresco/bootstrap/spaces.xml | 42 +++++- .../alfresco/bootstrap/transferSpaces.xml | 5 +- .../alfresco/bootstrap/webScripts.xml | 2 + .../bootstrap/webScriptsExtensions.xml | 2 + .../model-specific-services-context.xml | 8 -- .../org/alfresco/AppContext01TestSuite.java | 3 +- .../bootstrap/DataDictionaryFolderTest.java | 124 ++++++++++++++++++ 17 files changed, 200 insertions(+), 11 deletions(-) create mode 100644 repository/src/test/java/org/alfresco/repo/bootstrap/DataDictionaryFolderTest.java diff --git a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml index 38fd599a62..aa98e6cd62 100644 --- a/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml +++ b/amps/ags/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml @@ -31,6 +31,11 @@ Configuration information for the Records Management application. + + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/customMessagesSpace.xml b/repository/src/main/resources/alfresco/bootstrap/customMessagesSpace.xml index c5099f4c11..7194d46ca8 100644 --- a/repository/src/main/resources/alfresco/bootstrap/customMessagesSpace.xml +++ b/repository/src/main/resources/alfresco/bootstrap/customMessagesSpace.xml @@ -4,6 +4,8 @@ view:childName="app:messages"> + + ${spaces.messages.description} diff --git a/repository/src/main/resources/alfresco/bootstrap/customModelsSpace.acp b/repository/src/main/resources/alfresco/bootstrap/customModelsSpace.acp index f57119b8b39d7bebeee38008eecaea577e31ed4b..969d192357c0efa7612970c2369b9f6c9d034d40 100644 GIT binary patch literal 1863 zcmZ|QX*kpi8wT+IFk*L?xA$DPY{=wmnx4nJ+RiZ+IoiGr9yS2nfAGuE%! zJ!EJJcP+b|F%C;{Mt8PO4?az9H43#m(J}g4Ia2X8=DH{{HcRI3E;+MVvYd7PdO5P` zH0#Ne-GEEPXo=Zw+-@$SMOqQ^wuM)ozEvVV;syJ(wsU`Hd4hNMZS?8x_62X+!sa9K zmUn4;yM58sw3#SoLQfCK${o(NQ`~v9wngYd?0L!e7m6^-|V{wvxj!GIR&eY9=Ltzo+Pf@4XnMxV3cvZ{y3CKxxgZnZ##Ce z>@ON9-xJ0Ska#nExOZs4?5DwbzIWB{Bdogk(p5O7 zwB#Bj^NoTCp~jTbTSO9>neoG1+~*Q7I^-$zG}lzOd{qI!`9x{jyfSKsokzN;?XE9% z3g#Z7X34TQ52==yQ|tK@o%mJ>YH7jn{%jtKeNncocc}w;IcF^sBCk7j;iam%&0RZ9 ze;ad0w#FcL0D^5Oaon|cCOv|%cx90A246uFtumXvP+2;Hq=K`I+Osld#VXyr5sGja z&p@s|H)gTbq?O0fa4$`G+WAmevtTRLdU_t>NQn|?~i`%$)zL(|J zH>IicT0eQ871cX^DafN0>Xn=W`f%2->%~JQx9U@gYO!r~x1q_JuCLmt1s#e1DUbw< zL>STV8}K64$|WqWi}*sPL*DiQa_-rb3>}Ls^s!4X_8AeXl5Tcw@NE#pgpwYp*hq|e zm*P9m@;v`O{=AMp;@TIfxAk%^hyHfL+e0nS*K#%Zh0e zN_7rpLK&km(s$=k+o{aZGO_W?MuH`N3s;vT3Mg-<5}!{ou}QaK^`EEa4>I{RraqOB zgjDMroKt3bn2L0z{E|Y>UvkAZn>1bn9pFQEg&3us4}xFy0>$BOvQWj*P3Wsh5ZSc; zJOxvPO~;5c+JMsio1UaE>?zx^z7A@ru5$dO?bzCieYyDP4c0^M?`!u|ToL;l!B&BC z;65&J-)z=oK*(I6{tT+&ehZUWy(>|m(86~rLB`?CeY{Mxi-C%ScU-8U-crw2g?~*Q zi7{ESbQ_pZm%Tqbuj0 zUB|8l>GxB3{qo;Aw$@ly=FVOOqbn@@(DS`bu8Nl>gJoO#E(DhRvHN1Yj`x>aJqBvF z2F_O7AIF{nC^Jz-;V$(P((pQVWZeThmcgcxNUMGp<_g=G?yHAP)DKVin zLsh}`MZb4g-<)3YI*%riV&`Wn~t4R2_* z#w`}6vGQD$Sn+v!mlI$|+@o6!4snZbu3KygeT;;%E^yviY~iBPbw9bRo|TH%?J#lvh|<`w{6+1` zVRg_)C6m0Q6q6+z3r?=WQ1^n?@m&7=18(A%+|L%A(d;DKF%57Q?AfEu(H?sn5EqR5 q-&{NM!#e-~{RlbfXZsiBc>br{{|RSr!}9~kpYI?5`(yw9&-GuKoo|8w delta 1686 zcmV;H25I@n4z3LwP)h>@6axSN2mr*Tk39m{$j2fE008|g000$}0S6d=?V3yTlQ0m# z?|zC7qhF9Ep~)jeJkyls`MV$O~z- zwUoxL;0wfw`@ptWroA@p5x@=sj7isuVN_^aYf_{PNdl{IJF|K7{h$X3nZOrDjobGokN^{^@I4()Pg_{sewp9 zF=~&Ov2;i?ViC^n0%)^fg7HsZUf{ zjbVpDL|&+BNJ9;OR-~iJj%-L1L^ugsUTUNb2%X5BGz-X(s*q{w?2^H#fJjrrA5`$; zG*eV?2H68@`TzS;s&blq>a|zK2V^MYYI%bZn987PF2-t2SQBF=X@x)2zMw<(mg;Hke3HfqNja60^=K5T(q#z@VTw!BBR>77} zNG*0h57hle-_Nb33MbYo**8aoQ%3R>Z%5)qLo5)*YbK%UF-tvLHUe58> zQgphOydAWEI?kh&l&ssDesjtL((zcf=Dx~H#kS;|2|?pAjssWJm(+$)I=#)IA{2H< zg2rMXxH>fs^#F|2rzCaXO3k;>EXV3fR14i*)jCmGjH%oZPUOu?xebf<+U>kN@(sFE z4lPZiRPC({{rZ?vB`5P-{+-MAlNpHT&dOgsT2IJ-z`i_u)RTu7=9ZdanvS;;?h0vF zM*mEZyD8Y6gE$Hx+U#j3X@3$jjMvTr+4i})S2?PcsV!1?ZViQM{ibF1)cih|<+{0k zn%i%|7DWMNWcKcukQt9>FRBCc?3DmkAHL5O62WMJ9A|PN^_A1QRZeFYPJ40+@4E@; zQHFMZV(ontFsKKmv0qJ`!;kOc=OSrgRcq~TUuoouY-oByz7w2r@{}DT{5g%IIAg)F z^rv5<-=O#q5v?Vv+R4V3exiy(PJ8WNMkv0_~9UcG`Fp3-O! zu`jowx@AzgC~M6{7=*x0P%sh*PjyV4k)(+nw`EZW zGbc&wISz7`D||)L_VMmiwl0)f)ZONuHIz2mejy_+s19TyxD$>L%OM$c^d$QCt_<*8}%>d{2Y;ZI9yL zM2Z{k5A7F-e%3E}iKjY$`t&a5VZt1)cY>ck^mn`YHGeDV+Z7&;+!bzwMHP;k0nmiw z4G}pBl>gER-qrenoee(QX^-4i6+H2z>&zp=QeeV>jfakTSKXn!+n{L_wA2@HpsVQU zytC75tT0m=C}hNk`wLJ@0Rj{Q6axSN2mr*Tk39m{$j2fE008|g000#L0000000000 gAb^wp1{)SoO9ci1000010096)000101^@s60P3khP5=M^ diff --git a/repository/src/main/resources/alfresco/bootstrap/customWebClientExtensionSpace.xml b/repository/src/main/resources/alfresco/bootstrap/customWebClientExtensionSpace.xml index 18df478072..aeb23a48eb 100644 --- a/repository/src/main/resources/alfresco/bootstrap/customWebClientExtensionSpace.xml +++ b/repository/src/main/resources/alfresco/bootstrap/customWebClientExtensionSpace.xml @@ -4,6 +4,8 @@ view:childName="app:webclient_extension"> + + ${spaces.web.client.extension.description} diff --git a/repository/src/main/resources/alfresco/bootstrap/customWorkflowDefsSpace.acp b/repository/src/main/resources/alfresco/bootstrap/customWorkflowDefsSpace.acp index af60348470c4d4fbd1748a0e6e21493af8aec208..9d85df1bdd2b8e70c26f447445756845a0584940 100644 GIT binary patch delta 1853 zcmV-D2g3Nt4c!hMP)h>@6aWAK2mlLK#9031F=LSi0046>000{R9FZLye^pco00W+* zUS^)7US@T83jhHG=mP)%1n2_*0PR{^Z`(E$e($d^guM;6B-=?GBT=!f=wmmaS@&2d zBGs_dZ6amIDEi+=Qj~oti4uJY)&Y5OV)C5tTzJl>BguDfpVMTr!6hYmcJKHz&zayX z$`Q%F+&h0hyq~U|x51mce+|LgwfLBD`Haec@0};cinZ%*x7%5m#3iOtKFiB5uGn=; zT;!Cnyxh40Hh43c)G#S#AqrV2R+=^ZT;wJDbr*yvCE1;;FLngqg$xIC&%2p=w^QGL z@UPd)>-FM#wwy11_WZTyX%JGp1A@y>b=-j_d|2*i{2m8xSQP6he@}}r+kJk@Q!Ez{ zi5S-id932=HZT8dv>N++Pw*6e`NY4WO>DvD84MUjvwY}>17Ii^`rTtXGz zC}S$Bmnc6L3{|6ae@rvVGlum%(v30UbOQxb@@$mkdr*`w8Aah~j62Ll>VGt~&_a!$ zNJo?I=$IxKVK{AhX;C&@sHbwuD#2r_LI&zQ7Nc3=B2Xh9RfzMl(o~{~R}WXK|IVb; z-f8^BjHmL$We8<@dvlP%aFuE;MuFzN<4h!5MNcF_AHtM_e{?v`fm|8V0!NJ2OEt5F z6(THrOfaWf?Q0{$&GXP=T=I(#R)XENMq1dfNE}9(o4IqfuZ@g2IeElF0(^lMtBhwB zOHbU^Mw)NHvLb9PvO3tJ%nMvH0+59}gg0|Q3+~cX{5$1I3af+$U&_>u*W%ESWXvhgC(ENe2?T(| zs%^G*f#Hmoa^td=h$35m+XgbAT|@~|uLgyoaJ6lG2RD05x}bn9jw*(Kp}Q=4D)TI_e`vDP{OOl40*Vij+&+n>I5%NZ^%rJK zCLq~k&gUUj^YvOkusebb#x0Y3fJkkswUe`A-{VFEJh{`8*Cx7z%Xc?<9EX(t2-=f zf4@F4LO)bVa__LR!cH*WJ#}u5wA-P0e-++b`Dapm8@nd@E6;-HJL!8ck@t%wZp5PW z?QjnudMenr+_Z+M;aWn&i8}XEpr8))XLFJR^w)9iJQ8fuY}uA}ga{6V51xpO2x@h; zSLi;2(BO;|sXIDCluGy{x>UMnk*311f1*wpm<@pf{~(jh5klVlB23b@p!meM<`V^A z=-iOkZc0)-WqhbOu62QDmuX<&DakfG_3$F3RxGMaae&PkjB-FH#!E1P0=4A>C4K}e zC=HP|e!x6HhRacLjUo1Gy$o>x9bpLFbt|4wDrc~TLbw2DD5N8pLunkzA4*G0f9mc4i`kxQt|A-QIf^Sy8 zbot)AbB8Z<{?pN2gfSH%TyA_{ts-=NnJ2FOcGNXt`Gbz{Hu1lX?~@;WWqh}Lwr+ml zYiqf=2hiSe4ZJKg30N2euN(C(S&)4{br=MdTJYyM%@(i&f5Bq_lQ0cHLx=n$c=In% zO928N0~7!N00;mJR>WBT1pot{ rqh4lpcnbgl1n2_*00ig*002-+1qJ{B000310RUkD008C&00000HC=BY delta 1701 zcmV;W23q;u4#^E0P)h>@6axSN2mk@5k3A~Xx1%uz002TQ000}45eFWB?V3xE(=ZT# z@BE4?;)dEJZP_hV3F0A+fW+&Fys-m@yojBa3i00==k2&@oHRv9u!nAH&y2_8na@tr z-IE`IKiiXp(I|Xu*bB>;kTkS9Ep~)jr@qCgg-kv2nRIW znNp)F_yTd_EG_GHZatdY_B;D#yS~}3ZWin1>Vai%Evqn5i>pRR@*$tMBZSpvRpYhi zm?)07ZWP2QJbwBT1te?0)a9Uol4JJu5GCI{KRSHE#ABK9+Cmn82U7{e&JDI+WM1O(A?R=a>F-bVhBdn zT2QO0Wlsx+jclPwyOzjmgqD#a#*9GIsm#g6sx;Umk%*8Il0C9wBlcaFUE zX1=+zEo-%ZeCRFh+np)tsFv^@w652=VBOT51gG35J?>{Rx#QWTG*CvsImDAkZsa?{ zKxPZZRC=2OhbZV97etC-;p)_=6az@9M@izm&Fs8|=4@nDqRI$$`Rj~kkxR1;%Hm{l+GK@RkL;Tf$=Q*jn~oH{ zFwx|6)AYNQZxdu)8T>ObRx?nYgE%=L+U#lPXm<`Wo2;#et4DX|=3b?!R-(2bf}NTW z)%uM~?6K*6F3ELM{WRa-f-Q=C%E;{9F(xw}%{~^$n!QOPNCGx{QK74g@n=hFZMhrQ z9bHm?9fkF%Raj@2aLhEN9YM`XOqp0E?0Cp$P$W`gx0*Q1AKyjKMJB^i*V<}dX=FlR zG(90dh?{cqlpRC&OA>`q%KT&LPq#$3LGdAiTT7_PxkrAQCuWa~L&Li$4e`#b+PVyz zEz7DvuX`m(HM6w^(ur}Z0aZP;HWw$qUG0c}Aasgn0@>X-$t6z%H}9)xI+&^BczGE$ z_1LLT&^l)4O9%w?E2uVF#P~%Uvb`0PuNY;oQr~}U@FXRM(_cM#YzB_2Al}}f+lTgr zh(8Vbhn5EDmGHe2@cyHL%SP<+t-c2kHRV(#H_uIgxwcSc@k(2Pj6cnl6wYe78oW7uTy%( zB|=nc3L#{pM!(g8oVc78(=lT>ImYpSf^kV~WIr+g2M|_&_ zELrbNAkTlSWAcnLnq=d)Eb3sU1GKkmY%gyo1Z@XymjiKoB{s^C)11F1kR1dk|zG_&tMn83qXXRtzzv&cT>^hoDuDM5DWp^65Fa1A= z>k@l9ZV#vTIEG*MApTvXxZ(WN`sK>6@|}DALT3nAu5ff0)0o2)COp1xHZH!I=85as zJz+g?Pq-2kWi)EeUlWa21mq}XO#Vy9cSq~lI_rI_(;itBJn@d}%*(=3V8nop*Nu5s z-68$dLDMK`$v?+|uA)Qv1y853!c1wPkP#owZ%|7C0u%!j0{{RB00E|tJu1|w=ZFyW82$xoHGcdBeU}j(d z6K}&#_supCi8YUZxaeln?O4&q^oy&4%x|6WI+goEwn%h+OH;42l{0%*~MPpfQ>#2rh?uR-{ zkA;=KT-#rD?zR(8hxhT2Ge4JlNliFrEwp9BzCx{OJ0D3-Ik8>guF<@|OPD4-co-^f z!YXU%*uCECS&s0}+|2F&S&pRly>*;sJuP~{MU`WFZ*wIYTkzK#iJfonDrB~7PuUjo z=;OlZHpwR?$9<p#==StUqU(My?wkAf)c)52t{?9%+SRbd@DGR0=Jx>Z=df{b53XV#mJFbjO&bQ<%A&FCD*<_@;!nVpFt&#^du^ z)@^KYJ-QQ4YM9%+V4o>)jp5Q473JsuQZ7gAGL8-nyHRD^_tnJnoQlJ-JuTS_VU zxQpjfIkz%+{N1lr`G~9H)7FIeZicll*=qiku5O;3z;tF~!;zaCx6e2E&3kfXZRF4L zt1BnPGZpQviu!$O){^T>ozz4u%o3(E=3Vpu9I|8D>i;(~Vn42NnsxAkR_edKFXtsW zN7rkqOMh8bc~|P-|Nhq*|E&8~r$3ZkzBTZm;@$SGo;B@}Z>wTh-7jvg delta 743 zcmV~66g`I-2@XAUuZu5HHL3)0ssKI3jhEP02Pz)1QdUI8Fo#HBz8?zcmx3U z0Tcl3R!xuFAP~LhS5RxOHtns7Z1&KqQZK!1bBq<^mveTx6c&UHh6F8~ZJL+MjpPMr6eP%Zj2Ay>30d^;W)#iAB&?+BixeBS zO~SHp%fBNMm{Yfr<(_RE&>E8B-fM+$4Bmo_`3tU6+(3WME}09J1bpm=aRD2;=e8mU zi>-6ZET8jUVOo>I>7tqP>W>hMO!}DGjcbI9Jh>$(DdW$w zIK~!UtqXsUiDYAW)OQjb1#4;)DIIqOqQW9i=Rq^_{_cpMwjBsdcQ1+(K_}eDW0v6rZJ4nS-9f-DRw#6 z@5)Jm-qo)=Tk`+yI?8{?b`4qhi{08(!QGp+A-+Se_Ne}WR&8f{pG3I*CaS-ihNvE* zruG95@&~h^2MYlk7XuUk000O86<=sR{xybgZUO)Rx(fgR4gd|4#t0%FdKq?2Rd@gZ ZP)h{{000001ONm8Pyqk{f(HNq002$0R2~2T diff --git a/repository/src/main/resources/alfresco/bootstrap/renderingActionSpace.xml b/repository/src/main/resources/alfresco/bootstrap/renderingActionSpace.xml index d2b6fe9563..fe25e02702 100644 --- a/repository/src/main/resources/alfresco/bootstrap/renderingActionSpace.xml +++ b/repository/src/main/resources/alfresco/bootstrap/renderingActionSpace.xml @@ -12,6 +12,10 @@ ${spaces.rendition.rendering_actions.name} ${spaces.rendition.rendering_actions.description} + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/replicationActionSpace.xml b/repository/src/main/resources/alfresco/bootstrap/replicationActionSpace.xml index 25c2a0dfef..c37eb279a5 100644 --- a/repository/src/main/resources/alfresco/bootstrap/replicationActionSpace.xml +++ b/repository/src/main/resources/alfresco/bootstrap/replicationActionSpace.xml @@ -12,6 +12,10 @@ ${spaces.replication.replication_actions.name} ${spaces.replication.replication_actions.description} + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/scheduledActionsFolder.xml b/repository/src/main/resources/alfresco/bootstrap/scheduledActionsFolder.xml index 38c9ecfdca..00133289b9 100644 --- a/repository/src/main/resources/alfresco/bootstrap/scheduledActionsFolder.xml +++ b/repository/src/main/resources/alfresco/bootstrap/scheduledActionsFolder.xml @@ -11,5 +11,9 @@ ${spaces.actions.scheduled_actions.name} ${spaces.actions.scheduled_actions.description} + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/solrFacetsRootFolder.xml b/repository/src/main/resources/alfresco/bootstrap/solrFacetsRootFolder.xml index 4b80d008e2..206befe90b 100644 --- a/repository/src/main/resources/alfresco/bootstrap/solrFacetsRootFolder.xml +++ b/repository/src/main/resources/alfresco/bootstrap/solrFacetsRootFolder.xml @@ -14,5 +14,9 @@ ${spaces.solr_facets.root.description} + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/spaces.xml b/repository/src/main/resources/alfresco/bootstrap/spaces.xml index c1faaec15f..744ab0ad4b 100644 --- a/repository/src/main/resources/alfresco/bootstrap/spaces.xml +++ b/repository/src/main/resources/alfresco/bootstrap/spaces.xml @@ -1,7 +1,7 @@ + xmlns:emailserver="http://www.alfresco.org/model/emailserver/1.0" xmlns:sys="http://www.alfresco.org/model/system/1.0"> @@ -30,6 +30,10 @@ space-icon-default ${spaces.dictionary.name} ${spaces.dictionary.description} + + + + @@ -37,6 +41,10 @@ space-icon-default ${spaces.templates.name} ${spaces.templates.description} + + + + @@ -45,6 +53,10 @@ space-icon-default ${spaces.templates.content.name} ${spaces.templates.content.description} + + + + @@ -53,6 +65,10 @@ space-icon-default ${spaces.templates.email.name} ${spaces.templates.email.description} + + + + @@ -79,6 +95,10 @@ space-icon-default ${spaces.templates.rss.name} ${spaces.templates.rss.description} + + + + @@ -93,6 +113,10 @@ space-icon-default ${spaces.savedsearches.name} ${spaces.savedsearches.description} + + + + @@ -100,6 +124,10 @@ space-icon-default ${spaces.scripts.name} ${spaces.scripts.description} + + + + @@ -107,6 +135,10 @@ space-icon-default ${spaces.nodeTemplatesSpace.name} ${spaces.nodeTemplatesSpace.description} + + + + @@ -120,6 +152,10 @@ space-icon-default ${spaces.smartfoldertemplates.name} ${spaces.smartfoldertemplates.description} + + + + @@ -133,6 +169,10 @@ space-icon-default ${spaces.smartdownloads.name} ${spaces.smartdownloads.description} + + + + diff --git a/repository/src/main/resources/alfresco/bootstrap/transferSpaces.xml b/repository/src/main/resources/alfresco/bootstrap/transferSpaces.xml index 07cd98dc6c..7a9c6dc200 100644 --- a/repository/src/main/resources/alfresco/bootstrap/transferSpaces.xml +++ b/repository/src/main/resources/alfresco/bootstrap/transferSpaces.xml @@ -4,10 +4,13 @@ xmlns:view="http://www.alfresco.org/view/repository/1.0" xmlns:cm="http://www.alfresco.org/model/content/1.0" xmlns:app="http://www.alfresco.org/model/application/1.0" - xmlns:trx="http://www.alfresco.org/model/transfer/1.0"> + xmlns:trx="http://www.alfresco.org/model/transfer/1.0" + xmlns:sys="http://www.alfresco.org/model/system/1.0"> + + ${spaces.transfers.description} diff --git a/repository/src/main/resources/alfresco/bootstrap/webScripts.xml b/repository/src/main/resources/alfresco/bootstrap/webScripts.xml index 064480500f..201598caac 100644 --- a/repository/src/main/resources/alfresco/bootstrap/webScripts.xml +++ b/repository/src/main/resources/alfresco/bootstrap/webScripts.xml @@ -3,6 +3,8 @@ + + ${webscripts.url_addressable_web_services} diff --git a/repository/src/main/resources/alfresco/bootstrap/webScriptsExtensions.xml b/repository/src/main/resources/alfresco/bootstrap/webScriptsExtensions.xml index 7e9884ff62..1586d3f24e 100644 --- a/repository/src/main/resources/alfresco/bootstrap/webScriptsExtensions.xml +++ b/repository/src/main/resources/alfresco/bootstrap/webScriptsExtensions.xml @@ -3,6 +3,8 @@ + + ${webscriptsextentions.customized_web_scripts} diff --git a/repository/src/main/resources/alfresco/model-specific-services-context.xml b/repository/src/main/resources/alfresco/model-specific-services-context.xml index 7bd52210b4..069357f4fa 100644 --- a/repository/src/main/resources/alfresco/model-specific-services-context.xml +++ b/repository/src/main/resources/alfresco/model-specific-services-context.xml @@ -68,14 +68,6 @@ /${spaces.company_home.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.content.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.email.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.templates.rss.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.scripts.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.webscripts.childname} - /${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.extension_webscripts.childname} diff --git a/repository/src/test/java/org/alfresco/AppContext01TestSuite.java b/repository/src/test/java/org/alfresco/AppContext01TestSuite.java index 277bb60627..147626480a 100644 --- a/repository/src/test/java/org/alfresco/AppContext01TestSuite.java +++ b/repository/src/test/java/org/alfresco/AppContext01TestSuite.java @@ -76,7 +76,8 @@ import org.junit.runners.Suite; org.alfresco.repo.activities.SiteActivityTestCaseSensitivity.class, org.alfresco.repo.activities.feed.cleanup.FeedCleanerTestCaseSensitivity.class, org.alfresco.repo.activities.SiteActivityTestCaseInsensitivity.class, - org.alfresco.repo.admin.registry.RegistryServiceImplTest.class + org.alfresco.repo.admin.registry.RegistryServiceImplTest.class, + org.alfresco.repo.bootstrap.DataDictionaryFolderTest.class }) public class AppContext01TestSuite { diff --git a/repository/src/test/java/org/alfresco/repo/bootstrap/DataDictionaryFolderTest.java b/repository/src/test/java/org/alfresco/repo/bootstrap/DataDictionaryFolderTest.java new file mode 100644 index 0000000000..009fca7639 --- /dev/null +++ b/repository/src/test/java/org/alfresco/repo/bootstrap/DataDictionaryFolderTest.java @@ -0,0 +1,124 @@ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2024 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.repo.bootstrap; + + +import org.alfresco.model.ContentModel; +import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.BaseSpringTest; +import org.alfresco.util.test.junitrules.ApplicationContextInit; +import org.alfresco.util.test.junitrules.WellKnownNodes; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import java.util.List; + +public class DataDictionaryFolderTest extends BaseSpringTest +{ + @ClassRule + private static final ApplicationContextInit APP_CONTEXT_INIT = new ApplicationContextInit(); + + private static final String DATA_DICTIONARY = "Data Dictionary"; + + @Rule + private WellKnownNodes wellKnownNodes = new WellKnownNodes(APP_CONTEXT_INIT); + + private NodeService nodeService; + + @Before + public void before() + { + ServiceRegistry serviceRegistry = (ServiceRegistry) this.applicationContext.getBean("ServiceRegistry"); + this.nodeService = serviceRegistry.getNodeService(); + } + + @Test + public void testDataDictionaryFolderIsUndeletable() + { + AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); + // get the company_home + NodeRef companyHomeRef = wellKnownNodes.getCompanyHome(); + // get the Data Dictionary + NodeRef dataDictionaryRef = nodeService.getChildByName(companyHomeRef, ContentModel.ASSOC_CONTAINS, DATA_DICTIONARY); + assertTrue(nodeService.hasAspect(dataDictionaryRef, ContentModel.ASPECT_UNDELETABLE)); + + List chilAssocsList = nodeService.getChildAssocs(dataDictionaryRef); + + chilAssocsList.stream() + .map(ChildAssociationRef::getChildRef) + .forEach(childNodeRef -> { + assertTrue(nodeService.hasAspect(childNodeRef, ContentModel.ASPECT_UNDELETABLE)); + try + { + nodeService.deleteNode(childNodeRef); + } + catch (Exception ex) + { + assertTrue(ex.getMessage().contains("deletion is not allowed")); + } + }); + } + + @Test + public void testDataDictionaryFolderIsUnmovable() + { + AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); + // get the company_home + NodeRef companyHomeRef = wellKnownNodes.getCompanyHome(); + // get the Data Dictionary + NodeRef dataDictionaryRef = nodeService.getChildByName(companyHomeRef, ContentModel.ASSOC_CONTAINS, DATA_DICTIONARY); + assertTrue(nodeService.hasAspect(dataDictionaryRef, ContentModel.ASPECT_UNMOVABLE)); + + List chilAssocsList = nodeService.getChildAssocs(dataDictionaryRef); + + chilAssocsList.stream() + .map(ChildAssociationRef::getChildRef) + .forEach(childNodeRef -> { + assertTrue(nodeService.hasAspect(childNodeRef, ContentModel.ASPECT_UNMOVABLE)); + NodeRef folderRef = nodeService.createNode( + companyHomeRef, + ContentModel.ASSOC_CONTAINS, + QName.createQName("testDeleteAndRestore-folder2-" + System.currentTimeMillis()), + ContentModel.TYPE_FOLDER + ).getChildRef(); + try + { + nodeService.moveNode(childNodeRef, folderRef, ContentModel.ASSOC_CONTAINS, ContentModel.ASSOC_CONTAINS); + } + catch (Exception ex) + { + assertTrue(ex.getMessage().contains("move is not allowed")); + } + }); + } +} \ No newline at end of file