예제 #1
0
 def render_timeline_event(self, context, field, event):
     bp_resource, bp, bc = event[3]
     compat_format_0_11_2 = 'oneliner'
     if hasattr(context, '_hints'):
         compat_format_0_11_2 = None
     if bc:  # A blog comment
         if field == 'url':
             return context.href.blog(bp.name) + '#comment-%d' % bc.number
         elif field == 'title':
             return tag('Blog: ', tag.em(bp.title), ' comment added')
         elif field == 'description':
             comment = compat_format_0_11_2 and shorten_line(bc.comment) \
                         or bc.comment
             return format_to(self.env, compat_format_0_11_2,
                              context(resource=bp_resource), comment)
     else:  # A blog post
         if field == 'url':
             return context.href.blog(bp.name)
         elif field == 'title':
             return tag('Blog: ', tag.em(bp.title),
                        bp.version > 1 and ' edited' or ' created')
         elif field == 'description':
             comment = compat_format_0_11_2 and shorten_line(bp.version_comment) \
                         or bp.version_comment
             return format_to(self.env, compat_format_0_11_2,
                              context(resource=bp_resource), comment)
예제 #2
0
 def render_timeline_event(self, context, field, event):
     bp_resource, bp, bc = event[3]
     compat_format_0_11_2 = 'oneliner'
     if hasattr(context, '_hints'):
          compat_format_0_11_2 = None
     if bc: # A blog comment
         if field == 'url':
             return context.href.blog(bp.name) + '#comment-%d' % bc.number
         elif field == 'title':
             return tag('Blog: ', tag.em(bp.title), ' comment added')
         elif field == 'description':
             comment = compat_format_0_11_2 and shorten_line(bc.comment) \
                         or bc.comment
             return format_to(self.env, compat_format_0_11_2,
                         context(resource=bp_resource), comment)
     else: # A blog post
         if field == 'url':
             return context.href.blog(bp.name)
         elif field == 'title':
             return tag('Blog: ', tag.em(bp.title),
                     bp.version > 1 and ' edited' or ' created')
         elif field == 'description':
             comment = compat_format_0_11_2 and shorten_line(bp.version_comment) \
                         or bp.version_comment
             return format_to(self.env, compat_format_0_11_2,
                     context(resource=bp_resource), comment)
예제 #3
0
 def process_request(self, req):
     # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that
     # the client has at least some permission). Additionally, allow GET
     # requests from TRAC_ADMIN for testing purposes.
     if req.method != 'POST':
         req.perm.require('TRAC_ADMIN')
         
     # @todo: Embed "tips" within the rendered output for the editor
     # (recognize TracLinks, table-stuff, macros, processors)
     # @todo: Save the content in server-side user-specific field for recovery
     
     realm = req.args.get('realm', 'wiki')
     id = req.args.get('id')
     version = req.args.get('version')
     if version is not None:
         try:
             version = int(version)
         except ValueError:
             version = None
     text = req.args.get('text', '')
     flavor = req.args.get('flavor')
     options = {}
     if 'escape_newlines' in req.args:
         options['escape_newlines'] = bool(int(req.args['escape_newlines']
                                               or 0))
     if 'shorten' in req.args:
         options['shorten'] = bool(int(req.args['shorten'] or 0))
     
     resource = Resource(realm, id=id, version=version)
     context = Context.from_request(req, resource)
     rendered = format_to(self.env, flavor, context, text, **options)
     req.send(rendered.encode('utf-8'))
예제 #4
0
 def process_request(self, req):
     # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that
     # the client has at least some permission). Additionally, allow GET
     # requests from TRAC_ADMIN for testing purposes.
     if req.method != 'POST':
         req.perm.require('TRAC_ADMIN')
     realm = req.args.get('realm', 'wiki')
     id = req.args.get('id')
     version = req.args.get('version')
     if version is not None:
         try:
             version = int(version)
         except ValueError:
             version = None
     text = req.args.get('text', '')
     flavor = req.args.get('flavor')
     options = {}
     if 'escape_newlines' in req.args:
         options['escape_newlines'] = bool(int(req.args['escape_newlines']
                                               or 0))
     if 'shorten' in req.args:
         options['shorten'] = bool(int(req.args['shorten'] or 0))
     
     resource = Resource(realm, id=id, version=version)
     context = Context.from_request(req, resource)
     rendered = format_to(self.env, flavor, context, text, **options)
     req.send(rendered.encode('utf-8'))
