Added some more hooks to the page editing pipeline. It should now be possible to add controls to the page editor, send the data from them out to the server, and process them on the server side.
<?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://web.resource.org/cc/"
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"
sodipodi:docname="face-oops.svg"
sodipodi:docbase="/home/dan/emotes"
inkscape:version="0.45"
sodipodi:version="0.32"
id="svg4376"
height="48px"
width="48px"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2120"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.159815,18.5,-2.815047)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2116"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.171895,2.5,-3.141166)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
id="linearGradient2102">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop2104" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop2106" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2112"
gradientUnits="userSpaceOnUse"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527"
gradientTransform="matrix(1,0,0,1.404523,10.5,-7.966331)" />
<linearGradient
id="linearGradient3068">
<stop
style="stop-color:#cccccc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3070" />
<stop
id="stop3076"
offset="0.34579438"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.72486681"
id="stop3078" />
<stop
style="stop-color:#cecece;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3072" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2132"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.048897,0,0,1,-1.267931,0)" />
<linearGradient
id="linearGradient8156">
<stop
style="stop-color:#ac0000;stop-opacity:0.62127662;"
offset="0"
id="stop8158" />
<stop
style="stop-color:#ac0000;stop-opacity:0;"
offset="1"
id="stop8160" />
</linearGradient>
<linearGradient
id="linearGradient3290">
<stop
id="stop3292"
offset="0.0000000"
style="stop-color:#fffcde;stop-opacity:1.0000000;" />
<stop
style="stop-color:#f6e76a;stop-opacity:1.0000000;"
offset="0.64485979"
id="stop3294" />
<stop
id="stop3296"
offset="1.0000000"
style="stop-color:#ffb738;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
r="8.9020796"
fy="15.755712"
fx="29.158466"
cy="15.720984"
cx="29.288071"
gradientUnits="userSpaceOnUse"
id="radialGradient2714"
xlink:href="#linearGradient3290"
inkscape:collect="always" />
<linearGradient
id="linearGradient2509">
<stop
style="stop-color:#fffbd5;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2511" />
<stop
style="stop-color:#edd400;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2513" />
</linearGradient>
<radialGradient
gradientTransform="matrix(1.25,0,0,1.2206272,-6.479446,-11.617797)"
id="aigrd2"
cx="25.0527"
cy="39.5928"
r="15.7572"
fx="25.0527"
fy="39.5928"
gradientUnits="userSpaceOnUse">
<stop
offset="0.0000000"
style="stop-color:#777777;stop-opacity:1.0000000;"
id="stop8602" />
<stop
offset="1"
style="stop-color:#000000"
id="stop8604" />
</radialGradient>
<linearGradient
id="linearGradient4565"
inkscape:collect="always">
<stop
id="stop4567"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop4569"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient3824">
<stop
id="stop3826"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3828"
offset="1.0000000"
style="stop-color:#c9c9c9;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient3800">
<stop
id="stop3802"
offset="0.0000000"
style="stop-color:#ffeed6;stop-opacity:1.0000000;" />
<stop
style="stop-color:#e49c2f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop8664" />
<stop
id="stop3804"
offset="1.0000000"
style="stop-color:#ffc66c;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,25.71429)"
r="19.714285"
fy="38.571430"
fx="24.714285"
cy="38.571430"
cx="24.714285"
id="radialGradient4571"
xlink:href="#linearGradient4565"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient8156"
id="radialGradient8164"
cx="15.153078"
cy="28.062902"
fx="15.153078"
fy="28.062902"
r="5.0579581"
gradientTransform="matrix(1,0,0,1.3196488,0,-8.9702732)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient8156"
id="radialGradient8170"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.3196488,0,-8.9702732)"
cx="15.153078"
cy="28.062902"
fx="15.153078"
fy="28.062902"
r="5.0579581" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2226"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.34239,20.743344,20.335896)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2229"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.3526107,10.993725,20.017144)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2232"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.4226059,15.868535,18.565304)"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2235"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6446665,0,0,0.2104377,8.5621255,24.461994)"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3068"
id="linearGradient2252"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6446665,0,0,0.2104377,8.5621255,24.461994)"
x1="9.7892637"
y1="29.629091"
x2="38.390732"
y2="29.629091" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2254"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.4226059,15.868535,18.565304)"
x1="14.000000"
y1="21.062500"
x2="14"
y2="34.305527" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2256"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.3526107,10.993725,20.017144)"
x1="14.000000"
y1="21.062500"
x2="13.500000"
y2="33.426670" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2102"
id="linearGradient2258"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.609351,0,0,0.34239,20.743344,20.335896)"
x1="14.000000"
y1="21.062500"
x2="14.500000"
y2="33.431156" />
</defs>
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="50"
inkscape:window-height="735"
inkscape:window-width="822"
inkscape:showpageshadow="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
showgrid="false"
inkscape:current-layer="layer1"
inkscape:cy="25.694057"
inkscape:cx="25.411306"
inkscape:zoom="11.313708"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="0.19607843"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
fill="#edd400" />
<metadata
id="metadata4">
<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>Face - Happy</dc:title>
<dc:subject>
<rdf:Bag>
<rdf:li>emoticon</rdf:li>
<rdf:li>emote</rdf:li>
<rdf:li>smiley</rdf:li>
<rdf:li>happy</rdf:li>
<rdf:li>:)</rdf:li>
<rdf:li>:-)</rdf:li>
</rdf:Bag>
</dc:subject>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
inkscape:label="Layer 1"
id="layer1">
<path
d="M 44.428570 38.571430 A 19.714285 6.5714288 0 1 1 5.0000000,38.571430 A 19.714285 6.5714288 0 1 1 44.428570 38.571430 z"
sodipodi:ry="6.5714288"
sodipodi:rx="19.714285"
sodipodi:cy="38.571430"
sodipodi:cx="24.714285"
id="path4563"
style="opacity:0.53164557;color:#000000;fill:url(#radialGradient4571);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:0.40487173;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
sodipodi:type="arc" />
<path
transform="matrix(2.083142,0.000000,0.000000,2.083142,-40.54715,-16.49224)"
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
sodipodi:ry="8.6620579"
sodipodi:rx="8.6620579"
sodipodi:cy="19.008621"
sodipodi:cx="31.112698"
id="path4320"
style="overflow:visible;display:inline;visibility:visible;stroke-opacity:1.0000000;stroke-dashoffset:0.0000000;stroke-dasharray:none;stroke-miterlimit:4.0000000;marker-end:none;marker-mid:none;marker-start:none;marker:none;stroke-linejoin:round;stroke-linecap:round;stroke-width:0.48004404;stroke:#9c8c0a;fill-rule:evenodd;fill-opacity:1.0000000;fill:url(#radialGradient2714);color:#000000;opacity:1.0000000"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:url(#radialGradient8164);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path7181"
sodipodi:cx="15.153078"
sodipodi:cy="28.062902"
sodipodi:rx="4.8079581"
sodipodi:ry="6.4247284"
d="M 19.961036 28.062902 A 4.8079581 6.4247284 0 1 1 10.34512,28.062902 A 4.8079581 6.4247284 0 1 1 19.961036 28.062902 z"
transform="translate(-0.6518641,-3.2816311)" />
<path
transform="matrix(1.979782,0.000000,0.000000,1.979782,-37.33128,-14.52746)"
sodipodi:type="arc"
style="opacity:0.67721519;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50510627;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
id="path4322"
sodipodi:cx="31.112698"
sodipodi:cy="19.008621"
sodipodi:rx="8.6620579"
sodipodi:ry="8.6620579"
d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
<g
transform="matrix(1,0,0,0.7991174,0.353553,4.4409911)"
id="g8666">
<path
style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 21.398158,15.321428 C 21.398158,17.821428 20.273158,19.821428 18.898158,19.821428 C 17.523158,19.821428 16.273158,17.821428 16.273158,15.321428 C 16.273158,12.821428 17.398158,10.821428 18.773158,10.821428 C 20.148158,10.821428 21.273158,12.821428 21.273158,15.321428 L 21.398158,15.321428 z "
id="path8610" />
<path
style="opacity:0.36000001;fill:#ffffff;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 30.688512,15.321428 C 30.688512,17.821428 29.563512,19.821428 28.188512,19.821428 C 26.813512,19.821428 25.688512,17.821428 25.688512,15.321428 C 25.688512,12.821428 26.813512,10.821428 28.188512,10.821428 C 29.563512,10.821428 30.688512,12.821428 30.688512,15.321428 z "
id="path8612" />
<path
style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 21.398158,14.696428 C 21.398158,17.196428 20.273158,19.196428 18.898158,19.196428 C 17.523158,19.196428 16.398158,17.196428 16.398158,14.696428 C 16.398158,12.196428 17.523158,10.196428 18.898158,10.196428 C 20.273158,10.196428 21.398158,12.196428 21.398158,14.696428 z "
id="path8614" />
<path
style="fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
d="M 30.688512,14.696428 C 30.688512,17.196428 29.563512,19.196428 28.188512,19.196428 C 26.813512,19.196428 25.688512,17.196428 25.688512,14.696428 C 25.688512,12.196428 26.813512,10.196428 28.188512,10.196428 C 29.563512,10.196428 30.688512,12.196428 30.688512,14.696428 z "
id="path8616" />
</g>
<path
sodipodi:type="arc"
style="fill:url(#radialGradient8170);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path8168"
sodipodi:cx="15.153078"
sodipodi:cy="28.062902"
sodipodi:rx="4.8079581"
sodipodi:ry="6.4247284"
d="M 19.961036 28.062902 A 4.8079581 6.4247284 0 1 1 10.34512,28.062902 A 4.8079581 6.4247284 0 1 1 19.961036 28.062902 z"
transform="translate(17.957913,-3.2761064)" />
<g
id="g2237"
transform="translate(0,2)">
<path
style="color:#000000;fill:url(#linearGradient2252);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 14.988198,28.890608 C 15.179727,31.617118 17.87199,32.503303 24.115922,32.503303 C 30.414173,32.503303 33.174136,31.055189 33.16306,28.90376 C 33.151844,26.725175 14.796672,26.164096 14.988198,28.890608 z "
id="path2096"
sodipodi:nodetypes="czzz" />
<path
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2254);stroke-width:0.42819062px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
d="M 24.39945,27.440031 L 24.39945,32.511304"
id="path2110" />
<path
id="path2114"
d="M 19.524642,27.421971 L 19.524642,31.653301"
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2256);stroke-width:0.42819077px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="opacity:0.18181817;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2258);stroke-width:0.42413118px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
d="M 29.274259,27.526098 L 29.274259,31.634785"
id="path2118" />
<path
sodipodi:nodetypes="czzz"
id="path2756"
d="M 15.143945,28.80035 C 15.223926,31.330376 18.314745,32.606706 24.245798,32.606706 C 30.394114,32.606706 33.063062,30.724409 33.078757,28.787198 C 33.094451,26.849987 15.063964,26.270323 15.143945,28.80035 z "
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#8f5902;stroke-width:0.35963577;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
</g>
</g>
</svg>