From 11ee3f8511cbd07e775fdd63413d967d16c71f21 Mon Sep 17 00:00:00 2001 From: Dave Ward Date: Wed, 12 Sep 2012 19:10:54 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20V4.1-BUG-FIX=20to=20HEAD=20=20=20=2041?= =?UTF-8?q?035:=20Fix=20for=20ALF-15225=20-=20qt.length=20not=20performing?= =?UTF-8?q?=20as=20expected=20in=20search.lib.js=20=20=20=2041047:=20RUSSI?= =?UTF-8?q?AN:=20Translation=20updates=20based=20on=20EN=20r40961=20=20=20?= =?UTF-8?q?=2041049:=20GERMAN:=20Translation=20updates=20based=20on=20EN?= =?UTF-8?q?=20r41033.=20Fixes=20ALF-15749=20and=20ALF-15720.=20=20=20=2041?= =?UTF-8?q?050:=20SPANISH:=20Translation=20updates=20based=20on=20EN=20r41?= =?UTF-8?q?033.=20Fixes=20ALF-15749=20and=20ALF-15720.=20=20=20=2041051:?= =?UTF-8?q?=20FRENCH:=20Translation=20updates=20based=20on=20EN=20r41033.?= =?UTF-8?q?=20Fixes=20ALF-15749=20and=20ALF-15720.=20=20=20=2041052:=20ITA?= =?UTF-8?q?LIAN:=20Translation=20updates=20based=20on=20EN=20r41033.=20Fix?= =?UTF-8?q?es=20ALF-15749=20and=20ALF-15720.=20=20=20=2041053:=20JAPANESE:?= =?UTF-8?q?=20Translation=20updates=20based=20on=20EN=20r41033.=20Fixes=20?= =?UTF-8?q?ALF-15749=20and=20ALF-15720.=20=20=20=2041054:=20DUTCH:=20Trans?= =?UTF-8?q?lation=20updates=20based=20on=20EN=20r41033.=20Fixes=20ALF-1574?= =?UTF-8?q?9=20and=20ALF-15720.=20=20=20=2041055:=20RUSSIAN:=20Translation?= =?UTF-8?q?=20updates=20based=20on=20EN=20r41033.=20Fixes=20ALF-15749=20an?= =?UTF-8?q?d=20ALF-15720.=20=20=20=2041061:=20ALF-11214=20-=20IMAP=20subsy?= =?UTF-8?q?stem=20is=20not=20successfully=20restarted=20after=20incorrect?= =?UTF-8?q?=20modification=20of=20IMAP=20properties=20via=20Admin=20Consol?= =?UTF-8?q?e=20=20=20=2041063:=20RUSSIAN:=20Translation=20updates=20based?= =?UTF-8?q?=20on=20EN=20r41033=20(encoding=20fixes)=20=20=20=2041064:=20CH?= =?UTF-8?q?INESE:=20Translation=20updates=20based=20on=20EN=20r41033=20=20?= =?UTF-8?q?=20=2041073:=20ALF-15760:=20Merged=20V4.0=20to=20V4.1-BUG-FIX?= =?UTF-8?q?=20(another=20lost=20meta-inf=20revision)=20=20=20=20=20=20=203?= =?UTF-8?q?4416:=20ALF-12992:=20Updated=20weblogic=20DD=20for=20SOLR=20=20?= =?UTF-8?q?=20=2041074:=20ALF-15419=20/=20ALF-14438:=20Merged=20V3.4-BUG-F?= =?UTF-8?q?IX=20to=20V4.1-BUG-FIX=20(PARTIAL)=20=20=20=20=20=20=2037373:?= =?UTF-8?q?=20Merged=20PATCHES/V3.4.6=20to=20V3.4-BUG-FIX=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=2036821:=20ALF-13827=20/=20ALF-14402:=20Make=20rep?= =?UTF-8?q?licated=20caches=20recover=20from=20temporary=20comms=20failure?= =?UTF-8?q?s=20by=20flushing=20when=20a=20change=20in=20peers=20is=20detec?= =?UTF-8?q?ted=20=20=20=20=20=20=20=20=20=20-=20We=20do=20not=20flush=20ca?= =?UTF-8?q?ches=20who=20replicate=20via=20copy=20(e.g.=20tickets=20cache)?= =?UTF-8?q?=20as=20these=20may=20not=20be=20recoverable=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=2037122:=20ALF-13919=20/=20ALF-14403:=20Merged=20DEV?= =?UTF-8?q?=20to=20PATCHES/V3.4.6=20=20=20=20=20=20=20=20=20=20-=20Rework?= =?UTF-8?q?=20of=20Dmitry's=20implementation=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?-=20Uses=20dynamic=20HQL=20query=20to=20retrieve=20JBPM=20workf?= =?UTF-8?q?low=20instances=20by=20specified=20query=20criteria=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20-=20WorkflowInstancesGet=20web=20script=20no?= =?UTF-8?q?=20longer=20has=20to=20iterate=20over=20every=20workflow=20inst?= =?UTF-8?q?ance=20in=20the=20database!=20=20=20=20=20=20=20=20=20=20-=20DB?= =?UTF-8?q?=20index=20added=20to=20enable=20efficient=20querying=20by=20st?= =?UTF-8?q?ring=20variable=20=20=20=20=20=20=20=20=20=20-=20Hibernate=20ta?= =?UTF-8?q?stic!=20=20=20=20=20=20=20=20=20=2037188:=20ALF-13919=20/=20ALF?= =?UTF-8?q?-14403:=20Worked=20around=20HQL=20polymorphism=20issues=20by=20?= =?UTF-8?q?using=20explicit=20variable=20subclass=20names=20in=20from=20cl?= =?UTF-8?q?ause=20=20=20=20=20=20=20=20=20=2037204:=20ALF-13919=20/=20ALF-?= =?UTF-8?q?14403:=20Fix=20to=20date=20range=20handling=20by=20Dmitry=20=20?= =?UTF-8?q?=20=2041077:=20ALF-10730:=20Fixed=20object=20finder=20drop-down?= =?UTF-8?q?=20tree=20to=20show=20parent=20icon=20type=20when=20icon=20type?= =?UTF-8?q?=20not=20available=20=20=20=2041089:=20ALF-13998:=20'No=20items?= =?UTF-8?q?'=20error=20is=20highlighted=20in=20red,=20even=20that=20is=20n?= =?UTF-8?q?ot=20sever=20error.=20=20=20=2041109:=20Part=20fix=20for=20ALF-?= =?UTF-8?q?11297=20Disabled=20test:=20test-system-build-test=20has=20been?= =?UTF-8?q?=20removed=20from=20the=20test=20target=20dependency=20list=20?= =?UTF-8?q?=20=20=2041118:=20Fixes:=20ALF-15765=20and=20related=20issue=20?= =?UTF-8?q?ALF-15476:=20=20=20=20=20=20=20-=20Corrects=20merge=20of=20r344?= =?UTF-8?q?05=20and=20r40159=20=20=20=20=20=20=20-=20Adds=20people=20api?= =?UTF-8?q?=20to=20cloud=20proxy=20config=20=20=20=20=20=20=20-=20Cloud/Gl?= =?UTF-8?q?obal=20Folder=20picker=20sites=20list=20now=20universally=20sho?= =?UTF-8?q?ws=20only=20those=20sites=20the=20user=20is=20a=20member=20of.?= =?UTF-8?q?=20=20=20=2041119:=20ALF-15419=20/=20ALF-14438:=20Merged=20DEV?= =?UTF-8?q?=20to=20V4.1-BUG-FIX=20=20=20=20=20=20=2041117:=20ALF-15419=20:?= =?UTF-8?q?=20CLONE=20Remove=20JBPM=20indexes=20present=20from=20upgrades?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20The=20schema=20reference=20files?= =?UTF-8?q?=20were=20updated=20to=20contain=20JBPM=5FVARIABLEINSTANCE.IDX?= =?UTF-8?q?=5FVARINST=5FSTRVAL=20index.=20=20=20=2041130:=20ALF-15590:=20F?= =?UTF-8?q?STR=20transfer=20of=20custom=20content=20type=20with=20parent?= =?UTF-8?q?=20cm:content=20fails=20=20=20=20-=20Fix=20by=20Dmitry=20=20=20?= =?UTF-8?q?=2041131:=20ALF-15714:=20Bitrock=20Uninstaller:=20Uninstaller?= =?UTF-8?q?=20doesn't=20remove=20all=20files=20and=20folders=20in=20*nix?= =?UTF-8?q?=20=20=20=20-=20Fix=20provided=20by=20Bitrock=20=20=20=2041132:?= =?UTF-8?q?=20Fix=20for=20ALF-14388=20-=20Edit=20Online=20option=20is=20no?= =?UTF-8?q?t=20supported=20for=20'.docm',=20'dotm',=20'.xlsm'=20files=20?= =?UTF-8?q?=20=20=20=20-=20corrected=20mimetypes=20to=20be=20lower-case=20?= =?UTF-8?q?=20=20=2041150:=20ALF-13287=20Added=20the=20handling=20of=20UTC?= =?UTF-8?q?=20represented=20by=20"Z"=20within=20comparator=20=20=20=204115?= =?UTF-8?q?4:=20Check=20for=20authentication=20errors=20when=20validating?= =?UTF-8?q?=20a=20ticket,=20if=20an=20error=20occurs=20re-authenticate.=20?= =?UTF-8?q?ALF-15394=20=20=20=2041155:=20ALF-15569:=20User=20with=20'@'=20?= =?UTF-8?q?symbol=20in=20username=20cannot=20invite=20=20=20=20-=20note:?= =?UTF-8?q?=20since=20Ent=204.0.2(+)=20by=20default=20MT=20is=20pre-config?= =?UTF-8?q?ured=20but=20not=20enabled=20=20=20=2041173:=20Merged=20V4.1=20?= =?UTF-8?q?to=20V4.1-BUG-FIX=20=20=20=20=20=20=2041121:=20Merged=20BRANCHE?= =?UTF-8?q?S/DEV/FEATURES/CLOUD1=5FCLOUDSYNC=20to=20BRANCHES/V4.1:=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=2041003:=20CloudSync:=20ALF-15734=20-=20f?= =?UTF-8?q?orce=20unsync=20(of=20last=20SSMN)=20on=20target=20causes=20rep?= =?UTF-8?q?eating=20pull=20errors=20to=20appear=20in=20both=20logs=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=2041026:=20CloudSync:=20ALF-15734=20-=20f?= =?UTF-8?q?orce=20unsync=20(of=20last=20SSMN)=20on=20target=20causes=20rep?= =?UTF-8?q?eating=20pull=20errors=20to=20appear=20in=20both=20logs=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=2041039:=20CloudSync:=20ALF-15734=20-=20f?= =?UTF-8?q?orce=20unsync=20(of=20last=20SSMN)=20on=20target=20causes=20rep?= =?UTF-8?q?eating=20pull=20errors=20to=20appear=20in=20both=20logs=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=2041086:=20CloudSync:=20ALF-15734=20-=20f?= =?UTF-8?q?orce=20unsync=20(of=20last=20SSMN)=20on=20target=20causes=20rep?= =?UTF-8?q?eating=20pull=20errors=20to=20appear=20in=20both=20logs=20=20?= =?UTF-8?q?=20=20=20=20=2041123:=20Merged=20BRANCHES/DEV/FEATURES/CLOUD1?= =?UTF-8?q?=5FCLOUDSYNC=20to=20BRANCHES/V4.1:=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=2041115:=20CloudSync:=20ALF-15734=20-=20force=20unsync=20(of?= =?UTF-8?q?=20last=20SSMN)=20on=20target=20causes=20repeating=20pull=20err?= =?UTF-8?q?ors=20to=20appear=20in=20both=20logs=20=20=20=2041176:=20Attemp?= =?UTF-8?q?t=20to=20debug=20unit=20test=20failure=20=20=20=2041181:=20Stor?= =?UTF-8?q?e=20leak=20in=20AVMServiceTest.test=5FETWOTWO=5F570()=20causing?= =?UTF-8?q?=20unit=20test=20failure=20=20=20=2041184:=20ALF-15610:=20Copy?= =?UTF-8?q?=20Thai=20analyzer=20settings=20to=20its=20many=20SOLR=20locati?= =?UTF-8?q?ons=20=20=20=2041194:=20ALF-11297:=20re-enable=20system=20build?= =?UTF-8?q?=20tests=20=20=20=2041195:=20ALF-11297=20ALF-15807:=20update=20?= =?UTF-8?q?activities=20system=20build=20tests=20after=20correction=20of?= =?UTF-8?q?=20ALF-4832=20=20=20=2041201:=20Fix=20for=20ALF-15767=20Group?= =?UTF-8?q?=20query=20using=20cm:authorityName=20=20=20=2041202:=20Additio?= =?UTF-8?q?nal=20unit=20tests=20related=20to=20ALF-15731=20=20TYPE:"..."?= =?UTF-8?q?=20queries=20no=20longer=20work=20for=20Lucene=20on=204.X=20=20?= =?UTF-8?q?=20=2041203:=20Part=201=20for=20ALF-15811=20SOLR=20query=20incr?= =?UTF-8?q?eases=20DocBitSet=20inefficiently=20=20=20=20-=20check=20it=20m?= =?UTF-8?q?akes=20any=20difference=20=20=20=2041204:=20Merged=20BRANCHES/D?= =?UTF-8?q?EV/BELARUS/V4.1-BUG-FIX-2012=5F08=5F15=20to=20BRANCHES/DEV/V4.1?= =?UTF-8?q?-BUG-FIX:=20(note:=20merging=20as-is=20...=20refactor=20+=20uni?= =?UTF-8?q?t=20test=20fix=20to=20follow=20in=20next=20commit)=20=20=20=20?= =?UTF-8?q?=20=20=2040926:=20ALF-12586:=20Admin=20Console=20shows=20usage?= =?UTF-8?q?=20as=20zero=20-=20if=20user=20is=20deleted=20and=20then=20re-c?= =?UTF-8?q?reated=20(eg.=20re-synchronized=20via=20LDAP=20or=20manually)?= =?UTF-8?q?=20=20=20=20=20=20=2040974:=20ALF-12586:=20Admin=20Console=20sh?= =?UTF-8?q?ows=20usage=20as=20zero=20-=20if=20user=20is=20deleted=20and=20?= =?UTF-8?q?then=20re-created=20(eg.=20re-synchronized=20via=20LDAP=20or=20?= =?UTF-8?q?manually)=20=20=20=2041205:=20ALF-12586:=20Admin=20Console=20sh?= =?UTF-8?q?ows=20usage=20as=20zero=20-=20if=20user=20is=20deleted=20and=20?= =?UTF-8?q?then=20re-created=20(eg.=20re-synchronized=20via=20LDAP=20or=20?= =?UTF-8?q?manually)=20=20=20=20-=20review=20and=20refactor=20the=20propos?= =?UTF-8?q?ed/merged=20fix=20(see=20previous=20commit)=20=20=20=20-=20fix?= =?UTF-8?q?=20unit=20test=20so=20that=20it=20accounts=20for=20previous=20c?= =?UTF-8?q?ontent=20(as=20per=20the=20original=20issue)=20=20=20=20-=20als?= =?UTF-8?q?o:=20add=20missing=20test=20to=20suite=20and=20fix=20that=20tes?= =?UTF-8?q?t=20to=20work=20with=20the=20new=20fix=20(ie.=20cleanup=20previ?= =?UTF-8?q?ous=20content,=20else=20need=20to=20account=20for=20it)=20=20?= =?UTF-8?q?=20=2041210:=20Part=202:=20=20ALF-14861=20SOLR=20to=20scale=20f?= =?UTF-8?q?or=20non-admin=20users=20in=20100k=20sites=20and=20a=20subgroup?= =?UTF-8?q?=20of=20each=20of=201000=20independent=20groupings=20with=20100?= =?UTF-8?q?0=20subgroups=20=20=20=20-=20do=20not=20expand=20authorities=20?= =?UTF-8?q?for=20thoses=20with=20the=20ADMINISTRATOR=5FROLE=20as=20they=20?= =?UTF-8?q?can=20read=20all=20anyway=20=20=20=2041216:=20ALF-11297:=20syst?= =?UTF-8?q?em=20build=20tests=20need=20a=20database=20cleanup=20before=20r?= =?UTF-8?q?unning=20=20=20=2041222:=20ALF-15740,=20ALF-14744:=20Update=20r?= =?UTF-8?q?ule=20firing=20broken=20for=20content=20created=20in=20Explorer?= =?UTF-8?q?=20=20=20=20-=20Old=20code=20lurking=20around=20that=20used=20t?= =?UTF-8?q?o=20use=20the=20inline=20editable=20aspect=20to=20detect=20even?= =?UTF-8?q?ts=20handled=20by=20the=20CreateNodeRuleTrigger=20was=20removed?= =?UTF-8?q?=20from=20OnContentUpdateRuleTrigger=20and=20replaced=20with=20?= =?UTF-8?q?a=20check=20for=20ASPECT=5FNO=5FCONTENT=20=20=20=2041223:=20Add?= =?UTF-8?q?ed=20missing=20swf.languagedir=20setting=20to=20enterprise=20al?= =?UTF-8?q?fresco-global.properties=20=20=20=2041230:=20GERMAN:=20Translat?= =?UTF-8?q?ion=20updates=20based=20on=20EN=20rev41099.=20=20=20=2041232:?= =?UTF-8?q?=20SPANISH:=20Translation=20updates=20based=20on=20EN=20rev4109?= =?UTF-8?q?9.=20=20=20=2041233:=20FRENCH:=20Translation=20updates=20based?= =?UTF-8?q?=20on=20EN=20rev41099.=20=20=20=2041234:=20ITALIAN:=20Translati?= =?UTF-8?q?on=20updates=20based=20on=20EN=20rev41099.=20=20=20=2041235:=20?= =?UTF-8?q?JAPANESE:=20Translation=20updates=20based=20on=20EN=20rev41099.?= =?UTF-8?q?=20=20=20=2041236:=20DUTCH:=20Translation=20updates=20based=20o?= =?UTF-8?q?n=20EN=20rev41099.=20=20=20=2041237:=20RUSSIAN:=20Translation?= =?UTF-8?q?=20updates=20based=20on=20EN=20rev41099.=20=20=20=2041239:=20CH?= =?UTF-8?q?INESE:=20Translation=20updates=20based=20on=20EN=20rev41099.=20?= =?UTF-8?q?=20=20=2041254:=20ALF-15628:=20Avoid=20edit=20online=20(SPP,=20?= =?UTF-8?q?WRITE=5FLOCK)=20clashing=20with=20edit=20offline=20(CheckOutChe?= =?UTF-8?q?ckInService,=20READ=5FONLY=5FLOCK)=20=20=20=20-=20Rationalizati?= =?UTF-8?q?on=20of=20work=20by=20Alex=20Malinovsky=20=20=20=20-=20WebDAVMe?= =?UTF-8?q?thod.checkNode()=20now=20properly=20checks=20whether=20nodes=20?= =?UTF-8?q?without=20WebDAV=20lock=20info=20are=20writeable=20=20=20=20-?= =?UTF-8?q?=20CheckOutCheckInService=20won't=20allow=20checkout=20of=20a?= =?UTF-8?q?=20node=20with=20an=20existing=20WRITE=5FLOCK=20by=20the=20same?= =?UTF-8?q?=20user=20-=20they=20must=20unlock=20first=20=20=20=20-=20Propa?= =?UTF-8?q?gation=20of=20correct=20status=20codes=20=20=20=2041264:=20ALF-?= =?UTF-8?q?15628:=20Fix=20CheckOutCheckInService=20test=20failures=20=20?= =?UTF-8?q?=20=2041265:=20ALF-15699:=20Reverse=20merged=20the=20following,?= =?UTF-8?q?=20thus=20downgrading=20us=20back=20to=20swftools=200.9.1=20=20?= =?UTF-8?q?=20=20=20=20=2040208:=20ALF-12831:=20Upgrade=20to=20swftools=20?= =?UTF-8?q?0.9.2=20=20=20=2041266:=20Rush'n=20in=20some=20translation=20up?= =?UTF-8?q?dates=20from=20Gloria=20=20=20=2041267:=20ALF-15628:=20Fix=20co?= =?UTF-8?q?mpilation=20problem=20=20=20=2041269:=20Merged=20V3.4-BUG-FIX?= =?UTF-8?q?=20to=20V4.1-BUG-FIX=20(RECORD=20ONLY)=20=20=20=20=20=20=204122?= =?UTF-8?q?4:=20ALF-14856:=20Merged=20V4.1-BUG-FIX=20to=20V3.4-BUG-FIX=20?= =?UTF-8?q?=20=20=20=20=20=2041268:=20ALF-15459:=20Merged=20PATCHES/V4.0.2?= =?UTF-8?q?=20to=20V3.4-BUG-FIX=20=20=20=20=20=20=20=20=20=20Merged=20V4.1?= =?UTF-8?q?-BUG-FIX=20to=20V3.4-BUG-FIX=20=20=20=2041274:=20ALF-15608:=20M?= =?UTF-8?q?erged=20V3.4-BUG-FIX=20to=20V4.1-BUG-FIX=20=20=20=20=20=20=2041?= =?UTF-8?q?272:=20ALF-15567:=20Allow=20links=20to=20be=20followed=20throug?= =?UTF-8?q?h=20WebDAV=20on=20port=2080=20using=20basic=20auth=20on=20XP=20?= =?UTF-8?q?=20=20=2041277:=20ALF-12586:=20Admin=20Console=20shows=20usage?= =?UTF-8?q?=20as=20zero=20-=20if=20user=20is=20deleted=20and=20then=20re-c?= =?UTF-8?q?reated=20(eg.=20re-synchronized=20via=20LDAP=20or=20manually)?= =?UTF-8?q?=20=20=20=20-=20fix=20test=20fallout=20after=20merge/fix=20(not?= =?UTF-8?q?e:=20failed=20for=20PostgreSQL=20but=20not=20MySQL=20-=20althou?= =?UTF-8?q?gh=20fix=20was=20not=20DB-specific)=20=20=20=2041278:=20ALF-158?= =?UTF-8?q?40=20Error=20logged=20when=20"No=20thumbnail=20present=20in=20f?= =?UTF-8?q?ile"=20even=20though=20this=20is=20normal=20=20=20=2041284:=20A?= =?UTF-8?q?LF-14875:=20Serialize=20direct=20permissions=20after=20inherite?= =?UTF-8?q?d=20permissions=20so=20that=20they=20take=20precedence=20in=20a?= =?UTF-8?q?ny=20lookups=20in=20permission=20dialogs=20=20=20=2041290:=20JA?= =?UTF-8?q?PANESE:=20Translation=20updates=20based=20on=20EN=20r41099=20Fi?= =?UTF-8?q?xes:=20ALF-14565=20=20=20=2041296:=20ALF-15251=09CIFS:=20Checke?= =?UTF-8?q?d=20out=20document=20is=20not=20marked=20as=20locked=20in=20CIF?= =?UTF-8?q?S=20=20=20=2041299:=20ALF-15714:=20Bitrock=20Uninstaller:=20Uni?= =?UTF-8?q?nstaller=20doesn't=20remove=20all=20files=20and=20folders=20in?= =?UTF-8?q?=20*nix=20=20=20=20-=20Additional=20fix=20provided=20by=20Bitro?= =?UTF-8?q?ck=20=20=20=2041303:=20Fix=20for=20ALF-15799=20Under=20high=20c?= =?UTF-8?q?oncurrency=20load=20balanced=20Solr=20throws=20an=20Antlr=20rel?= =?UTF-8?q?ated=20NPE=20=20=20=20-=20do=20not=20skip=20IO=20Exceptions=20?= =?UTF-8?q?=20=20=2041306:=20Incremented=20version=20revision=20for=204.1.?= =?UTF-8?q?2=20=20=20=2041309:=20ALF-15827:=20Added=20FORMACTION,=20FORMME?= =?UTF-8?q?THOD=20and=20ACTION=20=20HTML=20attributes=20to=20grey=20list?= =?UTF-8?q?=20to=20close=20security=20hole=20(updated=20Surf=20libs=20r113?= =?UTF-8?q?6)=20=20=20=2041318:=20ALF-15857:=20Lucene=20FTS=20indexer=20op?= =?UTF-8?q?ens=20streams=20to=20all=20documents=20to=20be=20indexed=20in?= =?UTF-8?q?=20a=20transaction=20simultaneously=20=20=20=20-=20Now=20stream?= =?UTF-8?q?=20opening=20is=20delayed=20until=20the=20point=20where=20the?= =?UTF-8?q?=20document=20is=20being=20written=20to=20the=20index=20=20=20?= =?UTF-8?q?=2041322:=20Fix=20for=20ALF-15858=20SOLR=20ACL=20tracking=20can?= =?UTF-8?q?=20stall=20or=20miss=20acls=20during=20tracking=20=20=20=204132?= =?UTF-8?q?3:=20Chemistry=20client=20java=20to=20create=20test=20data=20fo?= =?UTF-8?q?r=20ALF-15858,=20ALF-15782,=20CLOUD-596,=20ALF-15753=20etc=20?= =?UTF-8?q?=20=20=2041326:=20ALF-15234:=20IE=208=20or=20IE9=20Download=20.?= =?UTF-8?q?pps=20as=20.ppt=20=20=20=20=20=20=20-Switched=20the=20order=20o?= =?UTF-8?q?f=20the=20filename=20headers=20to=20better=20support=20non-conf?= =?UTF-8?q?orming=20browsers=20(rfc=205987).=20=20=20=2041330:=20ALF-14875?= =?UTF-8?q?:=20Reversed=20r41284=20because=20it=20didn't=20solve=20the=20p?= =?UTF-8?q?roblem=20in=20the=20UI.=20Kev=20reviewing.=20=20=20=2041332:=20?= =?UTF-8?q?ALF-10688:=20Can't=20deactivate=20an=20account=20when=20alfresc?= =?UTF-8?q?oNtlm=20follows=20another=20authentication=20subsystem=20in=20t?= =?UTF-8?q?he=20authentication=20chain=20=20=20=20-=20Now,=20if=20a=20acco?= =?UTF-8?q?unt=20is=20known=20to=20be=20'mutable'=20then=20the=20enabled?= =?UTF-8?q?=20flag=20is=20read=20from=20the=20mutable=20authentication=20s?= =?UTF-8?q?ervice=20=20=20=2041337:=20Merged=20V3.4-BUG-FIX=20(3.4.11)=20t?= =?UTF-8?q?o=20V4.1-BUG-FIX=20(4.1.2)=20=20=20=20=20=20=2041336:=20Transfo?= =?UTF-8?q?rmerDebug:=20Use=20debug=20rather=20than=20trace=20when=20there?= =?UTF-8?q?=20are=20transformers=20but=20they=20are=20all=20unavailable.?= =?UTF-8?q?=20=20=20=2041339:=20ALF-15840=20Error=20logged=20when=20"No=20?= =?UTF-8?q?thumbnail=20present=20in=20file"=20even=20though=20this=20is=20?= =?UTF-8?q?normal=20=20=20=20=20=20=20-=20Found=20some=20more=20cases=20wh?= =?UTF-8?q?ere=20this=20is=20logged=20as=20an=20ERROR=20=20=20=2041342:=20?= =?UTF-8?q?ALF-11087=20(Missing=20icon=20file:=20components\images\filetyp?= =?UTF-8?q?es\generic-tag-32.png)=20=20=20=2041344:=20ALF-15863=20(*=20sea?= =?UTF-8?q?rch=20values):=20Merged=20HEAD=20to=20V4.1-BUG-FIX=20(4.1.2)=20?= =?UTF-8?q?=20=20=20=20=20=2040849:=20ALF-12839=20"Share=20-=20Inconsisten?= =?UTF-8?q?cy=20in=20adding=20a=20user=20or=20a=20group=20into=20a=20group?= =?UTF-8?q?"=20part=202=20=20=20=20=20=20=20-=20Making=20the=20users=20con?= =?UTF-8?q?sole=20stop=20"*"=20searches,=20just=20like=20the=20groups=20co?= =?UTF-8?q?nsole=20when=20the=20min=20search=20length=20is=20set=20to=20la?= =?UTF-8?q?rger=20than=200.=20=20=20=2041346:=20ALF-15237=20-=20REST=20API?= =?UTF-8?q?=20Group=20children=20lists=20username=20for=20fullName=20and?= =?UTF-8?q?=20displayName=20=20=20=2041350:=20Merge=20V3.4-BUG-FIX=20to=20?= =?UTF-8?q?V4.1-BUG-FIX:=20=20=20=2041065:=20Disconnect=20existing=20CIFS?= =?UTF-8?q?=20sessions=20from=20the=20same=20client=20when=20a=20virtual?= =?UTF-8?q?=20circuit=20zero=20session=20is=20opened.=20ALF-13815=20=20=20?= =?UTF-8?q?=2041280:=20Moved=20session=20cleanup=20config=20into=20the=20b?= =?UTF-8?q?ase=20authenticator,=20added=20support=20to=20passthru/base=20a?= =?UTF-8?q?uthentication.=20ALF-13815=20=20=20=2041351:=20Ported=20databas?= =?UTF-8?q?e=20filesystem=20changes=20to=20fix=20session=20disconnect,=20f?= =?UTF-8?q?rom=20V3.4.=20=20=20=2041352:=20Merge=20V3.4-BUG-FIX=20to=20V4.?= =?UTF-8?q?1-BUG-FIX:=20=20=20=2041067:=20Added=20session=20disconnect=20s?= =?UTF-8?q?upport=20to=20the=20Alfresco=20CIFS=20authenticator.=20ALF-1381?= =?UTF-8?q?5.=20=20=20=2041281:=20Added=20session=20cleanup=20support=20to?= =?UTF-8?q?=20passthru=20authenticator,=20session=20cleanup=20config=20mov?= =?UTF-8?q?ed=20to=20base=20class.=20ALF-13815=20=20=20=2041353:=20Update?= =?UTF-8?q?=20svn:mergeinfo=20=20=20=2041355:=20Fix=20for=20ALF-15869=20-?= =?UTF-8?q?=20"Site=20Content"=20dashlet=20shows=20all=20documents=20from?= =?UTF-8?q?=20all=20the=20sites=20in=20Alfresco=20Share=20=20=20=20=20-=20?= =?UTF-8?q?mistakenly=20did=20a=20record-only=20merge=20of=20this=20from?= =?UTF-8?q?=204.1->4.1.1=20=20=20=2041363:=20Fix=20for=20ALF-14875=20-=20M?= =?UTF-8?q?anage=20permissions=20shows=20the=20permission=20'No=20privileg?= =?UTF-8?q?es'=20for=20All=20Other=20Users=20=20=20=20=20-=20reworked=20th?= =?UTF-8?q?e=20permissions=20dialog=20and=20permissions=20panels=20to=20co?= =?UTF-8?q?rrectly=20handle=20multiple=20permissions=20on=20a=20special=20?= =?UTF-8?q?permissions=20group=20such=20as=20GROUP=5FEVERYONE=20=20=20=20?= =?UTF-8?q?=20-=20now=20correctly=20gets/sets=20permissions=20for=20GROUP?= =?UTF-8?q?=5FEVERYONE=20=20=20=20=20-=20this=20also=20fixes=20ALF-12014?= =?UTF-8?q?=20-=20in=20that=20it=20allows=20custom=20SiteXYZ=20permissions?= =?UTF-8?q?=20to=20work=20correctly=20again=20also=20(will=20need=20manual?= =?UTF-8?q?=20backport=20for=203.4.X=20though)=20=20=20=20=20-=20removed?= =?UTF-8?q?=20hacks=20related=20to=20previous=20attempts=20to=20fix=20the?= =?UTF-8?q?=20above=20issue=20=20=20=20=20-=20added=20lots=20of=20comments?= =?UTF-8?q?=20around=20relevant=20sections=20to=20add=20in=20future=20refa?= =?UTF-8?q?ctoring=20or=20understanding=20=20=20=2041371:=20Merged=20BRANC?= =?UTF-8?q?HES/DEV/V3.4-BUG-FIX=20to=20BRANCHES/DEV/V4.1-BUG-FIX=20(RECORD?= =?UTF-8?q?=20ONLY)=20=20=20=20=20=20=2041370:=20Fix=20for=20ALF-12014=20-?= =?UTF-8?q?=20Share=20-=20Custom=20role=20causes=20incorrect=20display=20o?= =?UTF-8?q?f=20permissions=20=20=20=20Manual=20merge=20of=20changes=20to?= =?UTF-8?q?=204.1.2=20=20=20=2041399:=20ALF-13438:=20java.lang.OutOfMemory?= =?UTF-8?q?Error=20appears=20in=20alfresco=20log=20when=20trying=20to=20cr?= =?UTF-8?q?eate=20few=20thousands=20of=20sites=20consistently.=20=20=20=20?= =?UTF-8?q?-=20The=20v4.0=20parent=20assocs=20cache=20used=20to=20store=20?= =?UTF-8?q?every=20verion=20of=20every=20node's=20parent=20assocs,=20so=20?= =?UTF-8?q?as=20we=20added=20a=20node=20to=2060,000=20sites,=20we=20retain?= =?UTF-8?q?ed=20all=20previous=20versions=20of=20the=20user's=20parent=20a?= =?UTF-8?q?ssociation=20map=20=20=20=20-=20After=20creating=2010,000=20sit?= =?UTF-8?q?es,=20the=20cache=20size=20was=20about=204GB,=20containing=20ab?= =?UTF-8?q?out=202=20million=20parents=20=20=20=20-=20Now=20we=20use=20a?= =?UTF-8?q?=20specialized=20class=20that=20allows=20an=20upper=20limit=20t?= =?UTF-8?q?o=20be=20set=20on=20the=20total=20number=20of=20cached=20parent?= =?UTF-8?q?s=20as=20well=20as=20children.=20=20=20=20-=20Because=20the=20c?= =?UTF-8?q?ache=20is=20keyed=20by=20node=20transaction=20ID,=20the=20cache?= =?UTF-8?q?=20can=20be=20non-clustered=20and=20non-transactional=20=20=20?= =?UTF-8?q?=20-=20Once=20the=20average=20number=20of=20parents=20is=20more?= =?UTF-8?q?=20than=208,=20the=20cache=20will=20drop=20its=20oldest=20entri?= =?UTF-8?q?es=20=20=20=20-=20ParentAssocsInfo=20also=20now=20uses=20a=20co?= =?UTF-8?q?mpact=20TreeMap=20instead=20of=20a=20HashMap=20=20=20=2041401:?= =?UTF-8?q?=20ALF-13438:=20Small=20correction=20=20=20=2041406:=20ALF-1343?= =?UTF-8?q?8:=20Fix=20failing=20unit=20tests=20=20=20=20-=20Removed=20unus?= =?UTF-8?q?ed=20node.parentAssocsSharedCache=20and=20corrected=20node.chil?= =?UTF-8?q?dByNameCache=20not=20to=20reference=20it!=20=20=20=20-=20Becaus?= =?UTF-8?q?e=20parent=20assocs=20are=20cached=20by=20transaction=20ID,=20w?= =?UTF-8?q?e=20must=20always=20invalidate=20them=20on=20an=20in-transactio?= =?UTF-8?q?n=20version=20increment=20=20=20=2041409:=20Logging=20of=20unex?= =?UTF-8?q?epected=20errors=20on=20FTP=20=20=20=2041411:=20Fix=20possible?= =?UTF-8?q?=20FTP=20data=20session=20leak=20if=20client=20mixes=20PORT=20a?= =?UTF-8?q?nd=20PASV=20commands.=20ALF-15126=20=20=20=2041412:=20ALF-15845?= =?UTF-8?q?=20:=20Clone=20for=20Hotfix:=20Word=20document=20on=20Windows?= =?UTF-8?q?=20via=20CIFS=20becomes=20locked=20(Read=20Only)=20when=20netwo?= =?UTF-8?q?rk=20drops=20temporarily=20=20=20=2041415:=20Fixes:=20ALF-15649?= =?UTF-8?q?:=20Removes=20country=20locale=20from=20files=20with=20it=20har?= =?UTF-8?q?d=20coded.=20=20=20=2041419:=20ALF-14599:=20Removed=20ftp.ipv6.?= =?UTF-8?q?enabled=20from=20enterprise=20overlay=20and=20bundles=20=20=20?= =?UTF-8?q?=2041426:=20ALF-15845=20Clone=20for=20Hotfix:=20Word=20document?= =?UTF-8?q?=20on=20Windows=20via=20CIFS=20becomes=20locked=20(Read=20Only)?= =?UTF-8?q?=20when=20network=20drops=20temporarily=20=20=20=20=20=20Roll?= =?UTF-8?q?=20back=20changes=20to=20DiskDriver=20interface=20in=20favour?= =?UTF-8?q?=20of=20hacking=20NetworkFile.=20=20=20=2041440:=20JAPANESE:=20?= =?UTF-8?q?Translation=20update=20based=20on=20EN=20r41099=20=20=20=204144?= =?UTF-8?q?6:=20ALF-13091:=20Remove=20unecessary=20bean=20post=20processor?= =?UTF-8?q?s=20from=20sub=20ssytem=20context=20and=20remove=20CXF's=20Jsr2?= =?UTF-8?q?50BeanPostProcessor.=20=20=20=2041458:=20RUSSIAN:=20Further=20t?= =?UTF-8?q?ranslation=20updates=20following=20linguistic=20review.=20=20?= =?UTF-8?q?=20=2041459:=20ALF-15897:=20Revert=20revision=2041446,=20an=20a?= =?UTF-8?q?ttempted=20fix=20for=20ALF-13091=20=20=20=2041487:=20Fix=20for?= =?UTF-8?q?=20ALF-15910=20SOLR=20-=20Add=20index=20warming=20and=20filter?= =?UTF-8?q?=20pointless=20entries=20from=20the=20filter=20cache=20=20=20?= =?UTF-8?q?=20Fix=20for=20ALF-15851=20=20=20=20Too=20many=20live=20instanc?= =?UTF-8?q?es=20of=20SolrIndexSearcher=20at=20one=20time=20resulting=20in?= =?UTF-8?q?=20OOM=20-=20Alfresco=204.1.1=20-=20build=20151=20=20=20=204150?= =?UTF-8?q?6:=20Merged=20DEV=20to=20V4.1-BUG-FIX=20=20=20=20=20=20=2041505?= =?UTF-8?q?:=20ALF-15879:=20PostgreSQL:=20upgrade=202.2.8=20(577)=20->=203?= =?UTF-8?q?.4.10=20(703)=20->=204.1.1=20(159)=20failed.=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20-=20Make=20dropping=20"store=5Fid"=20in?= =?UTF-8?q?dex=20and=20"alf=5Fnode=5Fstore=5Fid=5Fkey"=20constraint=20opti?= =?UTF-8?q?onal=20in=204.1.1=20upgrade=20script=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20because=20clean=203.4=20has=20"store=5Fid"?= =?UTF-8?q?=20index=20and=20doesn't=20have=20"alf=5Fnode=5Fstore=5Fid=5Fke?= =?UTF-8?q?y"=20constraint,=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20but=203.4=20upgraded=20from=202.2=20=20has=20"alf=5Fnode=5Fs?= =?UTF-8?q?tore=5Fid=5Fkey"=20constraint=20and=20doesn't=20have=20"store?= =?UTF-8?q?=5Fid"=20index.=20=20=20=2041531:=20Fixed=20ALF-15687,=20so=20t?= =?UTF-8?q?hat=20any=20user=20(except=20for=20Admin)=20won=E2=80=99t=20be?= =?UTF-8?q?=20able=20to=20retrieve=20any=20other=20user=E2=80=99s=20prefer?= =?UTF-8?q?ences=20via=20REST=20API.=20Also,=20updated=20the=20preferences?= =?UTF-8?q?=20controllers=20for=20the=20Post=20and=20Delete.=20=20=20=2041?= =?UTF-8?q?539:=20ALF-15899:=20Inbound=20email=20does=20not=20support=20mu?= =?UTF-8?q?ltiple=20recipient=20folders=20=20=20=20-=20Fix=20by=20Dmitry?= =?UTF-8?q?=20Vaserin=20=20=20=2041540:=20Merged=20V3.4-BUG-FIX=20to=20V4.?= =?UTF-8?q?1-BUG-FIX=20=20=20=20=20=20=2040794:=20Merged=20DEV=20to=20V3.4?= =?UTF-8?q?-BUG-FIX=20=20=20=20=20=20=20=20=20=2040793:=20ALF-13752=20Savi?= =?UTF-8?q?ng=20Word=20(mac=202011)=20documents=20via=20CIFS=20into=20a=20?= =?UTF-8?q?folder=20with=20Versionable=20rules=20on=20Mac=20OS=20X=20Lion?= =?UTF-8?q?=20(Fix=20for=203.4)=20=20=20=20=20=20=20=20=20=20=20=20=20In?= =?UTF-8?q?=20ContentDiskDriver.renameFile()=20was=20added=20a=20check=20w?= =?UTF-8?q?hether=20a=20node=20in=20the=20archive.=20=20=20=20=20=20=20408?= =?UTF-8?q?06:=20Fix=20for=20ALF-9787=20-=20Hiding=20sites=20in=20Share=20?= =?UTF-8?q?with=20permissionsDefinitions.xml=20[creates=20a=20permissions?= =?UTF-8?q?=20error=20in=20the=20blog=20portion=20of=20the=20site]=20=20?= =?UTF-8?q?=20=20=20=20=2040922:=20Merged=20DEV=20to=20V3.4-BUG-FIX=20(rev?= =?UTF-8?q?iewed=20by=20Frederik)=20=20=20=20=20=20=20=20=20=2040488:=20AL?= =?UTF-8?q?F-13357=20:=20Empty=20outcome=20when=20a=20timer=20is=20invoked?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20A=20check=20for=20transi?= =?UTF-8?q?tionName=20was=20added=20to=20AlfrescoTimer=20to=20support=20cu?= =?UTF-8?q?stom=20transitions.=20=20=20=20=20=20=2040940:=20ALF-15696:=20R?= =?UTF-8?q?emove=20svnkit.jar=20-=20makes=20the=20build=20fail=20if=20the?= =?UTF-8?q?=20version=20of=20installed=20command=20line=20svn=20is=201.7.?= =?UTF-8?q?=20Using=20commandline=20binding=20for=20=20Ant=20task=20t?= =?UTF-8?q?o=20be=20consistent=20with=20other=20parts=20of=20the=20build.?= =?UTF-8?q?=20=20=20=20=20=20=2041066:=20Various=20fixes=20to=20the=20data?= =?UTF-8?q?base=20filesystem=20for=20session=20disconnect=20cleanup.=20=20?= =?UTF-8?q?=20=20=20=20=2041068:=20Updates=20to=20the=20Alfresco=20filesys?= =?UTF-8?q?tem=20for=20session=20cleanup.=20ALF-13815=20=20=20=20=20=20=20?= =?UTF-8?q?41301:=20Merged=20PATCHES/V3.4.9=20to=20V3.4-BUG-FIX=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=2040966:=20ALF-15846=20/=20ALF-15709:=20OOM?= =?UTF-8?q?=20on=20cascading=20reindex=20=20=20=20=20=20=20=20=20=20-=20Av?= =?UTF-8?q?oid=20buffering=20of=20all=20the=20affected=20PATH=20documents?= =?UTF-8?q?=20in=20memory=20-=20used=20the=20set=20of=20'visited'=20paths?= =?UTF-8?q?=20to=20delay=20generation=20to=20the=20final=20flush.=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=2041044:=20ALF-15847=20/=20ALF-15748:=20Luce?= =?UTF-8?q?ne=20indexer=20can=20make=20sub-optimal=20cascade=20reindex=20d?= =?UTF-8?q?ecisions=20during=20an=20LDAP=20sync.=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20-=20When=20a=20user=20in=206=20groups=20was=20removed=20f?= =?UTF-8?q?rom=20a=20massive=20group,=20the=20massive=20group=20was=20gett?= =?UTF-8?q?ing=20cascade=20reindexed=20rather=20than=20the=20user=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20-=20Logic=20adjusted=20as=20follows:=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20For=20nodes=20with=205=20or=20?= =?UTF-8?q?less=20parents,=20we=20always=20cascade=20reindex=20the=20child?= =?UTF-8?q?=20node.=20For=20nodes=20with=20more=20than=205=20parents,=20we?= =?UTF-8?q?=20cascade=20reindex=20the=20parent=20node=20if=20it=20has=20le?= =?UTF-8?q?ss=20children=20than=20the=20child=20has=20parents.=20=20=20=20?= =?UTF-8?q?=20=20=2041395:=20ALF-15715:=20Unable=20to=20edit=20properties?= =?UTF-8?q?=20whilst=20transformation=20in=20progress=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Delayed=20all=20changes=20that=20would=20potential?= =?UTF-8?q?ly=20lock=20the=20parent=20node=20row=20while=20the=20thumbnail?= =?UTF-8?q?=20is=20generating.=20=20=20=20=20=20=20=20=20=20-=20Reorganize?= =?UTF-8?q?d=20RenditionContext=20to=20lazily=20instantiate=20its=20destin?= =?UTF-8?q?ation=20node.=20=20=20=20=20=20=20=20=20=20-=20Changed=20render?= =?UTF-8?q?=20destination=20to=20use=20temporary=20ContentWriter=20until?= =?UTF-8?q?=20render=20is=20complete.=20=20=20=20=20=20=2041396:=20ALF-157?= =?UTF-8?q?15:=20Fix=20for=20failing=20unit=20tests.=20=20=20=20=20=20=204?= =?UTF-8?q?1413:=20Fix=20for=20issue=20where=20user=20calendar=20remote=20?= =?UTF-8?q?api=20was=20generating=20invalid=20date=20searches=20for=20user?= =?UTF-8?q?=20dashlet=20calendar.=20=20=20=20=20=20=2041509:=20Merged=20DE?= =?UTF-8?q?V=20to=20V3.4-BUG-FIX=20=20=20=20=20=20=20=20=20=2041507:=20ALF?= =?UTF-8?q?-12833:=20Issues=20installing=20Alfresco=20on=20WebSphere=20whe?= =?UTF-8?q?n=20the=20server=20doesn't=20have=20internet=20access=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20Context-param=20which=20Sets=20"h?= =?UTF-8?q?ttp://apache.org/xml/features/nonvalidating/load-external-dtd"?= =?UTF-8?q?=20feature=20on=20the=20SAXParser=20to=20false=20if=20this=20pa?= =?UTF-8?q?rameter=20is=20false=20=20=20=20=20=20=2041510:=20ALF-15171:=20?= =?UTF-8?q?After=20addition=20of=20a=20secondary=20parent=20association=20?= =?UTF-8?q?to=20a=20container,=20not=20all=20index=20paths=20were=20being?= =?UTF-8?q?=20regenerated=20due=20to=20a=20logic=20error=20=20=20=20=20=20?= =?UTF-8?q?=2041512:=20ALF-15919:=20Merged=20PATCHES/V3.4.10=20to=20V3.4-B?= =?UTF-8?q?UG-FIX=20=20=20=20=20=20=20=20=20=2041091:=20ALF-15723:=20=20Me?= =?UTF-8?q?rged=20DEV=20to=20PATCHES/V3.4.10=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=2026579:=20Switch=20the=20transformer=20to=20use=20Tika?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@41543 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repository/blogs/blogpost.lib.js | 2 +- .../blogs/post/blog-post.delete_ru.properties | 2 +- .../posts/forum-post.delete_ru.properties | 4 +- .../links/links-delete.post_ru.properties | 6 +- .../repository/links/links.post_ru.properties | 4 +- .../repository/links/links.put_ru.properties | 4 +- .../person/user-csv-upload.post_ru.properties | 14 +-- .../preference/preferences.delete.js | 53 +++++++-- .../repository/preference/preferences.get.js | 46 ++++++-- .../preference/preferences.post.json.js | 61 ++++++++--- .../publishing/authform.get_ru.properties | 12 +-- .../calendar/event.get_ru.properties | 4 +- .../calendar/event.post_ru.properties | 4 +- .../calendar/event.put_ru.properties | 4 +- .../documentlibrary-v2/parse-args.lib.js | 102 ++++++++++-------- .../action/checkout.post.json.js | 2 +- .../alfresco/slingshot/search/search.lib.js | 2 +- .../slingshot/wiki/move.post_ru.properties | 5 +- .../slingshot/wiki/page.get_ru.properties | 2 +- .../activities/SiteActivitySystemTest.java | 4 +- .../AbstractCalendarListingWebScript.java | 3 + .../web/scripts/content/StreamContent.java | 2 +- .../org/alfresco/repo/webdav/GetMethod.java | 13 ++- .../alfresco/repo/webdav/WebDAVHelper.java | 13 +++ .../alfresco/repo/webdav/WebDAVMethod.java | 46 ++------ 25 files changed, 255 insertions(+), 159 deletions(-) diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js index 68d255f8d1..bb97754290 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/blogpost.lib.js @@ -113,7 +113,7 @@ function getBlogPostData(node) */ function hasExternalBlogConfiguration(node) { - if (node === null) + if (node === null || !node.hasPermission("ReadProperties")) { return false; } diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties index 365cc36500..c59af9e878 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/blogs/post/blog-post.delete_ru.properties @@ -1 +1 @@ -blog-post.msg.deleted=\u0411\u043b\u043e\u0433 {0} \u0443\u0434\u0430\u043b\u0435\u043d \ No newline at end of file +blog-post.msg.deleted=\u0411\u043B\u043E\u0433 {0} \u0443\u0434\u0430\u043B\u0435\u043D \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties index f962fd9ec0..17d1965195 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/discussions/posts/forum-post.delete_ru.properties @@ -1,2 +1,2 @@ -forum-post.msg.deleted=\u0423\u0437\u0435\u043b {0} \u0443\u0434\u0430\u043b\u0435\u043d -forum-post.msg.marked.removed=\u0423\u0437\u0435\u043b {0} \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \ No newline at end of file +forum-post.msg.deleted=\u0423\u0437\u0435\u043B {0} \u0443\u0434\u0430\u043B\u0435\u043D +forum-post.msg.marked.removed=\u0423\u0437\u0435\u043B {0} \u043E\u0442\u043C\u0435\u0447\u0435\u043D \u043A\u0430\u043A \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0439 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties index 9d0ba81ad7..d8f88ac260 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links-delete.post_ru.properties @@ -1,3 +1,3 @@ -links-delete.err.not.found=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043e\u043a -links-delete.access.denied=\u041d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c '{0}' -links-delete.msg.deleted=\u0423\u0437\u0435\u043b {0} \u0443\u0434\u0430\u043b\u0435\u043d \ No newline at end of file +links-delete.err.not.found=\u041D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0438\u043C\u0435\u043D\u0430 \u0441\u0441\u044B\u043B\u043E\u043A +links-delete.access.denied=\u041D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 \u0441 \u0438\u043C\u0435\u043D\u0435\u043C '{0}' +links-delete.msg.deleted=\u0423\u0437\u0435\u043B {0} \u0443\u0434\u0430\u043B\u0435\u043D \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties index fdfefef72d..68585e201c 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.post_ru.properties @@ -1,2 +1,2 @@ -links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 -links.err.not.found=\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \ No newline at end of file +links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 +links.err.not.found=\u0421\u0441\u044B\u043B\u043A\u0430 \u0441 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties index fdfefef72d..68585e201c 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/links/links.put_ru.properties @@ -1,2 +1,2 @@ -links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 -links.err.not.found=\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \ No newline at end of file +links.err.access.denied=\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043F\u0440\u0430\u0432 \u043D\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 +links.err.not.found=\u0421\u0441\u044B\u043B\u043A\u0430 \u0441 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties index 6dd733fb92..d82c4b70a4 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/user-csv-upload.post_ru.properties @@ -1,11 +1,11 @@ # User CSV Upload Web Script I18N -person.err.userCSV.invalidForm=\u0414\u0430\u043d\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f -person.err.userCSV.noFile=\u0424\u0430\u0439\u043b\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b -person.err.userCSV.corruptFile=\u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u044b\u043b \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d \u0438\u043b\u0438 \u0443\u0441\u0435\u0447\u0435\u043d +person.err.userCSV.invalidForm=\u0414\u0430\u043D\u043D\u0430\u044F \u0444\u043E\u0440\u043C\u0430 \u043D\u0435 \u0431\u044B\u043B\u0430 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u0441\u043E\u0441\u0442\u0430\u0432\u043D\u0430\u044F +person.err.userCSV.noFile=\u0424\u0430\u0439\u043B\u044B \u043D\u0435 \u0431\u044B\u043B\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u044B +person.err.userCSV.corruptFile=\u0414\u0430\u043D\u043D\u044B\u0439 \u0444\u0430\u0439\u043B \u0431\u044B\u043B \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435\u043D \u0438\u043B\u0438 \u0443\u0441\u0435\u0447\u0435\u043D -person.err.userCSV.general=\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 -person.err.userCSV.generalArgs=\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: {0} -person.err.userCSV.blankColumn=\u0421\u0442\u043e\u043b\u0431\u0435\u0446 {0} (\u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 {1}) \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442, \u043d\u043e \u0431\u044b\u043b \u043f\u0443\u0441\u0442\u044b\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 {2} +person.err.userCSV.general=\u041F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430 +person.err.userCSV.generalArgs=\u041F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430: {0} +person.err.userCSV.blankColumn=\u0421\u0442\u043E\u043B\u0431\u0435\u0446 {0} (\u043D\u043E\u043C\u0435\u0440 \u0441\u0442\u043E\u043B\u0431\u0446\u0430 {1}) \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C, \u043D\u043E \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0442\u0430\u043A\u043E\u0432\u044B\u043C \u0432 \u0441\u0442\u0440\u043E\u043A\u0435 {2} -person.msg.userCSV.created=\u0421\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f {0} +person.msg.userCSV.created=\u0421\u043E\u0437\u0434\u0430\u043D \u0434\u043B\u044F {0} person.msg.userCSV.existing=\u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js index f13f5148ca..d346d84761 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.delete.js @@ -1,16 +1,47 @@ function main() { - // Try and get the person - var userid = url.templateArgs.userid; - var person = people.getPerson(userid); - if (person == null) - { - // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); - return; - } - - preferenceService.clearPreferences(userid, args["pf"]); + // Try and get the person + var userid = url.templateArgs.userid; + var person = people.getPerson(userid); + if (person == null) + { + // 404 since person resource could not be found + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + try + { + preferenceService.clearPreferences(userid, args["pf"]); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } + return; + } } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js index b40c3b6b54..032b45fdd1 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.get.js @@ -6,15 +6,47 @@ function main() if (person == null) { // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + var preferences = null; + try + { + // Get the preferences for the person + var preferences = preferenceService.getPreferences(userid, args["pf"]); + + // Convert the preferences to JSON and place in the model + model.preferences = jsonUtils.toJSONString(preferences); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } return; } - - // Get the preferences for the person - var preferences = preferenceService.getPreferences(userid, args["pf"]); - - // Convert the preferences to JSON and place in the model - model.preferences = jsonUtils.toJSONString(preferences); } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js index aea97e76c8..fdc5eb331c 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/preference/preferences.post.json.js @@ -1,20 +1,51 @@ function main() { - // Try and get the person - var userid = url.templateArgs.userid; - var person = people.getPerson(userid); - if (person == null) - { - // 404 since person resource could not be found - status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + " could not be found"); - return; - } - - // Convert the passed json into a native JS object - var preferences = jsonUtils.toObject(json); - - // Set the preferences - preferenceService.setPreferences(userid, preferences); + // Try and get the person + var userid = url.templateArgs.userid; + var person = people.getPerson(userid); + if (person == null) + { + // 404 since person resource could not be found + status.setCode(status.STATUS_NOT_FOUND, "The user " + userid + + " could not be found"); + return; + } + + // Convert the passed json into a native JS object + var preferences = jsonUtils.toObject(json); + + try + { + // Set the preferences + preferenceService.setPreferences(userid, preferences); + } + catch (error) + { + var msg = error.message; + + if (logger.isLoggingEnabled()) + { + logger.log(msg); + } + + // determine if the exception was UnauthorizedAccessException, if so + // return 401 status code + if (msg.indexOf("UnauthorizedAccessException") != -1) + { + status.setCode(status.STATUS_UNAUTHORIZED, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 401 status code"); + } + else + { + status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, msg); + + if (logger.isLoggingEnabled()) + logger.log("Returning 500 status code"); + } + return; + } } main(); \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties index c01106c14b..cc8da5f396 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/publishing/authform.get_ru.properties @@ -1,6 +1,6 @@ -authForm.title=Alfresco » \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 -authForm.heading=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 -authForm.directions=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f {0} -authForm.user=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: -authForm.password=\u041f\u0430\u0440\u043e\u043b\u044c: -authForm.login=\u0412\u043e\u0439\u0442\u0438 +authForm.title=Alfresco » \u0421\u0432\u0435\u0434\u0435\u043D\u0438\u044F \u043E\u0431 \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u043A\u0430\u043D\u0430\u043B\u043E\u0432 +authForm.heading=\u0410\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043A\u0430\u043D\u0430\u043B\u043E\u0432 +authForm.directions=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043E\u0438 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0434\u043B\u044F {0} +authForm.user=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F: +authForm.password=\u041F\u0430\u0440\u043E\u043B\u044C: +authForm.login=\u0412\u043E\u0439\u0442\u0438 diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties index 836c71d9cb..d3d8573d51 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.get_ru.properties @@ -1,2 +1,2 @@ -calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} -calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file +calendar.err.event.not.found=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0439\u0442\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties index 69e50ebc30..e832215029 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.post_ru.properties @@ -1,2 +1,2 @@ -calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} -calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file +calendar.err.event.not.found=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0439\u0442\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties index 69e50ebc30..e832215029 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/calendar/event.put_ru.properties @@ -1,2 +1,2 @@ -calendar.err.event.not.found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: {0} -calendar.err.invalid.json=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 JSON: {0} \ No newline at end of file +calendar.err.event.not.found=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0439\u0442\u0438 \u0441\u043E\u0431\u044B\u0442\u0438\u0435: {0} +calendar.err.invalid.json=\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 JSON: {0} \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js index bda1f32c85..108342a019 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary-v2/parse-args.lib.js @@ -89,62 +89,69 @@ var Common = */ getLocation: function Common_getLocation(node, libraryRoot) { - var location = null, - qnamePaths = node.qnamePath.split("/"), - displayPaths = node.displayPath.split("/"); - - if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES) + try { - libraryRoot = companyhome; - } + var location = null, + qnamePaths = node.qnamePath.split("/"), + displayPaths = node.displayPath.split("/"); - if (libraryRoot) - { - // Generate the path from the supplied library root - location = + if (libraryRoot == undefined && qnamePaths[2] != TYPE_SITES) { - site: null, - container: null, - path: "/" + displayPaths.slice(libraryRoot.displayPath.split("/").length + 1, displayPaths.length).join("/"), - file: node.name - }; - } - else if ((qnamePaths.length > 4) && (qnamePaths[2] == TYPE_SITES)) - { - var siteId = displayPaths[3], - siteNode = Common.getSite(siteId), - containerId = qnamePaths[4].substr(3); + libraryRoot = companyhome; + } - if (siteNode != null) + if (libraryRoot) { - var containerNode = siteNode.getContainer(containerId); - location = + // Generate the path from the supplied library root + location = { - site: siteId, - siteNode: siteNode, - siteTitle: siteNode.title, - sitePreset: siteNode.sitePreset, - container: containerId, - containerNode: containerNode, - containerType: containerNode.typeShort, - path: "/" + displayPaths.slice(5, displayPaths.length).join("/"), + site: null, + container: null, + path: "/" + displayPaths.slice(libraryRoot.displayPath.split("/").length + 1, displayPaths.length).join("/"), file: node.name }; } - } - - if (location == null) - { - location = + else if ((qnamePaths.length > 4) && (qnamePaths[2] == TYPE_SITES)) { - site: null, - container: null, - path: "/" + displayPaths.slice(2, displayPaths.length).join("/"), - file: node.name - }; + var siteId = displayPaths[3], + siteNode = Common.getSite(siteId), + containerId = qnamePaths[4].substr(3); + + if (siteNode != null) + { + var containerNode = siteNode.getContainer(containerId); + location = + { + site: siteId, + siteNode: siteNode, + siteTitle: siteNode.title, + sitePreset: siteNode.sitePreset, + container: containerId, + containerNode: containerNode, + containerType: containerNode.typeShort, + path: "/" + displayPaths.slice(5, displayPaths.length).join("/"), + file: node.name + }; + } + } + + if (location == null) + { + location = + { + site: null, + container: null, + path: "/" + displayPaths.slice(2, displayPaths.length).join("/"), + file: node.name + }; + } + + return location; + } + catch(e) + { + return null; } - - return location; }, /** @@ -275,6 +282,11 @@ var ParseArgs = // Parent location parameter adjustment location = Common.getLocation(pathNode, libraryRoot); + if (location === null) + { + status.setCode(status.STATUS_GONE, "Location is 'null'. (No permission?)"); + return null; + } if (path !== "") { location.path = ParseArgs.combinePaths(location.path, location.file); diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js index 4fddba9ffd..d3d32f40cc 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/checkout.post.json.js @@ -29,7 +29,7 @@ function runAction(p_params) var workingCopy = assetNode.checkout(); if (workingCopy === null) { - status.setCode(status.STATUS_INTERNAL_SERVER_ERROR, "Could not checkout: " + p_params.path); + status.setCode(status.STATUS_FORBIDDEN, "Could not checkout: " + p_params.path); return; } diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js b/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js index f3db17daf5..0080943544 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js @@ -1034,7 +1034,7 @@ function getQueryTemplate() template: "%(cm:name cm:title cm:description ia:whatEvent ia:descriptionEvent lnk:title lnk:description TEXT TAG)" }], qt = new XML(config.script)["default-query-template"]; - if (qt != null && qt.length != 0) + if (qt != null && qt.length() != 0) { t[0].template = qt.toString(); } diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties index 25a10f292c..7987a39ea3 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/move.post_ru.properties @@ -1,3 +1,2 @@ -page-moved=\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0430 -page-moved-here=\u0441\u044e\u0434\u0430 -page-not-found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \ No newline at end of file +page-moved=\u042D\u0442\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0430 +page-moved-here=\u0441\u044E\u0434\u0430 \ No newline at end of file diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties index 78346f663f..f514ab997e 100755 --- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties +++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/wiki/page.get_ru.properties @@ -1 +1 @@ -page-not-found=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \ No newline at end of file +page-not-found=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0441\u043F\u0440\u0430\u0432\u043E\u0447\u043D\u0438\u043A\u0430 \ No newline at end of file diff --git a/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java b/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java index 0e64750a66..35843c934e 100644 --- a/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java +++ b/source/java/org/alfresco/repo/web/scripts/activities/SiteActivitySystemTest.java @@ -568,8 +568,8 @@ public class SiteActivitySystemTest extends TestCase getUserFeed(null, site3, ticket, false, false, false, 6); getUserFeed(null, null, ticket, false, false, false, 14); // no filter - getUserFeed(null, null, ticket, false, true, false, 14); // exclude any from user1 - getUserFeed(null, null, ticket, false, false, true, 0); // exclude all except user1 + getUserFeed(null, null, ticket, false, true, false, 12); // exclude any from user1 + getUserFeed(null, null, ticket, false, false, true, 2); // exclude all except user1 getUserFeed(null, null, ticket, false, true, true, 0); // exclude all (NOOP) // TODO - add more (eg. other non-admin user activities) diff --git a/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java index 4b4332dd5d..c27f97f1f7 100644 --- a/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java +++ b/source/java/org/alfresco/repo/web/scripts/calendar/AbstractCalendarListingWebScript.java @@ -67,6 +67,9 @@ public abstract class AbstractCalendarListingWebScript extends AbstractCalendarW String startA = (String)resultA.get(RESULT_START); String startB = (String)resultB.get(RESULT_START); + startA = startA.replace("Z", "+00:00"); + startB = startB.replace("Z", "+00:00"); + //check and parse iso8601 date without time zone (All day events are stripped of time zone) DateTime sa = startA.length()>23?fmtTz.parseDateTime(startA):fmtNoTz.parseDateTime(startA); DateTime sb = startB.length()>23?fmtTz.parseDateTime(startB):fmtNoTz.parseDateTime(startB); diff --git a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java index 87c6e649b5..7097a7104f 100644 --- a/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java +++ b/source/java/org/alfresco/repo/web/scripts/content/StreamContent.java @@ -805,7 +805,7 @@ public class StreamContent extends AbstractWebScript implements ResourceLoaderAw if (logger.isDebugEnabled()) logger.debug("Attaching content using filename: " + attachFileName); - headerValue += "; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName) + "; filename=\"" + attachFileName + "\""; + headerValue += "; filename=\"" + attachFileName + "\"; filename*=UTF-8''" + WebDAVHelper.encodeURL(attachFileName); } // set header based on filename - will force a Save As from the browse if it doesn't recognize it diff --git a/source/java/org/alfresco/repo/webdav/GetMethod.java b/source/java/org/alfresco/repo/webdav/GetMethod.java index cb33888a8d..4ade2ff1b0 100644 --- a/source/java/org/alfresco/repo/webdav/GetMethod.java +++ b/source/java/org/alfresco/repo/webdav/GetMethod.java @@ -194,12 +194,17 @@ public class GetMethod extends WebDAVMethod } String fname = (String) getNodeService().getProperty(nodeInfo.getLinkNodeRef(), ContentModel.PROP_NAME); - String webDavUrl = m_request.getServerName() + ":" + m_request.getServerPort() + rootURL + WebDAVHelper.encodeURL(fname, m_userAgent); - - StringBuilder urlStr = new StringBuilder(); + StringBuilder urlStr = new StringBuilder(200); urlStr.append("[InternetShortcut]\r\n"); urlStr.append("URL=file://"); - urlStr.append(webDavUrl); + urlStr.append(m_request.getServerName()); + // Only append the port if it is non-default for compatibility with XP + int port = m_request.getServerPort(); + if (port != 80) + { + urlStr.append(":").append(port); + } + urlStr.append(rootURL).append(WebDAVHelper.encodeURL(fname, m_userAgent)); urlStr.append("\r\n"); m_response.setHeader(WebDAV.HEADER_CONTENT_TYPE, "text/plain; charset=ISO-8859-1"); diff --git a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java index 784b03425c..03633532d2 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVHelper.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVHelper.java @@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletResponse; import org.alfresco.jlan.util.IPAddress; import org.alfresco.model.ContentModel; +import org.alfresco.repo.lock.LockUtils; import org.alfresco.repo.tenant.TenantService; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.ActionService; @@ -960,4 +961,16 @@ public class WebDAVHelper return strPath; } + + /** + * Indicates if the node is unlocked or the current user has a WRITE_LOCK

