From: Vladimír Vondruš Date: Mon, 11 Sep 2017 15:18:30 +0000 (+0200) Subject: m.images: add outer
with all classes if the image has a target. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=07bc43a62d8619899819d9f15cc3a36e666982e3;p=blog.git m.images: add outer
with all classes if the image has a target. To match the expectations of m.css. --- diff --git a/pelican-plugins/m/images.py b/pelican-plugins/m/images.py index fe9d1c28..db12467d 100644 --- a/pelican-plugins/m/images.py +++ b/pelican-plugins/m/images.py @@ -30,6 +30,8 @@ class Image(Directive): - the align, scale, width, height options removed (handled better by m.css) - .m-image CSS class added + - adding a outer container for clickable image to make the clickable area + cover only the image """ required_arguments = 1 @@ -40,6 +42,8 @@ class Image(Directive): 'class': directives.class_option, 'target': directives.unchanged_required} + image_class = 'm-image' + def run(self): messages = [] reference = directives.uri(self.arguments[0]) @@ -63,16 +67,26 @@ class Image(Directive): messages.append(data) # data is a system message del self.options['target'] - # Add some sane default class to the image + # Remove the classes from the image element, will be added either to it + # or to the wrapping element later set_classes(self.options) - self.options.setdefault('classes', []).append('m-image') - + classes = self.options.get('classes', []) + if 'classes' in self.options: del self.options['classes'] image_node = nodes.image(self.block_text, **self.options) + self.add_name(image_node) if reference_node: - reference_node += image_node - return messages + [reference_node] + if self.image_class: + container_node = nodes.container() + container_node['classes'] += [self.image_class] + classes + reference_node += image_node + container_node += reference_node + return messages + [container_node] + else: + reference_node += image_node + return messages + [reference_node] else: + if self.image_class: image_node['classes'] += [self.image_class] + classes return messages + [image_node] class ImageGrid(rst.Directive):