fckoutput.py
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:4k
源码类别:

数据库编程

开发平台:

Visual C++

  1. #!/usr/bin/env python
  2. """
  3. FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4. Copyright (C) 2003-2007 Frederico Caldeira Knabben
  5. == BEGIN LICENSE ==
  6. Licensed under the terms of any of the following licenses at your
  7. choice:
  8. - GNU General Public License Version 2 or later (the "GPL")
  9. http://www.gnu.org/licenses/gpl.html
  10. - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  11. http://www.gnu.org/licenses/lgpl.html
  12. - Mozilla Public License Version 1.1 or later (the "MPL")
  13. http://www.mozilla.org/MPL/MPL-1.1.html
  14. == END LICENSE ==
  15. Connector for Python (CGI and WSGI).
  16. """
  17. from time import gmtime, strftime
  18. import string
  19. def escape(text, replace=string.replace):
  20. """
  21. Converts the special characters '<', '>', and '&'.
  22. RFC 1866 specifies that these characters be represented
  23. in HTML as &lt; &gt; and &amp; respectively. In Python
  24. 1.5 we use the new string.replace() function for speed.
  25. """
  26. text = replace(text, '&', '&amp;') # must be done 1st
  27. text = replace(text, '<', '&lt;')
  28. text = replace(text, '>', '&gt;')
  29. text = replace(text, '"', '&quot;')
  30. return text
  31. def convertToXmlAttribute(value):
  32. if (value is None):
  33. value = ""
  34. return escape(value)
  35. class BaseHttpMixin(object):
  36. def setHttpHeaders(self, content_type='text/xml'):
  37. "Purpose: to prepare the headers for the xml to return"
  38. # Prevent the browser from caching the result.
  39. # Date in the past
  40. self.setHeader('Expires','Mon, 26 Jul 1997 05:00:00 GMT')
  41. # always modified
  42. self.setHeader('Last-Modified',strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime())) 
  43. # HTTP/1.1
  44. self.setHeader('Cache-Control','no-store, no-cache, must-revalidate') 
  45. self.setHeader('Cache-Control','post-check=0, pre-check=0') 
  46. # HTTP/1.0
  47. self.setHeader('Pragma','no-cache') 
  48. # Set the response format.
  49. self.setHeader( 'Content-Type', content_type + '; charset=utf-8' )
  50. return
  51. class BaseXmlMixin(object):
  52. def createXmlHeader(self, command, resourceType, currentFolder, url):
  53. "Purpose: returns the xml header"
  54. self.setHttpHeaders()
  55. # Create the XML document header
  56. s =  """<?xml version="1.0" encoding="utf-8" ?>"""
  57. # Create the main connector node
  58. s += """<Connector command="%s" resourceType="%s">""" % (
  59. command,
  60. resourceType
  61. )
  62. # Add the current folder node
  63. s += """<CurrentFolder path="%s" url="%s" />""" % (
  64. convertToXmlAttribute(currentFolder),
  65. convertToXmlAttribute(url),
  66. )
  67. return s
  68. def createXmlFooter(self):
  69. "Purpose: returns the xml footer"
  70. return """</Connector>"""
  71. def sendError(self, number, text):
  72. "Purpose: in the event of an error, return an xml based error"
  73. self.setHttpHeaders()
  74. return ("""<?xml version="1.0" encoding="utf-8" ?>""" +
  75. """<Connector>""" +
  76. self.sendErrorNode (number, text) +
  77. """</Connector>""" )
  78. def sendErrorNode(self, number, text):
  79. return """<Error number="%s" text="%s" />""" % (number, convertToXmlAttribute(text))
  80. class BaseHtmlMixin(object):
  81. def sendUploadResults( self, errorNo = 0, fileUrl = '', fileName = '', customMsg = '' ):
  82. self.setHttpHeaders("text/html")
  83. "This is the function that sends the results of the uploading process"
  84. return """<script type="text/javascript">
  85. window.parent.OnUploadCompleted(%(errorNumber)s,"%(fileUrl)s","%(fileName)s","%(customMsg)s"); 
  86. </script>""" % {
  87. 'errorNumber': errorNo,
  88. 'fileUrl': fileUrl.replace ('"', '\"'),
  89. 'fileName': fileName.replace ( '"', '\"' ) , 
  90. 'customMsg': customMsg.replace ( '"', '\"' ),
  91. }