+ * + * @see LockService#isLockedOrReadOnly(NodeRef) + * + * @param nodeRef the node reference + */ + public boolean isLockedOrReadOnly(final NodeRef nodeRef) + { + return LockUtils.isLockedOrReadOnly(nodeRef, m_serviceRegistry.getLockService()); + } } diff --git a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java index 5f27a02a74..de926a5bfd 100644 --- a/source/java/org/alfresco/repo/webdav/WebDAVMethod.java +++ b/source/java/org/alfresco/repo/webdav/WebDAVMethod.java @@ -64,8 +64,6 @@ import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.AuthenticationService; import org.alfresco.service.cmr.security.PermissionService; -import org.alfresco.service.cmr.site.SiteInfo; -import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.TempFileProvider; @@ -1006,52 +1004,24 @@ public abstract class WebDAVMethod protected LockInfo checkNode(FileInfo fileInfo, boolean ignoreShared, boolean lockMethod) throws WebDAVServerException { LockInfo nodeLockInfo = getNodeLockInfo(fileInfo); - nodeLockInfo.getRWLock().readLock().lock(); try { String nodeETag = getDAVHelper().makeQuotedETag(fileInfo); + NodeRef nodeRef = fileInfo.getNodeRef(); - + + // Handle the case where there are no conditions and no lock token stored on the node. Node just needs to be writable with no shared locks if (m_conditions == null) - { - if (!nodeLockInfo.isLocked()) + { + // ALF-3681 fix. WebDrive 10 client doesn't send If header when locked resource is updated so check the node by lockOwner. + if (!nodeLockInfo.isExclusive() || (m_userAgent != null && m_userAgent.equals(WebDAV.AGENT_MICROSOFT_DATA_ACCESS_INTERNET_PUBLISHING_PROVIDER_DAV))) { - // Not locked - return nodeLockInfo; - } - - if (nodeLockInfo.isShared()) - { - if (nodeLockInfo.getSharedLockTokens().isEmpty()) + if (getDAVHelper().isLockedOrReadOnly(nodeRef) || (!ignoreShared && nodeLockInfo.isShared() && !nodeLockInfo.getSharedLockTokens().isEmpty())) { - // Although flagged as shared - no shared locks. - return nodeLockInfo; - } - if (!ignoreShared) - { - // Shared locks exist throw new WebDAVServerException(WebDAV.WEBDAV_SC_LOCKED); } - } - else - { - // ALF-3681 fix. WebDrive 10 client doesn't send If header when locked resource is updated so check the node by lockOwner. - if (m_userAgent != null && m_userAgent.equals(WebDAV.AGENT_MICROSOFT_DATA_ACCESS_INTERNET_PUBLISHING_PROVIDER_DAV)) - { - String currentUser = getAuthenticationService().getCurrentUserName(); - String lockOwner = nodeLockInfo.getOwner(); - if (lockOwner.equals(currentUser)) - { - // OK to write - lock is owned by current user. - return nodeLockInfo; - } - else - { - // Exclusive lock, owned by someone else - throw new WebDAVServerException(WebDAV.WEBDAV_SC_LOCKED); - } - } + return nodeLockInfo; } }