0
1
Fork 0
This commit is contained in:
Juan Ferrer Toribio 2016-09-06 16:25:02 +02:00
parent e6702e95dd
commit 121aa5f344
34 changed files with 1067 additions and 720 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
hedera-web (1.345-deb8) stable; urgency=low
hedera-web (1.346-deb8) stable; urgency=low
* Initial Release.

111
image/banner.svg Normal file
View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="280.7037"
height="82.280701"
viewBox="0 0 280.7037 82.280701"
enable-background="new 0 0 315 91"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="banner.svg"><defs
id="defs71" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview69"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="3.9555556"
inkscape:cx="140.58781"
inkscape:cy="40.77085"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="92.88"
width="291.36"
y="-92.691"
x="11.469"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><path
style="fill:#3e3d3d"
inkscape:connector-curvature="0"
id="path13"
d="m 279.85185,76.20385 c 0,2.874 -2.351,5.225 -5.225,5.225 l -268.551,0 c -2.873,0 -5.22400003,-2.351 -5.22400003,-5.225 l 0,-70.128 c 0,-2.873 2.35100003,-5.22400003 5.22400003,-5.22400003 l 268.551,0 c 2.874,0 5.225,2.35100003 5.225,5.22400003 l 0,70.128 z" /><path
style="fill:none;stroke:#ffffff;stroke-width:1.70369995;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path15"
d="m 279.85185,76.20385 c 0,2.874 -2.351,5.225 -5.225,5.225 l -268.551,0 c -2.873,0 -5.22400003,-2.351 -5.22400003,-5.225 l 0,-70.128 c 0,-2.873 2.35100003,-5.22400003 5.22400003,-5.22400003 l 268.551,0 c 2.874,0 5.225,2.35100003 5.225,5.22400003 l 0,70.128 z"
stroke-miterlimit="10" /><path
d="m 38.97185,53.91685 -10.226,-29.708 8.08,0 4.182,15.251 0.303,1.229 c 0.544,1.868 0.911,3.371 1.169,4.62 0.146,-0.596 0.347,-1.3 0.56,-2.165 0.214,-0.797 0.521,-1.879 0.891,-3.178 l 4.385,-15.757 8.021,0 -10.262,29.708 -7.103,0 z"
id="path41"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /><path
d="m 246.74185,53.91685 -7.322,0 c 0.029,-0.359 0.068,-0.751 0.13,-1.163 l 0.095,-1.152 c -1.248,1.042 -2.559,1.737 -3.862,2.304 -1.211,0.431 -2.587,0.648 -3.912,0.645 -2.143,0 -3.605,-0.572 -4.486,-1.736 -0.922,-1.161 -1.13,-2.66 -0.552,-4.681 0.521,-1.806 1.43,-3.252 2.627,-4.412 1.339,-1.152 2.985,-1.914 5.084,-2.385 1.145,-0.216 2.575,-0.505 4.315,-0.79 2.578,-0.412 3.963,-1.012 4.165,-1.744 l 0.203,-0.568 c 0.128,-0.603 0.067,-1.107 -0.323,-1.447 -0.432,-0.297 -1.041,-0.471 -1.97,-0.471 -1.096,0 -1.96,0.183 -2.607,0.614 -0.786,0.437 -1.313,1.013 -1.668,1.872 l -6.645,0 c 1.127,-2.486 2.606,-4.326 4.62,-5.551 2.042,-1.228 4.621,-1.818 7.808,-1.818 1.97,0 3.468,0.241 4.694,0.729 1.224,0.431 2.064,1.156 2.518,2.125 0.339,0.669 0.543,1.484 0.468,2.449 -0.069,0.921 -0.402,2.479 -0.996,4.543 l -2.323,8.303 c -0.273,1.011 -0.338,1.743 -0.314,2.313 0,0.572 0.148,0.977 0.461,1.157 l -0.208,0.864 z m -5.028,-10.341 c -0.687,0.339 -1.7,0.674 -3.18,0.972 -0.714,0.129 -1.288,0.231 -1.597,0.333 -0.948,0.259 -1.699,0.581 -2.102,0.919 -0.489,0.377 -0.794,0.885 -1.005,1.475 -0.191,0.858 -0.09,1.441 0.211,1.961 0.331,0.429 0.898,0.646 1.739,0.646 1.179,0 2.313,-0.3 3.271,-1.021 1.021,-0.727 1.652,-1.593 1.924,-2.774 l 0.739,-2.511 z"
id="path43"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#a9d42d;fill-rule:evenodd" /><path
d="m 210.45585,53.91685 6.166,-21.935 6.877,0 -1.034,3.801 c 1.173,-1.461 2.378,-2.601 3.789,-3.278 1.293,-0.673 2.893,-1.065 4.624,-1.073 l -2.033,7.09 c -0.276,-0.015 -0.58,-0.064 -0.857,-0.09 -0.301,-0.029 -0.575,-0.041 -0.886,-0.041 -1.094,0 -2.003,0.171 -2.879,0.519 -0.781,0.332 -1.441,0.822 -2.072,1.492 -0.442,0.467 -0.824,1.152 -1.107,2.003 -0.384,0.844 -0.873,2.192 -1.414,4.119 l -2.049,7.393 -7.125,0 z"
id="path45"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#a9d42d;fill-rule:evenodd" /><path
d="m 213.09585,31.98285 -6.163,21.935 -6.994,0 0.873,-3.06 c -1.181,1.248 -2.438,2.154 -3.723,2.735 -1.199,0.573 -2.556,0.857 -3.945,0.857 -2.455,0 -4.078,-0.639 -4.948,-1.915 -0.885,-1.226 -0.976,-3.044 -0.299,-5.543 l 4.235,-15.01 7.223,0 -3.465,12.243 c -0.55,1.812 -0.594,3.041 -0.344,3.712 0.235,0.722 0.925,1.061 2.067,1.061 1.165,0 2.261,-0.447 3.025,-1.253 0.772,-0.804 1.477,-2.174 1.977,-4.043 l 3.326,-11.72 7.155,0 z"
id="path47"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#a9d42d;fill-rule:evenodd" /><path
d="m 175.45585,36.31585 1.238,-4.333 2.95,0 1.734,-6.179 7.156,0 -1.734,6.179 3.637,0 -1.195,4.333 -3.681,0 -2.671,9.478 c -0.338,1.474 -0.463,2.389 -0.235,2.923 0.235,0.436 0.903,0.647 1.965,0.647 l 0.568,-0.019 0.291,-0.043 -1.211,4.615 c -0.805,0.147 -1.613,0.289 -2.293,0.303 -0.819,0.109 -1.458,0.174 -2.173,0.169 -2.431,0 -4.006,-0.62 -4.575,-1.856 -0.574,-1.223 -0.307,-3.816 0.771,-7.753 l 2.406,-8.464 -2.948,0 z"
id="path49"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#a9d42d;fill-rule:evenodd" /><path
d="m 170.54585,53.91685 -7.316,0 c 0.013,-0.359 0.049,-0.751 0.118,-1.163 l 0.164,-1.152 c -1.291,1.042 -2.595,1.737 -3.82,2.304 -1.318,0.427 -2.574,0.645 -3.98,0.645 -2.063,0 -3.601,-0.572 -4.528,-1.736 -0.92,-1.161 -1.045,-2.66 -0.505,-4.681 0.476,-1.806 1.38,-3.254 2.709,-4.412 1.204,-1.152 2.909,-1.913 4.959,-2.385 1.133,-0.216 2.58,-0.505 4.31,-0.79 2.591,-0.412 4.046,-1.012 4.285,-1.744 l 0.088,-0.568 c 0.247,-0.603 0.106,-1.107 -0.322,-1.447 -0.299,-0.297 -0.998,-0.471 -1.979,-0.471 -0.955,0 -1.825,0.183 -2.609,0.614 -0.648,0.437 -1.2,1.013 -1.593,1.872 l -6.576,0 c 0.983,-2.486 2.564,-4.326 4.619,-5.55 2.046,-1.229 4.618,-1.819 7.729,-1.819 1.903,0 3.544,0.243 4.736,0.729 1.156,0.431 2.019,1.156 2.534,2.125 0.347,0.669 0.419,1.484 0.353,2.449 -0.006,0.921 -0.287,2.479 -0.87,4.543 l -2.323,8.303 c -0.277,1.011 -0.456,1.743 -0.429,2.313 0.024,0.572 0.151,0.977 0.449,1.157 l -0.203,0.864 z m -5.003,-10.341 c -0.586,0.339 -1.735,0.673 -3.184,0.972 -0.671,0.129 -1.202,0.231 -1.614,0.333 -0.965,0.259 -1.574,0.581 -2.118,0.919 -0.407,0.377 -0.75,0.885 -0.894,1.475 -0.28,0.858 -0.188,1.441 0.183,1.956 0.383,0.434 0.958,0.65 1.722,0.65 1.252,0 2.327,-0.3 3.298,-1.021 0.936,-0.727 1.612,-1.593 1.947,-2.774 l 0.66,-2.51 z"
id="path51"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#a9d42d;fill-rule:evenodd" /><path
d="m 123.20885,24.20885 -8.328,29.708 -7.168,0 0.806,-2.891 c -1.152,1.155 -2.318,2.024 -3.524,2.599 -1.242,0.581 -2.543,0.872 -3.961,0.872 -2.733,0 -4.651,-1.074 -5.782,-3.188 -1.087,-2.065 -1.183,-4.854 -0.208,-8.311 0.944,-3.456 2.619,-6.229 4.938,-8.413 2.313,-2.179 4.783,-3.292 7.493,-3.292 1.432,0 2.631,0.29 3.59,0.868 0.937,0.579 1.642,1.446 2.067,2.604 l 2.91,-10.556 7.167,0 z m -22.175,18.504 c -0.532,1.943 -0.607,3.464 -0.166,4.532 0.445,0.979 1.365,1.481 2.741,1.481 1.358,0 2.552,-0.489 3.531,-1.46 0.984,-1.09 1.782,-2.565 2.331,-4.554 0.499,-1.866 0.525,-3.28 0.065,-4.284 -0.436,-1.009 -1.329,-1.5 -2.712,-1.5 -1.262,0 -2.424,0.511 -3.476,1.558 -1.052,1.042 -1.779,2.437 -2.314,4.227"
id="path53"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /><path
d="m 74.26585,53.91685 6.114,-21.935 6.888,0 -1.041,3.801 c 1.192,-1.461 2.442,-2.601 3.788,-3.278 1.303,-0.679 5.873,-1.065 7.651,-1.073 l -2.013,7.09 c -0.289,-0.015 -0.577,-0.064 -0.862,-0.09 -0.3,-0.029 -0.586,-0.041 -0.868,-0.041 -1.109,0 -5.057,0.171 -5.869,0.516 -0.792,0.334 -1.501,0.823 -2.141,1.494 -0.384,0.467 -0.795,1.152 -1.112,2.003 -0.385,0.844 -0.833,2.192 -1.349,4.119 l -2.072,7.393 -7.114,0 z"
id="path55"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /><path
d="m 66.74385,46.97585 6.905,0 c -1.322,2.398 -3.138,4.312 -5.368,5.573 -2.254,1.368 -4.776,1.95 -7.595,1.95 -3.366,0 -5.792,-0.979 -7.182,-3.053 -1.368,-2.077 -1.596,-4.854 -0.606,-8.447 1.02,-3.609 2.843,-6.497 5.415,-8.598 2.574,-2.1 5.539,-3.171 8.913,-3.171 3.482,0 5.905,1.071 7.325,3.246 1.364,2.146 1.529,5.085 0.446,8.892 l -0.205,0.787 -0.178,0.475 -14.808,0 c -0.429,1.548 -0.429,2.702 0,3.504 0.438,0.865 1.308,1.23 2.599,1.23 0.965,0 1.789,-0.168 2.525,-0.615 0.738,-0.323 1.354,-0.933 1.814,-1.773 m -6.012,-6.393 8.186,-0.027 c 0.355,-1.388 0.293,-2.473 -0.205,-3.283 -0.53,-0.775 -1.392,-1.196 -2.637,-1.194 -1.188,-0.001 -2.225,0.419 -3.146,1.167 -0.948,0.804 -1.675,1.894 -2.198,3.337"
id="path57"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /><path
d="m 139.21185,54.20585 -6.27,-18.261 -6.328,18.261 -7.092,0 9.373,-29.695 8.013,0 4.334,15.277 0.365,1.227 c 0.503,1.844 0.876,3.37 1.145,4.582 l 0.522,-2.128 c 0.244,-0.798 0.548,-1.897 0.925,-3.216 l 4.355,-15.741 8.021,0 -10.267,29.695 -7.096,0 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#a9d42d" /><g
id="g65"
transform="translate(-15.64815,-3.99015)"><path
stroke-miterlimit="10"
d="m 295.5,80.194 c 0,2.874 -2.351,5.225 -5.225,5.225 l -268.551,0 c -2.873,0 -5.224,-2.351 -5.224,-5.225 l 0,-70.128 c 0,-2.873 2.351,-5.224 5.224,-5.224 l 268.551,0 c 2.874,0 5.225,2.351 5.225,5.224 l 0,70.128 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:1.70369995;stroke-miterlimit:10" /></g></svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="24"
height="24.000189"
viewBox="0 0 24 24.00019"
enable-background="new 0 0 266.893 266.895"
xml:space="preserve"
inkscape:version="0.48.5 r10040"
sodipodi:docname="facebook.svg"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1014"
id="namedview5"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.8842429"
inkscape:cx="-148.21469"
inkscape:cy="128.85949"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><path
id="Blue_1_"
d="m 22.67547,24.00019 c 0.731407,0 1.324523,-0.59312 1.324523,-1.32471 V 1.32462 C 23.999993,0.59293 23.40697,0 22.67547,0 H 1.3246076 C 0.59292132,0 -8.1786701e-6,0.59293 -8.1786701e-6,1.32462 v 21.35086 c 0,0.7315 0.5928363986701,1.32471 1.3246157786701,1.32471 H 22.67547 z"
inkscape:connector-curvature="0"
style="fill:#3c5a99" /><path
id="f"
d="m 16.559645,24.00019 v -9.2942 h 3.119608 L 20.14637,11.08388 H 16.559645 V 8.77139 c 0,-1.04868 0.291203,-1.76333 1.794993,-1.76333 l 1.91801,-8.4e-4 V 3.76758 c -0.331712,-0.0441 -1.470263,-0.14276 -2.794879,-0.14276 -2.765359,0 -4.658599,1.68799 -4.658599,4.78785 v 2.67121 H 9.6915528 v 3.62211 H 12.81917 v 9.2942 h 3.740475 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -2,6 +2,7 @@
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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#"
@ -10,20 +11,17 @@
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000189"
viewBox="0 0 24 24.00019"
enable-background="new 0 0 266.893 266.895"
height="24.000601"
viewBox="0 0 24 24.000601"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.48.5 r10040"
sodipodi:docname="facebook.svg"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
inkscape:version="0.91 r13725"
sodipodi:docname="facebook.svg"><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
@ -33,25 +31,35 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1014"
id="namedview5"
inkscape:window-height="1016"
id="namedview11"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.8842429"
inkscape:cx="-148.21469"
inkscape:cy="128.85949"
inkscape:zoom="34.415805"
inkscape:cx="12"
inkscape:cy="12.0003"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><path
id="Blue_1_"
d="m 22.67547,24.00019 c 0.731407,0 1.324523,-0.59312 1.324523,-1.32471 V 1.32462 C 23.999993,0.59293 23.40697,0 22.67547,0 H 1.3246076 C 0.59292132,0 -8.1786701e-6,0.59293 -8.1786701e-6,1.32462 v 21.35086 c 0,0.7315 0.5928363986701,1.32471 1.3246157786701,1.32471 H 22.67547 z"
inkscape:connector-curvature="0"
style="fill:#3c5a99" /><path
id="f"
d="m 16.559645,24.00019 v -9.2942 h 3.119608 L 20.14637,11.08388 H 16.559645 V 8.77139 c 0,-1.04868 0.291203,-1.76333 1.794993,-1.76333 l 1.91801,-8.4e-4 V 3.76758 c -0.331712,-0.0441 -1.470263,-0.14276 -2.794879,-0.14276 -2.765359,0 -4.658599,1.68799 -4.658599,4.78785 v 2.67121 H 9.6915528 v 3.62211 H 12.81917 v 9.2942 h 3.740475 z"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></svg>
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120"
width="119.997"
y="-120"
x="0.003"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="matrix(0.200005,0,0,0.200005,-6.00015e-4,0)"><path
d="M 120,93.066 C 120,107.938 107.941,120 93.065,120 l -66.132,0 C 12.061,120 0.003,107.937 0.003,93.066 l 0,-66.134 C 0.003,12.059 12.061,0 26.933,0 L 93.066,0 C 107.941,0 120,12.059 120,26.932 l 0,66.134 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#5b75b9" /><path
d="m 70.09,38.601 c 2.013,-0.067 4.021,-0.016 6.043,-0.019 0.244,0 0.491,0 0.828,0 l 0,-10.471 c -1.075,-0.108 -2.2,-0.262 -3.324,-0.317 -2.065,-0.091 -4.132,-0.195 -6.202,-0.148 -3.153,0.067 -6.141,0.836 -8.746,2.706 -2.991,2.153 -4.635,5.172 -5.26,8.743 -0.26,1.471 -0.325,2.995 -0.365,4.493 -0.057,2.35 -0.008,4.698 -0.008,7.05 l 0,0.881 -10.018,0 0,11.695 9.96,0 0,29.398 12.172,0 0,-29.35 9.928,0 c 0.512,-3.89 1.007,-7.742 1.53,-11.752 -0.8,0 -1.518,-0.002 -2.231,0 -2.825,0.012 -9.307,0 -9.307,0 0,0 0.028,-5.796 0.097,-8.312 0.097,-3.446 2.142,-4.498 4.903,-4.597 z"
id="path9"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></g></svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

