@@ -336,6 +336,55 @@ def _get_data_diff_text(self, oldfile, newfile):
336336 """
337337 return []
338338
339+ def _render_data_slide (self , preview = None ):
340+ try :
341+ from moin .converters import default_registry as reg
342+
343+ doc = self .internal_representation (preview = preview )
344+ doc = self ._expand_document (doc )
345+
346+ slide_pages = []
347+ before_first_header = True
348+ for elem1 in doc :
349+ single_slide = []
350+ for element in elem1 :
351+ if element .tag .name == "h" and element .get (moin_page ("outline-level" )) in ["1" , "2" ]:
352+ if before_first_header :
353+ before_first_header = False # ignore everything before
354+ else :
355+ slide_pages .append (single_slide )
356+ single_slide = []
357+ single_slide .append (element )
358+ slide_pages .append (single_slide )
359+ print (f"{ len (slide_pages )} slides found." )
360+
361+ flaskg .clock .start ("conv_dom_html" )
362+ html_conv = reg .get (type_moin_document , Type ("application/x-xhtml-moin-page" ))
363+
364+ slide_content = []
365+ attrib = {moin_page .class_ : "moin-slides" }
366+ for slide in slide_pages :
367+ slide_content .append (moin_page .div (attrib = attrib , children = slide ))
368+
369+ body = moin_page .body (children = slide_content )
370+ root = moin_page .page (children = [body ])
371+ doc = html_conv (root )
372+ rendered_data = conv_serialize (doc , {html .namespace : "" })
373+ flaskg .clock .stop ("conv_dom_html" )
374+
375+ except Exception :
376+ # we really want to make sure that invalid data or a malfunctioning
377+ # converter does not crash the item view (otherwise a user might
378+ # not be able to fix it from the UI).
379+ error_id = uuid .uuid4 ()
380+ logging .exception (f"An exception happened in _render_data (error_id = { error_id } ):" )
381+ rendered_data = [
382+ render_template (
383+ "crash.html" , server_time = time .strftime ("%Y-%m-%d %H:%M:%S %Z" ), url = request .url , error_id = error_id
384+ )
385+ ]
386+ return rendered_data
387+
339388 def get_templates (self , contenttype = None ):
340389 """create a list of templates (for some specific contenttype)"""
341390 terms = [
0 commit comments