예제 #5
0
    def process_request(self, req):
        # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that
        # the client has at least some permission). Additionally, allow GET
        # requests from TRAC_ADMIN for testing purposes.
        if req.method != 'POST':
            req.perm.require('TRAC_ADMIN')
        realm = req.args.get('realm', 'wiki')
        id = req.args.get('id')
        version = req.args.get('version')
        if version is not None:
            try:
                version = int(version)
            except ValueError:
                version = None
        text = req.args.get('text', '')
        flavor = req.args.get('flavor')
        options = {}
        if 'escape_newlines' in req.args:
            options['escape_newlines'] = bool(
                int(req.args['escape_newlines'] or 0))
        if 'shorten' in req.args:
            options['shorten'] = bool(int(req.args['shorten'] or 0))

        resource = Resource(realm, id=id, version=version)
        context = Context.from_request(req, resource)
        rendered = format_to(self.env, flavor, context, text, **options)
        req.send(rendered.encode('utf-8'))
예제 #6
0
 def render_timeline_event(self, context, field, event):
     milestone, description = event[3]
     if field == 'url':
         return context.href.milestone(milestone.id)
     elif field == 'title':
         return tag('Milestone ', tag.em(milestone.id), ' completed')
     elif field == 'description':
         return format_to(self.env, None, context(resource=milestone),
                          description)
예제 #7
0
 def render_timeline_event(self, context, field, event):
     milestone, verb, status, description, comment = event[3]
     if field == 'url':
         return context.href.milestone(milestone.id)
     elif field == 'title':
         return tag('Milestone ', tag.em(milestone.id), ' ', verb)
     elif field == 'description':
         return format_to(self.env, None, context(resource=milestone),
                          status=='comment' and comment or description)
예제 #8
0
 def render_timeline_event(self, context, field, event):
     milestone, verb, status, description, comment = event[3]
     if field == 'url':
         return context.href.milestone(milestone.id)
     elif field == 'title':
         return tag('Milestone ', tag.em(milestone.id), ' ', verb)
     elif field == 'description':
         return format_to(self.env, None, context(resource=milestone),
                          status == 'comment' and comment or description)
예제 #9
0
 def render_timeline_event(self, context, field, event):
     milestone, description = event[3]
     if field == 'url':
         return context.href.milestone(milestone.id)
     elif field == 'title':
         return tag_("Milestone %(name)s completed",
                     name=tag.em(milestone.id))
     elif field == 'description':
         child_resource = context.child(resource=milestone)
         return format_to(self.env, None, child_resource, description)
예제 #10
0
파일: web_ui.py 프로젝트: nagyist/agilo
 def render_timeline_event(self, context, field, event):
     (start, sprint) = event[3]
     if field == 'url':
         return context.href.sprint(sprint.name)
     elif field == 'title':
         if start:
             return tag('Sprint ', tag.em(sprint.name), ' started')
         return tag('Sprint ', tag.em(sprint.name), ' finished')
     elif field == 'description':
         return format_to(self.env, None, context(resource=sprint),
                          sprint.description)
예제 #11
0
파일: web_ui.py 프로젝트: djangsters/agilo
 def render_timeline_event(self, context, field, event):
     (start, sprint) = event[3]
     if field == 'url':
         return context.href.sprint(sprint.name)
     elif field == 'title':
         if start:
             return tag('Sprint ', tag.em(sprint.name), ' started')
         return tag('Sprint ', tag.em(sprint.name), ' finished')
     elif field == 'description':
         return format_to(self.env, None, context(resource=sprint),
                          sprint.description)
 def render_timeline_event(self, context, field, event):
     attachment, descr = event[3]
     if field == 'url':
         return self.get_resource_url(attachment, context.href)
     elif field == 'title':
         name = get_resource_name(self.env, attachment.parent)
         title = get_resource_summary(self.env, attachment.parent)
         return tag(tag.em(os.path.basename(attachment.id)),
                    _(" attached to "), tag.em(name, title=title))
     elif field == 'description':
         return format_to(self.env, None, context(attachment.parent), descr)