69
image/social/gplus.svg Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000401"
viewBox="0 0 24 24.000401"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="gplus.svg"><defs
id="defs17" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview15"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="34.416092"
inkscape:cx="12"
inkscape:cy="12.0002"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120.002"
width="120"
y="-120"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="matrix(0.2,0,0,0.2,0,4e-4)"><path
d="M 120,93.066 C 120,107.938 107.94,120 93.069,120 l -66.135,0 C 12.059,120 0,107.938 0,93.066 L 0,26.93 C 0,12.057 12.059,-0.002 26.934,-0.002 l 66.135,0 C 107.94,-0.002 120,12.057 120,26.93 l 0,66.136 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#db5447" /><g
id="g9"><path
d="m 50.683,55.336 c -0.009,0.156 -0.021,0.284 -0.021,0.408 0,3.106 0.004,9.833 0.004,9.833 0,0 12.944,0 13.646,0 0,1.012 -1.202,5.082 -5.009,7.664 -2.236,1.514 -4.749,2.213 -7.407,2.383 -1.876,0.117 -3.727,-0.07 -5.528,-0.646 -5.69,-1.826 -9.929,-6.973 -10.505,-13.238 -0.142,-1.549 -0.044,-3.1 0.309,-4.626 1.692,-7.415 8.715,-12.911 16.759,-11.726 3.564,0.525 5.618,2.011 7.489,3.608 2.464,-2.466 4.902,-4.905 7.411,-7.42 -0.608,-0.44 -2.013,-1.867 -4.518,-3.313 -3.738,-2.162 -7.772,-3.241 -12.083,-3.288 -0.816,-0.01 -1.628,0.039 -2.439,0.073 -1.425,0.055 -2.821,0.3 -4.197,0.653 C 39.082,37.106 34.508,40 30.92,44.42 c -3.446,4.243 -5.297,9.12 -5.634,14.559 -0.15,2.304 0.028,4.603 0.536,6.859 1.437,6.316 4.745,11.406 9.968,15.23 4.047,2.963 8.605,4.545 13.605,4.82 2.813,0.154 5.609,-0.109 8.354,-0.828 5.105,-1.33 9.348,-4.002 12.533,-8.238 4.615,-6.141 5.731,-14.012 4.372,-21.486 -8.016,0 -15.98,0 -23.971,0 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><polygon
points="96.58,46.781 90.135,46.781 89.879,46.781 89.879,47.036 89.879,55.671 81.241,55.671 80.99,55.671 80.99,55.923 80.99,62.373 80.99,62.629 81.241,62.629 89.879,62.629 89.879,71.262 89.879,71.518 90.135,71.518 96.58,71.518 96.836,71.518 96.836,71.262 96.836,62.629 105.469,62.629 105.725,62.629 105.725,62.373 105.725,55.923 105.725,55.671 105.469,55.671 96.836,55.671 96.836,47.036 96.836,46.781 "
id="polygon13"
style="fill:#ffffff" /></g></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000401"
viewBox="0 0 24 24.000401"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="instagram.svg"><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview11"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="34.416092"
inkscape:cx="12"
inkscape:cy="12.0002"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120.002"
width="120"
y="-120"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="matrix(0.2,0,0,0.2,0,4e-4)"><path
d="M 120,93.065 C 120,107.937 107.941,120 93.07,120 l -66.135,0 C 12.059,120 0,107.937 0,93.065 L 0,26.93 C 0,12.054 12.059,-0.002 26.935,-0.002 l 66.135,0 c 14.871,0 26.93,12.057 26.93,26.932 l 0,66.135 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#725744" /><path
d="m 80.35,30.386 -40.703,0 c -5.11,0 -9.258,4.146 -9.258,9.261 l 0,40.702 c 0,5.114 4.148,9.258 9.258,9.258 l 40.703,0 c 5.117,0 9.262,-4.144 9.262,-9.258 l 0,-40.703 c -10e-4,-5.114 -4.145,-9.26 -9.262,-9.26 z m -7.672,8.167 c 0,-0.911 0.738,-1.65 1.652,-1.65 l 7.152,0 c 0.912,0 1.65,0.739 1.65,1.65 l 0,7.153 c 0,0.911 -0.738,1.65 -1.65,1.65 l -7.152,0 c -0.914,0 -1.652,-0.739 -1.652,-1.65 l 0,-7.153 z M 49.083,55.724 c 1.709,-4.361 5.954,-7.452 10.914,-7.452 4.965,0 9.209,3.091 10.918,7.452 0.523,1.325 0.813,2.766 0.813,4.273 0,6.466 -5.26,11.727 -11.731,11.727 -6.461,0 -11.726,-5.261 -11.726,-11.727 10e-4,-1.508 0.289,-2.948 0.812,-4.273 z M 83.34,80.349 c 0,1.647 -1.344,2.987 -2.99,2.987 l -40.703,0 c -1.648,0 -2.983,-1.34 -2.983,-2.987 l 0,-24.625 5.845,0 c -0.333,1.37 -0.507,2.799 -0.507,4.273 0,9.944 8.057,18.002 17.996,18.002 9.944,0 18,-8.058 18,-18.002 0,-1.475 -0.174,-2.903 -0.51,-4.273 l 5.852,0 0,24.625 z"
id="path9"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></g></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

