Exemplo n.º 1
0
 def filter_stream(self, req, method, filename, stream, data):
     if req.get_header("X-Moz") == "prefetch":
         return stream
     if filename == "ticket.html":
         if not self.check_permissions(req):
             return stream
         chrome = Chrome(self.env)
         filter = Transformer('//fieldset[@id="properties"]')
         # add a hidden div to hold the ticket_fields input
         snippet = tag.div(style="display:none;")
         snippet = tag.input(type="hidden", id="field-ticket_fields", name="field_ticket_fields", value=','.join(data['ticket_fields']))
         stream = stream | filter.after(snippet)
         if req.path_info != '/newticket':
             # insert the ticket field groups after the standard trac 'Change Properties' field group
             stream = stream | filter.after(chrome.render_template(req, 'ticket_fields_datatable.html', data, fragment=True))
     elif filename == "admin_enums.html":
         if not self.check_permissions(req) or not req.args.get('path_info'):
             return stream
         for k,v in {'cat_id':'ticket', 'panel_id':'type'}.iteritems():
             if k not in req.args or req.args.get(k) != v:
                 return stream
         if 'ticket_fields' in data:
             chrome = Chrome(self.env)
             filter = Transformer('//div[@class="buttons"]')
             # add a hidden div to hold the ticket_fields input
             snippet = tag.div(style="display:none;")
             snippet = tag.input(type="hidden", id="field-ticket_fields", name="field_ticket_fields", value=','.join(data['ticket_fields']))
             stream = stream | filter.before(snippet)
             stream = stream | filter.before(chrome.render_template(req, 'ticket_fields_datatable.html', data, fragment=True))
     return stream
Exemplo n.º 2
0
    def filter_stream(self, req, method, filename, stream, data):
        # Allow setting version for milestone
        if filename == 'milestone_edit.html':
            xformer = Transformer('//fieldset[1]')
            return stream | xformer.before(self._version_edit(data))

        # Display version for milestone
        elif filename == 'milestone_view.html':
            milestone = data.get('milestone').name
            xformer = Transformer('//div[@id="content" and '
                                  '      @class="milestone"]'
                                  '/div/p[@class="date"]')
            return stream | xformer.append(
                self._version_display(req, milestone))
        elif filename == 'roadmap.html':
            return self._milestone_versions(stream, req)
        elif filename == 'admin_milestones.html':
            if req.args['path_info']:
                xformer = Transformer('//fieldset/div[1]')
                return stream | xformer.after(self._version_edit(data))
            else:
                xformer = Transformer('//form[@id="addmilestone"]'
                                      '/fieldset/div[1]')
                return stream | xformer.after(self._version_edit(data))
        return stream
Exemplo n.º 3
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == 'ticket.html':
            ticket = data.get('ticket')
            if self.keywords and ticket and ticket.exists and \
               'TICKET_CHGPROP' in req.perm(ticket.resource):
                filter = Transformer('//fieldset[@id="properties"]')
                stream |= filter.after(self._render_template(req))
        elif filename == 'wiki_edit.html' and self.tagsplugin_enabled:
            filter = Transformer('//fieldset[@id="changeinfo"]')
            stream |= filter.after(self._render_template(req))

        return stream
Exemplo n.º 4
0
    def filter_stream(self, req, method, filename, stream, data):

        if req.path_info.startswith('/admin/ticket/components/'):
            trans = Transformer('//form[@id="edit"]/fieldset/div[1]')
            stream = stream | trans.after(
                self._parent_component_select(req, data))

        elif req.path_info.startswith('/admin/ticket/components'):
            # add a "parent component" column to the components table
            stream = stream | Transformer(
                '//table[@id="complist"]/thead/tr/th[3]').\
                after(html.th('Parent'))

            all_comp = {}
            for comp in [
                    comp.name for comp in model.Component.select(self.env)
            ]:
                parent_component = self._ChModel.get_parent_component(comp)
                if parent_component is None:
                    parent_component = ""
                all_comp[comp] = parent_component
            stream = stream | Transformer('//table[@id="complist"]//tr').apply(
                InsertParentTd("", all_comp))

        return stream
