Changeset 277
- Timestamp:
- 06/10/09 11:49:40 (4 years ago)
- Location:
- enpraxis.staticsite/trunk/enpraxis/staticsite
- Files:
-
- 3 edited
-
browser/controlpanel.py (modified) (4 diffs)
-
profiles/default/propertiestool.xml (modified) (1 diff)
-
utilities/staticsiteutility.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
enpraxis.staticsite/trunk/enpraxis/staticsite/browser/controlpanel.py
r268 r277 2 2 from zope.interface import Interface, implements 3 3 from zope.component import adapts, getUtility 4 from zope.schema import TextLine 4 from zope.schema import TextLine, List, Tuple 5 from zope.schema.vocabulary import SimpleVocabulary 5 6 from Products.CMFDefault.formlib.schema import SchemaAdapterBase 6 7 from Products.CMFPlone.interfaces import IPloneSiteRoot 7 8 from Products.CMFCore.interfaces import IPropertiesTool 9 from Products.CMFPlone.utils import getToolByName 8 10 from plone.app.controlpanel.form import ControlPanelForm 9 11 from zope.formlib.form import FormFields … … 30 32 required=True) 31 33 34 extra_views = List(title=_(u'Additional Views'), 35 description=_(u'A list of additional views that need to be downloaded'), 36 required=True, 37 value_type=TextLine(),) 38 39 base_files = List(title=_(u'Base Files'), 40 description=_(u'A list of basic site files and resources to download'), 41 required=True, 42 value_type=TextLine(),) 43 44 css_images = List(title=_(u'CSS Images'), 45 description=_(u'A list of CSS images related to a custom theme'), 46 required=True, 47 value_type=TextLine(),) 32 48 33 49 class StaticSiteControlPanelAdapter(SchemaAdapterBase): … … 66 82 self.ssprops.manage_changeProperties(google_file=gf) 67 83 84 def get_extra_views(self): 85 return self.ssprops.extra_views 86 87 def set_extra_views(self, extraviews): 88 self.ssprops.extra_views = extraviews 89 90 def get_base_files(self): 91 return self.ssprops.base_files 92 93 def set_base_files(self, basefiles): 94 self.ssprops.base_files = basefiles 95 96 def get_css_images(self): 97 return self.ssprops.css_images 98 99 def set_css_images(self, cssimages): 100 self.ssprops.css_images = cssimages 101 102 68 103 deployment_path = property(get_deployment_path, set_deployment_path) 69 104 domain = property(get_domain, set_domain) 70 105 plone_sitemap = property(get_plone_sitemap, set_plone_sitemap) 71 106 google_file = property(get_google_file, set_google_file) 72 107 extra_views = property(get_extra_views, set_extra_views) 108 base_files = property(get_base_files, set_base_files) 109 css_images = property(get_css_images, set_css_images) 110 73 111 74 112 class StaticSiteControlPanel(ControlPanelForm): … … 76 114 form_fields = FormFields(IStaticSiteSchema) 77 115 116 78 117 label = _(u'Static Site Settings') 79 118 description = _(u'Settings which control static site deployment.') -
enpraxis.staticsite/trunk/enpraxis/staticsite/profiles/default/propertiestool.xml
r268 r277 7 7 <property name="google_file" type="string">googleFoo.html</property> 8 8 <property name="domain" type="string">localhost:8080/static</property> 9 <property name="base_files" type="lines"> 10 <element value="application.png" /> 11 <element value="bullet.gif" /> 12 <element value="document_icon.gif" /> 13 <element value="favicon.ico" /> 14 <element value="folder_icon.gif" /> 15 <element value="IEFixes.css" /> 16 <element value="image_icon.gif" /> 17 <element value="input_background.gif" /> 18 <element value="link_icon.gif" /> 19 <element value="logo.gif" /> 20 <element value="lock_icon.gif" /> 21 <element value="mail_icon.gif" /> 22 <element value="print_icon.gif" /> 23 <element value="rss_icon.gif" /> 24 <element value="py.png" /> 25 <element value="robots.txt" /> 26 <element value="search_icon.gif" /> 27 <element value="s5_icon.jpg" /> 28 <element value="s5_slides.css" /> 29 <element value="s5_outline.css" /> 30 <element value="s5_print.css" /> 31 <element value="s5_opera.css" /> 32 <element value="s5_slides.js" /> 33 <element value="spinner.gif" /> 34 <element value="txt.png" /> 35 <element value="xls.png" /> 36 <element value="eduCommonsDivision.gif" /> 37 <element value="bookmarklets.gif" /> 38 </property> 39 40 <property name="extra_views" type="lines"> 41 <element value="accessibility-info" /> 42 <element value="sitemap" /> 43 <element value="@@rss_feeds" /> 44 <element value="rss" /> 45 <element value="rdf" /> 46 <element value="presentation_view" /> 47 <element value="skinless_view" /> 48 </property> 49 50 <property name="css_images" type="lines"> 51 <element value="columnOneBackground.png" /> 52 <element value="headerBackground.png" /> 53 <element value="topNavBackground.png" /> 54 </property> 9 55 </object> 10 56 </object> -
enpraxis.staticsite/trunk/enpraxis/staticsite/utilities/staticsiteutility.py
r275 r277 1 import re 2 from BeautifulSoup import BeautifulSoup 1 3 from Globals import BobobaseName 2 4 from os import makedirs as os_makedirs … … 6 8 from os.path import split as os_split 7 9 8 9 10 from urllib2 import urlopen 11 from urllib2 import HTTPError 10 12 11 13 from OFS.SimpleItem import SimpleItem … … 25 27 domain = ssprops.getProperty('domain') 26 28 dpath = self._getDeploymentPath(ssprops.getProperty('deployment_path')) 29 self._deploySiteStructure(context, ssprops, domain, dpath) 30 27 31 allowed = context.portal_types.getTypeInfo('Plone Site').allowed_content_types 28 32 brains = context.portal_catalog.searchResults( … … 76 80 """ Filter content """ 77 81 return data.replace(portal_url, domain) 82 83 def _deploySiteStructure(self, context, ssprops, domain, dpath): 84 """ Get the base framework and resources needed to build the chrome locally """ 85 base_files = ssprops.base_files 86 css_images = ssprops.css_images 87 extra_views = ssprops.extra_views 78 88 89 portal_url = context.portal_url() 90 91 for x in base_files: 92 #Download files/images that are used sitewide in the chrome 93 url = '%s/%s' % (portal_url, x) 94 path = self._getObjPath(url, portal_url, dpath) 95 raw = self._httpget(url) 96 self._writeFile(path, raw) 97 98 for x in extra_views: 99 #Download zope3 views and/or additional views that are not included in the site catalog search 100 url = '%s/%s' % (portal_url, x) 101 path = self._getObjPath(url, portal_url, dpath) 102 path += '.html' 103 raw = self._httpget(url) 104 self._writeFile(path, raw) 105 106 #get soup of front page 107 fp = self._httpget(portal_url) 108 soup = BeautifulSoup(fp) 109 types = ['css', 'js'] 110 111 for x in types: 112 if x == 'css': 113 for tag in soup.head.findAll('style'): 114 #analyze content and extract url to CSS 115 contents = tag.contents[0] 116 url = re.match(r"""[^(]*\((.*)\)[^)]*$""", contents, re.X) 117 url = url.group(1) 118 path = self._deployCompressedResources(url, portal_url, dpath) 119 css_path = os_split(path)[0] 120 for img in css_images: 121 #download css_images 122 url = '%s/%s' % (portal_url, img) 123 path = '%s/%s' % (css_path, img) 124 try: 125 raw = self._httpget(url) 126 except HTTPError: 127 continue 128 self._writeFile(path, raw) 129 130 elif x == 'js': 131 for tag in soup.head.findAll('script'): 132 if tag.has_key('src'): 133 url = tag['src'] 134 self._deployCompressedResources(url, portal_url, dpath) 135 136 137 138 139 140 def _deployCompressedResources(self, url, portal_url, dpath): 141 """ extracts resources from soup and writes to static path location """ 142 path = self._getObjPath(url, portal_url, dpath) 143 path = path.replace('%20','_') 144 raw = self._httpget(url) 145 self._writeFile(path, raw) 146 return path 147 79 148 def _getDeploymentPath(self, sp): 80 149 """ Get the default static path location. """
Note: See TracChangeset
for help on using the changeset viewer.