70
image/social/linkedin.svg Normal file
View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000401"
viewBox="0 0 24 24.000401"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="linkedin.svg"><defs
id="defs17" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview15"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="34.416092"
inkscape:cx="12"
inkscape:cy="12.0002"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120.002"
width="120"
y="-120.002"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="scale(0.2,0.2)"><path
d="m 120,93.068 c 0,14.875 -12.055,26.934 -26.93,26.934 l -66.135,0 C 12.059,120.002 0,107.943 0,93.068 L 0,26.932 C 0,12.059 12.059,0 26.935,0 L 93.07,0 C 107.945,0 120,12.059 120,26.932 l 0,66.136 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#4c84c5" /><g
id="g9"><path
d="m 33.352,49.887 12.521,0 0,40.226 -12.521,0 0,-40.226 z m 6.263,-19.994 c 4.002,0 7.249,3.249 7.249,7.245 0,4.002 -3.247,7.256 -7.249,7.256 -4.015,0 -7.258,-3.254 -7.258,-7.256 0,-3.996 3.243,-7.245 7.258,-7.245"
id="path11"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
d="m 53.719,49.887 11.994,0 0,5.498 0.166,0 c 1.668,-3.164 5.752,-6.498 11.836,-6.498 12.66,0 14.998,8.326 14.998,19.162 l 0,22.064 -12.498,0 0,-19.56 c 0,-4.664 -0.094,-10.667 -6.498,-10.667 -6.51,0 -7.5,5.079 -7.5,10.323 l 0,19.904 -12.498,0 0,-40.226 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000401"
viewBox="0 0 24 24.000401"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="pinterest.svg"><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview11"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="35.541074"
inkscape:cx="12"
inkscape:cy="12.0002"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120.002"
width="120"
y="-120"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="matrix(0.2,0,0,0.2,0,4e-4)"><path
d="M 120,93.065 C 120,107.937 107.941,120 93.066,120 l -66.135,0 C 12.06,120 0,107.937 0,93.065 L 0,26.93 C 0,12.057 12.06,-0.002 26.931,-0.002 l 66.135,0 C 107.941,-0.002 120,12.057 120,26.93 l 0,66.135 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#db3938" /><path
d="m 55.883,69.893 c -0.057,0.188 -0.105,0.346 -0.146,0.5 -2.387,9.352 -2.65,11.43 -5.105,15.769 -1.169,2.065 -2.484,4.022 -3.941,5.89 -0.166,0.211 -0.32,0.486 -0.649,0.422 -0.357,-0.081 -0.386,-0.402 -0.426,-0.69 -0.395,-2.841 -0.609,-5.69 -0.516,-8.556 0.126,-3.738 0.588,-5.021 5.402,-25.274 0.073,-0.309 -0.009,-0.566 -0.109,-0.845 -1.153,-3.111 -1.381,-6.267 -0.374,-9.465 2.18,-6.908 10.01,-7.438 11.381,-1.737 0.845,3.525 -1.388,8.138 -3.101,14.957 -1.421,5.625 5.203,9.627 10.865,5.52 5.22,-3.787 7.245,-12.864 6.859,-19.298 -0.759,-12.828 -14.822,-15.6 -23.748,-11.47 -10.232,4.73 -12.558,17.412 -7.939,23.208 0.589,0.737 1.039,1.188 0.845,1.935 -0.297,1.16 -0.561,2.329 -0.881,3.482 -0.239,0.86 -0.958,1.173 -1.826,0.819 -1.701,-0.689 -3.122,-1.773 -4.271,-3.198 -3.925,-4.86 -5.045,-14.468 0.143,-22.602 5.743,-9.013 16.434,-12.657 26.191,-11.552 11.657,1.325 19.024,9.289 20.404,18.324 0.629,4.115 0.174,14.265 -5.602,21.438 -6.648,8.239 -17.421,8.787 -22.393,3.727 -0.382,-0.386 -0.69,-0.842 -1.063,-1.304 z"
id="path9"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></g></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

