1.1 --- a/macros/SharedContent.py Tue Jul 09 18:44:27 2013 +0200
1.2 +++ b/macros/SharedContent.py Wed Jul 10 18:08:15 2013 +0200
1.3 @@ -9,11 +9,10 @@
1.4 from DateSupport import getDateTimeFromISO8601, DateTime
1.5 from MoinMoin.Page import Page
1.6 from MoinRemoteSupport import *
1.7 -from MoinSupport import parseMacroArguments, getParsersForContentType, \
1.8 - formatText, formatTextForOutputType
1.9 +from MoinSupport import parseMacroArguments
1.10 from MoinShare import getUpdateSources, getUpdatesFromPage, \
1.11 - getUpdatesFromStore, getUpdateFromPart, \
1.12 - Update, get_make_parser
1.13 + getUpdatesFromStore, formatUpdate, \
1.14 + Update
1.15 from email.utils import parsedate
1.16 import xml.dom.pulldom
1.17
1.18 @@ -208,122 +207,6 @@
1.19
1.20 return (feed_type, channel_title, channel_link), feed_updates
1.21
1.22 -# Update formatting.
1.23 -
1.24 -def getUpdatesForFormatting(update):
1.25 -
1.26 - "Get a list of updates for formatting given 'update'."
1.27 -
1.28 - updates = []
1.29 -
1.30 - # Handle multipart/alternative.
1.31 -
1.32 - if update.parts:
1.33 - for n, part in enumerate(update.parts):
1.34 - update_part = getUpdateFromPart(update, part, n)
1.35 - updates += getUpdatesForFormatting(update_part)
1.36 - else:
1.37 - updates.append(update)
1.38 -
1.39 - return updates
1.40 -
1.41 -def getFormattedUpdate(update, request, fmt):
1.42 -
1.43 - """
1.44 - Return the formatted form of the given 'update' using the given 'request'
1.45 - and 'fmt'.
1.46 - """
1.47 -
1.48 - # NOTE: Some control over the HTML and XHTML should be exercised.
1.49 -
1.50 - if update.content:
1.51 - if update.content_type == "text/html" and update.message_number is not None:
1.52 - parsers = [get_make_parser(update.page, update.message_number)]
1.53 - else:
1.54 - parsers = getParsersForContentType(request.cfg, update.content_type)
1.55 -
1.56 - if parsers:
1.57 - for parser_cls in parsers:
1.58 - if hasattr(parser_cls, "formatForOutputType"):
1.59 - return formatTextForOutputType(update.content, request, parser_cls, "text/html")
1.60 - else:
1.61 - return formatText(update.content, request, fmt, parser_cls=parser_cls)
1.62 - break
1.63 - else:
1.64 - return None
1.65 - else:
1.66 - return None
1.67 -
1.68 -def formatUpdate(update, request, fmt):
1.69 -
1.70 - "Format the given 'update' using the given 'request' and 'fmt'."
1.71 -
1.72 - result = []
1.73 - append = result.append
1.74 -
1.75 - updates = getUpdatesForFormatting(update)
1.76 - single = len(updates) == 1
1.77 -
1.78 - # Format some navigation tabs.
1.79 -
1.80 - if not single:
1.81 - append(fmt.div(on=1, css_class="moinshare-alternatives"))
1.82 -
1.83 - first = True
1.84 -
1.85 - for update_part in updates:
1.86 - append(fmt.url(1, "#%s" % update_part.unique_id()))
1.87 - append(fmt.text(update_part.content_type))
1.88 - append(fmt.url(0))
1.89 -
1.90 - first = False
1.91 -
1.92 - append(fmt.div(on=0))
1.93 -
1.94 - # Format the content.
1.95 -
1.96 - first = True
1.97 -
1.98 - for update_part in updates:
1.99 -
1.100 - # Encapsulate each alternative if many exist.
1.101 -
1.102 - if not single:
1.103 - css_class = first and "moinshare-default" or "moinshare-other"
1.104 - append(fmt.div(on=1, css_class="moinshare-alternative %s" % css_class, id=update_part.unique_id()))
1.105 -
1.106 - # Include the content.
1.107 -
1.108 - append(formatUpdatePart(update_part, request, fmt))
1.109 -
1.110 - if not single:
1.111 - append(fmt.div(on=0))
1.112 -
1.113 - first = False
1.114 -
1.115 - return "".join(result)
1.116 -
1.117 -def formatUpdatePart(update, request, fmt):
1.118 -
1.119 - "Format the given 'update' using the given 'request' and 'fmt'."
1.120 -
1.121 - _ = request.getText
1.122 -
1.123 - result = []
1.124 - append = result.append
1.125 -
1.126 - # Encapsulate the content.
1.127 -
1.128 - append(fmt.div(on=1, css_class="moinshare-content"))
1.129 - text = getFormattedUpdate(update, request, fmt)
1.130 - if text:
1.131 - append(text)
1.132 - else:
1.133 - append(fmt.text(_("Update cannot be shown for content of type %s.") % update.content_type))
1.134 - append(fmt.div(on=0))
1.135 -
1.136 - return "".join(result)
1.137 -
1.138 # The macro itself.
1.139
1.140 def execute(macro, args):