Ignore:
Timestamp:
08/06/09 16:43:23 (5 years ago)
Author:
david
Message:

updating base_files logic to output into appropriate asset folders on filesystem, and properly rewrite links to those assets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • enpraxis.staticsite/trunk/enpraxis/staticsite/utilities/staticsiteutility.py

    r529 r530  
    7979        for x in ssprops.getProperty('base_files'): 
    8080            objurl = urlunparse((url[0], url[1], '/'.join(urlpath + [x]), url[3], url[4], url[5])) 
    81             path = self._getObjPath(objurl, portal_url, dpath) 
     81            #path = self._getObjPath(objurl, portal_url, dpath) 
    8282            raw = self._httpget(objurl) 
    83             if 'text' not in guess_type(x): 
     83            ftype = guess_type(x)[0] 
     84            if ftype is None: 
     85                path = self._getObjPath(objurl, portal_url, dpath)                 
     86                self._writeFile(path, raw)                 
     87            elif 'css' in ftype: 
     88                path = self._getObjPath(objurl, portal_url, dpath + 'css/') 
     89                self._writeFile(path, raw) 
     90            elif 'javascript' in ftype: 
     91                path = self._getObjPath(objurl, portal_url, dpath + 'js/')                 
     92                self._writeFile(path, raw) 
     93            elif 'image' in ftype: 
     94                path = self._getObjPath(objurl, portal_url, dpath + 'images/') 
    8495                self._writeFile(path, raw, True) 
    8596            else: 
     97                path = self._getObjPath(objurl, portal_url, dpath)                 
    8698                self._writeFile(path, raw) 
    87  
    88         # Deploy CSS 
     99                 
     100        # Deploy Current Theme CSS 
    89101        cssreg = context.portal_css 
    90102        cssurl = cssreg.absolute_url() 
     
    98110                self._writeFile(path, raw) 
    99111 
    100         # Deploy CSS Images into the appropriate skin folder 
     112        # Deploy Current Theme CSS Images into the appropriate skin folder 
    101113        css_images = ssprops.getProperty('css_images') 
    102114        if len(css_images) > 0:             
     
    224236        soup = BeautifulSoup(raw) 
    225237        self.deployDocumentActions(portal, aurl, dpath, soup, ssprops) 
    226         self.deployPresentationView(portal, aurl, dpath, soup, ssprops)                 
     238        self.deployPresentationView(portal, aurl, dpath, soup, ssprops)         
    227239        self.deployNonActionNonHTMLViews(portal, aurl, dpath, soup, ssprops) 
    228240        if isFolderish: 
     
    237249            mpath += '.html' 
    238250        self._writeFile(mpath, body) 
     251 
    239252 
    240253    def deployPresentationView(self, portal, current, dpath, soup, ssprops): 
     
    264277                        mpath += '.html' 
    265278                    self._writeFile(mpath, body)             
    266  
     279             
    267280 
    268281    def deployDocumentActions(self, portal, current, dpath, soup, ssprops): 
     
    335348        self.filterJSLinks(soup, current) 
    336349        self.filterS5BaseUrl(soup, current)         
     350        self.filterBaseFilesLinks(soup, current, portal, ssprops) 
    337351        self.filterImageFullscreenBackLink(soup, current) 
    338352        self.filterCSSValidatorLink(soup, current, portal, ssprops) 
     
    425439            url = ie_css.split('url(')[-1] 
    426440            url = url.split(');')[0] 
     441            url.replace('IEFixes.css', 'css/IEFixes.css') 
    427442            nurl = self._convertLinkToRelative(url, current) 
    428443            ie_css.replaceWith('''<!--[if IE]> 
     
    471486                if back.has_key('href'): 
    472487                    back['href'] = current.replace('image_view_fullscreen.html', 'view.html') 
     488 
     489    def filterBaseFilesLinks(self, soup, current, portal, ssprops): 
     490        portal_url = portal.portal_url() 
     491        for x in ssprops.getProperty('base_files'): 
     492            ftype = guess_type(x)[0] 
     493            if ftype is None: 
     494                pass 
     495            elif 'css' in ftype: 
     496                tags = soup.findAll('link', {'href' : re.compile(x)}) 
     497                for tag in tags: 
     498                    abs_link = self._convertLinkToAbsolute(tag['href'], current) 
     499                    rel_link = self._convertLinkToRelative(abs_link, current) 
     500                    tag['href']  = rel_link.replace(x, 'css/%s' % x)  
     501            elif 'javascript' in ftype:               
     502                tags = soup.findAll('script', {'src' : re.compile(x)}) 
     503                for tag in tags: 
     504                    abs_link = self._convertLinkToAbsolute(tag['src'], current) 
     505                    rel_link = self._convertLinkToRelative(abs_link, current)                     
     506                    tag['src']  = rel_link.replace(x, 'js/%s' % x)   
     507            elif 'image' in ftype: 
     508                tags = soup.findAll('img', {'src' : re.compile(x)}) 
     509                for tag in tags: 
     510                    rel_link = self._convertLinkToRelative(tag['src'], current) 
     511                    tag['src']  = rel_link.replace(x, 'images/%s' % x) 
     512 
     513 
     514 
    473515 
    474516    def getDocumentLinks(self, soup): 
Note: See TracChangeset for help on using the changeset viewer.