65
image/social/twitter.svg Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="24.000401"
viewBox="0 0 24 24.000401"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="twitter.svg"><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview11"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="35.541074"
inkscape:cx="12"
inkscape:cy="12.0002"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="120.002"
width="120"
y="-120.002"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="scale(0.2,0.2)"><path
d="m 120,93.068 c 0,14.871 -12.059,26.934 -26.934,26.934 l -66.135,0 C 12.059,120.002 0,107.939 0,93.068 L 0,26.932 C 0,12.059 12.059,0 26.931,0 L 93.067,0 C 107.941,0 120,12.059 120,26.932 l 0,66.136 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#70c5fc" /><path
d="m 48.803,75.27 c -7.091,-0.248 -11.522,-5.338 -12.695,-9.469 1.973,0.373 3.916,0.299 5.849,-0.18 0.049,-0.008 0.098,-0.041 0.194,-0.09 -3.84,-0.893 -6.803,-2.945 -8.86,-6.257 -1.367,-2.2 -2.021,-4.609 -2.001,-7.256 1.92,1.025 3.921,1.598 6.072,1.654 -2.886,-2.08 -4.822,-4.8 -5.613,-8.278 -0.788,-3.47 -0.28,-6.77 1.461,-9.883 7.392,8.702 16.738,13.473 28.144,14.259 -0.082,-0.54 -0.166,-1.015 -0.219,-1.494 -0.382,-3.208 0.26,-6.204 1.992,-8.921 2.172,-3.403 5.273,-5.521 9.254,-6.168 4.588,-0.753 8.594,0.557 11.945,3.804 0.225,0.217 0.41,0.288 0.727,0.217 2.805,-0.608 5.447,-1.619 7.936,-3.053 0.061,-0.034 0.121,-0.066 0.184,-0.093 0.012,-0.008 0.031,-0.006 0.088,-0.006 -1.08,3.174 -3.043,5.617 -5.84,7.423 2.643,-0.288 5.162,-0.99 7.598,-2.043 0.02,0.022 0.037,0.042 0.053,0.061 -0.52,0.684 -1.027,1.382 -1.566,2.046 -1.449,1.786 -3.109,3.354 -4.961,4.714 -0.158,0.116 -0.23,0.228 -0.227,0.429 0.078,2.025 -0.004,4.049 -0.252,6.06 -0.527,4.239 -1.709,8.285 -3.518,12.146 -1.867,3.99 -4.307,7.594 -7.375,10.76 -5.195,5.371 -11.459,8.836 -18.752,10.447 -2.501,0.549 -5.037,0.832 -7.599,0.906 -7.87,0.227 -15.144,-1.729 -21.836,-5.861 -0.085,-0.049 -0.17,-0.113 -0.321,-0.211 4.765,0.516 9.291,-0.098 13.65,-1.879 2.312,-0.947 4.455,-2.193 6.488,-3.784 z"
id="path9"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></g></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,68 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="23.999996"
id="svg11927"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="youtube.svg">
<defs
id="defs3" />
<sodipodi:namedview
inkscape:document-units="mm"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="34.458339"
inkscape:cx="12"
inkscape:cy="11.999998"
inkscape:current-layer="layer1"
showgrid="false"
units="mm"
borderlayer="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-65.660672,-187.08936)">
<path
style="display:inline;fill:#c30000;fill-opacity:1;stroke:none"
d="m 68.556274,210.90728 c -2.293676,-0.68242 -2.880675,-2.99702 -2.89518,-11.41603 -0.01025,-5.94721 0.16327,-7.96905 0.8512,-9.91843 0.533461,-1.51166 1.175311,-1.99041 3.044687,-2.271 1.814867,-0.27243 11.459517,-0.28622 15.293322,-0.0219 5.345509,0.48245 4.737665,4.05194 4.797522,11.13 0.06208,7.3381 -0.07728,8.93495 -0.942902,10.80584 -0.857753,1.85393 -0.528524,1.79528 -10.467486,1.86487 -5.046389,0.0354 -9.231633,-0.0396 -9.681163,-0.17336 z m 14.013699,-11.9128 c -9.225923,-6.1861 1.31465,0.90117 -8.167348,-5.4762 0.0541,2.97456 0.0086,8.38462 0.04076,11.04998 9.474933,-6.37668 -1.004697,0.69337 8.126587,-5.57378 z"
id="path11905"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssscccsccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:ns="&amp;ns_sfw;"
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#"
@ -9,60 +10,56 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="23.999996"
id="svg11927"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="24"
height="23.999599"
viewBox="0 0 24 23.999599"
enable-background="new 0 0 120 120"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="youtube.svg">
<defs
id="defs3" />
<sodipodi:namedview
inkscape:document-units="mm"
id="base"
sodipodi:docname="youtube.svg"><defs
id="defs13" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="34.458339"
inkscape:cx="12"
inkscape:cy="11.999998"
inkscape:current-layer="layer1"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview11"
showgrid="false"
units="mm"
borderlayer="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-65.660672,-187.08936)">
<path
style="display:inline;fill:#c30000;fill-opacity:1;stroke:none"
d="m 68.556274,210.90728 c -2.293676,-0.68242 -2.880675,-2.99702 -2.89518,-11.41603 -0.01025,-5.94721 0.16327,-7.96905 0.8512,-9.91843 0.533461,-1.51166 1.175311,-1.99041 3.044687,-2.271 1.814867,-0.27243 11.459517,-0.28622 15.293322,-0.0219 5.345509,0.48245 4.737665,4.05194 4.797522,11.13 0.06208,7.3381 -0.07728,8.93495 -0.942902,10.80584 -0.857753,1.85393 -0.528524,1.79528 -10.467486,1.86487 -5.046389,0.0354 -9.231633,-0.0396 -9.681163,-0.17336 z m 14.013699,-11.9128 c -9.225923,-6.1861 1.31465,0.90117 -8.167348,-5.4762 0.0541,2.97456 0.0086,8.38462 0.04076,11.04998 9.474933,-6.37668 -1.004697,0.69337 8.126587,-5.57378 z"
id="path11905"
inkscape:zoom="35.54226"
inkscape:cx="12"
inkscape:cy="11.9998"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Capa_1" /><metadata
id="metadata3"><ns:sfw><ns:slices /><ns:sliceSourceBounds
height="119.998"
width="120"
y="-119.998"
x="0"
bottomLeftOrigin="true" /></ns:sfw><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></dc:title></cc:Work></rdf:RDF></metadata><g
id="g5"
transform="scale(0.2,0.2)"><path
d="m 120,93.068 c 0,14.875 -12.059,26.93 -26.934,26.93 l -66.135,0 C 12.06,119.998 0,107.943 0,93.068 L 0,26.932 C 0,12.059 12.06,0 26.931,0 L 93.066,0 C 107.941,0 120,12.059 120,26.932 l 0,66.136 z"
id="path7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssscccsccccc" />
</g>
</svg>
style="fill:#da3b35" /><path
d="m 33.312,82.178 c -2.537,-0.832 -4.246,-2.496 -5.159,-5.014 -2.237,-6.141 -2.894,-31.838 1.404,-36.896 1.469,-1.733 3.365,-2.748 5.618,-2.989 11.588,-1.244 47.407,-1.067 51.535,0.42 2.419,0.868 4.136,2.451 5.069,4.875 2.443,6.35 2.528,29.454 -0.32,35.569 -0.775,1.66 -2.038,2.83 -3.637,3.67 -4.323,2.263 -48.824,2.236 -54.51,0.365 z M 51.723,70.131 C 58.692,66.518 65.6,62.94 72.597,59.31 65.592,55.653 58.68,52.048 51.723,48.418 c 0,7.257 0,14.439 0,21.713 z"
id="path9"
inkscape:connector-curvature="0"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd" /></g></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -29,18 +29,18 @@
<ul id="main-menu" class="main-menu"></ul>
</div>
<div class="links">
<a target="_blank" href="https://blog.verdnatura.es/">
<img alt="Blogger" src="image/social/blog.svg" title="Blog"/>
</a>
<a target="_blank" href="https://plus.google.com/u/0/107516577801959283883/posts">
<img alt="Google+" src="image/social/google-plus.svg" title="Google+"/>
</a>
<a target="_blank" href="http://www.facebook.com/verdnatura">
<img alt="Facebook" src="image/social/facebook.svg" title="Facebook"/>
</a>
<a target="_blank" href="http://www.youtube.com/user/verdnatura">
<img alt="YouTube" src="image/social/youtube.svg" title="YouTube"/>
</a>
<a target="_blank" href="http://www.facebook.com/verdnatura">
<img alt="Facebook" src="image/social/facebook.svg" title="Facebook"/>
</a>
<a target="_blank" href="https://twitter.com/Verdnatura">
<img alt="Twitter" src="image/social/twitter.svg" title="Twitter"/>
</a>
<a target="_blank" href="https://www.instagram.com/verdnatura">
<img alt="Instagram" src="image/social/instagram.svg" title="Instagram"/>
</a>
<a target="_blank" href="http://www.youtube.com/user/verdnatura">
<img alt="YouTube" src="image/social/youtube.svg" title="YouTube"/>
</a>
</div>
</div>
<div class="body">

