def __call__(self, c=None, f='index', args=[], vars={}, extension=None, target=None,ajax=False,ajax_trap=False, url=None): import globals target = target or 'c'+str(random.random())[2:] request = self.environment['request'] if '.' in f: f, extension = f.split('.',1) if c and not url and not ajax: other_environment = copy.copy(self.environment) other_request = globals.Request() other_request.application = request.application other_request.controller = c other_request.function = f other_request.extension = extension or request.extension other_request.args = List(args) other_request.folder = request.folder other_request.env = request.env if not ajax_trap: other_request.vars = request.vars other_request.get_vars = request.get_vars other_request.post_vars = request.post_vars else: other_request.vars = vars other_environment['request'] = other_request other_response = globals.Response() other_environment['response'] = other_response other_response._view_environment = other_environment other_request.env.http_web2py_component_location = \ request.env.path_info other_request.env.http_web2py_component_element = target other_response.view = '%s/%s.%s' % (c,f, other_request.extension) page = run_controller_in(c, f, other_environment) if isinstance(page, dict): other_response._vars = page for key in page: other_response._view_environment[key] = page[key] run_view_in(other_response._view_environment) page = other_response.body.getvalue() script = '' if ajax_trap: script += "web2py_trap_form('%s','%s');" % \ (html.URL(request.application,c,f, args=args,vars=vars, extension=extension),target) #for (name,value) in other_response.headers: # if name == 'web2py-component-command': # script += value return html.TAG[''](html.DIV(html.XML(page),_id=target), html.SCRIPT(script,_type="text/javascript")) else: url = url or html.URL(request.application,c, f, args=args,vars=vars, extension=extension) return html.TAG[''](html.SCRIPT('web2py_component("%s","%s")' % \ (url,target), _type="text/javascript"), html.DIV('loading...',_id=target))
def solo(self, post): posts = list(post.blog.blogdir.sortedPosts()) posts.remove(post) posts = [i for i in posts if "draft" not in i.options] parts = [] related_posts = [] if self.related: related_posts = post.related(posts, self.related) parts.append( self._makeList(related_posts, self.related, self.RELATED_TITLE)) if self.recent: for i in related_posts: if i in posts: posts.remove(i) parts.append( self._makeList([i for i in posts if "top" in i.options], self.recent, self.RECENT_TITLE)) return html.DIV(*parts)
def _makeList(self, posts, num, title): monthyear = None output = html.DIV(_class=self.CSS_PREFIX) output.addChild(html.H2(title)) postlst = [] for i in posts: if not num: break if not i.url: postlst.append( html.Group( html.SPAN(model.LinkTo(i), _class="%s-post" % self.CSS_PREFIX), " ", html.SPAN(i.time.strftime("%d %b %Y"), _class="%s-date" % self.CSS_PREFIX))) num -= 1 if postlst: output.addChild(html.UL(postlst)) return output else: return ""
def _getArchive(self): monthyear = None output = html.DIV(_class="archive") postlst = [] for i in self.blog.blogdir.sortedPosts(): if "draft" in i.options: continue my = i.time.strftime("%B %Y") if my != monthyear: if postlst: output.addChild(html.UL(postlst)) postlst = [] monthyear = my output.addChild(html.H1(monthyear)) postlst.append( html.Group( html.SPAN(model.LinkTo(i), _class="archive-post"), " ", html.SPAN(i.time.strftime("%d %b %Y"), _class="archive-date"))) if postlst: output.addChild(html.UL(postlst)) return output
def __str__(self): exclude = [state.application.getPage(i) for i in self.exclude] nodes = self._getNodes() d = html.DIV(self._mkUL(nodes, exclude, self.depth), _class=self.divclass) return unicode(d)
def __call__(self, c=None, f='index', args=None, vars=None, extension=None, target=None,ajax=False,ajax_trap=False, url=None,user_signature=False, content='loading...',**attr): if args is None: args = [] vars = Storage(vars or {}) import globals target = target or 'c'+str(random.random())[2:] attr['_id']=target request = self.environment['request'] if '.' in f: f, extension = f.rsplit('.',1) if url or ajax: url = url or html.URL(request.application, c, f, r=request, args=args, vars=vars, extension=extension, user_signature=user_signature) script = html.SCRIPT('web2py_component("%s","%s")' % (url, target), _type="text/javascript") return html.TAG[''](script, html.DIV(content,**attr)) else: if not isinstance(args,(list,tuple)): args = [args] c = c or request.controller other_request = Storage(request) other_request['env'] = Storage(request.env) other_request.controller = c other_request.function = f other_request.extension = extension or request.extension other_request.args = List(args) other_request.vars = vars other_request.get_vars = vars other_request.post_vars = Storage() other_response = globals.Response() other_request.env.path_info = '/' + \ '/'.join([request.application,c,f] + \ map(str, other_request.args)) other_request.env.query_string = \ vars and html.URL(vars=vars).split('?')[1] or '' other_request.env.http_web2py_component_location = \ request.env.path_info other_request.cid = target other_request.env.http_web2py_component_element = target other_response.view = '%s/%s.%s' % (c,f, other_request.extension) other_environment = copy.copy(self.environment) other_response._view_environment = other_environment other_response.generic_patterns = \ copy.copy(current.response.generic_patterns) other_environment['request'] = other_request other_environment['response'] = other_response ## some magic here because current are thread-locals original_request, current.request = current.request, other_request original_response, current.response = current.response, other_response page = run_controller_in(c, f, other_environment) if isinstance(page, dict): other_response._vars = page other_response._view_environment.update(page) run_view_in(other_response._view_environment) page = other_response.body.getvalue() current.request, current.response = original_request, original_response js = None if ajax_trap: link = html.URL(request.application, c, f, r=request, args=args, vars=vars, extension=extension, user_signature=user_signature) js = "web2py_trap_form('%s','%s');" % (link, target) script = js and html.SCRIPT(js,_type="text/javascript") or '' return html.TAG[''](html.DIV(html.XML(page),**attr),script)
def __call__(self, c=None, f='index', args=[], vars={}, extension=None, target=None,ajax=False,ajax_trap=False, url=None,user_signature=False, content='loading...',**attr): import globals target = target or 'c'+str(random.random())[2:] attr['_id']=target request = self.environment['request'] if '.' in f: f, extension = f.split('.',1) if url or ajax: url = url or html.URL(request.application, c, f, r=request, args=args, vars=vars, extension=extension, user_signature=user_signature) script = html.SCRIPT('web2py_component("%s","%s")' % (url, target), _type="text/javascript") return html.TAG[''](script, html.DIV(content,**attr)) else: if not isinstance(args,(list,tuple)): args = [args] c = c or request.controller other_request = globals.Request() other_request.application = request.application other_request.controller = c other_request.function = f other_request.extension = extension or request.extension other_request.args = List(args) other_request.folder = request.folder other_request.env = request.env other_request.vars = request.vars other_request.get_vars = request.get_vars other_request.post_vars = request.post_vars other_response = globals.Response() other_request.env.http_web2py_component_location = \ request.env.path_info other_request.env.http_web2py_component_element = target other_response.view = '%s/%s.%s' % (c,f, other_request.extension) other_environment = copy.copy(self.environment) other_response._view_environment = other_environment other_environment['request'] = other_request other_environment['response'] = other_response page = run_controller_in(c, f, other_environment) if isinstance(page, dict): other_response._vars = page for key in page: other_response._view_environment[key] = page[key] run_view_in(other_response._view_environment) page = other_response.body.getvalue() js = None if ajax_trap: link = html.URL(request.application, c, f, r=request, args=args, vars=vars, extension=extension, user_signature=user_signature) js = "web2py_trap_form('%s','%s');" % (link, target) # not sure about this # for (name,value) in other_response.headers: # if name == 'web2py-component-command': # js += value script = js and html.SCRIPT(js,_type="text/javascript") or '' return html.TAG[''](html.DIV(html.XML(page),**attr),script)