@@ -336,6 +336,55 @@ def _get_data_diff_text(self, oldfile, newfile):
336
336
"""
337
337
return []
338
338
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
+
339
388
def get_templates (self , contenttype = None ):
340
389
"""create a list of templates (for some specific contenttype)"""
341
390
terms = [
0 commit comments