Merge branch 'master' into currency
Conflicts: app/helpers/injection_helper.rb db/suburb_seeds.rb
@@ -11,53 +11,57 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#0B8C61" d="M9.46,8.846L9.458,9.319l-0.003,2.397c1.098-0.034,2.3-0.052,3.438-0.052c0.201,0,0.401,0.001,0.6,0.002
|
||||
l-0.935-2.824L9.46,8.846z"/>
|
||||
<circle fill="#0B8C61" cx="8.728" cy="17.454" r="1.569"/>
|
||||
<path fill="#0B8C61" d="M12.395,17.13c-0.015-0.107-0.027-0.199-0.037-0.282c-0.047-0.382-0.165-0.741-0.325-1.075
|
||||
c-0.049-0.096-0.097-0.193-0.155-0.285c-0.038-0.063-0.078-0.124-0.119-0.184c-0.514-0.723-1.278-1.251-2.166-1.464
|
||||
c-0.202-0.04-0.409-0.061-0.619-0.061c-0.295,0-0.592,0.041-0.881,0.122c-0.276,0.077-0.487,0.112-0.685,0.112
|
||||
c-0.027,0-0.048-0.008-0.074-0.009C5.969,14.557,5,15.892,5,17.455c0,2.055,1.672,3.727,3.728,3.727
|
||||
c2.035,0,3.689-1.642,3.719-3.671l-0.041-0.296L12.395,17.13z M8.728,19.523c-1.142,0-2.07-0.928-2.07-2.069
|
||||
s0.928-2.07,2.07-2.07c1.141,0,2.069,0.929,2.069,2.07S9.869,19.523,8.728,19.523z"/>
|
||||
<circle fill="#0B8C61" cx="20.826" cy="19.013" r="1.006"/>
|
||||
<path fill="#0B8C61" d="M22.72,15.398c0.13-0.696,0.212-1.403,0.271-2.108c0.055-0.659-0.112-0.814-0.758-0.839
|
||||
c-0.961-0.034-1.848-0.071-2.808-0.109c-0.029-0.001-0.077-0.022-0.077-0.06c0-0.724,0.037-2.484,0.037-2.484
|
||||
S19.196,9.66,18.931,9.66c-0.116,0-0.247,0.026-0.383,0.103c0,0.821,0,1.654,0,2.527c0,0-1.172-0.031-2.844-0.065
|
||||
c-0.074-0.002-0.281-0.128-0.378-0.392c-0.251-0.694-0.8-2.045-1.52-4.126c0,0-0.373-0.888-1.316-0.888c-0.781,0-4.679,0-4.679,0
|
||||
v5.199c0,0-0.353,0.148-0.649,0.178c-0.078,0.472-0.067,0.711,0.115,0.784c0.46-0.15,0.942-0.252,1.451-0.252
|
||||
c0.389,0,0.761,0.061,1.122,0.149c1.119,0.237,2.101,0.923,2.748,1.879c0.034,0.048,0.064,0.097,0.096,0.147
|
||||
c0.094,0.151,0.179,0.306,0.255,0.47c0.083,0.167,0.154,0.338,0.217,0.515c0.004,0.012,0.008,0.024,0.011,0.037
|
||||
c0.127,0.368,0.206,0.754,0.238,1.156c0.101,0.014,0.196,0.036,0.289,0.036c0.007,0,0.013,0,0.02,0
|
||||
c2.176-0.056,4.355-0.06,6.529-0.169c-0.906,0.251-1.575,1.082-1.575,2.067c0,1.184,0.962,2.147,2.148,2.147
|
||||
c1.184,0,2.147-0.963,2.147-2.147c0-1.071-0.79-1.958-1.816-2.119C22.761,16.794,22.451,16.842,22.72,15.398z M12.893,12.163
|
||||
c-1.343,0-2.729,0.025-3.938,0.069l0.003-2.916l0.004-0.97l3.957-0.006l1.263,3.813l0.045,0.018
|
||||
C13.793,12.166,13.345,12.163,12.893,12.163z M22.082,19.013c0,0.693-0.564,1.257-1.256,1.257c-0.692,0-1.256-0.564-1.256-1.257
|
||||
c0-0.692,0.564-1.255,1.256-1.255C21.518,17.758,22.082,18.321,22.082,19.013z"/>
|
||||
<path fill="#0B8C61" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z M23.973,19.013
|
||||
c0,1.735-1.412,3.147-3.147,3.147c-1.736,0-3.148-1.412-3.148-3.147c0-0.34,0.055-0.67,0.158-0.98
|
||||
c-0.652,0.016-1.301,0.027-1.94,0.039c-0.716,0.013-1.431,0.025-2.137,0.043l-0.037,0.001h-0.018
|
||||
c-0.102,0-0.208-0.014-0.315-0.03c-0.312,2.306-2.272,4.096-4.661,4.096C6.121,22.181,4,20.061,4,17.455
|
||||
c0-1.725,0.939-3.222,2.323-4.047c-0.278-0.463-0.209-1.002-0.148-1.375L6.3,11.276l0.511-0.051V6.819v-1h1h4.679
|
||||
c1.269,0,2.003,0.943,2.238,1.5l0.012,0.03l0.011,0.03c0.497,1.435,0.905,2.503,1.203,3.283c0.083,0.217,0.156,0.408,0.217,0.572
|
||||
c0.531,0.011,0.998,0.022,1.376,0.031V9.763V9.177l0.512-0.286c0.273-0.153,0.566-0.23,0.872-0.23
|
||||
c0.55,0,0.938,0.254,1.044,0.332l0.419,0.307l-0.011,0.52c0,0.001-0.017,0.815-0.028,1.56c0.635,0.025,1.257,0.05,1.916,0.073
|
||||
c0.277,0.011,0.925,0.036,1.358,0.525c0.384,0.434,0.393,0.974,0.358,1.396c-0.07,0.848-0.161,1.55-0.284,2.208
|
||||
c-0.04,0.216-0.066,0.397-0.089,0.547c-0.062,0.425-0.158,0.742-0.292,0.981C23.731,17.644,23.973,18.308,23.973,19.013z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.3 KiB |
@@ -11,55 +11,59 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#0B8C61" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.571C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M14.002,30.908
|
||||
C10.865,28.805,1,21.533,1,13.333C1,7.511,6.56,1,14,1c7.44,0,13,6.511,13,12.333C27,21.682,17.14,28.843,14.002,30.908z"/>
|
||||
<path fill="#0B8C61" d="M23.703,15.582c0.123-0.658,0.214-1.36,0.284-2.208c0.035-0.422,0.026-0.962-0.358-1.396
|
||||
c-0.433-0.489-1.081-0.514-1.358-0.525c-0.659-0.024-1.281-0.048-1.916-0.073c0.011-0.745,0.028-1.56,0.028-1.56l0.011-0.52
|
||||
l-0.419-0.307c-0.106-0.078-0.495-0.332-1.044-0.332c-0.306,0-0.599,0.077-0.872,0.23l-0.512,0.286v0.586v1.502
|
||||
c-0.378-0.009-0.845-0.02-1.376-0.031c-0.062-0.164-0.135-0.355-0.217-0.572c-0.298-0.78-0.706-1.847-1.203-3.283l-0.011-0.03
|
||||
l-0.013-0.03c-0.234-0.557-0.969-1.5-2.238-1.5H7.811h-1v1v4.407L6.3,11.276l-0.125,0.757c-0.061,0.373-0.13,0.911,0.148,1.375
|
||||
C4.939,14.233,4,15.729,4,17.455c0,2.606,2.121,4.727,4.728,4.727c2.39,0,4.349-1.79,4.661-4.096
|
||||
c0.107,0.016,0.212,0.03,0.315,0.03h0.018l0.037-0.001c0.706-0.018,1.421-0.031,2.137-0.043c0.639-0.011,1.288-0.023,1.94-0.039
|
||||
c-0.103,0.311-0.158,0.641-0.158,0.98c0,1.735,1.412,3.147,3.148,3.147c1.736,0,3.147-1.412,3.147-3.147
|
||||
c0-0.706-0.242-1.369-0.651-1.903c0.135-0.239,0.23-0.556,0.292-0.981C23.636,15.978,23.662,15.798,23.703,15.582z M8.728,21.181
|
||||
C6.672,21.181,5,19.51,5,17.455c0-1.562,0.969-2.898,2.335-3.451c0.026,0.001,0.046,0.009,0.074,0.009
|
||||
c0.197,0,0.409-0.034,0.685-0.112c0.289-0.081,0.586-0.122,0.881-0.122c0.21,0,0.417,0.021,0.619,0.061
|
||||
c0.888,0.213,1.652,0.741,2.166,1.464c0.041,0.06,0.082,0.121,0.119,0.184c0.057,0.091,0.105,0.188,0.155,0.285
|
||||
c0.16,0.334,0.279,0.693,0.325,1.075c0.009,0.083,0.022,0.176,0.037,0.283l0.011,0.082l0.041,0.296
|
||||
C12.417,19.539,10.763,21.181,8.728,21.181z M22.973,19.013c0,1.184-0.964,2.147-2.147,2.147c-1.186,0-2.148-0.963-2.148-2.147
|
||||
c0-0.985,0.669-1.815,1.575-2.067c-2.174,0.109-4.353,0.113-6.529,0.169c-0.007,0-0.013,0-0.02,0
|
||||
c-0.092,0-0.188-0.022-0.289-0.036c-0.032-0.402-0.111-0.788-0.238-1.156c-0.004-0.012-0.007-0.024-0.011-0.037
|
||||
c-0.063-0.177-0.134-0.348-0.217-0.515c-0.076-0.163-0.161-0.318-0.255-0.469c-0.032-0.05-0.062-0.099-0.096-0.147
|
||||
c-0.646-0.956-1.628-1.642-2.748-1.879c-0.362-0.089-0.734-0.149-1.122-0.149c-0.509,0-0.991,0.102-1.451,0.252
|
||||
c-0.181-0.073-0.192-0.312-0.115-0.784c0.296-0.029,0.649-0.178,0.649-0.178V6.819c0,0,3.899,0,4.679,0
|
||||
c0.943,0,1.316,0.888,1.316,0.888c0.72,2.081,1.269,3.432,1.52,4.126c0.097,0.264,0.303,0.39,0.378,0.392
|
||||
c1.672,0.035,2.844,0.065,2.844,0.065c0-0.873,0-1.706,0-2.527c0.136-0.076,0.267-0.103,0.383-0.103
|
||||
c0.265,0,0.453,0.138,0.453,0.138s-0.037,1.76-0.037,2.484c0,0.038,0.048,0.059,0.077,0.06c0.961,0.038,1.848,0.075,2.808,0.109
|
||||
c0.646,0.025,0.813,0.18,0.758,0.839c-0.059,0.705-0.14,1.412-0.271,2.108c-0.269,1.444,0.042,1.395-1.562,1.496
|
||||
C22.183,17.055,22.973,17.943,22.973,19.013z"/>
|
||||
<path fill="#0B8C61" d="M19.57,19.013c0,0.693,0.564,1.257,1.256,1.257c0.692,0,1.256-0.564,1.256-1.257
|
||||
c0-0.692-0.564-1.255-1.256-1.255C20.134,17.758,19.57,18.321,19.57,19.013z M21.832,19.013c0,0.555-0.451,1.007-1.006,1.007
|
||||
c-0.555,0-1.006-0.452-1.006-1.007c0-0.554,0.451-1.005,1.006-1.005C21.381,18.008,21.832,18.459,21.832,19.013z"/>
|
||||
<path fill="#0B8C61" d="M12.919,8.341L8.961,8.347l-0.004,0.97l-0.003,2.916c1.209-0.044,2.595-0.069,3.939-0.069
|
||||
c0.452,0,0.9,0.003,1.334,0.009l-0.045-0.018L12.919,8.341z M12.893,11.663c-1.138,0-2.34,0.018-3.438,0.052l0.003-2.397
|
||||
L9.46,8.846l3.098-0.005l0.935,2.824C13.294,11.664,13.094,11.663,12.893,11.663z"/>
|
||||
<path fill="#0B8C61" d="M8.728,15.385c-1.142,0-2.07,0.929-2.07,2.07s0.928,2.069,2.07,2.069c1.141,0,2.069-0.928,2.069-2.069
|
||||
S9.869,15.385,8.728,15.385z M8.728,19.023c-0.865,0-1.57-0.704-1.57-1.569c0-0.866,0.704-1.57,1.57-1.57
|
||||
c0.865,0,1.569,0.704,1.569,1.57C10.297,18.32,9.593,19.023,8.728,19.023z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.6 KiB |
@@ -11,53 +11,57 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M9.46,8.846L9.458,9.319l-0.003,2.397c1.098-0.034,2.3-0.052,3.438-0.052c0.201,0,0.401,0.001,0.6,0.002
|
||||
l-0.935-2.824L9.46,8.846z"/>
|
||||
<circle fill="#C1122B" cx="8.728" cy="17.454" r="1.569"/>
|
||||
<path fill="#C1122B" d="M12.395,17.13c-0.015-0.107-0.027-0.199-0.037-0.282c-0.047-0.382-0.165-0.741-0.325-1.075
|
||||
c-0.049-0.096-0.097-0.193-0.155-0.285c-0.038-0.063-0.078-0.124-0.119-0.184c-0.514-0.723-1.278-1.251-2.166-1.464
|
||||
c-0.202-0.04-0.409-0.061-0.619-0.061c-0.295,0-0.592,0.041-0.881,0.122c-0.276,0.077-0.487,0.112-0.685,0.112
|
||||
c-0.027,0-0.048-0.008-0.074-0.009C5.969,14.557,5,15.892,5,17.455c0,2.055,1.672,3.727,3.728,3.727
|
||||
c2.035,0,3.689-1.642,3.719-3.671l-0.041-0.296L12.395,17.13z M8.728,19.523c-1.142,0-2.07-0.928-2.07-2.069
|
||||
s0.928-2.07,2.07-2.07c1.141,0,2.069,0.929,2.069,2.07S9.869,19.523,8.728,19.523z"/>
|
||||
<circle fill="#C1122B" cx="20.826" cy="19.013" r="1.006"/>
|
||||
<path fill="#C1122B" d="M22.72,15.398c0.13-0.696,0.212-1.403,0.271-2.108c0.055-0.659-0.112-0.814-0.758-0.839
|
||||
c-0.961-0.034-1.848-0.071-2.808-0.109c-0.029-0.001-0.077-0.022-0.077-0.06c0-0.724,0.037-2.484,0.037-2.484
|
||||
S19.196,9.66,18.931,9.66c-0.116,0-0.247,0.026-0.383,0.103c0,0.821,0,1.654,0,2.527c0,0-1.172-0.031-2.844-0.065
|
||||
c-0.074-0.002-0.281-0.128-0.378-0.392c-0.251-0.694-0.8-2.045-1.52-4.126c0,0-0.373-0.888-1.316-0.888c-0.781,0-4.679,0-4.679,0
|
||||
v5.199c0,0-0.353,0.148-0.649,0.178c-0.078,0.472-0.067,0.711,0.115,0.784c0.46-0.15,0.942-0.252,1.451-0.252
|
||||
c0.389,0,0.761,0.061,1.122,0.149c1.119,0.237,2.101,0.923,2.748,1.879c0.034,0.048,0.064,0.097,0.096,0.147
|
||||
c0.094,0.151,0.179,0.306,0.255,0.47c0.083,0.167,0.154,0.338,0.217,0.515c0.004,0.012,0.008,0.024,0.011,0.037
|
||||
c0.127,0.368,0.206,0.754,0.238,1.156c0.101,0.014,0.196,0.036,0.289,0.036c0.007,0,0.013,0,0.02,0
|
||||
c2.176-0.056,4.355-0.06,6.529-0.169c-0.906,0.251-1.575,1.082-1.575,2.067c0,1.184,0.962,2.147,2.148,2.147
|
||||
c1.184,0,2.147-0.963,2.147-2.147c0-1.071-0.79-1.958-1.816-2.119C22.761,16.794,22.451,16.842,22.72,15.398z M12.893,12.163
|
||||
c-1.343,0-2.729,0.025-3.938,0.069l0.003-2.916l0.004-0.97l3.957-0.006l1.263,3.813l0.045,0.018
|
||||
C13.793,12.166,13.345,12.163,12.893,12.163z M22.082,19.013c0,0.693-0.564,1.257-1.256,1.257c-0.692,0-1.256-0.564-1.256-1.257
|
||||
c0-0.692,0.564-1.255,1.256-1.255C21.518,17.758,22.082,18.321,22.082,19.013z"/>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z M23.973,19.013
|
||||
c0,1.735-1.412,3.147-3.147,3.147c-1.736,0-3.148-1.412-3.148-3.147c0-0.34,0.055-0.67,0.158-0.98
|
||||
c-0.652,0.016-1.301,0.027-1.94,0.039c-0.716,0.013-1.431,0.025-2.137,0.043l-0.037,0.001h-0.018
|
||||
c-0.102,0-0.208-0.014-0.315-0.03c-0.312,2.306-2.272,4.096-4.661,4.096C6.121,22.181,4,20.061,4,17.455
|
||||
c0-1.725,0.939-3.222,2.323-4.047c-0.278-0.463-0.209-1.002-0.148-1.375L6.3,11.276l0.511-0.051V6.819v-1h1h4.679
|
||||
c1.269,0,2.003,0.943,2.238,1.5l0.012,0.03l0.011,0.03c0.497,1.435,0.905,2.503,1.203,3.283c0.083,0.217,0.156,0.408,0.217,0.572
|
||||
c0.531,0.011,0.998,0.022,1.376,0.031V9.763V9.177l0.512-0.286c0.273-0.153,0.566-0.23,0.872-0.23
|
||||
c0.55,0,0.938,0.254,1.044,0.332l0.419,0.307l-0.011,0.52c0,0.001-0.017,0.815-0.028,1.56c0.635,0.025,1.257,0.05,1.916,0.073
|
||||
c0.277,0.011,0.925,0.036,1.358,0.525c0.384,0.434,0.393,0.974,0.358,1.396c-0.07,0.848-0.161,1.55-0.284,2.208
|
||||
c-0.04,0.216-0.066,0.397-0.089,0.547c-0.062,0.425-0.158,0.742-0.292,0.981C23.731,17.644,23.973,18.308,23.973,19.013z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.3 KiB |
@@ -11,55 +11,59 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.571C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M14.002,30.908
|
||||
C10.865,28.805,1,21.533,1,13.333C1,7.511,6.56,1,14,1c7.44,0,13,6.511,13,12.333C27,21.682,17.14,28.843,14.002,30.908z"/>
|
||||
<path fill="#C1122B" d="M23.703,15.582c0.123-0.658,0.214-1.36,0.284-2.208c0.035-0.422,0.026-0.962-0.358-1.396
|
||||
c-0.433-0.489-1.081-0.514-1.358-0.525c-0.659-0.024-1.281-0.048-1.916-0.073c0.011-0.745,0.028-1.56,0.028-1.56l0.011-0.52
|
||||
l-0.419-0.307c-0.106-0.078-0.495-0.332-1.044-0.332c-0.306,0-0.599,0.077-0.872,0.23l-0.512,0.286v0.586v1.502
|
||||
c-0.378-0.009-0.845-0.02-1.376-0.031c-0.062-0.164-0.135-0.355-0.217-0.572c-0.298-0.78-0.706-1.847-1.203-3.283l-0.011-0.03
|
||||
l-0.013-0.03c-0.234-0.557-0.969-1.5-2.238-1.5H7.811h-1v1v4.407L6.3,11.276l-0.125,0.757c-0.061,0.373-0.13,0.911,0.148,1.375
|
||||
C4.939,14.233,4,15.729,4,17.455c0,2.606,2.121,4.727,4.728,4.727c2.39,0,4.349-1.79,4.661-4.096
|
||||
c0.107,0.016,0.212,0.03,0.315,0.03h0.018l0.037-0.001c0.706-0.018,1.421-0.031,2.137-0.043c0.639-0.011,1.288-0.023,1.94-0.039
|
||||
c-0.103,0.311-0.158,0.641-0.158,0.98c0,1.735,1.412,3.147,3.148,3.147c1.736,0,3.147-1.412,3.147-3.147
|
||||
c0-0.706-0.242-1.369-0.651-1.903c0.135-0.239,0.23-0.556,0.292-0.981C23.636,15.978,23.662,15.798,23.703,15.582z M8.728,21.181
|
||||
C6.672,21.181,5,19.51,5,17.455c0-1.562,0.969-2.898,2.335-3.451c0.026,0.001,0.046,0.009,0.074,0.009
|
||||
c0.197,0,0.409-0.034,0.685-0.112c0.289-0.081,0.586-0.122,0.881-0.122c0.21,0,0.417,0.021,0.619,0.061
|
||||
c0.888,0.213,1.652,0.741,2.166,1.464c0.041,0.06,0.082,0.121,0.119,0.184c0.057,0.091,0.105,0.188,0.155,0.285
|
||||
c0.16,0.334,0.279,0.693,0.325,1.075c0.009,0.083,0.022,0.176,0.037,0.283l0.011,0.082l0.041,0.296
|
||||
C12.417,19.539,10.763,21.181,8.728,21.181z M22.973,19.013c0,1.184-0.964,2.147-2.147,2.147c-1.186,0-2.148-0.963-2.148-2.147
|
||||
c0-0.985,0.669-1.815,1.575-2.067c-2.174,0.109-4.353,0.113-6.529,0.169c-0.007,0-0.013,0-0.02,0
|
||||
c-0.092,0-0.188-0.022-0.289-0.036c-0.032-0.402-0.111-0.788-0.238-1.156c-0.004-0.012-0.007-0.024-0.011-0.037
|
||||
c-0.063-0.177-0.134-0.348-0.217-0.515c-0.076-0.163-0.161-0.318-0.255-0.469c-0.032-0.05-0.062-0.099-0.096-0.147
|
||||
c-0.646-0.956-1.628-1.642-2.748-1.879c-0.362-0.089-0.734-0.149-1.122-0.149c-0.509,0-0.991,0.102-1.451,0.252
|
||||
c-0.181-0.073-0.192-0.312-0.115-0.784c0.296-0.029,0.649-0.178,0.649-0.178V6.819c0,0,3.899,0,4.679,0
|
||||
c0.943,0,1.316,0.888,1.316,0.888c0.72,2.081,1.269,3.432,1.52,4.126c0.097,0.264,0.303,0.39,0.378,0.392
|
||||
c1.672,0.035,2.844,0.065,2.844,0.065c0-0.873,0-1.706,0-2.527c0.136-0.076,0.267-0.103,0.383-0.103
|
||||
c0.265,0,0.453,0.138,0.453,0.138s-0.037,1.76-0.037,2.484c0,0.038,0.048,0.059,0.077,0.06c0.961,0.038,1.848,0.075,2.808,0.109
|
||||
c0.646,0.025,0.813,0.18,0.758,0.839c-0.059,0.705-0.14,1.412-0.271,2.108c-0.269,1.444,0.042,1.395-1.562,1.496
|
||||
C22.183,17.055,22.973,17.943,22.973,19.013z"/>
|
||||
<path fill="#C1122B" d="M19.57,19.013c0,0.693,0.564,1.257,1.256,1.257c0.692,0,1.256-0.564,1.256-1.257
|
||||
c0-0.692-0.564-1.255-1.256-1.255C20.134,17.758,19.57,18.321,19.57,19.013z M21.832,19.013c0,0.555-0.451,1.007-1.006,1.007
|
||||
c-0.555,0-1.006-0.452-1.006-1.007c0-0.554,0.451-1.005,1.006-1.005C21.381,18.008,21.832,18.459,21.832,19.013z"/>
|
||||
<path fill="#C1122B" d="M12.919,8.341L8.961,8.347l-0.004,0.97l-0.003,2.916c1.209-0.044,2.595-0.069,3.939-0.069
|
||||
c0.452,0,0.9,0.003,1.334,0.009l-0.045-0.018L12.919,8.341z M12.893,11.663c-1.138,0-2.34,0.018-3.438,0.052l0.003-2.397
|
||||
L9.46,8.846l3.098-0.005l0.935,2.824C13.294,11.664,13.094,11.663,12.893,11.663z"/>
|
||||
<path fill="#C1122B" d="M8.728,15.385c-1.142,0-2.07,0.929-2.07,2.07s0.928,2.069,2.07,2.069c1.141,0,2.069-0.928,2.069-2.069
|
||||
S9.869,15.385,8.728,15.385z M8.728,19.023c-0.865,0-1.57-0.704-1.57-1.569c0-0.866,0.704-1.57,1.57-1.57
|
||||
c0.865,0,1.569,0.704,1.569,1.57C10.297,18.32,9.593,19.023,8.728,19.023z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.6 KiB |
@@ -11,36 +11,41 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M13.999,8.546c-1.24,0-2.249,1.009-2.249,2.248c0,1.242,1.009,2.253,2.249,2.253
|
||||
c1.241,0,2.251-1.01,2.251-2.253C16.25,9.555,15.24,8.546,13.999,8.546z"/>
|
||||
<path fill="#C1122B" d="M14,6.348c-2.453,0-4.448,1.995-4.448,4.448c0,0.859,0.468,3.112,3.602,8.541l0.387,0.671l0.134,0.225
|
||||
l0.09,0.15l0.043,0.072l0.085,0.144l0.108,0.178l0.104-0.172l0.036-0.061l0.088-0.149l0.032-0.054l0.19-0.319l0.395-0.685
|
||||
c3.134-5.44,3.602-7.687,3.602-8.542C18.448,8.343,16.452,6.348,14,6.348z M13.999,13.797c-1.654,0-2.999-1.347-2.999-3.003
|
||||
c0-1.655,1.346-2.998,2.999-2.998c1.655,0,3.001,1.345,3.001,2.998C17,12.451,15.654,13.797,13.999,13.797z"/>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.571C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M19.336,22.021
|
||||
c-0.002,1.728-2.686,2.632-5.337,2.632c-2.652,0-5.337-0.905-5.337-2.634c0-1.158,1.352-2.099,3.465-2.462
|
||||
c-1.721-3.01-3.577-6.721-3.577-8.76c0-3.004,2.444-5.448,5.448-5.448s5.448,2.444,5.449,5.447c0,2.036-1.858,5.75-3.578,8.762
|
||||
C17.984,19.92,19.336,20.86,19.336,22.021z"/>
|
||||
<path fill="#C1122B" d="M15.175,20.763c-0.029,0.048-0.059,0.1-0.088,0.148c-0.04,0.068-0.084,0.142-0.121,0.204
|
||||
c-0.111,0.184-0.206,0.339-0.293,0.483c-0.021,0.03-0.042,0.066-0.061,0.096c-0.081,0.133-0.142,0.231-0.194,0.313
|
||||
c-0.015,0.025-0.032,0.054-0.045,0.073c-0.052,0.082-0.08,0.125-0.08,0.125l-0.295,0.463l-0.293-0.463
|
||||
c0,0-0.031-0.048-0.085-0.134c-0.006-0.009-0.013-0.023-0.019-0.029c-0.053-0.086-0.123-0.198-0.212-0.345
|
||||
c-0.025-0.038-0.052-0.086-0.079-0.127c-0.083-0.136-0.17-0.278-0.274-0.448c-0.042-0.072-0.089-0.15-0.134-0.225
|
||||
c-0.026-0.044-0.053-0.09-0.078-0.132l-0.381,0.061c-1.729,0.277-2.477,0.925-2.477,1.195c0,0.172,0.269,0.481,0.859,0.754
|
||||
c0.8,0.37,1.926,0.574,3.172,0.574c2.608,0,4.031-0.878,4.031-1.329c0-0.269-0.748-0.917-2.476-1.195L15.175,20.763z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -11,38 +11,41 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.571C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M14.002,30.908
|
||||
C10.865,28.805,1,21.533,1,13.333C1,7.511,6.56,1,14,1s13,6.511,13,12.333C27,21.682,17.14,28.843,14.002,30.908z"/>
|
||||
<path fill="#C1122B" d="M14,7.796c-1.654,0-3,1.344-3,2.998c0,1.656,1.346,3.003,3,3.003c1.655,0,3-1.347,3-3.003
|
||||
C17,9.141,15.654,7.796,14,7.796z M14,13.047c-1.24,0-2.25-1.01-2.25-2.253c0-1.24,1.009-2.248,2.25-2.248
|
||||
c1.241,0,2.25,1.009,2.25,2.248C16.25,12.037,15.24,13.047,14,13.047z"/>
|
||||
<path fill="#C1122B" d="M14,5.348c-3.004,0-5.448,2.444-5.448,5.448c0,2.039,1.856,5.75,3.577,8.76
|
||||
c-2.113,0.363-3.465,1.304-3.465,2.462c0,1.729,2.685,2.634,5.337,2.634c2.65,0,5.335-0.904,5.337-2.632
|
||||
c0-1.16-1.352-2.1-3.465-2.464c1.719-3.012,3.578-6.725,3.578-8.762C19.448,7.792,17.003,5.348,14,5.348z M18.031,22.018
|
||||
c0,0.451-1.423,1.329-4.031,1.329c-1.246,0-2.372-0.204-3.172-0.574c-0.591-0.273-0.859-0.582-0.859-0.754
|
||||
c0-0.269,0.748-0.917,2.477-1.195l0.381-0.061c0.025,0.042,0.053,0.088,0.078,0.132c0.045,0.075,0.092,0.153,0.134,0.225
|
||||
c0.104,0.17,0.191,0.313,0.274,0.448c0.027,0.042,0.054,0.089,0.079,0.127c0.089,0.147,0.159,0.258,0.212,0.345
|
||||
c0.006,0.007,0.013,0.021,0.019,0.029c0.053,0.086,0.085,0.134,0.085,0.134l0.293,0.463l0.295-0.463c0,0,0.028-0.044,0.08-0.125
|
||||
c0.012-0.019,0.029-0.048,0.045-0.073c0.052-0.082,0.113-0.18,0.194-0.313c0.019-0.029,0.04-0.066,0.061-0.096
|
||||
c0.086-0.143,0.181-0.298,0.293-0.483c0.037-0.063,0.081-0.136,0.121-0.204c0.029-0.048,0.06-0.1,0.088-0.148l0.38,0.061
|
||||
C17.283,21.101,18.031,21.749,18.031,22.018z M14.847,19.337l-0.396,0.688l-0.189,0.316l-0.032,0.054l-0.089,0.151l-0.036,0.06
|
||||
l-0.104,0.172L13.892,20.6l-0.085-0.144l-0.043-0.072l-0.09-0.15l-0.135-0.227l-0.387-0.67c-3.134-5.43-3.602-7.682-3.602-8.541
|
||||
c0-2.453,1.995-4.448,4.448-4.448c2.453,0,4.448,1.995,4.449,4.447C18.449,11.65,17.981,13.897,14.847,19.337z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -11,37 +11,42 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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 opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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"/>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M21.552,10.282h-3.274l-1.683-2.709c-0.165-0.287-0.533-0.384-0.8-0.228
|
||||
c-0.135,0.078-0.229,0.201-0.27,0.35c-0.041,0.153-0.019,0.315,0.062,0.457l1.359,2.129h-6.311l1.379-2.161
|
||||
c0.066-0.114,0.087-0.271,0.046-0.421c-0.04-0.15-0.136-0.275-0.271-0.353c-0.266-0.156-0.64-0.053-0.787,0.202l-1.697,2.733
|
||||
H6.448c-0.522,0-0.948,0.426-0.948,0.948v0.827c0,0.492,0.363,0.97,0.793,1.041l0.105,0.018h15.156l0.119-0.016
|
||||
c0.44-0.058,0.827-0.545,0.827-1.043V11.23C22.5,10.708,22.074,10.282,21.552,10.282z"/>
|
||||
<path fill="#C1122B" d="M8.057,20.02c0.007,0.222,0.122,0.337,0.263,0.337h11.365c0.142,0,0.257-0.115,0.257-0.256l0.007-0.1
|
||||
l0.971-5.886H7.082L8.057,20.02z M17.116,16.074c0-0.298,0.22-0.539,0.518-0.539c0.297,0,0.516,0.241,0.516,0.539v2.017
|
||||
c0,0.298-0.219,0.539-0.516,0.539c-0.298,0-0.518-0.241-0.518-0.539V16.074z M14.694,16.074c0-0.298,0.219-0.539,0.517-0.539
|
||||
s0.517,0.241,0.517,0.539v2.017c0,0.298-0.219,0.539-0.517,0.539s-0.517-0.241-0.517-0.539V16.074z M12.272,16.074
|
||||
c0-0.298,0.219-0.539,0.517-0.539c0.297,0,0.517,0.241,0.517,0.539v2.017c0,0.298-0.22,0.539-0.517,0.539
|
||||
c-0.298,0-0.517-0.241-0.517-0.539V16.074z M9.85,16.074c0-0.298,0.219-0.539,0.517-0.539c0.297,0,0.516,0.241,0.516,0.539v2.017
|
||||
c0,0.298-0.219,0.539-0.516,0.539c-0.298,0-0.517-0.241-0.517-0.539V16.074z"/>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.571C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M23.5,12.057
|
||||
c0,0.863-0.567,1.661-1.325,1.942l-1.025,5.889c-0.015,0.976-0.889,1.831-1.94,1.831H8.744c-1.052,0-1.925-0.855-1.947-1.906
|
||||
l-1.024-5.828C5.036,13.691,4.5,12.91,4.5,12.057V11.23c0-1.074,0.874-1.948,1.948-1.948H8.75l1.396-2.247
|
||||
c0.4-0.698,1.417-0.978,2.145-0.555c0.755,0.435,1.015,1.403,0.58,2.159l-0.41,0.642h2.662l-0.39-0.61
|
||||
c-0.227-0.391-0.284-0.823-0.174-1.235c0.109-0.406,0.37-0.745,0.734-0.955c0.716-0.417,1.739-0.148,2.159,0.579l1.381,2.223
|
||||
h2.718c1.074,0,1.948,0.874,1.948,1.948V12.057z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.8 KiB |
@@ -11,56 +11,61 @@
|
||||
<!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">
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="33px"
|
||||
viewBox="0 0 28 33" enable-background="new 0 0 28 33" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds width="16383" height="103" y="-88.5" x="-8112" bottomLeftOrigin="true"></sliceSourceBounds>
|
||||
<sliceSourceBounds height="96" width="16383" y="-85.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"/>
|
||||
<path opacity="0.25" fill="#282828" d="M14,25c-6.059,0-10.988,1.679-10.988,3.333c0,2.485,10.307,4.542,10.746,4.643
|
||||
C13.828,32.992,13.914,33,14,33c0.084,0,0.17-0.008,0.239-0.023c0.439-0.099,10.749-2.114,10.749-4.643
|
||||
C24.988,26.679,20.059,25,14,25z"/>
|
||||
<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>
|
||||
<path fill="#FFFFFF" d="M14,0C6.28,0,0,6.717,0,13.332c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.332C28,6.717,21.72,0,14,0z"/>
|
||||
<path fill="#C1122B" d="M14,0C6.28,0,0,6.717,0,13.333c0,9.941,13.132,18.169,13.691,18.572C13.78,31.968,13.891,32,14,32
|
||||
c0.107,0,0.217-0.031,0.305-0.094C14.864,31.511,28,23.45,28,13.333C28,6.717,21.72,0,14,0z M14.002,30.908
|
||||
C10.865,28.805,1,21.533,1,13.333C1,7.511,6.56,1,14,1s13,6.511,13,12.333C27,21.682,17.14,28.843,14.002,30.908z"/>
|
||||
<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"/>
|
||||
<path fill="#C1122B" d="M19.457,22.366H8.494c-1.074,0-1.965-0.873-1.988-1.946l-1.079-6.143
|
||||
C4.661,13.986,4.1,13.177,4.1,12.295v-0.866c0-1.097,0.892-1.989,1.988-1.989h2.441l1.479-2.379
|
||||
c0.408-0.709,1.438-0.99,2.177-0.563c0.37,0.214,0.635,0.559,0.747,0.973c0.11,0.413,0.054,0.846-0.16,1.216l-0.479,0.751h2.98
|
||||
L14.813,8.72c-0.229-0.395-0.288-0.833-0.177-1.251c0.11-0.413,0.375-0.758,0.745-0.971c0.731-0.428,1.766-0.151,2.191,0.588
|
||||
l1.463,2.354h2.877c1.096,0,1.988,0.892,1.988,1.989v0.866c0,0.894-0.594,1.719-1.382,1.996l-1.08,6.199
|
||||
C21.423,21.492,20.532,22.366,19.457,22.366z M6.088,10.383c-0.576,0-1.045,0.47-1.045,1.046v0.866
|
||||
c0,0.54,0.401,1.064,0.874,1.143l0.33,0.055l1.195,6.836c0.019,0.635,0.488,1.094,1.052,1.094h10.964
|
||||
c0.565,0,1.034-0.459,1.045-1.023l1.199-6.915l0.344-0.045c0.494-0.064,0.912-0.588,0.912-1.145v-0.866
|
||||
c0-0.576-0.469-1.046-1.045-1.046H18.51L16.762,7.57c-0.186-0.324-0.605-0.433-0.909-0.256
|
||||
c-0.153,0.088-0.262,0.229-0.307,0.398c-0.046,0.175-0.021,0.358,0.072,0.518l1.373,2.152h-6.42l1.393-2.183
|
||||
c0.077-0.134,0.1-0.313,0.055-0.483c-0.046-0.17-0.156-0.313-0.308-0.401c-0.304-0.179-0.729-0.061-0.895,0.23l-1.763,2.838
|
||||
H6.088z"/>
|
||||
</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"/>
|
||||
<path fill="#C1122B" d="M19.956,21.986H8.049c-0.697,0-1.264-0.566-1.264-1.263l-1.207-7.266h16.845l-1.204,7.282
|
||||
C21.22,21.419,20.653,21.986,19.956,21.986z M6.69,14.399l1.031,6.247c0.006,0.253,0.151,0.397,0.328,0.397h11.907
|
||||
c0.177,0,0.321-0.144,0.321-0.32l0.006-0.097l1.029-6.226H6.69z"/>
|
||||
</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>
|
||||
<path fill="#C1122B" d="M17.807,19.181c0.311,0,0.541-0.253,0.541-0.565v-2.113c0-0.312-0.23-0.565-0.541-0.565
|
||||
c-0.312,0-0.542,0.253-0.542,0.565v2.113C17.264,18.929,17.495,19.181,17.807,19.181z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M15.268,19.181c0.312,0,0.542-0.253,0.542-0.565v-2.113c0-0.312-0.23-0.565-0.542-0.565
|
||||
s-0.542,0.253-0.542,0.565v2.113C14.727,18.929,14.957,19.181,15.268,19.181z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M12.731,19.181c0.311,0,0.542-0.253,0.542-0.565v-2.113c0-0.312-0.23-0.565-0.542-0.565
|
||||
c-0.312,0-0.542,0.253-0.542,0.565v2.113C12.19,18.929,12.419,19.181,12.731,19.181z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#C1122B" d="M10.194,19.181c0.311,0,0.541-0.253,0.541-0.565v-2.113c0-0.312-0.23-0.565-0.541-0.565
|
||||
c-0.312,0-0.542,0.253-0.542,0.565v2.113C9.652,18.929,9.882,19.181,10.194,19.181z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.5 KiB |
BIN
app/assets/images/potatoes.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
@@ -22,5 +22,6 @@
|
||||
//= require ./payment_methods/payment_methods
|
||||
//= require ./products/products
|
||||
//= require ./shipping_methods/shipping_methods
|
||||
//= require ./users/users
|
||||
|
||||
//= require_tree .
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
|
||||
"$scope", "$http", "dataFetcher", "blankOption", "pendingChanges", "VariantUnitManager", "OptionValueNamer",
|
||||
($scope, $http, dataFetcher, blankOption, pendingChanges, VariantUnitManager, OptionValueNamer) ->
|
||||
"$scope", "$http", "dataFetcher", "blankOption", "pendingChanges", "VariantUnitManager", "OptionValueNamer", "SpreeApiKey"
|
||||
($scope, $http, dataFetcher, blankOption, pendingChanges, VariantUnitManager, OptionValueNamer, SpreeApiKey) ->
|
||||
$scope.loading = true
|
||||
|
||||
$scope.initialiseVariables = ->
|
||||
start = daysFromToday -7
|
||||
@@ -32,14 +33,14 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
|
||||
quantity: { name: "Quantity", visible: true }
|
||||
max: { name: "Max", visible: true }
|
||||
|
||||
$scope.initialise = (spree_api_key) ->
|
||||
$scope.initialise = ->
|
||||
$scope.initialiseVariables()
|
||||
authorise_api_reponse = ""
|
||||
dataFetcher("/api/users/authorise_api?token=" + spree_api_key).then (data) ->
|
||||
dataFetcher("/api/users/authorise_api?token=" + SpreeApiKey).then (data) ->
|
||||
authorise_api_reponse = data
|
||||
$scope.spree_api_key_ok = data.hasOwnProperty("success") and data["success"] == "Use of API Authorised"
|
||||
if $scope.spree_api_key_ok
|
||||
$http.defaults.headers.common["X-Spree-Token"] = spree_api_key
|
||||
$http.defaults.headers.common["X-Spree-Token"] = SpreeApiKey
|
||||
dataFetcher("/api/enterprises/accessible?template=bulk_index&q[is_primary_producer_eq]=true").then (data) ->
|
||||
$scope.suppliers = data
|
||||
$scope.suppliers.unshift blankOption()
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
angular.module("ofn.admin").controller "AdminProductEditCtrl", [
|
||||
"$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager", "producers", "Taxons",
|
||||
($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager, producers, Taxons) ->
|
||||
"$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager", "producers", "Taxons", "SpreeApiKey",
|
||||
($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager, producers, Taxons, SpreeApiKey) ->
|
||||
$scope.loading = true
|
||||
|
||||
$scope.updateStatusMessage =
|
||||
text: ""
|
||||
style: {}
|
||||
@@ -42,14 +44,13 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
|
||||
$scope.limit = 15
|
||||
$scope.productsWithUnsavedVariants = []
|
||||
|
||||
|
||||
$scope.initialise = (spree_api_key) ->
|
||||
$scope.initialise = ->
|
||||
authorise_api_reponse = ""
|
||||
dataFetcher("/api/users/authorise_api?token=" + spree_api_key).then (data) ->
|
||||
dataFetcher("/api/users/authorise_api?token=" + SpreeApiKey).then (data) ->
|
||||
authorise_api_reponse = data
|
||||
$scope.spree_api_key_ok = data.hasOwnProperty("success") and data["success"] == "Use of API Authorised"
|
||||
if $scope.spree_api_key_ok
|
||||
$http.defaults.headers.common["X-Spree-Token"] = spree_api_key
|
||||
$http.defaults.headers.common["X-Spree-Token"] = SpreeApiKey
|
||||
$scope.fetchProducts()
|
||||
else if authorise_api_reponse.hasOwnProperty("error")
|
||||
$scope.api_error_msg = authorise_api_reponse("error")
|
||||
|
||||
@@ -1 +1 @@
|
||||
angular.module("admin.enterprises", ["admin.payment_methods", "admin.shipping_methods"])
|
||||
angular.module("admin.enterprises", ["admin.payment_methods", "admin.shipping_methods", "admin.users"])
|
||||
@@ -197,12 +197,13 @@ angular.module('order_cycle', ['ngResource'])
|
||||
this.order_cycle.outgoing_exchanges.push({enterprise_id: new_distributor_id, incoming: false, active: true, variants: {}, enterprise_fees: []})
|
||||
|
||||
removeExchange: (exchange) ->
|
||||
incoming_index = this.order_cycle.incoming_exchanges.indexOf exchange
|
||||
this.order_cycle.incoming_exchanges.splice(incoming_index, 1) if incoming_index > -1
|
||||
outgoing_index = this.order_cycle.outgoing_exchanges.indexOf exchange
|
||||
this.order_cycle.outgoing_exchanges.splice(outgoing_index, 1) if outgoing_index > -1
|
||||
|
||||
this.removeDistributionOfVariant(variant_id) for variant_id, active of exchange.variants when active
|
||||
if exchange.incoming
|
||||
incoming_index = this.order_cycle.incoming_exchanges.indexOf exchange
|
||||
this.order_cycle.incoming_exchanges.splice(incoming_index, 1)
|
||||
this.removeDistributionOfVariant(variant_id) for variant_id, active of exchange.variants when active
|
||||
else
|
||||
outgoing_index = this.order_cycle.outgoing_exchanges.indexOf exchange
|
||||
this.order_cycle.outgoing_exchanges.splice(outgoing_index, 1) if outgoing_index > -1
|
||||
|
||||
addCoordinatorFee: ->
|
||||
this.order_cycle.coordinator_fees.push({})
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
angular.module("admin.users").directive "ofnUserAutocomplete", ($http) ->
|
||||
link: (scope,element,attrs) ->
|
||||
setTimeout ->
|
||||
element.select2
|
||||
multiple: false
|
||||
initSelection: (element, callback) ->
|
||||
callback { id: element.val(), email: attrs.email }
|
||||
ajax:
|
||||
url: Spree.routes.user_search
|
||||
datatype: 'json'
|
||||
data:(term, page) ->
|
||||
{ q: term }
|
||||
results: (data, page) ->
|
||||
{ results: data }
|
||||
formatResult: (user) ->
|
||||
user.email
|
||||
formatSelection: (user) ->
|
||||
user.email
|
||||
1
app/assets/javascripts/admin/users/users.js.coffee
Normal file
@@ -0,0 +1 @@
|
||||
angular.module("admin.users", [])
|
||||
@@ -1,4 +1,4 @@
|
||||
Darkswarm.controller "SignupCtrl", ($scope, $http, $location, AuthenticationService) ->
|
||||
Darkswarm.controller "SignupCtrl", ($scope, $http, $window, $location, Redirections, AuthenticationService) ->
|
||||
$scope.path = "/signup"
|
||||
$scope.errors =
|
||||
email: null
|
||||
@@ -6,6 +6,9 @@ Darkswarm.controller "SignupCtrl", ($scope, $http, $location, AuthenticationServ
|
||||
|
||||
$scope.submit = ->
|
||||
$http.post("/user/spree_user", {spree_user: $scope.spree_user}).success (data)->
|
||||
location.href = location.origin + location.pathname # Strips out hash fragments
|
||||
if Redirections.after_login
|
||||
$window.location.href = $window.location.origin + Redirections.after_login
|
||||
else
|
||||
$window.location.href = $window.location.origin + $window.location.pathname # Strips out hash fragments
|
||||
.error (data) ->
|
||||
$scope.errors = data
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Darkswarm.controller "AuthenticationCtrl", ($scope, AuthenticationService, SpreeUser)->
|
||||
$scope.open = AuthenticationService.open
|
||||
$scope.toggle = AuthenticationService.toggle
|
||||
|
||||
|
||||
$scope.spree_user = SpreeUser.spree_user
|
||||
$scope.active = AuthenticationService.active
|
||||
$scope.select = AuthenticationService.select
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Darkswarm.controller "RegistrationCtrl", ($scope, RegistrationService, EnterpriseRegistrationService, availableCountries) ->
|
||||
$scope.currentStep = RegistrationService.currentStep
|
||||
$scope.enterprise = EnterpriseRegistrationService.enterprise
|
||||
$scope.select = RegistrationService.select
|
||||
|
||||
$scope.steps = ['details','address','contact','about','images','social']
|
||||
|
||||
$scope.countries = availableCountries
|
||||
|
||||
$scope.countryHasStates = ->
|
||||
$scope.enterprise.country.states.length > 0
|
||||
@@ -0,0 +1,15 @@
|
||||
Darkswarm.controller "RegistrationFormCtrl", ($scope, RegistrationService, EnterpriseRegistrationService) ->
|
||||
$scope.submitted = false
|
||||
|
||||
$scope.valid = (form) ->
|
||||
$scope.submitted = !form.$valid
|
||||
form.$valid
|
||||
|
||||
$scope.create = (form) ->
|
||||
EnterpriseRegistrationService.create() if $scope.valid(form)
|
||||
|
||||
$scope.update = (nextStep, form) ->
|
||||
EnterpriseRegistrationService.update(nextStep) if $scope.valid(form)
|
||||
|
||||
$scope.selectIfValid = (nextStep, form) ->
|
||||
RegistrationService.select(nextStep) if $scope.valid(form)
|
||||
@@ -0,0 +1,6 @@
|
||||
Darkswarm.directive "ofnInlineFlash", ->
|
||||
restrict: 'E'
|
||||
controller: ($scope) ->
|
||||
$scope.visible = true
|
||||
$scope.closeFlash = ->
|
||||
$scope.visible = false
|
||||
@@ -4,12 +4,14 @@ Darkswarm.factory "AuthenticationService", (Navigation, $modal, $location, Redir
|
||||
selectedPath: "/login"
|
||||
|
||||
constructor: ->
|
||||
if $location.path() in ["/login", "/signup", "/forgot"]
|
||||
@open()
|
||||
if $location.path() in ["/login", "/signup", "/forgot"] && location.pathname isnt '/register/auth'
|
||||
@open $location.path()
|
||||
else if location.pathname is '/register/auth'
|
||||
@open '/signup', 'registration_authentication.html'
|
||||
|
||||
open: (path = false)=>
|
||||
open: (path = false, template = 'authentication.html') =>
|
||||
@modalInstance = $modal.open
|
||||
templateUrl: 'authentication.html'
|
||||
templateUrl: template
|
||||
windowClass: "login-modal medium"
|
||||
@modalInstance.result.then @close, @close
|
||||
@selectedPath = path || @selectedPath
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService, CurrentUser, spreeApiKey, Loading, availableCountries, enterpriseAttributes) ->
|
||||
new class EnterpriseRegistrationService
|
||||
enterprise:
|
||||
user_ids: [CurrentUser.id]
|
||||
email: CurrentUser.email
|
||||
address: {}
|
||||
country: availableCountries[0]
|
||||
|
||||
constructor: ->
|
||||
for key, value of enterpriseAttributes
|
||||
@enterprise[key] = value
|
||||
|
||||
create: =>
|
||||
Loading.message = "Creating " + @enterprise.name
|
||||
$http(
|
||||
method: "POST"
|
||||
url: "/api/enterprises"
|
||||
data:
|
||||
enterprise: @prepare()
|
||||
params:
|
||||
token: spreeApiKey
|
||||
).success((data) =>
|
||||
Loading.clear()
|
||||
@enterprise.id = data
|
||||
RegistrationService.select('about')
|
||||
).error((data) =>
|
||||
Loading.clear()
|
||||
alert('Failed to create your enterprise.\nPlease ensure all fields are completely filled out.')
|
||||
)
|
||||
# RegistrationService.select('about')
|
||||
|
||||
update: (step) =>
|
||||
Loading.message = "Updating " + @enterprise.name
|
||||
$http(
|
||||
method: "PUT"
|
||||
url: "/api/enterprises/#{@enterprise.id}"
|
||||
data:
|
||||
enterprise: @prepare()
|
||||
params:
|
||||
token: spreeApiKey
|
||||
).success((data) ->
|
||||
Loading.clear()
|
||||
RegistrationService.select(step)
|
||||
).error((data) ->
|
||||
Loading.clear()
|
||||
alert('Failed to update your enterprise.\nPlease ensure all fields are completely filled out.')
|
||||
)
|
||||
# RegistrationService.select(step)
|
||||
|
||||
prepare: =>
|
||||
enterprise = {}
|
||||
excluded = [ 'address', 'country', 'id' ]
|
||||
for key, value of @enterprise when key not in excluded
|
||||
enterprise[key] = value
|
||||
enterprise.address_attributes = @enterprise.address if @enterprise.address?
|
||||
enterprise.address_attributes.country_id = @enterprise.country.id if @enterprise.country?
|
||||
enterprise
|
||||
@@ -0,0 +1,23 @@
|
||||
Darkswarm.factory "RegistrationService", (Navigation, $modal, Loading)->
|
||||
|
||||
new class RegistrationService
|
||||
constructor: ->
|
||||
@open()
|
||||
|
||||
open: =>
|
||||
@modalInstance = $modal.open
|
||||
templateUrl: 'registration.html'
|
||||
windowClass: "login-modal large"
|
||||
backdrop: 'static'
|
||||
@modalInstance.result.then @close, @close
|
||||
@select 'introduction'
|
||||
|
||||
select: (step)=>
|
||||
@current_step = step
|
||||
|
||||
currentStep: =>
|
||||
@current_step
|
||||
|
||||
close: ->
|
||||
Loading.message = "Taking you back to the home page"
|
||||
Navigation.go "/"
|
||||
@@ -1,2 +1,2 @@
|
||||
%a.close-reveal-modal.outside{"ng-click" => "$close()"}
|
||||
%a.close-reveal-modal{"ng-click" => "$close()"}
|
||||
%i.ofn-i_009-close
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
%button.graph-button{"ng-class" => "{open: tt_isOpen}"}
|
||||
%i.ofn-i-058-graph
|
||||
%i.ofn-i_058-graph
|
||||
|
||||
10
app/assets/javascripts/templates/registration.html.haml
Normal file
@@ -0,0 +1,10 @@
|
||||
%div#registration-modal{"ng-controller" => "RegistrationCtrl"}
|
||||
%div{ ng: { show: "currentStep() == 'introduction'" } }
|
||||
%ng-include{ src: "'registration/introduction.html'" }
|
||||
%div{ ng: { repeat: 'step in steps', show: "currentStep() == step" } }
|
||||
%ng-include{ src: "'registration/'+ step + '.html'" }
|
||||
%div{ ng: { show: "currentStep() == 'finished'" } }
|
||||
%ng-include{ src: "'registration/finished.html'" }
|
||||
|
||||
%a.close-reveal-modal{"ng-click" => "$close()"}
|
||||
%i.ofn-i_009-close
|
||||
@@ -0,0 +1,44 @@
|
||||
.container#registration-about
|
||||
.header
|
||||
%h2 Nice one!
|
||||
%h5
|
||||
Now let's flesh out the details about
|
||||
%span.brick{"ng-show" => "enterprise.is_distributor"}
|
||||
{{ enterprise.name }}
|
||||
%span.turquoise{"ng-show" => "!enterprise.is_distributor" }
|
||||
{{ enterprise.name }}
|
||||
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
%form{ name: 'about', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "update('social',about)" } }
|
||||
.row
|
||||
.small-12.columns
|
||||
.alert-box.alert{"data-alert" => ""}
|
||||
{{ enterprise.name }} won't be visible on the Open Food Network until you enter a long and short description.
|
||||
%a.close{:href => "#"} ×
|
||||
|
||||
.alert-box.info{"data-alert" => ""}
|
||||
{{ enterprise.name }} has been created on the Open Food Network. If you leave at any point from here onwards, your enterprise will be saved, and you can always login to the admin section to update or continue filling out your enterprise details.
|
||||
%a.close{:href => "#"} ×
|
||||
|
||||
.small-12.large-8.columns
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_description' } Short Description:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_description', placeholder: "A short sentence describing your enterprise", ng: { model: 'enterprise.description' } }
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_long_desc' } Long Description:
|
||||
%textarea.chunky.small-12.columns{ id: 'enterprise_long_desc', placeholder: "We recommend keeping your description to under 600 characters or 150 words. Why? Cus people are lazy, and don't like to read too much text online. ;)", ng: { model: 'enterprise.long_description' } }
|
||||
%small {{ enterprise.long_description.length }} characters used
|
||||
.small-12.large-4.columns
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_abn' } ABN:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_abn', placeholder: "eg. 99 123 456 789", ng: { model: 'enterprise.abn' } }
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_acn' } ACN:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_acn', placeholder: "eg. 123 456 789", ng: { model: 'enterprise.acn' } }
|
||||
.row.buttons.pad-top
|
||||
.small-12.columns
|
||||
%input.button.primary{ type: "submit", value: "Continue" }
|
||||
@@ -0,0 +1,60 @@
|
||||
.container#registration-address
|
||||
.header
|
||||
%h2
|
||||
Greetings
|
||||
%span{ ng: { class: "{brick: enterprise.is_distributor, turquoise: !enterprise.is_distributor}" } }
|
||||
{{ enterprise.name }}
|
||||
|
||||
%h5 Now we need to know where you are
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
%form{ name: 'address', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "selectIfValid('contact',address)" } }
|
||||
.row.content
|
||||
.small-12.medium-12.large-7.columns
|
||||
.row
|
||||
.small-12.columns.field
|
||||
%label{ for: 'enterprise_address' } Address:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_address', name: 'address1', required: true, placeholder: "eg. 123 Cranberry Drive", required: true, ng: { model: 'enterprise.address.address1' } }
|
||||
%span.error.small-12.columns{ ng: { show: "address.address1.$error.required && submitted" } }
|
||||
You need to enter an address.
|
||||
.row
|
||||
.small-12.large-8.columns.field
|
||||
%label{ for: 'enterprise_city' } Suburb:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_city', name: 'city', required: true, placeholder: "eg. Northcote", ng: { model: 'enterprise.address.city' } }
|
||||
%span.error.small-12.columns{ ng: { show: "address.city.$error.required && submitted" } }
|
||||
You need to enter a suburb.
|
||||
.small-12.large-4.columns.field
|
||||
%label{ for: 'enterprise_zipcode' } Postcode:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_zipcode', name: 'zipcode', required: true, placeholder: "eg. 3070", ng: { model: 'enterprise.address.zipcode' } }
|
||||
%span.error.small-12.columns{ ng: { show: "address.zipcode.$error.required && submitted" } }
|
||||
You need to enter a postcode.
|
||||
.row
|
||||
.small-12.large-8.columns.field
|
||||
%label{ for: 'enterprise_country' } Country:
|
||||
%select.chunky.small-12.columns{ id: 'enterprise_country', name: 'country', required: true, ng: { model: 'enterprise.country', options: 'c as c.name for c in countries' } }
|
||||
%span.error.small-12.columns{ ng: { show: "address.country.$error.required && submitted" } }
|
||||
You need to enter a country.
|
||||
.small-12.large-4.columns.field
|
||||
%label{ for: 'enterprise_state' } State:
|
||||
%select.chunky.small-12.columns{ id: 'enterprise_state', name: 'state', ng: { model: 'enterprise.address.state_id', options: 's.id as s.abbr for s in enterprise.country.states', show: 'countryHasStates()', required: 'countryHasStates()' } }
|
||||
%span.error.small-12.columns{ ng: { show: "address.state.$error.required && submitted" } }
|
||||
You need to enter a state.
|
||||
.small-12.medium-12.large-5.hide-for-small-only
|
||||
// This is the location area
|
||||
/ %h6
|
||||
/ Location display
|
||||
/ %i.ofn-i_013-help.has-tip{ 'data-tooltip' => true, title: "Choose how you want to display your enterprise's address on the Open Food Network. By default, full location is shown everywhere including street name and number."}
|
||||
/ .row
|
||||
/ .small-12.columns
|
||||
/ %label.indent-checkbox
|
||||
/ %input{ type: 'checkbox', id: 'enterpise_suburb_only', ng: { model: 'enterprise.suburb_only' } }
|
||||
/ Hide my street name and street number from the public (ie. only show the suburb)
|
||||
/ .small-12.columns
|
||||
/ %label.indent-checkbox
|
||||
/ %input{ type: 'checkbox', id: 'enterprise_on_map', ng: { model: 'enterprise.on_map' } }
|
||||
/ Blur my location on the map (show an approximate, not exact pin)
|
||||
|
||||
.row.buttons
|
||||
.small-12.columns
|
||||
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('details')" } }
|
||||
|
||||
%input.button.primary{ type: "submit", value: "Continue" }
|
||||
@@ -0,0 +1,46 @@
|
||||
.container#registration-contact
|
||||
.header
|
||||
%h2 Last step to create your enterprise!
|
||||
%h5
|
||||
Who is responsible for managing
|
||||
%span{ ng: { class: "{brick: enterprise.is_distributor, turquoise: !enterprise.is_distributor}" } }
|
||||
{{ enterprise.name }}?
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
%form{ name: 'contact', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "create(contact)" } }
|
||||
.row.content
|
||||
.small-12.medium-12.large-7.columns
|
||||
.row
|
||||
.small-12.columns.field
|
||||
%label{ for: 'enterprise_contact' } Primary Contact:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_contact', name: 'contact', required: true, placeholder: "Contact Name", ng: { model: 'enterprise.contact' } }
|
||||
%span.error.small-12.columns{ ng: { show: "contact.contact.$error.required && submitted" } }
|
||||
You need to enter a primary contact.
|
||||
.row
|
||||
.small-12.columns.field
|
||||
%label{ for: 'enterprise_email' } Email address:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_email', name: 'email', type: 'email', required: true, placeholder: "eg. charlie@thefarm.com", ng: { model: 'enterprise.email' } }
|
||||
%span.error.small-12.columns{ ng: { show: "(contact.email.$error.email || contact.email.$error.required) && submitted" } }
|
||||
You need to enter valid email address.
|
||||
.row
|
||||
.small-12.columns.field
|
||||
%label{ for: 'enterprise_phone' } Phone number:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_phone', name: 'phone', placeholder: "eg. (03) 1234 5678", ng: { model: 'enterprise.phone' } }
|
||||
.small-12.medium-12.large-5.hide-for-small-only
|
||||
/ %h6
|
||||
/ Contact display
|
||||
/ %i.ofn-i_013-help.has-tip{ 'data-tooltip' => true, title: "Choose how you want to display your contact details on the Open Food Network."}
|
||||
/ .row
|
||||
/ .small-12.columns
|
||||
/ %label.indent-checkbox
|
||||
/ %input{ type: 'checkbox', id: 'contact_name_profile', ng: { model: 'enterprise.name_in_profile' } } Display name in profile
|
||||
/ .small-12.columns
|
||||
/ %label.indent-checkbox
|
||||
/ %input{ type: 'checkbox', id: 'contact_email_profile', ng: { model: 'enterprise.email_in_profile' } } Display email in profile
|
||||
/ .small-12.columns
|
||||
/ %label.indent-checkbox
|
||||
/ %input{ type: 'checkbox', id: 'contact_phone_profile', ng: { model: 'enterprise.phone_in_profile' } } Display phone in profile
|
||||
.row.buttons
|
||||
.small-12.columns
|
||||
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('address')" } }
|
||||
|
||||
%input.button.primary{ type: "submit", value: "Continue" }
|
||||
@@ -0,0 +1,42 @@
|
||||
.container#registration-details{bindonce: true}
|
||||
.header
|
||||
%h2 Let's Get Started
|
||||
%h5{ bo: { if: "enterprise.type != 'single'" } } Woot! First we need to know what sort of enterprise you are:
|
||||
%h5{ bo: { if: "enterprise.type == 'single'" } } Woot! First we need to know the name of your farm:
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
%form{ name: 'details', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "selectIfValid('address',details)" } }
|
||||
.row
|
||||
.small-12.columns.field
|
||||
%label{ for: 'enterprise_name', bo: { if: "enterprise.type != 'single'" } } Enterprise Name:
|
||||
%label{ for: 'enterprise_name', bo: { if: "enterprise.type == 'single'" } } Farm Name:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_name', name: 'name', placeholder: "eg. Charlie's Awesome Farm", required: true, ng: { model: 'enterprise.name' } }
|
||||
%span.error.small-12.columns{ ng: { show: "details.name.$error.required && submitted" } }
|
||||
You need to enter a name for your enterprise!
|
||||
|
||||
.row#enterprise-types{ 'data-equalizer' => true, bo: { if: "enterprise.type != 'single'" } }
|
||||
.small-12.columns.field
|
||||
.row
|
||||
.small-12.columns
|
||||
%label Choose one:
|
||||
.row
|
||||
.small-12.medium-4.large-4.columns{ 'data-equalizer-watch' => true }
|
||||
%a.panel#producer-panel{ href: "#", ng: { click: "enterprise.is_distributor = false; enterprise.is_primary_producer = true", class: "{selected: (!enterprise.is_distributor && enterprise.is_primary_producer)}" } }
|
||||
.left
|
||||
/ %render-svg{ path: "/assets/map-icon-producer.svg" }
|
||||
%h4 I'm A Producer
|
||||
%p Producers make yummy things to eat &/or drink. You're a producer if you grow it, raise it, brew it, bake it, ferment it, milk it or mould it.
|
||||
.small-12.medium-4.large-4.columns{ 'data-equalizer-watch' => true }
|
||||
%a.panel#hub-panel{ href: "#", ng: { click: "enterprise.is_distributor = true; enterprise.is_primary_producer = false", class: "{selected: (enterprise.is_distributor && !enterprise.is_primary_producer)}" } }
|
||||
.left
|
||||
/ %render-svg{ path: "/assets/map-icon-hub.svg" }
|
||||
%h4 I'm A Hub
|
||||
%p Hubs connect the producer to the eater. Hubs can be co-ops, independent retailers, buying groups, wholesalers, CSA box schemes, farm-gate stalls, etc.
|
||||
.small-12.medium-4.large-4.columns{ 'data-equalizer-watch' => true }
|
||||
%a.panel#both-panel{ href: "#", ng: { click: "enterprise.is_distributor = true; enterprise.is_primary_producer = true", class: "{selected: (enterprise.is_distributor && enterprise.is_primary_producer)}" } }
|
||||
.left
|
||||
/ %render-svg{path: "/assets/map-icon-both.svg"}
|
||||
%h4 I'm Both
|
||||
%p Hey there, Jack-of-all-trades! Not only do you produce things to eat &/or drink, you also want to sell your yummies through an Open Food Network shopfront.
|
||||
.row.buttons
|
||||
.small-12.columns
|
||||
%input.button.primary.right{ type: "submit", value: "Continue" }
|
||||
@@ -0,0 +1,18 @@
|
||||
.container#registration-finished
|
||||
.header
|
||||
%h2 Well done!
|
||||
%h5
|
||||
You have successfully completed the profile for
|
||||
%span.brick{"ng-show" => "enterprise.is_distributor"}
|
||||
{{ enterprise.name }}
|
||||
%span.turquoise{"ng-show" => "!enterprise.is_distributor" }
|
||||
{{ enterprise.name }}
|
||||
.content{ style: 'text-align: center'}
|
||||
%h3 Why not check it out on the Open Food Network?
|
||||
%a.button.primary{ type: "button", href: "/map" } Go to Map Page >
|
||||
|
||||
%br
|
||||
%br
|
||||
|
||||
%h3 Next step - add some products:
|
||||
%a.button.primary{ type: "button", href: "/admin/products/new" } Add a Product >
|
||||
@@ -0,0 +1,14 @@
|
||||
.container#registration-images
|
||||
.header
|
||||
%h2 Thanks!
|
||||
%h5 Let's upload some pretty pictures so your profile looks great! :)
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
.row.content
|
||||
|
||||
.row.buttons
|
||||
.small-12.columns
|
||||
%input.button.primary.left{ type: "button", value: "Back", ng: { click: "select('about')" } }
|
||||
|
||||
%input.button.primary.right{ type: "button", value: "Continue", ng: { click: "select('social')" } }
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
%div
|
||||
.header
|
||||
%h2 Hi there!
|
||||
%h4 This wizard will step you through creating a profile
|
||||
.row
|
||||
.small-12.medium-3.large-2.columns.text-right.hide-for-small-only
|
||||
%img{:src => "/assets/potatoes.png"}
|
||||
.small-12.medium-9.large-10.columns
|
||||
%p
|
||||
Your profile gives you an online presence on the
|
||||
%strong Open Food Network,
|
||||
allowing you to easily connect with potential customers or partners. You can always choose to update your info later, as well as choose to upgrade your Profile to and Online Store, where you can sell products, track orders and receive payments. Creating a profile takes about 5-10 minutes.
|
||||
.row{ 'data-equalizer' => true }
|
||||
.small-12.medium-6.large-6.columns.pad-top{ 'data-equalizer-watch' => true }
|
||||
%h5 You'll need the following:
|
||||
%ul.check-list
|
||||
%li
|
||||
Your enterprise address and contact details
|
||||
%li
|
||||
Your logo image
|
||||
%li
|
||||
A pretty picture for your profile header
|
||||
%li
|
||||
Some 'About Us' text
|
||||
|
||||
.small-12.medium-6.large-6.columns{ 'data-equalizer-watch' => true}
|
||||
.highlight-box
|
||||
%h5 Your profile entitles you to:
|
||||
%ul.small-block-grid-1
|
||||
%li
|
||||
%i.ofn-i_020-search
|
||||
A searchable listing
|
||||
%li
|
||||
%i.ofn-i_040-hub
|
||||
A pin on the OFN map
|
||||
.row
|
||||
.small-12.columns
|
||||
%hr
|
||||
%input.button.primary{ type: "button", value: "Let's get started!", ng: { click: "select('details')" } }
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
.container#registration-social
|
||||
.header
|
||||
%h2 Last step!
|
||||
%h5 How can people find {{ enterprise.name }} online?
|
||||
%ng-include{ src: "'registration/steps.html'" }
|
||||
%form{ name: 'social', novalidate: true, ng: { controller: "RegistrationFormCtrl", submit: "update('finished',social)" } }
|
||||
.row.content
|
||||
.small-12.large-7.columns
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_website' } Website:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_website', placeholder: "eg. openfoodnetwork.org.au", ng: { model: 'enterprise.website' } }
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_facebook' } Facebook:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_facebook', placeholder: "eg. www.facebook.com/PageNameHere", ng: { model: 'enterprise.facebook' } }
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_linkedin' } LinkedIn:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_linkedin', placeholder: "eg. www.linkedin.com/YourNameHere", ng: { model: 'enterprise.linkedin' } }
|
||||
.small-12.large-5.columns
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_twitter' } Twitter:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_twitter', placeholder: "eg. @twitter_handle", ng: { model: 'enterprise.twitter' } }
|
||||
.row
|
||||
.small-12.columns
|
||||
%label{ for: 'enterprise_instagram' } Instagram:
|
||||
%input.chunky.small-12.columns{ id: 'enterprise_instagram', placeholder: "eg. @instagram_handle", ng: { model: 'enterprise.instagram' } }
|
||||
|
||||
.row.buttons
|
||||
.small-12.columns
|
||||
%input.button.secondary{ type: "button", value: "Back", ng: { click: "select('about')" } }
|
||||
|
||||
%input.button.primary{ type: "submit", value: "Continue" }
|
||||
@@ -0,0 +1,5 @@
|
||||
.row#progress-bar
|
||||
.small-12.medium-2.columns.item{ ng: { repeat: 'step in steps', class: "{active: (currentStep() == step),'show-for-medium-up': (currentStep() != step)}" } }
|
||||
{{ $index+1 + ". " + step }}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
.container
|
||||
.row.modal-centered
|
||||
%h2 Welcome to the Open Food Network!
|
||||
%h5 Start By Signing Up (or logging in):
|
||||
%div{"ng-controller" => "AuthenticationCtrl"}
|
||||
%tabset
|
||||
%ng-include{src: "'signup.html'"}
|
||||
%ng-include{src: "'login.html'"}
|
||||
%ng-include{src: "'forgot.html'"}
|
||||
%div{ ng: { show: "active('/signup')"} }
|
||||
%hr
|
||||
Already have an account?
|
||||
%a{ href: "", ng: { click: "select('/login')"}}
|
||||
Log in now.
|
||||
|
||||
%a.close-reveal-modal{"ng-click" => "$close()"}
|
||||
%i.ofn-i_009-close
|
||||
@@ -1,12 +1,12 @@
|
||||
%tab#sign-up-content{"ng-controller" => "SignupCtrl",
|
||||
heading: "Sign up",
|
||||
%tab#sign-up-content{"ng-controller" => "SignupCtrl",
|
||||
heading: "Sign up",
|
||||
active: "active(path)",
|
||||
select: "select(path)"}
|
||||
%form{"ng-submit" => "submit()"}
|
||||
.row
|
||||
.large-12.columns
|
||||
%label{for: "email"} Your email
|
||||
%input.title.input-text{name: "email",
|
||||
%input.title.input-text{name: "email",
|
||||
type: "email",
|
||||
id: "email",
|
||||
tabindex: 1,
|
||||
@@ -16,7 +16,7 @@
|
||||
.row
|
||||
.large-12.columns
|
||||
%label{for: "password"} Choose a password
|
||||
%input.title.input-text{name: "password",
|
||||
%input.title.input-text{name: "password",
|
||||
type: "password",
|
||||
id: "password",
|
||||
autocomplete: "off",
|
||||
@@ -27,7 +27,7 @@
|
||||
.row
|
||||
.large-12.columns
|
||||
%label{for: "password_confirmation"} Confirm password
|
||||
%input.title.input-text{name: "password_confirmation",
|
||||
%input.title.input-text{name: "password_confirmation",
|
||||
type: "password",
|
||||
id: "password_confirmation",
|
||||
autocomplete: "off",
|
||||
@@ -35,7 +35,7 @@
|
||||
"ng-model" => "spree_user.password_confirmation"}
|
||||
.row
|
||||
.large-12.columns
|
||||
%input.button.primary{name: "commit",
|
||||
tabindex: "3",
|
||||
type: "submit",
|
||||
%input.button.primary{name: "commit",
|
||||
tabindex: "3",
|
||||
type: "submit",
|
||||
value: "Sign up now"}
|
||||
|
||||
@@ -84,13 +84,16 @@ button.graph-button
|
||||
display: inline
|
||||
background-color: rgba(255,255,255,0.5)
|
||||
padding: 5px
|
||||
@media all and (max-width: 768px)
|
||||
display: none
|
||||
// Hide for small
|
||||
|
||||
&:hover, &:active, &:focus
|
||||
background-color: rgba(255,255,255,1)
|
||||
i.ofn-i-058-graph
|
||||
i.ofn-i_058-graph
|
||||
color: $clr-brick-bright
|
||||
|
||||
i.ofn-i-058-graph
|
||||
i.ofn-i_058-graph
|
||||
color: #999
|
||||
margin: 0
|
||||
padding: 0
|
||||
@@ -98,7 +101,7 @@ button.graph-button
|
||||
|
||||
@media all and (max-width: 640px)
|
||||
padding: 3px
|
||||
i.ofn-i-058-graph
|
||||
i.ofn-i_058-graph
|
||||
font-size: 0.75rem
|
||||
|
||||
button.graph-button.open
|
||||
@@ -107,10 +110,10 @@ button.graph-button.open
|
||||
|
||||
&:hover, &:active, &:focus
|
||||
background-color: rgba(255,255,255,1)
|
||||
i.ofn-i-058-graph
|
||||
i.ofn-i_058-graph
|
||||
color: $clr-brick-bright
|
||||
|
||||
i.ofn-i-058-graph
|
||||
i.ofn-i_058-graph
|
||||
color: $clr-brick
|
||||
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
|
||||
.active_table_row // Inherits from active_table
|
||||
border: 1px solid transparent
|
||||
@include border-radius(0.5em)
|
||||
|
||||
// Foundation overrides
|
||||
margin-left: 0
|
||||
@@ -63,19 +64,25 @@
|
||||
border-right: 1px solid $disabled-bright
|
||||
border-top: 0
|
||||
border-bottom: 0
|
||||
@include border-radius(0)
|
||||
|
||||
.active_table_row:first-child
|
||||
border-top: 1px solid $disabled-bright
|
||||
color: $dark-grey
|
||||
@include border-radius-mixed(0.5em, 0.5em, 0, 0)
|
||||
&:hover, &:active, &:focus
|
||||
// color: $dark-grey
|
||||
|
||||
.active_table_row:last-child
|
||||
border-bottom: 1px solid $disabled-bright
|
||||
@include border-radius-mixed(0, 0, 0.5em, 0.5em)
|
||||
|
||||
|
||||
//Open row sections
|
||||
.fat > div
|
||||
border-top: 1px solid #aaa
|
||||
@media all and (max-width: 640px)
|
||||
margin-top: 1em
|
||||
|
||||
ul, ol
|
||||
font-size: 0.875rem
|
||||
@@ -104,7 +111,6 @@
|
||||
color: $dark-grey
|
||||
&.open
|
||||
.active_table_row:first-child
|
||||
&, & *
|
||||
color: $dark-grey
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,13 @@
|
||||
margin-right: 0
|
||||
|
||||
.row.filter-box:first-child
|
||||
// border-top: 1px solid $clr-brick
|
||||
border: 1px solid $clr-blue-light
|
||||
@include border-radius(0.25em)
|
||||
margin-top: 2px
|
||||
|
||||
.row.filter-box:last-child
|
||||
background: transparent
|
||||
margin-top: 1em
|
||||
|
||||
products .filter-box
|
||||
background: #f7f7f7
|
||||
@@ -20,6 +26,8 @@ products .filter-box
|
||||
.tdhead
|
||||
padding: 0.25rem 0.5rem
|
||||
margin-top: 0.9rem
|
||||
color: $clr-blue
|
||||
border-bottom: 1px solid $clr-blue-light
|
||||
|
||||
// OVERRIDES
|
||||
[class*="block-grid-"]
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
@include avenir
|
||||
@include csstrans
|
||||
@include border-radius(0.5rem)
|
||||
|
||||
// transition: all 0.5s ease
|
||||
background: rgba(255,255,255,0.1)
|
||||
border: 2px solid $input
|
||||
font-size: 2rem
|
||||
@@ -21,6 +19,8 @@
|
||||
margin-bottom: 0.5rem
|
||||
box-shadow: none
|
||||
color: $inputactv
|
||||
@media all and (max-width: 640px)
|
||||
font-size: 1.25rem
|
||||
|
||||
&:hover
|
||||
@include box-shadow(0 1px 1px 0 rgba(255,255,255,0.25))
|
||||
|
||||
@@ -1,17 +1,6 @@
|
||||
// ORIGINAL
|
||||
// $clr-brick: #8f301d
|
||||
// $clr-brick-light: #f5e4e1
|
||||
// $clr-brick-ultra-light: #f7f4ef
|
||||
// $clr-brick-bright: #db583d
|
||||
// $clr-brick-light-bright: #f4bbb0
|
||||
|
||||
// $clr-turquoise: #097563
|
||||
// $clr-turquoise-light: #cef2ec
|
||||
// $clr-turquoise-ultra-light: #e6faf7
|
||||
// $clr-turquoise-bright: #1d8f7c
|
||||
|
||||
$clr-brick: #c1122b
|
||||
$clr-brick-light: #f5e6e7
|
||||
$clr-brick-light-trans: rgba(245, 230, 231, 0.9)
|
||||
$clr-brick-ultra-light: #faf5f6
|
||||
$clr-brick-bright: #eb4c46
|
||||
$clr-brick-med-bright: #e5a2a0
|
||||
@@ -22,6 +11,13 @@ $clr-turquoise-light: #ceefe4
|
||||
$clr-turquoise-ultra-light: #e8f9f4
|
||||
$clr-turquoise-bright: #23a877
|
||||
|
||||
$disabled-dark: #999
|
||||
$clr-blue: #0096ad
|
||||
$clr-blue-light: #85d9e5
|
||||
$clr-blue-bright: #14b6cc
|
||||
|
||||
$disabled-light: #e5e5e5
|
||||
$disabled-bright: #ccc
|
||||
$dark-grey: #333
|
||||
$disabled-dark: #999
|
||||
$med-grey: #666
|
||||
$dark-grey: #333
|
||||
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
overflow-y: visible
|
||||
|
||||
//Generic text link style
|
||||
a:hover, a:active, a:focus
|
||||
color: $clr-brick-bright
|
||||
a, a *
|
||||
color: $clr-brick
|
||||
&:hover, &:active, &:focus
|
||||
color: $clr-brick-bright
|
||||
|
||||
//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
|
||||
@@ -33,80 +34,95 @@
|
||||
span.hub-name-listing
|
||||
font-weight: 700
|
||||
|
||||
@media all and (max-width: 640px)
|
||||
&.closed, &.open
|
||||
//CLOSED row
|
||||
&.closed
|
||||
.active_table_row
|
||||
border: 1px solid transparent
|
||||
@media all and (max-width: 640px)
|
||||
border-color: $clr-brick-light
|
||||
&:hover, &:active, &:focus
|
||||
border-color: $clr-brick-light-bright
|
||||
|
||||
//OPEN row
|
||||
&.open
|
||||
.active_table_row, .active_table_row:first-child, .active_table_row:last-child
|
||||
border-color: $clr-brick-light-bright
|
||||
|
||||
&.open, &.closed
|
||||
@media all and (max-width: 640px)
|
||||
.active_table_row:first-child .skinny-head
|
||||
background-color: $clr-brick-light
|
||||
@include border-radius-mixed(0.5em, 0.5em, 0, 0)
|
||||
margin-top: -1rem
|
||||
margin-bottom: 1rem
|
||||
padding-top: 1rem
|
||||
padding-bottom: 1rem
|
||||
&.inactive
|
||||
&.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
|
||||
&.inactive
|
||||
&.closed, &.open
|
||||
.active_table_row:first-child
|
||||
background-color: $disabled-dark
|
||||
&, & *
|
||||
color: white
|
||||
&.closed
|
||||
&:hover, &:active, &:focus
|
||||
border: none
|
||||
color: $disabled-dark
|
||||
&.open
|
||||
.active_table_row:first-child
|
||||
color: $disabled-dark
|
||||
strong
|
||||
color: $disabled-dark
|
||||
&:hover, &:active, &:focus
|
||||
color: $disabled-dark
|
||||
strong
|
||||
color: $disabled-dark
|
||||
.active_table_row:nth-child(2)
|
||||
background-color: rgba(255, 255, 255, 0)
|
||||
label
|
||||
margin-top: 1rem
|
||||
|
||||
//Padding second row
|
||||
&.open
|
||||
.active_table_row:nth-child(2)
|
||||
padding-bottom: 0.75rem
|
||||
|
||||
//Current selected row
|
||||
//CURRENT hub (shows selected hub)
|
||||
&.current
|
||||
//overwrites active_table
|
||||
&.closed, &.open
|
||||
.active_table_row:first-child
|
||||
background-color: $clr-brick
|
||||
a, a *
|
||||
color: $clr-brick
|
||||
.active_table_row
|
||||
border-color: $clr-brick
|
||||
.active_table_row:first-child, .active_table_row:last-child
|
||||
background-color: $clr-brick-light-trans
|
||||
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
|
||||
border-color: $clr-brick-bright
|
||||
@media all and (max-width: 640px)
|
||||
.active_table_row:first-child .skinny-head
|
||||
background-color: rgba(255,255,255,0.85)
|
||||
|
||||
//INACTIVE - closed hub
|
||||
&.inactive
|
||||
&.closed, &.open
|
||||
&, & *
|
||||
color: $disabled-dark
|
||||
&.closed
|
||||
.active_table_row, .active_table_row:first-child, .active_table_row:last-child
|
||||
&:hover, &:active, &:focus
|
||||
border-color: $disabled-bright
|
||||
&.open
|
||||
.active_table_row, .active_table_row:first-child, .active_table_row:last-child
|
||||
// border-color: $disabled-bright
|
||||
&, &:hover, &:active, &:focus
|
||||
border-color: $disabled-bright
|
||||
|
||||
&.closed, &.open
|
||||
|
||||
// & Current hub
|
||||
&.current
|
||||
.active_table_row, .active_table_row:first-child, .active_table_row:last-child
|
||||
a, a *
|
||||
color: $med-grey
|
||||
border-color: $disabled-dark
|
||||
background-color: rgba(220,220,220,0.5)
|
||||
&:hover, &:focus, &:active
|
||||
border-color: $disabled-dark
|
||||
|
||||
// Small devices
|
||||
@media all and (max-width: 640px)
|
||||
.active_table_row:first-child .skinny-head
|
||||
background-color: $disabled-bright
|
||||
|
||||
// Small devices
|
||||
@media all and (max-width: 640px)
|
||||
.active_table_row, .active_table_row:first-child, .active_table_row:last-child
|
||||
border-color: $disabled-bright
|
||||
background-color: transparent
|
||||
&:hover, &:focus, &:active
|
||||
border-color: $disabled-bright
|
||||
opacity: 0.85
|
||||
.active_table_row:first-child .skinny-head
|
||||
background-color: $disabled-light
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
-webkit-border-radius: $border-radius
|
||||
border-radius: $border-radius
|
||||
|
||||
@mixin border-radius-mixed($border-radius-TL, $border-radius-TR, $border-radius-BR, $border-radius-BL)
|
||||
-webkit-border-radius: $border-radius-TL $border-radius-TR $border-radius-BR $border-radius-BL
|
||||
border-radius: $border-radius-TL $border-radius-TR $border-radius-BR $border-radius-BL
|
||||
|
||||
@mixin transform-translate($translate)
|
||||
-ms-transform: $translate
|
||||
-webkit-transform: $translate
|
||||
|
||||
@@ -6,27 +6,24 @@ dialog, .reveal-modal
|
||||
outline: none
|
||||
padding: 1rem
|
||||
overflow-y: scroll
|
||||
|
||||
// Sets up max heights based on device height
|
||||
@media all and (min-height: 1025px)
|
||||
|
||||
// Reveal.js break point:
|
||||
// @media only screen and (max-width: 40.063em)
|
||||
|
||||
// Small - when modal IS full screen
|
||||
@media only screen and (max-width: 640px)
|
||||
max-height: initial
|
||||
// This is needed to make the height not the height of whole content page
|
||||
min-height: 100%
|
||||
position: absolute !important
|
||||
top: 0
|
||||
left: 0
|
||||
|
||||
// Medium and up - when modal IS NOT full screen
|
||||
@media only screen and (min-width: 641px)
|
||||
top: 10%
|
||||
max-height: 80%
|
||||
|
||||
@media all and (min-height: 700px) and (max-height: 1024px)
|
||||
max-height: 70%
|
||||
|
||||
@media all and (min-height: 600px) and (max-height: 699px)
|
||||
max-height: 60%
|
||||
|
||||
@media all and (min-height: 481px) and (max-height: 599px)
|
||||
max-height: 60%
|
||||
|
||||
@media only screen and (max-height: 480px) and (min-width: 641px)
|
||||
max-height: 60%
|
||||
|
||||
@media all and (max-height: 480px)
|
||||
overflow-y: scroll
|
||||
|
||||
|
||||
.reveal-modal-bg
|
||||
background-color: rgba(0,0,0,0.65)
|
||||
|
||||
@@ -39,31 +36,3 @@ dialog .close-reveal-modal, .reveal-modal .close-reveal-modal
|
||||
&:hover, &:active, &:focus
|
||||
background-color: rgba(235,235,235,1)
|
||||
color: #333
|
||||
|
||||
// dialog .close-reveal-modal.outside, .reveal-modal .close-reveal-modal.outside
|
||||
// top: -2.5rem
|
||||
// right: -2.5rem
|
||||
// font-size: 2rem
|
||||
// color: white
|
||||
// text-shadow: none
|
||||
// padding: 0.25rem
|
||||
// @include border-radius(999999)
|
||||
// border: 1px solid transparent
|
||||
// &:hover, &:active, &:focus
|
||||
// text-shadow: 0 1px 3px #333
|
||||
// border: 1px solid white
|
||||
|
||||
// @media all and (max-width: 640px)
|
||||
// top: 0.5rem
|
||||
// right: 0.5rem
|
||||
// font-size: 2rem
|
||||
// color: white
|
||||
// text-shadow: none
|
||||
// padding: 0.25rem
|
||||
// background-color: rgba(150,150,150,0.85)
|
||||
// @include border-radius(999999)
|
||||
// border: 1px solid transparent
|
||||
// &:hover, &:active, &:focus
|
||||
// text-shadow: 0 1px 3px #333
|
||||
// border: 1px solid white
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
@import branding
|
||||
@import mixins
|
||||
|
||||
.producers
|
||||
.active_table .active_table_node
|
||||
@@ -7,6 +8,7 @@
|
||||
@media all and (max-width: 640px)
|
||||
.skinny-head
|
||||
background-color: $clr-turquoise-light
|
||||
@include border-radius-mixed(0.5em, 0.5em, 0, 0)
|
||||
margin-top: -1rem
|
||||
margin-bottom: 1rem
|
||||
padding-top: 1rem
|
||||
@@ -14,6 +16,7 @@
|
||||
.follow-icons
|
||||
&, & *
|
||||
font-size: 1.5rem
|
||||
|
||||
|
||||
// Producer icons
|
||||
i.ofn-i_059-producer, i.ofn-i_060-producer-reversed
|
||||
@@ -75,9 +78,12 @@
|
||||
|
||||
//Closed row
|
||||
&.closed
|
||||
&:hover, &:active, &:focus
|
||||
.active_table_row.closed
|
||||
border: 1px solid $clr-turquoise
|
||||
.active_table_row.closed
|
||||
border: 1px solid transparent
|
||||
@media all and (max-width: 640px)
|
||||
border-color: $clr-turquoise-light
|
||||
&:hover, &:active, &:focus
|
||||
border-color: $clr-turquoise
|
||||
|
||||
|
||||
|
||||
|
||||
115
app/assets/stylesheets/darkswarm/registration.css.sass
Normal file
@@ -0,0 +1,115 @@
|
||||
@import branding
|
||||
@import mixins
|
||||
|
||||
#registration-modal
|
||||
.header
|
||||
text-align: center
|
||||
background-color: #efefef
|
||||
padding-bottom: 1rem
|
||||
.container
|
||||
background-color: #ffffff
|
||||
.content
|
||||
// margin-bottom: 15px
|
||||
|
||||
i
|
||||
font-size: 150%
|
||||
|
||||
.buttons
|
||||
|
||||
ofn-inline-flash
|
||||
display: block
|
||||
padding: 15px
|
||||
position: relative
|
||||
margin-bottom: 10px
|
||||
&.brick
|
||||
background-color: $clr-brick-light
|
||||
border: 2px solid $clr-brick
|
||||
color: $clr-brick
|
||||
&.turquoise
|
||||
background-color: $clr-turquoise-light
|
||||
border: 2px solid $clr-turquoise
|
||||
color: $clr-turquoise
|
||||
.close-button
|
||||
position: absolute
|
||||
top: 0px
|
||||
right: 0px
|
||||
|
||||
.field
|
||||
margin-bottom: 15px
|
||||
|
||||
input.chunky
|
||||
padding: 8px
|
||||
font-size: 105%
|
||||
|
||||
label.indent-checkbox
|
||||
display: block
|
||||
padding-left: 20px
|
||||
text-indent: -17px
|
||||
input
|
||||
margin: 0px
|
||||
|
||||
label
|
||||
margin-bottom: 3px
|
||||
|
||||
ol, ul
|
||||
// font-size: 80%
|
||||
font-size: 0.875rem
|
||||
padding: 0
|
||||
margin: 0
|
||||
ol
|
||||
list-style-type: decimal
|
||||
|
||||
.highlight-box
|
||||
background: white
|
||||
padding: 1rem 1.2rem
|
||||
@media all and (max-width: 640px)
|
||||
margin-top: 1rem
|
||||
|
||||
#progress-bar
|
||||
margin-bottom: 15px
|
||||
.item
|
||||
padding: 12px 0px
|
||||
text-transform: uppercase
|
||||
text-align: center
|
||||
background-color: #333
|
||||
border: 2px solid #333
|
||||
color: #fff
|
||||
.item.active
|
||||
background-color: #cccccc
|
||||
border: 2px solid #333
|
||||
color: #333
|
||||
@include box-shadow(inset 0 0 1px 0 #fff)
|
||||
|
||||
#registration-details
|
||||
#enterprise-types
|
||||
a.panel
|
||||
display: block
|
||||
background-color: #efefef
|
||||
color: black
|
||||
@media all and (min-width: 768px)
|
||||
min-height: 200px
|
||||
&:hover
|
||||
background-color: #fff
|
||||
&#producer-panel:hover
|
||||
&, & *
|
||||
color: $clr-turquoise
|
||||
&#hub-panel:hover, &#both-panel:hover
|
||||
&, & *
|
||||
color: $clr-brick
|
||||
&.selected
|
||||
&, & *
|
||||
color: #fff
|
||||
&#hub-panel, &#both-panel
|
||||
background-color: $clr-brick-bright
|
||||
&:hover
|
||||
&, & *
|
||||
color: white
|
||||
&#producer-panel
|
||||
background-color: $clr-turquoise-bright
|
||||
&:hover
|
||||
&, & *
|
||||
color: white
|
||||
p
|
||||
clear: both
|
||||
font-size: 0.875rem
|
||||
|
||||
@@ -48,6 +48,9 @@ small, .small
|
||||
.turquoise
|
||||
color: $clr-turquoise
|
||||
|
||||
.brick
|
||||
color: $clr-brick
|
||||
|
||||
@mixin avenir
|
||||
font-family: "AvenirBla_IE", "AvenirBla"
|
||||
|
||||
@@ -55,8 +58,8 @@ h1, h2, h3, h4, h5, h6, .avenir
|
||||
@include avenir
|
||||
padding: 0px
|
||||
|
||||
ul.bullet-list
|
||||
margin: 0
|
||||
ul.bullet-list, ul.check-list
|
||||
margin: 0 0 0 1.25em !important
|
||||
li
|
||||
list-style: none
|
||||
line-height: 1.5
|
||||
@@ -64,12 +67,16 @@ ul.bullet-list
|
||||
li:before
|
||||
content: "\e609"
|
||||
font-family: "OFN"
|
||||
margin-left: -1.25em
|
||||
display: inline-block
|
||||
font-weight: normal
|
||||
font-style: normal
|
||||
font-variant: normal
|
||||
text-transform: none
|
||||
|
||||
|
||||
ul.check-list
|
||||
li:before
|
||||
content: "\e632"
|
||||
|
||||
.light-grey
|
||||
color: #666666
|
||||
|
||||
@@ -3,9 +3,10 @@ module Admin
|
||||
before_filter :load_enterprise_set, :only => :index
|
||||
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
|
||||
before_filter :override_owner, only: :create
|
||||
before_filter :check_owner, only: :update
|
||||
|
||||
helper 'spree/products'
|
||||
include OrderCyclesHelper
|
||||
@@ -39,14 +40,6 @@ module Admin
|
||||
|
||||
private
|
||||
|
||||
# When an enterprise user creates another enterprise, it is granted management
|
||||
# permission for it
|
||||
def grant_management
|
||||
unless spree_current_user.has_spree_role? 'admin'
|
||||
spree_current_user.enterprise_roles.create(enterprise: @object)
|
||||
end
|
||||
end
|
||||
|
||||
def load_enterprise_set
|
||||
@enterprise_set = EnterpriseSet.new :collection => collection
|
||||
end
|
||||
@@ -81,6 +74,16 @@ module Admin
|
||||
params[:enterprise].delete :type unless spree_current_user.admin?
|
||||
end
|
||||
|
||||
def override_owner
|
||||
params[:enterprise][:owner_id] = spree_current_user.id unless spree_current_user.admin?
|
||||
end
|
||||
|
||||
def check_owner
|
||||
unless spree_current_user == @enterprise.owner || spree_current_user.admin?
|
||||
params[:enterprise].delete :owner_id
|
||||
end
|
||||
end
|
||||
|
||||
# Overriding method on Spree's resource controller
|
||||
def location_after_save
|
||||
if params[:enterprise].key? :producer_properties_attributes
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
module Api
|
||||
class EnterprisesController < Spree::Api::BaseController
|
||||
|
||||
before_filter :override_owner, only: [:create, :update]
|
||||
before_filter :check_type, only: :update
|
||||
respond_to :json
|
||||
|
||||
def managed
|
||||
@@ -11,5 +14,37 @@ module Api
|
||||
@enterprises = Enterprise.ransack(params[:q]).result.accessible_by(current_api_user)
|
||||
render params[:template] || :bulk_index
|
||||
end
|
||||
|
||||
def create
|
||||
authorize! :create, Enterprise
|
||||
|
||||
@enterprise = Enterprise.new(params[:enterprise])
|
||||
if @enterprise.save
|
||||
render text: @enterprise.id, :status => 201
|
||||
else
|
||||
invalid_resource!(@enterprise)
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
authorize! :update, Enterprise
|
||||
|
||||
@enterprise = Enterprise.find(params[:id])
|
||||
if @enterprise.update_attributes(params[:enterprise])
|
||||
render text: @enterprise.id, :status => 200
|
||||
else
|
||||
invalid_resource!(@enterprise)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def override_owner
|
||||
params[:enterprise][:owner_id] = current_api_user.id
|
||||
end
|
||||
|
||||
def check_type
|
||||
params[:enterprise].delete :type unless current_api_user.admin?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
25
app/controllers/registration_controller.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
require 'open_food_network/spree_api_key_loader'
|
||||
|
||||
class RegistrationController < BaseController
|
||||
include OpenFoodNetwork::SpreeApiKeyLoader
|
||||
before_filter :load_spree_api_key, only: :index
|
||||
before_filter :check_user, except: :authenticate
|
||||
layout 'registration'
|
||||
|
||||
def index
|
||||
@enterprise_attributes = { type: 'profile' }
|
||||
end
|
||||
|
||||
def store
|
||||
@enterprise_attributes = { is_distributor: true, is_primary_producer: true, type: 'single' }
|
||||
render :index
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_user
|
||||
if spree_current_user.nil?
|
||||
redirect_to registration_auth_path(anchor: "signup?after_login=#{request.env['PATH_INFO']}")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,7 @@
|
||||
require 'open_food_network/spree_api_key_loader'
|
||||
|
||||
Spree::Admin::OrdersController.class_eval do
|
||||
include OpenFoodNetwork::SpreeApiKeyLoader
|
||||
before_filter :load_spree_api_key, :only => :bulk_management
|
||||
|
||||
# We need to add expections for collection actions other than :index here
|
||||
@@ -14,11 +17,4 @@ Spree::Admin::OrdersController.class_eval do
|
||||
page(params[:page]).
|
||||
per(params[:per_page] || Spree::Config[:orders_per_page])
|
||||
} } }
|
||||
|
||||
private
|
||||
|
||||
def load_spree_api_key
|
||||
current_user.generate_spree_api_key! unless spree_current_user.spree_api_key
|
||||
@spree_api_key = spree_current_user.spree_api_key
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
require 'open_food_network/spree_api_key_loader'
|
||||
|
||||
Spree::Admin::ProductsController.class_eval do
|
||||
before_filter :load_bpe_data, :only => :bulk_edit
|
||||
include OpenFoodNetwork::SpreeApiKeyLoader
|
||||
before_filter :load_form_data, :only => [:bulk_edit, :new, :edit]
|
||||
before_filter :load_spree_api_key, :only => :bulk_edit
|
||||
|
||||
alias_method :location_after_save_original, :location_after_save
|
||||
|
||||
@@ -85,9 +89,7 @@ Spree::Admin::ProductsController.class_eval do
|
||||
|
||||
private
|
||||
|
||||
def load_bpe_data
|
||||
current_user.generate_spree_api_key! unless spree_current_user.spree_api_key
|
||||
@spree_api_key = spree_current_user.spree_api_key
|
||||
def load_form_data
|
||||
@producers = OpenFoodNetwork::Permissions.new(spree_current_user).managed_product_enterprises.is_primary_producer.by_name
|
||||
@taxons = Spree::Taxon.order(:name)
|
||||
end
|
||||
|
||||
@@ -37,7 +37,9 @@ module Admin
|
||||
admin_inject_json_ams_array "ofn.admin", "users", @users, Api::Admin::UserSerializer
|
||||
end
|
||||
|
||||
|
||||
def admin_inject_spree_api_key
|
||||
render partial: "admin/json/injection_ams", locals: {ngModule: 'ofn.admin', name: 'SpreeApiKey', json: "'#{@spree_api_key.to_s}'"}
|
||||
end
|
||||
|
||||
|
||||
def admin_inject_json_ams(ngModule, name, data, serializer, opts = {})
|
||||
|
||||
@@ -2,18 +2,18 @@ module InjectionHelper
|
||||
def inject_enterprises
|
||||
inject_json_ams "enterprises", Enterprise.all, Api::EnterpriseSerializer, active_distributors: @active_distributors
|
||||
end
|
||||
|
||||
|
||||
def inject_current_order
|
||||
inject_json_ams "currentOrder", current_order, Api::CurrentOrderSerializer, current_distributor: current_distributor, current_order_cycle: current_order_cycle
|
||||
end
|
||||
|
||||
def inject_available_shipping_methods
|
||||
inject_json_ams "shippingMethods", available_shipping_methods,
|
||||
inject_json_ams "shippingMethods", available_shipping_methods,
|
||||
Api::ShippingMethodSerializer, current_order: current_order
|
||||
end
|
||||
|
||||
def inject_available_payment_methods
|
||||
inject_json_ams "paymentMethods", current_order.available_payment_methods,
|
||||
inject_json_ams "paymentMethods", current_order.available_payment_methods,
|
||||
Api::PaymentMethodSerializer
|
||||
end
|
||||
|
||||
@@ -25,6 +25,17 @@ module InjectionHelper
|
||||
inject_json_ams "currencyConfig", {}, Api::CurrencyConfigSerializer
|
||||
end
|
||||
|
||||
def inject_spree_api_key
|
||||
render partial: "json/injection_ams", locals: {name: 'spreeApiKey', json: "'#{@spree_api_key.to_s}'"}
|
||||
end
|
||||
|
||||
def inject_available_countries
|
||||
inject_json_ams "availableCountries", available_countries, Api::CountrySerializer
|
||||
end
|
||||
|
||||
def inject_enterprise_attributes
|
||||
render partial: "json/injection_ams", locals: {name: 'enterpriseAttributes', json: "#{@enterprise_attributes.to_json}"}
|
||||
end
|
||||
|
||||
def inject_json(name, partial, opts = {})
|
||||
render partial: "json/injection", locals: {name: name, partial: partial}.merge(opts)
|
||||
|
||||
12
app/mailers/enterprise_mailer.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
class EnterpriseMailer < Spree::BaseMailer
|
||||
def creation_confirmation(enterprise)
|
||||
find_enterprise(enterprise)
|
||||
subject = "#{@enterprise.name} is now on #{Spree::Config[:site_name]}"
|
||||
mail(:to => @enterprise.owner.email, :from => from_address, :subject => subject)
|
||||
end
|
||||
|
||||
private
|
||||
def find_enterprise(enterprise)
|
||||
@enterprise = enterprise.is_a?(Enterprise) ? enterprise : Enterprise.find(enterprise)
|
||||
end
|
||||
end
|
||||
@@ -6,6 +6,8 @@ class Enterprise < ActiveRecord::Base
|
||||
|
||||
acts_as_gmappable :process_geocoding => false
|
||||
|
||||
after_create :send_creation_email
|
||||
|
||||
has_and_belongs_to_many :groups, class_name: 'EnterpriseGroup'
|
||||
has_many :producer_properties, foreign_key: 'producer_id'
|
||||
has_many :supplied_products, :class_name => 'Spree::Product', :foreign_key => 'supplier_id', :dependent => :destroy
|
||||
@@ -16,6 +18,7 @@ class Enterprise < ActiveRecord::Base
|
||||
has_many :enterprise_fees
|
||||
has_many :enterprise_roles, :dependent => :destroy
|
||||
has_many :users, through: :enterprise_roles
|
||||
belongs_to :owner, class_name: 'Spree::User', foreign_key: :owner_id, inverse_of: :owned_enterprises
|
||||
has_and_belongs_to_many :payment_methods, join_table: 'distributors_payment_methods', class_name: 'Spree::PaymentMethod', foreign_key: 'distributor_id'
|
||||
has_many :distributor_shipping_methods, foreign_key: :distributor_id
|
||||
has_many :shipping_methods, through: :distributor_shipping_methods
|
||||
@@ -46,7 +49,10 @@ class Enterprise < ActiveRecord::Base
|
||||
validates :name, presence: true
|
||||
validates :type, presence: true, inclusion: {in: TYPES}
|
||||
validates :address, presence: true, associated: true
|
||||
validates_presence_of :owner
|
||||
validate :enforce_ownership_limit, if: lambda { owner_id_changed? }
|
||||
|
||||
before_validation :ensure_owner_is_manager, if: lambda { owner_id_changed? }
|
||||
before_validation :set_unused_address_fields
|
||||
after_validation :geocode_address
|
||||
|
||||
@@ -223,6 +229,10 @@ class Enterprise < ActiveRecord::Base
|
||||
|
||||
private
|
||||
|
||||
def send_creation_email
|
||||
EnterpriseMailer.creation_confirmation(self).deliver
|
||||
end
|
||||
|
||||
def strip_url(url)
|
||||
url.andand.sub /(https?:\/\/)?/, ''
|
||||
end
|
||||
@@ -234,4 +244,14 @@ class Enterprise < ActiveRecord::Base
|
||||
def geocode_address
|
||||
address.geocode if address.changed?
|
||||
end
|
||||
|
||||
def ensure_owner_is_manager
|
||||
users << owner unless users.include?(owner) || owner.admin?
|
||||
end
|
||||
|
||||
def enforce_ownership_limit
|
||||
unless owner.can_own_more_enterprises?
|
||||
errors.add(:owner, "^You are not permitted to own own any more enterprises (limit is #{owner.enterprise_limit}).")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
Spree.user_class.class_eval do
|
||||
has_many :enterprise_roles, :dependent => :destroy
|
||||
has_many :enterprises, through: :enterprise_roles
|
||||
has_many :owned_enterprises, class_name: 'Enterprise', foreign_key: :owner_id, inverse_of: :owner
|
||||
has_one :cart
|
||||
|
||||
accepts_nested_attributes_for :enterprise_roles, :allow_destroy => true
|
||||
|
||||
attr_accessible :enterprise_ids, :enterprise_roles_attributes
|
||||
attr_accessible :enterprise_ids, :enterprise_roles_attributes, :enterprise_limit
|
||||
after_create :send_signup_confirmation
|
||||
|
||||
validate :limit_owned_enterprises
|
||||
|
||||
def build_enterprise_roles
|
||||
Enterprise.all.each do |enterprise|
|
||||
unless self.enterprise_roles.find_by_enterprise_id enterprise.id
|
||||
@@ -19,4 +22,16 @@ Spree.user_class.class_eval do
|
||||
def send_signup_confirmation
|
||||
Spree::UserMailer.signup_confirmation(self).deliver
|
||||
end
|
||||
|
||||
def can_own_more_enterprises?
|
||||
owned_enterprises(:reload).size < enterprise_limit
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def limit_owned_enterprises
|
||||
if owned_enterprises.size > enterprise_limit
|
||||
errors.add(:owned_enterprises, "^The nominated user is not permitted to own own any more enterprises (limit is #{enterprise_limit}).")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Deface::Override.new(:virtual_path => "spree/admin/products/_form",
|
||||
:insert_top => "[data-hook='admin_product_form_right']",
|
||||
:partial => "spree/admin/products/supplier_form",
|
||||
:name => "add_supplier_to_admin_product",
|
||||
:original => '18bd94de3eb8bdf8b669932bf04fc59e2e85288b')
|
||||
@@ -1,4 +0,0 @@
|
||||
/ insert_after "[data-hook='long_description']"
|
||||
%tr{'data-hook' => 'distributor_info'}
|
||||
%th Distributor Info:
|
||||
%td= @enterprise.distributor_info.andand.html_safe
|
||||
@@ -0,0 +1,7 @@
|
||||
/ insert_top "[data-hook='admin_product_form_right']"
|
||||
|
||||
= f.field_container :supplier do
|
||||
= f.label :supplier
|
||||
%br
|
||||
= f.collection_select(:supplier_id, @producers, :id, :name, {:include_blank => true}, {:class => "select2"})
|
||||
= f.error_message_on :supplier
|
||||
@@ -7,7 +7,7 @@
|
||||
= f.field_container :supplier do
|
||||
= f.label :supplier_id, t(:supplier)
|
||||
%span.required *
|
||||
= f.collection_select(:supplier_id, Enterprise.is_primary_producer.managed_by(spree_current_user).by_name, :id, :name, {:include_blank => true}, {:class => "select2 fullwidth"})
|
||||
= f.collection_select(:supplier_id, @producers, :id, :name, {:include_blank => true}, {:class => "select2 fullwidth"})
|
||||
= f.error_message_on :supplier
|
||||
.six.columns.omega
|
||||
= f.field_container :name do
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
/ insert_bottom "div[data-hook='admin_user_form_fields'] div.alpha"
|
||||
|
||||
= f.field_container :enterprise_limit do
|
||||
= f.label :enterprise_limit, t(:enterprise_limit)
|
||||
= f.text_field :enterprise_limit, :class => 'fullwidth'
|
||||
@@ -0,0 +1,3 @@
|
||||
/ insert_before "td[data-hook='admin_users_index_row_actions']"
|
||||
|
||||
%td.user_enterprise_limit= user.enterprise_limit
|
||||
@@ -0,0 +1,3 @@
|
||||
/ insert_before "th[data-hook='admin_users_index_header_actions']"
|
||||
|
||||
%th= sort_link @search,:enterprise_limit, t(:enterprise_limit)
|
||||
@@ -0,0 +1,6 @@
|
||||
/ replace "table#listing_users colgroup"
|
||||
|
||||
%colgroup
|
||||
%col{ style: "width: 65%" }
|
||||
%col{ style: "width: 20%" }
|
||||
%col{ style: "width: 15%" }
|
||||
@@ -0,0 +1,3 @@
|
||||
/ replace "code[erb-loud]:contains('link_to user.email, object_url(user)')"
|
||||
|
||||
= link_to user.email, edit_object_url(user)
|
||||
@@ -1,6 +0,0 @@
|
||||
Deface::Override.new(:virtual_path => "spree/admin/users/_form",
|
||||
:insert_after => "[data-hook='admin_user_form_fields']",
|
||||
:partial => "spree/admin/users/enterprises_form",
|
||||
:name => "add_enterprises_to_user"
|
||||
)
|
||||
|
||||
5
app/serializers/api/country_serializer.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class Api::CountrySerializer < ActiveModel::Serializer
|
||||
attributes :id, :name, :states
|
||||
|
||||
has_many :states, serializer: Api::StateSerializer
|
||||
end
|
||||
3
app/serializers/api/state_serializer.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
class Api::StateSerializer < ActiveModel::Serializer
|
||||
attributes :id, :name, :abbr
|
||||
end
|
||||
@@ -11,5 +11,5 @@
|
||||
%table#enterprise-roles
|
||||
%tbody
|
||||
= render 'form'
|
||||
%tr{"ng-repeat" => "enterprise_role in EnterpriseRoles.enterprise_roles | filter:query"}
|
||||
%tr{"ng-repeat" => "enterprise_role in EnterpriseRoles.enterprise_roles | filter:query", id: "enterprise_role_{{enterprise_role.id}}"}
|
||||
= render 'enterprise_role'
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
- content_for :head do
|
||||
= render 'shared/cms_elrte_head'
|
||||
|
||||
- content_for :page_actions do
|
||||
%li= button_link_to "Back to enterprises list", main_app.admin_enterprises_path, icon: 'icon-arrow-left'
|
||||
|
||||
@@ -23,6 +20,16 @@
|
||||
|
||||
.eight.columns.omega
|
||||
= f.collection_select :group_ids, EnterpriseGroup.all, :id, :name, {}, class: "select2 fullwidth", multiple: true, placeholder: "Start typing to search available groups..."
|
||||
- if spree_current_user.admin?
|
||||
.row
|
||||
.three.columns.alpha
|
||||
=f.label :owner_id, 'Owner'
|
||||
.with-tip{'data-powertip' => "The primary user responsible for this enterprise."}
|
||||
%a What's this?
|
||||
.eight.columns
|
||||
- owner_email = @enterprise.andand.owner.andand.email || ""
|
||||
= f.hidden_field :owner_id, class: "select2 fullwidth", 'ofn-user-autocomplete' => true, email: owner_email
|
||||
|
||||
.row
|
||||
.three.columns.alpha
|
||||
%label Enterprise Type(s)
|
||||
@@ -174,20 +181,8 @@
|
||||
.row
|
||||
.alpha.three.columns
|
||||
= f.label :long_description, 'About Us'
|
||||
%br
|
||||
Tell us about yourself. This information appears on your public profile (under "About Us")
|
||||
.omega.eight.columns
|
||||
= f.text_area :long_description, class: 'rich_text', placeholder: 'Tell us about yourself. This information appears on your public profile (under "About Us")'
|
||||
.row
|
||||
.alpha.three.columns
|
||||
= f.label :distributor_info, 'How does your hub work?'
|
||||
%br
|
||||
%em (Hub only)
|
||||
%br
|
||||
Explain your distribution offer/s - this information appears on your public profile (under "How does it work?")
|
||||
.omega.eight.columns
|
||||
= f.text_area :distributor_info, class: 'rich_text', placeholder: 'Hub only: Explain your distribution offer/s - this is more detailed information that the user can access by clicking on "How does it work?"'
|
||||
/ TODO: editor breaks scrolling with arrow keys
|
||||
= f.text_area :long_description, rows: 6, placeholder: 'Tell us about yourself. This information appears on your public profile (under "About Us")', class: 'fullwidth'
|
||||
%fieldset.eleven.columns.alpha.no-border-bottom
|
||||
%legend IMAGES
|
||||
.row
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
Enterprises
|
||||
|
||||
- content_for :page_actions do
|
||||
%li#new_product_link
|
||||
= button_link_to "New Enterprise", main_app.new_admin_enterprise_path, :icon => 'icon-plus', :id => 'admin_new_enterprise_link'
|
||||
- if spree_current_user.can_own_more_enterprises?
|
||||
%li#new_product_link
|
||||
= button_link_to "New Enterprise", main_app.new_admin_enterprise_path, :icon => 'icon-plus', :id => 'admin_new_enterprise_link'
|
||||
|
||||
= render 'admin/shared/enterprises_sub_menu'
|
||||
|
||||
@@ -11,16 +12,20 @@
|
||||
%table#listing_enterprises.index
|
||||
%colgroup
|
||||
%col{style: "width: 25%;"}/
|
||||
%col{style: "width: 10%;"}/
|
||||
%col{style: "width: 15%;"}/
|
||||
%col{style: "width: 5%;"}/
|
||||
%col{style: "width: 10%;"}/
|
||||
%col{style: "width: 20%;"}/
|
||||
- if spree_current_user.admin?
|
||||
%col{style: "width: 12%;"}/
|
||||
%col{style: "width: 18%;"}/
|
||||
%col{style: "width: 25%;"}/
|
||||
%thead
|
||||
%tr{"data-hook" => "enterprises_header"}
|
||||
%th Name
|
||||
%th Role
|
||||
%th Visible?
|
||||
%th Type
|
||||
- if spree_current_user.admin?
|
||||
%th Type
|
||||
%th Owner
|
||||
%th
|
||||
%tbody
|
||||
= f.fields_for :collection do |enterprise_form|
|
||||
@@ -34,7 +39,9 @@
|
||||
= enterprise_form.check_box :is_distributor
|
||||
Hub
|
||||
%td= enterprise_form.check_box :visible
|
||||
%td= enterprise_form.select :type, Enterprise::TYPES, {}, class: 'select2 fullwidth'
|
||||
- if spree_current_user.admin?
|
||||
%td= enterprise_form.select :type, Enterprise::TYPES, {}, class: 'select2 fullwidth'
|
||||
%td= enterprise_form.select :owner_id, enterprise.users.map{ |e| [ e.email, e.id ] }, {}, class: "select2 fullwidth"
|
||||
%td{"data-hook" => "admin_users_index_row_actions"}
|
||||
= render 'actions', enterprise: enterprise
|
||||
- if @enterprises.empty?
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
%h1
|
||||
= @enterprise.name + " has been created"
|
||||
|
||||
%h3
|
||||
Why not check it out on
|
||||
%a{ href: "#{map_url}" }
|
||||
= Spree::Config[:site_name] + "?"
|
||||
|
||||
If you have any questions, please get in touch with us at: hello@openfoodnetwork.org
|
||||
@@ -14,7 +14,7 @@
|
||||
/ %i.ofn-i_020-search
|
||||
%input{type: :text,
|
||||
"ng-model" => "query",
|
||||
placeholder: "Search by Shop or Suburb...",
|
||||
placeholder: "Search by name or suburb...",
|
||||
"ng-debounce" => "150",
|
||||
"ofn-disable-enter" => true}
|
||||
|
||||
|
||||
@@ -15,12 +15,16 @@
|
||||
.columns.small-6.medium-3.large-4.text-right{"bo-if" => "hub.active"}
|
||||
%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.margin-top {{ hub.orders_close_at | sensible_timeframe }}
|
||||
%span.margin-top{ bo: { if: "current()" } }
|
||||
%em Shopping here
|
||||
%span.margin-top{ bo: { if: "!current()" } } {{ hub.orders_close_at | sensible_timeframe }}
|
||||
|
||||
.columns.small-6.medium-3.large-4.text-right{"bo-if" => "!hub.active"}
|
||||
%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.margin-top Orders closed
|
||||
%span.margin-top{ bo: { if: "current()" } }
|
||||
%em Shopping here
|
||||
%span.margin-top{ bo: { if: "!current()" } } Orders closed
|
||||
|
||||
|
||||
|
||||
|
||||
36
app/views/layouts/registration.html.haml
Normal file
@@ -0,0 +1,36 @@
|
||||
%html
|
||||
%head
|
||||
%meta{charset: 'utf-8'}/
|
||||
%meta{name: 'viewport', content: "width=device-width,initial-scale=1.0"}/
|
||||
|
||||
%title= content_for?(:title) ? yield(:title) : 'Welcome to Open Food Network'
|
||||
- if Rails.env.production?
|
||||
= favicon_link_tag
|
||||
- else
|
||||
= favicon_link_tag "/favicon-staging.ico"
|
||||
%link{href: "https://fonts.googleapis.com/css?family=Open+Sans:400,700", rel: "stylesheet", type: "text/css"}/
|
||||
|
||||
= yield :scripts
|
||||
%script{src: "//maps.googleapis.com/maps/api/js?libraries=places&sensor=false"}
|
||||
= stylesheet_link_tag "darkswarm/all"
|
||||
= javascript_include_tag "darkswarm/all"
|
||||
|
||||
|
||||
= render "layouts/bugherd_script"
|
||||
= csrf_meta_tags
|
||||
|
||||
%body.off-canvas{"ng-app" => "Darkswarm", style: 'background-image: url("/assets/home/ofn_bg_1.jpg")' }
|
||||
/ [if lte IE 8]
|
||||
= render partial: "shared/ie_warning"
|
||||
= javascript_include_tag "iehack"
|
||||
|
||||
= inject_json "user", "current_user"
|
||||
|
||||
.off-canvas-wrap{offcanvas: true}
|
||||
.inner-wrap
|
||||
|
||||
%section{ role: "main" }
|
||||
= yield
|
||||
|
||||
#footer
|
||||
%loading
|
||||
@@ -50,7 +50,7 @@
|
||||
%a{"ng-href" => "http://instagram.com/{{enterprise.instagram}}", target: "_blank"}
|
||||
%i.ofn-i_043-instagram
|
||||
|
||||
%a.close-reveal-modal.outside{"ng-click" => "$close()"}
|
||||
%a.close-reveal-modal{"ng-click" => "$close()"}
|
||||
%i.ofn-i_009-close
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
.row.active_table_row{"ng-show" => "open()", "ng-click" => "toggle()", "ng-class" => "{'open' : !ofn-i_032-closed-sign()}"}
|
||||
|
||||
.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"}
|
||||
/ Will add in long description available once clean up HTML formatting producer.long_description
|
||||
%div{"bo-if" => "producer.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"}
|
||||
{{ producer.description }}
|
||||
%div.show-for-medium-up{"bo-if" => "producer.description.length==0"}
|
||||
%label
|
||||
|
||||
.columns.small-12.medium-5.large-5.fat
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
.small-12.columns
|
||||
%input.animate-show{type: :text,
|
||||
"ng-model" => "query",
|
||||
placeholder: "Search by Producer or Suburb...",
|
||||
placeholder: "Search by producer or suburb...",
|
||||
"ng-debounce" => "150",
|
||||
"ofn-disable-enter" => true}
|
||||
|
||||
|
||||
1
app/views/registration/authenticate.html.haml
Normal file
@@ -0,0 +1 @@
|
||||
%div{"ng-controller" => "AuthenticationCtrl"}
|
||||
4
app/views/registration/index.html.haml
Normal file
@@ -0,0 +1,4 @@
|
||||
=inject_spree_api_key
|
||||
=inject_available_countries
|
||||
=inject_enterprise_attributes
|
||||
%div{ "ng-controller" => "RegistrationCtrl" }
|
||||
@@ -11,9 +11,9 @@
|
||||
.small-12.medium-6.columns.text-right
|
||||
.profile-checkbox
|
||||
|
||||
/ Hide until we're ready to work on this:
|
||||
/ 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
|
||||
/ %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
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
= render :partial => 'spree/admin/shared/order_sub_menu'
|
||||
|
||||
%div{ 'ng-app' => 'ofn.admin', 'ng-controller' => 'AdminOrderMgmtCtrl', 'ng-init' => "initialise('#{@spree_api_key}');loading=true;" }
|
||||
=admin_inject_spree_api_key
|
||||
|
||||
%div{ ng: { app: 'ofn.admin', controller: 'AdminOrderMgmtCtrl', init: 'initialise()' } }
|
||||
%div{ 'ng-show' => '!spree_api_key_ok' }
|
||||
{{ api_error_msg }}
|
||||
.filters{ :class => "sixteen columns alpha" }
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
%div.header.sixteen.columns.alpha{ :class => "#{@enterprises.count > 0 ? "" : "red"}"}
|
||||
%h3.thirteen.columns.alpha My Enterprises
|
||||
- if @enterprises.any?
|
||||
%a.three.columns.omega.icon-plus.button.blue.white-bottom{ href: "#{main_app.new_admin_enterprise_path}" }
|
||||
CREATE NEW
|
||||
- if spree_current_user.can_own_more_enterprises?
|
||||
%a.three.columns.omega.icon-plus.button.blue.white-bottom{ href: "#{main_app.new_admin_enterprise_path}" }
|
||||
CREATE NEW
|
||||
- else
|
||||
%a.with-tip{ title: "Enterprises are Producers and/or Hubs and are the basic unit of organisation within the Open Food Network." } What's this?
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
= f.field_container :supplier do
|
||||
= f.label :supplier
|
||||
%br
|
||||
= f.collection_select(:supplier_id, Enterprise.is_primary_producer.managed_by(spree_current_user).by_name, :id, :name, {:include_blank => true}, {:class => "select2"})
|
||||
= f.error_message_on :supplier
|
||||
@@ -1,7 +1,7 @@
|
||||
= render 'spree/admin/products/bulk_edit/header'
|
||||
= render 'spree/admin/products/bulk_edit/data'
|
||||
|
||||
%div{ 'ng-app' => 'ofn.admin', 'ng-controller' => 'AdminProductEditCtrl', 'ng-init' => "initialise('#{@spree_api_key}');loading=true;" }
|
||||
%div{ ng: { app: 'ofn.admin', controller: 'AdminProductEditCtrl', init: 'initialise()' } }
|
||||
|
||||
= render 'spree/admin/products/bulk_edit/filters'
|
||||
%hr.sixteen.columns.alpha
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
= admin_inject_producers
|
||||
= admin_inject_taxons
|
||||
= admin_inject_spree_api_key
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
%fieldset
|
||||
%legend 'Manage Enterprises'
|
||||
= f.field_container :enterprise_roles do
|
||||
- f.object.build_enterprise_roles
|
||||
%table
|
||||
= f.fields_for :enterprise_roles do |enterprise_form|
|
||||
%tr
|
||||
%td
|
||||
= hidden_field_tag "#{enterprise_form.object_name}[_destroy]", 1, :id => nil
|
||||
= check_box_tag "#{enterprise_form.object_name}[_destroy]", 0, !enterprise_form.object.new_record?
|
||||
%td
|
||||
= label_tag "#{enterprise_form.object_name}[_destroy]", enterprise_form.object.enterprise.name
|
||||
= enterprise_form.hidden_field :enterprise_id
|
||||
@@ -5,6 +5,10 @@ Openfoodnetwork::Application.routes.draw do
|
||||
|
||||
get "/map", to: "map#index", as: :map
|
||||
|
||||
get "/register", to: "registration#index", as: :registration
|
||||
get "/register/store", to: "registration#store", as: :store_registration
|
||||
get "/register/auth", to: "registration#authenticate", as: :registration_auth
|
||||
|
||||
resource :shop, controller: "shop" do
|
||||
get :products
|
||||
post :order_cycle
|
||||
|
||||
21
db/migrate/20140828023619_add_owner_to_enterprise.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class AddOwnerToEnterprise < ActiveRecord::Migration
|
||||
def up
|
||||
add_column :enterprises, :owner_id, :integer
|
||||
add_index :enterprises, :owner_id
|
||||
|
||||
Enterprise.all.each do |e|
|
||||
owner = e.users.find{ |u| !u.admin? }
|
||||
admin_owner = e.users.find &:admin?
|
||||
any_admin = Spree::User.admin.first
|
||||
any_user = Spree::User.first
|
||||
e.update_column :owner_id, (owner || admin_owner || any_admin || any_user )
|
||||
end
|
||||
|
||||
add_foreign_key :enterprises, :spree_users, column: :owner_id
|
||||
change_column :enterprises, :owner_id, :integer, null: false
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :enterprises, :owner_id
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
class AddEnterpriseLimitToSpreeUsers < ActiveRecord::Migration
|
||||
def up
|
||||
add_column :spree_users, :enterprise_limit, :integer, default: 1, null: false
|
||||
|
||||
Spree::User.all.each do |u|
|
||||
e_count = u.owned_enterprises.length
|
||||
if u.admin? || e_count > 1
|
||||
e_limit = 100
|
||||
e_limit = 1000 if u.admin?
|
||||
u.update_column :enterprise_limit, e_limit
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :spree_users, :enterprise_limit
|
||||
end
|
||||
end
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20140826043521) do
|
||||
ActiveRecord::Schema.define(:version => 20140904003026) do
|
||||
|
||||
create_table "adjustment_metadata", :force => true do |t|
|
||||
t.integer "adjustment_id"
|
||||
@@ -265,9 +265,11 @@ ActiveRecord::Schema.define(:version => 20140826043521) do
|
||||
t.string "instagram"
|
||||
t.string "linkedin"
|
||||
t.string "type", :default => "profile", :null => false
|
||||
t.integer "owner_id", :null => false
|
||||
end
|
||||
|
||||
add_index "enterprises", ["address_id"], :name => "index_enterprises_on_address_id"
|
||||
add_index "enterprises", ["owner_id"], :name => "index_enterprises_on_owner_id"
|
||||
|
||||
create_table "exchange_fees", :force => true do |t|
|
||||
t.integer "exchange_id"
|
||||
@@ -969,6 +971,7 @@ ActiveRecord::Schema.define(:version => 20140826043521) do
|
||||
t.string "spree_api_key", :limit => 48
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.string "api_key", :limit => 40
|
||||
t.integer "enterprise_limit", :default => 1, :null => false
|
||||
end
|
||||
|
||||
add_index "spree_users", ["email"], :name => "email_idx_unique", :unique => true
|
||||
@@ -1069,6 +1072,7 @@ ActiveRecord::Schema.define(:version => 20140826043521) do
|
||||
add_foreign_key "enterprise_roles", "spree_users", name: "enterprise_roles_user_id_fk", column: "user_id"
|
||||
|
||||
add_foreign_key "enterprises", "spree_addresses", name: "enterprises_address_id_fk", column: "address_id"
|
||||
add_foreign_key "enterprises", "spree_users", name: "enterprises_owner_id_fk", column: "owner_id"
|
||||
|
||||
add_foreign_key "exchange_fees", "enterprise_fees", name: "exchange_fees_enterprise_fee_id_fk"
|
||||
add_foreign_key "exchange_fees", "exchanges", name: "exchange_fees_exchange_id_fk"
|
||||
|
||||
16876
db/suburb_seeds.rb
12
lib/open_food_network/spree_api_key_loader.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
module OpenFoodNetwork
|
||||
module SpreeApiKeyLoader
|
||||
def load_spree_api_key
|
||||
if spree_current_user
|
||||
spree_current_user.generate_spree_api_key! unless spree_current_user.spree_api_key
|
||||
@spree_api_key = spree_current_user.spree_api_key
|
||||
else
|
||||
@spree_api_key = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2,7 +2,12 @@ require 'spec_helper'
|
||||
|
||||
module Admin
|
||||
describe EnterprisesController do
|
||||
let(:distributor) { create(:distributor_enterprise) }
|
||||
let(:distributor_owner) do
|
||||
user = create(:user)
|
||||
user.spree_roles = []
|
||||
user
|
||||
end
|
||||
let(:distributor) { create(:distributor_enterprise, owner: distributor_owner ) }
|
||||
let(:user) do
|
||||
user = create(:user)
|
||||
user.spree_roles = []
|
||||
@@ -22,6 +27,7 @@ module Admin
|
||||
|
||||
it "grants management permission if the current user is an enterprise user" do
|
||||
controller.stub spree_current_user: user
|
||||
enterprise_params[:enterprise][:owner_id] = user
|
||||
|
||||
spree_put :create, enterprise_params
|
||||
enterprise = Enterprise.find_by_name 'zzz'
|
||||
@@ -30,11 +36,50 @@ module Admin
|
||||
|
||||
it "does not grant management permission to admins" do
|
||||
controller.stub spree_current_user: admin_user
|
||||
enterprise_params[:enterprise][:owner_id] = admin_user
|
||||
|
||||
spree_put :create, enterprise_params
|
||||
enterprise = Enterprise.find_by_name 'zzz'
|
||||
admin_user.enterprise_roles.where(enterprise_id: enterprise).should be_empty
|
||||
end
|
||||
|
||||
it "it overrides the owner_id submitted by the user unless current_user is super admin" do
|
||||
controller.stub spree_current_user: user
|
||||
enterprise_params[:enterprise][:owner_id] = admin_user
|
||||
|
||||
spree_put :create, enterprise_params
|
||||
enterprise = Enterprise.find_by_name 'zzz'
|
||||
user.enterprise_roles.where(enterprise_id: enterprise).first.should be
|
||||
end
|
||||
end
|
||||
|
||||
describe "updating an enterprise" do
|
||||
it "allows current owner to change ownership" do
|
||||
controller.stub spree_current_user: distributor_owner
|
||||
update_params = { id: distributor, enterprise: { owner_id: user } }
|
||||
spree_post :update, update_params
|
||||
|
||||
distributor.reload
|
||||
expect(distributor.owner).to eq user
|
||||
end
|
||||
|
||||
it "allows super admin to change ownership" do
|
||||
controller.stub spree_current_user: admin_user
|
||||
update_params = { id: distributor, enterprise: { owner_id: user } }
|
||||
spree_post :update, update_params
|
||||
|
||||
distributor.reload
|
||||
expect(distributor.owner).to eq user
|
||||
end
|
||||
|
||||
it "does not allow managers to change ownership" do
|
||||
controller.stub spree_current_user: user
|
||||
update_params = { id: distributor, enterprise: { owner_id: user } }
|
||||
spree_post :update, update_params
|
||||
|
||||
distributor.reload
|
||||
expect(distributor.owner).to eq distributor_owner
|
||||
end
|
||||
end
|
||||
|
||||
describe "updating an enterprise" do
|
||||
|
||||
15
spec/controllers/registration_controller_spec.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe RegistrationController do
|
||||
describe "redirecting when user not logged in" do
|
||||
it "index" do
|
||||
get :index
|
||||
response.should redirect_to registration_auth_path(anchor: "signup?after_login=/register")
|
||||
end
|
||||
|
||||
it "store" do
|
||||
get :store
|
||||
response.should redirect_to registration_auth_path(anchor: "signup?after_login=/register/store")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -82,6 +82,7 @@ FactoryGirl.define do
|
||||
end
|
||||
|
||||
factory :enterprise, :class => Enterprise do
|
||||
owner { FactoryGirl.create :user }
|
||||
sequence(:name) { |n| "Enterprise #{n}" }
|
||||
type 'full'
|
||||
description 'enterprise'
|
||||
|
||||
@@ -305,7 +305,6 @@ feature %q{
|
||||
expect(page).to have_select "producer", selected: s1.name
|
||||
expect(page).to have_field "available_on", with: p.available_on.strftime("%F %T")
|
||||
expect(page).to have_field "price", with: "10.0"
|
||||
save_screenshot '/Users/rob/Desktop/ss.png'
|
||||
expect(page).to have_selector "div#s2id_p#{p.id}_category a.select2-choice"
|
||||
expect(page).to have_select "variant_unit_with_scale", selected: "Volume (L)"
|
||||
expect(page).to have_field "on_hand", with: "6"
|
||||
@@ -745,8 +744,6 @@ feature %q{
|
||||
permissions_list: [:manage_products])
|
||||
end
|
||||
|
||||
use_short_wait
|
||||
|
||||
before do
|
||||
@enterprise_user = create_enterprise_user
|
||||
@enterprise_user.enterprise_roles.build(enterprise: supplier_managed1).save
|
||||
@@ -779,6 +776,28 @@ feature %q{
|
||||
expect(page).to have_field 'product_name', with: product_supplied_inactive.name
|
||||
end
|
||||
|
||||
it "allows me to create a product" do
|
||||
taxon = create(:taxon, name: 'Fruit')
|
||||
|
||||
visit '/admin/products/bulk_edit'
|
||||
|
||||
find("a", text: "NEW PRODUCT").click
|
||||
expect(page).to have_content 'NEW PRODUCT'
|
||||
expect(page).to have_select 'product_supplier_id', with_options: [supplier_managed1.name, supplier_managed2.name, supplier_permitted.name]
|
||||
|
||||
within 'fieldset#new_product' do
|
||||
fill_in 'product_name', with: 'Big Bag Of Apples'
|
||||
select supplier_permitted.name, from: 'product_supplier_id'
|
||||
fill_in 'product_price', with: '10.00'
|
||||
select taxon.name, from: 'product_primary_taxon_id'
|
||||
end
|
||||
click_button 'Create'
|
||||
|
||||
expect(URI.parse(current_url).path).to eq '/admin/products/bulk_edit'
|
||||
expect(flash_message).to eq 'Product "Big Bag Of Apples" has been successfully created!'
|
||||
expect(page).to have_field "product_name", with: 'Big Bag Of Apples'
|
||||
end
|
||||
|
||||
it "allows me to update a product" do
|
||||
p = product_supplied_permitted
|
||||
|
||||
|
||||