--- /dev/null
+#!/usr/bin/env python\r
+\r
+"""\r
+FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+Copyright (C) 2003-2008 Frederico Caldeira Knabben\r
+\r
+== BEGIN LICENSE ==\r
+\r
+Licensed under the terms of any of the following licenses at your\r
+choice:\r
+\r
+- GNU General Public License Version 2 or later (the "GPL")\r
+http://www.gnu.org/licenses/gpl.html\r
+\r
+- GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+http://www.gnu.org/licenses/lgpl.html\r
+\r
+- Mozilla Public License Version 1.1 or later (the "MPL")\r
+http://www.mozilla.org/MPL/MPL-1.1.html\r
+\r
+== END LICENSE ==\r
+\r
+Connector for Python (CGI and WSGI).\r
+\r
+"""\r
+\r
+from time import gmtime, strftime\r
+import string\r
+\r
+def escape(text, replace=string.replace):\r
+ """\r
+ Converts the special characters '<', '>', and '&'.\r
+\r
+ RFC 1866 specifies that these characters be represented\r
+ in HTML as < > and & respectively. In Python\r
+ 1.5 we use the new string.replace() function for speed.\r
+ """\r
+ text = replace(text, '&', '&') # must be done 1st\r
+ text = replace(text, '<', '<')\r
+ text = replace(text, '>', '>')\r
+ text = replace(text, '"', '"')\r
+ return text\r
+\r
+def convertToXmlAttribute(value):\r
+ if (value is None):\r
+ value = ""\r
+ return escape(value)\r
+\r
+class BaseHttpMixin(object):\r
+ def setHttpHeaders(self, content_type='text/xml'):\r
+ "Purpose: to prepare the headers for the xml to return"\r
+ # Prevent the browser from caching the result.\r
+ # Date in the past\r
+ self.setHeader('Expires','Mon, 26 Jul 1997 05:00:00 GMT')\r
+ # always modified\r
+ self.setHeader('Last-Modified',strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime()))\r
+ # HTTP/1.1\r
+ self.setHeader('Cache-Control','no-store, no-cache, must-revalidate')\r
+ self.setHeader('Cache-Control','post-check=0, pre-check=0')\r
+ # HTTP/1.0\r
+ self.setHeader('Pragma','no-cache')\r
+\r
+ # Set the response format.\r
+ self.setHeader( 'Content-Type', content_type + '; charset=utf-8' )\r
+ return\r
+\r
+class BaseXmlMixin(object):\r
+ def createXmlHeader(self, command, resourceType, currentFolder, url):\r
+ "Purpose: returns the xml header"\r
+ self.setHttpHeaders()\r
+ # Create the XML document header\r
+ s = """<?xml version="1.0" encoding="utf-8" ?>"""\r
+ # Create the main connector node\r
+ s += """<Connector command="%s" resourceType="%s">""" % (\r
+ command,\r
+ resourceType\r
+ )\r
+ # Add the current folder node\r
+ s += """<CurrentFolder path="%s" url="%s" />""" % (\r
+ convertToXmlAttribute(currentFolder),\r
+ convertToXmlAttribute(url),\r
+ )\r
+ return s\r
+\r
+ def createXmlFooter(self):\r
+ "Purpose: returns the xml footer"\r
+ return """</Connector>"""\r
+\r
+ def sendError(self, number, text):\r
+ "Purpose: in the event of an error, return an xml based error"\r
+ self.setHttpHeaders()\r
+ return ("""<?xml version="1.0" encoding="utf-8" ?>""" +\r
+ """<Connector>""" +\r
+ self.sendErrorNode (number, text) +\r
+ """</Connector>""" )\r
+\r
+ def sendErrorNode(self, number, text):\r
+ return """<Error number="%s" text="%s" />""" % (number, convertToXmlAttribute(text))\r
+\r
+class BaseHtmlMixin(object):\r
+ def sendUploadResults( self, errorNo = 0, fileUrl = '', fileName = '', customMsg = '' ):\r
+ self.setHttpHeaders("text/html")\r
+ "This is the function that sends the results of the uploading process"\r
+\r
+ "Minified version of the document.domain automatic fix script (#1919)."\r
+ "The original script can be found at _dev/domain_fix_template.js"\r
+ return """<script type="text/javascript">\r
+ (function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();\r
+\r
+ window.parent.OnUploadCompleted(%(errorNumber)s,"%(fileUrl)s","%(fileName)s","%(customMsg)s");\r
+ </script>""" % {\r
+ 'errorNumber': errorNo,\r
+ 'fileUrl': fileUrl.replace ('"', '\\"'),\r
+ 'fileName': fileName.replace ( '"', '\\"' ) ,\r
+ 'customMsg': customMsg.replace ( '"', '\\"' ),\r
+ }\r