예제 #13
0
 def render_timeline_event(self, context, field, event):
     bp_resource, bp, bc = event[3]
     compat_format_0_11_2 = "oneliner"
     if hasattr(context, "_hints"):
         compat_format_0_11_2 = None
     if bc:  # A blog comment
         if field == "url":
             return context.href.blog(bp.name) + "#comment-%d" % bc.number
         elif field == "title":
             return tag("Blog: ", tag.em(bp.title), " comment added")
         elif field == "description":
             comment = compat_format_0_11_2 and shorten_line(bc.comment) or bc.comment
             return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment)
     else:  # A blog post
         if field == "url":
             return context.href.blog(bp.name)
         elif field == "title":
             return tag("Blog: ", tag.em(bp.title), bp.version > 1 and " edited" or " created")
         elif field == "description":
             comment = compat_format_0_11_2 and shorten_line(bp.version_comment) or bp.version_comment
             return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment)
예제 #14
0
 def render_timeline_event(self, context, field, event):
     attachment, descr = event[3]
     if field == 'url':
         return self.get_resource_url(attachment, context.href)
     elif field == 'title':
         name = get_resource_name(self.env, attachment.parent)
         title = get_resource_summary(self.env, attachment.parent)
         return tag_("%(attachment)s attached to %(resource)s",
                     attachment=tag.em(os.path.basename(attachment.id)),
                     resource=tag.em(name, title=title))
     elif field == 'description':
         return format_to(self.env, None, context.child(attachment.parent),
                          descr)
예제 #15
0
 def render_timeline_event(self, context, field, event):
     wiki_page, comment = event[3]
     if field == 'url':
         return context.href.wiki(wiki_page.id, version=wiki_page.version)
     elif field == 'title':
         return tag(tag.em(get_resource_name(self.env, wiki_page)),
                    wiki_page.version > 1 and ' edited' or ' created')
     elif field == 'description':
         markup = format_to(self.env, None, context(resource=wiki_page),
                            comment)
         if wiki_page.version > 1:
             diff_href = context.href.wiki(
                 wiki_page.id, version=wiki_page.version, action='diff')
             markup = tag(markup, ' ', tag.a('(diff)', href=diff_href))
         return markup
예제 #16
0
파일: web_ui.py 프로젝트: starworldx/trac
 def render_timeline_event(self, context, field, event):
     wiki_page, comment = event[3]
     if field == 'url':
         return context.href.wiki(wiki_page.id, version=wiki_page.version)
     elif field == 'title':
         name = tag.em(get_resource_name(self.env, wiki_page))
         if wiki_page.version > 1:
             return tag_("%(page)s edited", page=name)
         else:
             return tag_("%(page)s created", page=name)
     elif field == 'description':
         markup = format_to(self.env, None,
                            context.child(resource=wiki_page), comment)
         if wiki_page.version > 1:
             diff_href = context.href.wiki(
                 wiki_page.id, version=wiki_page.version, action='diff')
             markup = tag(markup,
                          " (", tag.a(_("diff"), href=diff_href), ")")
         return markup
예제 #17
0
 def render_timeline_event(self, context, field, event):
     wiki_page, comment = event[3]
     if field == 'url':
         return context.href.wiki(wiki_page.id, version=wiki_page.version)
     elif field == 'title':
         name = tag.em(get_resource_name(self.env, wiki_page))
         if wiki_page.version > 1:
             return tag_('%(page)s edited', page=name)
         else:
             return tag_('%(page)s created', page=name)
     elif field == 'description':
         markup = format_to(self.env, None,
                            context.child(resource=wiki_page), comment)
         if wiki_page.version > 1:
             diff_href = context.href.wiki(
                 wiki_page.id, version=wiki_page.version, action='diff')
             markup = tag(markup,
                          ' (', tag.a(_('diff'), href=diff_href), ')')
         return markup