View File

@ -45,8 +45,8 @@ body
margin: 0 auto;
max-width: 40em;
height: 100%;
background-color: white;
box-shadow: 0 0.2em 0.2em #DDD;
background-color: #9CBC28;
box-shadow: 0 .3em .3em rgba(1, 1, 1, 0.4);
}
/* Login */
@ -54,12 +54,12 @@ body
.vn-login .login
{
position: absolute;
margin-top: -16em;
padding: 1em;
max-width: 45em;
max-width: 15em;
top: 50%;
left: 0;
right: 0;
left: 50%;
margin-top: -20em;
margin-left: -8.5em;
}
@media (max-height: 630px)
@ -76,21 +76,38 @@ body
padding: 1.5em 1em;
}
}
.vn-login .logo img
.vn-login form > div
{
margin: 1em 0;
}
.vn-login p
{
margin: .4em 0;
}
/* Header */
.vn-login .header
{
margin-bottom: 3em;
}
.vn-login .header img
{
display: block;
margin: 0.5em auto;
min-width: 20em;
width: 75%;
width: 100%;
}
.vn-login .version-code
{
color: red;
text-align: right;
margin: 0.2em auto;
margin: .2em auto;
font-weight: bold;
height: 1.4em;
display: none;
}
/* Body */
.vn-login .form-inputs
{
margin: 0 auto;
@ -112,8 +129,8 @@ body
.vn-login input[type=text],
.vn-login input[type=password]
{
margin: .5em 0;
margin-bottom: 0.5em;
margin: 0;
margin-top: .5em;
padding: 0 .5em;
width: 100%;
border: 1px solid #AAA;
@ -121,36 +138,45 @@ body
}
.vn-login input[type=text],
.vn-login input[type=password],
.vn-login input[type=submit]
.vn-login input[type=submit],
.vn-login input[type=button],
.vn-login button
{
border-radius: 0.1em;
box-shadow: 0 0.1em 0.1em #AAA;
border-radius: .1em;
box-shadow: 0 .1em .1em rgba(1, 1, 1, 0.4);
}
.vn-login td.entry
.vn-login input[type=checkbox]
{
text-align: left;
padding: 0;
margin: 0;
width: initial;
height: initial;
margin-right: .5em;
}
.vn-login .submit
{
text-align: center;
}
.vn-login .submit > *
{
display: inline-block;
vertical-align: top;
}
.vn-login input[type=submit]
.vn-login input[type=submit],
.vn-login input[type=button],
.vn-login button
{
margin: 0 auto;
background-color: #AD4;
border: 1px solid #8B2;
background-color: #333;
border: 1px solid #222;
height: 2.4em;
width: 8em;
color: #250;
width: 100%;
color: white;
text-transform: uppercase;
}
.vn-login input[type=submit]:hover
.vn-login input[type=submit]:hover,
.vn-login input[type=button]:hover,
.vn-login button:hover
{
background-color: #9C3;
background-color: #222;
}
hr
{
border: solid 1px white;
margin: 0;
padding: 0;
display: block;
}
.vn-login .wrapper
{
@ -163,37 +189,29 @@ body
margin: .45em 1em;
position: absolute;
}
.vn-login .bottom
{
text-align: center;
padding: 1em;
}
/* Info */
/* Footer */
.vn-login .info
.vn-login .footer
{
margin-top: 3em;
}
.vn-login .social
{
margin-top: 2em;
text-align: center;
}
.vn-login .info p
{
margin: 0.5em;
}
.vn-login .links
{
margin: 0 auto;
margin-top: 2em;
text-align: center;
}
.vn-login .links a
.vn-login .social a
{
display: inline-block;
margin: 0 .1em;
}
.vn-login .links img
.vn-login .social img
{
height: 1.8em;
width: 1.8em;
}
.vn-login .contact
{
text-align: center;
}

View File

@ -14,7 +14,10 @@ Vn.Login = new Class
,set: function (x)
{
this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange});
}
/* x.execQuery (
'SELECT title, link, icon FROM social ORDER BY priority',
this.onSocialQueryDone.bind (this));
*/ }
,get: function ()
{
return this._conn;
@ -94,6 +97,26 @@ Vn.Login = new Class
else
this._focusUserInput ();
}
,onSocialQueryDone: function (resultSet)
{
var res = resultSet.fetchResult ();
var social = this.$('social');
while (res.next ())
{
var a = document.createElement ('a');
a.href = res.get ('link');
a.target = '_blank';
social.appendChild (a);
var img = document.createElement ('img');
imt.src = 'image/social/'+ res.get ('icon');
img.alt = res.get ('title');
img.title = res.get ('title');
a.appendChild (img);
}
}
});
});

