Generate poster for events
This commit is contained in:
parent
83cfdf7d85
commit
e8fd28b96a
3 changed files with 425 additions and 3 deletions
76
commands/create-flyer.rb
Normal file
76
commands/create-flyer.rb
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
usage 'create-flyer eventnode outputdir'
|
||||
aliases :cf
|
||||
summary 'creates svg for flyer'
|
||||
description 'Create SVG file with content of given event'
|
||||
|
||||
class CreateFlyer < ::Nanoc::CLI::CommandRunner
|
||||
def run
|
||||
# Check arguments
|
||||
if arguments.length!=2
|
||||
puts command.help
|
||||
exit 1
|
||||
end
|
||||
# Get node, check type
|
||||
self.load_site
|
||||
nodename = sanitize_path(arguments[0])
|
||||
event = self.site.items[nodename]
|
||||
if !event
|
||||
puts "Node #{nodename} not found"
|
||||
exit 1
|
||||
end
|
||||
if !event[:kind]=='event'
|
||||
puts "Node #{nodename} is not an event"
|
||||
exit 1
|
||||
end
|
||||
# Collect data
|
||||
merge_item_location_data(event[:location], self.site.items['/_data/locations/'].attributes)
|
||||
self.site.compile
|
||||
title = event[:title]
|
||||
date = event[:startdate]
|
||||
speakers = event[:speakers].map { |s| if s[:affiliation] then "#{s[:name]} (#{s[:affiliation]})" else s[:name] end }
|
||||
text = Nokogiri::HTML(event.compiled_content)
|
||||
text = text.content.gsub(/\n+/,"\n")
|
||||
location_infos = [event[:location][:name]]
|
||||
if (event[:location][:details])
|
||||
location_infos << event[:location][:details]
|
||||
end
|
||||
if (event[:location][:strasse])
|
||||
location_infos << event[:location][:strasse]
|
||||
end
|
||||
if (event[:location][:ort])
|
||||
if (event[:location][:plz])
|
||||
location_infos << "#{event[:location][:plz]} #{event[:location][:ort]}"
|
||||
else
|
||||
location_infos << event[:location][:ort]
|
||||
end
|
||||
end
|
||||
if (event[:location][:lon])
|
||||
location_infos << "N #{event[:location][:lon]} E #{event[:location][:lat]}"
|
||||
end
|
||||
calendar_items = self.site.items.select do |i|
|
||||
(i[:kind]=='event') && (i[:startdate].to_datetime>event[:startdate].to_datetime) && !i.identifier.start_with?('/_data/stammtisch/')
|
||||
end.sort { |a,b| a[:startdate].to_datetime <=> b[:startdate].to_datetime }
|
||||
calendar = calendar_items[0..5].map do |i|
|
||||
if i[:startdate].instance_of?(Date)
|
||||
"#{i[:startdate].strftime("%d.%m.%Y")} #{i[:title]}"
|
||||
else
|
||||
"#{i[:startdate].strftime("%d.%m.%Y, %H:%M")} #{i[:title]}"
|
||||
end
|
||||
end
|
||||
# Read template
|
||||
file = File.open(self.site.items['/_data/aushang/'].raw_filename(), "r:UTF-8")
|
||||
template = file.read
|
||||
file.close()
|
||||
# Replace in template
|
||||
template.gsub!('${title}', title)
|
||||
template.gsub!('${date}', date.strftime("%d.%m.%Y, %H:%M"))
|
||||
template.gsub!('${speakers}', speakers.join(', '))
|
||||
template.gsub!('${location}', location_infos.join(", "))
|
||||
template.gsub!('${calendar}', calendar.join(" \n"))
|
||||
# Output
|
||||
File.open("#{arguments[1]}/aushang.svg", 'w:UTF-8') {|f| f.write(template) }
|
||||
end
|
||||
end
|
||||
|
||||
runner CreateFlyer
|
||||
|
||||
346
content/_data/aushang.svg
Normal file
346
content/_data/aushang.svg
Normal file
|
|
@ -0,0 +1,346 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="744.09448819"
|
||||
height="1052.3622047"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="aushang.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<clipPath
|
||||
id="clipPath2999"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<path
|
||||
id="path3001"
|
||||
d="m 0,0 595.276,0 0,841.89 L 0,841.89 0,0 z" />
|
||||
</clipPath>
|
||||
<inkscape:perspective
|
||||
id="perspective24"
|
||||
inkscape:persp3d-origin="327.5275 : 156.72633 : 1"
|
||||
inkscape:vp_z="655.05499 : 235.08949 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 235.08949 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="568.67378"
|
||||
inkscape:cy="555.92516"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="838"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Hintergrund"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<g
|
||||
style="fill:#cccccc"
|
||||
id="g4"
|
||||
transform="matrix(0.3317811,0,0,0.3317811,494.74884,39.488028)">
|
||||
<path
|
||||
id="path6"
|
||||
d="m 294.407,7.95792 c 6.213,1.027 19.117,20.42198 17.554,56.04198 -4.3,2.287 -9.289,0.945 -12.547,0.894 -10.184,-2.682 -0.678,-29.555 -14.953,-39.546 C 263.79,10.8809 119.447,14.4069 45.5808,21.1209 13.592,24.0289 17.478,87.0639 16.8569,120.43 c -0.5169,27.768 0.4448,58.119 11.4189,88.93 9.4468,26.524 44.2989,17.409 75.9712,18.571 56.978,0 160.981,1.883 173.53,-3.125 9.092,-3.629 12.796,-16.972 14.709,-25.575 3.351,-15.069 -0.168,-25.607 11.822,-25.324 6.313,0.149 7.555,5.857 6.592,16.772 -1.001,11.346 -4.393,26.441 -9.128,44.005 -3.421,12.688 -27.012,10.129 -42.628,10.129 C 180.218,242.704 100.45,245.236 24.0554,243.125 1.9155,242.514 1.46946,137.911 0.285625,118.923 -1.10525,96.6069 2.51438,7.01993 21.3615,6.01993 35.3674,5.27692 113.628,0.0309143 159.959,0.0189209 205.016,0.00692749 252.988,1.11093 294.407,7.95792"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path8"
|
||||
d="m 223.69,24.0759 c 5.487,15.616 -8.019,40.096 12.24,48.537 73.438,12.662 159.117,-14.772 221.582,23.635 16.882,16.4601 29.544,35.4531 37.563,55.7121 l 0,-9.285 c -9.285,-25.746 -28.278,-47.6931 -46.427,-70.0621 5.065,-6.753 10.974,1.266 16.038,3.376 18.571,23.213 37.563,46.8491 44.739,74.7051 1.265,1.688 3.798,5.065 5.908,2.11 l 2.955,-2.954 c -6.331,-29.966 -25.324,-54.4461 -41.362,-80.1921 7.175,-4.643 14.35,3.377 20.259,8.019 12.24,20.259 25.746,40.5181 30.388,64.1531 3.376,2.532 7.597,-2.11 9.285,-5.065 -2.532,-18.571 -8.864,-35.031 -16.461,-50.6471 1.266,-2.11 1.266,-5.065 4.221,-5.065 18.149,9.707 17.727,30.8111 24.057,47.2711 5.909,-0.422 8.863,-18.993 16.46,-8.019 2.532,6.753 -10.129,17.305 2.955,18.149 -6.331,30.388 -39.674,54.024 -68.796,60.777 -15.194,3.376 -35.453,8.018 -46.849,-3.798 2.11,-5.487 9.707,-6.331 15.194,-7.175 33.765,-1.266 65.842,-13.506 86.101,-40.518 l -0.844,-0.844 c -32.077,21.525 -71.75,42.206 -111.424,26.168 -3.376,-0.844 -5.065,-5.487 -2.954,-8.019 0.844,-2.532 -1.688,-3.798 -2.955,-4.221 -67.108,2.954 -137.596,-6.324 -202.593,4.227 -7.13,1.158 -7.934,7.746 -9.284,13.082 -3.414,13.511 5.21,32.647 -2.824,39.846 0,0 -5.936,1.741 -10.256,-0.177 -1.011,-5.609 -4.227,-37.144 2.948,-54.026 9.077,-21.357 89.954,-14.153 113.334,-14.626 42.722,-0.863 92.638,-2.254 132.734,0.701 -11.396,-11.396 -29.122,-11.818 -46.427,-11.396 -54.868,-0.844 -140.604,-0.559 -175.376,-2.466 -51.431,-2.822 -69.842,48.893 -102.341,82.658 l -15.194,0 c 20.259,-28.277 42.097,-60.522 70.062,-85.256 4.509,-3.988 7.645,-4.615 15.194,-6.752 21.025,-5.953 224.959,0.844 224.959,0.844 9.285,2.11 19.415,3.376 28.278,7.174 -5.065,-13.084 -21.525,-16.46 -34.609,-18.147 -73.017,-2.11 -146.877,-0.422 -218.628,-5.065 -19.415,-5.909 -29.544,-29.9661 -44.739,-44.7391 l -32.499,-41.362 16.46,0.844 c 21.103,24.479 35.575,54.506 62.887,73.8601 6.02,4.266 134.602,3.027 202.584,2.954 10.96,-0.012 33.77,7.175 48.542,15.195 2.532,-3.376 -1.688,-6.331 -4.221,-8.863 -30.811,-29.5441 -94.362,-20.3431 -117.328,-20.2641 -40.285,0.14 -88.233,8.522 -121.559,-12.235 -8.141,-5.071 -6.752,-35.875 -2.953,-52.758 l 10.973,0"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path10"
|
||||
d="m 575.267,153.649 c -7.175,30.389 -29.544,57.822 -57.823,73.017 -17.727,3.799 -40.518,15.616 -54.868,-2.11 9.708,-8.863 27.434,-2.954 38.83,-10.13 29.544,-8.441 53.858,-34.474 68.796,-60.777 1.91,-1.321 3.195,-2.823 5.065,0"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path12"
|
||||
d="m 584.142,179.84 c -5.065,26.168 -17.727,53.602 -44.739,66.686 -11.818,5.487 -30.388,11.818 -41.362,2.11 l 0,-4.221 c 41.784,1.688 62.887,-42.206 79.77,-71.75 4.643,-0.422 5.065,3.798 6.331,7.175"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path14"
|
||||
d="m 611.567,280.265 c 19.879,4.224 39.249,-15.615 43.47,10.131 -16.883,8.863 -39.674,6.331 -57.4,1.266 -3.799,7.597 1.688,16.038 0,25.324 -2.532,24.902 -11.818,48.537 -33.765,63.731 -6.357,3.3 -7.677,5.247 -11.431,5.909 1.138,-5.702 1.527,-10.353 2.5,-13.899 4.346,-2.92 23.503,-15.22 24.125,-31.684 9.707,-34.609 -0.844,-68.796 -24.058,-94.12 l 15.194,-13.928 c 8.863,17.726 18.896,42.495 41.364,47.269"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="path16"
|
||||
d="m 542.769,257.054 c 24.479,47.271 1.688,102.561 -4.221,151.098 2.532,18.149 5.065,36.719 20.259,49.381 -1.688,4.221 0.844,14.772 -5.909,12.24 -21.525,-11.396 -28.7,-34.187 -28.278,-57.822 -0.844,-41.784 21.525,-75.127 16.038,-117.333 L 536.86,286.6 c -17.305,18.57 -36.719,41.784 -35.453,70.905 l -11.396,2.11 c -12.662,-40.518 31.655,-63.743 37.564,-100.04 0,0 9.707,-3.786 15.194,-2.521"
|
||||
style="fill:#cccccc;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Serif;-inkscape-font-specification:PT Serif"
|
||||
x="52.687996"
|
||||
y="139.2655"
|
||||
id="text3299"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3301"
|
||||
x="52.687996"
|
||||
y="139.2655"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0">ChaosComputerClub Stuttgart e.V. und Stadtbibliothek am Mailänder Platz präsentieren:</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Text"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g3386"
|
||||
transform="translate(0,-2)">
|
||||
<g
|
||||
id="g3474">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Serif;-inkscape-font-specification:PT Serif"
|
||||
x="53.662994"
|
||||
y="825.97528"
|
||||
id="text3299-6"
|
||||
sodipodi:linespacing="120%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3301-2"
|
||||
x="53.662994"
|
||||
y="825.97528"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Bold">Veranstalter</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="53.662994"
|
||||
y="843.97528"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0"
|
||||
id="tspan3324">ChaosComputerClub Stuttgart e.V.</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="53.662994"
|
||||
y="861.97528"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
id="tspan3326">www.cccs.de</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="53.662994"
|
||||
y="879.97528"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
id="tspan3328">V.i.S.d.P.: Hanno Wagner, Neckarstraße 168B, 70190 Stuttgart</tspan></text>
|
||||
<image
|
||||
y="779.12231"
|
||||
x="488.93668"
|
||||
id="image3349"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAIAAAAHjs1qAAAAA3NCSVQICAjb4U/gAAAEPElEQVR4 nO3dsW4bMRAA0SjQ//+y07hQGl4AgiHpea81bJ+kAZvFUq9fP87X19fgp6/X67rfnbHumW/0e/cD wP8jd0LkTojcCZE7IXInRO6EyJ0QuRPyMDZbN+2bsW5CuWuOWHuf1xk/s9OdELkTIndC5E6I3AmR OyFyJ0TuhMidkPfML6+bQe7a3Zyxa5p743RzxszrdboTIndC5E6I3AmROyFyJ0TuhMidELkTMjVV 5d+tm5veuFG6i9OdELkTIndC5E6I3AmROyFyJ0TuhMidEFPVv5x5e/DMXzZz/eR0J0TuhMidELkT IndC5E6I3AmROyFyJ2RqqnrjTO7Ge3pnJqO+KfaT050QuRMid0LkTojcCZE7IXInRO6EyJ2Qh6nq rpncOut2N2v39N7YhtOdELkTIndC5E6I3AmROyFyJ0TuhMidkPeN87wZN77eXduoN75XY053QuRO iNwJkTshcidE7oTInRC5EyJ3QratG555I+6Nt+meOVXd9VTj/+t0J0TuhMidELkTIndC5E6I3AmR OyFyJ+RhV/XMGeSZd+2e+W6MzTzVrvd55v863QmROyFyJ0TuhMidELkTIndC5E6I3Al5nbmdyadd e727/vI6TndC5E6I3AmROyFyJ0TuhMidELkTIndC3jO/vGtL8sz92l1zxHX7pmNnfvpjTndC5E6I 3AmROyFyJ0TuhMidELkTIndCpqaqu5x5L/HYmc888393zcVn/q/TnRC5EyJ3QuROiNwJkTshcidE 7oTInZArp6pn7pveeFvymc+87lNwuhMid0LkTojcCZE7IXInRO6EyJ0QuRNy6FR13R2/u5z5inbt m46teyqnOyFyJ0TuhMidELkTIndC5E6I3AmROyEP46td32C6a4544xbsmd/nuuvTt6sK3+ROiNwJ kTshcidE7oTInRC5EyJ3Qt4zE6xdM9exXVPGG6fI6+zaVR1zuhMid0LkTojcCZE7IXInRO6EyJ0Q uROy8AbgdfPaddbNPm+8l3jGmVNkpzshcidE7oTInRC5EyJ3QuROiNwJkTsh7127jOuMJ3Zn3sR7 5qfw816v050QuRMid0LkTojcCZE7IXInRO6EyJ2Qh13VMzcs183k1t1be+Mdv+ue2a4qLCd3QuRO iNwJkTshcidE7oTInRC5EzJ1A/CN87wZNz7V+DM6c0d2xvjdcLoTIndC5E6I3AmROyFyJ0TuhMid ELkTsvB7Vc905jbqmfPaXdbNep3uhMidELkTIndC5E6I3AmROyFyJ0TuhOSmqmMze5/rzExzb3xF M+yqwje5EyJ3QuROiNwJkTshcidE7oTInZCpqaoNy0833qa76/tNZ2a9M8/sdCdE7oTInRC5EyJ3 QuROiNwJkTshcifkvkHgo10Tu3V/eZ11s88zOd0JkTshcidE7oTInRC5EyJ3QuROiNwJ+QOTl1Ib mChKEgAAAABJRU5ErkJggg== "
|
||||
height="104.03295"
|
||||
width="104.03295" />
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:114.99999762%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
x="51.607994"
|
||||
y="195.73251"
|
||||
id="text3394"
|
||||
sodipodi:linespacing="115%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3396"
|
||||
x="51.607994"
|
||||
y="195.73251"
|
||||
style="font-size:32px;line-height:114.99999762%">${date}</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="51.607994"
|
||||
y="232.53252"
|
||||
id="tspan3398"
|
||||
style="font-size:32px;font-weight:bold;line-height:114.99999762%;-inkscape-font-specification:PT Sans Bold">${speakers}:</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="51.607994"
|
||||
y="269.33252"
|
||||
id="tspan3400"
|
||||
style="font-size:32px;font-weight:bold;line-height:114.99999762%;-inkscape-font-specification:PT Sans Bold">${title}</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Serif;-inkscape-font-specification:PT Serif"
|
||||
x="52.957993"
|
||||
y="305.51697"
|
||||
id="text3299-6-8"
|
||||
sodipodi:linespacing="120%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3301-2-5"
|
||||
x="52.957993"
|
||||
y="305.51697"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Bold">Ort</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="52.957993"
|
||||
y="323.51697"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
id="tspan3468">${location}</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="52.957993"
|
||||
y="341.51697"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
id="tspan3470" /><tspan
|
||||
sodipodi:role="line"
|
||||
x="52.957993"
|
||||
y="359.51697"
|
||||
style="font-size:15px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Italic"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
id="tspan3472">Eintritt frei, um einen freiwilligen Unkostenbeitrag wird gebeten!</tspan></text>
|
||||
<g
|
||||
id="g3732">
|
||||
<text
|
||||
sodipodi:linespacing="120%"
|
||||
id="text3299-6-8-8"
|
||||
y="482.8681"
|
||||
x="50.875462"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Serif;-inkscape-font-specification:PT Serif"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan3472-2"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000476999998966%;letter-spacing:-1.4px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="482.8681"
|
||||
x="50.875462"
|
||||
sodipodi:role="line">Vortragsreihe des CCCS</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="120%"
|
||||
id="text3299-6-8-8-7"
|
||||
y="516.00287"
|
||||
x="53.527996"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Serif;-inkscape-font-specification:PT Serif"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan3528-7"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Bold"
|
||||
y="516.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">Termin</tspan><tspan
|
||||
id="tspan3328-7-1-6"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="534.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">Regulär am zweiten Donnerstag im Monat.</tspan><tspan
|
||||
id="tspan3607"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="552.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line" /><tspan
|
||||
id="tspan3472-2-5"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Bold"
|
||||
y="570.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">Ablauf</tspan><tspan
|
||||
id="tspan3625"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="588.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">19:30 Uhr Vortragsbeginn, bis max. 22 Uhr Diskussion im Anschluß an den Vortrag.</tspan><tspan
|
||||
id="tspan3631"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="606.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line" /><tspan
|
||||
id="tspan3633"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Bold"
|
||||
y="624.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">Kooperation</tspan><tspan
|
||||
id="tspan3637"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="642.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">Wir danken der Stadtbücherei Stuttgart (http://www.stuttgart.de/stadtbuecherei/) für</tspan><tspan
|
||||
id="tspan3641"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
y="660.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line">die Unterstützung!</tspan><tspan
|
||||
id="tspan3627"
|
||||
dx="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
style="font-size:15px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:120.00000477%;letter-spacing:0px;font-family:PT Sans;-inkscape-font-specification:PT Sans Italic"
|
||||
y="678.00287"
|
||||
x="53.527996"
|
||||
sodipodi:role="line" /></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:120.00000477%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
x="53.527996"
|
||||
y="714.39398"
|
||||
id="text3299-6-8-8-7-1"
|
||||
sodipodi:linespacing="120%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3722"
|
||||
style="font-weight:bold;-inkscape-font-specification:PT Sans Bold"
|
||||
x="53.527996"
|
||||
y="714.39398">Weitere Termine</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3726"
|
||||
x="53.527996"
|
||||
y="732.39398">${calendar}</tspan></text>
|
||||
<g
|
||||
id="g3757">
|
||||
<rect
|
||||
y="292.63095"
|
||||
x="483.86307"
|
||||
height="106.06602"
|
||||
width="106.06602"
|
||||
id="rect3749"
|
||||
style="fill:#cccccc;fill-opacity:1;stroke:none" />
|
||||
<text
|
||||
transform="matrix(0.69512149,-0.71889228,0.71889228,0.69512149,0,0)"
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3751"
|
||||
y="620.02112"
|
||||
x="67.18293"
|
||||
style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:PT Sans;-inkscape-font-specification:PT Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:8px"
|
||||
y="620.02112"
|
||||
x="67.18293"
|
||||
id="tspan3753"
|
||||
sodipodi:role="line">QR-Code "Calendar Event" von</tspan><tspan
|
||||
style="font-size:8px"
|
||||
id="tspan3755"
|
||||
y="630.02112"
|
||||
x="67.18293"
|
||||
sodipodi:role="line">http://zxing.appspot.com/generator</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -1,6 +1,6 @@
|
|||
def merge_item_location_data(location)
|
||||
def merge_item_location_data(location, templates)
|
||||
if (location && location[:location])
|
||||
templates = @items['/_data/locations/'].attributes
|
||||
# templates = @items['/_data/locations/'].attributes
|
||||
if templates[location[:location].to_sym]
|
||||
location.merge!(templates[location[:location].to_sym])
|
||||
end
|
||||
|
|
@ -8,6 +8,6 @@ def merge_item_location_data(location)
|
|||
end
|
||||
|
||||
def merge_location_data()
|
||||
items.select { |i| i[:kind] == 'event' }.each { |e| merge_item_location_data(e[:location]) }
|
||||
items.select { |i| i[:kind] == 'event' }.each { |e| merge_item_location_data(e[:location], @items['/_data/locations/'].attributes) }
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue