[CalendarServer-changes] [3697] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 19 17:09:09 PST 2009


Revision: 3697
          http://trac.macosforge.org/projects/calendarserver/changeset/3697
Author:   wsanchez at apple.com
Date:     2009-02-19 17:09:09 -0800 (Thu, 19 Feb 2009)
Log Message:
-----------
Add webcal resource

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/tap/caldav.py
    CalendarServer/trunk/twistedcaldav/config.py

Added Paths:
-----------
    CalendarServer/trunk/calendarserver/webcal/
    CalendarServer/trunk/calendarserver/webcal/__init__.py
    CalendarServer/trunk/calendarserver/webcal/resource.py

Modified: CalendarServer/trunk/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/caldav.py	2009-02-20 01:08:38 UTC (rev 3696)
+++ CalendarServer/trunk/calendarserver/tap/caldav.py	2009-02-20 01:09:09 UTC (rev 3697)
@@ -85,6 +85,7 @@
     NegotiateCredentialFactory = None
 
 from calendarserver.provision.root import RootResource
+from calendarserver.webcal.resource import WebCalendarResource
 
 log = Logger()
 
@@ -321,6 +322,7 @@
     iScheduleResourceClass       = IScheduleInboxFile
     imipResourceClass            = IMIPInboxResource
     timezoneServiceResourceClass = TimezoneServiceFile
+    webCalendarResourceClass     = WebCalendarResource
 
     def makeService(self, options):
 
@@ -525,6 +527,15 @@
             root.putChild("inbox", imipInbox)
 
         #
+        # WebCal
+        #
+        if config.WebCalendarRoot:
+            self.log_info("Setting up WebCalendar resource: %s"
+                          % (config.WebCalendarRoot,))
+            webCalendar = self.webCalendarResourceClass(config.WebCalendarRoot)
+            root.putChild("webcal", webCalendar)
+
+        #
         # Configure ancillary data
         #
         self.log_info("Setting up Timezone Cache")

Added: CalendarServer/trunk/calendarserver/webcal/__init__.py
===================================================================
--- CalendarServer/trunk/calendarserver/webcal/__init__.py	                        (rev 0)
+++ CalendarServer/trunk/calendarserver/webcal/__init__.py	2009-02-20 01:09:09 UTC (rev 3697)
@@ -0,0 +1,19 @@
+##
+# Copyright (c) 2009 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+"""
+Calendar Server Web UI.
+"""

Added: CalendarServer/trunk/calendarserver/webcal/resource.py
===================================================================
--- CalendarServer/trunk/calendarserver/webcal/resource.py	                        (rev 0)
+++ CalendarServer/trunk/calendarserver/webcal/resource.py	2009-02-20 01:09:09 UTC (rev 3697)
@@ -0,0 +1,117 @@
+##
+# Copyright (c) 2009 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+"""
+Calendar Server Web UI.
+"""
+
+__all__ = [
+    "WebCalendarResource",
+]
+
+from twisted.web2 import responsecode
+from twisted.web2.http import Response
+from twisted.web2.http_headers import MimeType
+from twisted.web2.static import File as FileResource
+from twisted.web2.stream import MemoryStream
+
+class WebCalendarResource (FileResource):
+    def etag(self):
+        # Can't be calculated here
+        return None
+
+    def contentLength(self):
+        # Can't be calculated here
+        return None
+
+    def lastModified(self):
+        return None
+
+    def exists(self):
+        return True
+
+    def displayName(self):
+        return "Web Calendar"
+
+    def contentType(self):
+        return MimeType.fromString("text/html; charset=utf-8");
+
+    def contentEncoding(self):
+        return None
+
+    def createSimilarFile(self, path):
+        return FileResource(path)
+
+    def render(self, request):
+        if not self.fp.isdir():
+            return responsecode.NOT_FOUND
+
+        data = """
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<html lang="en">
+ <head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <meta name="caldav_principal_path" content="$(timeZone)s">
+  <meta name="tzid" content="%(principalURL)s">
+  <title>Calendar</title>
+  <link rel="stylesheet" href="/webcal/calendar/css/calendar_standalone.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/niftydate.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/calendar.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/dialog.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/forms.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/search.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/widgets.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/tags.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/tooltip.css" type="text/css" media="screen" charset="utf-8">
+  <link rel="stylesheet" href="/webcal/css/required/paginator.css" type="text/css" media="screen" charset="utf-8">
+  <script src="temp_exported_locStrings.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/prototype.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/md5.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/effects.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/builder.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/locUtils.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/formatDate.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/widgets_core.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/widgets.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/caldav.js" type="text/javascript" charset="utf-8"></script>
+  <script src="/webcal/javascript/calaccess.js" type="text/javascript" charset="utf-8"></script>
+  <script type="text/javascript" charset="utf-8">gDebug = %(debug)s;</script>
+ </head>
+ <body>
+  <div id="module_calendars"></div>
+  <script type="text/javascript" charset="utf-8">
+   setTimeout(function() { if (window.prepare) prepare() }, 10);
+  </script>
+ </body>
+</html>
+""" % {
+    "timeZone": "America/Los_Angeles",
+    "principalURL": "/principals/users/admin/",
+    "debug": "true",
+}
+
+        response = Response()
+        response.stream = MemoryStream(data, start=1)
+
+        for (header, value) in (
+            ("content-type", self.contentType()),
+            ("content-encoding", self.contentEncoding()),
+        ):
+            if value is not None:
+                response.headers.setHeader(header, value)
+
+        return response

Modified: CalendarServer/trunk/twistedcaldav/config.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/config.py	2009-02-20 01:08:38 UTC (rev 3696)
+++ CalendarServer/trunk/twistedcaldav/config.py	2009-02-20 01:09:09 UTC (rev 3697)
@@ -114,6 +114,7 @@
     "DocumentRoot"         : "/Library/CalendarServer/Documents",
     "UserQuota"            : 104857600, # User quota (in bytes)
     "MaximumAttachmentSize":   1048576, # Attachment size limit (in bytes)
+    "WebCalendarRoot"      : "/usr/share/collaboration",
 
     "Aliases": {},
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090219/11a854a0/attachment-0001.html>


More information about the calendarserver-changes mailing list