ChristianBoos: wiki2x_in_templates.diff
| File wiki2x_in_templates.diff, 55.5 kB (added by cboos, 22 months ago) |
|---|
-
trac/attachment.py
34 34 from trac.web import HTTPBadRequest, IRequestHandler 35 35 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 36 36 from trac.wiki.api import IWikiSyntaxProvider 37 from trac.wiki.formatter import wiki_to_html, wiki_to_oneliner38 37 39 38 40 39 class InvalidAttachment(TracError): … … 254 253 return fd 255 254 256 255 257 # Templating utilities258 259 def attachments_data(env, req, db, parent_type, parent_id):260 return [attachment_data(env, req, db, attachment) for attachment261 in Attachment.select(env, parent_type, parent_id, db)]262 263 def attachment_data(env, req, db, attachment):264 # FIXME: pretty close to the attachment itself... so pass directly265 # the attachment266 if not db:267 db = env.get_db_cnx()268 description = wiki_to_oneliner(attachment.description, env, db)269 return {270 'filename': attachment.filename,271 'description': Markup(description.strip()),272 'author': attachment.author,273 'ipnr': attachment.ipnr,274 'size': attachment.size,275 'date': attachment.time,276 'href': attachment.href(req)277 }278 279 280 256 class AttachmentModule(Component): 281 257 282 258 implements(IEnvironmentSetupParticipant, IRequestHandler, … … 363 339 data = { 364 340 'mode': 'list', 365 341 'parent': parent_data(parent_type, last_segment), 366 'attachments': attachments_data(self.env, req, None,367 parent_type, last_segment),342 'attachments': Attachment.select(self.env, 343 parent_type, last_segment) 368 344 } 369 345 return 'attachment.html', data, None 370 346 if not last_segment: … … 426 402 self.get_history(start, stop, type): 427 403 title = html(html.EM(os.path.basename(filename)), 428 404 ' attached to ', display(id)) 429 if format == 'rss': 430 descr = wiki_to_html(descr or '--', self.env, req, db, 431 absurls=True) 432 href = req.abs_href 433 else: 434 descr = wiki_to_oneliner(descr, self.env, db, shorten=True) 435 title += Markup(' by %s', author) 436 href = req.href 437 yield('attachment', href.attachment(type, id, filename), title, 405 yield('attachment', req.href.attachment(type, id, filename), title, 438 406 time, author, descr) 439 407 440 408 # Internal methods … … 533 501 534 502 req.check_modified(attachment.time) 535 503 536 # Render HTML view537 att_data = attachment_data(self.env, req, None, attachment)538 # Override the 'oneliner'539 att_data['description'] = wiki_to_html(attachment.description,540 self.env, req)541 542 504 data = {'mode': 'view', 'title': attachment.title, 543 'attachment': att _data}505 'attachment': attachment} 544 506 545 507 perm_map = {'ticket': 'TICKET_ADMIN', 'wiki': 'WIKI_DELETE'} 546 508 if req.perm.has_permission(perm_map[attachment.parent_type]): -
trac/ticket/web_ui.py
19 19 from StringIO import StringIO 20 20 import time 21 21 22 from trac.attachment import attachments_data,Attachment, AttachmentModule22 from trac.attachment import Attachment, AttachmentModule 23 23 from trac.config import BoolOption, Option 24 24 from trac.core import * 25 25 from trac.ticket import Milestone, Ticket, TicketSystem, ITicketManipulator … … 31 31 from trac.web import IRequestHandler 32 32 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor, \ 33 33 Chrome 34 from trac.wiki import wiki_to_html, wiki_to_oneliner35 34 from trac.mimeview.api import Mimeview, IContentConverter 35 from trac.wiki import wiki_to_html, wiki_to_oneliner 36 36 37 37 38 38 class InvalidTicket(TracError): … … 107 107 ticket.values['reporter'] = get_reporter_id(req, 'reporter') 108 108 data['ticket'] = ticket 109 109 110 if 'description' in ticket.values:111 description = wiki_to_html(ticket['description'], self.env, req, db)112 data['preview'] = description113 114 110 field_names = [field['name'] for field in ticket.fields 115 111 if not field.get('custom')] 116 112 if 'owner' in field_names: … … 265 261 comment = req.args.get('comment') 266 262 if comment: 267 263 data['comment'] = comment 268 # Wiki format a preview of comment 269 data['preview'] = wiki_to_html(comment, self.env, req, db) 264 data['preview'] = True 270 265 else: 271 266 data['reassign_owner'] = req.authname 272 267 # Store a timestamp in order to detect "mid air collisions" … … 445 440 change_summary = {} 446 441 # wikify comment 447 442 if 'comment' in change: 448 comment = change['comment']449 change['comment'] = unicode(wiki_to_html(450 comment, self.env, req, db, absurls=True))451 443 change_summary['added'] = ['comment'] 452 444 for field, values in change['fields'].iteritems(): 453 445 if field == 'description': … … 462 454 change['title'] = '; '.join(['%s %s' % (', '.join(v), k) for k, v \ 463 455 in change_summary.iteritems()]) 464 456 465 data = { 466 'id': ticket.id, 467 'description': wiki_to_html(ticket['description'], self.env, req, 468 db, absurls=True), 469 'changes': changes, 470 } 457 data = {'ticket': ticket, 'changes': changes} 471 458 472 459 template = Chrome(self.env).load_template('ticket.rss', req, data) 473 460 return template.generate(**data).render('xml'), 'application/rss+xml' … … 558 545 data['fields'].append(field) 559 546 560 547 data['reporter_id'] = reporter_id 561 data['description'] = wiki_to_html(ticket['description'], self.env, req,562 db)563 548 564 549 # FIXME: get rid of this once datetime branch is merged 565 550 data['opened'] = ticket.time_created … … 587 572 comment = '' 588 573 if 'comment' in change: 589 574 comment = change['comment'] 590 change['comment'] = wiki_to_html(comment, self.env, req, db)591 575 if change['permanent']: 592 576 cnum = change['cnum'] 593 577 # keep track of replies threading … … 611 595 612 596 # -- Ticket Attachments 613 597 614 data['attachments'] = attachments_data(self.env, req, db, 'ticket',615 ticket.id)598 data['attachments'] = Attachment.select(self.env, 'ticket', ticket.id, 599 db) 616 600 if req.perm.has_permission('TICKET_APPEND'): 617 601 data['attach_href'] = req.href.attachment('ticket', ticket.id) 618 602 -
trac/ticket/report.py
27 27 from trac.util.html import html 28 28 from trac.web.api import IRequestHandler, RequestDone 29 29 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 30 from trac.wiki import wiki_to_html,IWikiSyntaxProvider, Formatter30 from trac.wiki import IWikiSyntaxProvider, Formatter 31 31 32 32 33 33 class ReportModule(Component): … … 232 232 title = '{%i} %s' % (id, title) 233 233 234 234 data = {'action': 'view', 'title': title, 235 'report': 236 {'id': id, 'title': title, 237 'description': wiki_to_html(description, self.env, req, db, 238 absurls=(format == 'rss')), 239 'can': perms}} 240 235 'report': {'id': id, 'title': title, 236 'description': description, 'can': perms}} 241 237 try: 242 238 cols, results = self.execute_report(req, db, id, sql, args) 243 239 except Exception, e: … … 318 314 row['id'] = value 319 315 # Special casing based on column name 320 316 col = col.strip('_') 321 if col == 'description': 322 cell['parsed'] = wiki_to_html(value, self.env, req, db, 323 absurls=(format == 'rss')) 324 elif col == 'reporter': 317 if col == 'reporter': 325 318 if '@' in value: 326 319 cell['author'] = value 327 320 elif value in email_map: -
trac/ticket/roadmap.py
29 29 from trac.Timeline import ITimelineEventProvider 30 30 from trac.web import IRequestHandler 31 31 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 32 from trac.wiki import wiki_to_html, wiki_to_oneliner,IWikiSyntaxProvider32 from trac.wiki import IWikiSyntaxProvider 33 33 34 34 35 35 def get_tickets_for_milestone(env, db, milestone, field='component'): … … 87 87 } 88 88 89 89 def milestone_to_hdf(env, db, req, milestone): 90 ### FIXME: should use the Milestone object directly 90 91 safe_name = None 91 92 if milestone.exists: 92 93 safe_name = milestone.name.replace('/', '%2F') 93 94 hdf = {'name': milestone.name, 'exists': milestone.exists, 94 95 'href': req.href.milestone(safe_name)} 95 96 if milestone.description: 96 hdf['description_source'] = milestone.description 97 hdf['description'] = wiki_to_html(milestone.description, env, req, db) 97 hdf['description'] = milestone.description 98 98 if milestone.due: 99 99 hdf['due'] = milestone.due 100 100 hdf['due_date'] = format_date(milestone.due) … … 317 317 (start, stop,)) 318 318 for completed, name, description in cursor: 319 319 title = Markup('Milestone <em>%s</em> completed', name) 320 if format == 'rss': 321 href = req.abs_href.milestone(name) 322 message = wiki_to_html(description, self.env, req, db, 323 absurls=True) 324 else: 325 href = req.href.milestone(name) 326 message = wiki_to_oneliner(description, self.env, db, 327 shorten=True) 328 yield 'milestone', href, title, completed, None, message or '--' 320 yield 'milestone', href, title, completed, None, description 329 321 330 322 # IRequestHandler methods 331 323 -
trac/ticket/query.py
29 29 from trac.web.chrome import add_link, add_script, add_stylesheet, \ 30 30 INavigationContributor, Chrome 31 31 from trac.wiki.api import IWikiSyntaxProvider, parse_args 32 from trac.wiki.formatter import wiki_to_html, wiki_to_oneliner33 32 from trac.wiki.macros import WikiMacroBase # TODO: should be moved in .api 34 33 from trac.mimeview.api import Mimeview, IContentConverter 35 34 … … 405 404 groups.setdefault(value, []).append(ticket) 406 405 if not groupsequence or groupsequence[-1] != value: 407 406 groupsequence.append(value) 408 if field == 'time': 409 ticket[field] = value 410 elif field == 'description': 411 ticket[field] = \ 412 wiki_to_html(value or '', self.env, req, db) 413 else: 414 ticket[field] = value 407 ticket[field] = value 415 408 groupsequence = [(value, groups[value]) for value in groupsequence] 416 409 417 410 return {'query': self, … … 639 632 for result in results: 640 633 if result['reporter'].find('@') == -1: 641 634 result['reporter'] = '' 642 if result['description']:643 result['description'] = wiki_to_html(result['description'],644 self.env, req, db,645 absurls=True)646 635 query_href = req.abs_href.query(group=query.group, 647 636 groupdesc=query.groupdesc and 1 or None, 648 637 verbose=query.verbose and 1 or None, -
trac/versioncontrol/web_ui/util.py
24 24 from trac.util.html import escape, html, Markup 25 25 from trac.util.text import shorten_line 26 26 from trac.versioncontrol.api import NoSuchNode, NoSuchChangeset 27 from trac.wiki import wiki_to_html, wiki_to_oneliner28 27 29 28 __all__ = ['get_changes', 'get_path_links', 'get_path_rev_line', 30 29 'get_existing_node', 'render_node_property'] … … 41 40 42 41 wiki_format = env.config['changeset'].getbool('wiki_format_messages') 43 42 message = changeset.message or '--' 44 absurls = (format == 'rss') 45 if wiki_format: 46 shortlog = wiki_to_oneliner(message, env, db, 47 shorten=True, absurls=absurls) 48 else: 43 if not wiki_format: 49 44 shortlog = Markup.escape(shorten_line(message)) 45 else: 46 shortlog = message 50 47 51 48 if full: 52 if wiki_format: 53 message = wiki_to_html(message, env, req, db, 54 absurls=absurls, escape_newlines=True) 55 else: 49 if not wiki_format: 56 50 message = html.PRE(message) 57 51 else: 58 52 message = shortlog 59 53 60 if format == 'rss':61 if isinstance(shortlog, Markup):62 shortlog = u' '.join(shortlog.striptags().splitlines())63 message = unicode(message)64 65 54 changes[rev] = { 66 55 'date_seconds': changeset.date, 67 56 'date': format_datetime(changeset.date), 68 57 'age': pretty_timedelta(changeset.date), 69 58 'author': changeset.author or 'anonymous', 70 'message': message, 'shortlog': shortlog, 59 'message': message, 60 'shortlog': shortlog, 71 61 } 72 62 return changes 73 63 -
trac/versioncontrol/web_ui/changeset.py
39 39 from trac.versioncontrol.web_ui.util import render_node_property 40 40 from trac.web import IRequestHandler, RequestDone 41 41 from trac.web.chrome import INavigationContributor, add_link, add_stylesheet 42 from trac.wiki import wiki_to_html, wiki_to_oneliner, IWikiSyntaxProvider, \ 43 Formatter 42 from trac.wiki import IWikiSyntaxProvider, Formatter 44 43 45 44 46 45 class ChangesetModule(Component): … … 202 201 if chgset: 203 202 chgset = repos.get_changeset(new) 204 203 message = chgset.message or '--' 205 if self.wiki_format_messages: 206 message = wiki_to_html(message, self.env, req, 207 escape_newlines=True) 208 else: 204 if not self.wiki_format_messages: 209 205 message = html.PRE(message) 210 206 req.check_modified(chgset.date, [ 211 207 style, ''.join(options), repos.name, … … 293 289 title = _changeset_title(rev) 294 290 properties = [] 295 291 for name, value, wikiflag, htmlclass in chgset.get_properties(): 296 if wikiflag:297 value = wiki_to_html(value or '', self.env, req)298 292 properties.append({'name': name, 'value': value, 299 'htmlclass': htmlclass}) 293 'htmlclass': htmlclass, 294 'wiki_formatting': wikiflag}) 300 295 301 296 data['changeset'] = { 302 297 'revision': chgset.rev, … … 619 614 repos = self.env.get_repository(req.authname) 620 615 for chgset in repos.get_changesets(start, stop): 621 616 message = chgset.message or '--' 622 if wiki_format: 623 shortlog = wiki_to_oneliner(message, self.env, db, 624 shorten=True) 625 else: 617 if not wiki_format: 626 618 shortlog = shorten_line(message) 627 619 628 620 if format == 'rss': 629 621 title = Markup('Changeset [%s]: %s', chgset.rev, shortlog) 630 622 href = req.abs_href.changeset(chgset.rev) 631 if wiki_format: 632 message = wiki_to_html(message, self.env, req, db, 633 absurls=True) 634 else: 623 if not wiki_format: 635 624 message = html.PRE(message) 636 625 else: 637 626 title = Markup('Changeset <em>[%s]</em> by %s', chgset.rev, … … 639 628 href = req.href.changeset(chgset.rev) 640 629 641 630 if wiki_format: 631 # FIXME: 642 632 if self.timeline_long_messages: 643 message = wiki_to_html(message, self.env, req, db, 644 absurls=True) 645 else: 646 message = wiki_to_oneliner(message, self.env, db, 647 shorten=True) 633 pass 634 # FIXME: should set the shorten flag on the event, 635 # see timeline.html 648 636 else: 649 message = shortlog637 message = Markup.escape(shortlog) 650 638 651 639 if show_files and req.perm.has_permission('BROWSER_VIEW'): 652 640 files = [] -
trac/versioncontrol/web_ui/browser.py
27 27 from trac.util import sorted, embedded_numbers 28 28 from trac.util.datefmt import http_date 29 29 from trac.util.html import escape, html, Markup 30 from trac.web import IRequestHandler, RequestDone31 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor32 from trac.wiki import wiki_to_html, IWikiSyntaxProvider33 30 from trac.versioncontrol.api import NoSuchChangeset 34 31 from trac.versioncontrol.web_ui.util import * 32 from trac.web.api import IRequestHandler, RequestDone 33 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 34 from trac.wiki.api import IWikiSyntaxProvider 35 35 36 36 37 37 CHUNK_SIZE = 4096 … … 204 204 changeset = repos.get_changeset(node.rev) 205 205 206 206 message = changeset.message or '--' 207 if self.config['changeset'].getbool('wiki_format_messages'): 208 message = wiki_to_html(message, self.env, req, 209 escape_newlines=True) 210 else: 207 if not self.config['changeset'].getbool('wiki_format_messages'): 211 208 message = html.PRE(message) 212 209 213 210 # add ''Plain Text'' alternate link if needed -
trac/About.py
95 95 96 96 def _render_plugins(self, req): 97 97 try: 98 from trac.wiki.formatter import wiki_to_html99 98 import inspect 100 99 def getdoc(obj): 101 return wiki_to_html(inspect.getdoc(obj), self.env, req)100 return inspect.getdoc(obj) 102 101 except: 103 102 def getdoc(obj): 104 103 return obj.__doc__ … … 112 111 continue 113 112 plugin = {'name': component.__name__} 114 113 if component.__doc__: 115 plugin['description'] = Markup(getdoc(component))114 plugin['description'] = getdoc(component) 116 115 117 116 module = sys.modules[component.__module__] 118 117 plugin['module'] = module.__name__ … … 128 127 'interface': xtnpt.interface.__name__, 129 128 'module': xtnpt.interface.__module__}) 130 129 if xtnpt.interface.__doc__: 131 xtnpts[-1]['description'] = Markup(getdoc(xtnpt.interface))130 xtnpts[-1]['description'] = getdoc(xtnpt.interface) 132 131 extensions = [] 133 132 for extension in ComponentMeta._registry.get(xtnpt.interface, []): 134 133 if self.env.is_component_enabled(extension): -
trac/wiki/web_ui.py
20 20 import re 21 21 import StringIO 22 22 23 from trac.attachment import attachments_data,Attachment, AttachmentModule23 from trac.attachment import Attachment, AttachmentModule 24 24 from trac.core import * 25 25 from trac.perm import IPermissionRequestor 26 26 from trac.Search import ISearchSource, search_to_sql, shorten_result … … 33 33 from trac.web import HTTPNotFound, IRequestHandler 34 34 from trac.wiki.api import IWikiPageManipulator, WikiSystem 35 35 from trac.wiki.model import WikiPage 36 from trac.wiki.formatter import wiki_to_html, wiki_to_oneliner37 36 from trac.mimeview.api import Mimeview, IContentConverter 38 37 39 38 … … 243 242 if version == new_version: 244 243 date = t 245 244 author = a or 'anonymous' 246 comment = wiki_to_html(c or '--', self.env, req, db)245 comment = c 247 246 ipnr = i or '' 248 247 else: 249 248 if version < new_version: … … 335 334 'edit_rows': editrows, 336 335 'scroll_bar_pos': req.args.get('scroll_bar_pos', '') 337 336 }) 338 if action == 'preview':339 data.update({340 'page_html': wiki_to_html(page.text, self.env, req, db),341 'comment_html': wiki_to_oneliner(comment, self.env, db)342 })343 337 return 'wiki_edit.html', data, None 344 338 345 339 def _render_history(self, req, db, page): … … 361 355 'version': version, 362 356 'date': date, 363 357 'author': author, 364 'comment': wiki_to_oneliner(comment or '', self.env, db),358 'comment': comment, 365 359 'ipnr': ipnr 366 360 }) 367 361 data['history'] = history … … 384 378 if page.name == 'WikiStart': 385 379 data['title'] = '' 386 380 387 page_html = comment_html =attach_href = ''381 attach_href = '' 388 382 latest_page = WikiPage(self.env, page.name) 389 383 390 if page.exists: 391 page_html = wiki_to_html(page.text, self.env, req, db) 392 if version: 393 comment_html = wiki_to_oneliner(page.comment or '--', 394 self.env, db) 395 else: 384 if not page.exists: 396 385 if not req.perm.has_permission('WIKI_CREATE'): 397 386 raise HTTPNotFound('Page %s not found', page.name) 398 page _html = html.P('Describe "%s" here' % data['page_name'])387 page.text = 'Describe "`%s`" here' % data['page_name'] 399 388 400 389 # Show attachments 401 attachments = attachments_data(self.env, req, db, 'wiki', page.name)390 attachments = Attachment.select(self.env, 'wiki', page.name, db) 402 391 if req.perm.has_permission('WIKI_MODIFY'): 403 392 attach_href = req.href.attachment('wiki', page.name) 404 393 405 394 data.update({'action': 'view', 406 'page_html': page_html, 407 'comment_html': comment_html, 395 'version': version, 408 396 'latest_version': latest_page.version, 409 397 'attachments': attachments, 410 398 'attach_href': attach_href, … … 432 420 for t,name,comment,author,version in cursor: 433 421 title = Markup('<em>%s</em> edited by %s', 434 422 wiki.format_page_name(name), author) 435 diff_link = html.A('diff', href=href.wiki(name, action='diff',436 version=version))437 if format == 'rss':438 comment = wiki_to_html(comment or '--', self.env, req, db,439 absurls=True)440 else:441 comment = wiki_to_oneliner(comment, self.env, db,442 shorten=True)443 423 if version > 1: 444 comment = html(comment, ' (', diff_link, ')') 445 yield 'wiki', href.wiki(name), title, t, author, comment 424 link = href.wiki(name, action='diff', version=version) 425 else: 426 link = href.wiki(name) 427 yield 'wiki', link, title, t, author, comment 446 428 447 429 # Attachments 448 430 def display(id):