Exemplo n.º 5
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == 'browser.html' \
                and req.perm.has_permission('REPOSITORY_MODIFY'):
            self.log.debug('Extending TracBrowser')

            if self.include_jqueryui:
                add_stylesheet(
                    req, 'trac_browser_svn_ops/css/smoothness/jquery-ui.css')
                add_script(req, 'trac_browser_svn_ops/js/jquery-ui.js')

            add_stylesheet(req,
                           'trac_browser_svn_ops/css/trac_browser_ops.css')
            add_script(req, 'trac_browser_svn_ops/js/trac_browser_ops.js')

            # Insert browser operations elements when directory/file shown
            if data['dir']:
                data['max_upload_size'] = self.max_upload_size
                data['rename_only'] = self.rename_only

                # Insert upload dialog and move/delete dialog into div#main
                bsops_stream = Chrome(self.env).render_template(
                    req, 'trac_browser_ops.html', data, fragment=True)
                bsops_transf = Transformer('//div[@id="main"]')
                stream |= bsops_transf.append(
                    bsops_stream.select('//div[@class="bsop_dialog"]'))

                # Insert button bar after file/directory table
                bsops_stream = Chrome(self.env).render_template(
                    req, 'trac_browser_ops.html', data, fragment=True)
                bsops_transf = Transformer('//table[@id="dirlist"]')
                stream |= bsops_transf.after(
                    bsops_stream.select('//div[@id="bsop_buttons"]'))

        return stream
Exemplo n.º 6
0
    def filter_stream(self, req, method, filename, stream, data):
        # Get path
        if filename == 'browser.html':
            # self.req_han = SupoSERequestHandler()
            path = data.get('created_path')
            repo = self.env.get_repository(authname=req.authname)
            node = get_existing_node(req, repo, path, repo.youngest_rev)
            file = ""
            if node:
                if node.isfile:
                    file = posixpath.basename(path)
                    path = posixpath.dirname(path)

            #raise Exception( path )
            filter = Transformer('//div[@id="jumprev"]')
            search = tag.div( tag.form( 
            # tag.div( "Repository search" ),
                tag.input( type = "text", id = "suquery", 
                    name = "q", size = 13, value = ""),
                tag.input( type = "hidden", id = "suquerypath", 
                    name = "p", size = 13, value = path),
                tag.input( type = "hidden", id = "suqueryfile", 
                    name = "f", size = 13, value = file),
                tag.input( type = "submit", value="Repo Search"),
                action=req.href.reposearch(),
                method="get", id="reposearch" ) )
                
            
            return stream | filter.after(search)
        return stream
Exemplo n.º 7
0
 def filter_stream(self, req, method, filename, stream, data):
     if req.get_header("X-Moz") == "prefetch":
         return stream
     if filename == "ticket.html":
         if not self.check_permissions(req):
             return stream
         chrome = Chrome(self.env)
         filter = Transformer('//fieldset[@id="properties"]')
         # add a hidden div to hold the ticket_fields input
         snippet = tag.div(style="display:none;")
         snippet = tag.input(type="hidden",
                             id="field-ticket_fields",
                             name="field_ticket_fields",
                             value=','.join(data['ticket_fields']))
         stream = stream | filter.after(snippet)
         if req.path_info != '/newticket':
             # insert the ticket field groups after the standard trac 'Change Properties' field group
             stream = stream | filter.after(
                 chrome.render_template(req,
                                        'ticket_fields_datatable.html',
                                        data,
                                        fragment=True))
     elif filename == "admin_enums.html":
         if not self.check_permissions(req) or not req.args.get(
                 'path_info'):
             return stream
         for k, v in {'cat_id': 'ticket', 'panel_id': 'type'}.iteritems():
             if k not in req.args or req.args.get(k) != v:
                 return stream
         if 'ticket_fields' in data:
             chrome = Chrome(self.env)
             filter = Transformer('//div[@class="buttons"]')
             # add a hidden div to hold the ticket_fields input
             snippet = tag.div(style="display:none;")
             snippet = tag.input(type="hidden",
                                 id="field-ticket_fields",
                                 name="field_ticket_fields",
                                 value=','.join(data['ticket_fields']))
             stream = stream | filter.before(snippet)
             stream = stream | filter.before(
                 chrome.render_template(req,
                                        'ticket_fields_datatable.html',
                                        data,
                                        fragment=True))
     return stream
Exemplo n.º 8
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == "ticket.html":
            filter = Transformer('//fieldset[@id="properties"]')

            field_groups = data.get('field_groups')
            for group in field_groups:
                stream = stream | filter.after(self._field_group(req, group))

        return stream
Exemplo n.º 9
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == "ticket.html":
            filter = Transformer('//fieldset[@id="properties"]')

            field_groups = data.get('field_groups')
            for group in field_groups:
                stream = stream | filter.after(self._field_group(req, group))

        return stream