View File

@ -11,48 +11,76 @@
<div class="column">
<div class="login">
<form id="form">
<div class="logo">
<img src="image/logo.svg" alt=""/>
<div class="header">
<img src="image/banner.svg" alt=""/>
<div class="version-code"/>
</div>
<div class="version-code"/>
<div class="form-inputs">
<div class="form-group">
<label for="user"><t>User</t></label>
<input type="text" id="user" name="user"/>
</div>
<div class="form-group">
<label for="pass"><t>Password</t></label>
<input type="password" id="pass" name="password"/>
</div>
<div class="form-group">
<label for="user"><t>User</t></label>
<input type="text" id="user" name="user"/>
</div>
<div class="bottom">
<div class="form-group">
<label for="pass"><t>Password</t></label>
<input type="password" id="pass" name="password"/>
</div>
<div>
<input type="checkbox" id="remember" name="remember"/>
<label for="remember"><t>Do not sign out</t></label>
</div>
<div class="submit">
<div>
<input id="submit" type="submit" value="_Enter"/>
<div class="wrapper">
<htk-spinner id="spinner"/>
</div>
<p>
<a href="?srv=json:core/recover-password">
<t>Password forgotten? Push here</t>
</a>
</p>
</div>
<div class="info">
<p><t>Login mail</t></p>
<p><t>Login phone</t></p>
<div>
<hr/>
</div>
<div class="links">
<a target="_blank" href="https://blog.verdnatura.es/">
<img alt="Blogger" src="image/social/blog.svg" title="Blog"/>
</a>
<a target="_blank" href="https://plus.google.com/u/0/107516577801959283883/posts">
<img alt="Google+" src="image/social/google-plus.svg" title="Google+"/>
</a>
<a target="_blank" href="http://www.facebook.com/verdnatura">
<img alt="Facebook" src="image/social/facebook.svg" title="Facebook"/>
</a>
<a target="_blank" href="http://www.youtube.com/user/verdnatura">
<img alt="YouTube" src="image/social/youtube.svg" title="YouTube"/>
<div>
<p><t>Yet you are not a customer?</t></p>
<a target="_blank" href="https://goo.gl/forms/acgmJcAPhQL6MOMO2">
<button type="button">
<t>Sign up</t>
</button>
</a>
</div>
<div class="footer">
<div id="social" class="social">
<a target="_blank" href="http://www.facebook.com/verdnatura">
<img alt="Facebook" src="image/social/facebook.svg" title="Facebook"/>
</a>
<a target="_blank" href="https://twitter.com/Verdnatura">
<img alt="Twitter" src="image/social/twitter.svg" title="Twitter"/>
</a>
<a target="_blank" href="https://www.instagram.com/verdnatura">
<img alt="Instagram" src="image/social/instagram.svg" title="Instagram"/>
</a>
<a target="_blank" href="http://www.youtube.com/user/verdnatura">
<img alt="YouTube" src="image/social/youtube.svg" title="YouTube"/>
</a>
<a target="_blank" href="https://plus.google.com/u/1/112915460747485233678">
<img alt="Google+" src="image/social/gplus.svg" title="Google+"/>
</a>
<a target="_blank" href="https://www.linkedin.com/company/verdnatura">
<img alt="Linkedin" src="image/social/linkedin.svg" title="Linkedin"/>
</a>
<a target="_blank" href="https://es.pinterest.com/verdnatura/">
<img alt="Pinterest" src="image/social/pinterest.svg" title="Pinterest"/>
</a>
<!-- <a target="_blank" href="https://blog.verdnatura.es/">
<img alt="Blog" src="image/social/blog.svg" title="Blog"/>
</a>
--> </div>
<div class="contact">
<p><t>Login mail</t></p>
<p><t>Login phone</t></p>
</div>
</div>
</form>
</div>
</div>

View File