예제 #18
0
    def process_request(self, req):
        # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that
        # the client has at least some permission). Additionally, allow GET
        # requests from TRAC_ADMIN for testing purposes.
        if req.method != 'POST':
            req.perm.require('TRAC_ADMIN')
        realm = req.args.get('realm', WikiSystem.realm)
        id = req.args.get('id')
        version = req.args.getint('version')
        text = req.args.get('text', '')
        flavor = req.args.get('flavor')
        options = {}
        if 'escape_newlines' in req.args:
            options['escape_newlines'] = \
                req.args.getbool('escape_newlines', False)
        if 'shorten' in req.args:
            options['shorten'] = req.args.getbool('shorten', False)

        resource = Resource(realm, id=id, version=version)
        context = web_context(req, resource)
        rendered = format_to(self.env, flavor, context, text, **options) + \
                   chrome_info_script(req)
        req.send(rendered.encode('utf-8'))
예제 #19
0
파일: web_api.py 프로젝트: pkdevbox/trac
    def process_request(self, req):
        # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that
        # the client has at least some permission). Additionally, allow GET
        # requests from TRAC_ADMIN for testing purposes.
        if req.method != 'POST':
            req.perm.require('TRAC_ADMIN')
        realm = req.args.get('realm', WikiSystem.realm)
        id = req.args.get('id')
        version = as_int(req.args.get('version'), None)
        text = req.args.get('text', '')
        flavor = req.args.get('flavor')
        options = {}
        if 'escape_newlines' in req.args:
            options['escape_newlines'] = bool(int(req.args['escape_newlines']
                                                  or 0))
        if 'shorten' in req.args:
            options['shorten'] = bool(int(req.args['shorten'] or 0))

        resource = Resource(realm, id=id, version=version)
        context = web_context(req, resource)
        rendered = format_to(self.env, flavor, context, text, **options) + \
                   chrome_info_script(req)
        req.send(rendered.encode('utf-8'))
예제 #20
0
def render_item(self, req, model, pagename):
    creators = model.get_creators(pagename)
    field_value = model.get_item_all_fields_values(pagename)
    
    known_columns = ['volume', 'issue', 'publicationTitle', 'pages','title','date','abstractNote']
    field_value_dic_known = {}
    field_value_dic_other = []
    for iid, fid, value, itid, order, fn in field_value:
        if fn in known_columns:
            field_value_dic_known[fn] = [iid, fid, value, itid, order]
        else:
            field_value_dic_other.append([iid, fid, value, itid, order, fn])
    
    item = []
    date_columns = ['dateAdded','dateModified','key','firstCreator','year']
    item_date = model.get_item_columns_by_iids([pagename],date_columns)
    item_date = item_date[0]
    key = {}
    key['name'] = 'Cite Key:'
    cite_key = '[[ZotCite(' + item_date[3] + '(' +item_date[4]+item_date[5]+'))]]'
    key['value'] = cite_key.replace(' ', '')
    item.append(key)
    # for author
    author = {}
    author['name'] = 'Authors:'
    author['value'] = ''
    if creators:
        value = []
        for id, cid, f, l in creators:
            v = tag.a( l + ' ' + f, href = req.href.zotero('qjump',author=str(cid) ) )
            value.append(v)
            value.append(tag.span('; '))
        value.pop()
        author['value'] = tag.span( value )
    item.append(author)
    # title 
    title = {}
    title['name'] = 'Title:'
    title['value'] = ''
    if field_value_dic_known.has_key('title'):
        title['value'] = field_value_dic_known['title'][2]
    item.append(title)
    
    # publisher
    publisher = {}
    publisher['name'] = 'Publication:'
    value = []
    if field_value_dic_known.has_key('publicationTitle'):
        publicationTitle = field_value_dic_known['publicationTitle'][2]
        value.append(tag.a(publicationTitle,
            href=req.href.zotero('qjump',publisher=publicationTitle )))
    if field_value_dic_known.has_key('date'):  
        year = field_value_dic_known['date'][2]
        year = year[0:4]
        value.append(tag.span('. '))
        value.append(tag.a(year,
            href=req.href.zotero('qjump',year=year )))
    if field_value_dic_known.has_key('volume'):
        value.append( tag.span(', '+field_value_dic_known['volume'][2]))
    if field_value_dic_known.has_key('issue'):
        value.append( tag.span(' ('+field_value_dic_known['issue'][2], ')'))
    if field_value_dic_known.has_key('pages'):
        value.append( tag.span(': '+field_value_dic_known['pages'][2]))
    publisher['value'] =  tag.span(value)
    item.append(publisher)
    # abstract
    if field_value_dic_known.has_key('abstractNote'):
        abstract = {}
        abstract['name'] = 'Abstract:'
        abstract['value'] = format_to(self.env, [],
            Context.from_request(req, 'zotero'), 
            field_value_dic_known['abstractNote'][2])
        
        item.append(abstract)
    # other columns
    for iid, fid, value, itid, order, fn in field_value_dic_other:
        field = {}
        if zotero_fields_mapping_name.has_key(fn):
            field['name'] = zotero_fields_mapping_name[fn]['label'] + ':'
        else:
            field['name'] = fn + ':'
        if fn == 'url':
            field['value'] = tag.a(value, href=value)
        elif fn == 'DOI':
            field['value'] = tag.a(value, href='http://dx.doi.org/'+value)
        else:
            wiki_tag = format_to_oneliner(self.env,Context.from_request(req, 'zotero'), value)
            field['value'] = wiki_tag
            
        item.append(field)
    # for added and modified time
    # for added time
    add_date = {}
    add_date['name'] = 'Date Added:'
    add_date['value'] = item_date[1]
    item.append(add_date)
    # for modified time
    modified_date = {}
    modified_date['name'] = 'Modified:'
    modified_date['value'] = item_date[2]
    item.append(modified_date)
    # For attachment
    altype = self.env.config.get('zotero', 'attachmentlink','web' )

    att = model.get_items_attachments([pagename])

    if att:
        attachment = {}
        attachment['name'] = 'Attachment:'
        a_value = []
        for a in att:
            file_name = a[3]
            file_name = file_name[8:]
            href = 'zotero://attachment/'+ a[1]+'/'
            if altype == 'web':
                path = self.env.config.get('zotero', 'path' )
                
                href = req.href.chrome('site',path,'storage',a[4],file_name)
            if 'ZOTERO_ATTACHMENT' in req.perm:
                a_value.append(tag.a(file_name, href = href))
                a_value.append(tag.br())
            else:
                a_value.append(tag.span(file_name))
                a_value.append(tag.br())
        a_value.pop()
        attachment['value'] = tag.span( a_value )
        item.append(attachment)
    return item