Exemplo n.º 10
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename == "ticket.html" and req.get_header("X-Moz") != "prefetch":
         chrome = Chrome(self.env)
         # append the ticket fields to the end of the standard trac ticket box
         filter = Transformer('//div[@id="ticket"]')
         stream = stream | filter.append(chrome.render_template(req, 'fieldgroups_ticket_box.html', data, fragment=True))
         # insert the ticket field groups after the standard trac 'Change Properties' field group
         filter = Transformer('//fieldset[@id="properties"]')
         stream = stream | filter.after(chrome.render_template(req, 'fieldgroups_properties.html', data, fragment=True))
         #filter = Transformer('//fieldset[@id="action"]')
         #stream = stream | filter.before(chrome.render_template(req, 'fieldgroups_properties.html', data, fragment=True))
     return stream
Exemplo n.º 11
0
 def filter_stream(self, req, method, filename, stream, data):
     if 'ticket' in data and 'remote_sites' in data:
         add_script(req, 'tracremoteticket/js/remoteticket.js')
         
         transf = Transformer('//select[@id="linked-end"]')
         label = tag.label(' in ', for_='remote-site')
         local = tag.option('this project', value=req.href.newticket(),
                            selected='selected')
         remotes = [tag.option(rs['title'], 
                               value=Href(rs['url']).newticket())
                    for rs in data['remote_sites']]
         select = tag.select([local] + remotes, id='remote-site')
         content = label + select
         stream |= transf.after(content)
         
     return stream
Exemplo n.º 12
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename == "ticket.html" and req.get_header("X-Moz") != "prefetch":
         chrome = Chrome(self.env)
         # append the ticket fields to the end of the standard trac ticket box
         filter = Transformer('//div[@id="ticket"]')
         stream = stream | filter.append(
             chrome.render_template(
                 req, 'fieldgroups_ticket_box.html', data, fragment=True))
         # insert the ticket field groups after the standard trac 'Change Properties' field group
         filter = Transformer('//fieldset[@id="properties"]')
         stream = stream | filter.after(
             chrome.render_template(
                 req, 'fieldgroups_properties.html', data, fragment=True))
         #filter = Transformer('//fieldset[@id="action"]')
         #stream = stream | filter.before(chrome.render_template(req, 'fieldgroups_properties.html', data, fragment=True))
     return stream
Exemplo n.º 13
0
 def filter_stream(self, req, method, filename, stream, data):
     if filename == 'browser.html' \
             and req.perm.has_permission('REPOSITORY_MODIFY'):
         self.log.debug('Extending TracBrowser')
         
         if self.include_jqueryui:
             add_stylesheet(req, 
                     'trac_browser_svn_ops/css/smoothness/jquery-ui.css')
             add_script(req, 'trac_browser_svn_ops/js/jquery-ui.js') 
         
         add_stylesheet(req, 
                        'trac_browser_svn_ops/css/trac_browser_ops.css')
         add_script(req, 'trac_browser_svn_ops/js/trac_browser_ops.js')
         
         # Insert browser operations elements when directory/file shown
         if data['dir']:
             data['max_upload_size'] = self.max_upload_size
             data['rename_only'] = self.rename_only
             
             # Insert upload dialog and move/delete dialog into div#main
             bsops_stream = Chrome(self.env).render_template(req,
                     'trac_browser_ops.html', data, fragment=True)
             bsops_transf = Transformer('//div[@id="main"]')
             stream |=  bsops_transf.append(
                     bsops_stream.select('//div[@class="bsop_dialog"]')
                     )
             
             # Insert button bar after file/directory table
             bsops_stream = Chrome(self.env).render_template(req,
                     'trac_browser_ops.html', data, fragment=True)
             bsops_transf = Transformer('//table[@id="dirlist"]')
             stream |=  bsops_transf.after(
                     bsops_stream.select('//div[@id="bsop_buttons"]')
                     )
             
     return stream
Exemplo n.º 14
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == "smp_admin_components.html" and data.get('component'):
            filter = Transformer('//form[@id="modcomp"]/fieldset/div[1]')
            return stream | filter.after(self.__edit_project(data))

        return stream
Exemplo n.º 15
0
    def filter_stream(self, req, method, filename, stream, data):
        if filename == "smp_admin_components.html" and data.get('component'):
            filter = Transformer('//form[@id="modcomp"]/fieldset/div[1]')
            return stream | filter.after(self.__edit_project(data))

        return stream