@ -16,7 +16,7 @@ var Vn =
{
if (this._version === undefined)
{
var re = /[; ]hedera_version=([^\\s;]*)/;
var re = /[; ]vn_version=([^\\s;]*)/;
var sMatch = (' '+ document.cookie).match (re);
this._version = (sMatch) ? '?'+ unescape (sMatch[1]) : '';
}

View File

@ -4,23 +4,15 @@ require_once ('vn/web/json-request.php');
class Log extends Vn\Web\JsonRequest
{
const PARAMS = [
'file'
,'line'
,'message'
,'stack'
];
function run ()
{
try {
$this->login ();
}
catch (Exception $e) {}
$params = [
'file'
,'line'
,'message'
,'stack'
];
if (!$this->checkParams ($_REQUEST, $params))
return FALSE;
{
$user = isset ($_SESSION['user']) ? $_SESSION['user'] : 'guest';
error_log (sprintf ("Javascript: User: %s: %s(%d): %s.\n%s"
,$user

View File

@ -6,7 +6,6 @@ class Login extends Vn\Web\JsonRequest
{
function run ()
{
$this->login ();
$this->updateCredentials ();
return TRUE;
}

View File

@ -6,7 +6,6 @@ class Logout extends Vn\Web\JsonRequest
{
function run ()
{
$this->login ();
$this->logout ();
return TRUE;
}

View File

@ -6,13 +6,10 @@ use Vn\Lib;
class Query extends Vn\Web\JsonRequest
{
function run ()
{
$db = $this->login ();
if (empty ($_REQUEST['sql']))
throw new Lib\Exception (s('EmptyQuery'), 'emptyQuery');
const PARAMS = ['sql'];
function run ($db)
{
$results = [];
try {
@ -23,101 +20,16 @@ class Query extends Vn\Web\JsonRequest
if ($result !== FALSE)
{
$tableMap = [];
$columns = $result->fetch_fields ();
$resultMap =
[
'data' => [],
'columns' => [],
'tables' => []
];
for ($i = 0; $i < $result->field_count; $i++)
{
$column = $columns[$i];
switch ($column->type)
{
case MYSQLI_TYPE_BIT:
$type = TYPE_BOOLEAN;
break;
case MYSQLI_TYPE_TINY:
case MYSQLI_TYPE_SHORT:
case MYSQLI_TYPE_LONG:
case MYSQLI_TYPE_LONGLONG:
case MYSQLI_TYPE_INT24:
case MYSQLI_TYPE_YEAR:
$type = TYPE_INTEGER;
break;
case MYSQLI_TYPE_FLOAT:
case MYSQLI_TYPE_DOUBLE:
case MYSQLI_TYPE_DECIMAL:
case MYSQLI_TYPE_NEWDECIMAL:
$type = TYPE_DOUBLE;
break;
case MYSQLI_TYPE_DATE:
$type = TYPE_DATE;
break;
case MYSQLI_TYPE_DATETIME:
case MYSQLI_TYPE_TIMESTAMP:
$type = TYPE_DATE_TIME;
break;
default;
$type = TYPE_STRING;
}
if (!isset ($tableMap[$column->table]))
{
$resultMap['tables'][] =
[
'name' => $column->table,
'orgname' => $column->orgtable,
'schema' => $column->db,
'pks' => []
];
$tableIndex = count ($resultMap['tables']) - 1;
$tableMap[$column->table] = $tableIndex;
}
else
$tableIndex = $tableMap[$column->table];
if ($column->flags & MYSQLI_PRI_KEY_FLAG)
$resultMap['tables'][$tableIndex]['pks'][] = $i;
$default = $this->castValue ($column->def, $type);
$resultMap['columns'][] =
[
'type' => $type,
'flags' => $column->flags,
'def' => $default,
'name' => $column->name,
'orgname' => $column->orgname,
'table' => $tableIndex
];
}
$columns = $resultMap['columns'];
while ($row = $result->fetch_row ())
{
for ($j = 0; $j < $result->field_count; $j++)
$this->castValue ($row[$j], $columns[$j]['type']);
$resultMap['data'][] = $row;
}
$results[] = $resultMap;
$results[] = $this->transformResult ($result);
$result->free ();
}
else
$results[] = TRUE;
}
while ($db->moreResults () && $db->nextResult ());
// Checks for warnings
if ($db->checkWarnings ()
&& ($result = $db->query ('SHOW WARNINGS')))
{
@ -133,7 +45,7 @@ class Query extends Vn\Web\JsonRequest
trigger_error ("${row['Code']}: ${row['Message']}", E_USER_WARNING);
}
}
// Checks for errors
$db->checkError ();
@ -173,7 +85,103 @@ class Query extends Vn\Web\JsonRequest
return $results;
}
/**
* Transforms the database result into a JSON parseable array.
**/
function transformResult ($result)
{
$tableMap = [];
$columns = $result->fetch_fields ();
$resultMap =
[
'data' => [],
'columns' => [],
'tables' => []
];
for ($i = 0; $i < $result->field_count; $i++)
{
$column = $columns[$i];
switch ($column->type)
{
case MYSQLI_TYPE_BIT:
$type = TYPE_BOOLEAN;
break;
case MYSQLI_TYPE_TINY:
case MYSQLI_TYPE_SHORT:
case MYSQLI_TYPE_LONG:
case MYSQLI_TYPE_LONGLONG:
case MYSQLI_TYPE_INT24:
case MYSQLI_TYPE_YEAR:
$type = TYPE_INTEGER;
break;
case MYSQLI_TYPE_FLOAT:
case MYSQLI_TYPE_DOUBLE:
case MYSQLI_TYPE_DECIMAL:
case MYSQLI_TYPE_NEWDECIMAL:
$type = TYPE_DOUBLE;
break;
case MYSQLI_TYPE_DATE:
$type = TYPE_DATE;
break;
case MYSQLI_TYPE_DATETIME:
case MYSQLI_TYPE_TIMESTAMP:
$type = TYPE_DATE_TIME;
break;
default;
$type = TYPE_STRING;
}
if (!isset ($tableMap[$column->table]))
{
$resultMap['tables'][] =
[
'name' => $column->table,
'orgname' => $column->orgtable,
'schema' => $column->db,
'pks' => []
];
$tableIndex = count ($resultMap['tables']) - 1;
$tableMap[$column->table] = $tableIndex;
}
else
$tableIndex = $tableMap[$column->table];
if ($column->flags & MYSQLI_PRI_KEY_FLAG)
$resultMap['tables'][$tableIndex]['pks'][] = $i;
$default = $this->castValue ($column->def, $type);
$resultMap['columns'][] =
[
'type' => $type,
'flags' => $column->flags,
'def' => $default,
'name' => $column->name,
'orgname' => $column->orgname,
'table' => $tableIndex
];
}
$columns = $resultMap['columns'];
while ($row = $result->fetch_row ())
{
for ($j = 0; $j < $result->field_count; $j++)
$this->castValue ($row[$j], $columns[$j]['type']);
$resultMap['data'][] = $row;
}
return $resultMap;
}
/**
* Transforms the database value into a JSON parseable value.
**/
function castValue (&$value, $type)
{
if ($value !== NULL)
@ -202,6 +210,7 @@ class Query extends Vn\Web\JsonRequest
break;
}
}
}
?>

66
rest/core/recover-password.php Executable file
View File

@ -0,0 +1,66 @@
<?php
require_once ('vn/web/json-request.php');
class RecoverPassword extends Vn\Web\JsonRequest
{
const PARAMS = ['user'];
const LOWERS = 'abcdefghijklmnopqrstuvwxyz';
const UPPERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const DIGITS = '1234567890';
const SYMBOLS = '!$%&()=.';
function run ($db)
{
$isEnabled = $db->getValue (
'SELECT active FROM account.user WHERE name = #',
[$_REQUEST['user']]);
if (!$isEnabled)
return TRUE;
$restrictions = $db->getRow (
'SELECT length, nupper, ndigits, npunct FROM account.user_password');
$pass = [];
$newPass = '';
$nAlpha = $restrictions['length'] - (
$restrictions['nupper'] +
$restrictions['ndigits'] +
$restrictions['npunct']);
$this->genRands ($pass, self::LOWERS, $nAlpha);
$this->genRands ($pass, self::UPPERS, $restrictions['nupper']);
$this->genRands ($pass, self::DIGITS, $restrictions['ndigits']);
$this->genRands ($pass, self::SYMBOLS, $restrictions['npunct']);
for ($i = count ($pass) - 1; $i >= 0; $i--)
{
$rand = rand (0, $i);
$newPass .= $pass[$rand];
array_splice ($pass, $rand, 1);
}
// XXX: Debug
error_log ($newPass);
return TRUE;
$db->query (
'UPDATE account.user SET password = # WHERE name = #',
[$randomPass, $_REQUEST['user']]);
return TRUE;
}
function genRands (&$pass, $chars, $max)
{
$len = strlen ($chars) - 1;
for ($i = 0; $i < $max; $i++)
$pass[] = $chars[rand (0, $len)];
}
}
?>

View File

@ -14,7 +14,6 @@ class Add extends Vn\Web\JsonRequest
// XXX: Uncomment only to test the script
//$_REQUEST['description'] = 'description';
$this->login ();
$db = $this->getSysConn ();
$description = empty ($_REQUEST['description']) ?

View File

@ -5,13 +5,10 @@ require_once ('vn/web/util.php');
class Invoice extends Vn\Web\RestRequest
{
function run ()
const PARAMS = ['invoice'];
function run ($db)
{
$db = $this->login ();
if (empty ($_REQUEST['invoice']))
throw new Exception (s('Invoice id not sent'));
$pdfPath = $db->getValueFromFile (__DIR__ .'/invoice',
['invoice' => (int) $_GET['invoice']]);

View File

@ -24,10 +24,10 @@ class Image
$image = imagecreatefromgif ($srcFile);
break;
default:
throw new Exception (s('Bad file format'), 'badFileFormat');
throw new Exception (s('Bad file format'));
}
else
throw new Exception (s('Image open error'), 'openError');
throw new Exception (s('Image open error'));
return $image;
}
@ -138,7 +138,7 @@ class Image
}
if (!$saved)
throw new Exception (sprintf (s('File save error: %s'), $dstFile), 'saveError');
throw new Exception (sprintf (s('File save error: %s'), $dstFile));
}
}

View File

@ -14,21 +14,22 @@ require_once (__DIR__.'/lib.php');
**/
class Resize extends Vn\Lib\Method
{
const PARAMS = [
'src_dir'
,'dst_dir'
,'max_height'
,'max_Width'
,'rewrite'
,'crop'
,'symbolic'
];
function run ()
{
$params = [
'src_dir'
,'dst_dir'
,'max_height'
,'max_Width'
,'rewrite'
,'crop'
,'symbolic'
];
$options = getopt ('', $params);
if (!$this->checkParams ($options, $params)
if (!$this->checkParams ($options, self::PARAMS)
$this->usage ();
$srcDir = $options['src_dir'];

View File

@ -4,15 +4,15 @@ require_once ('vn/web/json-request.php');
require_once (__DIR__.'/util.php');
use Vn\Lib;
use Vn\Lib\UserException;
/**
* Uploads a file creating its corresponding sizes.
**/
class Upload extends Vn\Web\JsonRequest
{
function run ()
function run ($db)
{
$db = $this->login ();
$util = new Util ($this->app);
// Checks schema.
@ -20,13 +20,13 @@ class Upload extends Vn\Web\JsonRequest
$regexp = '/[^a-z0-9_]/';
if (empty ($_REQUEST['schema']) || preg_match ($regexp, $_REQUEST['schema']) !== 0)
throw new Lib\UserException (s('BadSchemaName'), 'badSchemaName');
throw new UserException (s('BadSchemaName'), 'badSchemaName');
$schema = $_REQUEST['schema'];
$info = $util->loadInfo ($schema);
if (!$info)
throw new Lib\UserException (s('SchemaNotExists'), 'schemaNotExists');
throw new UserException (s('SchemaNotExists'), 'schemaNotExists');
// Checks file name and identifier.
@ -51,7 +51,7 @@ class Upload extends Vn\Web\JsonRequest
}
if (empty ($_REQUEST['name']) || preg_match ($regexp, $_REQUEST['name']) !== 0)
throw new Lib\UserException (s('BadFileName'), 'badFileName');
throw new UserException (s('BadFileName'), 'badFileName');
// Checks permissions.
@ -79,12 +79,12 @@ class Upload extends Vn\Web\JsonRequest
];
if (!$db->query ($query, $params))
throw new Lib\UserException (s('PermissionDenied'), 'permissionDenied');
throw new UserException (s('PermissionDenied'), 'permissionDenied');
// Checks for file errors.
if (empty ($_FILES['image']['name']))
throw new Lib\UserException (s('FileNotChoosed'), 'fileNotChoosed');
throw new UserException (s('FileNotChoosed'), 'fileNotChoosed');
if ($_FILES['image']['error'] != 0)
{
@ -122,7 +122,7 @@ class Upload extends Vn\Web\JsonRequest
$maxSize = $db->getValue ('SELECT max_size FROM image_config');
if ($_FILES['image']['size'] > $maxSize * 1048576)
throw new Lib\UserException (sprintf (s('FileSizeError'), $maxSize), 'fileSizeError');
throw new UserException (sprintf (s('FileSizeError'), $maxSize), 'fileSizeError');
// Resizes and saves the image.

View File

@ -7,21 +7,16 @@ use Vn\Lib;
class Contact extends Vn\Web\JsonRequest
{
const PARAMS = [
'name'
,'pc'
,'phone'
,'email'
,'message'
];
function run ()
{
// Verifies that sent data is valid
$params = [
'name'
,'pc'
,'phone'
,'email'
,'message'
];
if (!$this->checkParams ($_REQUEST, $params))
throw new Lib\UserException (s('Missing parameters'), 'missingParams');
// Checks the antispam code
$lastCaptcha = $_SESSION['captcha'];

View File

@ -6,18 +6,13 @@ use Vn\Lib;
class Sms extends Vn\Web\JsonRequest
{
function run ()
const PARAMS = [
'to'
,'text'
];
function run ($db)
{
$db = $this->login ();
$params = [
'text'
,'to'
];
if (!$this->checkParams ($_REQUEST, $params))
throw new Lib\UserException (s('Missing parameters'), 'missingParams');
$smsConfig = $db->getRow ('SELECT uri, user, password, title FROM sms_config');
$sClient = new SoapClient ($smsConfig['uri']);
@ -25,12 +20,12 @@ class Sms extends Vn\Web\JsonRequest
$smsConfig['user']
,$smsConfig['password']
,$smsConfig['title']
,$_GET['to']
,$_GET['text']
,$_REQUEST['to']
,$_REQUEST['text']
);
$xmlResponse = new SimpleXMLElement ($xmlString);
$customer = empty ($_GET['customer']) ? NULL : $_GET['customer'];
$customer = empty ($_REQUEST['customer']) ? NULL : $_REQUEST['customer'];
try {
$sms = $xmlResponse->sms;
@ -38,9 +33,9 @@ class Sms extends Vn\Web\JsonRequest
'INSERT INTO vn2008.sms (Id_trabajador, `text`, `to`, `from`, sent, response, Id_Cliente)
VALUES (account.user_get_id(), #, #, #, #, #, #)',
[
$_GET['text']
,$_GET['to']
,$_GET['to']
$_REQUEST['text']
,$_REQUEST['to']
,$_REQUEST['to']
,$sms->codigo
,$sms->descripcion
,$customer

View File

@ -7,13 +7,10 @@ require_once ('vn/web/json-request.php');
**/
class Transaction extends Vn\Web\JsonRequest
{
function run ()
const PARAMS = ['amount'];
function run ($db)
{
$db = $this->login ();
if (empty ($_REQUEST['amount']))
throw new Exception ('Amount parameter not defined');
$amount = (int) $_REQUEST['amount'];
$companyId = empty ($_REQUEST['company']) ? NULL : $_REQUEST['company'];

View File

@ -125,6 +125,8 @@ class App extends \Vn\Lib\App
if (!isset ($user))
throw new SessionExpiredException ();
$user = strtolower ($user);
try {
$db = $this->createConnection ($user, $password);
@ -190,8 +192,8 @@ class App extends \Vn\Lib\App
if ($this->conn)
{
$this->conn->query (
'DELETE FROM user_session_view '
.'WHERE connection_id = CONNECTION_ID()'
'DELETE FROM user_session_view
WHERE connection_id = CONNECTION_ID()'
);
$this->conn->close ();
$this->conn = NULL;

View File

@ -34,7 +34,7 @@ class JsonService extends RestService
$method = $this->app->loadMethod (
$_REQUEST['method'], __NAMESPACE__.'\JsonRequest', './rest');
$json = $method->run ();
$json = $method->runRest ();
$this->replyJson ($json);
}

View File

@ -4,11 +4,33 @@ namespace Vn\Web;
require_once (__DIR__.'/rest-service.php');
use Vn\Lib;
/**
* Base class for REST services.
**/
abstract class RestRequest extends \Vn\Lib\Method
{
const PARAMS = NULL;
const LOGIN_REQUIRED = TRUE;
function runRest ()
{
try {
$db = $this->login ();
}
catch (Exception $e)
{
if (self::LOGIN_REQUIRED)
throw $e;
}
if (self::PARAMS !== NULL && !$this->checkParams ($_REQUEST, self::PARAMS))
throw new Lib\UserException (s('Missing parameters'));
return $this->run ($db);
}
/**
* Authenticates the user agaisnt database and returns its associated
* database connection.

View File

@ -22,7 +22,7 @@ class RestService extends Service
$method = $this->app->loadMethod (
$_REQUEST['method'], __NAMESPACE__.'\RestRequest', './rest');
$method->run ();
$method->runRest ();
}
/**