web/views/embedding.py
branchtls-sprint
changeset 1802 d628defebc17
parent 1132 96752791c2b6
child 1977 606923dff11b
equal deleted inserted replaced
1801:672acc730ce5 1802:d628defebc17
    27 
    27 
    28 class ExternalTemplate(basetemplates.TheMainTemplate):
    28 class ExternalTemplate(basetemplates.TheMainTemplate):
    29     """template embeding an external web pages into CubicWeb web interface
    29     """template embeding an external web pages into CubicWeb web interface
    30     """
    30     """
    31     id = 'external'
    31     id = 'external'
    32     
    32 
    33     def call(self, body):
    33     def call(self, body):
    34         # XXX fallback to HTML 4 mode when embeding ?
    34         # XXX fallback to HTML 4 mode when embeding ?
    35         self.set_request_content_type()
    35         self.set_request_content_type()
    36         self.req.search_state = ('normal',)
    36         self.req.search_state = ('normal',)
    37         self.template_header(self.content_type, None, self.req._('external page'),
    37         self.template_header(self.content_type, None, self.req._('external page'),
    90     """display an 'embed' link on entity implementing `embeded_url` method
    90     """display an 'embed' link on entity implementing `embeded_url` method
    91     if the returned url match embeding configuration
    91     if the returned url match embeding configuration
    92     """
    92     """
    93     id = 'embed'
    93     id = 'embed'
    94     __select__ = (one_line_rset() & match_search_state('normal')
    94     __select__ = (one_line_rset() & match_search_state('normal')
    95                   & implements(IEmbedable) 
    95                   & implements(IEmbedable)
    96                   & score_entity(entity_has_embedable_url))
    96                   & score_entity(entity_has_embedable_url))
    97     
    97 
    98     title = _('embed')
    98     title = _('embed')
    99     controller = 'embed'
    99     controller = 'embed'
   100     
   100 
   101     def url(self, row=0):
   101     def url(self, row=0):
   102         entity = self.rset.get_entity(row, 0)
   102         entity = self.rset.get_entity(row, 0)
   103         url = urljoin(self.req.base_url(), entity.embeded_url())
   103         url = urljoin(self.req.base_url(), entity.embeded_url())
   104         if self.req.form.has_key('rql'):
   104         if self.req.form.has_key('rql'):
   105             return self.build_url(url=url, rql=self.req.form['rql'])
   105             return self.build_url(url=url, rql=self.req.form['rql'])
   117 
   117 
   118 class replace_href:
   118 class replace_href:
   119     def __init__(self, prefix, custom_css=None):
   119     def __init__(self, prefix, custom_css=None):
   120         self.prefix = prefix
   120         self.prefix = prefix
   121         self.custom_css = custom_css
   121         self.custom_css = custom_css
   122         
   122 
   123     def __call__(self, match):
   123     def __call__(self, match):
   124         original_url = match.group(1)
   124         original_url = match.group(1)
   125         url = self.prefix + urlquote(original_url, safe='')
   125         url = self.prefix + urlquote(original_url, safe='')
   126         if self.custom_css is not None:
   126         if self.custom_css is not None:
   127             if '?' in url:
   127             if '?' in url:
   134 class absolutize_links:
   134 class absolutize_links:
   135     def __init__(self, embedded_url, tag, custom_css=None):
   135     def __init__(self, embedded_url, tag, custom_css=None):
   136         self.embedded_url = embedded_url
   136         self.embedded_url = embedded_url
   137         self.tag = tag
   137         self.tag = tag
   138         self.custom_css = custom_css
   138         self.custom_css = custom_css
   139     
   139 
   140     def __call__(self, match):
   140     def __call__(self, match):
   141         original_url = match.group(1)
   141         original_url = match.group(1)
   142         if '://' in original_url:
   142         if '://' in original_url:
   143             return match.group(0) # leave it unchanged
   143             return match.group(0) # leave it unchanged
   144         return '%s="%s"' % (self.tag, urljoin(self.embedded_url, original_url))
   144         return '%s="%s"' % (self.tag, urljoin(self.embedded_url, original_url))