Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
erp5
Commits
5b61fec0
Commit
5b61fec0
authored
Mar 17, 2023
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xhtml_style: delete FCKeditor connectors for CPS and Plone
we don't use these
parent
85852708
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
0 additions
and
1448 deletions
+0
-1448
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorCPS.py.py
...or/filemanager/browser/zope/connectors/connectorCPS.py.py
+0
-546
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorCPS.py.xml
...r/filemanager/browser/zope/connectors/connectorCPS.py.xml
+0
-62
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorPlone.py.py
.../filemanager/browser/zope/connectors/connectorPlone.py.py
+0
-776
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorPlone.py.xml
...filemanager/browser/zope/connectors/connectorPlone.py.xml
+0
-62
product/ERP5Type/CodingStyle.py
product/ERP5Type/CodingStyle.py
+0
-2
No files found.
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorCPS.py.py
deleted
100644 → 0
View file @
85852708
# pylint: disable-all
from
Products.PythonScripts.standard
import
html_quote
from
Products.CMFCore.utils
import
getToolByName
from
Products.FCKeditor.utils
import
fckCreateValidZopeId
# Author : Youenn Broussard - alias youyou (!) on macadames.com ;-)
# modified by Jean-mat 05/03/06 for new xml attributes compliance and charset questions
# 1. Config
# Path to user files relative to the document root.
ConfigUserFilesPath
=
""
# SECURITY TIP: Uncomment the following line to set a fixed path
# ConfigUserFilesPath = "/UserFiles/"
# SECURITY TIP: Uncomment the 3 following code lines to force the Plone Member Home Folder as fixed path
# You can do it as well with wysiwyg_support templates customization
# it's just more secure
# portal=context.portal_url.getPortalObject()
# portal_url=portal.absolute_url()
# ConfigUserFilesPath = portal.portal_membership.getHomeUrl().replace(portal_url, '') + '/'
# special review_states
# (unpublished states for contents which need to be hidden to local_roles
# not in rolesSeeUnpublishedContent even with View permission )
unpublishedStates
=
[
'visible'
,
'pending'
,
'rejected'
,
'waitreview'
]
# special local_roles who can see unpublished contents according to permissions
# by default set to None
rolesSeeUnpublishedContent
=
None
# you can force the value here
# rolesSeeUnpublishedContent = ['Manager','Reviewer','Owner', 'Contributor']
# if rolesSeeUnpublishedContent is None we try to take it from portal_properties > navtree_properties
if
not
rolesSeeUnpublishedContent
:
try
:
props
=
getToolByName
(
context
,
'portal_properties'
)
if
hasattr
(
props
,
'navtree_properties'
):
props
=
props
.
navtree_properties
rolesSeeUnpublishedContent
=
getattr
(
props
,
'rolesSeeUnpublishedContent'
,
[
'Manager'
,
'Reviewer'
,
'Owner'
])
except
:
rolesSeeUnpublishedContent
=
[
'Manager'
,
'Reviewer'
,
'Owner'
]
# Allowed and denied extensions dictionaries
ConfigAllowedExtensions
=
{
"File"
:
None
,
"Image"
:(
"jpg"
,
"gif"
,
"jpeg"
,
"png"
),
"Flash"
:(
"swf"
,
"fla"
),
"Media"
:(
"swf"
,
"fla"
,
"jpg"
,
"gif"
,
"jpeg"
,
"png"
,
"avi"
,
"mpg"
,
"mpeg"
,
"mp1"
,
"mp2"
,
"mp3"
,
"mp4"
,
"wma"
,
"wmv"
,
"wav"
,
"mid"
,
"midi"
,
"rmi"
,
"rm"
,
"ram"
,
"rmvb"
,
"mov"
,
"qt"
)}
ConfigDeniedExtensions
=
{
"File"
:(
"py"
,
"cpy"
,
"pt"
,
"cpt"
,
"dtml"
,
"php"
,
"asp"
,
"aspx"
,
"ascx"
,
"jsp"
,
"cfm"
,
"cfc"
,
"pl"
,
"bat"
,
"exe"
,
"com"
,
"dll"
,
"vbs"
,
"js"
,
"reg"
),
"Image"
:
None
,
"Flash"
:
None
,
"Media"
:
None
}
# set link by UID for AT content Types
# change value to 0 to disable it
linkbyuid
=
1
CPS_FOLDER_TYPE
=
[
'Workspace'
,
'ImageGallery'
,
'CPS Proxy Folder'
,
'CPS Proxy Folderish Document'
]
# find Plone Site charset (todo : CPS compliance (how ?))
try
:
prop
=
getToolByName
(
context
,
"portal_properties"
)
charsetSite
=
prop
.
site_properties
.
getProperty
(
"default_charset"
,
"utf-8"
)
except
:
charsetSite
=
"iso-8859-1"
# 2. utils
def
RemoveFromStart
(
sourceString
,
charToRemove
):
return
sourceString
.
lstrip
(
charToRemove
)
def
utf8Encode
(
chaine
)
:
errors
=
"strict"
if
charsetSite
.
lower
()
in
(
"utf-8"
,
"utf8"
):
return
chaine
else
:
return
unicode
(
chaine
,
charsetSite
,
errors
).
encode
(
"utf-8"
,
errors
)
def
utf8Decode
(
chaine
)
:
# because browser upload form is in utf-8 we need it
errors
=
"strict"
if
charsetSite
.
lower
()
in
(
"utf-8"
,
"utf8"
):
return
chaine
else
:
try
:
chaine
=
unicode
(
chaine
,
"utf-8"
,
"strict"
).
encode
(
charsetSite
,
"strict"
)
except
:
chaine
=
chaine
.
encode
(
charsetSite
,
"strict"
)
return
chaine
def
ConvertToXmlAttribute
(
value
):
return
utf8Encode
(
value
).
replace
(
"
\
"
"
,
"""
).
replace
(
"&"
,
"&"
)
# 3. io
def
GetUrlFromPath
(
folderPath
)
:
return
'%s%s'
%
(
portal_path
,
folderPath
.
rstrip
(
"/"
))
def
RemoveExtension
(
fileName
):
sprout
=
fileName
.
split
(
"."
)
return
'.'
.
join
(
sprout
[:
len
(
sprout
)
-
1
])
def
IsAllowedExt
(
extension
,
resourceType
)
:
sAllowed
=
ConfigAllowedExtensions
[
resourceType
]
sDenied
=
ConfigDeniedExtensions
[
resourceType
]
if
(
sAllowed
is
None
or
extension
in
sAllowed
)
and
(
sDenied
is
None
or
extension
not
in
sDenied
)
:
return
1
else
:
return
0
def
FindExtension
(
fileName
):
sprout
=
fileName
.
split
(
RemoveExtension
(
fileName
))
return
''
.
join
(
sprout
).
lstrip
(
'.'
)
# 4. basexml
def
CreateXmlHeader
(
command
,
resourceType
,
currentFolder
):
header
=
[
'<?xml version="1.0" encoding="utf-8" ?>'
]
header
.
append
(
'
\
r
<Connector command="%s" resourceType=" %s ">'
%
(
command
,
resourceType
))
header
.
append
(
'
\
r
<CurrentFolder path="%s" url="%s/" />'
%
(
ConvertToXmlAttribute
(
currentFolder
),
ConvertToXmlAttribute
(
GetUrlFromPath
(
currentFolder
))))
return
''
.
join
(
header
)
def
CreateXmlFooter
():
return
'
\
r
</Connector>'
def
xmlString
(
results
,
resourceType
,
foldersOnly
):
# traitement xml
xmlFiles
=
[
'
\
r
<Files>'
]
xmlFolders
=
[
'
\
r
<Folders>'
]
for
result
in
results
:
titre
=
result
.
title_or_id
()
if
linkbyuid
and
hasattr
(
result
,
'UID'
):
tagLinkbyuid
=
"yes"
uid
=
result
.
UID
()
else
:
tagLinkbyuid
=
"no"
uid
=
""
if
result
.
meta_type
in
CPS_FOLDER_TYPE
:
try
:
xmlFolders
.
append
(
'
\
r
<Folder name="%s" title="%s" linkbyuid="%s" uid="%s" type="%s" metatype="%s" />'
%
(
ConvertToXmlAttribute
(
result
.
id
),
ConvertToXmlAttribute
(
titre
),
tagLinkbyuid
,
uid
,
resourceType
,
ConvertToXmlAttribute
(
result
.
meta_type
)))
except
Exception
as
e
:
pass
else
:
tagPhoto
=
"no"
size
=
0
try
:
size
=
result
.
getContent
().
get_size
()
except
Exception
as
e
:
pass
try
:
xmlFiles
.
append
(
'
\
r
<File name="%s/preview" size="%s" title="%s" photo="%s" linkbyuid="%s" uid="%s" type="%s" isPA3img="no" isattach="no" attachid="" />'
%
(
ConvertToXmlAttribute
(
result
.
getId
()),
size
,
ConvertToXmlAttribute
(
titre
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
))
except
Exception
as
e
:
pass
xmlFiles
.
append
(
'
\
r
</Files>'
)
xmlFolders
.
append
(
'
\
r
</Folders>'
)
if
foldersOnly
:
stringXml
=
''
.
join
(
xmlFolders
)
else
:
stringXml
=
''
.
join
(
xmlFolders
)
+
''
.
join
(
xmlFiles
)
return
stringXml
def
CreateXmlErrorNode
(
errorNumber
,
errorDescription
):
return
'
\
r
<Error number="'
+
errorNumber
+
'" originalNumber="'
+
errorNumber
+
'" originalDescription="'
+
ConvertToXmlAttribute
(
errorDescription
)
+
'" />'
# 5. commands
# Specific CPS , for special folderish (doc flexible ...) change these lines
def
GetFoldersAndFiles
(
resourceType
,
currentFolder
):
results
=
[]
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
types
=
context
.
portal_types
all_portal_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()]
accepted_values
=
[
'CPS Proxy Document'
,]
if
resourceType
==
"Image"
:
accepted_types
=
[
ctype
.
id
for
ctype
in
types
.
objectValues
()
if
ctype
.
id
in
(
'Image'
,
)]
elif
resourceType
==
"Flash"
:
accepted_types
=
[
ctype
.
id
for
ctype
in
types
.
objectValues
()
if
ctype
.
id
in
(
'Flash Animation'
,
)]
#elif resourceType not in ('Image', 'Flash') :
# accepted_types=[ctype.id for ctype in types.objectValues()]
else
:
accepted_types
=
[
ctype
.
id
for
ctype
in
types
.
objectValues
()]
if
currentFolder
!=
"/"
:
try
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
except
Exception
as
e
:
obj
=
context
.
portal_url
.
getPortalObject
()
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
for
object
in
obj
.
objectValues
(
accepted_values
+
CPS_FOLDER_TYPE
):
mtool
=
context
.
portal_membership
checkPerm
=
mtool
.
checkPermission
if
not
checkPerm
(
'View'
,
object
):
pass
if
object
.
portal_type
in
accepted_types
or
(
object
.
meta_type
in
CPS_FOLDER_TYPE
)
:
results
.
append
(
object
)
results
=
[
s
for
s
in
results
if
user
.
has_permission
(
'View'
,
s
)
]
return
xmlString
(
results
,
resourceType
,
0
)
def
GetFolders
(
resourceType
,
currentFolder
):
results
=
[]
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
types
=
context
.
portal_types
all_portal_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()]
if
currentFolder
!=
"/"
:
#try:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
#except Exception,e:
# obj = context.portal_url.getPortalObject()
else
:
#obj = context.portal_url.getPortalObject()
return
xmlString
([],
resourceType
,
1
)
#
#if obj.meta_type == 'CPSDefault Site':
# obj=obj.sections
mtool
=
context
.
portal_membership
checkPerm
=
mtool
.
checkPermission
for
object
in
obj
.
objectValues
(
CPS_FOLDER_TYPE
):
# filter out objects that cannot be viewed
if
not
user
.
has_permission
(
'View'
,
object
):
continue
try
:
if
object
.
meta_type
in
CPS_FOLDER_TYPE
and
object
.
meta_type
in
all_portal_types
:
#review_state=container.portal_workflow.getInfoFor(object, 'review_state', '')
start_pub
=
getattr
(
object
,
'effective_date'
,
None
)
end_pub
=
getattr
(
object
,
'expiration_date'
,
None
)
if
not
((
start_pub
and
start_pub
>
DateTime
())
or
(
end_pub
and
DateTime
()
>
end_pub
)):
results
.
append
(
object
)
elif
user
.
has_role
(
rolesSeeUnpublishedContent
,
object
)
:
results
.
append
(
object
)
except
Exception
as
e
:
pass
results
=
[
s
for
s
in
results
if
user
.
has_permission
(
'View'
,
s
)
]
return
xmlString
(
results
,
resourceType
,
1
)
def
CreateFolder
(
currentFolder
,
folderName
):
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
sErrorNumber
=
""
# error cases
if
not
user
.
has_permission
(
'Add portal content'
,
obj
)
and
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
sErrorNumber
=
"103"
sErrorDescription
=
"folder creation forbidden"
if
not
folderName
:
sErrorNumber
=
"102"
sErrorDescription
=
"invalid folder name"
if
not
sErrorNumber
:
try
:
folderTitle
=
utf8Decode
(
folderName
)
folderName
=
fckCreateValidZopeId
(
utf8Encode
(
folderName
))
new_id
=
obj
.
invokeFactory
(
id
=
folderName
,
type_name
=
'Folder'
,
title
=
folderTitle
)
sErrorNumber
=
"0"
sErrorDescription
=
"success"
except
:
sErrorNumber
=
"103"
sErrorDescription
=
"folder creation forbidden"
return
CreateXmlErrorNode
(
sErrorNumber
,
sErrorDescription
)
# 6. upload
def
UploadFile
(
resourceType
,
currentFolder
,
data
,
title
)
:
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
error
=
""
idObj
=
""
# define Portal Type to add
if
resourceType
==
'Flash'
:
typeToAdd
=
'Flash Animation'
elif
resourceType
in
(
'File'
,
'Flash'
,
'Media'
):
typeToAdd
=
'File'
elif
resourceType
==
'Image'
:
typeToAdd
=
'Image'
if
not
user
.
has_permission
(
'Add portal content'
,
obj
)
and
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
error
=
"103"
if
not
data
:
#pas de fichier
error
=
"202"
titre_data
=
''
filename
=
utf8Decode
(
getattr
(
data
,
'filename'
,
''
))
titre_data
=
filename
[
max
(
string
.
rfind
(
filename
,
'/'
),
string
.
rfind
(
filename
,
'
\
\
'
),
string
.
rfind
(
filename
,
':'
),
)
+
1
:]
idObj
=
fckCreateValidZopeId
(
utf8Encode
(
titre_data
))
if
title
:
titre_data
=
title
if
not
IsAllowedExt
(
FindExtension
(
idObj
),
resourceType
):
error
=
"202"
if
not
error
:
error
=
"0"
indice
=
0
exemple_titre
=
idObj
while
exemple_titre
in
obj
.
objectIds
():
indice
=
indice
+
1
exemple_titre
=
str
(
indice
)
+
idObj
if
indice
!=
0
:
error
=
"201"
idObj
=
exemple_titre
try
:
# this method need to be changed for browser refresh
# because it send 302 redirection : we need no http response
request
=
context
.
REQUEST
request
.
form
.
update
({
'widget__preview'
:
data
,
'widget__preview_choice'
:
'change'
,
'type_name'
:
typeToAdd
,
'widget__Title'
:
titre_data
,
'cpsdocument_create_button'
:
1
,
'widget__LanguageSelectorCreation'
:
'fr'
})
ti
=
context
.
portal_types
[
typeToAdd
]
res
=
ti
.
renderCreateObjectDetailed
(
container
=
obj
,
request
=
request
,
validate
=
1
,
layout_mode
=
'create'
,
create_callback
=
'createCPSDocument_cb'
,
created_callback
=
'cpsdocument_created'
)
#context.createCPSDocument(context=obj,REQUEST=request)
obj
.
reindexObject
()
except
Exception
as
e
:
error
=
"103"
d
=
'''
<script type="text/javascript">
window.parent.frames['frmUpload'].OnUploadCompleted(%s,%s) ;
</script>
'''
%
(
error
,
idObj
)
return
d
#7. connector
request
=
context
.
REQUEST
RESPONSE
=
request
.
RESPONSE
dicoRequest
=
request
.
form
message_error
=
""
portal_url
=
context
.
portal_url
.
getPortalObject
().
absolute_url
()
server_url
=
request
.
SERVER_URL
portal_path
=
portal_url
.
replace
(
server_url
,
''
)
if
ConfigUserFilesPath
!=
""
:
sUserFilesPath
=
ConfigUserFilesPath
elif
'ServerPath'
in
dicoRequest
:
sUserFilesPath
=
dicoRequest
[
'ServerPath'
]
else
:
sUserFilesPath
=
"/"
if
'CurrentFolder'
in
dicoRequest
:
sCurrentFolder
=
dicoRequest
[
'CurrentFolder'
]
if
sUserFilesPath
!=
'/'
and
sUserFilesPath
.
rstrip
(
'/'
)
not
in
sCurrentFolder
:
sCurrentFolder
=
sUserFilesPath
else
:
message_error
=
"No CurrentFolder in request"
if
'Command'
in
dicoRequest
:
sCommand
=
dicoRequest
[
'Command'
]
else
:
message_error
=
"No Command in request"
if
'Type'
in
dicoRequest
:
sResourceType
=
dicoRequest
[
'Type'
]
else
:
message_error
=
"No Type in request"
if
'NewFolderName'
in
dicoRequest
:
sFolderName
=
dicoRequest
[
'NewFolderName'
]
# interception File Upload
if
sCommand
==
'FileUpload'
and
'NewFile'
in
dicoRequest
:
sData
=
dicoRequest
[
'NewFile'
]
sTitle
=
utf8Decode
(
dicoRequest
[
'Title'
])
chaineHtmlUpload
=
UploadFile
(
sResourceType
,
sCurrentFolder
,
sData
,
sTitle
)
RESPONSE
.
setHeader
(
'Content-type'
,
'text/html; charset=%s'
%
charsetSite
)
return
chaineHtmlUpload
else
:
# Creation response XML
if
not
message_error
:
RESPONSE
.
setHeader
(
'Cache-control'
,
'pre-check=0,post-check=0,must-revalidate,s-maxage=0,max-age=0,no-cache'
)
RESPONSE
.
setHeader
(
'Content-type'
,
'text/xml; charset=utf-8'
)
xmlHeader
=
CreateXmlHeader
(
sCommand
,
sResourceType
,
sCurrentFolder
)
if
sCommand
==
"GetFolders"
:
xmlBody
=
GetFolders
(
sResourceType
,
sCurrentFolder
)
elif
sCommand
==
"GetFoldersAndFiles"
:
xmlBody
=
GetFoldersAndFiles
(
sResourceType
,
sCurrentFolder
)
elif
sCommand
==
"CreateFolder"
:
xmlBody
=
CreateFolder
(
sCurrentFolder
,
sFolderName
)
xmlFooter
=
CreateXmlFooter
()
return
xmlHeader
+
xmlBody
+
xmlFooter
# creation response error request
else
:
sErrorNumber
=
"218"
sErrorDescription
=
"Browser Request exception : "
+
message_error
xmlHeader
=
CreateXmlHeader
(
sCommand
,
sResourceType
,
sCurrentFolder
)
xmlFooter
=
CreateXmlFooter
()
return
xmlHeader
+
CreateXmlErrorNode
(
sErrorNumber
,
sErrorDescription
)
+
xmlFooter
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorCPS.py.xml
deleted
100644 → 0
View file @
85852708
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
Command=\'\',Type=\'\',CurrentFolder=\'\',NewFolderName=\'\'
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
connectorCPS.py
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorPlone.py.py
deleted
100644 → 0
View file @
85852708
# pylint: disable-all
from
Products.PythonScripts.standard
import
html_quote
from
Products.CMFCore.utils
import
getToolByName
from
Products.FCKeditor.utils
import
fckCreateValidZopeId
# Author : jean-mat Grimaldi - jean-mat@macadames.com
# Thanks to Martin F. Krafft (alias madduck on sourceforge) for some corrections
# Thanks to kupu developpers for UID referencing
# This connector is plone specific
# Some functions need to be adapted for other Zope CMS compatibility
# 1. Config
# Path to user files relative to the document root.
# security tip
ConfigUserFilesPath
=
""
# dico fck parameters for browsing
fckParams
=
context
.
getFck_params
()
# special review_states
# (unpublished states for contents which need to be hidden to local_roles
# not in fck prefs rolesSeeUnpublishedContent even with View permission )
unpublishedStates
=
fckParams
[
'fck_unpublished_states'
]
# special local_roles who can see unpublished contents according to permissions
# by default set to fck unpublished view roles (fck prefs)
rolesSeeUnpublishedContent
=
fckParams
[
'fck_unpublished_view_roles'
]
# PloneArticle based meta_types
pa_meta_types
=
fckParams
[
'pa_meta_types'
]
# Allowed and denied extensions dictionaries
ConfigAllowedExtensions
=
{
"File"
:
None
,
"Image"
:(
"jpg"
,
"gif"
,
"jpeg"
,
"png"
),
"Flash"
:(
"swf"
,
"fla"
),
"Media"
:(
"swf"
,
"fla"
,
"jpg"
,
"gif"
,
"jpeg"
,
"png"
,
"avi"
,
"mpg"
,
"mpeg"
,
"mp1"
,
"mp2"
,
"mp3"
,
"mp4"
,
"wma"
,
"wmv"
,
"wav"
,
"mid"
,
"midi"
,
"rmi"
,
"rm"
,
"ram"
,
"rmvb"
,
"mov"
,
"qt"
)}
ConfigDeniedExtensions
=
{
"File"
:(
"py"
,
"cpy"
,
"pt"
,
"cpt"
,
"dtml"
,
"php"
,
"asp"
,
"aspx"
,
"ascx"
,
"jsp"
,
"cfm"
,
"cfc"
,
"pl"
,
"bat"
,
"exe"
,
"com"
,
"dll"
,
"vbs"
,
"js"
,
"reg"
),
"Image"
:
None
,
"Flash"
:
None
,
"Media"
:
None
}
# set link by UID for AT content Types
linkbyuid
=
test
(
fckParams
[
'allow_link_byuid'
],
1
,
0
)
# check if upload allowed for Links Image and internal links
allow_file_upload
=
test
(
fckParams
[
'allow_server_browsing'
],
test
(
fckParams
[
'allow_file_upload'
],
1
,
0
),
0
)
allow_image_upload
=
test
(
fckParams
[
'allow_server_browsing'
],
test
(
fckParams
[
'allow_image_upload'
],
1
,
0
),
0
)
allow_flash_upload
=
test
(
fckParams
[
'allow_server_browsing'
],
test
(
fckParams
[
'allow_flash_upload'
],
1
,
0
),
0
)
# check for portal_types when uploading internal links, images and files
file_portal_type
=
test
(
fckParams
[
'file_portal_type'
],
fckParams
[
'file_portal_type'
],
'File'
)
image_portal_type
=
test
(
fckParams
[
'image_portal_type'
],
fckParams
[
'image_portal_type'
],
'Image'
)
flash_portal_type
=
test
(
fckParams
[
'flash_portal_type'
],
fckParams
[
'flash_portal_type'
],
'File'
)
# find Plone Site charset
try
:
prop
=
getToolByName
(
context
,
"portal_properties"
)
charsetSite
=
prop
.
site_properties
.
getProperty
(
"default_charset"
,
"utf-8"
)
except
:
charsetSite
=
"utf-8"
# 2. utils
def
utf8Encode
(
chaine
)
:
errors
=
"strict"
if
charsetSite
.
lower
()
in
(
"utf-8"
,
"utf8"
):
return
chaine
else
:
return
unicode
(
chaine
,
charsetSite
,
errors
).
encode
(
"utf-8"
,
errors
)
def
utf8Decode
(
chaine
)
:
# because browser upload form is in utf-8 we need it
errors
=
"strict"
if
charsetSite
.
lower
()
in
(
"utf-8"
,
"utf8"
):
return
chaine
else
:
try
:
chaine
=
unicode
(
chaine
,
"utf-8"
,
"strict"
).
encode
(
charsetSite
,
"strict"
)
except
:
chaine
=
chaine
.
encode
(
charsetSite
,
"strict"
)
return
chaine
def
ConvertToXmlAttribute
(
value
):
return
utf8Encode
(
value
).
replace
(
"
\
"
"
,
"""
).
replace
(
"'"
,
"’"
).
replace
(
"&"
,
"&"
)
# 3. io
def
GetUrlFromPath
(
folderPath
)
:
return
'%s%s'
%
(
portal_path
,
folderPath
.
rstrip
(
"/"
))
def
RemoveExtension
(
fileName
):
sprout
=
fileName
.
split
(
"."
)
return
'.'
.
join
(
sprout
[:
len
(
sprout
)
-
1
])
def
IsAllowedExt
(
extension
,
resourceType
)
:
sAllowed
=
ConfigAllowedExtensions
[
resourceType
]
sDenied
=
ConfigDeniedExtensions
[
resourceType
]
if
(
sAllowed
is
None
or
extension
in
sAllowed
)
and
(
sDenied
is
None
or
extension
not
in
sDenied
)
:
return
1
else
:
return
0
def
FindExtension
(
fileName
):
sprout
=
fileName
.
split
(
RemoveExtension
(
fileName
))
return
''
.
join
(
sprout
).
lstrip
(
'.'
)
# 4. basexml
def
CreateXmlHeader
(
command
,
resourceType
,
currentFolder
):
header
=
[
'<?xml version="1.0" encoding="utf-8" ?>'
]
header
.
append
(
'
\
r
<Connector command="%s" resourceType=" %s ">'
%
(
command
,
resourceType
))
header
.
append
(
'
\
r
<CurrentFolder path="%s" url="%s/" />'
\
%
(
ConvertToXmlAttribute
(
currentFolder
),
ConvertToXmlAttribute
(
GetUrlFromPath
(
currentFolder
))))
return
''
.
join
(
header
)
def
CreateXmlFooter
():
return
'
\
r
</Connector>'
def
xmlString
(
results
,
resourceType
,
foldersOnly
,
isPA
):
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
# traitement xml
xmlFiles
=
[
'
\
r
<Files>'
]
xmlFolders
=
[
'
\
r
<Folders>'
]
# traitement folderish standard non PloneArticle
if
isPA
==
0
:
for
result
in
results
:
titre
=
result
.
title_or_id
()
if
linkbyuid
and
hasattr
(
result
.
aq_explicit
,
'UID'
):
tagLinkbyuid
=
"yes"
uid
=
result
.
UID
()
else
:
tagLinkbyuid
=
"no"
uid
=
""
if
result
.
isPrincipiaFolderish
or
result
.
meta_type
in
pa_meta_types
:
xmlFolders
.
append
(
'''
<Folder name="%s"
title="%s"
linkbyuid="%s"
uid="%s"
type="%s"
metatype="%s" />'''
%
(
ConvertToXmlAttribute
(
result
.
getId
()),
ConvertToXmlAttribute
(
titre
),
tagLinkbyuid
,
uid
,
resourceType
,
ConvertToXmlAttribute
(
result
.
meta_type
)))
else
:
if
result
.
meta_type
in
(
'CMF ZPhoto'
,
'CMF Photo'
):
tagPhoto
=
"yes"
else
:
tagPhoto
=
"no"
isAttach
=
"no"
attachId
=
""
xmlFiles
.
append
(
'''
<File name="%s"
size="%s"
title="%s"
photo="%s"
linkbyuid="%s"
uid="%s"
type="%s"
isPA3img="no"
isattach="%s"
attachid="%s" />'''
%
(
ConvertToXmlAttribute
(
result
.
getId
()),
str
(
context
.
getObjSize
(
result
)),
ConvertToXmlAttribute
(
titre
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
,
isAttach
,
attachId
))
# PloneArticle specific treatment
elif
user
.
has_permission
(
'View'
,
results
)
:
# find Plone Article version and brains for PA v3
try
:
image_brains
=
results
.
getImageBrains
()
attachment_brains
=
results
.
getAttachmentBrains
()
versionPA
=
3
except
:
versionPA
=
2
# Plone Article v3 treatment
if
versionPA
==
3
:
atool
=
context
.
portal_article
# PloneArticle 3.x images and attachements
# images
for
image_brain
in
image_brains
:
image
=
image_brain
.
getObject
()
image_field
=
image
.
getField
(
'image'
)
image_name
=
atool
.
getFieldFilename
(
image
,
image_field
)
image_id
=
image
.
getId
()
image_title
=
image
.
title_or_id
()
image_size
=
context
.
plonearticle_format_size
(
image
.
get_size
())
tagPhoto
=
"no"
isAttach
=
"no"
if
linkbyuid
and
hasattr
(
image
.
aq_explicit
,
'UID'
):
tagLinkbyuid
=
"yes"
uid
=
image
.
UID
()
else
:
tagLinkbyuid
=
"no"
uid
=
""
xmlFiles
.
append
(
'''
<File name="%s"
size="%s"
title="%s"
photo="%s"
linkbyuid="%s"
uid="%s"
type="%s"
isPA3img="yes"
isattach="%s"
attachid="%s" />'''
%
(
ConvertToXmlAttribute
(
image_id
),
image_size
,
ConvertToXmlAttribute
(
image_title
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
,
isAttach
,
ConvertToXmlAttribute
(
image_name
)))
# files and other resource types
if
resourceType
!=
'Image'
:
for
attach_brain
in
attachment_brains
:
attach
=
attach_brain
.
getObject
()
attach_field
=
attach
.
getField
(
'file'
)
attach_name
=
atool
.
getFieldFilename
(
attach
,
attach_field
)
attach_id
=
attach
.
getId
()
attach_title
=
attach
.
title_or_id
()
attach_size
=
context
.
plonearticle_format_size
(
attach
.
get_size
())
tagPhoto
=
"no"
isAttach
=
"no"
if
linkbyuid
and
hasattr
(
attach
.
aq_explicit
,
'UID'
):
tagLinkbyuid
=
"yes"
uid
=
attach
.
UID
()
else
:
tagLinkbyuid
=
"no"
uid
=
""
xmlFiles
.
append
(
'''
<File name="%s"
size="%s"
title="%s"
photo="%s"
linkbyuid="%s"
uid="%s"
type="%s"
isPA3img="no"
isattach="%s"
attachid="%s" />'''
%
(
ConvertToXmlAttribute
(
attach_id
),
attach_size
,
ConvertToXmlAttribute
(
attach_title
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
,
isAttach
,
ConvertToXmlAttribute
(
attach_name
)))
# PloneArticle v2.x
else
:
tagLinkbyuid
=
"no"
uid
=
""
# images
if
len
(
results
.
listImages
())
>
0
:
images
=
results
.
listImages
()
index
=
0
for
image
in
images
:
titre
=
image
.
title_or_id
()
# get Id
imageId
=
results
.
getImageId
(
index
)
index
+=
1
# get Size object
try
:
imageSize
=
image
.
getSize
()
except
:
imageSize
=
context
.
getObjSize
(
image
)
tagPhoto
=
"no"
isAttach
=
"no"
attachId
=
image
.
getId
()
xmlFiles
.
append
(
'''
<File name="%s"
size="%s"
title="%s"
photo="%s"
linkbyuid="%s"
uid="%s"
type="%s"
isPA3img="no"
isattach="%s"
attachid="%s" />'''
%
(
ConvertToXmlAttribute
(
imageId
),
imageSize
,
ConvertToXmlAttribute
(
titre
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
,
isAttach
,
ConvertToXmlAttribute
(
attachId
)))
# files and other ressources types
if
len
(
results
.
listAttachments
())
>
0
and
resourceType
!=
'Image'
:
attachements
=
results
.
listAttachments
()
index
=
0
for
attachement
in
attachements
:
titre
=
attachement
.
title_or_id
()
# get Id
attachementId
=
results
.
getAttachmentId
(
index
)
index
+=
1
# get Size object
try
:
attachementSize
=
attachement
.
getSize
()
except
:
attachementSize
=
context
.
getObjSize
(
attachement
)
tagPhoto
=
"no"
isAttach
=
"yes"
attachId
=
attachement
.
getFilename
()
xmlFiles
.
append
(
'''
<File name="%s"
size="%s"
title="%s"
photo="%s"
linkbyuid="%s"
uid="%s"
type="%s"
isPA3img="no"
isattach="%s"
attachid="%s" />'''
%
(
ConvertToXmlAttribute
(
attachementId
),
attachementSize
,
ConvertToXmlAttribute
(
titre
),
tagPhoto
,
tagLinkbyuid
,
uid
,
resourceType
,
isAttach
,
ConvertToXmlAttribute
(
attachId
)))
xmlFiles
.
append
(
'
\
r
</Files>'
)
xmlFolders
.
append
(
'
\
r
</Folders>'
)
if
foldersOnly
:
stringXml
=
''
.
join
(
xmlFolders
)
else
:
stringXml
=
''
.
join
(
xmlFolders
)
+
''
.
join
(
xmlFiles
)
return
stringXml
def
CreateXmlErrorNode
(
errorNumber
,
errorDescription
):
return
'''
<Error number="%s"
originalNumber="%s"
originalDescription="%s" />'''
%
(
errorNumber
,
errorNumber
,
ConvertToXmlAttribute
(
errorDescription
))
# 5. commands
# Specific Plone - for others CMS (CPS ...), for special folderish (Plone Article, doc flexible ...) change these lines
def
GetFoldersAndFiles
(
resourceType
,
currentFolder
):
results
=
[]
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
# objet folderish
if
obj
.
meta_type
not
in
pa_meta_types
:
types
=
context
.
portal_types
all_portal_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()]
if
resourceType
==
"Image"
:
accepted_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()
if
ctype
.
id
in
(
image_portal_type
,
'Photo'
,
'ZPhoto'
)]
elif
resourceType
==
"Flash"
:
accepted_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()
if
ctype
.
id
==
flash_portal_type
]
else
:
accepted_types
=
all_portal_types
for
object
in
obj
.
objectValues
():
if
object
.
meta_type
in
accepted_types
or
(
object
.
meta_type
in
all_portal_types
and
(
object
.
isPrincipiaFolderish
or
object
.
meta_type
in
pa_meta_types
))
:
review_state
=
container
.
portal_workflow
.
getInfoFor
(
object
,
'review_state'
,
''
)
start_pub
=
getattr
(
object
,
'effective_date'
,
None
)
end_pub
=
getattr
(
object
,
'expiration_date'
,
None
)
if
review_state
not
in
unpublishedStates
and
not
((
start_pub
and
start_pub
>
DateTime
())
or
(
end_pub
and
DateTime
()
>
end_pub
)):
results
.
append
(
object
)
elif
user
.
has_role
(
rolesSeeUnpublishedContent
,
object
)
:
results
.
append
(
object
)
results
=
[
s
for
s
in
results
if
user
.
has_permission
(
'View'
,
s
)
]
return
xmlString
(
results
,
resourceType
,
0
,
0
)
# objet Plone article find attachements and images
else
:
# oblige d'envoyer l'objet car trop specifique
return
xmlString
(
obj
,
resourceType
,
0
,
1
)
def
GetFolders
(
resourceType
,
currentFolder
):
results
=
[]
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
types
=
context
.
portal_types
all_portal_types
=
[
ctype
.
content_meta_type
for
ctype
in
types
.
objectValues
()]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
for
object
in
obj
.
objectValues
():
if
object
.
meta_type
in
all_portal_types
and
(
object
.
isPrincipiaFolderish
or
object
.
meta_type
==
'PloneArticle'
)
:
review_state
=
container
.
portal_workflow
.
getInfoFor
(
object
,
'review_state'
,
''
)
start_pub
=
getattr
(
object
,
'effective_date'
,
None
)
end_pub
=
getattr
(
object
,
'expiration_date'
,
None
)
if
review_state
not
in
unpublishedStates
and
not
((
start_pub
and
start_pub
>
DateTime
())
or
(
end_pub
and
DateTime
()
>
end_pub
)):
results
.
append
(
object
)
elif
user
.
has_role
(
rolesSeeUnpublishedContent
,
object
)
:
results
.
append
(
object
)
results
=
[
s
for
s
in
results
if
user
.
has_permission
(
'View'
,
s
)
]
return
xmlString
(
results
,
resourceType
,
1
,
0
)
def
CreateFolder
(
currentFolder
,
folderName
):
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
sErrorNumber
=
""
# error cases
if
not
user
.
has_permission
(
'Add portal content'
,
obj
)
and
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
sErrorNumber
=
"103"
sErrorDescription
=
"folder creation forbidden"
if
obj
.
meta_type
==
'PloneArticle'
:
sErrorNumber
=
"103"
sErrorDescription
=
"folder creation forbidden"
if
not
folderName
:
sErrorNumber
=
"102"
sErrorDescription
=
"invalid folder name"
if
not
sErrorNumber
:
try
:
folderTitle
=
utf8Decode
(
folderName
)
folderName
=
fckCreateValidZopeId
(
utf8Encode
(
folderTitle
))
new_id
=
obj
.
invokeFactory
(
id
=
folderName
,
type_name
=
'Folder'
,
title
=
folderTitle
)
sErrorNumber
=
"0"
sErrorDescription
=
"success"
except
:
sErrorNumber
=
"103"
sErrorDescription
=
"folder creation forbidden"
return
CreateXmlErrorNode
(
sErrorNumber
,
sErrorDescription
)
# 6. upload
def
UploadFile
(
resourceType
,
currentFolder
,
data
,
title
)
:
user
=
context
.
REQUEST
[
'AUTHENTICATED_USER'
]
if
currentFolder
!=
"/"
:
obj
=
context
.
restrictedTraverse
(
currentFolder
.
lstrip
(
'/'
))
else
:
obj
=
context
.
portal_url
.
getPortalObject
()
error
=
""
idObj
=
""
if
obj
.
meta_type
!=
'PloneArticle'
:
# define Portal Type to add
if
resourceType
==
'File'
:
typeToAdd
=
file_portal_type
elif
resourceType
==
'Flash'
:
typeToAdd
=
flash_portal_type
elif
resourceType
==
'Image'
:
if
obj
.
meta_type
==
"CMF ZPhotoSlides"
:
typeToAdd
=
'ZPhoto'
elif
obj
.
meta_type
==
"Photo Album"
:
typeToAdd
=
'Photo'
elif
obj
.
meta_type
==
"ATPhotoAlbum"
:
typeToAdd
=
'ATPhoto'
else
:
typeToAdd
=
image_portal_type
if
not
user
.
has_permission
(
'Add portal content'
,
obj
)
and
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
error
=
"103"
if
resourceType
==
'Image'
and
not
allow_image_upload
:
error
=
"103"
if
resourceType
==
'Flash'
and
not
allow_flash_upload
:
error
=
"103"
if
resourceType
not
in
(
'Flash'
,
'Image'
)
and
not
allow_file_upload
:
error
=
"103"
if
not
data
:
#pas de fichier
error
=
"202"
titre_data
=
''
filename
=
utf8Decode
(
getattr
(
data
,
'filename'
,
''
))
titre_data
=
filename
[
max
(
string
.
rfind
(
filename
,
'/'
),
string
.
rfind
(
filename
,
'
\
\
'
),
string
.
rfind
(
filename
,
':'
),
)
+
1
:]
idObj
=
fckCreateValidZopeId
(
utf8Encode
(
titre_data
))
if
title
:
titre_data
=
title
if
not
IsAllowedExt
(
FindExtension
(
idObj
),
resourceType
):
error
=
"202"
if
not
error
:
error
=
"0"
indice
=
0
exemple_titre
=
idObj
while
exemple_titre
in
obj
.
objectIds
():
indice
=
indice
+
1
exemple_titre
=
str
(
indice
)
+
idObj
if
indice
!=
0
:
error
=
"201"
idObj
=
exemple_titre
try
:
obj
.
invokeFactory
(
id
=
idObj
,
type_name
=
typeToAdd
,
title
=
titre_data
)
newFile
=
getattr
(
obj
,
idObj
)
newFile
.
edit
(
file
=
data
)
obj
.
reindexObject
()
except
:
error
=
"103"
#Plone Article treatment
else
:
# find Plone Article version
try
:
image_brains
=
obj
.
getImageBrains
()
attachment_brains
=
obj
.
getAttachmentBrains
()
versionPA
=
3
except
:
versionPA
=
2
if
not
data
:
#pas de fichier
error
=
"1"
customMsg
=
"no file uploaded"
else
:
filename
=
utf8Decode
(
getattr
(
data
,
'filename'
,
''
))
titre_data
=
filename
[
max
(
string
.
rfind
(
filename
,
'/'
),
string
.
rfind
(
filename
,
'
\
\
'
),
string
.
rfind
(
filename
,
':'
),
)
+
1
:]
# idObj can't be cleaned with PloneArticle attachements
# it's a problem but we do the job
idObj
=
fckCreateValidZopeId
(
utf8Encode
(
titre_data
))
if
title
:
titre_data
=
title
if
resourceType
==
'Image'
:
# Upload file
if
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
error
=
"103"
elif
not
allow_image_upload
:
error
=
"103"
elif
not
IsAllowedExt
(
FindExtension
(
idObj
),
resourceType
):
error
=
"202"
customMsg
=
"Invalid file type"
elif
obj
.
portal_article
.
checkImageSize
(
data
):
if
versionPA
==
2
:
obj
.
appendImage
(
titre_data
,
data
,
)
else
:
obj
.
addImage
(
title
=
titre_data
,
description
=
''
,
image
=
data
)
error
=
"0"
try
:
obj
.
reindexObject
()
except
:
parent
=
obj
.
aq_parent
parent
.
reindexObject
()
else
:
error
=
"104"
else
:
# Upload file
if
not
user
.
has_permission
(
'Modify portal content'
,
obj
):
error
=
"103"
elif
not
allow_file_upload
:
error
=
"103"
elif
not
IsAllowedExt
(
FindExtension
(
idObj
),
resourceType
):
error
=
"202"
customMsg
=
"Invalid file type"
elif
obj
.
portal_article
.
checkAttachmentSize
(
data
):
if
versionPA
==
2
:
obj
.
appendAttachment
(
titre_data
,
data
,
)
else
:
obj
.
addAttachment
(
title
=
titre_data
,
description
=
''
,
file
=
data
)
error
=
"0"
try
:
obj
.
reindexObject
()
except
:
parent
=
obj
.
aq_parent
parent
.
reindexObject
()
else
:
error
=
"104"
d
=
'''
<script type="text/javascript">
window.parent.frames['frmUpload'].OnUploadCompleted(%s,"%s") ;
</script>
'''
%
(
error
,
idObj
)
return
d
#7. connector
request
=
context
.
REQUEST
RESPONSE
=
request
.
RESPONSE
dicoRequest
=
request
.
form
message_error
=
""
portal_url
=
context
.
portal_url
.
getPortalObject
().
absolute_url
()
server_url
=
request
.
SERVER_URL
portal_path
=
portal_url
.
replace
(
server_url
,
''
)
if
ConfigUserFilesPath
!=
""
:
sUserFilesPath
=
ConfigUserFilesPath
elif
'ServerPath'
in
dicoRequest
:
sUserFilesPath
=
dicoRequest
[
'ServerPath'
]
else
:
sUserFilesPath
=
"/"
if
'CurrentFolder'
in
dicoRequest
:
sCurrentFolder
=
dicoRequest
[
'CurrentFolder'
]
if
sUserFilesPath
!=
'/'
and
sUserFilesPath
.
rstrip
(
'/'
)
not
in
sCurrentFolder
:
sCurrentFolder
=
sUserFilesPath
else
:
message_error
=
"No CurrentFolder in request"
if
'Command'
in
dicoRequest
:
sCommand
=
dicoRequest
[
'Command'
]
else
:
message_error
=
"No Command in request"
if
'Type'
in
dicoRequest
:
sResourceType
=
dicoRequest
[
'Type'
]
else
:
message_error
=
"No Type in request"
if
'NewFolderName'
in
dicoRequest
:
sFolderName
=
dicoRequest
[
'NewFolderName'
]
# interception File Upload
if
sCommand
==
'FileUpload'
and
'NewFile'
in
dicoRequest
:
sData
=
dicoRequest
[
'NewFile'
]
sTitle
=
utf8Decode
(
dicoRequest
[
'Title'
])
chaineHtmlUpload
=
UploadFile
(
sResourceType
,
sCurrentFolder
,
sData
,
sTitle
)
RESPONSE
.
setHeader
(
'Content-type'
,
'text/html; charset=%s'
%
charsetSite
)
return
chaineHtmlUpload
else
:
# Creation response XML
if
not
message_error
:
RESPONSE
.
setHeader
(
'Cache-control'
,
'pre-check=0,post-check=0,must-revalidate,s-maxage=0,max-age=0,no-cache'
)
RESPONSE
.
setHeader
(
'Content-type'
,
'text/xml; charset=utf-8'
)
xmlHeader
=
CreateXmlHeader
(
sCommand
,
sResourceType
,
sCurrentFolder
)
if
sCommand
==
"GetFolders"
:
xmlBody
=
GetFolders
(
sResourceType
,
sCurrentFolder
)
elif
sCommand
==
"GetFoldersAndFiles"
:
xmlBody
=
GetFoldersAndFiles
(
sResourceType
,
sCurrentFolder
)
elif
sCommand
==
"CreateFolder"
:
xmlBody
=
CreateFolder
(
sCurrentFolder
,
sFolderName
)
xmlFooter
=
CreateXmlFooter
()
return
xmlHeader
+
xmlBody
+
xmlFooter
# creation response error request
else
:
sErrorNumber
=
"218"
sErrorDescription
=
"Browser Request exception : "
+
message_error
xmlHeader
=
CreateXmlHeader
(
sCommand
,
sResourceType
,
sCurrentFolder
)
xmlFooter
=
CreateXmlFooter
()
return
xmlHeader
+
CreateXmlErrorNode
(
sErrorNumber
,
sErrorDescription
)
+
xmlFooter
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_fckeditor/editor/filemanager/browser/zope/connectors/connectorPlone.py.xml
deleted
100644 → 0
View file @
85852708
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
Command=\'\',Type=\'\',CurrentFolder=\'\',NewFolderName=\'\'
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
connectorPlone.py
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5Type/CodingStyle.py
View file @
5b61fec0
...
...
@@ -135,9 +135,7 @@ ignored_skin_id_set = {
'RelationFieldZuite_CommonTemplate'
,
'Field_getDescription'
,
'ERP5XhtmlStyle_redirect'
,
'connectorCPS.py'
,
'connectorERP5'
,
'connectorPlone.py'
,
'resolveUid'
,
'IndividualVariation_init'
,
'QuantityUnitConversion_getQuantityUnitList'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment