Merge branch 'master' into currency

This commit is contained in:
Rafael Schouten
2014-09-11 12:09:18 +10:00
60 changed files with 1152 additions and 431 deletions

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="32px" y="32px" height="32px" width="32px"
viewBox="0 0 30.2 40" enable-background="new 0 0 30.2 40" xml:space="preserve">
<g id="Layer_1_1_">
<g>
<g>
<g>
<path fill="#C1122B" d="M15.1,39.5c-0.1,0-0.2,0-0.3-0.1C14.2,38.9,0.5,27.2,0.5,15.1C0.5,7.1,7,0.5,15.1,0.5
s14.6,6.6,14.6,14.6c0,12.3-13.7,23.8-14.3,24.3C15.3,39.5,15.2,39.5,15.1,39.5z"/>
<path fill="#E5E5E5" d="M15.1,1c8,0,14.1,6.5,14.1,14.1C29.2,27.4,15.1,39,15.1,39S1,27.1,1,15.1C1,7.5,7.1,1,15.1,1 M15.1,0
C6.8,0,0,6.8,0,15.1c0,12.3,13.9,24.1,14.5,24.6c0.2,0.2,0.4,0.2,0.6,0.2c0.2,0,0.5-0.1,0.6-0.2c0.6-0.5,14.5-12.1,14.5-24.6
C30.2,6.8,23.4,0,15.1,0L15.1,0z"/>
</g>
</g>
<g>
<g>
<path fill="#0B8C61" d="M15.1,32.5c-0.1,0-0.2,0-0.3-0.1c-0.4-0.3-9.1-7.7-9.1-15.5c0-5.2,4.2-9.4,9.4-9.4s9.4,4.2,9.4,9.4
c0,7.9-8.7,15.2-9.1,15.5C15.3,32.5,15.2,32.5,15.1,32.5z"/>
<path fill="#E5E5E5" d="M15.1,8c5.1,0,8.9,4.1,8.9,8.9c0,7.7-8.9,15.1-8.9,15.1s-8.9-7.5-8.9-15.1C6.2,12.1,10,8,15.1,8 M15.1,7
c-5.5,0-9.9,4.5-9.9,9.9c0,8,8.9,15.5,9.3,15.8c0.2,0.2,0.4,0.2,0.6,0.2c0.2,0,0.5-0.1,0.6-0.2C16.1,32.5,25,25,25,16.9
C25,11.5,20.6,7,15.1,7L15.1,7z"/>
</g>
</g>
</g>
</g>
<g id="source_files" display="none">
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="32px" y="32px" height="32px" width="32px"
viewBox="0 0 30.2 40" enable-background="new 0 0 30.2 40" xml:space="preserve">
<g id="Layer_1_1_">
<g>
<g>
<g>
<path fill="#C1122B" d="M15.1,39.5c-0.1,0-0.2,0-0.3-0.1C14.2,38.9,0.5,27.2,0.5,15.1C0.5,7.1,7,0.5,15.1,0.5
s14.6,6.6,14.6,14.6c0,12.3-13.7,23.8-14.3,24.3C15.3,39.5,15.2,39.5,15.1,39.5z"/>
<path fill="#E5E5E5" d="M15.1,1c8,0,14.1,6.5,14.1,14.1C29.2,27.4,15.1,39,15.1,39S1,27.1,1,15.1C1,7.5,7.1,1,15.1,1 M15.1,0
C6.8,0,0,6.8,0,15.1c0,12.3,13.9,24.1,14.5,24.6c0.2,0.2,0.4,0.2,0.6,0.2c0.2,0,0.5-0.1,0.6-0.2c0.6-0.5,14.5-12.1,14.5-24.6
C30.2,6.8,23.4,0,15.1,0L15.1,0z"/>
</g>
</g>
<path fill="#FFFFFF" d="M16.9,21.7c1.9-3.2,3.9-7.3,3.9-9.5c0-3.2-2.6-5.7-5.7-5.7S9.4,9,9.4,12.2c0,2.2,2.1,6.3,3.9,9.5
c-2.1,0.3-3.5,1.2-3.5,2.3c0,1.4,2.3,2.5,5.3,2.5s5.3-1.1,5.3-2.5C20.4,22.9,19,22.1,16.9,21.7z M12.2,12.2c0-1.6,1.3-2.9,2.9-2.9
c1.6,0,2.9,1.3,2.9,2.9c0,1.6-1.3,2.9-2.9,2.9C13.5,15.1,12.2,13.8,12.2,12.2z M15.1,25.7c-2.7,0-4.6-0.9-4.6-1.7
c0-0.6,1.2-1.4,3.2-1.6c0.1,0.2,0.2,0.3,0.3,0.4c0,0.1,0.1,0.2,0.1,0.2c0.1,0.2,0.2,0.3,0.3,0.5c0,0,0.1,0.1,0.1,0.1
c0.1,0.2,0.2,0.3,0.2,0.4c0,0,0,0,0,0c0.1,0.1,0.1,0.1,0.1,0.1l0.3,0.5l0.3-0.5c0,0,0,0,0.1-0.1c0,0,0-0.1,0-0.1
c0.1-0.1,0.1-0.2,0.2-0.3c0,0,0-0.1,0.1-0.1c0.1-0.2,0.2-0.3,0.3-0.5c0-0.1,0.1-0.1,0.1-0.2c0.1-0.1,0.2-0.3,0.3-0.5
c2,0.3,3.2,1,3.2,1.6C19.7,24.8,17.8,25.7,15.1,25.7z"/>
</g>
</g>
<g id="source_files" display="none">
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="32px" y="32px" height="32px" width="32px"
viewBox="0 0 30.2 40" enable-background="new 0 0 30.2 40" xml:space="preserve">
<g id="Layer_1_1_">
<g>
<g>
<g>
<path fill="#0B8C61" d="M15.1,39.5c-0.1,0-0.2,0-0.3-0.1C14.2,38.9,0.5,27.2,0.5,15.1C0.5,7.1,7,0.5,15.1,0.5
s14.6,6.6,14.6,14.6c0,12.3-13.7,23.8-14.3,24.3C15.3,39.5,15.2,39.5,15.1,39.5z"/>
<path fill="#E5E5E5" d="M15.1,1c8,0,14.1,6.5,14.1,14.1C29.2,27.4,15.1,39,15.1,39S1,27.1,1,15.1C1,7.5,7.1,1,15.1,1 M15.1,0
C6.8,0,0,6.8,0,15.1c0,12.3,13.9,24.1,14.5,24.6c0.2,0.2,0.4,0.2,0.6,0.2c0.2,0,0.5-0.1,0.6-0.2c0.6-0.5,14.5-12.1,14.5-24.6
C30.2,6.8,23.4,0,15.1,0L15.1,0z"/>
</g>
</g>
<g>
<path fill="#FFFFFF" d="M8.3,15.3c2.9-0.8,5.8,1.2,6.1,4.2c0,0.1,0,0.2,0.1,0.4c0.1,0,0.2,0,0.4,0c2.4-0.1,4.8-0.1,7.2-0.2
c-1,0.3-1.7,1.2-1.7,2.3c0,1.3,1.1,2.4,2.4,2.4c1.3,0,2.4-1.1,2.4-2.4c0-1.2-0.9-2.2-2-2.3c1.8-0.1,1.4-0.1,1.7-1.7
c0.1-0.8,0.2-1.6,0.3-2.3c0.1-0.7-0.1-0.9-0.8-0.9c-1.1,0-2-0.1-3.1-0.1c0,0-0.1,0-0.1-0.1c0-0.8,0-2.7,0-2.7s-0.4-0.3-0.9,0
c0,0.9,0,1.8,0,2.8c0,0-1.3,0-3.1-0.1c-0.1,0-0.3-0.1-0.4-0.4c-0.3-0.8-0.9-2.3-1.7-4.6c0,0-0.4-1-1.5-1c-0.9,0-5.2,0-5.2,0v5.7
c0,0-0.4,0.2-0.7,0.2C7.4,15.3,7.5,15.5,8.3,15.3z M23.9,22c0,0.7-0.6,1.2-1.2,1.2s-1.2-0.6-1.2-1.2c0-0.7,0.6-1.2,1.2-1.2
C23.4,20.8,23.9,21.3,23.9,22z M9.6,11.3l0-1.1l4.4,0l1.4,4.2l0,0c-1.9,0-4,0-5.8,0.1L9.6,11.3z"/>
<path fill="#FFFFFF" d="M9.4,15.8c-2.4,0-4.3,1.9-4.3,4.3s1.9,4.3,4.3,4.3c2.4,0,4.3-1.9,4.3-4.3C13.7,17.7,11.8,15.8,9.4,15.8z
M9.4,22.5c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4c1.3,0,2.4,1.1,2.4,2.4S10.7,22.5,9.4,22.5z"/>
</g>
</g>
</g>
<g id="source_files" display="none">
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#0B8C61" d="M11.824,11.058l-0.002,0.59l-0.003,2.996c1.373-0.042,2.874-0.065,4.297-0.065
c0.251,0,0.502,0.001,0.75,0.002l-1.169-3.53L11.824,11.058z"/>
<circle fill="#0B8C61" cx="10.91" cy="21.818" r="1.962"/>
<path fill="#0B8C61" d="M15.494,21.413c-0.018-0.133-0.034-0.249-0.046-0.353c-0.058-0.477-0.206-0.926-0.406-1.344
c-0.061-0.121-0.122-0.242-0.193-0.356c-0.047-0.079-0.098-0.155-0.149-0.23c-0.643-0.904-1.597-1.564-2.707-1.83
c-0.252-0.05-0.511-0.076-0.774-0.076c-0.369,0-0.739,0.051-1.101,0.153c-0.345,0.097-0.609,0.14-0.856,0.14
c-0.034,0-0.059-0.01-0.092-0.012c-1.708,0.692-2.919,2.361-2.919,4.314c0,2.569,2.09,4.658,4.66,4.658
c2.544,0,4.611-2.053,4.649-4.589l-0.051-0.37L15.494,21.413z M10.91,24.404c-1.427,0-2.587-1.16-2.587-2.586
s1.16-2.587,2.587-2.587c1.426,0,2.587,1.161,2.587,2.587S12.336,24.404,10.91,24.404z"/>
<circle fill="#0B8C61" cx="26.032" cy="23.767" r="1.258"/>
<path fill="#0B8C61" d="M28.399,19.248c0.163-0.87,0.265-1.754,0.338-2.635c0.069-0.824-0.14-1.017-0.947-1.049
c-1.201-0.043-2.309-0.088-3.511-0.136c-0.037-0.001-0.096-0.027-0.096-0.075c0-0.905,0.046-3.106,0.046-3.106
s-0.235-0.172-0.566-0.172c-0.145,0-0.309,0.033-0.479,0.128c0,1.026,0,2.067,0,3.158c0,0-1.465-0.039-3.555-0.082
c-0.093-0.002-0.351-0.16-0.472-0.49c-0.314-0.867-1-2.557-1.901-5.157c0,0-0.466-1.11-1.645-1.11c-0.976,0-5.849,0-5.849,0v6.499
c0,0-0.441,0.185-0.811,0.222c-0.097,0.59-0.083,0.889,0.143,0.98c0.575-0.187,1.177-0.314,1.814-0.314
c0.486,0,0.951,0.076,1.403,0.187c1.399,0.297,2.627,1.154,3.435,2.349c0.042,0.06,0.08,0.122,0.12,0.184
c0.117,0.189,0.224,0.383,0.319,0.587c0.103,0.209,0.192,0.422,0.271,0.644c0.005,0.015,0.009,0.03,0.014,0.046
c0.159,0.46,0.258,0.942,0.298,1.444c0.126,0.017,0.245,0.045,0.361,0.045c0.008,0,0.016,0,0.025,0
c2.72-0.07,5.444-0.075,8.161-0.211c-1.133,0.314-1.969,1.352-1.969,2.583c0,1.481,1.203,2.684,2.685,2.684
c1.48,0,2.684-1.203,2.684-2.684c0-1.338-0.988-2.448-2.27-2.648C28.451,20.992,28.063,21.053,28.399,19.248z M16.116,15.204
c-1.679,0-3.412,0.031-4.923,0.086l0.004-3.644l0.005-1.212l4.946-0.008l1.579,4.767l0.056,0.023
C17.241,15.208,16.682,15.204,16.116,15.204z M27.602,23.767c0,0.867-0.705,1.572-1.57,1.572c-0.865,0-1.57-0.705-1.57-1.572
c0-0.865,0.705-1.569,1.57-1.569C26.897,22.197,27.602,22.902,27.602,23.767z"/>
<path fill="#0B8C61" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M29.966,23.767
c0,2.169-1.765,3.934-3.934,3.934c-2.17,0-3.935-1.765-3.935-3.934c0-0.424,0.069-0.837,0.198-1.226
c-0.816,0.02-1.626,0.034-2.425,0.048c-0.895,0.016-1.789,0.032-2.671,0.054l-0.046,0.001h-0.022
c-0.128,0-0.259-0.018-0.393-0.038c-0.39,2.883-2.84,5.12-5.827,5.12c-3.259,0-5.91-2.651-5.91-5.908
c0-2.156,1.174-4.027,2.904-5.059c-0.347-0.579-0.262-1.252-0.185-1.718l0.156-0.946l0.638-0.064V8.523v-1.25h1.25h5.849
c1.586,0,2.504,1.179,2.797,1.876l0.016,0.037l0.013,0.038c0.621,1.794,1.131,3.129,1.504,4.103
c0.104,0.271,0.195,0.51,0.272,0.715c0.664,0.014,1.248,0.028,1.721,0.039v-1.877v-0.733l0.64-0.358
c0.341-0.191,0.708-0.288,1.09-0.288c0.687,0,1.173,0.317,1.306,0.415l0.524,0.384l-0.014,0.65c0,0.001-0.021,1.019-0.035,1.95
c0.793,0.032,1.571,0.062,2.394,0.092c0.346,0.013,1.156,0.045,1.697,0.656c0.48,0.542,0.491,1.217,0.447,1.745
c-0.088,1.06-0.201,1.937-0.355,2.76c-0.05,0.27-0.083,0.496-0.111,0.684c-0.078,0.531-0.197,0.928-0.365,1.226
C29.664,22.055,29.966,22.885,29.966,23.767z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#0B8C61" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M17.503,38.635
C13.582,36.007,1.25,26.916,1.25,16.666C1.25,9.389,8.199,1.25,17.5,1.25c9.301,0,16.25,8.139,16.25,15.416
C33.75,27.102,21.425,36.054,17.503,38.635z"/>
<path fill="#0B8C61" d="M29.628,19.477c0.154-0.823,0.267-1.7,0.355-2.76c0.044-0.528,0.033-1.203-0.447-1.745
c-0.541-0.611-1.351-0.643-1.697-0.656c-0.824-0.029-1.601-0.06-2.394-0.092c0.014-0.931,0.035-1.95,0.035-1.95l0.014-0.65
l-0.524-0.384c-0.133-0.097-0.619-0.415-1.306-0.415c-0.382,0-0.749,0.097-1.09,0.288l-0.64,0.358v0.733v1.877
c-0.472-0.011-1.057-0.024-1.721-0.039c-0.077-0.205-0.168-0.444-0.272-0.715c-0.372-0.974-0.882-2.309-1.504-4.103l-0.013-0.038
l-0.016-0.037c-0.293-0.697-1.211-1.876-2.797-1.876H9.763h-1.25v1.25v5.508l-0.638,0.064l-0.156,0.946
c-0.077,0.466-0.162,1.139,0.185,1.718C6.174,17.791,5,19.662,5,21.818c0,3.258,2.651,5.908,5.91,5.908
c2.987,0,5.437-2.237,5.827-5.12c0.134,0.02,0.265,0.038,0.393,0.038h0.022l0.047-0.001c0.882-0.023,1.777-0.038,2.671-0.054
c0.799-0.014,1.61-0.029,2.425-0.048c-0.129,0.388-0.198,0.801-0.198,1.226c0,2.169,1.765,3.934,3.935,3.934
c2.169,0,3.934-1.765,3.934-3.934c0-0.882-0.303-1.712-0.814-2.379c0.168-0.298,0.288-0.695,0.365-1.226
C29.545,19.973,29.578,19.747,29.628,19.477z M10.91,26.477c-2.57,0-4.66-2.09-4.66-4.658c0-1.953,1.211-3.622,2.919-4.314
c0.033,0.002,0.058,0.012,0.092,0.012c0.247,0,0.511-0.043,0.856-0.14c0.362-0.101,0.732-0.153,1.101-0.153
c0.263,0,0.521,0.026,0.774,0.076c1.11,0.267,2.065,0.926,2.708,1.83c0.052,0.076,0.102,0.152,0.149,0.23
c0.071,0.114,0.132,0.235,0.193,0.356c0.201,0.418,0.348,0.867,0.406,1.344c0.012,0.104,0.028,0.22,0.046,0.354l0.014,0.103
l0.051,0.37C15.521,24.424,13.453,26.477,10.91,26.477z M28.717,23.767c0,1.481-1.204,2.684-2.684,2.684
c-1.483,0-2.685-1.203-2.685-2.684c0-1.231,0.836-2.269,1.969-2.583c-2.718,0.136-5.442,0.141-8.161,0.211
c-0.008,0-0.016,0-0.024,0c-0.115,0-0.235-0.027-0.361-0.045c-0.04-0.502-0.139-0.985-0.298-1.444
c-0.005-0.015-0.009-0.03-0.014-0.046c-0.079-0.222-0.168-0.435-0.271-0.644c-0.095-0.204-0.201-0.397-0.319-0.586
c-0.04-0.062-0.078-0.124-0.12-0.184c-0.808-1.195-2.035-2.052-3.435-2.349c-0.452-0.111-0.917-0.187-1.403-0.187
c-0.637,0-1.239,0.127-1.814,0.314c-0.226-0.091-0.24-0.39-0.143-0.98c0.37-0.037,0.811-0.222,0.811-0.222V8.523
c0,0,4.873,0,5.849,0c1.178,0,1.645,1.11,1.645,1.11c0.901,2.601,1.587,4.29,1.901,5.157c0.122,0.33,0.379,0.488,0.472,0.49
c2.09,0.043,3.555,0.082,3.555,0.082c0-1.091,0-2.132,0-3.158c0.17-0.095,0.334-0.128,0.479-0.128
c0.331,0,0.566,0.172,0.566,0.172s-0.046,2.201-0.046,3.106c0,0.048,0.06,0.074,0.096,0.075c1.201,0.048,2.309,0.094,3.511,0.136
c0.807,0.031,1.016,0.224,0.947,1.049c-0.073,0.881-0.175,1.765-0.338,2.635c-0.336,1.804,0.052,1.744-1.953,1.87
C27.728,21.319,28.717,22.428,28.717,23.767z"/>
<path fill="#0B8C61" d="M24.462,23.767c0,0.867,0.705,1.572,1.57,1.572c0.865,0,1.57-0.705,1.57-1.572
c0-0.865-0.705-1.569-1.57-1.569C25.168,22.197,24.462,22.902,24.462,23.767z M27.29,23.767c0,0.694-0.564,1.259-1.258,1.259
c-0.693,0-1.257-0.565-1.257-1.259c0-0.693,0.564-1.257,1.257-1.257C26.726,22.51,27.29,23.074,27.29,23.767z"/>
<path fill="#0B8C61" d="M16.148,10.426l-4.946,0.008l-0.005,1.212l-0.004,3.644c1.512-0.055,3.244-0.086,4.923-0.086
c0.565,0,1.124,0.004,1.667,0.011l-0.056-0.023L16.148,10.426z M16.117,14.579c-1.423,0-2.924,0.023-4.297,0.065l0.003-2.996
l0.002-0.59l3.873-0.006l1.169,3.53C16.618,14.58,16.368,14.579,16.117,14.579z"/>
<path fill="#0B8C61" d="M10.91,19.231c-1.427,0-2.587,1.161-2.587,2.587s1.16,2.586,2.587,2.586c1.426,0,2.587-1.16,2.587-2.586
S12.336,19.231,10.91,19.231z M10.91,23.779c-1.082,0-1.962-0.88-1.962-1.961c0-1.082,0.88-1.962,1.962-1.962
c1.082,0,1.962,0.88,1.962,1.962C12.871,22.9,11.991,23.779,10.91,23.779z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#C1122B" d="M11.824,11.058l-0.002,0.59l-0.003,2.996c1.373-0.042,2.874-0.065,4.297-0.065
c0.251,0,0.502,0.001,0.75,0.002l-1.169-3.53L11.824,11.058z"/>
<circle fill="#C1122B" cx="10.91" cy="21.818" r="1.962"/>
<path fill="#C1122B" d="M15.494,21.413c-0.018-0.133-0.034-0.249-0.046-0.353c-0.058-0.477-0.206-0.926-0.406-1.344
c-0.061-0.121-0.122-0.242-0.193-0.356c-0.047-0.079-0.098-0.155-0.149-0.23c-0.643-0.904-1.597-1.564-2.707-1.83
c-0.252-0.05-0.511-0.076-0.774-0.076c-0.369,0-0.739,0.051-1.101,0.153c-0.345,0.097-0.609,0.14-0.856,0.14
c-0.034,0-0.059-0.01-0.092-0.012c-1.708,0.692-2.919,2.361-2.919,4.314c0,2.569,2.09,4.658,4.66,4.658
c2.544,0,4.611-2.053,4.649-4.589l-0.051-0.37L15.494,21.413z M10.91,24.404c-1.427,0-2.587-1.16-2.587-2.586
s1.16-2.587,2.587-2.587c1.426,0,2.587,1.161,2.587,2.587S12.336,24.404,10.91,24.404z"/>
<circle fill="#C1122B" cx="26.032" cy="23.767" r="1.258"/>
<path fill="#C1122B" d="M28.399,19.248c0.163-0.87,0.265-1.754,0.338-2.635c0.069-0.824-0.14-1.017-0.947-1.049
c-1.201-0.043-2.309-0.088-3.511-0.136c-0.037-0.001-0.096-0.027-0.096-0.075c0-0.905,0.046-3.106,0.046-3.106
s-0.235-0.172-0.566-0.172c-0.145,0-0.309,0.033-0.479,0.128c0,1.026,0,2.067,0,3.158c0,0-1.465-0.039-3.555-0.082
c-0.093-0.002-0.351-0.16-0.472-0.49c-0.314-0.867-1-2.557-1.901-5.157c0,0-0.466-1.11-1.645-1.11c-0.976,0-5.849,0-5.849,0v6.499
c0,0-0.441,0.185-0.811,0.222c-0.097,0.59-0.083,0.889,0.143,0.98c0.575-0.187,1.177-0.314,1.814-0.314
c0.486,0,0.951,0.076,1.403,0.187c1.399,0.297,2.627,1.154,3.435,2.349c0.042,0.06,0.08,0.122,0.12,0.184
c0.117,0.189,0.224,0.383,0.319,0.587c0.103,0.209,0.192,0.422,0.271,0.644c0.005,0.015,0.009,0.03,0.014,0.046
c0.159,0.46,0.258,0.942,0.298,1.444c0.126,0.017,0.245,0.045,0.361,0.045c0.008,0,0.016,0,0.025,0
c2.72-0.07,5.444-0.075,8.161-0.211c-1.133,0.314-1.969,1.352-1.969,2.583c0,1.481,1.203,2.684,2.685,2.684
c1.48,0,2.684-1.203,2.684-2.684c0-1.338-0.988-2.448-2.27-2.648C28.451,20.992,28.063,21.053,28.399,19.248z M16.116,15.204
c-1.679,0-3.412,0.031-4.923,0.086l0.004-3.644l0.005-1.212l4.946-0.008l1.579,4.767l0.056,0.023
C17.241,15.208,16.682,15.204,16.116,15.204z M27.602,23.767c0,0.867-0.705,1.572-1.57,1.572c-0.865,0-1.57-0.705-1.57-1.572
c0-0.865,0.705-1.569,1.57-1.569C26.897,22.197,27.602,22.902,27.602,23.767z"/>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M29.966,23.767
c0,2.169-1.765,3.934-3.934,3.934c-2.17,0-3.935-1.765-3.935-3.934c0-0.424,0.069-0.837,0.198-1.226
c-0.816,0.02-1.626,0.034-2.425,0.048c-0.895,0.016-1.789,0.032-2.671,0.054l-0.046,0.001h-0.022
c-0.128,0-0.259-0.018-0.393-0.038c-0.39,2.883-2.84,5.12-5.827,5.12c-3.259,0-5.91-2.651-5.91-5.908
c0-2.156,1.174-4.027,2.904-5.059c-0.347-0.579-0.262-1.252-0.185-1.718l0.156-0.946l0.638-0.064V8.523v-1.25h1.25h5.849
c1.586,0,2.504,1.179,2.797,1.876l0.016,0.037l0.013,0.038c0.621,1.794,1.131,3.129,1.504,4.103
c0.104,0.271,0.195,0.51,0.272,0.715c0.664,0.014,1.248,0.028,1.721,0.039v-1.877v-0.733l0.64-0.358
c0.341-0.191,0.708-0.288,1.09-0.288c0.687,0,1.173,0.317,1.306,0.415l0.524,0.384l-0.014,0.65c0,0.001-0.021,1.019-0.035,1.95
c0.793,0.032,1.571,0.062,2.394,0.092c0.346,0.013,1.156,0.045,1.697,0.656c0.48,0.542,0.491,1.217,0.447,1.745
c-0.088,1.06-0.201,1.937-0.355,2.76c-0.05,0.27-0.083,0.496-0.111,0.684c-0.078,0.531-0.197,0.928-0.365,1.226
C29.664,22.055,29.966,22.885,29.966,23.767z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M17.503,38.635
C13.582,36.007,1.25,26.916,1.25,16.666C1.25,9.389,8.199,1.25,17.5,1.25c9.301,0,16.25,8.139,16.25,15.416
C33.75,27.102,21.425,36.054,17.503,38.635z"/>
<path fill="#C1122B" d="M29.628,19.477c0.154-0.823,0.267-1.7,0.355-2.76c0.044-0.528,0.033-1.203-0.447-1.745
c-0.541-0.611-1.351-0.643-1.697-0.656c-0.824-0.029-1.601-0.06-2.394-0.092c0.014-0.931,0.035-1.95,0.035-1.95l0.014-0.65
l-0.524-0.384c-0.133-0.097-0.619-0.415-1.306-0.415c-0.382,0-0.749,0.097-1.09,0.288l-0.64,0.358v0.733v1.877
c-0.472-0.011-1.057-0.024-1.721-0.039c-0.077-0.205-0.168-0.444-0.272-0.715c-0.372-0.974-0.882-2.309-1.504-4.103l-0.013-0.038
l-0.016-0.037c-0.293-0.697-1.211-1.876-2.797-1.876H9.763h-1.25v1.25v5.508l-0.638,0.064l-0.156,0.946
c-0.077,0.466-0.162,1.139,0.185,1.718C6.174,17.791,5,19.662,5,21.818c0,3.258,2.651,5.908,5.91,5.908
c2.987,0,5.437-2.237,5.827-5.12c0.134,0.02,0.265,0.038,0.393,0.038h0.022l0.047-0.001c0.882-0.023,1.777-0.038,2.671-0.054
c0.799-0.014,1.61-0.029,2.425-0.048c-0.129,0.388-0.198,0.801-0.198,1.226c0,2.169,1.765,3.934,3.935,3.934
c2.169,0,3.934-1.765,3.934-3.934c0-0.882-0.303-1.712-0.814-2.379c0.168-0.298,0.288-0.695,0.365-1.226
C29.545,19.973,29.578,19.747,29.628,19.477z M10.91,26.477c-2.57,0-4.66-2.09-4.66-4.658c0-1.953,1.211-3.622,2.919-4.314
c0.033,0.002,0.058,0.012,0.092,0.012c0.247,0,0.511-0.043,0.856-0.14c0.362-0.101,0.732-0.153,1.101-0.153
c0.263,0,0.521,0.026,0.774,0.076c1.11,0.267,2.065,0.926,2.708,1.83c0.052,0.076,0.102,0.152,0.149,0.23
c0.071,0.114,0.132,0.235,0.193,0.356c0.201,0.418,0.348,0.867,0.406,1.344c0.012,0.104,0.028,0.22,0.046,0.354l0.014,0.103
l0.051,0.37C15.521,24.424,13.453,26.477,10.91,26.477z M28.717,23.767c0,1.481-1.204,2.684-2.684,2.684
c-1.483,0-2.685-1.203-2.685-2.684c0-1.231,0.836-2.269,1.969-2.583c-2.718,0.136-5.442,0.141-8.161,0.211
c-0.008,0-0.016,0-0.024,0c-0.115,0-0.235-0.027-0.361-0.045c-0.04-0.502-0.139-0.985-0.298-1.444
c-0.005-0.015-0.009-0.03-0.014-0.046c-0.079-0.222-0.168-0.435-0.271-0.644c-0.095-0.204-0.201-0.397-0.319-0.586
c-0.04-0.062-0.078-0.124-0.12-0.184c-0.808-1.195-2.035-2.052-3.435-2.349c-0.452-0.111-0.917-0.187-1.403-0.187
c-0.637,0-1.239,0.127-1.814,0.314c-0.226-0.091-0.24-0.39-0.143-0.98c0.37-0.037,0.811-0.222,0.811-0.222V8.523
c0,0,4.873,0,5.849,0c1.178,0,1.645,1.11,1.645,1.11c0.901,2.601,1.587,4.29,1.901,5.157c0.122,0.33,0.379,0.488,0.472,0.49
c2.09,0.043,3.555,0.082,3.555,0.082c0-1.091,0-2.132,0-3.158c0.17-0.095,0.334-0.128,0.479-0.128
c0.331,0,0.566,0.172,0.566,0.172s-0.046,2.201-0.046,3.106c0,0.048,0.06,0.074,0.096,0.075c1.201,0.048,2.309,0.094,3.511,0.136
c0.807,0.031,1.016,0.224,0.947,1.049c-0.073,0.881-0.175,1.765-0.338,2.635c-0.336,1.804,0.052,1.744-1.953,1.87
C27.728,21.319,28.717,22.428,28.717,23.767z"/>
<path fill="#C1122B" d="M24.462,23.767c0,0.867,0.705,1.572,1.57,1.572c0.865,0,1.57-0.705,1.57-1.572
c0-0.865-0.705-1.569-1.57-1.569C25.168,22.197,24.462,22.902,24.462,23.767z M27.29,23.767c0,0.694-0.564,1.259-1.258,1.259
c-0.693,0-1.257-0.565-1.257-1.259c0-0.693,0.564-1.257,1.257-1.257C26.726,22.51,27.29,23.074,27.29,23.767z"/>
<path fill="#C1122B" d="M16.148,10.426l-4.946,0.008l-0.005,1.212l-0.004,3.644c1.512-0.055,3.244-0.086,4.923-0.086
c0.565,0,1.124,0.004,1.667,0.011l-0.056-0.023L16.148,10.426z M16.117,14.579c-1.423,0-2.924,0.023-4.297,0.065l0.003-2.996
l0.002-0.59l3.873-0.006l1.169,3.53C16.618,14.58,16.368,14.579,16.117,14.579z"/>
<path fill="#C1122B" d="M10.91,19.231c-1.427,0-2.587,1.161-2.587,2.587s1.16,2.586,2.587,2.586c1.426,0,2.587-1.16,2.587-2.586
S12.336,19.231,10.91,19.231z M10.91,23.779c-1.082,0-1.962-0.88-1.962-1.961c0-1.082,0.88-1.962,1.962-1.962
c1.082,0,1.962,0.88,1.962,1.962C12.871,22.9,11.991,23.779,10.91,23.779z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#C1122B" d="M17.499,10.683c-1.55,0-2.812,1.261-2.812,2.811c0,1.553,1.261,2.816,2.812,2.816
c1.551,0,2.813-1.263,2.813-2.816C20.312,11.944,19.051,10.683,17.499,10.683z"/>
<path fill="#C1122B" d="M17.499,7.935c-3.066,0-5.56,2.494-5.56,5.56c0,1.074,0.585,3.889,4.502,10.677l0.484,0.839l0.167,0.282
l0.112,0.188l0.054,0.09l0.107,0.18l0.135,0.222l0.13-0.215l0.046-0.077l0.11-0.187l0.04-0.067l0.238-0.399l0.494-0.857
c3.917-6.8,4.502-9.608,4.502-10.677C23.06,10.429,20.565,7.935,17.499,7.935z M17.499,17.247c-2.067,0-3.749-1.684-3.749-3.753
c0-2.068,1.682-3.748,3.749-3.748c2.068,0,3.751,1.681,3.751,3.748C21.25,15.563,19.568,17.247,17.499,17.247z"/>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M24.17,27.526
c-0.003,2.16-3.358,3.29-6.671,3.29c-3.315,0-6.671-1.131-6.671-3.293c0-1.448,1.69-2.623,4.331-3.078
c-2.151-3.762-4.471-8.402-4.471-10.95c0-3.755,3.055-6.81,6.81-6.81s6.81,3.055,6.812,6.809c0,2.546-2.323,7.187-4.472,10.952
C22.48,24.9,24.17,26.076,24.17,27.526z"/>
<path fill="#C1122B" d="M18.968,25.953c-0.036,0.06-0.074,0.125-0.11,0.185c-0.05,0.086-0.105,0.177-0.151,0.255
c-0.139,0.23-0.258,0.424-0.366,0.603c-0.026,0.038-0.052,0.083-0.076,0.12c-0.101,0.166-0.177,0.289-0.242,0.391
c-0.019,0.031-0.04,0.068-0.056,0.091c-0.065,0.102-0.1,0.157-0.1,0.157l-0.369,0.578l-0.366-0.578c0,0-0.039-0.061-0.106-0.167
c-0.007-0.011-0.017-0.028-0.024-0.037c-0.067-0.108-0.153-0.247-0.265-0.431c-0.031-0.048-0.065-0.107-0.099-0.159
c-0.103-0.17-0.213-0.348-0.342-0.561c-0.052-0.09-0.112-0.188-0.167-0.281c-0.032-0.055-0.066-0.112-0.098-0.165l-0.476,0.076
c-2.161,0.347-3.096,1.157-3.096,1.494c0,0.215,0.336,0.601,1.074,0.943c1,0.463,2.408,0.718,3.965,0.718
c3.26,0,5.039-1.098,5.039-1.662c0-0.337-0.935-1.147-3.095-1.493L18.968,25.953z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M17.503,38.635
C13.582,36.007,1.25,26.916,1.25,16.666C1.25,9.389,8.199,1.25,17.5,1.25s16.25,8.139,16.25,15.416
C33.75,27.103,21.425,36.054,17.503,38.635z"/>
<path fill="#C1122B" d="M17.499,9.745c-2.067,0-3.749,1.68-3.749,3.748c0,2.07,1.682,3.753,3.749,3.753
c2.068,0,3.751-1.684,3.751-3.753C21.25,11.426,19.568,9.745,17.499,9.745z M17.499,16.309c-1.551,0-2.812-1.263-2.812-2.816
c0-1.55,1.261-2.811,2.812-2.811c1.551,0,2.813,1.261,2.813,2.811C20.312,15.046,19.051,16.309,17.499,16.309z"/>
<path fill="#C1122B" d="M17.499,6.685c-3.755,0-6.81,3.055-6.81,6.81c0,2.549,2.32,7.188,4.471,10.95
c-2.641,0.454-4.331,1.63-4.331,3.078c0,2.162,3.356,3.293,6.671,3.293c3.313,0,6.668-1.13,6.671-3.29
c0-1.45-1.69-2.626-4.332-3.079c2.149-3.765,4.472-8.407,4.472-10.952C24.31,9.74,21.254,6.685,17.499,6.685z M22.538,27.523
c0,0.564-1.779,1.662-5.039,1.662c-1.557,0-2.965-0.255-3.965-0.718c-0.738-0.342-1.074-0.728-1.074-0.943
c0-0.337,0.935-1.147,3.096-1.494l0.476-0.076c0.032,0.053,0.066,0.11,0.098,0.165c0.056,0.094,0.115,0.191,0.167,0.281
c0.129,0.213,0.239,0.391,0.342,0.561c0.033,0.052,0.068,0.112,0.099,0.159c0.112,0.184,0.198,0.323,0.265,0.431
c0.007,0.008,0.017,0.026,0.024,0.037c0.066,0.107,0.106,0.167,0.106,0.167l0.366,0.578l0.369-0.578c0,0,0.034-0.055,0.1-0.157
c0.015-0.024,0.037-0.061,0.056-0.091c0.065-0.102,0.141-0.224,0.242-0.391c0.024-0.037,0.05-0.082,0.076-0.12
c0.108-0.179,0.227-0.373,0.366-0.603c0.046-0.078,0.101-0.17,0.151-0.255c0.036-0.06,0.075-0.126,0.11-0.185l0.475,0.076
C21.604,26.376,22.538,27.186,22.538,27.523z M18.559,24.171l-0.495,0.86l-0.236,0.396l-0.041,0.067l-0.111,0.188l-0.045,0.075
l-0.13,0.215l-0.135-0.222l-0.107-0.18l-0.054-0.09l-0.112-0.188l-0.168-0.283l-0.483-0.837
c-3.917-6.787-4.502-9.603-4.502-10.677c0-3.066,2.494-5.56,5.56-5.56c3.066,0,5.561,2.494,5.562,5.559
C23.061,14.563,22.476,17.372,18.559,24.171z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<g>
<path fill="#C1122B" d="M26.94,12.852h-4.093l-2.103-3.386c-0.206-0.359-0.667-0.48-1-0.284c-0.168,0.098-0.287,0.251-0.337,0.437
c-0.051,0.192-0.023,0.394,0.078,0.571l1.699,2.661h-7.888l1.724-2.701c0.083-0.143,0.109-0.338,0.057-0.526
c-0.05-0.188-0.17-0.344-0.338-0.441c-0.332-0.195-0.8-0.066-0.984,0.253l-2.122,3.417H8.06c-0.653,0-1.185,0.532-1.185,1.185
v1.034c0,0.615,0.454,1.212,0.991,1.301l0.131,0.022h18.945l0.149-0.02c0.551-0.072,1.034-0.681,1.034-1.304v-1.034
C28.125,13.385,27.593,12.852,26.94,12.852z"/>
<path fill="#C1122B" d="M10.071,25.025c0.009,0.277,0.153,0.421,0.328,0.421h14.207c0.177,0,0.321-0.144,0.321-0.32l0.009-0.125
l1.213-7.357H8.853L10.071,25.025z M21.395,20.092c0-0.372,0.275-0.674,0.647-0.674c0.371,0,0.645,0.302,0.645,0.674v2.521
c0,0.372-0.274,0.674-0.645,0.674c-0.372,0-0.647-0.301-0.647-0.674V20.092z M18.367,20.092c0-0.372,0.274-0.674,0.646-0.674
s0.646,0.302,0.646,0.674v2.521c0,0.372-0.274,0.674-0.646,0.674s-0.646-0.301-0.646-0.674V20.092z M15.34,20.092
c0-0.372,0.274-0.674,0.646-0.674c0.371,0,0.646,0.302,0.646,0.674v2.521c0,0.372-0.275,0.674-0.646,0.674
c-0.373,0-0.646-0.301-0.646-0.674V20.092z M12.313,20.092c0-0.372,0.274-0.674,0.646-0.674c0.371,0,0.645,0.302,0.645,0.674
v2.521c0,0.372-0.274,0.674-0.645,0.674c-0.372,0-0.646-0.301-0.646-0.674V20.092z"/>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M29.375,15.072
c0,1.079-0.709,2.076-1.656,2.428l-1.282,7.361c-0.018,1.219-1.111,2.289-2.426,2.289H10.93c-1.315,0-2.406-1.069-2.434-2.383
l-1.281-7.285c-0.92-0.367-1.591-1.344-1.591-2.41v-1.034c0-1.343,1.093-2.435,2.435-2.435h2.877l1.746-2.809
c0.5-0.873,1.771-1.222,2.681-0.693c0.944,0.543,1.268,1.754,0.725,2.699l-0.513,0.802h3.328l-0.487-0.763
c-0.283-0.488-0.355-1.029-0.217-1.544c0.137-0.508,0.463-0.931,0.918-1.194c0.895-0.521,2.174-0.186,2.699,0.724l1.726,2.778
h3.397c1.343,0,2.435,1.093,2.435,2.435V15.072z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="40px"
viewBox="0 0 35 40" enable-background="new 0 0 35 40" xml:space="preserve">
<metadata>
<sfw xmlns="&ns_sfw;">
<slices></slices>
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
</sfw>
</metadata>
<g>
<path fill="#FFFFFF" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z"/>
<path fill="#C1122B" d="M17.5,0C7.85,0,0,8.396,0,16.666C0,29.092,16.415,39.377,17.114,39.88C17.225,39.96,17.363,40,17.5,40
c0.134,0,0.271-0.039,0.381-0.117C18.58,39.389,35,29.313,35,16.666C35,8.396,27.15,0,17.5,0z M17.503,38.635
C13.582,36.007,1.25,26.916,1.25,16.666C1.25,9.389,8.199,1.25,17.5,1.25s16.25,8.139,16.25,15.416
C33.75,27.103,21.425,36.054,17.503,38.635z"/>
<g>
<g>
<path fill="#C1122B" d="M24.322,27.957H10.617c-1.342,0-2.456-1.091-2.485-2.432l-1.349-7.679
c-0.958-0.364-1.659-1.374-1.659-2.477v-1.083c0-1.371,1.115-2.486,2.485-2.486h3.051l1.848-2.974
c0.51-0.886,1.798-1.237,2.721-0.703c0.463,0.267,0.794,0.699,0.933,1.217c0.138,0.517,0.068,1.058-0.2,1.52l-0.599,0.939h3.725
L18.516,10.9c-0.287-0.494-0.36-1.042-0.221-1.564c0.138-0.516,0.468-0.947,0.931-1.213c0.914-0.535,2.208-0.189,2.738,0.735
l1.829,2.942h3.597c1.37,0,2.485,1.115,2.485,2.486v1.083c0,1.118-0.742,2.149-1.728,2.495l-1.35,7.748
C26.779,26.865,25.665,27.957,24.322,27.957z M7.61,12.978c-0.721,0-1.306,0.587-1.306,1.308v1.083
c0,0.676,0.501,1.329,1.092,1.428l0.412,0.069l1.494,8.545c0.024,0.794,0.61,1.367,1.316,1.367h13.705
c0.707,0,1.293-0.574,1.306-1.279l1.499-8.644l0.43-0.056c0.618-0.079,1.139-0.735,1.139-1.431v-1.083
c0-0.721-0.586-1.308-1.306-1.308h-4.253l-2.185-3.516c-0.232-0.405-0.756-0.541-1.136-0.32c-0.191,0.11-0.327,0.287-0.383,0.497
c-0.058,0.219-0.026,0.448,0.09,0.648l1.716,2.69h-8.025l1.741-2.729c0.097-0.168,0.125-0.391,0.069-0.604
c-0.058-0.213-0.195-0.391-0.386-0.501c-0.38-0.223-0.912-0.076-1.119,0.288l-2.204,3.547H7.61z"/>
</g>
<g>
<path fill="#C1122B" d="M24.944,27.482H10.061c-0.871,0-1.58-0.708-1.58-1.579L6.972,16.82h21.056l-1.505,9.103
C26.525,26.774,25.816,27.482,24.944,27.482z M8.362,17.999l1.289,7.808c0.008,0.317,0.189,0.496,0.41,0.496h14.883
c0.221,0,0.402-0.18,0.402-0.401l0.007-0.121l1.286-7.783H8.362z"/>
</g>
<g>
<g>
<path fill="#C1122B" d="M22.258,23.976c0.389,0,0.676-0.316,0.676-0.706v-2.642c0-0.39-0.287-0.706-0.676-0.706
c-0.39,0-0.678,0.316-0.678,0.706v2.642C21.58,23.661,21.868,23.976,22.258,23.976z"/>
</g>
<g>
<path fill="#C1122B" d="M19.086,23.976c0.39,0,0.677-0.316,0.677-0.706v-2.642c0-0.39-0.287-0.706-0.677-0.706
s-0.677,0.316-0.677,0.706v2.642C18.409,23.661,18.696,23.976,19.086,23.976z"/>
</g>
<g>
<path fill="#C1122B" d="M15.914,23.976c0.389,0,0.677-0.316,0.677-0.706v-2.642c0-0.39-0.288-0.706-0.677-0.706
c-0.39,0-0.677,0.316-0.677,0.706v2.642C15.237,23.661,15.524,23.976,15.914,23.976z"/>
</g>
<g>
<path fill="#C1122B" d="M12.742,23.976c0.389,0,0.676-0.316,0.676-0.706v-2.642c0-0.39-0.287-0.706-0.676-0.706
c-0.39,0-0.677,0.316-0.677,0.706v2.642C12.065,23.661,12.353,23.976,12.742,23.976z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -24,5 +24,5 @@ angular.module("ofn.admin").factory 'EnterpriseRelationships', ($http, enterpris
permission_presentation: (permission) ->
switch permission
when "add_to_order_cycle" then "can add to order cycle"
when "manage_products" then "can manage the products of"
when "add_to_order_cycle" then "to add to order cycle"
when "manage_products" then "to manage products"

View File

@@ -6,9 +6,9 @@ Darkswarm.controller "CheckoutCtrl", ($scope, storage, Checkout, CurrentUser, Cu
prefix = "order_#{Checkout.order.id}#{CurrentUser?.id}#{CurrentHub.hub.id}"
for field in $scope.fieldsToBind
storage.bind $scope, "Checkout.order.#{field}",
storage.bind $scope, "Checkout.order.#{field}",
storeName: "#{prefix}_#{field}"
storage.bind $scope, "Checkout.ship_address_same_as_billing",
storage.bind $scope, "Checkout.ship_address_same_as_billing",
storeName: "#{prefix}_sameasbilling"
defaultValue: true

View File

@@ -13,7 +13,7 @@ Darkswarm.factory 'Checkout', (CurrentOrder, ShippingMethods, PaymentMethods, $h
Loading.clear()
@errors = response.errors
RailsFlashLoader.loadFlash(response.flash)
# Rails wants our Spree::Address data to be provided with _attributes
preprocess: ->
munged_order = {}
@@ -25,7 +25,7 @@ Darkswarm.factory 'Checkout', (CurrentOrder, ShippingMethods, PaymentMethods, $h
munged_order["ship_address_attributes"] = value
when "payment_method_id"
munged_order["payments_attributes"] = [{payment_method_id: value}]
when "shipping_method_id", "payment_method_id", "email"
when "shipping_method_id", "payment_method_id", "email", "special_instructions"
munged_order[name] = value
else
# Ignore everything else
@@ -58,7 +58,7 @@ Darkswarm.factory 'Checkout', (CurrentOrder, ShippingMethods, PaymentMethods, $h
shippingPrice: ->
@shippingMethod()?.price || 0.0
paymentMethod: ->
PaymentMethods.payment_methods_by_id[@order.payment_method_id]

View File

@@ -2,7 +2,7 @@ Darkswarm.factory 'Hubs', ($filter, Enterprises, visibleFilter) ->
new class Hubs
constructor: ->
@hubs = @order Enterprises.enterprises.filter (hub)->
hub.is_distributor
hub.is_distributor && hub.has_shopfront
@visible = visibleFilter @hubs
order: (hubs)->

View File

@@ -1,16 +1,16 @@
.row.pad-top{bindonce: true, "ng-if" => "enterprise.hubs.length > 0"}
.row.pad-top{bindonce: true, "ng-if" => "enterprise.hubs.length > 0 && enterprise.has_shopfront"}
.cta-container.small-12.columns
%label
Shop for
%strong {{enterprise.name}}
products at:
%a.button.hub{"ng-repeat" => "hub in enterprise.hubs",
%a.cta-hub{"ng-repeat" => "hub in enterprise.hubs",
"bo-href" => "hub.path",
"bo-class" => "{primary: hub.active, secondary: !hub.active}",
"ofn-empties-cart" => "hub"}
%i.ofn-i_033-open-sign{"bo-if" => "hub.active"}
%i.ofn-i_032-closed-sign{"bo-if" => "!hub.active"}
{{hub.name}}
.hub-name {{hub.name}}
.button-address {{ hub.address.city }} , {{hub.address.state_name}}
%i.ofn-i_007-caret-right
/ %i.ofn-i_007-caret-right

View File

@@ -1,8 +1,8 @@
.row.pad-top{bindonce: true}
.row.pad-top{bindonce: true, ng: { if: 'enterprise.has_shopfront' } }
.cta-container.small-12.columns
.row
.small-4.columns
%label{"active-table-hub-link" => "enterprise", change: "Change hub to:", shop: "Shop now at:"}
%label{"active-table-hub-link" => "enterprise", change: "Change shop to:", shop: "Shop now at:"}
.small-8.columns.right
%label.right{"bo-if" => "enterprise.pickup || enterprise.delivery"}
Delivery options:
@@ -14,11 +14,11 @@
Delivery
.row
.columns.small-12
%a.button.hub.expand{"bo-href" => "enterprise.path",
%a.cta-hub{"bo-href" => "enterprise.path",
"ng-class" => "{primary: enterprise.active, secondary: !enterprise.active}",
"ofn-empties-cart" => "enterprise"}
%i.ofn-i_033-open-sign{"bo-if" => "enterprise.active"}
%i.ofn-i_032-closed-sign{"bo-if" => "!enterprise.active"}
{{enterprise.name}}
.hub-name {{enterprise.name}}
.button-address {{ enterprise.address.city }} , {{enterprise.address.state_name}}
%i.ofn-i_007-caret-right
/ %i.ofn-i_007-caret-right

View File

@@ -16,6 +16,7 @@
padding: 1rem 0
.active_table .active_table_node
margin-top: 0.25rem
display: block
border: 0
@@ -28,11 +29,17 @@
span
text-decoration: underline
span.margin-top
margin-top: 0.5rem
display: inline-block
// Generic text resize
@media all and (max-width: 640px)
font-size: 0.875rem
&, & *
font-size: 0.875rem
fat > div label
&, & *
font-size: 0.75rem
.active_table_row // Inherits from active_table
@@ -68,7 +75,7 @@
//Open row sections
.fat > div
border-top: 1px solid $disabled-bright
border-top: 1px solid #aaa
ul, ol
font-size: 0.875rem
@@ -81,7 +88,7 @@
font-size: 0.75rem
margin-top: 0.25rem
margin-bottom: 0.25rem
color: $disabled-dark
color: #777
p.trans-sentence
text-transform: capitalize

View File

@@ -0,0 +1,3 @@
// https://docs.angularjs.org/api/ng/directive/ngCloak
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak
display: none !important

View File

@@ -10,23 +10,30 @@
overflow-x: hidden
overflow-y: visible
//Hub icon styline
i.ofn-i_040-hub
@include border-radius(99999rem)
font-size: 1.15rem
display: inline-block
padding: 0.2rem
margin-top: 0.1rem
margin-bottom: 0.1rem
background-color: transparent
@media all and (max-width: 768px)
font-size: 1rem
//Generic text link style
a:hover, a:active, a:focus
color: $clr-brick-bright
@media all and (max-width: 640px)
//Hub and Producer icons
// i.ofn-i_040-hub
i.ofn-i_063-hub, i.ofn-i_064-hub-reversed, i.ofn-i_059-producer, i.ofn-i_060-producer-reversed
font-size: 2rem
display: inline-block
margin-right: 0.25rem
float: left
//Closed & Open column
.open_closed
i
font-size: 2rem
float: right
margin-left: 0.5rem
//Hub Name
span.hub-name-listing
font-weight: 700
@media all and (max-width: 640px)
&.closed, &.open
.active_table_row:first-child .skinny-head
background-color: $clr-brick-light
@@ -38,38 +45,35 @@
&.closed, &.open
.active_table_row:first-child .skinny-head
background-color: white
&.current
&.closed, &.open
.active_table_row:first-child .skinny-head
background-color: $clr-brick-bright
&.current
&.inactive
&.closed, &.open
.active_table_row:first-child .skinny-head
background-color: #555
//Inactive row
&.inactive, &.inactive strong
color: $disabled-dark
&, & *
color: $disabled-dark
a i.ofn-i_040-hub
color: $disabled-dark
&.current
&.current
&.inactive
&.closed, &.open
a, a strong, a span, a i
color: $disabled-dark
&:hover, &:focus, &:active
color: $disabled-dark
a i.ofn-i_040-hub
color: white
.active_table_row:first-child
background-color: $disabled-dark
a:hover, a:focus, a:active
color: $disabled-dark
i.ofn-i_040-hub
background-color: $disabled-dark
&, & *
color: white
&.closed
&:hover, &:active, &:focus
border: none
color: $disabled-dark
&.open
.active_table_row:first-child
color: $disabled-dark
@@ -82,31 +86,27 @@
.active_table_row:nth-child(2)
background-color: rgba(255, 255, 255, 0)
//Open row
//Padding second row
&.open
.active_table_row:nth-child(2)
padding-bottom: 0.75rem
//Current selected row
&.current
//overwrites active_table
&.closed
a, a i, a span, a strong
color: $clr-brick
&.closed, &.open
a i.ofn-i_040-hub
color: white
.active_table_row:first-child
background-color: $clr-brick
a:hover, a:focus, a:active
strong, span
color: $clr-brick-bright
i.ofn-i_040-hub
background-color: $clr-brick-bright
opacity: 1
&:hover, &:focus, &:active
opacity: 0.9
&, & *
color: white
&.open, &.closed
.active_table_row
border-color: $clr-brick
&.inactive
&.open, &.closed
.active_table_row
border-color: $disabled-dark

View File

@@ -2,6 +2,23 @@
@import mixins
// Generic styles for use
.modal-centered
text-align: center
p
margin-bottom: 0
.modal-header, p.modal-header
text-align: center
text-transform: uppercase
font-size: 1rem
font-weight: 400
color: $disabled-dark
border-bottom: 1px solid $disabled-dark
margin-top: 0.75rem
margin-bottom: 0.5rem
// Enterprise promo image and text
.highlight
@@ -53,7 +70,7 @@
// FOLLOW Enterprise
.follow-icons
text-align: center
// text-align: center
span
display: inline-block
margin: 0 0.25rem 0.75rem 0.25rem
@@ -74,7 +91,7 @@
label
text-transform: uppercase
font-size: 0.875rem
margin-bottom: 0
margin-bottom: 0.75rem
5rem
color: $dark-grey
@@ -82,51 +99,53 @@
color: $disabled-dark
span
text-transform: capitalize
.cta-hub
margin-right: 2rem
margin-top: 0rem
margin-bottom: 0.75rem
display: inline-block
.button.secondary
background-color: #999
.button.hub
margin-right: 1rem
margin-top: 0.25rem
margin-bottom: 1rem
padding-left: 1rem
padding-right: 1rem
font-weight: bold
&.secondary
color: $disabled-dark
&.primary
color: $clr-brick
i.ofn-i_033-open-sign, i.ofn-i_032-closed-sign
margin-right: 0.15rem
font-size: 1.25rem
i.ofn-i_007-caret-right
margin-left: 1rem
margin-right: 0.1rem
font-size: 2rem
padding: 0.15rem 0.25rem 0.35rem 0.25rem
float: left
.hub-name
margin-top: 0.75rem
margin-bottom: 0.2rem
font-weight: 400
display: inline-block
border-bottom: 1px solid transparent
.button-address
margin-top: 0.5rem
margin-bottom: 0.2rem
margin-left: 0.1rem
text-transform: uppercase
font-weight: 300
font-style: italic
font-size: 0.75rem
display: inline
display: inline-block
border-bottom: 1px solid transparent
@media all and (max-width: 640px)
display: none
.button.hub.expand
text-align: left
i.ofn-i_007-caret-right
float: right
i.ofn-i_033-open-sign, i.ofn-i_032-closed-sign
float: left
margin-right: 0.5rem
&:hover, &:focus, &:active
&.secondary
color: #666
.hub-name, .button-address
border-bottom: 1px solid #999
&.primary
color: $clr-brick-bright
.hub-name, .button-address
border-bottom: 1px solid $clr-brick-bright
// Generic styles for use
.modal-centered
text-align: center
p
margin-bottom: 0
.modal-header, p.modal-header
text-align: center
text-transform: uppercase
font-size: 1rem
font-weight: 400
color: $disabled-dark
border-bottom: 1px solid $disabled-dark
margin-top: 0.75rem
margin-bottom: 0.5rem

View File

@@ -11,6 +11,42 @@
margin-bottom: 1rem
padding-top: 1rem
padding-bottom: 1rem
.follow-icons
&, & *
font-size: 1.5rem
// Producer icons
i.ofn-i_059-producer, i.ofn-i_060-producer-reversed
font-size: 2rem
display: inline-block
margin-right: 0.25rem
float: left
color: $clr-turquoise
a
&:hover, &:active, &:focus
color: $clr-turquoise-bright
span
text-decoration: underline
a.cta-hub
&:hover, &:focus, &:active
&.secondary
color: #666
.hub-name, .button-address
border-bottom: 1px solid #999
&.primary
color: $clr-brick-bright
.hub-name, .button-address
border-bottom: 1px solid $clr-brick-bright
p.word-wrap
margin-bottom: 0
&:last-child
margin-bottom: 1rem
.fat-taxons
background-color: $clr-turquoise-light
//Open row
&.open
@@ -18,13 +54,17 @@
.active_table_row
border-left: 1px solid $clr-turquoise-bright
border-right: 1px solid $clr-turquoise-bright
background-color: rgba(255,255,255,0.4)
background-color: rgba(206,239,228,0.4)
.cta-container
background: none
.columns img
padding: 1rem 0
max-height: 160px
width: auto
&.left
padding: 0.25rem 1rem 0.25rem 0
&.right
padding: 0.25rem 0.5rem 0.25rem 2rem
.active_table_row:first-child
border-top: 1px solid $clr-turquoise-bright
@@ -37,4 +77,7 @@
&.closed
&:hover, &:active, &:focus
.active_table_row.closed
border: 1px solid $clr-turquoise
border: 1px solid $clr-turquoise

View File

@@ -1,10 +1,10 @@
@font-face {
font-family: 'OFN';
src:url('/OFN.eot?-4w617y');
src:url('/OFN.eot?#iefix-4w617y') format('embedded-opentype'),
url('/OFN.woff?-4w617y') format('woff'),
url('/OFN.ttf?-4w617y') format('truetype'),
url('/OFN.svg?-4w617y#OFN') format('svg');
src:url('/OFN.eot?eslsji');
src:url('/OFN.eot?#iefixeslsji') format('embedded-opentype'),
url('/OFN.woff?eslsji') format('woff'),
url('/OFN.ttf?eslsji') format('truetype'),
url('/OFN.svg?eslsji#OFN') format('svg');
font-weight: normal;
font-style: normal;
}
@@ -194,6 +194,42 @@
.ofn-i_057-expand:before {
content: "\e638";
}
.ofn-i-058-graph:before {
.ofn-i_058-graph:before {
content: "\e639";
}
.ofn-i_059-producer:before {
content: "\e63a";
}
.ofn-i_060-producer-reversed:before {
content: "\e63b";
}
.ofn-i_061-producer-map:before {
content: "\e63c";
}
.ofn-i_062-producer-map-reversed:before {
content: "\e63d";
}
.ofn-i_063-hub:before {
content: "\e63e";
}
.ofn-i_064-hub-reversed:before {
content: "\e63f";
}
.ofn-i_065-hub-map:before {
content: "\e640";
}
.ofn-i_066-hub-map-reversed:before {
content: "\e641";
}
.ofn-i_067-shop:before {
content: "\e642";
}
.ofn-i_068-shop-reversed:before {
content: "\e643";
}
.ofn-i_069-shop-map:before {
content: "\e644";
}
.ofn-i_070-shop-map-reversed:before {
content: "\e645";
}

View File

@@ -63,6 +63,20 @@ button.success, .button.success
.button.success:hover, .button.success:active, .button.success:focus, button.success:hover, button.success:active, button.success:focus
background: #14b6cc
.button.help-btn
@include border-radius(999999px)
&.tiny
padding: 0rem
margin: 0
float: right
i
font-size: 1.25rem
.profile-checkbox
display: inline-block
input[type="checkbox"] + label
margin: 0 0.2rem
// Responsive
@media screen and (min-width: 768px)
[role="main"]

View File

@@ -4,6 +4,8 @@ module Admin
before_filter :load_countries, :except => :index
before_filter :load_methods_and_fees, :only => [:new, :edit, :update, :create]
create.after :grant_management
before_filter :check_type, only: :update
before_filter :check_bulk_type, only: :bulk_update
helper 'spree/products'
include OrderCyclesHelper
@@ -67,6 +69,18 @@ module Admin
@enterprise_fees = EnterpriseFee.managed_by(spree_current_user).for_enterprise(@enterprise).order(:fee_type, :name).all
end
def check_bulk_type
unless spree_current_user.admin?
params[:enterprise_set][:collection_attributes].each do |i, enterprise_params|
enterprise_params.delete :type
end
end
end
def check_type
params[:enterprise].delete :type unless spree_current_user.admin?
end
# Overriding method on Spree's resource controller
def location_after_save
if params[:enterprise].key? :producer_properties_attributes

View File

@@ -9,7 +9,7 @@ class CheckoutController < Spree::CheckoutController
include OrderCyclesHelper
include EnterprisesHelper
def edit
# Because this controller doesn't inherit from our BaseController
# We need to duplicate the code here
@@ -56,7 +56,7 @@ class CheckoutController < Spree::CheckoutController
private
# Copied and modified from spree. Remove check for order state, since the state machine is
# progressed all the way in one go with the one page checkout.
def object_params
@@ -94,7 +94,7 @@ class CheckoutController < Spree::CheckoutController
def skip_state_validation?
true
end
def load_order
@order = current_order
redirect_to main_app.shop_path and return unless @order and @order.checkout_allowed?
@@ -112,6 +112,14 @@ class CheckoutController < Spree::CheckoutController
@order.ship_address ||= preferred_ship_address || last_used_ship_address || Spree::Address.default
end
def after_payment
# object_params sets the payment amount to the order total, but it does this before
# the shipping method is set. This results in the customer not being charged for their
# order's shipping. To fix this, we refresh the payment amount here.
@order.update_totals
@order.payments.first.update_attribute :amount, @order.total
end
# Overriding Spree's methods
def raise_insufficient_quantity
flash[:error] = t(:spree_inventory_error_flash_for_insufficient_quantity)

View File

@@ -8,6 +8,7 @@ module Spree
klass = klass_for_without_sym_fallback(name)
klass ||= name.singularize.to_sym
klass = :overview if klass == :dashboard
klass = Spree::Order if klass == :bulk_order_management
klass
end
alias_method_chain :klass_for, :sym_fallback

View File

@@ -1,7 +1,7 @@
class EnterpriseRelationship < ActiveRecord::Base
belongs_to :parent, class_name: 'Enterprise', touch: true
belongs_to :child, class_name: 'Enterprise', touch: true
has_many :permissions, class_name: 'EnterpriseRelationshipPermission'
has_many :permissions, class_name: 'EnterpriseRelationshipPermission', dependent: :destroy
validates_presence_of :parent_id, :child_id
validates_uniqueness_of :child_id, scope: :parent_id, message: "^That relationship is already established."

View File

@@ -59,12 +59,12 @@ class AbilityDecorator
# Enterprise User can only access orders that they are a distributor for
can [:index, :create], Spree::Order
can [:read, :update, :bulk_management, :fire, :resend], Spree::Order do |order|
can [:read, :update, :fire, :resend], Spree::Order do |order|
# We allow editing orders with a nil distributor as this state occurs
# during the order creation process from the admin backend
order.distributor.nil? || user.enterprises.include?(order.distributor)
end
can [:admin], Spree::Order if user.admin? || user.enterprises.any?(&:is_distributor?)
can [:admin, :bulk_management], Spree::Order if user.admin? || user.enterprises.any?(&:is_distributor?)
can [:admin, :create], Spree::LineItem
can [:admin, :index, :read, :create, :edit, :update, :fire], Spree::Payment

View File

@@ -17,6 +17,9 @@ end
class Api::UncachedEnterpriseSerializer < ActiveModel::Serializer
attributes :orders_close_at, :active
#TODO: Remove these later
attributes :icon, :has_shopfront, :can_aggregate
def orders_close_at
OrderCycle.first_closing_for(object).andand.orders_close_at
end
@@ -24,16 +27,52 @@ class Api::UncachedEnterpriseSerializer < ActiveModel::Serializer
def active
@options[:active_distributors].andand.include? object
end
# TODO: Move this back to uncached section when relavant properties are defined on the Enterprise model
def icon
# TODO: Replace with object.has_shopfront when this property exists
if has_shopfront
if can_aggregate
"/assets/map_005-hub.svg"
else
if object.is_distributor
"/assets/map_003-producer-shop.svg"
else
"/assets/map_001-producer-only.svg"
end
end
else
if can_aggregate
"/assets/map_006-hub-profile.svg"
else
if object.is_distributor
"/assets/map_004-producer-shop-profile.svg"
else
"/assets/map_002-producer-only-profile.svg"
end
end
end
end
# TODO: Remove this when flags on enterprises are switched over
def has_shopfront
object.type != 'profile'
end
# TODO: Remove this when flags on enterprises are switched over
def can_aggregate
object.is_distributor && object.suppliers != [object]
end
end
class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
cached
delegate :cache_key, to: :object
attributes :name, :id, :description, :latitude, :longitude,
:long_description, :website, :instagram, :linkedin, :twitter,
attributes :name, :id, :description, :latitude, :longitude,
:long_description, :website, :instagram, :linkedin, :twitter,
:facebook, :is_primary_producer, :is_distributor, :phone, :visible,
:email, :hash, :logo, :promo_image, :icon, :path,
:email, :hash, :logo, :promo_image, :path,
:pickup, :delivery
has_many :distributed_taxons, key: :taxons, serializer: Api::IdSerializer
@@ -67,16 +106,6 @@ class Api::CachedEnterpriseSerializer < ActiveModel::Serializer
object.promo_image(:large) if object.promo_image.exists?
end
def icon
if object.is_primary_producer? and object.is_distributor?
"/assets/map-icon-both.svg"
elsif object.is_primary_producer?
"/assets/map-icon-producer.svg"
else
"/assets/map-icon-hub.svg"
end
end
# TODO when ActiveSerializers supports URL helpers
# Then refactor. See readme https://github.com/rails-api/active_model_serializers
def path

View File

@@ -1,8 +1,10 @@
%td {{ enterprise_relationship.child_name }}
%td
%ul
%li{"ng-repeat" => "permission in enterprise_relationship.permissions"}
{{ EnterpriseRelationships.permission_presentation(permission.name) }}
%td {{ enterprise_relationship.parent_name }}
%td.actions
%a.delete-enterprise-relationship.icon-trash.no-text{'ng-click' => 'delete(enterprise_relationship)'}
%tr{"ng-repeat" => "enterprise_relationship in EnterpriseRelationships.enterprise_relationships | filter:query"}
%td {{ enterprise_relationship.parent_name }}
%td permits
%td {{ enterprise_relationship.child_name }}
%td
%ul
%li{"ng-repeat" => "permission in enterprise_relationship.permissions"}
{{ EnterpriseRelationships.permission_presentation(permission.name) }}
%td.actions
%a.delete-enterprise-relationship.icon-trash.no-text{'ng-click' => 'delete(enterprise_relationship)'}

View File

@@ -1,4 +1,9 @@
%tr
%td
%select{name: "enterprise_relationship_parent_id", "ng-model" => "parent_id", "ng-options" => "e.id as e.name for e in Enterprises.my_enterprises"}
%td
permits
%td
%select{name: "enterprise_relationship_child_id", "ng-model" => "child_id", "ng-options" => "e.id as e.name for e in Enterprises.all_enterprises"}
%td
@@ -6,8 +11,6 @@
%label
%input{type: "checkbox", "ng-model" => "permissions[permission]"}
{{ EnterpriseRelationships.permission_presentation(permission) }}
%td
%select{name: "enterprise_relationship_parent_id", "ng-model" => "parent_id", "ng-options" => "e.id as e.name for e in Enterprises.my_enterprises"}
%td.actions
%input{type: "button", value: "Create", "ng-click" => "create()"}
.errors {{ EnterpriseRelationships.create_errors }}

View File

@@ -11,5 +11,4 @@
%table#enterprise-relationships
%tbody
= render 'form'
%tr{"ng-repeat" => "enterprise_relationship in EnterpriseRelationships.enterprise_relationships | filter:query"}
= render 'enterprise_relationship'
= render 'enterprise_relationship'

View File

@@ -36,24 +36,25 @@
= f.check_box :is_primary_producer, 'ng-model' => 'Enterprise.is_primary_producer'
&nbsp;
= f.label :is_primary_producer, 'Producer'
.row
.alpha.eleven.columns
.three.columns.alpha
= f.label :type, 'Profile type'
.with-tip{'data-powertip' => "Full - enterprise may have products and relationships.<br />Single - enterprise may have products but no relationships.<br />Profile - enterprise has a profile but no products or relationships.<br />"}
%a What's this?
.two.columns
= f.radio_button :type, "full"
&nbsp;
= f.label :type, "Full", value: "full"
.two.columns
= f.radio_button :type, "single"
&nbsp;
= f.label :type, "Single", value: "single"
.four.columns.omega
= f.radio_button :type, "profile"
&nbsp;
= f.label :type, "Profile", value: "profile"
- if spree_current_user.admin?
.row
.alpha.eleven.columns
.three.columns.alpha
= f.label :type, 'Profile type'
.with-tip{'data-powertip' => "Full - enterprise may have products and relationships.<br />Single - enterprise may have products but no relationships.<br />Profile - enterprise has a profile but no products or relationships.<br />"}
%a What's this?
.two.columns
= f.radio_button :type, "full"
&nbsp;
= f.label :type, "Full", value: "full"
.two.columns
= f.radio_button :type, "single"
&nbsp;
= f.label :type, "Single", value: "single"
.four.columns.omega
= f.radio_button :type, "profile"
&nbsp;
= f.label :type, "Profile", value: "profile"
.row
.three.columns.alpha
%label Visible in search?

View File

@@ -10,17 +10,17 @@
= form_for @enterprise_set, :url => main_app.bulk_update_admin_enterprises_path do |f|
%table#listing_enterprises.index
%colgroup
%col{style: "width: 20%;"}/
%col{style: "width: 25%;"}/
%col{style: "width: 10%;"}/
%col{style: "width: 5%;"}/
%col/
%col{style: "width: 10%;"}/
%col{style: "width: 20%;"}/
%thead
%tr{"data-hook" => "enterprises_header"}
%th Name
%th Role
%th Visible?
%th Description
%th Type
%th
%tbody
= f.fields_for :collection do |enterprise_form|
@@ -28,16 +28,13 @@
%tr{class: "enterprise-#{enterprise.id}"}
%td= link_to enterprise.name, main_app.edit_admin_enterprise_path(enterprise)
%td
- if enterprise.is_primary_producer && enterprise.is_distributor
Producer &amp; Distributor
- elsif enterprise.is_distributor
Distributor
- elsif enterprise.is_primary_producer
Producer
- else
%h1.icon-exclamation-sign.with-tip{"data-powertip" => "This enterprise does not have any roles", style: "text-align: center;color: #DA5354"}
= enterprise_form.check_box :is_primary_producer
Producer
%br/
= enterprise_form.check_box :is_distributor
Hub
%td= enterprise_form.check_box :visible
%td= enterprise.description
%td= enterprise_form.select :type, Enterprise::TYPES, {}, class: 'select2 fullwidth'
%td{"data-hook" => "admin_users_index_row_actions"}
= render 'actions', enterprise: enterprise
- if @enterprises.empty?

View File

@@ -1,8 +1,8 @@
= f_form_for current_order, url: main_app.update_checkout_path,
= f_form_for current_order,
html: {name: "checkout",
id: "checkout_form",
novalidate: true,
name: "checkout"} do |f|
"ng-submit" => "purchase($event)"} do |f|
= inject_available_shipping_methods
= inject_available_payment_methods
@@ -20,7 +20,6 @@
= render partial: "checkout/payment", locals: {f: f}
%p
%button.button.primary{type: :submit,
"ng-click" => "purchase($event)",
"ng-disabled" => "checkout.$invalid"}
Place order now
/ {{ checkout.$valid }}

View File

@@ -6,7 +6,7 @@
%span.fat-taxons{"ng-repeat" => "taxon in hub.taxons"}
%render-svg{path: "{{taxon.icon}}"}
{{taxon.name}}
%div{"bo-if" => "!hub.taxons"}
%div.show-for-medium-up{"bo-if" => "hub.taxons.length==0"}
&nbsp;
.columns.small-12.medium-3.large-2.fat
%div{"bo-if" => "hub.pickup || hub.delivery"}
@@ -27,5 +27,5 @@
%i.ofn-i_036-producers
%span
{{ enterprise.name }}
%div{"bo-if" => "!hub.producers"}
%div.show-for-medium-up{"bo-if" => "hub.producers.length==0"}
&nbsp;

View File

@@ -2,7 +2,7 @@
#hubs.hubs{"ng-controller" => "HubsCtrl"}
.row
.small-12.columns
%h1 Find hubs in your area...
%h1 Shop your local area
/ %div
/ Shop a
/ %ofn-modal{title: "food hub"}
@@ -14,7 +14,7 @@
/ %i.ofn-i_020-search
%input{type: :text,
"ng-model" => "query",
placeholder: "Search by Hub or Suburb name",
placeholder: "Search by Shop or Suburb...",
"ng-debounce" => "150",
"ofn-disable-enter" => true}

View File

@@ -1,23 +1,26 @@
.row.active_table_row{"ng-click" => "toggle()", "ng-class" => "{'closed' : !open()}", bindonce: true}
.columns.small-12.medium-6.large-5.skinny-head
%a.hub{"bo-href" => "hub.path", "ng-class" => "{primary: hub.active, secondary: !hub.active}", "ofn-empties-cart" => "hub"}
%i.ofn-i_040-hub
%span
%strong {{ hub.name | truncate:40}}
%i{ ng: { class: "{ 'ofn-i_063-hub': hub.can_aggregate && hub.has_shopfront,
'ofn-i_059-producer': !hub.can_aggregate && hub.has_shopfront,
'ofn-i_060-producer-reversed': !hub.can_aggregate && !hub.has_shopfront,
'ofn-i_064-hub-reversed': hub.can_aggregate && !hub.has_shopfront }" } }
/ %i.ofn-i_063-hub
%span.margin-top.hub-name-listing {{ hub.name | truncate:40}}
.columns.small-4.medium-2.large-2
{{ hub.address.city }}
%span.margin-top {{ hub.address.city }}
.columns.small-2.medium-1.large-1
{{ hub.address.state_name | uppercase }}
%span.margin-top {{ hub.address.state_name | uppercase }}
.columns.small-6.medium-3.large-4.text-right{"bo-if" => "hub.active"}
%a.hub{"bo-href" => "hub.path", "ng-class" => "{primary: hub.active, secondary: !hub.active}", "ofn-empties-cart" => "hub"}
%a.hub.open_closed{"bo-href" => "hub.path", "ng-class" => "{primary: hub.active, secondary: !hub.active}", "ofn-empties-cart" => "hub"}
%i.ofn-i_033-open-sign
%span {{ hub.orders_close_at | sensible_timeframe }}
%span.margin-top {{ hub.orders_close_at | sensible_timeframe }}
.columns.small-6.medium-3.large-4.text-right{"bo-if" => "!hub.active"}
%a.hub{"bo-href" => "hub.path", "ng-class" => "{primary: hub.active, secondary: !hub.active}", "ofn-empties-cart" => "hub"}
%a.hub.open_closed{"bo-href" => "hub.path", "ng-class" => "{primary: hub.active, secondary: !hub.active}", "ofn-empties-cart" => "hub"}
%i.ofn-i_032-closed-sign
%span Orders closed
%span.margin-top Orders closed

View File

@@ -4,16 +4,17 @@
%h1= image_tag "ofn_logo_beta.png", title: "Open Food Network (beta)"
%h2 An open marketplace that makes it easy to find, buy, sell and move sustainable local food.
%ofn-modal{title: "Learn more"}
%ofn-modal{title: "Learn more", "ng-cloak" => true}
= render partial: "modals/learn_more"
= render partial: "home/hubs"
.ng-cloak
= render partial: "home/hubs"
/ = render partial: "home/map"
/ = render partial: "home/map"
/ = render partial: "home/producers"
/ = render partial: "home/producers"
/ = render partial: "home/groups"
/ = render partial: "home/groups"
= render partial: "home/beta"

View File

@@ -22,10 +22,10 @@ end
node :icon do |e|
if e.is_primary_producer? and e.is_distributor?
image_path "map-icon-both.svg"
image_path "map_003-producer-shop.svg"
elsif e.is_primary_producer?
image_path "map-icon-producer.svg"
image_path "map_001-producer-only.svg"
else
image_path "map-icon-hub.svg"
image_path "map_005-hub.svg"
end
end

View File

@@ -1,23 +1,61 @@
.row.active_table_row{"ng-show" => "open()", "ng-click" => "toggle()", "ng-class" => "{'open' : !ofn-i_032-closed-sign()}"}
.columns.small-12.medium-4.large-4.fat
.columns.small-12.medium-7.large-7.fat
/ No long description available because it spits out HTML formatting producer.long_description
%div{"bo-if" => "producer.long_description"}
%label About us
%img.right.show-for-medium-up{src: "{{ producer.logo }}" }
%p.text-small
{{ producer.long_description }}
%div.show-for-medium-up{"bo-if" => "producer.long_description.length==0"}
%label &nbsp;
.columns.small-12.medium-5.large-5.fat
%div{"ng-if" => "producer.supplied_taxons"}
%label Shop for
%p.trans-sentence
%span.fat-taxons{"ng-repeat" => "taxon in producer.supplied_taxons"}
%render-svg{path: "{{taxon.icon}}"}
{{taxon.name}}
%div.show-for-medium-up{"ng-if" => "producer.supplied_taxons.length==0"}
&nbsp;
.columns.small-12.medium-3.large-3.fat
%div{"bo-if" => "producer.logo"}
%img{src: "{{ producer.logo }}" }
%div{"ng-if" => "producer.email || producer.website || producer.phone"}
%label Contact
%p.word-wrap{"ng-if" => "producer.phone"}
Call {{ producer.phone }}
.columns.small-12.medium-5.large-5.fat
%div{"bo-if" => "producer.description"}
%label About us
%p.text-small
{{ producer.description }}
%p.word-wrap{"ng-if" => "producer.email"}
%a{"ng-href" => "{{producer.email | stripUrl}}", target: "_blank", mailto: true}
%span.email {{ producer.email | stripUrl }}
.row.active_table_row{"ng-show" => "open()", "bo-if" => "producer.hubs"}
%p.word-wrap{"ng-if" => "producer.website"}
%a{"ng-href" => "http://{{producer.website | stripUrl}}", target: "_blank" }
%span {{ producer.website | stripUrl }}
%div{"ng-if" => "producer.twitter || producer.facebook || producer.linkedin || producer.instagram"}
%label Follow
.follow-icons{bindonce: true}
%span{"ng-if" => "producer.twitter"}
%a{"ng-href" => "http://twitter.com/{{producer.twitter}}", target: "_blank"}
%i.ofn-i_041-twitter
%span{"ng-if" => "producer.facebook"}
%a{"ng-href" => "http://{{producer.facebook | stripUrl}}", target: "_blank"}
%i.ofn-i_044-facebook
%span{"ng-if" => "producer.linkedin"}
%a{"ng-href" => "http://{{producer.linkedin | stripUrl}}", target: "_blank"}
%i.ofn-i_042-linkedin
%span{"ng-if" => "producer.instagram"}
%a{"ng-href" => "http://instagram.com/{{producer.instagram}}", target: "_blank"}
%i.ofn-i_043-instagram
.row.active_table_row.pad-top{"ng-show" => "open()", "bo-if" => "producer.hubs"}
.columns.small-12
.row
.columns.small-12.fat
@@ -26,13 +64,15 @@
Shop for
%span.turquoise {{ producer.name }}
products at:
%div.show-for-medium-up{"bo-if" => "!producer.name"}
&nbsp;
.row.cta-container
.columns.small-12
%a.button.hub{"ng-repeat" => "hub in producer.hubs | orderBy:'-active'",
%a.cta-hub{"ng-repeat" => "hub in producer.hubs | orderBy:'-active'",
"bo-href" => "hub.path", "ofn-empties-cart" => "hub",
"bo-class" => "{primary: hub.active, secondary: !hub.active}"}
%i.ofn-i_033-open-sign{"bo-if" => "hub.active"}
%i.ofn-i_032-closed-sign{"bo-if" => "!hub.active"}
{{hub.name}}
.hub-name {{hub.name}}
.button-address {{ [hub.address.city, hub.address.state_name] | printArray }}
%i.ofn-i_007-caret-right

View File

@@ -1,12 +1,13 @@
.row.active_table_row{"ng-click" => "toggle()", "ng-class" => "{'closed' : !open()}"}
.columns.small-12.medium-4.large-4.skinny-head
%i.ofn-i_036-producers
%strong {{ producer.name }}
/ This needs logic to show profile only icon when available %i.ofn-i_060-producer-reversed
%i.ofn-i_059-producer
%span.margin-top
%strong {{ producer.name }}
.columns.small-6.medium-3.large-3
{{ producer.address.city }}
%span.margin-top {{ producer.address.city }}
.columns.small-4.medium-3.large-4
{{ producer.address.state_name | uppercase }}
%span.margin-top {{ producer.address.state_name | uppercase }}
.columns.small-2.medium-2.large-1.text-right
/ This forces line-height to be triggered
%span &nbsp;
%i{"ng-class" => "{'ofn-i_005-caret-down' : !open(), 'ofn-i_006-caret-up' : open()}"}
%span.margin-top
%i{"ng-class" => "{'ofn-i_005-caret-down' : !open(), 'ofn-i_006-caret-up' : open()}"}

View File

@@ -13,7 +13,7 @@
.small-12.columns
%input.animate-show{type: :text,
"ng-model" => "query",
placeholder: "Search by Producer or Suburb name",
placeholder: "Search by Producer or Suburb...",
"ng-debounce" => "150",
"ofn-disable-enter" => true}

View File

@@ -1,5 +1,5 @@
.row
.small-12.columns
.small-12.medium-6.columns
%a.button.success.tiny.filterbtn{"ng-click" => "filtersActive = !filtersActive",
"ng-show" => "FilterSelectorsService.selectors.length > 0"}
{{ filterText(filtersActive) }}
@@ -8,3 +8,12 @@
%a.button.secondary.tiny.filterbtn.disabled{"ng-show" => "FilterSelectorsService.selectors.length == 0"}
No filters
.small-12.medium-6.columns.text-right
.profile-checkbox
/ Hide until we're ready to work on this:
/ %input{type: "checkbox", name: "profile"}><
/ %label Show profiles
/ %button.button.secondary.tiny.help-btn.ng-scope{:popover => "Profiles do not have a shopfront on the Open Food Network, but they may have their own physical or online shop elsewhere", "popover-placement" => "left"}><
/ %i.ofn-i_013-help

View File

@@ -32,10 +32,10 @@
- else
= render 'shared/signed_in'
%li.divider
%li.current_hub{"ng-controller" => "CurrentHubCtrl", "ng-show" => "CurrentHub.hub.id"}
%li.current_hub{"ng-controller" => "CurrentHubCtrl", "ng-show" => "CurrentHub.hub.id", "ng-cloak" => true}
%a{href: main_app.shop_path}
%em Shopping &#64;
%span.nav-primary.nav-branded {{ CurrentHub.hub.name }}
%li.divider
%li.cart
%li.cart{"ng-cloak" => true}
= render partial: "shared/menu/cart"

View File

@@ -563,9 +563,9 @@ ActiveRecord::Schema.define(:version => 20140826043521) do
t.string "email"
t.text "special_instructions"
t.integer "distributor_id"
t.integer "order_cycle_id"
t.string "currency"
t.string "last_ip_address"
t.integer "order_cycle_id"
t.integer "cart_id"
end

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -7,7 +7,7 @@ feature %q{
}, skip: true do
include AuthenticationWorkflow
include WebHelper
background do
set_feature_toggle :order_cycles, true
@@ -24,8 +24,8 @@ feature %q{
:state => Spree::State.find_by_name('Victoria'),
:country => Spree::Country.find_by_name('Australia')),
:pickup_times => 'Tuesday, 4 PM')
@distributor_alternative = create(:distributor_enterprise, :name => 'Alternative Distributor',
:address => create(:address,
:address1 => '1600 Rathdowne St',
@@ -33,7 +33,7 @@ feature %q{
:zipcode => 3054,
:state => Spree::State.find_by_name('Victoria'),
:country => Spree::Country.find_by_name('Australia')),
:pickup_times => 'Tuesday, 4 PM')
:pickup_times => 'Tuesday, 4 PM')
@enterprise_fee_1 = create(:enterprise_fee, :name => 'Enterprise Fee One', :calculator => Spree::Calculator::PerItem.new)
@enterprise_fee_1.calculator.set_preference :amount, 1
@@ -347,16 +347,16 @@ feature %q{
login_to_consumer_section
click_link 'FruitAndVeg'
visit enterprise_path @distributor1
visit enterprise_path @distributor1
click_link 'Bananas'
click_button 'Add To Cart'
visit enterprise_path @distributor1
visit enterprise_path @distributor1
click_link 'Zucchini'
click_button 'Add To Cart'
find('#checkout-link').click
# And manually visit the old checkout
visit "/checkout"
@@ -389,7 +389,7 @@ feature %q{
# -- Checkout: Delivery
page.should have_content "DELIVERY METHOD"
order_charges = page.all("tbody#summary-order-charges tr").map {|row| row.all('td').map(&:text)}.take(2)
order_charges.should == [["Distribution:", "$51.00"]]
order_charges.should == [["Distribution:", "$51.00"]]
click_checkout_continue_button
@@ -403,7 +403,7 @@ feature %q{
# -- Checkout: Order complete
page.should have_content 'Your order has been processed successfully'
page.should have_content @payment_method_distributor_oc.description
page.should have_content @distributor_oc.name
page.should have_content @distributor_oc.name
page.should have_selector 'tfoot#order-charges tr.total td', text: 'Distribution'
page.should have_selector 'tfoot#order-charges tr.total td', text: '51.00'

View File

@@ -36,5 +36,67 @@ module Admin
admin_user.enterprise_roles.where(enterprise_id: enterprise).should be_empty
end
end
describe "updating an enterprise" do
let(:profile_enterprise) { create(:enterprise, type: 'profile') }
context "as manager" do
it "does not allow 'type' to be changed" do
profile_enterprise.enterprise_roles.build(user: user).save
controller.stub spree_current_user: user
enterprise_params = { id: profile_enterprise.id, enterprise: { type: 'full' } }
spree_put :update, enterprise_params
profile_enterprise.reload
expect(profile_enterprise.type).to eq 'profile'
end
end
context "as super admin" do
it "allows 'type' to be changed" do
controller.stub spree_current_user: admin_user
enterprise_params = { id: profile_enterprise.id, enterprise: { type: 'full' } }
spree_put :update, enterprise_params
profile_enterprise.reload
expect(profile_enterprise.type).to eq 'full'
end
end
end
describe "bulk updating enterprises" do
let(:profile_enterprise1) { create(:enterprise, type: 'profile') }
let(:profile_enterprise2) { create(:enterprise, type: 'profile') }
context "as manager" do
it "does not allow 'type' to be changed" do
profile_enterprise1.enterprise_roles.build(user: user).save
profile_enterprise2.enterprise_roles.build(user: user).save
controller.stub spree_current_user: user
bulk_enterprise_params = { enterprise_set: { collection_attributes: { '0' => { id: profile_enterprise1.id, type: 'full' }, '1' => { id: profile_enterprise2.id, type: 'full' } } } }
spree_put :bulk_update, bulk_enterprise_params
profile_enterprise1.reload
profile_enterprise2.reload
expect(profile_enterprise1.type).to eq 'profile'
expect(profile_enterprise2.type).to eq 'profile'
end
end
context "as super admin" do
it "allows 'type' to be changed" do
profile_enterprise1.enterprise_roles.build(user: user).save
profile_enterprise2.enterprise_roles.build(user: user).save
controller.stub spree_current_user: admin_user
bulk_enterprise_params = { enterprise_set: { collection_attributes: { '0' => { id: profile_enterprise1.id, type: 'full' }, '1' => { id: profile_enterprise2.id, type: 'full' } } } }
spree_put :bulk_update, bulk_enterprise_params
profile_enterprise1.reload
profile_enterprise2.reload
expect(profile_enterprise1.type).to eq 'full'
expect(profile_enterprise2.type).to eq 'full'
end
end
end
end
end

View File

@@ -15,13 +15,6 @@ feature %q{
admin_user = quick_login_as_admin
end
it "displays a Bulk Management Tab under the Orders item" do
visit '/admin/orders'
page.should have_link "Bulk Order Management"
click_link "Bulk Order Management"
page.should have_selector "h1.page-title", text: "Bulk Order Management"
end
it "displays a message when number of line items is zero" do
visit '/admin/orders/bulk_management'
page.should have_text "No orders found."
@@ -586,6 +579,13 @@ feature %q{
quick_login_as @enterprise_user
end
it "displays a Bulk Management Tab under the Orders item" do
visit '/admin/orders'
page.should have_link "Bulk Order Management"
click_link "Bulk Order Management"
page.should have_selector "h1.page-title", text: "Bulk Order Management"
end
it "shows only line item from orders that I distribute, and not those that I supply" do
visit '/admin/orders/bulk_management'

View File

@@ -24,10 +24,10 @@ feature %q{
# Then I should see the relationships
within('table#enterprise-relationships') do
page.should have_relationship e1, e2, ['can add to order cycle']
page.should have_relationship e2, e3, ['can manage the products of']
page.should have_relationship e1, e2, ['to add to order cycle']
page.should have_relationship e2, e3, ['to manage products']
page.should have_relationship e3, e4,
['can add to order cycle', 'can manage the products of']
['to add to order cycle', 'to manage products']
end
end
@@ -39,13 +39,13 @@ feature %q{
visit admin_enterprise_relationships_path
select 'One', from: 'enterprise_relationship_parent_id'
check 'can add to order cycle'
check 'can manage the products of'
uncheck 'can manage the products of'
check 'to add to order cycle'
check 'to manage products'
uncheck 'to manage products'
select 'Two', from: 'enterprise_relationship_child_id'
click_button 'Create'
page.should have_relationship e1, e2, ['can add to order cycle']
page.should have_relationship e1, e2, ['to add to order cycle']
er = EnterpriseRelationship.where(parent_id: e1, child_id: e2).first
er.should be_present
er.permissions.map(&:name).should == ['add_to_order_cycle']
@@ -69,14 +69,13 @@ feature %q{
end.to change(EnterpriseRelationship, :count).by(0)
end
scenario "deleting a relationship" do
e1 = create(:enterprise, name: 'One')
e2 = create(:enterprise, name: 'Two')
er = create(:enterprise_relationship, parent: e1, child: e2)
er = create(:enterprise_relationship, parent: e1, child: e2, permissions_list: [:add_to_order_cycle])
visit admin_enterprise_relationships_path
page.should have_relationship e1, e2
page.should have_relationship e1, e2, ['to add to order cycle']
first("a.delete-enterprise-relationship").click
@@ -118,8 +117,8 @@ feature %q{
private
def have_relationship(parent, child, perms=[])
perms = perms.join(' ') || 'permits'
perms = perms.join(' ')
have_table_row [child.name, perms, parent.name, '']
have_table_row [parent.name, 'permits', child.name, perms, '']
end
end

View File

@@ -15,39 +15,43 @@ feature %q{
click_link 'Enterprises'
within("tr.enterprise-#{s.id}") do
page.should have_content s.name
page.should have_content "Edit Profile"
page.should have_content "Delete"
page.should_not have_content "Payment Methods"
page.should_not have_content "Shipping Methods"
page.should have_content "Enterprise Fees"
expect(page).to have_content s.name
expect(page).to have_select "enterprise_set_collection_attributes_1_type"
expect(page).to have_content "Edit Profile"
expect(page).to have_content "Delete"
expect(page).to_not have_content "Payment Methods"
expect(page).to_not have_content "Shipping Methods"
expect(page).to have_content "Enterprise Fees"
end
within("tr.enterprise-#{d.id}") do
page.should have_content d.name
page.should have_content "Edit Profile"
page.should have_content "Delete"
page.should have_content "Payment Methods"
page.should have_content "Shipping Methods"
page.should have_content "Enterprise Fees"
expect(page).to have_content d.name
expect(page).to have_select "enterprise_set_collection_attributes_0_type"
expect(page).to have_content "Edit Profile"
expect(page).to have_content "Delete"
expect(page).to have_content "Payment Methods"
expect(page).to have_content "Shipping Methods"
expect(page).to have_content "Enterprise Fees"
end
end
scenario "editing enterprises in bulk" do
s = create(:supplier_enterprise)
d = create(:distributor_enterprise)
d = create(:distributor_enterprise, type: 'profile')
login_to_admin_section
click_link 'Enterprises'
within("tr.enterprise-#{d.id}") do
page.should have_checked_field "enterprise_set_collection_attributes_0_visible"
expect(page).to have_checked_field "enterprise_set_collection_attributes_0_visible"
uncheck "enterprise_set_collection_attributes_0_visible"
select 'full', from: "enterprise_set_collection_attributes_0_type"
end
click_button "Update"
flash_message.should == 'Enterprises updated successfully'
distributor = Enterprise.find(d.id)
distributor.visible.should == false
expect(distributor.visible).to eq false
expect(distributor.type).to eq 'full'
end
scenario "viewing an enterprise" do
@@ -127,7 +131,7 @@ feature %q{
choose 'Single'
fill_in 'enterprise_description', :with => 'Connecting farmers and eaters'
fill_in 'enterprise_long_description', :with => 'Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro.'
# Check Angularjs switching of sidebar elements
uncheck 'enterprise_is_primary_producer'
uncheck 'enterprise_is_distributor'
@@ -259,10 +263,22 @@ feature %q{
click_link "Enterprises"
page.should have_content supplier1.name
page.should have_content distributor1.name
page.should_not have_content supplier2.name
page.should_not have_content distributor2.name
within("tr.enterprise-#{distributor1.id}") do
expect(page).to have_content distributor1.name
expect(page).to have_checked_field "enterprise_set_collection_attributes_0_is_distributor"
expect(page).to have_unchecked_field "enterprise_set_collection_attributes_0_is_primary_producer"
expect(page).to have_select "enterprise_set_collection_attributes_0_type"
end
within("tr.enterprise-#{supplier1.id}") do
expect(page).to have_content supplier1.name
expect(page).to have_unchecked_field "enterprise_set_collection_attributes_1_is_distributor"
expect(page).to have_checked_field "enterprise_set_collection_attributes_1_is_primary_producer"
expect(page).to have_select "enterprise_set_collection_attributes_1_type"
end
expect(page).to_not have_content "supplier2.name"
expect(page).to_not have_content "distributor2.name"
end
scenario "creating an enterprise" do

View File

@@ -94,10 +94,6 @@ feature "As a consumer I want to check out my cart", js: true do
describe "purchasing" do
it "takes us to the order confirmation page when we submit a complete form" do
toggle_shipping
choose sm2.name
toggle_payment
choose pm1.name
toggle_details
within "#details" do
fill_in "First Name", with: "Will"
@@ -112,14 +108,25 @@ feature "As a consumer I want to check out my cart", js: true do
select "Victoria", from: "State"
fill_in "City", with: "Melbourne"
fill_in "Postcode", with: "3066"
end
toggle_shipping
within "#shipping" do
choose sm2.name
fill_in 'Any notes or custom delivery instructions?', with: "SpEcIaL NoTeS"
end
toggle_payment
within "#payment" do
choose pm1.name
end
place_order
page.should have_content "Your order has been processed successfully"
ActionMailer::Base.deliveries.length.should == 2
email = ActionMailer::Base.deliveries.last
site_name = Spree::Config[:site_name]
email.subject.should include "#{site_name} Order Confirmation"
o = Spree::Order.complete.first
expect(o.special_instructions).to eq "SpEcIaL NoTeS"
end
context "with basic details filled" do
@@ -152,6 +159,20 @@ feature "As a consumer I want to check out my cart", js: true do
page.should have_content "Your order has been processed successfully"
end
context "when we are charged a shipping fee" do
before { choose sm2.name }
it "creates a payment for the full amount inclusive of shipping" do
place_order
page.should have_content "Your order has been processed successfully"
# There are two orders - our order and our new cart
o = Spree::Order.complete.first
o.adjustments.shipping.first.amount.should == 4.56
o.payments.first.amount.should == 10 + 1.23 + 4.56 # items + fees + shipping
end
end
context "with a credit card payment method" do
let!(:pm1) { create(:payment_method, distributors: [distributor], name: "Roger rabbit", type: "Spree::Gateway::Bogus") }
@@ -167,7 +188,7 @@ feature "As a consumer I want to check out my cart", js: true do
# Order should have a payment with the correct amount
o = Spree::Order.complete.first
o.payments.first.amount.should == 11.23
o.payments.first.amount.should == 15.79
end
it "shows the payment processing failed message when submitted with an invalid credit card" do

View File

@@ -15,6 +15,10 @@ module Spree
it "returns :overview for the dashboard" do
helper.klass_for('dashboard').should == :overview
end
it "returns Spree::Order for bulk_order_management" do
helper.klass_for('bulk_order_management').should == Spree::Order
end
end
end
end

View File

@@ -4,7 +4,9 @@ describe Spree::ProductFilters do
context "distributor filter" do
it "provides filtering for all distributors" do
3.times { create(:distributor_enterprise) }
Spree::ProductFilters.distributor_filter[:labels].should == Enterprise.is_distributor.sort.map { |d| [d.name, d.name] }
Enterprise.is_distributor.sort.map { |d| [d.name, d.name] }.each do |distributor|
expect(Spree::ProductFilters.distributor_filter[:labels]).to include distributor
end
end
end
end

View File

@@ -16,6 +16,6 @@ describe Api::EnterpriseSerializer do
it "will render urls" do
serializer = Api::EnterpriseSerializer.new enterprise
serializer.to_json.should match "map-icon-hub.svg"
serializer.to_json.should match "map_005-hub.svg"
end
end