예제 #21
0
    def render_timeline_event(self, context, field, event):
        changesets, message, show_location, show_files = event[3]
        rev_b, rev_a = changesets[0].rev, changesets[-1].rev
        
        if field == 'url':
            if rev_a == rev_b:
                return context.href.changeset(rev_a)
            else:
                return context.href.log(rev=rev_b, stop_rev=rev_a)
            
        elif field == 'description':
            if self.wiki_format_messages:
                markup = ''
                if self.timeline_long_messages: # override default flavor
                    context = context()
                    context.set_hints(wiki_flavor='html', 
                                      preserve_newlines=True)
            else:
                markup = message
                message = None
            if 'BROWSER_VIEW' in context.perm:
                files = []
                if show_location:
                    filestats = self._prepare_filestats()
                    for c in changesets:
                        for chg in c.get_changes():
                            filestats[chg[2]] += 1
                            files.append(chg[0])
                    stats = [(tag.div(class_=kind),
                              tag.span(count, ' ',
                                       count > 1 and
                                       (kind == 'copy' and
                                        'copies' or kind + 's') or kind))
                             for kind in Changeset.ALL_CHANGES
                             for count in (filestats[kind],) if count]
                    markup = tag.ul(
                        tag.li(stats, ' in ',
                               tag.strong(self._get_location(files) or '/')),
                        markup, class_="changes")
                elif show_files:
                    for c in changesets:
                        for chg in c.get_changes():
                            if show_files > 0 and len(files) > show_files:
                                break
                            files.append(tag.li(tag.div(class_=chg[2]),
                                                chg[0] or '/'))
                    if show_files > 0 and len(files) > show_files:
                        files = files[:show_files] + [tag.li(u'\u2026')]
                    markup = tag(tag.ul(files, class_="changes"), markup)
            if message:
                markup += format_to(self.env, None, context, message)
            return markup

        if rev_a == rev_b:
            title = tag('Changeset ', tag.em('[%s]' % rev_a))
        else:
            title = tag('Changesets ', tag.em('[', rev_a, '-', rev_b, ']'))
            
        if field == 'title':
            return title
        elif field == 'summary':
            return '%s: %s' % (title, shorten_line(message))